diff -Naur ns-3.20/AUTHORS ns-3.21/AUTHORS
--- ns-3.20/AUTHORS	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/AUTHORS	2014-09-17 20:03:14.000000000 -0700
@@ -2,6 +2,7 @@
 Rohit Agarwal (mindprince@gmail.com)
 Kirill Andreev (andreev@iitp.ru)
 Dean Armstrong (deanarm@gmail.com)
+Stefano Avallone (stefano.avallone@unina.it)
 Ghada Badawy (gbadawy@gmail.com)
 Nicola Baldo (nbaldo@cttc.es)
 Mirko Banchi (mk.banchi@gmail.com)
@@ -11,12 +12,12 @@
 Raj Bhattacharjea (raj.b@gatech.edu)
 Timo Bingmann (timo.bingmann@student.kit.edu)
 Julien Boite (juboite@gmail.com)
-Biljana Bojovic <bbojovic@cttc.es>
+Biljana Bojovic (bbojovic@cttc.es)
 Elena Borovkova (borokovaes@iitp.ru)
 Pavel Boyko (boyko@iitp.ru)
 Dan Broyles (muxman@sbcglobal.net)
 Jonathan Brugge (j.d.brugge@student.utwente.nl)
-Junling Bu <linlinjavaer@gmail.com>
+Junling Bu (linlinjavaer@gmail.com)
 Elena Buchatskaia (borovkovaes@iitp.ru)
 Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
 Scott Carpenter (scarpen@ncsu.edu)
@@ -31,18 +32,19 @@
 Alexander D'souza (moijes12@gmail.com)
 Sébastien Deronne (sebastien.deronne@gmail.com)
 Craig Dowell (craigdo@ee.washington.edu)
-Gilaras Drakeson <gilaras@gmail.com>
-Christian Facchini <c.facchini@gmail.com>
+Gilaras Drakeson (gilaras@gmail.com)
+Christian Facchini (c.facchini@gmail.com)
 Denis Fakhriev (fakhriev@iitp.ru)
 Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
-Luca Favatella <slackydeb@gmail.com>
-Margherita Filippetti <morag87@gmail.com>
+Luca Favatella (slackydeb@gmail.com)
+Margherita Filippetti (morag87@gmail.com)
 Pedro Fortuna (pedro.fortuna@inescporto.pt)
 Juliana Freitag Borin (juliana.freitag@gmail.com)
+Piotr Gawlowicz (gawlowicz.p@gmail.com)
 Eric Gamess (egamess@gmail.com)
-Yida Gao <yidapb@gmail.com>
+Yida Gao (yidapb@gmail.com)
 Thomas Geithner (thomas.geithner@dai-labor.de)
-Ashim Ghosh <ashim.atiit@gmail.com>
+Ashim Ghosh (ashim.atiit@gmail.com)
 Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
 Tom Goff (tgoff@tgoff.net)
 Juan C. Granda (jcgranda@uniovi.es)
@@ -53,9 +55,10 @@
 Bruno Haick (bghaick@hotmail.com)
 Frank Helbert (frank@ime.usp.br)
 Tom Henderson (tomhend@u.washington.edu)
-Budiarto Herman <budiarto.herman@magister.fi>
-Tom Hewer <tomhewer@mac.com>
-Kim Højgaard-Hansen <kimrhh@gmail.com>
+Budiarto Herman (budiarto.herman@magister.fi)
+Tom Hewer (tomhewer@mac.com)
+Kristian A. Hiorth (kristahi@ifi.uio.no)
+Kim Højgaard-Hansen (kimrhh@gmail.com)
 Chris Hood (chood8@gatech.edu)
 Blake Hurd (naimorai@gmail.com)
 ishan (ishan.chhabra@gmail.com)
@@ -67,7 +70,7 @@
 Liu Jian (liujatp@gmail.com)
 Piotr Jurkiewicz (piotr.jerzy.jurkiewicz@gmail.com)
 Evgeny Kalishenko (ydginster@gmail.com)
-Konstantinos Katsaros <dinos.katsaros@gmail.com>
+Konstantinos Katsaros (dinos.katsaros@gmail.com)
 Morteza Kheirkhah (m.kheirkhah@sussex.ac.uk)
 Flavio Kobuta (flaviokubota@gmail.com)
 Joe Kopena (tjkopena@cs.drexel.edu)
@@ -75,11 +78,11 @@
 Aleksey Kovalenko (kovalenko@iitp.ru)
 Mathieu Lacage (mathieu.lacage@inria.fr)
 Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
-Kristijan Lenković <k.lenkovic@me.com>
+Kristijan Lenković (k.lenkovic@me.com)
 Daniel Lertpratchya (nikkipui@gmail.com)
 Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
-Timo Lindhorst <tlnd@online.de>
-Erwan Livolant <erwan.livolant@inria.fr>
+Timo Lindhorst (tlnd@online.de)
+Erwan Livolant (erwan.livolant@inria.fr)
 Keith Ma (keith.nwsuaf@gmail.com)
 Federico Maguolo (maguolof@dei.unipd.it)
 Antti Makela (zarhan@cc.hut.fi)
@@ -88,26 +91,29 @@
 Fabian Mauchle (f1mauchl@hsr.ch)
 Andrey Mazo (mazo@iitp.ru)
 Jonathan McCrohan (jmccroha@tcd.ie)
+Andrew McGregor (andrewmcgr@gmail.com)
 Vedran Miletić (rivanvx@gmail.com)
-Jens Mittag <jens.mittag@kit.edu>
+Jens Mittag (jens.mittag@kit.edu)
 Marco Miozzo (mmiozzo@cttc.es)
 Faker Moatamri (faker.moatamri@inria.fr)
-Edvin Močibob <edvin.mocibob@gmail.com>
+Edvin Močibob (edvin.mocibob@gmail.com)
 Mike Moreton (mjvm_ns@hotmail.com)
-Michele Muccio <michelemuccio@virgilio.it>
+Michele Muccio (michelemuccio@virgilio.it)
 Sidharth Nabar (snabar@uw.edu)
 Hemanth Narra (hemanth@ittc.ku.edu)
-Andreas Nilsson <andrnils@gmail.com>
+Roman Naumann (naumann@informatik.hu-berlin.de)
+Andreas Nilsson (andrnils@gmail.com)
 Jaume Nin (jnin@cttc.es)
 Michael Nowatkowski (nowatkom@gmail.com)
-Anh Nguyen <annguyen@ittc.ku.edu>
+Anh Nguyen (annguyen@ittc.ku.edu)
 Duy Nguyen (duy@soe.ucsc.edu)
-Lluís Parcerisa <parcerisa@gmail.com>
+Lluís Parcerisa (parcerisa@gmail.com)
+Natale Patriciello (natale.patriciello@gmail.com)
 Tommaso Pecorella (tommaso.pecorella@unifi.it)
 Vikas Pushkar (vikaskupushkar@gmail.com)
 Josh Pelkey (jpelkey@gatech.edu)
-Per <per_e_lists@rocketmail.com>
-Fernando Pereira <ferdonfeup@gmail.com>
+Per (per_e_lists@rocketmail.com)
+Fernando Pereira (ferdonfeup@gmail.com)
 Colin Perkins (csp@csperkins.org) 
 Giuseppe Piro (g.piro@poliba.it)
 Yana Podkosova (yanapdk@rambler.ru)
@@ -117,30 +123,33 @@
 Ken Renard (kenneth.renard@arl.army.mil)
 Manuel Requena (mrequena@cttc.es)
 George F. Riley (riley@ece.gatech.edu)
-Juergen Rinas <jrinas@gmx.de>
+Juergen Rinas (jrinas@gmx.de)
 Sebastian Rohde (sebastian.rohde@tu-dortmund.de)
-Karsten Roscher <sfx@rocktale.de>
+Karsten Roscher (sfx@rocktale.de)
 Bill Roome (wdr@bell-labs.com)
-David <david.rua@gmail.com>
+David (david.rua@gmail.com)
 Andrea Sacco (andrea.sacco85@gmail.com)
+Lynne Salameh (l.salameh@cs.ucl.ac.uk)
 Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
-Francisco Javier Sánchez-Roselly <fnavarro@ujaen.es>
-l.salameh@cs.ucl.ac.uk
+Francisco Javier Sánchez-Roselly (fnavarro@ujaen.es)
 Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
 Guillaume Seguin (guillaume.seguin@inria.fr)
 Tomasz Seweryn (tomasz.seweryn7@gmail.com)
+Dmitrii Shakshin (d.shakshin@gmail.com)
 Kulin Shah (m.kulin@gmail.com)
-Guowang Shi <shiguowang2007@gmail.com>
+Guowang Shi (shiguowang2007@gmail.com)
 Phillip Sitbon (phillip.sitbon@gmail.com)
 Anirudh Sivaraman (sk.anirudh@gmail.com) 
-Steven Smith <smith84@llnl.gov>
-Andrew Stanton <acstanton515@gmail.com>
+Steven Smith (smith84@llnl.gov)
+Andrew Stanton (acstanton515@gmail.com)
 Ewgenij Starostin (estar@cs.tu-berlin.de)
 YunQiang Su (wzssyqa@gmail.com)
 Brian Swenson (bswenson3@gatech.edu)
 Lalith Suresh  (suresh.lalith@gmail.com)
+Dave Taht (dave.taht@bufferbloat.net)
 Marcos Talau (talau@users.sourceforge.net)
 Adrian S. W. Tam (adrian.sw.tam@gmail.com)
+Cristiano Tapparello (cristiano.tapparello@rochester.edu)
 Hajime Tazaki (tazaki@sfc.wide.ad.jp)
 Wilson Thong (wilsonwk@ee.cityu.edu.hk)
 Mauro Tortonesi (mauro.tortonesi@unife.it)
diff -Naur ns-3.20/bindings/python/wscript ns-3.21/bindings/python/wscript
--- ns-3.20/bindings/python/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/bindings/python/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -13,7 +13,7 @@
 # after = TaskGen.after
 
 ## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 868)
+REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 876)
 REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
 
 RUN_ME=-3
diff -Naur ns-3.20/CHANGES.html ns-3.21/CHANGES.html
--- ns-3.20/CHANGES.html	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/CHANGES.html	2014-09-17 20:03:14.000000000 -0700
@@ -51,6 +51,89 @@
 us a note on ns-developers mailing list.</p>
 
 <hr>
+<h1>Changes from ns-3.20 to ns-3.21</h1>
+<h2>New API:</h2>
+<ul>
+  <li> New "const double& SpectrumValue:: operator[] (size_t index) const".
+  </li>
+  <li> A new TraceSource has been added to TCP sockets: SlowStartThreshold.
+  </li>
+  <li> New method CommmandLine::AddValue (name, attibutePath) to provide a
+       shorthand argument "name" for the Attribute "path".  This also has
+       the effect of including the help string for the Attribute in the
+       Usage message.
+  </li>
+  <li> The GSoC 2014 project in the LTE module has brought some additional APIs:
+    <ul>
+      <li>a new abstract class LteFfrAlgorithm, which every future
+          implementation of frequency reuse algorithm should inherit from</li>
+      <li>a new SAPs: one between MAC Scheduler and FrAlgorithm, one between
+	  RRC and FrAlgorithm</li>
+      <li>new attribute to enable Uplink Power Control in LteUePhy</li>
+      <li>new LteUePowerControl class, an implementation of Uplink Power Control, which is 
+          configurable by attributes. ReferenceSignalPower is sent by eNB in SIB2. 
+          Uplink Power Control in Closed Loop Accumulative Mode is enabled by default</li>
+      <li>seven different Frequency Reuse Algorithms (each has its own attributes): </li>
+        <ul>
+          <li>LteFrNoOpAlgorithm</li>
+          <li>LteFrHardAlgorithm</li>
+          <li>LteFrStrictAlgorithm</li>
+          <li>LteFrSoftAlgorithm</li>
+          <li>LteFfrSoftAlgorithm</li>
+          <li>LteFfrEnhancedAlgorithm</li>
+          <li>LteFfrDistributedAlgorithm</li>
+        </ul>
+      <li>attribute in LteFfrAlgorithm to set FrCellTypeId which is used in automatic 
+          Frequency Reuse algorithm configuration</li>
+      <li>LteHelper has been updated with new methods related to frequency reuse algorithm: 
+          SetFfrAlgorithmType and SetFfrAlgorithmAttribute</li>
+    </ul>
+  </li>
+  <li> A new SimpleNetDeviceHelper can now be used to install SimpleNetDevices.
+  </li>
+  <li> New PacketSocketServer and PacketSocketClient apps, meant to be used in tests.
+  </li>
+  <li> Tcp Timestamps and Window Scale options have been added and are enabled by default (controllable by attribute).
+  </li>
+  <li> A new CoDel queue model has been added to the 'internet' module.  
+  </li>
+</ul>
+
+<h2>Changes to existing API:</h2>
+<ul>
+  <li> "Icmpv6L4Protocol::ForgeEchoRequest" is now returning a packet with the proper IPv6 header.
+  </li>
+  <li> The TCP socket Attribute "SlowStartThreshold" has been renamed "InitialSlowStartThreshold" to
+       clarify that the effect is only on the initial value.
+  </li>
+  <li> all schedulers were updated to interact with FR entity via FFR-SAP. Only PF, PSS, CQA, 
+       FD-TBFQ, TD-TBFQ schedulers supports Frequency Reuse functionality. In the beginning 
+       of scheduling process, schedulers ask FR entity for avaiable RBGs and then ask if UE 
+       can be scheduled on RB</li>
+  <li> eNB RRC interacts with FFR entity via RRC-FFR SAP</li>
+  <li> new DL-CQI generation approach was implemented. Now DL-CQI is computed from control channel as signal
+       and data channel (if received) as interference. New attribute in LteHelper was added to specify 
+       DL-CQI generation approach. New approach is default one in LteHelper </li>
+  <li> RadioEnvironmentMap can be generated for Data or Control channel and for specified RbId;
+       Data or Control channel and RbId can be configured by new attributes in RadioEnvironmentMapHelper </li>
+  <li> lte-sinr-chunk-processor refactored to lte-chunk-processor. Removed all lte-xxx-chunk-processor 
+       implementations</li>
+  <li> BindToNetDevice affects also sockets using IPv6.</li>
+  <li> BindToNetDevice now calls implicitly Bind (). To bind a socket to a NetDevice and to a specific address,
+       the correct sequence is Bind (address) - BindToNetDevice (device). The opposite will raise an error.</li>
+</ul>
+
+<h2>Changes to build system:</h2>
+<ul>
+<li> None for this release. </li>
+</ul>
+
+<h2>Changed behavior:</h2>
+<ul>
+<li> Behavior will be changed due to the list of bugs fixed (listed in RELEASE_NOTES); users are requested to review that list as well.
+</ul>
+
+<hr>
 <h1>Changes from ns-3.19 to ns-3.20</h1>
 <h2>New API:</h2>
 <ul>
@@ -204,6 +287,10 @@
   value class that represents simulation time; the largest unit prior to 
   this addition was Second.
   </li>
+  <li> SimpleNetDevice and SimpleChannel are not so simple anymore. SimpleNetDevice can be now a
+       Broadcast or PointToPoint NetDevice, it can have a limited bandwidth and it uses an output
+       queue.       
+  </li>
 </ul>
 
 <h2>Changes to build system:</h2>
diff -Naur ns-3.20/doc/manual/source/attributes.rst ns-3.21/doc/manual/source/attributes.rst
--- ns-3.20/doc/manual/source/attributes.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/manual/source/attributes.rst	2014-09-17 20:03:14.000000000 -0700
@@ -1,24 +1,62 @@
 .. include:: replace.txt
 .. highlight:: cpp
 
+.. Section Separators:
+   ----
+   ****
+   ++++
+   ====
+   ~~~~
 
 .. _Attributes:
 
-Attributes
-----------
+Configuration and Attributes
+----------------------------
 
 In |ns3| simulations, there are two main aspects to configuration:
 
-* the simulation topology and how objects are connected 
-* the values used by the models instantiated in the topology
+* The simulation topology and how objects are connected.
+* The values used by the models instantiated in the topology.
 
 This chapter focuses on the second item above: how the many values in use in
 |ns3| are organized, documented, and modifiable by |ns3| users. The |ns3|
 attribute system is also the underpinning of how traces and statistics are
 gathered in the simulator. 
 
+In the course of this chapter we will discuss the various ways to set or
+modify the values used by |ns3| model objects.  In increasing order of
+specificity, these are:
+
++---------------------------------------+-------------------------------------+
+| Method                                | Scope                               |
++=======================================+=====================================+
+| Default Attribute values set when     | Affect all instances of the class.  |
+| Attributes are defined in             |                                     |
+| :cpp:func:`GetTypeId ()`.             |                                     |
++---------------------------------------+-------------------------------------+
+| | :cpp:class:`CommandLine`            | Affect all future instances.        |
+| | :cpp:func:`Config::SetDefault()`    |                                     |
+| | :cpp:class:`ConfigStore`            |                                     |
++---------------------------------------+-------------------------------------+
+| :cpp:class:`ObjectFactory`            | Affects all instances created with  |
+|                                       | the factory.                        |
++---------------------------------------+-------------------------------------+
+| :cpp:func:`XHelperSetAttribute ()`    | Affects all instances created by    |
+|                                       | the helper.                         |
++---------------------------------------+-------------------------------------+
+| | :cpp:func:`MyClass::SetX ()`        | Alters this particular instance.    |
+| | :cpp:func:`Object::SetAttribute ()` | Generally this is the only form     |
+| | :cpp:func:`Config::Set()`           | which can be scheduled to alter     |
+|                                       | an instance once the simulation     |
+|                                       | is running.                         |
++---------------------------------------+-------------------------------------+
+
+By "specificity" we mean that methods in later rows in the table
+override the values set by, and typically affect fewer instances than,
+earlier methods.
+
 Before delving into details of the attribute value system, it will help to
-review some basic properties of class :cpp:class:`ns3::Object`.
+review some basic properties of class :cpp:class:`Object`.
 
 Object Overview
 ***************
@@ -26,30 +64,35 @@
 |ns3| is fundamentally a C++ object-based system. By this we mean that new C++
 classes (types) can be declared, defined, and subclassed as usual.
 
-Many |ns3| objects inherit from the :cpp:class:`ns3::Object` base class.  These
+Many |ns3| objects inherit from the :cpp:class:`Object` base class.  These
 objects have some additional properties that we exploit for organizing the
 system and improving the memory management of our objects:
 
-* a "metadata" system that links the class name to a lot of meta-information
-  about the object, including the base class of the subclass, the set of
-  accessible constructors in the subclass, and the set of "attributes" of the
-  subclass
-* a reference counting smart pointer implementation, for memory management.
+* "Metadata" system that links the class name to a lot of meta-information
+  about the object, including:
+  
+  * The base class of the subclass,
+  * The set of accessible constructors in the subclass,
+  * The set of "attributes" of the subclass,
+  * Whether each attribute can be set, or is read-only,
+  * The allowed range of values for each attribute.
+  
+* Reference counting smart pointer implementation, for memory management.
 
 |ns3| objects that use the attribute system derive from either
-:cpp:class:`ns3::Object` or :cpp:class:`ns3::ObjectBase`. Most |ns3| objects we
-will discuss derive from :cpp:class:`ns3::Object`, but a few that are outside
+:cpp:class:`Object` or :cpp:class:`ObjectBase`. Most |ns3| objects we
+will discuss derive from :cpp:class:`Object`, but a few that are outside
 the smart pointer memory management framework derive from
-:cpp:class:`ns3::ObjectBase`.
+:cpp:class:`ObjectBase`.
 
 Let's review a couple of properties of these objects.
 
-Smart pointers
-**************
+Smart Pointers
+++++++++++++++
 
 As introduced in the |ns3| tutorial, |ns3| objects are memory managed by a
 `reference counting smart pointer implementation
-<http://en.wikipedia.org/wiki/Smart_pointer>`_, class :cpp:class:`ns3::Ptr`. 
+<http://en.wikipedia.org/wiki/Smart_pointer>`_, class :cpp:class:`Ptr`. 
 
 Smart pointers are used extensively in the |ns3| APIs, to avoid passing
 references to heap-allocated objects that may cause memory leaks.  
@@ -59,13 +102,16 @@
   nd->CallSomeFunction ();
   // etc.
 
+So how do you get a smart pointer to an object, as in the first line
+of this example?
+  
 CreateObject
-++++++++++++
+============
 
 As we discussed above in :ref:`Memory-management-and-class-Ptr`, at the
-lowest-level API, objects of type :cpp:class:`ns3::Object` are not instantiated
+lowest-level API, objects of type :cpp:class:`Object` are not instantiated
 using ``operator new`` as usual but instead by a templated function called
-:cpp:func:`CreateObject()`.
+:cpp:func:`CreateObject ()`.
 
 A typical way to create such an object is as follows::
 
@@ -75,34 +121,36 @@
 
   WifiNetDevice* nd = new WifiNetDevice ();
 
-Objects that derive from :cpp:class:`ns3::Object` must be allocated on the heap
-using CreateObject(). Those deriving from :cpp:class:`ns3::ObjectBase`, such as
-|ns3| helper functions and packet headers and trailers, can be allocated on the
-stack.  
-
-In some scripts, you may not see a lot of CreateObject() calls in the code; this
-is because there are some helper objects in effect that are doing the
-CreateObject()s for you.
+Objects that derive from :cpp:class:`Object` must be allocated on the heap
+using :cpp:func:`CreateObject ()`. Those deriving from :cpp:class:`ObjectBase`,
+such as |ns3| helper functions and packet headers and trailers,
+can be allocated on the stack.  
+
+In some scripts, you may not see a lot of :cpp:func:`CreateObject ()` calls
+in the code; this is because there are some helper objects in effect
+that are doing the :cpp:func:`CreateObject ()` calls for you.
 
 TypeId
 ++++++
 
-|ns3| classes that derive from class ns3::Object can include a metadata class
-called ``TypeId`` that records meta-information about the class, for use in the
-object aggregation and component manager systems:
-
-* a unique string identifying the class
-* the base class of the subclass, within the metadata system
-* the set of accessible constructors in the subclass
+|ns3| classes that derive from class :cpp:class:`Object` can include
+a metadata class called :cpp:class:`TypeId` that records meta-information
+about the class, for use in the object aggregation and component manager
+systems:
+
+* A unique string identifying the class.
+* The base class of the subclass, within the metadata system.
+* The set of accessible constructors in the subclass.
+* A list of publicly accessible properties ("attributes") of the class.
 
 Object Summary
 ++++++++++++++
 
 Putting all of these concepts together, let's look at a specific
-example: class :cpp:class:`ns3::Node`.
+example: class :cpp:class:`Node`.
 
-The public header file node.h has a declaration that includes a static GetTypeId
-function call::
+The public header file ``node.h`` has a declaration that includes
+a static :cpp:func:`GetTypeId ()` function call::
 
     class Node : public Object
     {
@@ -118,15 +166,18 @@
       static TypeId tid = TypeId ("ns3::Node")
         .SetParent<Object> ()
         .AddConstructor<Node> ()
-        .AddAttribute ("DeviceList", "The list of devices associated to this Node.",
+        .AddAttribute ("DeviceList",
+	               "The list of devices associated to this Node.",
                        ObjectVectorValue (),
                        MakeObjectVectorAccessor (&Node::m_devices),
                        MakeObjectVectorChecker<NetDevice> ())
-        .AddAttribute ("ApplicationList", "The list of applications associated to this Node.",
+        .AddAttribute ("ApplicationList",
+	               "The list of applications associated to this Node.",
                        ObjectVectorValue (),
                        MakeObjectVectorAccessor (&Node::m_applications),
                        MakeObjectVectorChecker<Application> ())
-        .AddAttribute ("Id", "The id (unique integer) of this Node.",
+        .AddAttribute ("Id",
+	               "The id (unique integer) of this Node.",
                        TypeId::ATTR_GET, // allow only getting it.
                        UintegerValue (0),
                        MakeUintegerAccessor (&Node::m_id),
@@ -135,33 +186,38 @@
       return tid;
     }
 
-Consider the TypeId of an |ns3| ``Object`` class as an extended form of run time
-type information (RTTI). The C++ language includes a simple kind of RTTI in
-order to support ``dynamic_cast`` and ``typeid`` operators.
+Consider the :cpp:class:`TypeId` of the |ns3| :cpp:class:`Object` class
+as an extended form of run time type information (RTTI). The C++ language
+includes a simple kind of RTTI in order to support ``dynamic_cast`` and
+``typeid`` operators.
 
-The "``.SetParent<Object> ()``" call in the declaration above is used in
+The :cpp:func:`SetParent<Object> ()` call in the definition above is used in
 conjunction with our object aggregation mechanisms to allow safe up- and
-down-casting in inheritance trees during ``GetObject``.
+down-casting in inheritance trees during :cpp:func:`GetObject ()`.
+It also enables subclasses to inherit the Attributes of their parent class.
 
-The "``.AddConstructor<Node> ()``" call is used in conjunction with our abstract
-object factory mechanisms to allow us to construct C++ objects without forcing a
-user to know the concrete class of the object she is building.
-
-The three calls to "``.AddAttribute``" associate a given string with a strongly
-typed value in the class. Notice that you must provide a help string which may
-be displayed, for example, via command line processors. Each ``Attribute`` is
-associated with mechanisms for accessing the underlying member variable in the
-object (for example, ``MakeUintegerAccessor`` tells the generic ``Attribute``
+The :cpp:func:`AddConstructor<Node> ()` call is used in conjunction
+with our abstract object factory mechanisms to allow us to construct
+C++ objects without forcing a user to know the concrete class of
+the object she is building.
+
+The three calls to :cpp:func:`AddAttribute ()` associate a given string
+with a strongly typed value in the class. Notice that you must provide
+a help string which may be displayed, for example, *via* command line
+processors. Each :cpp:class:`Attribute` is associated with mechanisms
+for accessing the underlying member variable in the object (for example,
+:cpp:func:`MakeUintegerAccessor ()` tells the generic :cpp:class:`Attribute`
 code how to get to the node ID above). There are also "Checker" methods which
-are used to validate values.
+are used to validate values against range limitations, such as maximum
+and minimum allowed values.
 
 When users want to create Nodes, they will usually call some form of 
-``CreateObject``,::
+:cpp:func:`CreateObject ()`,::
 
     Ptr<Node> n = CreateObject<Node> ();
 
-or more abstractly, using an object factory, you can create a ``Node`` object
-without even knowing the concrete C++ type::
+or more abstractly, using an object factory, you can create a
+:cpp:class:`Node` object without even knowing the concrete C++ type::
 
     ObjectFactory factory;
     const std::string typeId = "ns3::Node'';
@@ -169,13 +225,13 @@
     Ptr<Object> node = factory.Create <Object> ();
 
 Both of these methods result in fully initialized attributes being available 
-in the resulting ``Object`` instances.
+in the resulting :cpp:class:`Object` instances.
 
 We next discuss how attributes (values associated with member variables or
-functions of the class) are plumbed into the above TypeId.
+functions of the class) are plumbed into the above :cpp:class:`TypeId`.
 
-Attribute Overview
-******************
+Attributes
+**********
 
 The goal of the attribute system is to organize the access of
 internal member objects of a simulation. This goal arises because,
@@ -184,11 +240,11 @@
 but often will be interested in studying or tracing particular 
 internal variables.  For instance, use cases such as:
 
-* "I want to trace the packets on the wireless interface only on the first
-  access point"
-* "I want to trace the value of the TCP congestion window (every time it
-  changes) on a particular TCP socket"
-* "I want a dump of all values that were used in my simulation."
+* *"I want to trace the packets on the wireless interface only on the first
+  access point."*
+* *"I want to trace the value of the TCP congestion window (every time it
+  changes) on a particular TCP socket."*
+* *"I want a dump of all values that were used in my simulation."*
 
 Similarly, users may want fine-grained access to internal variables in the
 simulation, or may want to broadly change the initial value used for a
@@ -201,16 +257,17 @@
 the node and its constituent member objects, and help text and default values
 for each parameter.
 
-Functional overview
+Defining Attributes
 +++++++++++++++++++
 
 We provide a way for users to access values deep in the system, without having
 to plumb accessors (pointers) through the system and walk pointer chains to get
-to them. Consider a class DropTailQueue that has a member variable that is an
-unsigned integer ``m_maxPackets``; this member variable controls the depth of
-the queue.  
+to them. Consider a class :cpp:class:`DropTailQueue` that has a member variable
+that is an unsigned integer :cpp:member:`m_maxPackets`; this member variable controls
+the depth of the queue.  
 
-If we look at the declaration of DropTailQueue, we see the following::
+If we look at the declaration of :cpp:class:`DropTailQueue`, we see
+the following::
 
     class DropTailQueue : public Queue {
     public:
@@ -223,21 +280,23 @@
     };
 
 Let's consider things that a user may want to do with the value of
-m_maxPackets:
+:cpp:member:`m_maxPackets`:
 
-* Set a default value for the system, such that whenever a new DropTailQueue is
-  created, this member is initialized to that default. 
+* Set a default value for the system, such that whenever a new
+  :cpp:class:`DropTailQueue` is created, this member is initialized
+  to that default.
 * Set or get the value on an already instantiated queue.
 
-The above things typically require providing Set() and Get() functions, and some
-type of global default value.
+The above things typically require providing ``Set ()`` and ``Get ()``
+functions, and some type of global default value.
 
-In the |ns3| attribute system, these value definitions and accessor functions
-are moved into the TypeId class; e.g.::
+In the |ns3| attribute system, these value definitions and accessor function
+registrations are moved into the :cpp:class:`TypeId` class; *e.g*.::
 
     NS_OBJECT_ENSURE_REGISTERED (DropTailQueue);
 
-    TypeId DropTailQueue::GetTypeId (void) 
+    TypeId
+    DropTailQueue::GetTypeId (void) 
     {
       static TypeId tid = TypeId ("ns3::DropTailQueue")
         .SetParent<Queue> ()
@@ -252,22 +311,24 @@
       return tid;
     }
 
-The AddAttribute() method is performing a number of things with this
-value:
+The :cpp:func:`AddAttribute ()` method is performing a number of things for the
+:cpp:member:`m_maxPackets` value:
 
-* Binding the variable m_maxPackets to a string "MaxPackets"
-* Providing a default value (100 packets)
-* Providing some help text defining the value
-* Providing a "checker" (not used in this example) that can be used to set
-  bounds on the allowable range of values
+* Binding the (usually private) member variable :cpp:member:`m_maxPackets`
+  to a public string ``"MaxPackets"``.
+* Providing a default value (100 packets).
+* Providing some help text defining the meaning of the value.
+* Providing a "Checker" (not used in this example) that can be used to set
+  bounds on the allowable range of values.
 
 The key point is that now the value of this variable and its default value are
 accessible in the attribute namespace, which is based on strings such as
-"MaxPackets" and TypeId strings. In the next section, we will provide an example
-script that shows how users may manipulate these values.
+``"MaxPackets"`` and :cpp:class:`TypeId` name strings. In the next section,
+we will provide an example script that shows how users may manipulate
+these values.
 
 Note that initialization of the attribute relies on the macro
-``NS_OBJECT_ENSURE_REGISTERED`` (DropTailQueue) being called; if you leave this
+``NS_OBJECT_ENSURE_REGISTERED (DropTailQueue)`` being called; if you leave this
 out of your new class implementation, your attributes will not be initialized
 correctly.
 
@@ -278,14 +339,23 @@
 attributes of their models, and how does a user access these attributes, or
 document their values as part of the record of their simulation?
 
-Default values and command-line arguments
-+++++++++++++++++++++++++++++++++++++++++
+Detailed documentation of the actual attributes defined for a type,
+and a global list of all defined attributes, are available in
+the API documentation.  For the rest of this document we are going
+to demonstrate the various ways of getting and setting attribute values.
 
-Let's look at how a user script might access these values.  
-This is based on the script found at ``src/point-to-point/examples/main-attribute-value.cc``,
-with some details stripped out.::
+Setting Default Values
+++++++++++++++++++++++
+
+Config::SetDefault and CommandLine
+==================================
+
+Let's look at how a user script might access a specific attribute value.
+We're going to use the
+``src/point-to-point/examples/main-attribute-value.cc``
+script for illustration, with some details stripped out.  The ``main``
+function begins::
 
-    //
     // This is a basic example of how to use the attribute system to
     // set and get a value in the underlying system; namely, an unsigned
     // integer of the maximum number of packets in a queue
@@ -305,20 +375,33 @@
       Config::SetDefault ("ns3::DropTailQueue::MaxPackets", UintegerValue (80));
 
       // Allow the user to override any of the defaults and the above
-      // SetDefaults() at run-time, via command-line arguments
+      // SetDefaults () at run-time, via command-line arguments
+      // For example, via "--ns3::DropTailQueue::MaxPackets=80"
       CommandLine cmd;
+      // This provides yet another way to set the value from the command line:
+      cmd.AddValue ("maxPackets", "ns3::DropTailQueue::MaxPackets");
       cmd.Parse (argc, argv);
 
-The main thing to notice in the above are the two calls to 
-``Config::SetDefault``.  This is how we set the default value
-for all subsequently instantiated DropTailQueues.  We illustrate
-that two types of Value classes, a StringValue and a UintegerValue class,
-can be used to assign the value to the attribute named by
-"ns3::DropTailQueue::MaxPackets".
-
-Now, we will create a few objects using the low-level API; here,
-our newly created queues will not have a m_maxPackets initialized to
-100 packets but to 80 packets, because of what we did above with
+The main thing to notice in the above are the two equivalent calls to 
+:cpp:func:`Config::SetDefault ()`.  This is how we set the default value
+for all subsequently instantiated :cpp:class:`DropTailQueue`\s.  We illustrate
+that two types of ``Value`` classes, a :cpp:class:`StringValue` and
+a :cpp:class:`UintegerValue` class, can be used to assign the value
+to the attribute named by "ns3::DropTailQueue::MaxPackets".
+
+It's also possible to manipulate Attributes using the :cpp:class:`CommandLine`;
+we saw some examples early in the Tutorial.  In particular, it is
+straightforward to add a shorthand argument name, such as ``--maxPackets``,
+for an Attribute that is particular relevant for your model, in this case
+``"ns3::DropTailQueue::MaxPackets"``.  This has the additional feature that
+the help string for the Attribute will be printed as part of the usage
+message for the script.  For more information see
+the :cpp:class:`CommandLine` API documentation.
+
+Now, we will create a few objects using the low-level API.  Our
+newly created queues will not have :cpp:member:`m_maxPackets` initialized to
+100 packets, as defined in the :cpp:func:`DropTailQueue::GetTypeId ()`
+function, but to 80 packets, because of what we did above with
 default values.::
 
     Ptr<Node> n0 = CreateObject<Node> ();
@@ -329,46 +412,96 @@
     Ptr<Queue> q = CreateObject<DropTailQueue> ();
     net0->AddQueue(q);
 
-At this point, we have created a single node (Node 0) and a single
-PointToPointNetDevice (NetDevice 0) and added a DropTailQueue to it.
+At this point, we have created a single :cpp:class:`Node` (``n0``)
+and a single :cpp:class:`PointToPointNetDevice` (``net0``),
+and added a :cpp:class:`DropTailQueue` (``q``) to ``net0``.
 
-Now, we can manipulate the MaxPackets value of the already instantiated
-DropTailQueue. Here are various ways to do that.
+Constructors, Helpers and ObjectFactory
+=======================================
 
-Pointer-based access
-++++++++++++++++++++
+Arbitrary combinations of attributes can be set and fetched from
+the helper and low-level APIs; either from the constructors themselves::
 
-We assume that a smart pointer (Ptr) to a relevant network device is in hand; in
-the current example, it is the ``net0`` pointer. 
+    Ptr<GridPositionAllocator> p =
+      CreateObjectWithAttributes<GridPositionAllocator>
+        ("MinX", DoubleValue (-100.0),
+         "MinY", DoubleValue (-100.0),
+         "DeltaX", DoubleValue (5.0),
+         "DeltaY", DoubleValue (20.0),
+         "GridWidth", UintegerValue (20),
+         "LayoutType", StringValue ("RowFirst"));
+
+or from the higher-level helper APIs, such as::
+
+    mobility.SetPositionAllocator
+        ("ns3::GridPositionAllocator",
+         "MinX", DoubleValue (-100.0),
+         "MinY", DoubleValue (-100.0),
+         "DeltaX", DoubleValue (5.0),
+         "DeltaY", DoubleValue (20.0),
+         "GridWidth", UintegerValue (20),
+         "LayoutType", StringValue ("RowFirst"));
+
+We don't illustrate it here, but you can also configure an
+:cpp:class:`ObjectFactory` with new values for specific attributes.
+Instances created by the :cpp:class:`ObjectFactory` will have those
+attributes set during construction.  This is very similar to using
+one of the helper APIs for the class.
+
+To review, there are several ways to set values for attributes for
+class instances *to be created in the future:*
+
+* :cpp:func:`Config::SetDefault ()`
+* :cpp:func:`CommandLine::AddValue ()`
+* :cpp:func:`CreateObjectWithAttributes<> ()`
+* Various helper APIs
+
+But what if you've already created an instance, and you want
+to change the value of the attribute?  In this example, how can we
+manipulate the :cpp:member:`m_maxPackets` value of the already instantiated
+:cpp:class:`DropTailQueue`?  Here are various ways to do that.
+
+
+Changing Values
++++++++++++++++
+
+SmartPointer
+============
+
+Assume that a smart pointer (:cpp:class:`Ptr`) to a relevant network device
+is in hand; in the current example, it is the ``net0`` pointer. 
 
 One way to change the value is to access a pointer to the underlying queue and
 modify its attribute.
  
-First, we observe that we can get a pointer to the (base class) queue via the
-PointToPointNetDevice attributes, where it is called TxQueue::
+First, we observe that we can get a pointer to the (base class)
+:cpp:class:`Queue` *via* the
+:cpp:class:`PointToPointNetDevice` attributes, where it is called
+``"TxQueue"``::
 
     PointerValue tmp;
     net0->GetAttribute ("TxQueue", tmp);
     Ptr<Object> txQueue = tmp.GetObject ();
 
-Using the GetObject function, we can perform a safe downcast to a DropTailQueue,
-where MaxPackets is a member::
+Using the :cpp:func:`GetObject ()` function, we can perform a safe downcast
+to a :cpp:class:`DropTailQueue`, where ``"MaxPackets"`` is an attribute::
 
     Ptr<DropTailQueue> dtq = txQueue->GetObject <DropTailQueue> ();
     NS_ASSERT (dtq != 0);
 
 Next, we can get the value of an attribute on this queue.  We have introduced
-wrapper "Value" classes for the underlying data types, similar to Java wrappers
-around these types, since the attribute system stores values and not disparate
-types.  Here, the attribute value is assigned to a UintegerValue, and the Get()
-method on this value produces the (unwrapped) uint32_t.::
+wrapper ``Value`` classes for the underlying data types, similar
+to Java wrappers around these types, since the attribute system stores values
+serialized to strings, and not disparate types.  Here, the attribute value
+is assigned to a :cpp:class:`UintegerValue`, and the :cpp:func:`Get ()`
+method on this value produces the (unwrapped) ``uint32_t``.::
 
     UintegerValue limit;
     dtq->GetAttribute ("MaxPackets", limit);
     NS_LOG_INFO ("1.  dtq limit: " << limit.Get () << " packets");
   
-Note that the above downcast is not really needed; we could have done the same
-using the Ptr<Queue> even though the attribute is a member of the subclass::
+Note that the above downcast is not really needed; we could have gotten
+the attribute value directly from ``txQueue``, which is an :cpp:class:`Object`::
 
     txQueue->GetAttribute ("MaxPackets", limit);
     NS_LOG_INFO ("2.  txQueue limit: " << limit.Get () << " packets");
@@ -379,78 +512,81 @@
     txQueue->GetAttribute ("MaxPackets", limit);
     NS_LOG_INFO ("3.  txQueue limit changed: " << limit.Get () << " packets");
 
-Namespace-based access
-++++++++++++++++++++++
+
+Config Namespace Path
+=====================
 
 An alternative way to get at the attribute is to use the configuration
 namespace.  Here, this attribute resides on a known path in this namespace; this
 approach is useful if one doesn't have access to the underlying pointers and
 would like to configure a specific attribute with a single statement.::
 
-    Config::Set ("/NodeList/0/DeviceList/0/TxQueue/MaxPackets", UintegerValue (25));
+    Config::Set ("/NodeList/0/DeviceList/0/TxQueue/MaxPackets",
+                 UintegerValue (25));
     txQueue->GetAttribute ("MaxPackets", limit); 
-    NS_LOG_INFO ("4.  txQueue limit changed through namespace: " << 
-        limit.Get () << " packets");
+    NS_LOG_INFO ("4.  txQueue limit changed through namespace: "
+                 << limit.Get () << " packets");
 
+The configuration path often has the form of
+``".../<container name>/<index>/.../<attribute>/<attribute>"``
+to refer to a specific instance by index of an object in the container.
+In this case the first container is the list of all :cpp:class:`Node`\s;
+the second container is the list of all :cpp:class:`NetDevice`\s on
+the chosen :cpp:class:`Node`.  Finally, the configuration path usually
+ends with a succession of member attributes, in this case the ``"MaxPackets"``
+attribute of the ``"TxQueue"`` of the chosen :cpp:class:`NetDevice`.
+	
 We could have also used wildcards to set this value for all nodes and all net
 devices (which in this simple example has the same effect as the previous
-Set())::
+:cpp:func:`Config::Set ()`)::
 
-    Config::Set ("/NodeList/*/DeviceList/*/TxQueue/MaxPackets", UintegerValue (15));
+    Config::Set ("/NodeList/*/DeviceList/*/TxQueue/MaxPackets",
+                 UintegerValue (15));
     txQueue->GetAttribute ("MaxPackets", limit); 
-    NS_LOG_INFO ("5.  txQueue limit changed through wildcarded namespace: " << 
-        limit.Get () << " packets");
+    NS_LOG_INFO ("5.  txQueue limit changed through wildcarded namespace: "
+                 << limit.Get () << " packets");
 
-Object Name Service-based access
-++++++++++++++++++++++++++++++++
+Object Name Service
+===================
 
 Another way to get at the attribute is to use the object name service facility.
-Here, this attribute is found using a name string. This approach is useful if
-one doesn't have access to the underlying pointers and it is difficult to
-determine the required concrete configuration namespaced path.
+The object name service allows us to add items to the configuration
+namespace under the ``"/Names/"`` path with a user-defined name string.
+This approach is useful if one doesn't have access to the underlying
+pointers and it is difficult to determine the required concrete configuration
+namespace path.
 
 ::
 
-    Names::Add ("server", serverNode);
-    Names::Add ("server/eth0", serverDevice);
+    Names::Add ("server", n0);
+    Names::Add ("server/eth0", net0);
 
     ...
 
     Config::Set ("/Names/server/eth0/TxQueue/MaxPackets", UintegerValue (25));
 
-See :ref:`Object-names` for a fuller treatment of the |ns3| configuration namespace.
-
-Setting through constructors helper classes
-+++++++++++++++++++++++++++++++++++++++++++
-
-Arbitrary combinations of attributes can be set and fetched from
-the helper and low-level APIs; either from the constructors themselves::
-
-    Ptr<Object> p = CreateObject<MyNewObject> ("n1", v1, "n2", v2, ...);
+Here we've added the path elements ``"server"`` and ``"eth0"`` under
+the ``"/Names/"`` namespace, then used the resulting configuration path
+to set the attribute.
 
-or from the higher-level helper APIs, such as::
-
-    mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
-                                   "MinX", DoubleValue (-100.0),
-                                   "MinY", DoubleValue (-100.0),
-                                   "DeltaX", DoubleValue (5.0),
-                                   "DeltaY", DoubleValue (20.0),
-                                   "GridWidth", UintegerValue (20),
-                                   "LayoutType", StringValue ("RowFirst"));
+See :ref:`Object-names` for a fuller treatment of the |ns3| configuration namespace.
 
-Implementation details
-++++++++++++++++++++++
+Implementation Details
+**********************
 
-Value classes
-~~~~~~~~~~~~~
+Value Classes
++++++++++++++
 
-Readers will note the new FooValue classes which are subclasses of the
-AttributeValue base class. These can be thought of as an intermediate class that
-can be used to convert from raw types to the Values that are used by the
-attribute system. Recall that this database is holding objects of many types
-with a single generic type. Conversions to this type can either be done using an
-intermediate class (IntegerValue, DoubleValue for "floating point") or via
-strings. Direct implicit conversion of types to Value is not really practical.
+Readers will note the ``TypeValue`` classes which are subclasses of the
+:cpp:class:`AttributeValue` base class. These can be thought of as
+intermediate classes which are used to convert from raw types to the
+:cpp:class:`AttributeValue`\s that are used by the attribute system.
+Recall that this database is holding objects of many types serialized
+to strings. Conversions to this type can either be done using
+an intermediate class (such as :cpp:class:`IntegerValue`,
+or :cpp:class:`DoubleValue` for floating point numbers)
+or *via* strings. Direct implicit conversion of types to
+:cpp:class:`AttributeValue` is not really practical.
 So in the above, users have a choice of using strings or values::
 
     p->Set ("cwnd", StringValue ("100")); // string-based setter
@@ -460,16 +596,18 @@
 new AttributeValue subclasses for new types that they want to introduce into
 the attribute system: 
 
-* ATTRIBUTE_HELPER_HEADER
-* ATTRIBUTE_HELPER_CPP
+* ``ATTRIBUTE_HELPER_HEADER``
+* ``ATTRIBUTE_HELPER_CPP``
 
-Initialization order
-~~~~~~~~~~~~~~~~~~~~
+See the API documentation for these constructs for more information.
+
+Initialization Order
+++++++++++++++++++++
 
 Attributes in the system must not depend on the state of any other Attribute in
 this system. This is because an ordering of Attribute initialization is not
 specified, nor enforced, by the system. A specific example of this can be seen
-in automated configuration programs such as :cpp:class:`ns3::ConfigStore`.
+in automated configuration programs such as :cpp:class:`ConfigStore`.
 Although a given model may arrange it so that Attributes are initialized in a
 particular order, another automatic configurator may decide independently to
 change Attributes in, for example, alphabetic order.  
@@ -481,13 +619,14 @@
 
 This is a very strong restriction and there are cases where Attributes must set
 consistently to allow correct operation. To this end we do allow for consistency
-checking *when the attribute is used* (cf. NS_ASSERT_MSG or NS_ABORT_MSG).
+checking *when the attribute is used* (*cf*. ``NS_ASSERT_MSG``
+or ``NS_ABORT_MSG``).
 
 In general, the attribute code to assign values to the underlying class member
 variables is executed after an object is constructed. But what if you need the
 values assigned before the constructor body executes, because you need them in
 the logic of the constructor? There is a way to do this, used for example in the
-class :cpp:class:`ns3::ConfigStore`: call ``ObjectBase::ConstructSelf ()`` as
+class :cpp:class:`ConfigStore`: call :cpp:func:`ObjectBase::ConstructSelf ()` as
 follows::
 
     ConfigStore::ConfigStore ()
@@ -496,28 +635,38 @@
       // continue on with constructor.
     }
 
-Beware that the object and all its derived classes must also implement a 
-``virtual TypeId GetInstanceTypeId (void) const;`` method. Otherwise the
-``ObjectBase::ConstructSelf ()`` will not be able to read the attributes.
+Beware that the object and all its derived classes must also implement
+a :cpp:func:`GetInstanceTypeId ()` method. Otherwise
+the :cpp:func:`ObjectBase::ConstructSelf ()` will not be able to read
+the attributes.
 
-Extending attributes
-********************
+Adding Attributes
++++++++++++++++++
 
 The |ns3| system will place a number of internal values under the attribute
 system, but undoubtedly users will want to extend this to pick up ones we have
-missed, or to add their own classes to this.
+missed, or to add their own classes to the system.
+
+There are three typical use cases:
+
+* Making an existing class data member accessible as an Attribute,
+  when it isn't already.
+* Making a new class able to expose some data members as Attributes
+  by giving it a TypeId.
+* Creating an :cpp:class:`AttributeValue` subclass for a new class
+  so that it can be accessed as an Attribute.
 
-Adding an existing internal variable to the metadata system 
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+Existing Member Variable
+========================
 
-Consider this variable in class TcpSocket::
+Consider this variable in :cpp:class:`TcpSocket`::
 
     uint32_t m_cWnd;   // Congestion window
 
 Suppose that someone working with TCP wanted to get or set the value of that
 variable using the metadata system. If it were not already provided by |ns3|,
 the user could declare the following addition in the runtime metadata system (to
-the TypeId declaration for TcpSocket)::
+the :cpp:func:`GetTypeId` definition for :cpp:class:`TcpSocket`)::
 
     .AddAttribute ("Congestion window", 
                    "Tcp congestion window (bytes)",
@@ -525,70 +674,97 @@
                    MakeUintegerAccessor (&TcpSocket::m_cWnd),
                    MakeUintegerChecker<uint16_t> ())
 
-Now, the user with a pointer to the TcpSocket can perform operations such as
+Now, the user with a pointer to a :cpp:class:`TcpSocket` instance
+can perform operations such as
 setting and getting the value, without having to add these functions explicitly.
 Furthermore, access controls can be applied, such as allowing the parameter to
 be read and not written, or bounds checking on the permissible values can be
 applied.
 
-Adding a new TypeId
-+++++++++++++++++++
+New Class TypeId
+================
+
+Here, we discuss the impact on a user who wants to add a new class to |ns3|.
+What additional things must be done to enable it to hold attributes?
+
+Let's assume our new class, called :cpp:class:`ns3::MyMobility`,
+is a type of mobility model.  First, the class should inherit from
+it's parent class, :cpp:class:`ns3::MobilityModel`.
+In the ``my-mobility.h`` header file::
+
+    namespace ns3 {
+    
+    class MyClass : public MobilityModel
+    {
+
+This requires we declare the :cpp:func:`GetTypeId ()` function. 
+This is a one-line public function declaration::
 
-Here, we discuss the impact on a user who wants to add a new class to |ns3|;
-what additional things must be done to hook it into this system.
+    public:
+      /**
+       *  Register this type.
+       *  \return The object TypeId.
+       */
+      static TypeId GetTypeId (void);
 
-We've already introduced what a TypeId definition looks like::
+We've already introduced what a :cpp:class:`TypeId` definition will look like
+in the ``my-mobility.cc`` implementation file::
+
+    NS_OBJECT_ENSURE_REGISTERED (MyMobility);
 
     TypeId
-    RandomWalk2dMobilityModel::GetTypeId (void)
+    MyMobility::GetTypeId (void)
     {
-      static TypeId tid = TypeId ("ns3::RandomWalk2dMobilityModel")
+      static TypeId tid = TypeId ("ns3::MyMobility")
         .SetParent<MobilityModel> ()
         .SetGroupName ("Mobility")
-        .AddConstructor<RandomWalk2dMobilityModel> ()
+        .AddConstructor<MyMobility> ()
         .AddAttribute ("Bounds",
                        "Bounds of the area to cruise.",
                        RectangleValue (Rectangle (0.0, 0.0, 100.0, 100.0)),
-                       MakeRectangleAccessor (&RandomWalk2dMobilityModel::m_bounds),
+                       MakeRectangleAccessor (&MyMobility::m_bounds),
                        MakeRectangleChecker ())
         .AddAttribute ("Time",
                        "Change current direction and speed after moving for this delay.",
                        TimeValue (Seconds (1.0)),
-                       MakeTimeAccessor (&RandomWalk2dMobilityModel::m_modeTime),
+                       MakeTimeAccessor (&MyMobility::m_modeTime),
                        MakeTimeChecker ())
         // etc (more parameters).
         ;
       return tid;
     }
 
-The declaration for this in the class declaration is one-line public member
-method::
-
-    public:
-      static TypeId GetTypeId (void);
-
+If we don't want to subclass from an existing class, in the header file
+we just inherit from :cpp:class:`ns3::Object`, and in the object file
+we set the parent class to :cpp:class:`ns3::Object` with
+``.SetParent<Object> ()``.
+    
 Typical mistakes here involve:
 
-* Not calling the SetParent method or calling it with the wrong type
-* Not calling the AddConstructor method of calling it with the wrong type
-* Introducing a typographical error in the name of the TypeId in its constructor
-* Not using the fully-qualified c++ typename of the enclosing c++ class as the
-  name of the TypeId
+* Not calling ``NS_OBJECT_ENSURE_REGISTERED ()``
+* Not calling the :cpp:func:`SetParent ()` method,
+  or calling it with the wrong type.
+* Not calling the :cpp:func:`AddConstructor ()` method,
+  or calling it with the wrong type.
+* Introducing a typographical error in the name of the :cpp:class:`TypeId`
+  in its constructor.
+* Not using the fully-qualified C++ typename of the enclosing C++ class as the
+  name of the :cpp:class:`TypeId`.  Note that ``"ns3::"`` is required.
 
-None of these mistakes can be detected by the |ns3| codebase so, users
+None of these mistakes can be detected by the |ns3| codebase, so users
 are advised to check carefully multiple times that they got these right.
 
-Adding new class type to the attribute system
-*********************************************
+New AttributeValue Type
+=======================
 
 From the perspective of the user who writes a new class in the system and wants
-to hook it in to the attribute system, there is mainly the matter of writing the
+it to be accessible as an attribute, there is mainly the matter of writing the
 conversions to/from strings and attribute values.  Most of this can be
-copy/pasted with macro-ized code.  For instance, consider class declaration for
-Rectangle in the ``src/mobility/model`` directory:
+copy/pasted with macro-ized code.  For instance, consider a class declaration
+for :cpp:class:`Rectangle` in the ``src/mobility/model`` directory:
 
-Header file
-+++++++++++
+Header File
+~~~~~~~~~~~
 
 ::
 
@@ -613,8 +789,8 @@
 
     ATTRIBUTE_HELPER_HEADER (Rectangle);
 
-Implementation file
-+++++++++++++++++++
+Implementation File
+~~~~~~~~~~~~~~~~~~~
 
 In the class definition (``.cc`` file), the code looks like this::
 
@@ -643,31 +819,33 @@
     }
 
 These stream operators simply convert from a string representation of the
-Rectangle ("xMin|xMax|yMin|yMax") to the underlying Rectangle, and the modeler
+Rectangle (``"xMin|xMax|yMin|yMax"``) to the underlying Rectangle.  The modeler
 must specify these operators and the string syntactical representation of an
 instance of the new class.
 
 ConfigStore
 ***********
 
-The ConfigStore is a specialized database for attribute values and 
-default values.  Although it is a separately maintained module in
+Values for |ns3| attributes can be stored in an ASCII or XML text file
+and loaded into a future simulation run.  This feature is known as the
+|ns3| ConfigStore.  The :cpp:class:`ConfigStore` is a specialized database for attribute values and default values.
+
+Although it is a separately maintained module in the
 ``src/config-store/`` directory, we document it here because of its 
 sole dependency on |ns3| core module and attributes.
 
-Values for |ns3| attributes can be stored in an ASCII or XML text file
-and loaded into a future simulation.  This feature is known as the
-|ns3| ConfigStore.  We can explore this system by using an example from
+We can explore this system by using an example from
 ``src/config-store/examples/config-store-save.cc``.
 
-First, all users must include the following statement::
+First, all users of the :cpp:class:`ConfigStore` must include
+the following statement::
 
     #include "ns3/config-store-module.h"
 
-Next, this program adds a sample object A to show how the system
-is extended::
+Next, this program adds a sample object :cpp:class:`ConfigExample`
+to show how the system is extended::
 
-    class A : public Object
+    class ConfigExample : public Object
     {
     public:
       static TypeId GetTypeId (void) {
@@ -683,42 +861,48 @@
       int16_t m_int16;
     };
     
-    NS_OBJECT_ENSURE_REGISTERED (A);
+    NS_OBJECT_ENSURE_REGISTERED (ConfigExample);
 
 Next, we use the Config subsystem to override the defaults in a couple of
 ways::
      
-      Config::SetDefault ("ns3::A::TestInt16", IntegerValue (-5));
+      Config::SetDefault ("ns3::ConfigExample::TestInt16", IntegerValue (-5));
     
-      Ptr<A> a_obj = CreateObject<A> ();
-      NS_ABORT_MSG_UNLESS (a_obj->m_int16 == -5, "Cannot set A's integer attribute via Config::SetDefault");
+      Ptr<ConfigExample> a_obj = CreateObject<ConfigExample> ();
+      NS_ABORT_MSG_UNLESS (a_obj->m_int16 == -5,
+                           "Cannot set ConfigExample's integer attribute via Config::SetDefault");
     
-      Ptr<A> a2_obj = CreateObject<A> ();
+      Ptr<ConfigExample> a2_obj = CreateObject<ConfigExample> ();
       a2_obj->SetAttribute ("TestInt16", IntegerValue (-3));
       IntegerValue iv;
       a2_obj->GetAttribute ("TestInt16", iv);
-      NS_ABORT_MSG_UNLESS (iv.Get () == -3, "Cannot set A's integer attribute via SetAttribute");
+      NS_ABORT_MSG_UNLESS (iv.Get () == -3,
+                           "Cannot set ConfigExample's integer attribute via SetAttribute");
     
 The next statement is necessary to make sure that (one of) the objects
 created is rooted in the configuration namespace as an object instance.
-This normally happens when you aggregate objects to ns3::Node or ns3::Channel
+This normally happens when you aggregate objects to a :cpp:class:`ns3::Node`
+or :cpp:class:`ns3::Channel` instance,
 but here, since we are working at the core level, we need to create a
 new root namespace object::
 
       Config::RegisterRootNamespaceObject (a2_obj);
 
+Writing
++++++++
+      
 Next, we want to output the configuration store.  The examples show how
 to do it in two formats, XML and raw text.  In practice, one should perform
-this step just before calling ``Simulator::Run ()``;  it will allow the
-configuration to be saved just before running the simulation.
+this step just before calling :cpp:func:`Simulator::Run ()` to save the
+final configuration just before running the simulation.
 
-There are three attributes that govern the behavior of the ConfigStore: "Mode",
-"Filename", and "FileFormat".  The Mode (default "None") configures whether
-|ns3| should load configuration from a previously saved file (specify
-"Mode=Load") or save it to a file (specify "Mode=Save").  The Filename (default
-"") is where the ConfigStore should store its output data.  The FileFormat
-(default "RawText") governs whether the ConfigStore format is Xml or RawText
-format.
+There are three Attributes that govern the behavior of the ConfigStore:
+``"Mode"``, ``"Filename"``, and ``"FileFormat"``.  The Mode (default ``"None"``)
+configures whether |ns3| should load configuration from a previously saved file
+(specify ``"Mode=Load"``) or save it to a file (specify ``"Mode=Save"``).
+The Filename (default ``""``) is where the ConfigStore should read or write
+its data.  The FileFormat (default ``"RawText"``) governs whether
+the ConfigStore format is plain text or Xml (``"FileFormat=Xml"``)
 
 The example shows::
 
@@ -743,10 +927,10 @@
     
 Note the placement of these statements just prior to the 
 :cpp:func:`Simulator::Run ()` statement.  This output logs all of the
-values in place just prior to starting the simulation (i.e. after
+values in place just prior to starting the simulation (*i.e*. after
 all of the configuration has taken place).
 
-After running, you can open the output-attributes.txt file and see:
+After running, you can open the ``output-attributes.txt`` file and see:
 
 .. sourcecode:: text
 
@@ -766,19 +950,19 @@
     default ns3::ConfigStore::Mode "Save"
     default ns3::ConfigStore::Filename "output-attributes.txt"
     default ns3::ConfigStore::FileFormat "RawText"
-    default ns3::A::TestInt16 "-5"
+    default ns3::ConfigExample::TestInt16 "-5"
     global RngSeed "1"
     global RngRun "1"
     global SimulatorImplementationType "ns3::DefaultSimulatorImpl"
     global SchedulerType "ns3::MapScheduler"
     global ChecksumEnabled "false"
-    value /$ns3::A/TestInt16 "-3"
+    value /$ns3::ConfigExample/TestInt16 "-3"
 
 In the above, all of the default values for attributes for the core 
 module are shown.  Then, all the values for the |ns3| global values
-are recorded.  Finally, the value of the instance of A that was rooted
-in the configuration namespace is shown.  In a real ns-3 program, many
-more models, attributes, and defaults would be shown.
+are recorded.  Finally, the value of the instance of :cpp:class:`ConfigExample`
+that was rooted in the configuration namespace is shown.  In a real
+|ns3| program, many more models, attributes, and defaults would be shown.
 
 An XML version also exists in ``output-attributes.xml``:
 
@@ -802,20 +986,23 @@
      <default name="ns3::ConfigStore::Mode" value="Save"/>
      <default name="ns3::ConfigStore::Filename" value="output-attributes.xml"/>
      <default name="ns3::ConfigStore::FileFormat" value="Xml"/>
-     <default name="ns3::A::TestInt16" value="-5"/>
+     <default name="ns3::ConfigExample::TestInt16" value="-5"/>
      <global name="RngSeed" value="1"/>
      <global name="RngRun" value="1"/>
      <global name="SimulatorImplementationType" value="ns3::DefaultSimulatorImpl"/>
      <global name="SchedulerType" value="ns3::MapScheduler"/>
      <global name="ChecksumEnabled" value="false"/>
-     <value path="/$ns3::A/TestInt16" value="-3"/>
+     <value path="/$ns3::ConfigExample/TestInt16" value="-3"/>
     </ns3>
     
 This file can be archived with your simulation script and output data.
 
-Next, we discuss using this to configure simulations via an input
-configuration file.  There are a couple of key differences when
-compared to use for logging the final simulation configuration.  First, we
+Reading
++++++++
+
+Next, we discuss configuring simulations *via* a stored input
+configuration file.  There are a couple of key differences
+compared to writing the final simulation configuration.  First, we
 need to place statements such as these at the beginning of the program,
 before simulation configuration statements are written (so the values
 are registered before being used in object construction).
@@ -828,27 +1015,32 @@
       ConfigStore inputConfig;
       inputConfig.ConfigureDefaults ();
 
-Next, note that loading of input configuration data is limited to attribute
-default (i.e. not instance) values, and global values.  Attribute instance
+Next, note that loading of input configuration data is limited to Attribute
+default (*i.e*. not instance) values, and global values.  Attribute instance
 values are not supported because at this stage of the simulation, before
 any objects are constructed, there are no such object instances around.
 (Note, future enhancements to the config store may change this behavior).
 
-Second, while the output of config store state will list everything in
-the database, the input file need only contain the specific values to
-be overridden.  So, one way to use this class for input file configuration
-is to generate an initial configuration using the output (Save) method 
-described above, extract from that configuration file only the elements
-one wishes to change, and move these minimal elements to a new configuration 
-file which can then safely be edited and loaded in a subsequent simulation run. 
+Second, while the output of :cpp:class:`ConfigStore` state
+will list everything in the database, the input file need only contain
+the specific values to be overridden.  So, one way to use this class
+for input file configuration is to generate an initial configuration
+using the output (``"Save"``) ``"Mode"`` described above, extract from
+that configuration file only the elements one wishes to change,
+and move these minimal elements to a new configuration file
+which can then safely be edited and loaded in a subsequent simulation run. 
+
+When the :cpp:class:`ConfigStore` object is instantiated, its attributes
+``"Filename"``, ``"Mode"``, and ``"FileFormat"`` must be set,
+either *via* command-line or *via* program statements.  
 
-When the ConfigStore object is instantiated, its attributes Filename, Mode, and
-FileFormat must be set, either via command-line or via program statements.  
+Reading/Writing Example
++++++++++++++++++++++++
 
 As a more complicated example, let's assume that we want to read in a
-configuration of defaults from an input file named "input-defaults.xml", and
+configuration of defaults from an input file named ``input-defaults.xml``, and
 write out the resulting attributes to a separate file called
-"output-attributes.xml".::
+``output-attributes.xml``.::
 
     #include "ns3/config-store-module.h"
     ...
@@ -862,8 +1054,8 @@
       inputConfig.ConfigureDefaults ();
       
       //
-      // Allow the user to override any of the defaults and the above Bind() at
-      // run-time, via command-line arguments
+      // Allow the user to override any of the defaults and the above Bind () at
+      // run-time, viacommand-line arguments
       //
       CommandLine cmd;
       cmd.Parse (argc, argv);
@@ -879,15 +1071,15 @@
       Simulator::Run ();
     }
 
-GTK-based ConfigStore
-+++++++++++++++++++++
+ConfigStore GUI
++++++++++++++++
 
 There is a GTK-based front end for the ConfigStore.  This allows users to use a
 GUI to access and change variables.  Screenshots of this feature are available
 in the `|ns3| Overview <http://www.nsnam.org/docs/ns-3-overview.pdf>`_
 presentation.
 
-To use this feature, one must install libgtk and libgtk-dev; an example
+To use this feature, one must install ``libgtk`` and ``libgtk-dev``; an example
 Ubuntu installation command is:
 
 .. sourcecode:: bash
@@ -917,7 +1109,7 @@
 is rerun.
 
 Usage is almost the same as the non-GTK-based version, but there
-are no ConfigStore attributes involved::
+are no :cpp:class:`ConfigStore` attributes involved::
 
   // Invoke just before entering Simulator::Run ()
   GtkConfigStore config;
@@ -932,6 +1124,6 @@
 +++++++++++
 There are a couple of possible improvements:
 
-* save a unique version number with date and time at start of file
-* save rng initial seed somewhere.
-* make each RandomVariable serialize its own initial seed and re-read it later
+* Save a unique version number with date and time at start of file.
+* Save rng initial seed somewhere.
+* Make each RandomVariable serialize its own initial seed and re-read it later.
diff -Naur ns-3.20/doc/manual/source/conf.py ns-3.21/doc/manual/source/conf.py
--- ns-3.20/doc/manual/source/conf.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/manual/source/conf.py	2014-09-17 20:03:14.000000000 -0700
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.20'
+version = 'ns-3.21'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.20'
+release = 'ns-3.21'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.20/doc/models/Makefile ns-3.21/doc/models/Makefile
--- ns-3.20/doc/models/Makefile	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/models/Makefile	2014-09-17 20:03:14.000000000 -0700
@@ -58,6 +58,7 @@
 	$(SRC)/internet/doc/ipv6.rst \
 	$(SRC)/internet/doc/routing-overview.rst \
 	$(SRC)/internet/doc/tcp.rst \
+	$(SRC)/internet/doc/codel.rst \
 	$(SRC)/mobility/doc/mobility.rst \
 	$(SRC)/olsr/doc/olsr.rst \
 	$(SRC)/openflow/doc/openflow-switch.rst \
@@ -75,7 +76,6 @@
 	$(SRC)/stats/doc/data-collection.rst \
 	$(SRC)/stats/doc/probe.rst \
 	$(SRC)/stats/doc/scope-and-limitations.rst \
-	$(SRC)/stats/doc/statistics.rst \
 	$(SRC)/netanim/doc/animation.rst \
 	$(SRC)/flow-monitor/doc/flow-monitor.rst \
 	$(SRC)/wave/doc/wave.rst \
@@ -176,6 +176,32 @@
 	$(SRC)/lte/doc/source/figures/fading_vehicular.png \
 	$(SRC)/lte/doc/source/figures/fading_urban_3kmph.pdf \
 	$(SRC)/lte/doc/source/figures/fading_urban_3kmph.png \
+	$(SRC)/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png \
+	$(SRC)/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png \
+	$(SRC)/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png \
+	$(SRC)/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png \
+	$(SRC)/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png \
+	$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf \
+	$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png \
+	$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf \
+	$(SRC)/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png \
+	$(SRC)/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/ffr-distributed-scheme.png \
+	$(SRC)/lte/doc/source/figures/ffr-distributed-scheme.pdf \
+	$(SRC)/lte/doc/source/figures/lte-fr-soft-1-rem.png \
+	$(SRC)/lte/doc/source/figures/lte-fr-soft-1-rem.pdf \
+	$(SRC)/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png \
+	$(SRC)/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-1-rem.png \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-1-rem.pdf \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-2-rem.png \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-2-rem.pdf \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-3-rem.png \
+	$(SRC)/lte/doc/source/figures/lte-fr-hard-3-rem.pdf \
 	$(SRC)/lte/doc/source/figures/MCS_1_4.pdf \
 	$(SRC)/lte/doc/source/figures/MCS_1_4.png \
 	$(SRC)/lte/doc/source/figures/MCS_5_8.pdf \
@@ -200,6 +226,10 @@
 	$(SRC)/lte/doc/source/figures/MCS_16_test.pdf \
 	$(SRC)/lte/doc/source/figures/miesm_scheme.pdf \
 	$(SRC)/lte/doc/source/figures/miesm_scheme.png \
+	$(SRC)/lte/doc/source/figures/lte-dl-power-control.png \
+	$(SRC)/lte/doc/source/figures/lte-dl-power-control.pdf \
+	$(SRC)/lte/doc/source/figures/lte-ffr-scheduling.png \
+	$(SRC)/lte/doc/source/figures/lte-ffr-scheduling.pdf \
 	$(SRC)/lte/doc/source/figures/lte-handover-campaign-rem.pdf \
 	$(SRC)/lte/doc/source/figures/lte-handover-campaign-rem.png \
 	$(SRC)/lte/doc/source/figures/lte-legacy-handover-algorithm.pdf \
diff -Naur ns-3.20/doc/models/source/conf.py ns-3.21/doc/models/source/conf.py
--- ns-3.20/doc/models/source/conf.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/models/source/conf.py	2014-09-17 20:03:14.000000000 -0700
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.20'
+version = 'ns-3.21'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.20'
+release = 'ns-3.21'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.20/doc/models/source/internet-models.rst ns-3.21/doc/models/source/internet-models.rst
--- ns-3.20/doc/models/source/internet-models.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/models/source/internet-models.rst	2014-09-17 20:03:14.000000000 -0700
@@ -8,3 +8,4 @@
    ipv6
    routing-overview
    tcp
+   codel
diff -Naur ns-3.20/doc/tutorial/source/conceptual-overview.rst ns-3.21/doc/tutorial/source/conceptual-overview.rst
--- ns-3.20/doc/tutorial/source/conceptual-overview.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/tutorial/source/conceptual-overview.rst	2014-09-17 20:03:14.000000000 -0700
@@ -743,6 +743,69 @@
     return 0;
   }
 
+When the simulator will stop?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+|ns3| is a Discrete Event (DE) simulator. In such a simulator, each event is
+associated with its execution time, and the simulation proceeds by executing
+events in the temporal order of simulation time.  Events may cause future
+events to be scheduled (for example, a timer may reschedule itself to
+expire at the next interval).
+
+The initial events are usually triggered by each object, e.g., IPv6 will 
+schedule Router Advertisements, Neighbor Solicitations, etc., 
+an Application schedule the first packet sending event, etc.
+
+When an event is processed, it may generate zero, one or more events.
+As a simulation executes, events are consumed, but more events may (or may
+not) be generated.
+The simulation will stop automatically when no further events are in the 
+event queue, or when a special Stop event is found. The Stop event is 
+created through the 
+``Simulator::Stop (stopTime);`` function.
+
+There is a typical case where ``Simulator::Stop`` is absolutely necessary 
+to stop the simulation: when there is a self-sustaining event.
+Self-sustaining (or recurring) events are events that always reschedule 
+themselves. As a consequence, they always keep the event queue non-empty.
+
+There are many protocols and modules containing recurring events, e.g.:
+
+* FlowMonitor - periodic check for lost packets
+* RIPng - periodic broadcast of routing tables update
+* etc.
+
+In these cases, ``Simulator::Stop`` is necessary to gracefully stop the 
+simulation.  In addition, when |ns3| is in emulation mode, the 
+``RealtimeSimulator`` is used to keep the simulation clock aligned with 
+the machine clock, and ``Simulator::Stop`` is necessary to stop the 
+process.  
+
+Many of the simulation programs in the tutorial do not explicitly call
+``Simulator::Stop``, since the event queue will automatically run out
+of events.  However, these programs will also accept a call to 
+``Simulator::Stop``.  For example, the following additional statement
+in the first example program will schedule an explicit stop at 11 seconds: 
+
+::
+
+  +  Simulator::Stop (Seconds (11.0));
+     Simulator::Run ();
+     Simulator::Destroy ();
+     return 0;
+   }
+
+The above wil not actually change the behavior of this program, since
+this particular simulation naturally ends after 10 seconds.  But if you 
+were to change the stop time in the above statement from 11 seconds to 1 
+second, you would notice that the simulation stops before any output is 
+printed to the screen (since the output occurs around time 2 seconds of 
+simulation time).
+
+It is important to call ``Simulator::Stop`` *before* calling 
+``Simulator::Run``; otherwise, ``Simulator::Run`` may never return control
+to the main program to execute the stop!
+
 Building Your Script
 ++++++++++++++++++++
 We have made it trivial to build your simple scripts.  All you have to do is 
diff -Naur ns-3.20/doc/tutorial/source/conf.py ns-3.21/doc/tutorial/source/conf.py
--- ns-3.20/doc/tutorial/source/conf.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/tutorial/source/conf.py	2014-09-17 20:03:14.000000000 -0700
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.20'
+version = 'ns-3.21'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.20'
+release = 'ns-3.21'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -Naur ns-3.20/doc/tutorial-pt-br/source/conf.py ns-3.21/doc/tutorial-pt-br/source/conf.py
--- ns-3.20/doc/tutorial-pt-br/source/conf.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/doc/tutorial-pt-br/source/conf.py	2014-09-17 20:03:14.000000000 -0700
@@ -50,9 +50,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'ns-3.20'
+version = 'ns-3.21'
 # The full version, including alpha/beta/rc tags.
-release = 'ns-3.20'
+release = 'ns-3.21'
 
 # The language for content autogenerated by . Refer to babel documentation
 # for a list of supported languages.
diff -Naur ns-3.20/examples/energy/energy-model-with-harvesting-example.cc ns-3.21/examples/energy/energy-model-with-harvesting-example.cc
--- ns-3.20/examples/energy/energy-model-with-harvesting-example.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/examples/energy/energy-model-with-harvesting-example.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,337 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+/**
+ *
+ * This example extends the energy model example by connecting a basic energy
+ * harvester to the nodes.
+ *
+ * The example considers a simple communication link between a source and a
+ * destination node, where the source node sends a packet to the destination
+ * every 1 second. Each node is powered by a BasiEnergySource, which is recharged
+ * by a BasicEnergyHarvester, and the WiFi radio consumes energy for the transmission/
+ * reception of the packets.
+ *
+ * For the receiver node, the example prints the energy consumption of the WiFi radio,
+ * the power harvested by the energy harvester and the residual energy in the
+ * energy source.
+ *
+ * The nodes initial energy is set to 1.0 J, the transmission and reception entail a
+ * current consumption of 0.0174 A and 0.0197 A, respectively (default values in
+ * WifiRadioEnergyModel). The energy harvester provides an amount of power that varies
+ * according to a random variable uniformly distributed in [0 0.1] W, and is updated
+ * every 1 s. The energy source voltage is 3 V (default value in BasicEnergySource) and
+ * the residual energy level is updated every 1 second (default value).
+ *
+ * The simulation start at time 0 and it is hard stopped at time 10 seconds. Given the
+ * packet size and the distance between the nodes, each transmission lasts 0.0023s.
+ * As a result, the destination node receives 10 messages.
+ *
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/config-store-module.h"
+#include "ns3/wifi-module.h"
+#include "ns3/energy-module.h"
+#include "ns3/internet-module.h"
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <string>
+
+NS_LOG_COMPONENT_DEFINE ("EnergyWithHarvestingExample");
+
+using namespace ns3;
+
+static inline std::string
+PrintReceivedPacket (Address& from)
+{
+  InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (from);
+
+  std::ostringstream oss;
+  oss << "--\nReceived one packet! Socket: " << iaddr.GetIpv4 ()
+      << " port: " << iaddr.GetPort ()
+      << " at time = " << Simulator::Now ().GetSeconds ()
+      << "\n--";
+
+  return oss.str ();
+}
+
+/**
+ * \param socket Pointer to socket.
+ *
+ * Packet receiving sink.
+ */
+void
+ReceivePacket (Ptr<Socket> socket)
+{
+  Ptr<Packet> packet;
+  Address from;
+  while ((packet = socket->RecvFrom (from)))
+    {
+      if (packet->GetSize () > 0)
+        {
+          NS_LOG_UNCOND (PrintReceivedPacket (from));
+        }
+    }
+}
+
+/**
+ * \param socket Pointer to socket.
+ * \param pktSize Packet size.
+ * \param n Pointer to node.
+ * \param pktCount Number of packets to generate.
+ * \param pktInterval Packet sending interval.
+ *
+ * Traffic generator.
+ */
+static void
+GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, Ptr<Node> n,
+                 uint32_t pktCount, Time pktInterval)
+{
+  if (pktCount > 0)
+    {
+      socket->Send (Create<Packet> (pktSize));
+      Simulator::Schedule (pktInterval, &GenerateTraffic, socket, pktSize, n,
+                           pktCount - 1, pktInterval);
+    }
+  else
+    {
+      socket->Close ();
+    }
+}
+
+/// Trace function for remaining energy at node.
+void
+RemainingEnergy (double oldValue, double remainingEnergy)
+{
+  std::cout << Simulator::Now ().GetSeconds ()
+            << "s Current remaining energy = " << remainingEnergy << "J" << std::endl;
+}
+
+/// Trace function for total energy consumption at node.
+void
+TotalEnergy (double oldValue, double totalEnergy)
+{
+  std::cout << Simulator::Now ().GetSeconds ()
+            << "s Total energy consumed by radio = " << totalEnergy << "J" << std::endl;
+}
+
+/// Trace function for the power harvested by the energy harvester.
+void
+HarvestedPower (double oldValue, double harvestedPower)
+{
+  std::cout << Simulator::Now ().GetSeconds ()
+            << "s Current harvested power = " << harvestedPower << " W" << std::endl;
+}
+
+/// Trace function for the total energy harvested by the node.
+void
+TotalEnergyHarvested (double oldValue, double TotalEnergyHarvested)
+{
+  std::cout << Simulator::Now ().GetSeconds ()
+            << "s Total energy harvested by harvester = "
+            << TotalEnergyHarvested << " J" << std::endl;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  /*
+  LogComponentEnable ("EnergySource", LOG_LEVEL_DEBUG);
+  LogComponentEnable ("BasicEnergySource", LOG_LEVEL_DEBUG);
+  LogComponentEnable ("DeviceEnergyModel", LOG_LEVEL_DEBUG);
+  LogComponentEnable ("WifiRadioEnergyModel", LOG_LEVEL_DEBUG);
+  LogComponentEnable ("EnergyHarvester", LOG_LEVEL_DEBUG);
+  LogComponentEnable ("BasicEnergyHarvester", LOG_LEVEL_DEBUG);
+  */
+
+  std::string phyMode ("DsssRate1Mbps");
+  double Prss = -80;            // dBm
+  uint32_t PpacketSize = 200;   // bytes
+  bool verbose = false;
+
+  // simulation parameters
+  uint32_t numPackets = 10000;  // number of packets to send
+  double interval = 1;          // seconds
+  double startTime = 0.0;       // seconds
+  double distanceToRx = 100.0;  // meters
+  /*
+   * This is a magic number used to set the transmit power, based on other
+   * configuration.
+   */
+  double offset = 81;
+  
+  // Energy Harvester variables
+  double harvestingUpdateInterval = 1;  // seconds
+
+  CommandLine cmd;
+  cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);
+  cmd.AddValue ("Prss", "Intended primary RSS (dBm)", Prss);
+  cmd.AddValue ("PpacketSize", "size of application packet sent", PpacketSize);
+  cmd.AddValue ("numPackets", "Total number of packets to send", numPackets);
+  cmd.AddValue ("startTime", "Simulation start time", startTime);
+  cmd.AddValue ("distanceToRx", "X-Axis distance between nodes", distanceToRx);
+  cmd.AddValue ("verbose", "Turn on all device log components", verbose);
+  cmd.Parse (argc, argv);
+
+  // Convert to time object
+  Time interPacketInterval = Seconds (interval);
+
+  // disable fragmentation for frames below 2200 bytes
+  Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold",
+                      StringValue ("2200"));
+  // turn off RTS/CTS for frames below 2200 bytes
+  Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold",
+                      StringValue ("2200"));
+  // Fix non-unicast data rate to be the same as that of unicast
+  Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",
+                      StringValue (phyMode));
+
+  NodeContainer c;
+  c.Create (2);     // create 2 nodes
+  NodeContainer networkNodes;
+  networkNodes.Add (c.Get (0));
+  networkNodes.Add (c.Get (1));
+
+  // The below set of helpers will help us to put together the wifi NICs we want
+  WifiHelper wifi;
+  if (verbose)
+    {
+      wifi.EnableLogComponents ();
+    }
+  wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
+
+  /** Wifi PHY **/
+  /***************************************************************************/
+  YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
+  wifiPhy.Set ("RxGain", DoubleValue (-10));
+  wifiPhy.Set ("TxGain", DoubleValue (offset + Prss));
+  wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0));
+  /***************************************************************************/
+
+  /** wifi channel **/
+  YansWifiChannelHelper wifiChannel;
+  wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
+  wifiChannel.AddPropagationLoss ("ns3::FriisPropagationLossModel");
+  // create wifi channel
+  Ptr<YansWifiChannel> wifiChannelPtr = wifiChannel.Create ();
+  wifiPhy.SetChannel (wifiChannelPtr);
+
+  /** MAC layer **/
+  // Add a non-QoS upper MAC, and disable rate control
+  NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
+  wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",
+                                StringValue (phyMode), "ControlMode",
+                                StringValue (phyMode));
+  // Set it to ad-hoc mode
+  wifiMac.SetType ("ns3::AdhocWifiMac");
+
+  /** install PHY + MAC **/
+  NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, networkNodes);
+
+  /** mobility **/
+  MobilityHelper mobility;
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
+  positionAlloc->Add (Vector (2 * distanceToRx, 0.0, 0.0));
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (c);
+
+  /** Energy Model **/
+  /***************************************************************************/
+  /* energy source */
+  BasicEnergySourceHelper basicSourceHelper;
+  // configure energy source
+  basicSourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (1.0));
+  // install source
+  EnergySourceContainer sources = basicSourceHelper.Install (c);
+  /* device energy model */
+  WifiRadioEnergyModelHelper radioEnergyHelper;
+  // configure radio energy model
+  radioEnergyHelper.Set ("TxCurrentA", DoubleValue (0.0174));
+  radioEnergyHelper.Set ("RxCurrentA", DoubleValue (0.0197));
+  // install device model
+  DeviceEnergyModelContainer deviceModels = radioEnergyHelper.Install (devices, sources);
+
+  /* energy harvester */
+  BasicEnergyHarvesterHelper basicHarvesterHelper;
+  // configure energy harvester
+  basicHarvesterHelper.Set ("PeriodicHarvestedPowerUpdateInterval", TimeValue (Seconds (harvestingUpdateInterval)));
+  basicHarvesterHelper.Set ("HarvestablePower", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=0.1]"));
+  // install harvester on all energy sources
+  EnergyHarvesterContainer harvesters = basicHarvesterHelper.Install (sources);
+  /***************************************************************************/
+
+  /** Internet stack **/
+  InternetStackHelper internet;
+  internet.Install (networkNodes);
+
+  Ipv4AddressHelper ipv4;
+  NS_LOG_INFO ("Assign IP Addresses.");
+  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+  Ipv4InterfaceContainer i = ipv4.Assign (devices);
+
+  TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+  Ptr<Socket> recvSink = Socket::CreateSocket (networkNodes.Get (1), tid);  // node 1, Destination
+  InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
+  recvSink->Bind (local);
+  recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
+
+  Ptr<Socket> source = Socket::CreateSocket (networkNodes.Get (0), tid);    // node 0, Source
+  InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetBroadcast (), 80);
+  source->SetAllowBroadcast (true);
+  source->Connect (remote);
+
+  /** connect trace sources **/
+  /***************************************************************************/
+  // all traces are connected to node 1 (Destination)
+  // energy source
+  Ptr<BasicEnergySource> basicSourcePtr = DynamicCast<BasicEnergySource> (sources.Get (1));
+  basicSourcePtr->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback (&RemainingEnergy));
+  // device energy model
+  Ptr<DeviceEnergyModel> basicRadioModelPtr =
+    basicSourcePtr->FindDeviceEnergyModels ("ns3::WifiRadioEnergyModel").Get (0);
+  NS_ASSERT (basicRadioModelPtr != 0);
+  basicRadioModelPtr->TraceConnectWithoutContext ("TotalEnergyConsumption", MakeCallback (&TotalEnergy));
+  // energy harvester
+  Ptr<BasicEnergyHarvester> basicHarvesterPtr = DynamicCast<BasicEnergyHarvester> (harvesters.Get (1));
+  basicHarvesterPtr->TraceConnectWithoutContext ("HarvestedPower", MakeCallback (&HarvestedPower));
+  basicHarvesterPtr->TraceConnectWithoutContext ("TotalEnergyHarvested", MakeCallback (&TotalEnergyHarvested));
+  /***************************************************************************/
+
+
+  /** simulation setup **/
+  // start traffic
+  Simulator::Schedule (Seconds (startTime), &GenerateTraffic, source, PpacketSize,
+                       networkNodes.Get (0), numPackets, interPacketInterval);
+
+  Simulator::Stop (Seconds (10.0));
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  return 0;
+}
diff -Naur ns-3.20/examples/energy/wscript ns-3.21/examples/energy/wscript
--- ns-3.20/examples/energy/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/energy/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -3,3 +3,5 @@
 def build(bld):
     obj = bld.create_ns3_program('energy-model-example', ['core', 'mobility', 'wifi', 'energy', 'internet'])
     obj.source = 'energy-model-example.cc'
+    obj = bld.create_ns3_program('energy-model-with-harvesting-example', ['core', 'mobility', 'wifi', 'energy', 'internet'])
+    obj.source = 'energy-model-with-harvesting-example.cc'
\ No newline at end of file
diff -Naur ns-3.20/examples/ipv6/wscript ns-3.21/examples/ipv6/wscript
--- ns-3.20/examples/ipv6/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/ipv6/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('icmpv6-redirect', ['csma', 'internet'])
+    obj = bld.create_ns3_program('icmpv6-redirect', ['csma', 'internet', 'applications'])
     obj.source = 'icmpv6-redirect.cc'
 
-    obj = bld.create_ns3_program('ping6', ['csma', 'internet'])
+    obj = bld.create_ns3_program('ping6', ['csma', 'internet', 'applications'])
     obj.source = 'ping6.cc'
     
-    obj = bld.create_ns3_program('radvd', ['csma', 'internet'])
+    obj = bld.create_ns3_program('radvd', ['csma', 'internet', 'applications'])
     obj.source = 'radvd.cc'
 
     obj = bld.create_ns3_program('radvd-two-prefix', ['csma', 'internet', 'applications'])
@@ -16,15 +16,15 @@
     obj = bld.create_ns3_program('test-ipv6', ['point-to-point', 'internet'])
     obj.source = 'test-ipv6.cc'
     
-    obj = bld.create_ns3_program('fragmentation-ipv6', ['csma', 'internet'])
+    obj = bld.create_ns3_program('fragmentation-ipv6', ['csma', 'internet', 'applications'])
     obj.source = 'fragmentation-ipv6.cc'
     
-    obj = bld.create_ns3_program('fragmentation-ipv6-two-MTU', ['csma', 'internet'])
+    obj = bld.create_ns3_program('fragmentation-ipv6-two-MTU', ['csma', 'internet', 'applications'])
     obj.source = 'fragmentation-ipv6-two-MTU.cc'
 
-    obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet'])
+    obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet', 'applications'])
     obj.source = 'loose-routing-ipv6.cc'
 
-    obj = bld.create_ns3_program('wsn-ping6', ['lr-wpan', 'internet', 'sixlowpan', 'mobility'])
+    obj = bld.create_ns3_program('wsn-ping6', ['lr-wpan', 'internet', 'sixlowpan', 'mobility', 'applications'])
     obj.source = 'wsn-ping6.cc'
 
diff -Naur ns-3.20/examples/naming/wscript ns-3.21/examples/naming/wscript
--- ns-3.20/examples/naming/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/naming/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,5 +1,5 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('object-names', ['core', 'csma', 'internet'])
+    obj = bld.create_ns3_program('object-names', ['core', 'csma', 'internet', 'applications'])
     obj.source = 'object-names.cc'
diff -Naur ns-3.20/examples/realtime/wscript ns-3.21/examples/realtime/wscript
--- ns-3.20/examples/realtime/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/realtime/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('realtime-udp-echo', ['csma', 'internet'])
+    obj = bld.create_ns3_program('realtime-udp-echo', ['csma', 'internet', 'applications'])
     obj.source = 'realtime-udp-echo.cc'
 
     bld.register_ns3_script('realtime-udp-echo.py', ['csma', 'internet', 'applications'])
diff -Naur ns-3.20/examples/routing/wscript ns-3.21/examples/routing/wscript
--- ns-3.20/examples/routing/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/routing/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,19 +2,19 @@
 
 def build(bld):
     obj = bld.create_ns3_program('dynamic-global-routing',
-                                 ['point-to-point', 'csma', 'internet'])
+                                 ['point-to-point', 'csma', 'internet', 'applications'])
     obj.source = 'dynamic-global-routing.cc'
 
     obj = bld.create_ns3_program('static-routing-slash32',
-                                 ['point-to-point', 'csma', 'internet'])
+                                 ['point-to-point', 'csma', 'internet', 'applications'])
     obj.source = 'static-routing-slash32.cc'
 
     obj = bld.create_ns3_program('global-routing-slash32',
-                                 ['point-to-point', 'csma', 'internet'])
+                                 ['point-to-point', 'csma', 'internet', 'applications'])
     obj.source = 'global-routing-slash32.cc'
 
     obj = bld.create_ns3_program('global-injection-slash32',
-                                 ['point-to-point', 'csma', 'internet'])
+                                 ['point-to-point', 'csma', 'internet', 'applications'])
     obj.source = 'global-injection-slash32.cc'
 
     obj = bld.create_ns3_program('simple-global-routing',
@@ -25,12 +25,12 @@
                                  ['point-to-point', 'internet', 'applications'])
     obj.source = 'simple-alternate-routing.cc'
 
-    obj = bld.create_ns3_program( 'mixed-global-routing',
-                                  ['point-to-point', 'internet', 'csma'])
+    obj = bld.create_ns3_program('mixed-global-routing',
+                                 ['point-to-point', 'internet', 'csma', 'applications'])
     obj.source = 'mixed-global-routing.cc'
 
     obj = bld.create_ns3_program('simple-routing-ping6',
-      ['csma', 'internet'])
+                                 ['csma', 'internet', 'applications'])
     obj.source = 'simple-routing-ping6.cc'
 
     obj = bld.create_ns3_program('manet-routing-compare',
diff -Naur ns-3.20/examples/socket/wscript ns-3.21/examples/socket/wscript
--- ns-3.20/examples/socket/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/socket/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -4,7 +4,7 @@
     obj = bld.create_ns3_program('socket-bound-static-routing', ['network', 'csma', 'point-to-point', 'internet'])
     obj.source = 'socket-bound-static-routing.cc'
 
-    obj = bld.create_ns3_program('socket-bound-tcp-static-routing', ['network', 'csma', 'point-to-point', 'internet'])
+    obj = bld.create_ns3_program('socket-bound-tcp-static-routing', ['network', 'csma', 'point-to-point', 'internet', 'applications'])
     obj.source = 'socket-bound-tcp-static-routing.cc'
 
     obj = bld.create_ns3_program('socket-options-ipv4', ['network', 'csma', 'point-to-point', 'internet'])
diff -Naur ns-3.20/examples/tcp/tcp-variants-comparison.cc ns-3.21/examples/tcp/tcp-variants-comparison.cc
--- ns-3.20/examples/tcp/tcp-variants-comparison.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/tcp/tcp-variants-comparison.cc	2014-09-17 20:03:14.000000000 -0700
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013 ResiliNets, ITTC, University of Kansas 
+ * Copyright (c) 2013 ResiliNets, ITTC, University of Kansas
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -54,92 +54,63 @@
 
 NS_LOG_COMPONENT_DEFINE ("TcpVariantsComparison");
 
-double old_time = 0.0;
-EventId output;
-Time current = Time::FromInteger(3, Time::S);  //Only record cwnd and ssthresh values every 3 seconds
-bool first = true;
+bool firstCwnd = true;
+bool firstSshThr = true;
+Ptr<OutputStreamWrapper> cWndStream;
+Ptr<OutputStreamWrapper> ssThreshStream;
+uint32_t cWndValue;
+uint32_t ssThreshValue;
 
-static void
-OutputTrace ()
-{
- // *stream->GetStream() << newtime << " " << newval << std::endl;
- // old_time = newval;
-}
 
 static void
-CwndTracer (Ptr<OutputStreamWrapper>stream, uint32_t oldval, uint32_t newval)
+CwndTracer (uint32_t oldval, uint32_t newval)
 {
-  double new_time = Simulator::Now().GetSeconds();
-  if (old_time == 0 && first)
-  {
-    double mycurrent = current.GetSeconds();
-    *stream->GetStream() << new_time << " " << mycurrent << " " << newval << std::endl;
-    first = false;
-    output = Simulator::Schedule(current,&OutputTrace);
-  }
-  else
-  {
-    if (output.IsExpired())
+  if (firstCwnd)
     {
-      *stream->GetStream() << new_time << " " << newval << std::endl;
-      output.Cancel();
-      output = Simulator::Schedule(current,&OutputTrace);
+      *cWndStream->GetStream () << "0.0 " << oldval << std::endl;
+      firstCwnd = false;
+    }
+  *cWndStream->GetStream () << Simulator::Now ().GetSeconds () << " " << newval << std::endl;
+  cWndValue = newval;
+
+  if (!firstSshThr)
+    {
+      *ssThreshStream->GetStream () << Simulator::Now ().GetSeconds () << " " << ssThreshValue << std::endl;
     }
-  }
 }
 
 static void
-SsThreshTracer (Ptr<OutputStreamWrapper>stream, uint32_t oldval, uint32_t newval)
+SsThreshTracer (uint32_t oldval, uint32_t newval)
 {
-  double new_time = Simulator::Now().GetSeconds();
-  if (old_time == 0 && first)
-  {
-    double mycurrent = current.GetSeconds();
-    *stream->GetStream() << new_time << " " << mycurrent << " " << newval << std::endl;
-    first = false;
-    output = Simulator::Schedule(current,&OutputTrace);
-  }
-  else
-  {
-    if (output.IsExpired())
+  if (firstSshThr)
     {
-      *stream->GetStream() << new_time << " " << newval << std::endl;
-      output.Cancel();
-      output = Simulator::Schedule(current,&OutputTrace);
+      *ssThreshStream->GetStream () << "0.0 " << oldval << std::endl;
+      firstSshThr = false;
+    }
+  *ssThreshStream->GetStream () << Simulator::Now ().GetSeconds () << " " << newval << std::endl;
+  ssThreshValue = newval;
+
+  if (!firstCwnd)
+    {
+      *cWndStream->GetStream () << Simulator::Now ().GetSeconds () << " " << cWndValue << std::endl;
     }
-  }
 }
 
+
 static void
 TraceCwnd (std::string cwnd_tr_file_name)
 {
   AsciiTraceHelper ascii;
-  if (cwnd_tr_file_name.compare("") == 0)
-     {
-       NS_LOG_DEBUG ("No trace file for cwnd provided");
-       return;
-     }
-  else
-    {
-      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream(cwnd_tr_file_name.c_str());
-      Config::ConnectWithoutContext ("/NodeList/1/$ns3::TcpL4Protocol/SocketList/0/CongestionWindow",MakeBoundCallback (&CwndTracer, stream));
-    }
+  cWndStream = ascii.CreateFileStream (cwnd_tr_file_name.c_str ());
+  Config::ConnectWithoutContext ("/NodeList/1/$ns3::TcpL4Protocol/SocketList/0/CongestionWindow", MakeCallback (&CwndTracer));
 }
 
 static void
-TraceSsThresh(std::string ssthresh_tr_file_name)
+TraceSsThresh (std::string ssthresh_tr_file_name)
 {
   AsciiTraceHelper ascii;
-  if (ssthresh_tr_file_name.compare("") == 0)
-    {
-      NS_LOG_DEBUG ("No trace file for ssthresh provided");
-      return;
-    }
-  else
-    {
-      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream(ssthresh_tr_file_name.c_str());
-      Config::ConnectWithoutContext ("/NodeList/1/$ns3::TcpL4Protocol/SocketList/0/SlowStartThreshold",MakeBoundCallback (&SsThreshTracer, stream));
-    }
+  ssThreshStream = ascii.CreateFileStream (ssthresh_tr_file_name.c_str ());
+  Config::ConnectWithoutContext ("/NodeList/1/$ns3::TcpL4Protocol/SocketList/0/SlowStartThreshold",MakeCallback (&SsThreshTracer));
 }
 
 int main (int argc, char *argv[])
@@ -162,25 +133,25 @@
 
 
   CommandLine cmd;
-  cmd.AddValue("transport_prot", "Transport protocol to use: TcpTahoe, TcpReno, TcpNewReno, TcpWestwood, TcpWestwoodPlus ", transport_prot);
-  cmd.AddValue("error_p", "Packet error rate", error_p);
-  cmd.AddValue("bandwidth", "Bottleneck bandwidth", bandwidth);
-  cmd.AddValue("access_bandwidth", "Access link bandwidth", access_bandwidth);
-  cmd.AddValue("delay", "Access link delay", access_delay);
-  cmd.AddValue("tracing", "Flag to enable/disable tracing", tracing);
-  cmd.AddValue("tr_name", "Name of output trace file", tr_file_name);
-  cmd.AddValue("cwnd_tr_name", "Name of output trace file", cwnd_tr_file_name);
-  cmd.AddValue("ssthresh_tr_name", "Name of output trace file", ssthresh_tr_file_name);
-  cmd.AddValue("data", "Number of Megabytes of data to transmit", data_mbytes);
-  cmd.AddValue("mtu", "Size of IP packets to send in bytes", mtu_bytes);
-  cmd.AddValue("num_flows", "Number of flows", num_flows);
-  cmd.AddValue("duration", "Time to allow flows to run in seconds", duration);
-  cmd.AddValue("run", "Run index (for setting repeatable seeds)", run);
-  cmd.AddValue("flow_monitor", "Enable flow monitor", flow_monitor);
+  cmd.AddValue ("transport_prot", "Transport protocol to use: TcpTahoe, TcpReno, TcpNewReno, TcpWestwood, TcpWestwoodPlus ", transport_prot);
+  cmd.AddValue ("error_p", "Packet error rate", error_p);
+  cmd.AddValue ("bandwidth", "Bottleneck bandwidth", bandwidth);
+  cmd.AddValue ("access_bandwidth", "Access link bandwidth", access_bandwidth);
+  cmd.AddValue ("delay", "Access link delay", access_delay);
+  cmd.AddValue ("tracing", "Flag to enable/disable tracing", tracing);
+  cmd.AddValue ("tr_name", "Name of output trace file", tr_file_name);
+  cmd.AddValue ("cwnd_tr_name", "Name of output trace file", cwnd_tr_file_name);
+  cmd.AddValue ("ssthresh_tr_name", "Name of output trace file", ssthresh_tr_file_name);
+  cmd.AddValue ("data", "Number of Megabytes of data to transmit", data_mbytes);
+  cmd.AddValue ("mtu", "Size of IP packets to send in bytes", mtu_bytes);
+  cmd.AddValue ("num_flows", "Number of flows", num_flows);
+  cmd.AddValue ("duration", "Time to allow flows to run in seconds", duration);
+  cmd.AddValue ("run", "Run index (for setting repeatable seeds)", run);
+  cmd.AddValue ("flow_monitor", "Enable flow monitor", flow_monitor);
   cmd.Parse (argc, argv);
 
-  SeedManager::SetSeed(1);
-  SeedManager::SetRun(run);
+  SeedManager::SetSeed (1);
+  SeedManager::SetRun (run);
 
   // User may find it convenient to enable logging
   //LogComponentEnable("TcpVariantsComparison", LOG_LEVEL_ALL);
@@ -188,12 +159,12 @@
   //LogComponentEnable("DropTailQueue", LOG_LEVEL_ALL);
 
   // Calculate the ADU size
-  Header* temp_header = new Ipv4Header();
-  uint32_t ip_header = temp_header->GetSerializedSize();
+  Header* temp_header = new Ipv4Header ();
+  uint32_t ip_header = temp_header->GetSerializedSize ();
   NS_LOG_LOGIC ("IP Header size is: " << ip_header);
   delete temp_header;
-  temp_header = new TcpHeader();
-  uint32_t tcp_header = temp_header->GetSerializedSize();
+  temp_header = new TcpHeader ();
+  uint32_t tcp_header = temp_header->GetSerializedSize ();
   NS_LOG_LOGIC ("TCP Header size is: " << tcp_header);
   delete temp_header;
   uint32_t tcp_adu_size = mtu_bytes - (ip_header + tcp_header);
@@ -204,22 +175,28 @@
   float stop_time = start_time + duration;
 
   // Select TCP variant
-  if (transport_prot.compare("TcpTahoe") == 0)
-    Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpTahoe::GetTypeId()));
-  else if (transport_prot.compare("TcpReno") == 0)
-    Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpReno::GetTypeId()));
-  else if (transport_prot.compare("TcpNewReno") == 0)
-    Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpNewReno::GetTypeId()));
-  else if (transport_prot.compare("TcpWestwood") == 0)
-    {// the default protocol type in ns3::TcpWestwood is WESTWOOD
-      Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpWestwood::GetTypeId()));
-      Config::SetDefault("ns3::TcpWestwood::FilterType", EnumValue(TcpWestwood::TUSTIN));
-    }
-  else if (transport_prot.compare("TcpWestwoodPlus") == 0)
-    {
-      Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpWestwood::GetTypeId()));
-      Config::SetDefault("ns3::TcpWestwood::ProtocolType", EnumValue(TcpWestwood::WESTWOODPLUS));
-      Config::SetDefault("ns3::TcpWestwood::FilterType", EnumValue(TcpWestwood::TUSTIN));
+  if (transport_prot.compare ("TcpTahoe") == 0)
+    {
+      Config::SetDefault ("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpTahoe::GetTypeId ()));
+    }
+  else if (transport_prot.compare ("TcpReno") == 0)
+    {
+      Config::SetDefault ("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpReno::GetTypeId ()));
+    }
+  else if (transport_prot.compare ("TcpNewReno") == 0)
+    {
+      Config::SetDefault ("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpNewReno::GetTypeId ()));
+    }
+  else if (transport_prot.compare ("TcpWestwood") == 0)
+    { // the default protocol type in ns3::TcpWestwood is WESTWOOD
+      Config::SetDefault ("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpWestwood::GetTypeId ()));
+      Config::SetDefault ("ns3::TcpWestwood::FilterType", EnumValue (TcpWestwood::TUSTIN));
+    }
+  else if (transport_prot.compare ("TcpWestwoodPlus") == 0)
+    {
+      Config::SetDefault ("ns3::TcpL4Protocol::SocketType", TypeIdValue (TcpWestwood::GetTypeId ()));
+      Config::SetDefault ("ns3::TcpWestwood::ProtocolType", EnumValue (TcpWestwood::WESTWOODPLUS));
+      Config::SetDefault ("ns3::TcpWestwood::FilterType", EnumValue (TcpWestwood::TUSTIN));
     }
   else
     {
@@ -231,18 +208,18 @@
   NodeContainer gateways;
   gateways.Create (1);
   NodeContainer sources;
-  sources.Create(num_flows);
+  sources.Create (num_flows);
   NodeContainer sinks;
-  sinks.Create(num_flows);
+  sinks.Create (num_flows);
 
   // Configure the error model
   // Here we use RateErrorModel with packet error rate
-  Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable>();
+  Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable> ();
   uv->SetStream (50);
   RateErrorModel error_model;
-  error_model.SetRandomVariable(uv);
-  error_model.SetUnit(RateErrorModel::ERROR_UNIT_PACKET);
-  error_model.SetRate(error_p);
+  error_model.SetRandomVariable (uv);
+  error_model.SetUnit (RateErrorModel::ERROR_UNIT_PACKET);
+  error_model.SetRate (error_p);
 
   PointToPointHelper UnReLink;
   UnReLink.SetDeviceAttribute ("DataRate", StringValue (bandwidth));
@@ -262,16 +239,16 @@
   LocalLink.SetDeviceAttribute ("DataRate", StringValue (access_bandwidth));
   LocalLink.SetChannelAttribute ("Delay", StringValue (access_delay));
   Ipv4InterfaceContainer sink_interfaces;
-  for (int i=0; i<num_flows; i++)
+  for (int i = 0; i < num_flows; i++)
     {
       NetDeviceContainer devices;
-      devices = LocalLink.Install(sources.Get(i), gateways.Get(0));
-      address.NewNetwork();
+      devices = LocalLink.Install (sources.Get (i), gateways.Get (0));
+      address.NewNetwork ();
       Ipv4InterfaceContainer interfaces = address.Assign (devices);
-      devices = UnReLink.Install(gateways.Get(0), sinks.Get(i));
-      address.NewNetwork();
+      devices = UnReLink.Install (gateways.Get (0), sinks.Get (i));
+      address.NewNetwork ();
       interfaces = address.Assign (devices);
-      sink_interfaces.Add(interfaces.Get(1));
+      sink_interfaces.Add (interfaces.Get (1));
     }
 
   NS_LOG_INFO ("Initialize Global Routing.");
@@ -281,29 +258,29 @@
   Address sinkLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));
   PacketSinkHelper sinkHelper ("ns3::TcpSocketFactory", sinkLocalAddress);
 
-  for(uint16_t i=0; i<sources.GetN(); i++)
+  for (uint16_t i = 0; i < sources.GetN (); i++)
     {
-      AddressValue remoteAddress (InetSocketAddress (sink_interfaces.GetAddress(i, 0), port));
+      AddressValue remoteAddress (InetSocketAddress (sink_interfaces.GetAddress (i, 0), port));
 
-      if (transport_prot.compare("TcpTahoe") == 0
-          || transport_prot.compare("TcpReno") == 0
-          || transport_prot.compare("TcpNewReno") == 0
-          || transport_prot.compare("TcpWestwood") == 0
-          || transport_prot.compare("TcpWestwoodPlus") == 0)
+      if (transport_prot.compare ("TcpTahoe") == 0
+          || transport_prot.compare ("TcpReno") == 0
+          || transport_prot.compare ("TcpNewReno") == 0
+          || transport_prot.compare ("TcpWestwood") == 0
+          || transport_prot.compare ("TcpWestwoodPlus") == 0)
         {
           Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (tcp_adu_size));
-          BulkSendHelper ftp("ns3::TcpSocketFactory", Address());
+          BulkSendHelper ftp ("ns3::TcpSocketFactory", Address ());
           ftp.SetAttribute ("Remote", remoteAddress);
           ftp.SetAttribute ("SendSize", UintegerValue (tcp_adu_size));
-          ftp.SetAttribute ("MaxBytes", UintegerValue (int(data_mbytes*1000000)));
+          ftp.SetAttribute ("MaxBytes", UintegerValue (int(data_mbytes * 1000000)));
 
-          ApplicationContainer sourceApp = ftp.Install (sources.Get(i));
-          sourceApp.Start (Seconds (start_time*i));
+          ApplicationContainer sourceApp = ftp.Install (sources.Get (i));
+          sourceApp.Start (Seconds (start_time * i));
           sourceApp.Stop (Seconds (stop_time - 3));
 
           sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
           ApplicationContainer sinkApp = sinkHelper.Install (sinks);
-          sinkApp.Start (Seconds (start_time*i));
+          sinkApp.Start (Seconds (start_time * i));
           sinkApp.Stop (Seconds (stop_time));
         }
       else
@@ -316,41 +293,43 @@
   // Set up tracing if enabled
   if (tracing)
     {
-      std::ofstream ascii;
-      Ptr<OutputStreamWrapper> ascii_wrap;
-      if (tr_file_name.compare("") == 0)
+      if (tr_file_name.compare ("") != 0)
         {
-          NS_LOG_DEBUG ("No trace file provided");
-          exit (1);
+          std::ofstream ascii;
+          Ptr<OutputStreamWrapper> ascii_wrap;
+          ascii.open (tr_file_name.c_str ());
+          ascii_wrap = new OutputStreamWrapper (tr_file_name.c_str (), std::ios::out);
+          stack.EnableAsciiIpv4All (ascii_wrap);
         }
-      else
+
+      if (cwnd_tr_file_name.compare ("") != 0)
         {
-          ascii.open (tr_file_name.c_str());
-          ascii_wrap = new OutputStreamWrapper(tr_file_name.c_str(), std::ios::out);
+          Simulator::Schedule (Seconds (0.00001), &TraceCwnd, cwnd_tr_file_name);
         }
 
-      stack.EnableAsciiIpv4All (ascii_wrap);
+      if (ssthresh_tr_file_name.compare ("") != 0)
+        {
+          Simulator::Schedule (Seconds (0.00001), &TraceSsThresh, ssthresh_tr_file_name);
+        }
 
-      Simulator::Schedule(Seconds(0.00001), &TraceCwnd, cwnd_tr_file_name);
-      Simulator::Schedule(Seconds(0.00001), &TraceSsThresh, ssthresh_tr_file_name);
     }
 
-  UnReLink.EnablePcapAll("TcpVariantsComparison", true);
-  LocalLink.EnablePcapAll("TcpVariantsComparison", true);
+  UnReLink.EnablePcapAll ("TcpVariantsComparison", true);
+  LocalLink.EnablePcapAll ("TcpVariantsComparison", true);
 
   // Flow monitor
   FlowMonitorHelper flowHelper;
   if (flow_monitor)
     {
-      flowHelper.InstallAll();
+      flowHelper.InstallAll ();
     }
 
-  Simulator::Stop (Seconds(stop_time));
+  Simulator::Stop (Seconds (stop_time));
   Simulator::Run ();
 
   if (flow_monitor)
     {
-      flowHelper.SerializeToXmlFile("TcpVariantsComparison.flowmonitor", true, true);
+      flowHelper.SerializeToXmlFile ("TcpVariantsComparison.flowmonitor", true, true);
     }
 
   Simulator::Destroy ();
diff -Naur ns-3.20/examples/tutorial/wscript ns-3.21/examples/tutorial/wscript
--- ns-3.20/examples/tutorial/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/tutorial/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -12,7 +12,7 @@
     obj = bld.create_ns3_program('second', ['core', 'point-to-point', 'csma', 'internet', 'applications'])
     obj.source = 'second.cc'
         
-    obj = bld.create_ns3_program('third', ['core', 'point-to-point', 'csma', 'wifi', 'internet'])
+    obj = bld.create_ns3_program('third', ['core', 'point-to-point', 'csma', 'wifi', 'internet', 'applications'])
     obj.source = 'third.cc'
 
     obj = bld.create_ns3_program('fourth', ['core'])
diff -Naur ns-3.20/examples/udp/wscript ns-3.21/examples/udp/wscript
--- ns-3.20/examples/udp/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/udp/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,5 +1,5 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('udp-echo', ['csma', 'internet'])
+    obj = bld.create_ns3_program('udp-echo', ['csma', 'internet', 'applications'])
     obj.source = 'udp-echo.cc'
diff -Naur ns-3.20/examples/udp-client-server/wscript ns-3.21/examples/udp-client-server/wscript
--- ns-3.20/examples/udp-client-server/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/udp-client-server/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('udp-client-server', ['csma', 'internet'])
+    obj = bld.create_ns3_program('udp-client-server', ['csma', 'internet', 'applications'])
     obj.source = 'udp-client-server.cc'
     
     obj = bld.create_ns3_program('udp-trace-client-server', ['csma', 'internet', 'applications'])
diff -Naur ns-3.20/examples/wireless/wifi-simple-adhoc.cc ns-3.21/examples/wireless/wifi-simple-adhoc.cc
--- ns-3.20/examples/wireless/wifi-simple-adhoc.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/wireless/wifi-simple-adhoc.cc	2014-09-17 20:03:14.000000000 -0700
@@ -69,7 +69,10 @@
 
 void ReceivePacket (Ptr<Socket> socket)
 {
-  NS_LOG_UNCOND ("Received one packet!");
+  while (socket->Recv ())
+    {
+      NS_LOG_UNCOND ("Received one packet!");
+    }
 }
 
 static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, 
diff -Naur ns-3.20/examples/wireless/wifi-simple-adhoc-grid.cc ns-3.21/examples/wireless/wifi-simple-adhoc-grid.cc
--- ns-3.20/examples/wireless/wifi-simple-adhoc-grid.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/wireless/wifi-simple-adhoc-grid.cc	2014-09-17 20:03:14.000000000 -0700
@@ -90,7 +90,10 @@
 
 void ReceivePacket (Ptr<Socket> socket)
 {
-  NS_LOG_UNCOND ("Received one packet!");
+  while (socket->Recv ())
+    {
+      NS_LOG_UNCOND ("Received one packet!");
+    }
 }
 
 static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, 
diff -Naur ns-3.20/examples/wireless/wifi-simple-infra.cc ns-3.21/examples/wireless/wifi-simple-infra.cc
--- ns-3.20/examples/wireless/wifi-simple-infra.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/wireless/wifi-simple-infra.cc	2014-09-17 20:03:14.000000000 -0700
@@ -70,7 +70,10 @@
 
 void ReceivePacket (Ptr<Socket> socket)
 {
-  NS_LOG_UNCOND ("Received one packet!");
+  while (socket->Recv ())
+    {
+      NS_LOG_UNCOND ("Received one packet!");
+    }
 }
 
 static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, 
diff -Naur ns-3.20/examples/wireless/wifi-simple-interference.cc ns-3.21/examples/wireless/wifi-simple-interference.cc
--- ns-3.20/examples/wireless/wifi-simple-interference.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/examples/wireless/wifi-simple-interference.cc	2014-09-17 20:03:14.000000000 -0700
@@ -99,11 +99,16 @@
 static inline std::string PrintReceivedPacket (Ptr<Socket> socket)
 {
   Address addr;
-  socket->GetSockName (addr);
-  InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (addr);
 
   std::ostringstream oss;
-  oss << "Received one packet!  Socket: " << iaddr.GetIpv4 () << " port: " << iaddr.GetPort ();
+
+  while (socket->Recv ())
+    {
+      socket->GetSockName (addr);
+      InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (addr);
+
+      oss << "Received one packet!  Socket: " << iaddr.GetIpv4 () << " port: " << iaddr.GetPort ();
+    }
 
   return oss.str ();
 }
diff -Naur ns-3.20/examples/wireless/wifi-sleep.cc ns-3.21/examples/wireless/wifi-sleep.cc
--- ns-3.20/examples/wireless/wifi-sleep.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/examples/wireless/wifi-sleep.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,247 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 The Boeing Company
+ *               2014 Universita' degli Studi di Napoli "Federico II"
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+// 
+// This script configures two nodes on an 802.11b physical layer, with
+// 802.11b NICs in adhoc mode. One of the nodes generates on-off traffic
+// destined to the other node.
+//
+// The purpose is to test the energy depletion on the nodes and the 
+// activation of the callback that puts a node in the sleep state when
+// its energy is depleted. Furthermore, this script can be used to test
+// the available policies for updating the transmit current based on
+// the nominal tx power used to transmit each frame.
+//
+// There are a number of command-line options available to control
+// the default behavior.  The list of available command-line options
+// can be listed with the following command:
+// ./waf --run "wifi-sleep --help"
+//
+// Note that all ns-3 attributes (not just the ones exposed in the below
+// script) can be changed at command line; see the documentation.
+//
+// This script can also be helpful to put the Wifi layer into verbose
+// logging mode; this command will turn on all wifi logging:
+// 
+// ./waf --run "wifi-sleep --verbose=1"
+//
+// When you are done, you will notice four trace files in your directory:
+// two for the remaining energy on each node and two for the state transitions
+// of each node.
+//
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/config-store-module.h"
+#include "ns3/wifi-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/energy-module.h"
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <string>
+#include <sstream>
+
+NS_LOG_COMPONENT_DEFINE ("WifiSleep");
+
+using namespace ns3;
+
+template <int node>
+void RemainingEnergyTrace (double oldValue, double newValue)
+{
+  std::stringstream ss;
+  ss << "energy_" << node << ".log";
+
+  static std::fstream f (ss.str().c_str(), std::ios::out);
+
+  f << Simulator::Now().GetSeconds() << "    remaining energy=" << newValue << std::endl;
+}
+
+template <int node>
+void PhyStateTrace (std::string context, Time start, Time duration, enum WifiPhy::State state)
+{
+  std::stringstream ss;
+  ss << "state_" << node << ".log";
+
+  static std::fstream f (ss.str().c_str(), std::ios::out);
+
+  f << Simulator::Now().GetSeconds() << "    state=" << state << " start=" << start << " duration=" << duration << std::endl;
+}
+
+
+
+int main (int argc, char *argv[])
+{
+  std::string dataRate = "1Mbps";
+  uint32_t packetSize = 1000; // bytes
+  double duration = 10.0; // seconds
+  double initialEnergy = 7.5; // joule
+  double voltage = 3.0; // volts
+  double txPowerStart = 0.0; // dbm
+  double txPowerEnd = 15.0; // dbm
+  uint32_t nTxPowerLevels = 16;
+  uint32_t txPowerLevel = 0;
+  double idleCurrent = 0.273; // Ampere
+  double txCurrent = 0.380; // Ampere
+  bool verbose = false;
+
+
+  CommandLine cmd;
+
+  cmd.AddValue ("dataRate", "Data rate", dataRate);
+  cmd.AddValue ("packetSize", "size of application packet sent", packetSize);
+  cmd.AddValue ("duration", "duration (seconds) of the experiment", duration);
+  cmd.AddValue ("initialEnergy", "Initial Energy (Joule) of each node", initialEnergy);
+  cmd.AddValue ("voltage", "Supply voltage (Joule)", voltage);
+  cmd.AddValue ("txPowerStart", "Minimum available transmission level (dbm)", txPowerStart);
+  cmd.AddValue ("txPowerEnd", "Maximum available transmission level (dbm)", txPowerEnd);
+  cmd.AddValue ("nTxPowerLevels", "Number of transmission power levels available between txPowerStart and txPowerEnd included", nTxPowerLevels);
+  cmd.AddValue ("txPowerLevel", "Transmission power level", txPowerLevel);
+  cmd.AddValue ("idleCurrent", "The radio Idle current in Ampere", idleCurrent);
+  cmd.AddValue ("txCurrent", "The radio Tx current in Ampere", txCurrent);
+  cmd.AddValue ("verbose", "turn on all WifiNetDevice log components", verbose);
+
+  cmd.Parse (argc, argv);
+
+
+  NodeContainer c;
+  c.Create (2);
+
+  // The below set of helpers will help us to put together the wifi NICs we want
+  WifiHelper wifi;
+  if (verbose)
+    {
+      wifi.EnableLogComponents ();  // Turn on all Wifi logging
+    }
+  wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
+
+  YansWifiPhyHelper wifiPhy =  YansWifiPhyHelper::Default ();
+  // ns-3 supports RadioTap and Prism tracing extensions for 802.11b
+  wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO); 
+
+  wifiPhy.Set ("TxPowerStart", DoubleValue (txPowerStart));
+  wifiPhy.Set ("TxPowerEnd", DoubleValue (txPowerEnd));
+  wifiPhy.Set ("TxPowerLevels", UintegerValue (nTxPowerLevels));
+
+  YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
+  wifiPhy.SetChannel (wifiChannel.Create ());
+
+  // Add a non-QoS upper mac, and set the selected tx power level
+  NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
+  wifi.SetRemoteStationManager ("ns3::ArfWifiManager", "DefaultTxPowerLevel", UintegerValue (txPowerLevel));
+  // Set it to adhoc mode
+  wifiMac.SetType ("ns3::AdhocWifiMac");
+  NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, c);
+
+  MobilityHelper mobility;
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
+  positionAlloc->Add (Vector (10.0, 0.0, 0.0));
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (c);
+
+  InternetStackHelper internet;
+  internet.Install (c);
+
+  Ipv4AddressHelper ipv4;
+  NS_LOG_INFO ("Assign IP Addresses.");
+  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+  Ipv4InterfaceContainer i = ipv4.Assign (devices);
+
+  ApplicationContainer apps;
+
+  std::string transportProto = std::string("ns3::UdpSocketFactory");
+  OnOffHelper onOff(transportProto, InetSocketAddress (Ipv4Address ("10.1.1.2"), 9000));
+
+  onOff.SetAttribute ("DataRate", DataRateValue (DataRate (dataRate)));
+  onOff.SetAttribute ("PacketSize", UintegerValue (packetSize));
+  onOff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.001]"));
+
+  apps = onOff.Install (c.Get (0));
+
+  apps.Start (Seconds (0.01));
+  apps.Stop (Seconds (duration));
+
+  // Create a packet sink to receive these packets
+  PacketSinkHelper sink (transportProto, InetSocketAddress (Ipv4Address::GetAny (), 9001));
+  apps = sink.Install (c.Get (1));
+  apps.Start (Seconds (0.01));
+  apps.Stop (Seconds (duration));
+
+  // Energy sources
+  EnergySourceContainer eSources;
+  BasicEnergySourceHelper basicSourceHelper;
+  WifiRadioEnergyModelHelper radioEnergyHelper;
+
+  basicSourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (initialEnergy));
+  basicSourceHelper.Set ("BasicEnergySupplyVoltageV", DoubleValue (voltage));
+
+  radioEnergyHelper.Set ("IdleCurrentA", DoubleValue (idleCurrent));
+  radioEnergyHelper.Set ("TxCurrentA", DoubleValue (txCurrent));
+
+  // compute the efficiency of the power amplifier (eta) assuming that the provided value for tx current
+  // corresponds to the minimum tx power level
+  double eta = WifiTxCurrentModel::DbmToW (txPowerStart) / ((txCurrent - idleCurrent) * voltage);
+
+  radioEnergyHelper.SetTxCurrentModel ("ns3::LinearWifiTxCurrentModel",
+                                       "Voltage", DoubleValue (voltage),
+                                       "IdleCurrent", DoubleValue (idleCurrent),
+                                       "Eta", DoubleValue (eta));
+
+  // install an energy source on each node
+  for (NodeContainer::Iterator n = c.Begin(); n != c.End(); n++)
+  {
+    eSources.Add (basicSourceHelper.Install (*n));
+
+    Ptr<WifiNetDevice> wnd;
+
+    for (uint32_t i = 0; i < (*n)->GetNDevices (); ++i)
+    {
+      wnd = (*n)->GetDevice (i)->GetObject<WifiNetDevice> ();
+      // if it is a WifiNetDevice
+      if (wnd != 0)
+      {
+        // this device draws power from the last created energy source
+        radioEnergyHelper.Install (wnd, eSources.Get (eSources.GetN()-1));
+      }
+    }
+  }
+
+  // Tracing
+  eSources.Get (0)->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback(&RemainingEnergyTrace<0>));
+  eSources.Get (1)->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback(&RemainingEnergyTrace<1>));
+
+  Config::Connect ("/NodeList/0/DeviceList/*/Phy/State/State", MakeCallback (&PhyStateTrace<0>));
+  Config::Connect ("/NodeList/1/DeviceList/*/Phy/State/State", MakeCallback (&PhyStateTrace<1>));
+
+// wifiPhy.EnablePcap ("wifi-sleep", devices);
+
+  Simulator::Stop (Seconds(duration+1));
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  return 0;
+}
+
diff -Naur ns-3.20/RELEASE_NOTES ns-3.21/RELEASE_NOTES
--- ns-3.20/RELEASE_NOTES	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/RELEASE_NOTES	2014-09-17 20:03:14.000000000 -0700
@@ -9,6 +9,94 @@
 Consult the file CHANGES.html for more detailed information about changed
 API and behavior across ns-3 releases.
 
+Release 3.21
+============
+
+Availability
+------------
+This release is available from:
+http://www.nsnam.org/release/ns-allinone-3.21.tar.bz2
+
+Supported platforms
+-------------------
+- Fedora Core 20 (32/64 bit) with g++-4.8.2
+- Ubuntu 14.04 (32/64 bit) with g++-4.8.2
+- Ubuntu 12.04.4 (64 bit) with g++-4.6.3
+- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
+- CentOS/RHEL 6.5 (64-bit) with g++-4.4.7
+- OS X Mavericks 10.9 with Xcode 5.1.1 and clang-503.0.40
+- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
+
+New user-visible features
+-------------------------
+
+- The LTE module now supports the transport of the S1-U, X2-U and X2-C
+  interfaces over emulated links via the new helper class EmuEpcHelper.
+- CommandLine can now provide a shorthand argument name for any
+  Attribute.
+- Implemented support for Frequency Reuse algorithms in LTE module, as the 
+  outcome of GSoC 2014 project. 
+  The project also includes several sub-features, such as:
+   - implementation of Downlink Power Control
+   - implementation of Uplink Power Control
+   - new DL-CQI generation approach, which increases throughput if FR algorithms 
+     are used
+   - seven options of Frequency Reuse algorithms: LteFrNoOpAlgorithm, 
+     LteFrHardAlgorithm, LteFrStrictAlgorithm, LteFrSoftAlgorithm, 
+     LteFfrSoftAlgorithm, LteFfrEnhancedAlgorithm, LteFfrDistributedAlgorithm
+   - updated RadioEnvironmentMapHelper. Now RadioEnvironmentMap can be generated 
+     for Data or Control channel and for specified RbId, what is helpful when 
+     using FR algorithms
+- Added a CoDel queue model.  CoDel queues measure and control the queue
+  traversal delay.  The ns-3 implementation is a port of the Linux 
+  implementation.
+- Added support for TCP timestamp and window scale options, and added
+  ability to trace the TCP slow start threshold value.
+- SimpleNetDevice and SimpleChannel (used for adding basic link effects
+  for testing of higher-layer protocols) have been extended to support 
+  the option of broadcast or PointToPoint link semantics.  The bandwidth
+  and link delay can be constrained, and it uses an output queue.
+- SimpleNetDevice and SimpleChannel can be installed in a node through 
+  a new helper: SimpleNetDeviceHelper.
+- Implemented new PacketSocketServer and PacketSocketClient applications.
+  The primary use is in tests, to avoid using the ones from the 
+  application module that also bring in a dependency on the internet module.
+  
+Bugs fixed
+----------
+
+- Bug 1673 - Config::Set/Connect does not search for attributes in parent class
+- Bug 1762 - UE stuck in IDLE_CONNECTING because RRC CONN REQ is not transmitted
+- Bug 1811 - basic traffic generator for network module 
+- Bug 1824 - L4 protocol sockets should support BindToNetDevice over IPv6
+- Bug 1831 - TcpSocket SlowStartThreshold is not a TraceSource
+- Bug 1851 - WifiRadioEnergyModel energy consumption values are taken from a 802.15.4 chip
+- Bug 1854 - std::out_of_range Problem
+- Bug 1858 - wireless examples not correctly recording packet reception
+- Bug 1860 - TCP needs the Window Scale option
+- Bug 1893 - issue in DoSchedUlTriggerReq with harq
+- Bug 1911 - AODV cannot work on nodes with more than one netdevice
+- Bug 1921 - Icmpv6L4Protocol::ForgeEchoRequest returns a malformed packet
+- Bug 1930 - Use of invalid reference in OLSR RemoveLinkTuple
+- Bug 1932 - NdiscCache entry is not failsafe on double neighbor probing.
+- Bug 1937 - FlowMonitor fails to track multiplexed packets
+- Bug 1942 - refactoring of lte-sinr-chunk-processor -> lte-chunk-processor
+- Bug 1943 - Waveform generator signal duration calc error
+- Bug 1951 - AODV does not update nexthop for 1-hop nodes
+- Bug 1955 - The IPv4 identification field should be unique per (source, destination, protocol) tuple
+- Bug 1960 - Wrong information on index range, about Node::GetDevice
+- Bug 1961 - planetlab-tap-creator "variable set but not used"
+- Bug 1963 - AODV can tag the same packet twice (and raise an assert)
+- Bug 1964 - Integer overflow on UniformRandomVariable::GetInteger()
+- Bug 1967 - LL Multicast is not compressed in the right way in IPHC
+- Bug 1981 - PyViz shell not compatible with ipython >= 0.11
+
+Known issues
+------------
+- Bug 1770 - The mesh module will crash if used for g++ version >= 4.8.1
+in optimized mode, on a 32-bit Linux machine.  Lowering the optimization
+level to -O1 in this case can be used as a workaround.
+
 Release 3.20
 =============
 
diff -Naur ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py ns-3.21/src/aodv/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3998,10 +3998,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4012,25 +4012,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4147,20 +4147,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py ns-3.21/src/aodv/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3998,10 +3998,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4012,25 +4012,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4147,20 +4147,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/aodv/examples/wscript ns-3.21/src/aodv/examples/wscript
--- ns-3.20/src/aodv/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,5 +2,5 @@
 
 def build(bld):
     obj = bld.create_ns3_program('aodv',
-                                 ['wifi', 'internet', 'aodv'])
+                                 ['wifi', 'internet', 'aodv', 'applications'])
     obj.source = 'aodv.cc'
diff -Naur ns-3.20/src/aodv/model/aodv-routing-protocol.cc ns-3.21/src/aodv/model/aodv-routing-protocol.cc
--- ns-3.20/src/aodv/model/aodv-routing-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/model/aodv-routing-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -283,6 +283,12 @@
       iter->first->Close ();
     }
   m_socketAddresses.clear ();
+  for (std::map<Ptr<Socket>, Ipv4InterfaceAddress>::iterator iter =
+         m_socketSubnetBroadcastAddresses.begin (); iter != m_socketSubnetBroadcastAddresses.end (); iter++)
+    {
+      iter->first->Close ();
+    }
+  m_socketSubnetBroadcastAddresses.clear ();
   Ipv4RoutingProtocol::DoDispose ();
 }
 
@@ -613,18 +619,34 @@
                                              UdpSocketFactory::GetTypeId ());
   NS_ASSERT (socket != 0);
   socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv, this));
-  socket->BindToNetDevice (l3->GetNetDevice (i));
   socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), AODV_PORT));
+  socket->BindToNetDevice (l3->GetNetDevice (i));
   socket->SetAllowBroadcast (true);
   socket->SetAttribute ("IpTtl", UintegerValue (1));
   m_socketAddresses.insert (std::make_pair (socket, iface));
 
+  // create also a subnet broadcast socket
+  socket = Socket::CreateSocket (GetObject<Node> (),
+                                 UdpSocketFactory::GetTypeId ());
+  NS_ASSERT (socket != 0);
+  socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv, this));
+  socket->Bind (InetSocketAddress (iface.GetBroadcast (), AODV_PORT));
+  socket->BindToNetDevice (l3->GetNetDevice (i));
+  socket->SetAllowBroadcast (true);
+  socket->SetAttribute ("IpTtl", UintegerValue (1));
+  m_socketSubnetBroadcastAddresses.insert (std::make_pair (socket, iface));
+
   // Add local broadcast record to the routing table
   Ptr<NetDevice> dev = m_ipv4->GetNetDevice (m_ipv4->GetInterfaceForAddress (iface.GetLocal ()));
   RoutingTableEntry rt (/*device=*/ dev, /*dst=*/ iface.GetBroadcast (), /*know seqno=*/ true, /*seqno=*/ 0, /*iface=*/ iface,
                                     /*hops=*/ 1, /*next hop=*/ iface.GetBroadcast (), /*lifetime=*/ Simulator::GetMaximumSimulationTime ());
   m_routingTable.AddRoute (rt);
 
+  if (l3->GetInterface (i)->GetArpCache ())
+    {
+      m_nb.AddArpCache (l3->GetInterface (i)->GetArpCache ());
+    }
+
   // Allow neighbor manager use this interface for layer 2 feedback if possible
   Ptr<WifiNetDevice> wifi = dev->GetObject<WifiNetDevice> ();
   if (wifi == 0)
@@ -634,7 +656,6 @@
     return;
 
   mac->TraceConnectWithoutContext ("TxErrHeader", m_nb.GetTxErrorCallback ());
-  m_nb.AddArpCache (l3->GetInterface (i)->GetArpCache ());
 }
 
 void
@@ -662,6 +683,13 @@
   NS_ASSERT (socket);
   socket->Close ();
   m_socketAddresses.erase (socket);
+
+  // Close socket
+  socket = FindSubnetBroadcastSocketWithInterfaceAddress (m_ipv4->GetAddress (i, 0));
+  NS_ASSERT (socket);
+  socket->Close ();
+  m_socketSubnetBroadcastAddresses.erase (socket);
+
   if (m_socketAddresses.empty ())
     {
       NS_LOG_LOGIC ("No aodv interfaces");
@@ -693,12 +721,22 @@
                                                      UdpSocketFactory::GetTypeId ());
           NS_ASSERT (socket != 0);
           socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv,this));
+          socket->Bind (InetSocketAddress (iface.GetLocal (), AODV_PORT));
           socket->BindToNetDevice (l3->GetNetDevice (i));
-          // Bind to any IP address so that broadcasts can be received
-          socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), AODV_PORT));
           socket->SetAllowBroadcast (true);
           m_socketAddresses.insert (std::make_pair (socket, iface));
 
+          // create also a subnet directed broadcast socket
+          socket = Socket::CreateSocket (GetObject<Node> (),
+                                                       UdpSocketFactory::GetTypeId ());
+          NS_ASSERT (socket != 0);
+          socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv, this));
+          socket->Bind (InetSocketAddress (iface.GetBroadcast (), AODV_PORT));
+          socket->BindToNetDevice (l3->GetNetDevice (i));
+          socket->SetAllowBroadcast (true);
+          socket->SetAttribute ("IpTtl", UintegerValue (1));
+          m_socketSubnetBroadcastAddresses.insert (std::make_pair (socket, iface));
+
           // Add local broadcast record to the routing table
           Ptr<NetDevice> dev = m_ipv4->GetNetDevice (
               m_ipv4->GetInterfaceForAddress (iface.GetLocal ()));
@@ -722,7 +760,16 @@
   if (socket)
     {
       m_routingTable.DeleteAllRoutesFromInterface (address);
+      socket->Close ();
       m_socketAddresses.erase (socket);
+
+      Ptr<Socket> unicastSocket = FindSubnetBroadcastSocketWithInterfaceAddress (address);
+      if (unicastSocket)
+        {
+          unicastSocket->Close ();
+          m_socketAddresses.erase (unicastSocket);
+        }
+
       Ptr<Ipv4L3Protocol> l3 = m_ipv4->GetObject<Ipv4L3Protocol> ();
       if (l3->GetNAddresses (i))
         {
@@ -733,10 +780,23 @@
           NS_ASSERT (socket != 0);
           socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv, this));
           // Bind to any IP address so that broadcasts can be received
-          socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), AODV_PORT));
+          socket->Bind (InetSocketAddress (iface.GetLocal (), AODV_PORT));
+          socket->BindToNetDevice (l3->GetNetDevice (i));
           socket->SetAllowBroadcast (true);
+          socket->SetAttribute ("IpTtl", UintegerValue (1));
           m_socketAddresses.insert (std::make_pair (socket, iface));
 
+          // create also a unicast socket
+          socket = Socket::CreateSocket (GetObject<Node> (),
+                                                       UdpSocketFactory::GetTypeId ());
+          NS_ASSERT (socket != 0);
+          socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvAodv, this));
+          socket->Bind (InetSocketAddress (iface.GetBroadcast (), AODV_PORT));
+          socket->BindToNetDevice (l3->GetNetDevice (i));
+          socket->SetAllowBroadcast (true);
+          socket->SetAttribute ("IpTtl", UintegerValue (1));
+          m_socketSubnetBroadcastAddresses.insert (std::make_pair (socket, iface));
+
           // Add local broadcast record to the routing table
           Ptr<NetDevice> dev = m_ipv4->GetNetDevice (m_ipv4->GetInterfaceForAddress (iface.GetLocal ()));
           RoutingTableEntry rt (/*device=*/ dev, /*dst=*/ iface.GetBroadcast (), /*know seqno=*/ true, /*seqno=*/ 0, /*iface=*/ iface,
@@ -937,7 +997,20 @@
   Ptr<Packet> packet = socket->RecvFrom (sourceAddress);
   InetSocketAddress inetSourceAddr = InetSocketAddress::ConvertFrom (sourceAddress);
   Ipv4Address sender = inetSourceAddr.GetIpv4 ();
-  Ipv4Address receiver = m_socketAddresses[socket].GetLocal ();
+  Ipv4Address receiver;
+
+  if (m_socketAddresses.find (socket) != m_socketAddresses.end ())
+    {
+      receiver = m_socketAddresses[socket].GetLocal ();
+    }
+  else if(m_socketSubnetBroadcastAddresses.find (socket) != m_socketSubnetBroadcastAddresses.end ())
+    {
+      receiver = m_socketSubnetBroadcastAddresses[socket].GetLocal ();
+    }
+  else
+    {
+      NS_ASSERT_MSG (false, "Received a packet from an unknown socket");
+    }
   NS_LOG_DEBUG ("AODV node " << this << " received a AODV packet from " << sender << " to " << receiver);
 
   UpdateRouteToNeighbor (sender, receiver);
@@ -1116,6 +1189,8 @@
       toNeighbor.SetFlag (VALID);
       toNeighbor.SetOutputDevice (m_ipv4->GetNetDevice (m_ipv4->GetInterfaceForAddress (receiver)));
       toNeighbor.SetInterface (m_ipv4->GetAddress (m_ipv4->GetInterfaceForAddress (receiver), 0));
+      toNeighbor.SetHop (1);
+      toNeighbor.SetNextHop (src);
       m_routingTable.Update (toNeighbor);
     }
   m_nb.Update (src, Time (AllowedHelloLoss * HelloInterval));
@@ -1444,6 +1519,8 @@
       toNeighbor.SetFlag (VALID);
       toNeighbor.SetOutputDevice (m_ipv4->GetNetDevice (m_ipv4->GetInterfaceForAddress (receiver)));
       toNeighbor.SetInterface (m_ipv4->GetAddress (m_ipv4->GetInterfaceForAddress (receiver), 0));
+      toNeighbor.SetHop (1);
+      toNeighbor.SetNextHop (rrepHeader.GetDst ());
       m_routingTable.Update (toNeighbor);
     }
   if (EnableHello)
@@ -1802,7 +1879,9 @@
       Ptr<Socket> socket = FindSocketWithInterfaceAddress (*i);
       NS_ASSERT (socket);
       NS_LOG_LOGIC ("Broadcast RERR message from interface " << i->GetLocal ());
+      // std::cout << "Broadcast RERR message from interface " << i->GetLocal () << std::endl;
       // Send to all-hosts broadcast if on /32 addr, subnet-directed otherwise
+      Ptr<Packet> p = packet->Copy ();
       Ipv4Address destination;
       if (i->GetMask () == Ipv4Mask::GetOnes ())
         {
@@ -1812,7 +1891,7 @@
         { 
           destination = i->GetBroadcast ();
         }
-      Simulator::Schedule (Time (MilliSeconds (m_uniformRandomVariable->GetInteger (0, 10))), &RoutingProtocol::SendTo, this, socket, packet, destination);
+      Simulator::Schedule (Time (MilliSeconds (m_uniformRandomVariable->GetInteger (0, 10))), &RoutingProtocol::SendTo, this, socket, p, destination);
     }
 }
 
@@ -1825,6 +1904,22 @@
     {
       Ptr<Socket> socket = j->first;
       Ipv4InterfaceAddress iface = j->second;
+      if (iface == addr)
+        return socket;
+    }
+  Ptr<Socket> socket;
+  return socket;
+}
+
+Ptr<Socket>
+RoutingProtocol::FindSubnetBroadcastSocketWithInterfaceAddress (Ipv4InterfaceAddress addr ) const
+{
+  NS_LOG_FUNCTION (this << addr);
+  for (std::map<Ptr<Socket>, Ipv4InterfaceAddress>::const_iterator j =
+         m_socketSubnetBroadcastAddresses.begin (); j != m_socketSubnetBroadcastAddresses.end (); ++j)
+    {
+      Ptr<Socket> socket = j->first;
+      Ipv4InterfaceAddress iface = j->second;
       if (iface == addr)
         return socket;
     }
diff -Naur ns-3.20/src/aodv/model/aodv-routing-protocol.h ns-3.21/src/aodv/model/aodv-routing-protocol.h
--- ns-3.20/src/aodv/model/aodv-routing-protocol.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/model/aodv-routing-protocol.h	2014-09-17 20:03:14.000000000 -0700
@@ -140,8 +140,10 @@
 
   /// IP protocol
   Ptr<Ipv4> m_ipv4;
-  /// Raw socket per each IP interface, map socket -> iface address (IP + mask)
+  /// Raw unicast socket per each IP interface, map socket -> iface address (IP + mask)
   std::map< Ptr<Socket>, Ipv4InterfaceAddress > m_socketAddresses;
+  /// Raw subnet directed broadcast socket per each IP interface, map socket -> iface address (IP + mask)
+  std::map< Ptr<Socket>, Ipv4InterfaceAddress > m_socketSubnetBroadcastAddresses;
   /// Loopback device used to defer RREQ until packet will be fully formed
   Ptr<NetDevice> m_lo; 
 
@@ -191,8 +193,10 @@
   void UpdateRouteToNeighbor (Ipv4Address sender, Ipv4Address receiver);
   /// Check that packet is send from own interface
   bool IsMyOwnAddress (Ipv4Address src);
-  /// Find socket with local interface address iface
+  /// Find unicast socket with local interface address iface
   Ptr<Socket> FindSocketWithInterfaceAddress (Ipv4InterfaceAddress iface) const;
+  /// Find subnet directed broadcast socket with local interface address iface
+  Ptr<Socket> FindSubnetBroadcastSocketWithInterfaceAddress (Ipv4InterfaceAddress iface) const;
   /// Process hello message
   void ProcessHello (RrepHeader const & rrepHeader, Ipv4Address receiverIfaceAddr);
   /// Create loopback route for given header
diff -Naur ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap ns-3.21/src/aodv/test/aodv-chain-regression-test-0-0.pcap
--- ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/aodv-chain-regression-test-0-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -6,44 +6,43 @@
 
     (    
     
-           L  @   @   <                            
+           +  @   @   <                            
      
-        ۑ        Ԁ                 @   @                            
+                Ԁ                 @   @                            
 
-        ѡ  @   @   <                            
+          @   @   <                            
      
-        ~        Ԁ               ^  T   T   <                0     E  0     
+        ]        Ԁ               =  T   T   <                0     E  0      
 
      
     
-  +        n        Ԁ                 @   @                            
+  +        M        Ԁ               e  @   @                            
 
-          @   @   <                @            
+        h  @   @   <                @            
      
-                Ԁ               A  x   x   <                0     E  T    @  
+        x        Ԁ                  x   x   <                0     E  T    @  
 
-                                                                       6        Ԁ               
-  @   @               P            
+                                                                               Ԁ                 @   @               P            
 
-                Ԁ                 x   x   <                `     E  T    ?  
+                Ԁ                 x   x   <                `     E  T    ?  
 
-                                                                       H  T   T               @     E  0     
+                                                                              Ԁ                x   x   <                p     E  T    =  
+
+                                                                               Ԁ               S T   T               @     E  0     
 
       
    
-                  Ԁ                 x   x   <                p     E  T    =  
-
-                                                                                Ԁ                  x   x   <                P     E  T   @  
+             x   x   <                P     E  T   @  
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
                                                                              Ԁ              p  x   x   <                     E  T   =  
 
-                                                                              Ԁ              ((  T   T                    E  0     
+                                                                              Ԁ              ((  T   T                    E  0     
 
       
     
-          T   T               `     E  0     
+         Hk T   T               `     E  0     
 
       
    
@@ -51,13 +50,13 @@
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ              p  x   x   <                     E  T   =  
+                                                                             Ԁ                x   x   <                     E  T   =  
 
-                                                                              Ԁ                T   T                    E  0     
+                                                                              Ԁ                T   T                    E  0     
 
       
     
-         	 T   T                    E  0     
+         0o T   T                    E  0     
 
       
    
@@ -65,13 +64,13 @@
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
-                                                                             Ԁ                x   x   <                     E  T   =  
+                                                                             Ԁ                x   x   <                     E  T   =  
 
-                                                                              Ԁ                T   T                    E  0     
+                                                                              Ԁ                T   T                    E  0     
 
       
     
-           T   T                    E  0     
+         [ T   T                    E  0     
 
       
    
@@ -91,15 +90,15 @@
 
                                                                      *  x   x   <                    E  T   ?  
 
-                                                                     +  T   T                    E  0     
+                                                                     +  T   T                    E  0     
 
       
     
-         F  T   T   <                0    E  0     
+         F  T   T   <                0    E  0     
 
      
     
-           F        Ԁ              	 T   T                    E  0     
+           F        Ԁ              0o T   T                    E  0     
 
       
    
@@ -107,11 +106,11 @@
 
           
     
-          /  T   T               @    E  0     
+          /  T   T               @    E  0     
 
       
     
-         3  X   X               P    E  4     
+         3  X   X               P    E  4     
 
          
     
@@ -119,7 +118,7 @@
 
       
    
-         ;  T   T               `    E  0 	    
+         ;  T   T               `    E  0     
 
       
     
@@ -127,8 +126,7 @@
 
       
    
-         ;  T   T               p    E  0 
-    
+         ;  T   T               p    E  0     
 
       
     
@@ -136,7 +134,7 @@
 
           
     
-          X X   X                   E  4     
+          X X   X                   E  4 	    
 
          
     
@@ -145,7 +143,8 @@
 
       
    
-         a T   T                   E  0     
+         a T   T                   E  0 
+    
 
       
     
@@ -153,7 +152,7 @@
 
       
    
-      	   h| T   T                   E  0     
+      	   h| T   T                   E  0     
 
       
     
diff -Naur ns-3.20/src/aodv/test/aodv-chain-regression-test-1-0.pcap ns-3.21/src/aodv/test/aodv-chain-regression-test-1-0.pcap
--- ns-3.20/src/aodv/test/aodv-chain-regression-test-1-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/aodv-chain-regression-test-1-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -10,43 +10,49 @@
 
     (    
     
-           N  @   @   <                            
+             @   @   <                            
      
-                Ԁ                 @   @                            
+        }        Ԁ                 @   @                            
 
-        ܏  @   @   <                            
+          @   @   <                            
      
-                Ԁ                 T   T   <                0     E  0     
+        h        Ԁ               ~  T   T   <                0     E  0      
 
      
     
-  +                Ԁ               ?  @   @                            
+  +                Ԁ                 @   @                            
 
-        B  @   @   <                            
+        !  @   @   <                            
      
-        R        Ԁ               ֢  T   T   <                0     E  0     
+        1        Ԁ                 T   T   <                0     E  0      
 
      
     
-  +                Ԁ                 @   @                            
+  +        y        Ԁ                 @   @                            
 
-          @   @   <                @            
+          @   @   <                @            
      
-                Ԁ                 x   x   <                0     E  T    @  
+                Ԁ                 x   x   <                0     E  T    @  
 
-                                                                       	        Ԁ                 @   @               P            
+                                                                               Ԁ               x  @   @               P            
 
-          @   @   <                @            
+        {  @   @   <                @            
      
-                Ԁ               T  x   x   <                `     E  T    ?  
+                Ԁ               3  x   x   <                `     E  T    ?  
 
-                                                                       I        Ԁ                       Ԁ               #  x   x   <                `     E  T    >  
+                                                                       (        Ԁ                 @   @               P            
+
+                Ԁ                x   x   <                `     E  T    >  
 
-                                                                               Ԁ                 x   x   <                p     E  T    >  
+                                                                              Ԁ               y x   x   <                p     E  T    >  
 
-                                                                                Ԁ                 x   x   <                p     E  T    =  
+                                                                               Ԁ                x   x   <                p     E  T    =  
 
-                                                                                Ԁ                 x   x   <                P     E  T   @  
+                                                                               Ԁ               `T T   T               @     E  0     
+
+      
+   
+            x   x   <                P     E  T   @  
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
@@ -56,15 +62,15 @@
 
                                                                       i        Ԁ                x   x   <                     E  T   =  
 
-                                                                              Ԁ              '  T   T                    E  0     
+                                                                              Ԁ              '  T   T                    E  0     
 
       
     
-         0  T   T                    E  0     
+         0  T   T                    E  0     
 
       
     
-         @ T   T               `     E  0     
+         k T   T               `     E  0     
 
       
    
@@ -74,20 +80,19 @@
 
                                                                              Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              Y  x   x   <                     E  T   >  
+                                                                             Ԁ                x   x   <                     E  T   >  
 
-                                                                      i        Ԁ                x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
-                                                                              Ԁ                T   T                    E  0     
+                                                                      	        Ԁ                T   T                    E  0     
 
       
     
-            T   T                    E  0     
+            T   T                    E  0     
 
       
     
-         (
- T   T                    E  0     
+         o T   T                    E  0     
 
       
    
@@ -97,19 +102,19 @@
 
                                                                              Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ                x   x   <                     E  T   >  
+                                                                             Ԁ              t  x   x   <                     E  T   >  
 
-                                                                              Ԁ                x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
-                                                                      	        Ԁ                T   T                    E  0     
+                                                                              Ԁ                T   T                    E  0     
 
       
     
-         D  T   T                    E  0     
+         D  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+         0\ T   T                    E  0     
 
       
    
@@ -129,16 +134,15 @@
 
                                                                      )  x   x   <                    E  T   ?  
 
-                                                                     N+  T   T                    E  0     
+                                                                     N+  T   T                    E  0     
 
       
     
-         3F  T   T   <                0    E  0     
+         3F  T   T   <                0    E  0     
 
      
     
-           F        Ԁ              (
- T   T                    E  0     
+           F        Ԁ              o T   T                    E  0     
 
       
    
@@ -146,11 +150,11 @@
 
           
     
-          p/  T   T               @    E  0     
+          p/  T   T               @    E  0     
 
       
     
-         X3  X   X               P    E  4     
+         X3  X   X               P    E  4     
 
          
     
@@ -158,7 +162,7 @@
 
       
    
-         (;  T   T               `    E  0 	    
+         (;  T   T               `    E  0     
 
       
     
@@ -166,8 +170,7 @@
 
       
    
-         (;  T   T               p    E  0 
-    
+         (;  T   T               p    E  0     
 
       
     
@@ -175,7 +178,7 @@
 
           
     
-           X   X                   E  4     
+           X   X                   E  4 	    
 
          
     
@@ -184,7 +187,8 @@
 
       
    
-         ` T   T                   E  0     
+         ` T   T                   E  0 
+    
 
       
     
@@ -192,7 +196,7 @@
 
       
    
-      	   { T   T                   E  0     
+      	   { T   T                   E  0     
 
       
     
diff -Naur ns-3.20/src/aodv/test/aodv-chain-regression-test-2-0.pcap ns-3.21/src/aodv/test/aodv-chain-regression-test-2-0.pcap
--- ns-3.20/src/aodv/test/aodv-chain-regression-test-2-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/aodv-chain-regression-test-2-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -6,84 +6,79 @@
 
     (    
     
-           aP  X   X                     E  4      
+           `  X   X                     E  4      
 
     (    
     
-           H^  T   T                    E  0     
-
-      
-    
-          t  @   @   <                             
+           ,  @   @   <                            
      
-         v        Ԁ                 @   @               0            
+                Ԁ               \  @   @                            
 
-        މ  @   @   <                            
+        ~  @   @   <                            
      
-                Ԁ               b  T   T   <                @     E  0     
+        +        Ԁ               A  T   T   <                0     E  0      
 
      
     
-  +        r        Ԁ               J  @   @                            
+  +        Q        Ԁ               )  @   @                            
 
-        L  @   @   <                            
+        +  @   @   <                            
      
-        \        Ԁ                 T   T   <                0     E  0     
+        ;        Ԁ                 T   T   <                0     E  0      
 
      
     
-  +        ۑ        Ԁ                 @   @                            
+  +                Ԁ                 @   @                            
 
-        ~        Ԁ               ^  T   T   <                0     E  0     
+        ]        Ԁ               =  T   T   <                0     E  0      
 
      
     
-  +          @   @   <                @            
+  +        h  @   @   <                @            
      
-        6        Ԁ               
-  @   @               P            
+                Ԁ                 @   @               P            
 
-        ,  @   @   <                @            
+          @   @   <                @            
      
-                Ԁ                 x   x   <                `     E  T    ?  
+                Ԁ                 x   x   <                `     E  T    ?  
 
-                                                                               Ԁ                 @   @               P            
+                                                                               Ԁ               s  @   @               P            
 
-          @   @   <                P            
+        v  @   @   <                @            
      
-                Ԁ               j  x   x   <                `     E  T    >  
+                Ԁ               I  x   x   <                `     E  T    >  
 
-                                                                       _        Ԁ                 @   @               `            
+                                                                       >       Ԁ                @   @               P            
 
-                Ԁ                 x   x   <                p     E  T    =  
+               Ԁ                x   x   <                `     E  T    =  
 
-                                                                       P        Ԁ                 x   x   <                     E  T    ?  
+                                                                       &       Ԁ               c x   x   <                p     E  T    ?  
 
-                                                                                Ԁ                 x   x   <                p     E  T    >  
+                                                                        s       Ԁ                x   x   <                p     E  T    >  
 
-                                                                                Ԁ                 x   x   <                p     E  T    =  
+                                                                               Ԁ                x   x   <                p     E  T    =  
 
                                                                                 Ԁ                x   x   <                     E  T   ?  
 
                                                                              Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
 
                                                                       S        Ԁ                x   x   <                     E  T   >  
 
                                                                               Ԁ              p  x   x   <                     E  T   =  
 
-                                                                      ((  T   T                    E  0     
+                                                                      ((  T   T                    E  0     
 
       
     
-          0  T   T                    E  0     
+          0  T   T                    E  0     
 
       
     
-         @  T   T                    E  0     
+         YP  T   T                    E  0     
 
       
     
@@ -91,23 +86,23 @@
 
                                                                              Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                     N        Ԁ                x   x   <                     E  T   ?  
 
-                                                                      S        Ԁ                x   x   <                     E  T   >  
+                                                                              Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ              p  x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
-                                                                        T   T                    E  0     
+                                                                        T   T                    E  0     
 
       
     
-         `   T   T                    E  0     
+         `   T   T                    E  0     
 
       
     
-         H  T   T                    E  0     
+         @  T   T                    E  0     
 
       
     
@@ -115,48 +110,47 @@
 
                                                                              Ԁ              ,  x   x   <                     E  T   >  
 
-                                                                     !        Ԁ                x   x   <                     E  T   =  
+                                                                     !        Ԁ                x   x   <                     E  T   =  
 
-                                                                     N        Ԁ                x   x   <                     E  T   ?  
+                                                                     N        Ԁ              ^  x   x   <                     E  T   ?  
 
-                                                                              Ԁ                x   x   <                     E  T   >  
+                                                                      n        Ԁ                x   x   <                     E  T   >  
 
-                                                                              Ԁ                x   x   <                     E  T   =  
+                                                                              Ԁ                x   x   <                     E  T   =  
 
-                                                                        T   T                    E  0     
+                                                                        T   T                    E  0     
 
       
     
-         C  T   T                    E  0     
+         C  T   T                    E  0     
 
       
     
-         AT  T   T                   E  0     
+         H  T   T                    E  0     
 
       
     
-         x  T   T                   E  0     
+         x  T   T                   E  0     
 
       
     
-         `   T   T                    E  0     
+         `   T   T                    E  0     
 
       
     
-         7  T   T               0    E  0     
+         7  T   T               0    E  0     
 
       
     
-         `   T   T               @    E  0     
+         `   T   T               @    E  0     
 
       
     
-         C  T   T               P    E  0 	    
+         C  T   T               P    E  0     
 
       
     
-      	   7  T   T               `    E  0 
-    
+      	   7  T   T               `    E  0 	    
 
       
     
diff -Naur ns-3.20/src/aodv/test/aodv-chain-regression-test-3-0.pcap ns-3.21/src/aodv/test/aodv-chain-regression-test-3-0.pcap
--- ns-3.20/src/aodv/test/aodv-chain-regression-test-3-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/aodv-chain-regression-test-3-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -2,177 +2,173 @@
 
     (    
     
-           O  X   X                     E  4      
+           q_  X   X                     E  4      
 
     (    
     
-           ]  T   T                    E  0     
-
-      
-    
-          s  @   @                            
+             @   @                            
 
-        t  @   @   <                             
+          @   @   <                            
      
-        t        Ԁ               u  T   T   <                     E  0      
+        h        Ԁ               c  T   T   <                     E  0      
 
       
     
-  +        u        Ԁ               K  @   @               0            
+  +        s        Ԁ                 @   @                            
 
-        N  @   @   <                            
+          @   @   <                            
      
-        ^        Ԁ               ي  T   T   <                @     E  0     
+                Ԁ                 T   T   <                0     E  0      
 
      
     
-  +                Ԁ                 @   @                            
+  +        }        Ԁ                 @   @                            
 
-                Ԁ                 T   T   <                0     E  0     
+        h        Ԁ               ~  T   T   <                0     E  0      
 
      
     
-  +          @   @   <                @            
+  +        {  @   @   <                @            
      
-        I        Ԁ                 @   @               P            
+        (        Ԁ                 @   @               P            
 
-        '  @   @   <                P            
+          @   @   <                @            
      
-                Ԁ               #  x   x   <                `     E  T    >  
+                Ԁ                x   x   <                `     E  T    >  
 
-                                                                       3        Ԁ                 @   @               `            
+                                                                              Ԁ               ` @   @               P            
 
-          @   @   <                             
+        b @   @   <                             
      
-                Ԁ               D  x   x   <                p     E  T    =  
+        r       Ԁ                x   x   <                `     E  T    =  
 
-                                                                       9        Ԁ                 x   x   <                0     E  T    @  
+                                                                              Ԁ                x   x   <                0     E  T    @  
 
-                                                                        #        Ԁ                 x   x   <                     E  T    ?  
+                                                                               Ԁ                x   x   <                p     E  T    ?  
 
-                                                                                Ԁ                 x   x   <                p     E  T    >  
+                                                                               Ԁ               y x   x   <                p     E  T    >  
 
-                                                                         T   T               @     E  0     
+                                                                        (
+ T   T               @     E  0      
 
       
     
                  Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
                                                                      8        Ԁ                x   x   <                P     E  T   @  
 
-                                                                      "        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
                                                                               Ԁ              Y  x   x   <                     E  T   >  
 
-                                                                      0  T   T                    E  0     
+                                                                      0  T   T                    E  0     
 
       
     
-         1@  T   T                    E  0     
+         O  T   T                    E  0     
 
       
     
-         X T   T               `     E  0     
+           T   T               `     E  0     
 
       
     
                  Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
                                                                      8        Ԁ                x   x   <                p     E  T   @  
 
-                                                                      "        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ              Y  x   x   <                     E  T   >  
+                                                                              Ԁ                x   x   <                     E  T   >  
 
-                                                                         T   T                    E  0     
+                                                                         T   T                    E  0     
 
       
     
-         H  T   T                    E  0     
+         1@  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
                  Ԁ                x   x   <                     E  T   >  
 
-                                                                             Ԁ              C  x   x   <                     E  T   =  
+                                                                             Ԁ              C  x   x   <                     E  T   =  
 
                                                                      8        Ԁ                x   x   <                     E  T   @  
 
-                                                                      "        Ԁ                x   x   <                     E  T   ?  
+                                                                      "        Ԁ                x   x   <                     E  T   ?  
 
-                                                                              Ԁ                x   x   <                     E  T   >  
+                                                                              Ԁ              t  x   x   <                     E  T   >  
 
-                                                                      D  T   T                    E  0     
+                                                                      D  T   T                    E  0     
 
       
     
-         S  T   T                   E  0     
+         H  T   T                    E  0     
 
       
     
-          T   T                    E  0     
+         X T   T                    E  0     
 
       
     
-         q_  T   T                    E  0     
+         S  T   T                   E  0     
 
       
     
-          T   T                    E  0     
+         X T   T                    E  0     
 
       
     
-         S  T   T               0    E  0     
+         q_  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+           T   T                    E  0     
 
       
     
-         H  T   T               @    E  0     
+         S  T   T               0    E  0     
 
       
     
-         { T   T   <                P    E  0 	    
+          T   T   <                @    E  0      
 
      
    
-           ?       Ԁ               T   T                    E  0     
+           ~       Ԁ              ( T   T                    E  0     
 
       
     
-         [  T   T               `    E  0 
-    
+         W  T   T               P    E  0     
 
       
     
-          T   T                    E  0     
+         (
+ T   T                    E  0     
 
       
     
-         I<  T   T               p    E  0     
+         [  T   T               `    E  0     
 
       
     
-           T   T                    E  0 	    
+           T   T                    E  0     
 
       
     
-      	   Yc  T   T                   E  0     
+      	   I<  T   T               p    E  0 	    
 
       
     
-      	   X T   T                    E  0 
-    
+      	     T   T                    E  0 	    
 
       
     
diff -Naur ns-3.20/src/aodv/test/aodv-chain-regression-test-4-0.pcap ns-3.21/src/aodv/test/aodv-chain-regression-test-4-0.pcap
--- ns-3.20/src/aodv/test/aodv-chain-regression-test-4-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/aodv-chain-regression-test-4-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,134 +1,128 @@
-ò            i       aP  X   X                     E  4      
+ò            i       `  X   X                     E  4      
 
     (    
     
-           H^  T   T                    E  0     
-
-      
-    
-          s  @   @                            
+           )  @   @                            
 
-        t  @   @   <                             
+        ,  @   @   <                            
      
-        t        Ԁ               ;u  T   T   <                     E  0      
+        <        Ԁ               ۄ  T   T   <                     E  0      
 
       
     
-  +         v        Ԁ                 @   @               0            
+  +                Ԁ               \  @   @                            
 
-                Ԁ               b  T   T   <                @     E  0     
+        +        Ԁ               A  T   T   <                0     E  0      
 
      
     
-  +          @   @   <                P            
+  +        v  @   @   <                @            
      
-        _        Ԁ                 @   @               `            
+        >       Ԁ                @   @               P            
 
-          @   @   <                             
+         @   @   <                             
      
-                Ԁ                 x   x   <                p     E  T    =  
+               Ԁ                x   x   <                `     E  T    =  
 
-                                                                               Ԁ               [  x   x   <                0     E  T    @  
+                                                                              Ԁ               1 x   x   <                0     E  T    @  
 
-                                                                        P        Ԁ                 x   x   <                     E  T    ?  
+                                                                        &       Ԁ               c x   x   <                p     E  T    ?  
 
-                                                                        X T   T               @     E  0     
+                                                                        	 T   T               @     E  0      
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
                                                                              Ԁ              Y  x   x   <                P     E  T   @  
 
-                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
 
-                                                                      @  T   T                    E  0     
+                                                                      YP  T   T                    E  0     
 
       
     
-          T   T               `     E  0     
+           T   T               `     E  0     
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
                                                                              Ԁ              Y  x   x   <                p     E  T   @  
 
-                                                                      N        Ԁ              C  x   x   <                     E  T   ?  
+                                                                      N        Ԁ                x   x   <                     E  T   ?  
 
-                                                                      H  T   T                    E  0     
+                                                                      @  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+         `  T   T                    E  0     
 
       
     
-         !        Ԁ                x   x   <                     E  T   =  
+         !        Ԁ                x   x   <                     E  T   =  
 
                                                                              Ԁ              Y  x   x   <                     E  T   @  
 
-                                                                      N        Ԁ                x   x   <                     E  T   ?  
+                                                                      N        Ԁ              ^  x   x   <                     E  T   ?  
 
-                                                                      AT  T   T                   E  0     
+                                                                      H  T   T                    E  0     
 
       
     
-          T   T                    E  0     
+          T   T                    E  0     
 
       
     
-         _  T   T                    E  0     
+         AT  T   T                   E  0     
 
       
     
-          T   T                    E  0     
+          T   T                    E  0     
 
       
     
-         AT  T   T               0    E  0     
+         _  T   T                    E  0     
 
       
     
-            T   T                    E  0     
+         H  T   T                    E  0     
 
       
     
-         H  T   T               @    E  0     
+         AT  T   T               0    E  0     
 
       
     
-          T   T   <                P    E  0 	    
+         B T   T   <                @    E  0      
 
      
    
-                  Ԁ              @ T   T                    E  0     
+           R       Ԁ               T   T                    E  0     
 
       
     
-         \  T   T               `    E  0 
-    
+         )X  T   T               P    E  0     
 
       
     
-         X T   T                    E  0     
+         	 T   T                    E  0     
 
       
     
-         <  T   T               p    E  0     
+         \  T   T               `    E  0     
 
       
     
-            T   T                    E  0 	    
+         H  T   T                    E  0     
 
       
     
-      	   c  T   T                   E  0     
+      	   <  T   T               p    E  0 	    
 
       
     
-      	    T   T                    E  0 
-    
+      	     T   T                    E  0 	    
 
       
     
diff -Naur ns-3.20/src/aodv/test/bug-606-test-0-0.pcap ns-3.21/src/aodv/test/bug-606-test-0-0.pcap
--- ns-3.20/src/aodv/test/bug-606-test-0-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/bug-606-test-0-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -8,119 +8,127 @@
     
            3)  @   @   <                            
      
-        V*        Ԁ               I  @   @                            
+        *        Ԁ               HJ  @   @                            
 
-        I  @   @   <                            
+        jJ  @   @   <                            
      
-        J        Ԁ               yK  T   T   <                0     E  0     
+        K        Ԁ               K  T   T   <                0     E  0      
 
      
     
-  +        K        Ԁ               1W  @   @                            
+  +        L        Ԁ               W  @   @                            
 
-        4X  @   @   <                @            
+        X  @   @   <                @            
      
-        DX        Ԁ               X  x   x   <                0     E  T    @  
+        X        Ԁ               jY  x   x   <                0     E  T    @  
 
-                                                                       Y        Ԁ               Hq  T   T               @     E  0     
-
-      
-   
-          Ty  @   @               P            
+                                                                       ^Z        Ԁ               y  @   @               P            
 
-        #z        Ԁ               W{  x   x   <                `     E  T    ?  
+        z        Ԁ               {  x   x   <                `     E  T    ?  
 
-                                                                       |        Ԁ               }  x   x   <                p     E  T    ?  
+                                                                       (}        Ԁ               \~  x   x   <                p     E  T    ?  
 
-                                                                        }        Ԁ                  x   x   <                P     E  T   @  
+                                                                        l~        Ԁ               S T   T               @     E  0     
+
+      
+   
+             x   x   <                P     E  T   @  
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
                                                                      !        Ԁ              1  x   x   <                     E  T   ?  
 
-                                                                      A        Ԁ                T   T                    E  0     
+                                                                      A        Ԁ                T   T                    E  0     
 
       
     
-         Hq  T   T               `     E  0     
+         S T   T               `     E  0     
 
       
    
          (#  @   @               p            
 
-       *$  @   @   <                            
+       /  T   T                    E  0     
+
+      
+    
+         4 T   T                    E  0     
+
+      
+   
+             @   @                           
+
+         @   @   <                            
      
-       :$        Ԁ              $  x   x   <                     E  T   @  
+               Ԁ                x   x   <                     E  T   @  
 
-                                                                     %        Ԁ              /  T   T                    E  0     
+                                                                             Ԁ                x   x   <                     E  T   @  
+
+                                                                             Ԁ                T   T                    E  0     
 
       
     
-         fE  @   @                           
+         P"  @   @                           
 
-       5F        Ԁ              G  x   x   <                     E  T   ?  
+       #        Ԁ              $  x   x   <                     E  T   ?  
 
-                                                                     R  T   T                    E  0     
+                                                                     %  x   x   <                     E  T   ?  
 
-      
-   
-         \  @   @   <                            
+                                                                     8  @   @   <                           
      
-       ]        Ԁ              |  @   @                           
+       9        Ԁ              ;        Ԁ              fY  @   @                           
 
-       }  @   @   <                            
+       Y  @   @   <                            
      
-       }        Ԁ              ~  x   x   <                    E  T   ?  
+       4Z        Ԁ              [  x   x   <                0    E  T   ?  
 
-                                                                      ~        Ԁ                  x   x   <                     E  T   @  
-
-                                                                              Ԁ                x   x   <                     E  T   ?  
-
-                                                                     !        Ԁ                x   x   <                0    E  T   ?  
+                                                                      '[        Ԁ              v\  x   x   <                @    E  T   ?  
 
-                                                                              Ԁ                T   T               @    E  0     
-
-      
-    
-         e  T   T                    E  0     
+                                                                      \        Ԁ               H T   T                    E  0     
 
       
    
-         (#  @   @                           
-
-       0u  T   T                    E  0     
+             x   x   <                     E  T   @  
 
-      
-   
-             @   @                           
-
-       U  T   T                    E  0     
+                                                                     I  x   x   <                     E  T   @  
 
-      
-   
-             @   @                          
-
-       Hq  T   T                    E  0     
+                                                                     9  x   x   <                     E  T   @  
+
+                                                                     	  x   x   <                     E  T   @  
+
+                                                                     C  x   x   <                     E  T   @  
+
+                                                                       x   x   <                     E  T   @  
+
+                                                                     /  x   x   <                     E  T   @  
+
+                                                                     W T   T                    E  0     
 
       
    
-             @   @               0           
-
-         X   X               @    E  4     
+           X   X                    E  4     
 
           
     
-          '  T   T               P    E  0 	    
+          @  T   T                   E  0     
 
       
    
-      	   (#  T   T               `    E  0 
-    
+           T   T                    E  0     
 
       
    
-      	   @ X   X               p    E  4     
+         \ X   X               0    E  4 	    
 
           
     
-       
\ No newline at end of file
+          'X T   T               @    E  0 
+    
+
+      
+   
+      	   @ T   T               P    E  0     
+
+      
+   
+      
\ No newline at end of file
diff -Naur ns-3.20/src/aodv/test/bug-606-test-1-0.pcap ns-3.21/src/aodv/test/bug-606-test-1-0.pcap
--- ns-3.20/src/aodv/test/bug-606-test-1-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/bug-606-test-1-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -6,47 +6,47 @@
 
     (    
     
-           (  @   @                            
+             T   T                     E  0      
+
+      
+    
+          (  @   @                           
 
         (  @   @   <                            
      
-        p)        Ԁ               *  T   T   <                     E  0      
+        p)        Ԁ               *  T   T   <                      E  0      
 
       
     
-  +        **        Ԁ               ZI  @   @                            
+  +        *        Ԁ               I  @   @                            
 
-        \J  @   @   <                            
+        J  @   @   <                            
      
-        lJ        Ԁ               J  T   T   <                0     E  0     
+        J        Ԁ               nK  T   T   <                0     E  0      
 
      
     
-  +        K        Ԁ               W  @   @                            
+  +        3L        Ԁ               X  @   @                            
 
-        W  @   @   <                @            
+        AX  @   @   <                @            
      
-        pX        Ԁ               Y  x   x   <                0     E  T    @  
+        X        Ԁ               "Z  x   x   <                0     E  T    @  
 
-                                                                       Y        Ԁ               q  T   T               @     E  0     
-
-      
-   
-          x  @   @               P            
+                                                                       2Z        Ԁ               by  @   @               P            
 
-        y  @   @   <                             
+        ez  @   @   <                0            
      
-        y        Ԁ               z  x   x   <                `     E  T    ?  
+        uz        Ԁ               {  x   x   <                `     E  T    ?  
 
-                                                                       {        Ԁ               |  x   x   <                0     E  T    @  
-
-                                                                        |        Ԁ               &}  x   x   <                p     E  T    ?  
+                                                                       |        Ԁ               |  x   x   <                @     E  T    @  
 
-                                                                        ~        Ԁ               (  T   T               @     E  0     
+                                                                        |        Ԁ               }  x   x   <                p     E  T    ?  
 
+                                                                        ~        Ԁ               `T T   T               @     E  0     
+
       
-    
-            x   x   <                P     E  T   @  
+   
+            x   x   <                P     E  T   @  
 
                                                                               Ԁ                x   x   <                     E  T   ?  
 
@@ -54,96 +54,91 @@
 
                                                                               Ԁ              y  x   x   <                     E  T   ?  
 
-                                                                      n        Ԁ              0  T   T                    E  0     
+                                                                      n        Ԁ              0  T   T                    E  0     
 
       
     
-         q  T   T               `     E  0     
+         F  T   T               `     E  0     
+
+      
+    
+         `T T   T               `     E  0     
 
       
    
-         8  T   T               `     E  0     
-
+         p/  T   T                    E  0     
+
       
-    
-         #  @   @               p            
+    
+          5 T   T                    E  0     
+
+      
+   
+         p   @   @                           
 
-       #  @   @   <                            
+          @   @   <                            
      
-       g$        Ԁ              %  x   x   <                     E  T   @  
+       ?        Ԁ                x   x   <                     E  T   @  
+
+                                                                             Ԁ                x   x   <                     E  T   @  
 
-                                                                     %        Ԁ              p/  T   T                    E  0     
+                                                                             Ԁ              0  T   T                    E  0     
 
       
     
-         D  @   @                           
+         !  @   @                           
 
-       E  @   @   <                p            
+       "  @   @   <                            
      
-       	F        Ԁ              F  x   x   <                     E  T   ?  
+       "        Ԁ              \#  x   x   <                     E  T   ?  
 
-                                                                     G        Ԁ              R  T   T                    E  0     
+                                                                     P$        Ԁ              $  x   x   <                     E  T   ?  
 
+                                                                     %        Ԁ              '  T   T                    E  0     
+
       
-   
-         [  @   @                           
+    
+         8  @   @                           
 
-       [  @   @   <                            
+       .8  @   @   <                           
      
-       T\        Ԁ              I]  x   x   <                     E  T   @  
+       8        Ԁ              9  x   x   <                     E  T   @  
 
-                                                                      Y]        Ԁ              |  @   @                           
+                                                                      9        Ԁ              S;  x   x   <                     E  T   @  
+
+                                                                      c;        Ԁ              X  @   @                           
 
-       }  @   @   <                            
+       Y  @   @   <                            
      
-       }        Ԁ              2~  x   x   <                    E  T   ?  
-
-                                                                      '        Ԁ                T   T                    E  0     
-
-      
-    
-            x   x   <                     E  T   @  
-
-                                                                              Ԁ                x   x   <                     E  T   ?  
-
-                                                                             Ԁ                x   x   <                     E  T   @  
+       Z        Ԁ              _Z  x   x   <                0    E  T   ?  
 
-                                                                              Ԁ              L  x   x   <                0    E  T   ?  
+                                                                      T[        Ԁ              [  x   x   <                @    E  T   ?  
 
-                                                                      A        Ԁ              0  T   T               @    E  0     
-
-      
-    
-         f  T   T                    E  0     
+                                                                      \        Ԁ              H T   T                    E  0     
 
       
    
-           T   T                    E  0     
-
-      
-    
-         0  T   T               P    E  0     
+         0  T   T               P    E  0     
 
       
     
-         '  T   T               `    E  0     
+         '  T   T               `    E  0     
 
       
     
-         '  T   T               p    E  0     
+         '  T   T               p    E  0     
 
       
     
-           T   T                   E  0     
+           T   T                   E  0     
 
       
     
-         p/  T   T                   E  0 	    
+         p/  T   T                   E  0     
 
       
     
-      	   +  T   T                   E  0 
-    
+      	   +  T   T                   E  0 	    
 
       
     
diff -Naur ns-3.20/src/aodv/test/bug-606-test-2-0.pcap ns-3.21/src/aodv/test/bug-606-test-2-0.pcap
--- ns-3.20/src/aodv/test/bug-606-test-2-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/bug-606-test-2-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -2,112 +2,111 @@
 
     (    
     
-           0(  @   @                            
+           @  T   T                     E  0      
+
+      
+    
+          0(  @   @                           
 
         3)  @   @   <                            
      
-        C)        Ԁ               )  T   T   <                     E  0      
+        C)        Ԁ               *  T   T   <                      E  0      
 
       
     
-  +        V*        Ԁ               I  @   @                            
+  +        *        Ԁ               HJ  @   @                            
 
-        J        Ԁ               yK  T   T   <                0     E  0     
+        K        Ԁ               K  T   T   <                0     E  0      
 
      
     
-  +        4X  @   @   <                @            
+  +        X  @   @   <                @            
      
-        Y        Ԁ               Ty  @   @               P            
+        ^Z        Ԁ               y  @   @               P            
 
-        vy  @   @   <                             
+        y  @   @   <                0            
      
-        #z        Ԁ               W{  x   x   <                `     E  T    ?  
+        z        Ԁ               {  x   x   <                `     E  T    ?  
 
-                                                                       g{        Ԁ               {  x   x   <                0     E  T    @  
-
-                                                                        |        Ԁ               }  x   x   <                p     E  T    ?  
+                                                                       {        Ԁ               3|  x   x   <                @     E  T    @  
 
-                                                                          T   T               @     E  0     
+                                                                        (}        Ԁ               \~  x   x   <                p     E  T    ?  
 
-      
-    
-                  Ԁ                x   x   <                     E  T   ?  
+                                                                                Ԁ                x   x   <                     E  T   ?  
 
                                                                              Ԁ              ,  x   x   <                P     E  T   @  
 
                                                                       !        Ԁ              1  x   x   <                     E  T   ?  
 
-                                                                        T   T                    E  0     
+                                                                        T   T                    E  0     
 
       
     
-           T   T               `     E  0     
+         PF  T   T               `     E  0     
+
+      
+    
+         (#  T   T               p     E  0     
 
       
     
-         *$  @   @   <                            
+         /  T   T                    E  0     
+
+      
+    
+           @   @   <                            
      
-       %        Ԁ              /  T   T                    E  0     
+               Ԁ                      Ԁ                T   T                    E  0     
 
       
     
-         fE  @   @                           
+         P"  @   @                           
 
-       E  @   @   <                p            
+       r"  @   @   <                            
      
-       5F        Ԁ              G  x   x   <                     E  T   ?  
+       #        Ԁ              $  x   x   <                     E  T   ?  
 
-                                                                     G        Ԁ              [  @   @                           
-
-       \  @   @   <                            
-     
-       (\        Ԁ              \  x   x   <                     E  T   @  
-
-                                                                      ]        Ԁ              |  @   @                           
-
-       }        Ԁ              ~  x   x   <                    E  T   ?  
-
-                                                                        T   T                    E  0     
+                                                                     $$        Ԁ              %  x   x   <                     E  T   ?  
+
+                                                                     %        Ԁ              '  T   T                    E  0     
 
       
     
-                  Ԁ                x   x   <                     E  T   ?  
-
-                                                                             Ԁ              ,  x   x   <                     E  T   @  
+         7  @   @                           
+
+       8  @   @   <                           
+     
+       8        Ԁ              8  x   x   <                     E  T   @  
 
-                                                                      !        Ԁ                x   x   <                0    E  T   ?  
+                                                                      9        Ԁ              :  x   x   <                     E  T   @  
 
-                                                                        T   T               @    E  0     
-
-      
-    
-         p  T   T                    E  0     
+                                                                      ;        Ԁ              fY  @   @                           
+
+       4Z        Ԁ              [  x   x   <                0    E  T   ?  
 
-      
-    
-         ȯ  T   T                    E  0     
+                                                                      v\  x   x   <                @    E  T   ?  
+
+                                                                      hB  T   T                    E  0     
 
       
     
-         @  T   T                    E  0     
+         .  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+         @  T   T                    E  0     
 
       
     
-           T   T                    E  0     
+         PF  T   T                    E  0     
 
       
     
-         X  T   T                   E  0 	    
+         *  T   T                   E  0     
 
       
     
-      	   @  T   T                    E  0 
-    
+      	   .  T   T                    E  0 	    
 
       
     
diff -Naur ns-3.20/src/aodv/test/tcp-chain-test-0-0.pcap ns-3.21/src/aodv/test/tcp-chain-test-0-0.pcap
--- ns-3.20/src/aodv/test/tcp-chain-test-0-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/tcp-chain-test-0-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,12 +1,12 @@
-ò            i       X T   T                     E  0      
-
-      
-    
-           T   T                     E  0      
+ò            i         T   T                     E  0      
 
       
     
-         @  X   X                    E  4     
+          @ T   T                     E  0      
+
+      
+    
+         @  X   X                    E  4     
 
     (     
 
@@ -16,322 +16,438 @@
     (    
 
     
-          G( @   @   <                             
+             @   @   <                             
      
-       )       Ԁ              - @   @               0            
+       k        Ԁ              '  @   @               0            
 
-       - @   @   <                             
+       I  @   @   <                             
      
-       .       Ԁ              / T   T   <                @     E  0     
+               Ԁ              ' T   T   <                @     E  0      
 
      
 
     
-         /       Ԁ              R @   @               0            
+         7       Ԁ               @   @               0            
 
-       S @   @   <                P            
+        @   @   <                P            
      
-       T       Ԁ              VT L   L   <                @     E  (    @  
+              Ԁ              . \   \   <                @     E  8    @  
 
 
- 	        P           U       Ԁ              /Y @   @               `            
+ 	             
+                       Ԁ              r$ @   @               `            
 
-       Y       Ԁ              Z L   L   <                p     E  (    ?  
+       A%       Ԁ              Q& \   \   <                p     E  8    ?  
 
 
- 	        P                  Ԁ              + L   L   <                     E  (    8  
+ 	             
+                S       Ԁ              	 \   \   <                     E  8    8  
 
 
- 	       P           ;       Ԁ               L   L   <                P     E  (   @  
+ 	            
+  Q                   Ԁ              g X   X   <                P     E  4   @  
 
 
- 	      P           F       Ԁ               L   L   <                     E  (   ?  
+ 	           
+  Z  Q         4       Ԁ               X   X   <                     E  4   ?  
 
 
- 	      P           H d  d  <                `     E @   @  
+ 	           
+  Z  Q         H p  p  <                `     E L   @  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              6 d  d  <                     E @   ?  
+ 	           
+  e  Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              V p  p  <                     E L   ?  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                     E  (   8  
+ 	           
+  e  Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 9       Ԁ               X   X   <                     E  4   8  
 
 
- 	     P                  Ԁ                   <                p     E    @  
+ 	     z    
+  m  e                Ԁ              I (  (  <                p     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <       Ԁ              j     <                     E    ?  
+ 	          
+  o  m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ~       Ԁ               (  (  <                     E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d  d  <                     E @   @  
+ 	          
+  o  m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          p  p  <                     E L   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              ~ d  d  <                     E @   ?  
+ 	          
+    m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 $       Ԁ               p  p  <                     E L   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              % L   L   <                     E  (   8  
+ 	          
+    m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 o       Ԁ              ! X   X   <                     E  4   8  
 
 
- 	     P           5       Ԁ                   <                     E    @  
+ 	     z    
+             1       Ԁ               (  (  <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                     E    ?  
+ 	          
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ԁ                (  (  <                     E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ظ d  d  <                     E @   @  
+ 	          
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ظ p  p  <                     E L   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \       Ԁ              ~     <                     E    @  
+ 	          
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   l       Ԁ               (  (  <                     E    @  
 
 
- 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           B     <                     E    @  
+ 	  	        
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           b (  (  <                     E    @  
 
 
- 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           B     <                     E    @  
+ 	  	        
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           r (  (  <                     E    @  
 
 
- 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           g       Ԁ              q     <                    E    ?  
+ 	  	        
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               (  (  <                    E    ?  
 
 
- 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-       Ԁ               L   L   <                     E  (   8  
+ 	  	        
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               X   X   <                     E  4   8  
 
 
- 	     	P                  Ԁ                d  d  <                     E @   @  
+ 	     	z    
+  g  _                Ԁ                p  p  <                     E L   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               d  d  <                0    E @   ?  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              . p  p  <                0    E L   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ~     <                     E  	  @  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (  (  <                     E  	  @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <                     E  	  @  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (  (  <                     E  	  @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ٯ       Ԁ                   <                @    E  	  ?  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              3 (  (  <                @    E  	  ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               L   L   <                P    E  (   8  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ               X   X   <                P    E  4   8  
 
 
- 	     P                  Ԁ              h	 d  d  <                     E @ 
+ 	     рz    
+                    Ԁ              h	 p  p  <                     E L 
   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              V	 d  d  <                `    E @ 
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              v	 p  p  <                `    E L 
   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                     E    @  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   .	 (  (  <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )	     <                     E    @  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Y	 (  (  <                     E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           N	       Ԁ              X	     <                p    E    ?  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	       Ԁ              	 (  (  <                p    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           a	       Ԁ              	 L   L   <                    E  (   8  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	       Ԁ              N	 X   X   <                    E  4   8  
 
 
- 	     P           	       Ԁ              q d  d  <                     E @   @  
+ 	     z    
+  a  Y         ^	       Ԁ              q p  p  <                     E L   @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   4u       Ԁ              x d  d  <                    E @   ?  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Du       Ԁ              x p  p  <                    E L   ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )y     <                    E    @  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Iy (  (  <                    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           D}     <                    E    @  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         t} (  (  <                    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i       Ԁ              s     <                    E    ?  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              Ã (  (  <                    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           -       Ԁ              ϟ L   L   <                    E  (   8  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              W X   X   <                    E  4   8  
 
 
- 	     P           ߟ       Ԁ              Y d  d  <                     E @   @  
+ 	     z    
+             g       Ԁ              Y p  p  <                     E L   @  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |]       Ԁ              ` d  d  <                    E @   ?  
+ 	  q        
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ]       Ԁ              a p  p  <                    E L   ?  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a     <                0    E    @  
+ 	  q        
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a (  (  <                0    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           e     <                0    E    @  
+ 	          
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           f (  (  <                0    E    @  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i       Ԁ              l     <                    E    ?  
+ 	          
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Bi       Ԁ              \l (  (  <                    E    ?  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              B L   L   <                    E  (   8  
+ 	          
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           D       Ԁ               X   X   <                    E  4   8  
 
 
- 	     P           R       Ԁ                  d  d  <                @    E @   @  
+ 	     z    
+  [  S                Ԁ                  p  p  <                @    E L   @  
 
 
- 	  Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Ԁ                    <                P    E    @  
+ 	  Y        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ                (  (  <                P    E    @  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <                P    E    @  
+ 	  q        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         0  (  (  <                P    E    @  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-      <                P    E    @  
+ 	  q        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
+  (  (  <                P    E    @  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ԁ              H      <                     E    ?  
+ 	  q        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ?        Ԁ                (  (  <                     E    ?  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             T   T               `    E  0     
+ 	  q        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           T   T               `    E  0     
 
       
    
-         ;        Ԁ              3<  L   L   <                    E  (   8  
+         1        Ԁ              2  X   X   <                    E  4   8  
 
 
- 	     qP           C<        Ԁ              ?  T   T                    E  0     
+ 	     qz    
+             2        Ԁ              ?  T   T                    E  0     
 
       
     
-           @   @               p           
+          @   @               p           
 
-        @   @   <                0           
+        @   @   <                0           
      
-              Ԁ               d  d  <                    E @   @  
+       *       Ԁ               p  p  <                    E L   @  
 
 
- 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ                   <                    E    @  
+ 	  A        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   1       Ԁ               (  (  <                    E    @  
 
 
- 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               @   @               @           
+ 	  !Y        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               @   @               @           
 
-              Ԁ              O d  d  <                P    E @   ?  
+              Ԁ              o p  p  <                P    E L   ?  
 
 
- 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                `    E    ?  
+ 	  A        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2	 (  (  <                `    E    ?  
 
 
- 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @   @   <                p           
+ 	  !Y        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           + @   @   <                p           
      
-       E       Ԁ              a @   @                          
+       -       Ԁ              Z= @   @                          
 
-        @   @   <                           
+       |= @   @   <                           
      
-       0       Ԁ              Y L   L   <                    E  ( 	  8  
+       )>       Ԁ              b? X   X   <                    E  4 	  8  
 
 
- 	     !YP           i       Ԁ               d  d  <                    E @   @  
+ 	     !Yz    
+  p  M         r?       Ԁ               p  p  <                    E L   @  
 
 
- 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              ~ d  d  <                    E @   ?  
+ 	  #)        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 $       Ԁ               p  p  <                    E L   ?  
 
 
- 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   -     <                    E    @  
+ 	  #)        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 M (  (  <                    E    @  
 
 
- 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $     <                    E    @  
+ 	  %A        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         T (  (  <                    E    @  
 
 
- 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           I       Ԁ              S     <                    E    ?  
+ 	  %A        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ               (  (  <                    E    ?  
 
 
- 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              % L   L   <                    E  ( 
+ 	  %A        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         K       Ԁ               X   X   <                    E  4 
   8  
 
 
- 	     %AP           5       Ԁ              ظ d  d  <                    E @   @  
+ 	     %Az    
+                    Ԁ              ظ p  p  <                    E L   @  
 
 
- 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \       Ԁ              ƿ d  d  <                    E @   ?  
+ 	  '        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   l       Ԁ               p  p  <                    E L   ?  
 
 
- 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   H     <                    E    @  
+ 	  '        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   h (  (  <                    E    @  
 
 
- 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <                    E    @  
+ 	  ))        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (  (  <                    E    @  
 
 
- 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                    E    ?  
+ 	  ))        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               (  (  <                    E    ?  
 
 
- 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           w       Ԁ               L   L   <                    E  (   8  
+ 	  ))        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           *       Ԁ               X   X   <                    E  4   8  
 
 
- 	     ))P           )       Ԁ                d  d  <                    E @   @  
+ 	     ))z    
+  	O  	G                Ԁ                p  p  <                    E L   @  
 
 
- 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               d  d  <                     E @   ?  
+ 	  *        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              . p  p  <                     E L   ?  
 
 
- 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Ϩ     <                     E    @  
+ 	  *        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (  (  <                     E    @  
 
 
- 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )     <                     E    @  
+ 	  -        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Y (  (  <                     E    @  
 
 
- 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           N       Ԁ              X     <                    E    ?  
+ 	  -        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ               (  (  <                    E    ?  
 
 
- 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              q L   L   <                     E  (   8  
+ 	  -        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              M X   X   <                     E  4   8  
 
 
- 	     -P                  Ԁ              h	 d  d  <                    E @   @  
+ 	     -z    
+  	  	         ]       Ԁ              h	 p  p  <                    E L   @  
 
 
- 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              V	 d  d  <                0    E @   ?  
+ 	  .        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	       Ԁ              v	 p  p  <                0    E L   ?  
 
 
- 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	     <                     E    @  
+ 	  .        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
+	 (  (  <                     E    @  
 
 
- 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           D	     <                     E    @  
+ 	  0        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         t	 (  (  <                     E    @  
 
 
- 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           i	       Ԁ              s	     <                @    E    ?  
+ 	  0        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	       Ԁ              Û	 (  (  <                @    E    ?  
 
 
- 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           k	       Ԁ              	 L   L   <                P    E  (   8  
+ 	  0        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         0	       Ԁ              	 X   X   <                P    E  4   8  
 
 
- 	     0P           	       Ԁ              q d  d  <                0    E @   @  
+ 	     0z    
+  
+I  
+A         	       Ԁ              q p  p  <                0    E L   @  
 
 
- 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   4u       Ԁ              x d  d  <                `    E @   ?  
+ 	  2        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Du       Ԁ              x p  p  <                `    E L   ?  
 
 
- 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )y     <                @    E    @  
+ 	  2        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Iy (  (  <                @    E    @  
 
 
- 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           q}     <                @    E    @  
+ 	  4        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         } (  (  <                @    E    @  
 
 
- 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                   <                p    E    ?  
+ 	  4        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ր       Ԁ               (  (  <                p    E    ?  
 
 
- 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           "       Ԁ              Ĩ L   L   <                    E  (   8  
+ 	  4        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              7 X   X   <                    E  4   8  
 
 
- 	     4P           Ԩ       Ԁ              Y d  d  <                P    E @   @  
+ 	     4z    
+  
+  
+         G       Ԁ              Y p  p  <                P    E L   @  
 
 
- 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |]       Ԁ              ` d  d  <                    E @   ?  
+ 	  6        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ]       Ԁ              a p  p  <                    E L   ?  
 
 
- 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a     <                `    E    @  
+ 	  6        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 a (  (  <                `    E    @  
 
 
- 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           e     <                `    E    @  
+ 	  8        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         e (  (  <                `    E    @  
 
 
- 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           h       Ԁ              k     <                    E    ?  
+ 	  8        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         i       Ԁ              8l (  (  <                    E    ?  
 
 
- 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              + L   L   <                    E  (   8  
+ 	  8        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         0       Ԁ               X   X   <                    E  4   8  
 
 
- 	     8P           ;       Ԁ           
\ No newline at end of file
+ 	     8ɀz    
+  C  ;                Ԁ           
\ No newline at end of file
diff -Naur ns-3.20/src/aodv/test/tcp-chain-test-9-0.pcap ns-3.21/src/aodv/test/tcp-chain-test-9-0.pcap
--- ns-3.20/src/aodv/test/tcp-chain-test-9-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/tcp-chain-test-9-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,370 +1,443 @@
-ò            i        d T   T                     E  0      
+ò            i       }  T   T                     E  0      
 	
       
 	    
-	          p T   T                     E  0      
+	            T   T                     E  0      
 
 
       
 
     
 
-           @   @                           
+         H^  T   T                    E  0     
+	
+      
+	    
+	         ə  @   @                            
 	
-               Ԁ              N  T   T   <                      E  0     
+               Ԁ                T   T   <                0     E  0      
 	
    @ 
 
     
-         w  @   @               0            
+         @  T   T                    E  0     
+
+
+      
+
+    
+
+           @   @               @            
 	
 
-         @   @   <                            
+       
+  @   @   <                             
 
      
-	       F        Ԁ              8  T   T   <                @     E  0     
+	               Ԁ              ՠ  T   T   <                P     E  0      
 	
 
      
    
 
-  _       H        Ԁ              !  @   @   <                P            
+  _               Ԁ              W  @   @   <                `            
 	     
-       5        Ԁ              D T   T               `     E  0     
-	
-      
-	    
-	         0o T   T                     E  0     
-
-
-      
-
-    
-
-         9       Ԁ              ۵ L   L   <                p     E  (    8  
+               Ԁ              R       Ԁ               \   \   <                p     E  8    8  
 
 
- 	        P                  Ԁ              3 @   @               0            
+ 	             
+                       Ԁ              x @   @               0            
 
 
-	       5 @   @   <                            
+	       { @   @   <                            
 	     
 
-       E       Ԁ               L   L   <                @     E  (    @  
+              Ԁ              ٵ \   \   <                @     E  8    @  
 
 
- 	       P           P       Ԁ               L   L   <                     E  (    ?  
+ 	            
+  Q                   Ԁ              i \   \   <                     E  8    ?  
 
 
- 	       P                  Ԁ              3 L   L   <                     E  (   8  
+ 	            
+  Q                   Ԁ               X   X   <                     E  4   8  
 
 
- 	      P           C       Ԁ              Y       Ԁ               d  d  <                     E @   8  
+ 	           
+  Z  Q                Ԁ                     Ԁ              S	 p  p  <                     E L   8  
 
 
- 	      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              !	 L   L   <                P     E  (   @  
+ 	           
+  e  Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 c	       Ԁ              	 X   X   <                P     E  4   @  
 
 
- 	     P           	       Ԁ              
- L   L   <                     E  (   ?  
+ 	     z    
+  m  e         ~
+       Ԁ              f X   X   <                     E  4   ?  
 
 
- 	     P           L+       Ԁ              V.     <                     E    8  
+ 	     z    
+  m  e         ,       Ԁ              0 (  (  <                     E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           f.       Ԁ                     Ԁ               d  d  <                     E @   8  
+ 	          
+  o  m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (0       Ԁ              !       Ԁ               p  p  <                     E L   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              i L   L   <                `     E  (   @  
+ 	          
+    m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ               X   X   <                `     E  4   @  
 
 
- 	     P           &       Ԁ               L   L   <                     E  (   ?  
+ 	     z    
+                    Ԁ               X   X   <                     E  4   ?  
 
 
- 	     P                  Ԁ                   <                     E    8  
+ 	     z    
+             +       Ԁ              E (  (  <                     E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                     Ԁ              S d  d  <                    E @   8  
+ 	          
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             U       Ԁ              i       Ԁ               p  p  <                    E L   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   c       Ԁ               L   L   <                p     E  (   @  
-
-
- 	     	P           n       Ԁ              s L   L   <                     E  (   ?  
+ 	          
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              A X   X   <                p     E  4   @  
 
 
- 	     	P            L   L   <                     E  (   ?  
+ 	     	z    
+  g  _                Ԁ               X   X   <                     E  4   ?  
 
 
- 	     	P            L   L   <                     E  (   ?  
+ 	     	z    
+  g  _          X   X   <                     E  4   ?  
 
 
- 	     	P            L   L   <                     E  (   ?  
+ 	     	z    
+  g  _                Ԁ               (  (  <                0    E    8  
+
 
-
- 	     	P           N L   L   <                     E  (   ?  
+ 	  	        
+  _                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                     Ԁ              + p  p  <                @    E L   8  
+
 
-
- 	     	P            L   L   <                     E  (   ?  
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ;       Ԁ               X   X   <                     E  4   @  
 
 
- 	     	P                  Ԁ               L   L   <                     E  (   ?  
+ 	     рz    
+             V       Ԁ              # X   X   <                P    E  4   ?  
 
 
- 	     	P                <                0    E    8  
-
-
- 	  	   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              1       Ԁ               d  d  <                @    E @   8  
-
-
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                     E  (   @  
+ 	     рz    
+             V X   X   <                P    E  4   ?  
 
 
- 	     P                  Ԁ              | L   L   <                P    E  (   ?  
+ 	     рz    
+             4 X   X   <                P    E  4   ?  
 
 
- 	     P            L   L   <                P    E  (   ?  
+ 	     рz    
+              X   X   <                P    E  4   ?  
 
 
- 	     P            L   L   <                P    E  (   ?  
+ 	     рz    
+             " X   X   <                P    E  4   ?  
 
 
- 	     P                  Ԁ               L   L   <                P    E  (   ?  
+ 	     рz    
+              X   X   <                P    E  4   ?  
 
 
- 	     P                <                `    E  	  8  
+ 	     рz    
+                    Ԁ              - (  (  <                `    E  	  8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           )       Ԁ              y	       Ԁ              	 d  d  <                p    E @ 
+ 	          
+    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         =       Ԁ              	       Ԁ              s	 p  p  <                p    E L 
   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              A	 L   L   <                     E  (   @  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              Ѫ	 X   X   <                     E  4   @  
 
 
- 	     P           	       Ԁ              	 L   L   <                    E  (   ?  
+ 	     z    
+  a  Y         	       Ԁ              	 X   X   <                    E  4   ?  
 
 
- 	     P           		       Ԁ              	     <                    E    8  
+ 	     z    
+  a  Y         	       Ԁ              7	 (  (  <                    E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #	       Ԁ                     Ԁ              + d  d  <                    E @   8  
+ 	          
+  Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           G	       Ԁ              A       Ԁ               p  p  <                    E L   8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;       Ԁ               L   L   <                     E  (   @  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ˒       Ԁ               X   X   <                     E  4   @  
 
 
- 	     P           F       Ԁ               L   L   <                    E  (   ?  
+ 	     z    
+                    Ԁ               X   X   <                    E  4   ?  
 
 
- 	     P            L   L   <                    E  (   ?  
+ 	     z    
+             I X   X   <                    E  4   ?  
 
 
- 	     P                  Ԁ                   <                    E    8  
-
-
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           .       Ԁ              	w       Ԁ              sz d  d  <                    E @   8  
-
-
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   z       Ԁ              z L   L   <                     E  (   @  
+ 	     z    
+             O X   X   <                    E  4   ?  
 
 
- 	     P           {       Ԁ              K| L   L   <                    E  (   ?  
+ 	     z    
+                    Ԁ              Ʀ (  (  <                    E    8  
+
 
-
- 	     P           8} L   L   <                    E  (   ?  
+ 	          
+    a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ֦       Ԁ              w       Ԁ              { p  p  <                    E L   8  
+
 
-
- 	     P           ~ L   L   <                    E  (   ?  
+ 	  q        
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   {       Ԁ              a{ X   X   <                     E  4   @  
 
 
- 	     P           n L   L   <                    E  (   ?  
+ 	     z    
+  [  S         .|       Ԁ              U} X   X   <                    E  4   ?  
 
 
- 	     P            L   L   <                    E  (   ?  
+ 	     z    
+  [  S         ~ X   X   <                    E  4   ?  
 
 
- 	     P           p       Ԁ              - L   L   <                    E  (   ?  
+ 	     z    
+  [  S          X   X   <                    E  4   ?  
 
 
- 	     P           Ǜ     <                    E    8  
+ 	     z    
+  [  S                Ԁ               (  (  <                    E    8  
 
 
- 	     P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           כ       Ԁ                      Ԁ              {   d  d  <                     E @   8  
+ 	          
+  S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ                      Ԁ              !  p  p  <                     E L   8  
 
 
- 	  Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Ԁ                 L   L   <                     E  (   @  
-
-
- 	     qP           !        Ԁ              A"  L   L   <                    E  (   ?  
-
-
- 	     qP           @#  L   L   <                    E  (   ?  
-
-
- 	     qP           z%  L   L   <                    E  (   ?  
-
-
- 	     qP           *  L   L   <                    E  (   ?  
+ 	  Y        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 !        Ԁ              i!  X   X   <                     E  4   @  
 
 
- 	     qP           +  L   L   <                    E  (   ?  
+ 	     qz    
+             6"        Ԁ              '#  X   X   <                    E  4   ?  
 
 
- 	     qP           /  L   L   <                    E  (   ?  
+ 	     qz    
+             $  X   X   <                    E  4   ?  
 
 
- 	     qP           7        Ԁ              :      <                     E    8  
+ 	     qz    
+             -        Ԁ              0  (  (  <                     E    8  
 
 
- 	  q   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           &:        Ԁ              ` T   T               0    E  0     
+ 	  q        
+    [                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         +0        Ԁ              y  T   T               0    E  0     
 	
       
 	    
-	         `g T   T                    E  0     
+	         p  T   T                    E  0     
 
 
       
 
     
 
-         Ɨ @   @   <                @           
+         V @   @   <                @           
 	     
-              Ԁ               @   @               P           
+       Z       Ԁ              ^       Ԁ              n @   @               P           
 	
 
-        @   @   <                            
+       n @   @   <                            
 
      
-	       Q       Ԁ              Q d  d  <                `    E @   8  
+	       o       Ԁ              Ns p  p  <                `    E L   8  
 
 
- 	  A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   a       Ԁ                     Ԁ                   <                p    E    8  
+ 	  A        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ^s       Ԁ              ,w (  (  <                p    E    8  
 
 
- 	  !Y   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ               @   @                           
+ 	  !Y        
+  M                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <w       Ԁ              { @   @                           
 
 
-	       Ļ @   @   <                           
+	       !| @   @   <                           
 	     
 
-       Ի       Ԁ              O L   L   <                     E  ( 	  @  
+       1|       Ԁ              | X   X   <                     E  4 	  @  
 
 
- 	     !YP                  Ԁ               @   @                          
+ 	     !Yz    
+  p  M         y}       Ԁ              ՠ @   @                          
 	
-              Ԁ               L   L   <                    E  ( 	  ?  
+              Ԁ               X   X   <                    E  4 	  ?  
 
 
- 	     !YP                  Ԁ               d  d  <                    E @   8  
+ 	     !Yz    
+  p  M         !       Ԁ               p  p  <                    E L   8  
 
 
- 	  #)   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              i L   L   <                    E  ( 
+ 	  #)        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ               X   X   <                    E  4 
   @  
 
 
- 	     %AP           &       Ԁ               L   L   <                    E  ( 
+ 	     %Az    
+                    Ԁ               X   X   <                    E  4 
   ?  
 
 
- 	     %AP            L   L   <                    E  ( 
+ 	     %Az    
+             2 X   X   <                    E  4 
   ?  
 
 
- 	     %AP            L   L   <                    E  ( 
-  ?  
+ 	     %Az    
+                    Ԁ                (  (  <                    E    8  
+
 
-
- 	     %AP           J L   L   <                    E  ( 
-  ?  
+ 	  %A        
+    p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Ԁ              i       Ԁ               p  p  <                    E L   8  
+
+
+ 	  '        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ              A X   X   <                     E  4   @  
 
 
- 	     %AP           &       Ԁ               L   L   <                    E  ( 
-  ?  
+ 	     ))z    
+  	O  	G                Ԁ              # X   X   <                    E  4   ?  
 
 
- 	     %AP           G     <                    E    8  
-
+ 	     ))z    
+  	O  	G          X   X   <                    E  4   ?  
 
- 	  %A   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           W       Ԁ                     Ԁ              S d  d  <                    E @   8  
-
+
+ 	     ))z    
+  	O  	G          X   X   <                    E  4   ?  
 
- 	  '   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   c       Ԁ               L   L   <                     E  (   @  
+
+ 	     ))z    
+  	O  	G          X   X   <                    E  4   ?  
 
 
- 	     ))P           n       Ԁ              | L   L   <                    E  (   ?  
+ 	     ))z    
+  	O  	G          X   X   <                    E  4   ?  
 
 
- 	     ))P            L   L   <                    E  (   ?  
+ 	     ))z    
+  	O  	G          X   X   <                    E  4   ?  
 
 
- 	     ))P                  Ԁ                   <                     E    8  
+ 	     ))z    
+  	O  	G                Ԁ              0 (  (  <                     E    8  
 
 
- 	  ))   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ԁ              1       Ԁ               d  d  <                    E @   8  
+ 	  ))        
+  	G                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           @       Ԁ                     Ԁ              + p  p  <                    E L   8  
 
 
- 	  *   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Ԁ               L   L   <                0    E  (   @  
-
-
- 	     -P                  Ԁ              j L   L   <                     E  (   ?  
+ 	  *        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ;       Ԁ               X   X   <                0    E  4   @  
 
 
- 	     -P            L   L   <                     E  (   ?  
+ 	     -z    
+  	  	         V       Ԁ              t X   X   <                     E  4   ?  
 
 
- 	     -P           E L   L   <                     E  (   ?  
+ 	     -z    
+  	  	          X   X   <                     E  4   ?  
 
 
- 	     -P            L   L   <                     E  (   ?  
+ 	     -z    
+  	  	          X   X   <                     E  4   ?  
 
 
- 	     -P                  Ԁ              '     <                0    E    8  
+ 	     -z    
+  	  	                Ԁ               (  (  <                0    E    8  
 
 
- 	  -   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           7       Ԁ              y	       Ԁ              	 d  d  <                @    E @   8  
+ 	  -        
+  	  	O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ              	       Ԁ              s	 p  p  <                @    E L   8  
 
 
- 	  .   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	       Ԁ              A	 L   L   <                @    E  (   @  
+ 	  .        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	       Ԁ              Ѫ	 X   X   <                @    E  4   @  
 
 
- 	     0P           	       Ԁ              ֫	 L   L   <                P    E  (   ?  
+ 	     0z    
+  
+I  
+A         	       Ԁ              b	 X   X   <                P    E  4   ?  
 
 
- 	     0P           ݴ	       Ԁ              	     <                `    E    8  
-
-
- 	  0   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	       Ԁ                     Ԁ              + d  d  <                p    E @   8  
-
-
- 	  2   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;       Ԁ               L   L   <                P    E  (   @  
+ 	     0z    
+  
+I  
+A         	 X   X   <                P    E  4   ?  
 
 
- 	     4P           F       Ԁ              ' L   L   <                    E  (   ?  
+ 	     0z    
+  
+I  
+A         	 X   X   <                P    E  4   ?  
 
 
- 	     4P            L   L   <                    E  (   ?  
+ 	     0z    
+  
+I  
+A         R	       Ԁ              l	 (  (  <                `    E    8  
+
 
-
- 	     4P            L   L   <                    E  (   ?  
+ 	  0        
+  
+A  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |	       Ԁ              A       Ԁ               p  p  <                p    E L   8  
+
+
+ 	  2        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ˒       Ԁ               X   X   <                P    E  4   @  
 
 
- 	     4P           A L   L   <                    E  (   ?  
+ 	     4z    
+  
+  
+                Ԁ               X   X   <                    E  4   ?  
 
 
- 	     4P           C       Ԁ              M     <                    E    8  
+ 	     4z    
+  
+  
+                Ԁ              Ϫ (  (  <                    E    8  
 
 
- 	  4   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ]       Ԁ              	w       Ԁ              sz d  d  <                    E @   8  
+ 	  4        
+  
+  
+I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ߪ       Ԁ              w       Ԁ              { p  p  <                    E L   8  
 
 
- 	  6   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   z       Ԁ              z L   L   <                `    E  (   @  
+ 	  6        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 {       Ԁ              a{ X   X   <                `    E  4   @  
 
 
- 	     8P           {       Ԁ              | L   L   <                    E  (   ?  
+ 	     8ɀz    
+  C  ;         .|       Ԁ              } X   X   <                    E  4   ?  
 
 
- 	     8P                  Ԁ              Ƈ     <                    E    8  
+ 	     8ɀz    
+  C  ;         a       Ԁ              { (  (  <                    E    8  
 
 
- 	  8   P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           և       Ԁ           
\ No newline at end of file
+ 	  8        
+  ;  
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ԁ           
\ No newline at end of file
diff -Naur ns-3.20/src/aodv/test/udp-chain-test-0-0.pcap ns-3.21/src/aodv/test/udp-chain-test-0-0.pcap
--- ns-3.20/src/aodv/test/udp-chain-test-0-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/udp-chain-test-0-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,24 +1,24 @@
-ò            i         T   T          
+ò            i       ( T   T          	     	      E  0      
+
+      
+    
+           d T   T          
      
       E  0      
 
       
     
-            T   T          	     	      E  0      
-
-      
-    
-         p T   T          	     	     E  0     
+         h< T   T          	     	     E  0     
 
       
     
-          T   T          
+          T   T          
      
      E  0     
 
       
     
-          X   X          	     	      E  4     
+          X   X          	     	      E  4     
 
     (     
 
@@ -30,199 +30,200 @@
     (    
 
     
-          eA @   @   <           
+          63 @   @   <           
      
 0            
 
      
-       B       Ԁ              J @   @          
+       4       Ԁ              8 @   @          
      
 @            
 
 
-       J @   @   <      
+       8 @   @   <      
      	     	0            	
      
 
-       K       Ԁ       	       L T   T   <      	     
+       9       Ԁ       	       }: T   T   <      	     
      
-P     E  0     
+P     E  0      
 
      
 
     
-  ^       L       Ԁ       
-       eT @   @          	     	@            	
+  (       :       Ԁ       
+       e> @   @          	     	@            	
 
-       hU @   @   <      	     
+       h? @   @   <      	     
      
 `            
 
      	
-       xU       Ԁ       
-       U (  (  <      
-     	     	P     E    @  
+       x?       Ԁ       
+       ? (  (  <      
+     	     	P     E     @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 [       Ԁ       	       _ @   @          
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 E       Ԁ       	       i @   @          
      
 p            
 
 
-       `       Ԁ              rf (  (  <           
+       i       Ԁ              o (  (  <           
      
-     E    ?  
+     E     ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (  (  <      
-     	     	`     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (  (  <      
+     	     	`     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 p       Ԁ       	       6 (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 p       Ԁ       	       6 (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
-     	     	p     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
+     	     	p     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
-     	     	     E  	  @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
      
-     E  	  ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (  (  <      
-     	     	     E  
-  @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	         (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	         (  (  <           
      
-     E  
-  ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H (  (  <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (       Ԁ       	        (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (       Ԁ       	        (  (  <           
      
-     E    ?  
+     E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  T   T          	     	     E  0     
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  T   T          	     	     E  0     
 
       
    
           T   T          
      
-    E  0     
+    E  0     
 
       
     
-         x @   @          	     	            	
+           @   @          	     	            	
 
-       z @   @   <      	     
+        @   @   <      	     
      
             
 
      	
-              Ԁ       
-       D (  (  <      
-     	     	     E    @  
+              Ԁ       
+        (  (  <      
+     	     	     E  	  @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 %       Ԁ       	        @   @          
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       i @   @          
      
 0           
 
 
-              Ԁ               (  (  <           
+       8       Ԁ              F
+ (  (  <           
      
-@    E    ?  
+@    E  	  ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
-     	     	    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ظ (  (  <      
+     	     	    E  
+  @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ       	       ~ (  (  <           
      
-P    E    ?  
+P    E  
+  ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
-     	     	     E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (  (  <      
+     	     	     E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ԁ       	       Ƭ (  (  <           
      
-`    E    ?  
+`    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
-     	     	0    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 h	 (  (  <      
+     	     	0    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H	       Ԁ       	       	 (  (  <           
      
-p    E    ?  
+p    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
-     	     	@    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 q (  (  <      
+     	     	@    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ       	       V} (  (  <           
      
-    E    ?  
+    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
-     	     	P    E    @  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Y (  (  <      
+     	     	P    E    @  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 _       Ԁ       	       e (  (  <           
      
-    E    ?  
+    E    ?  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
\ No newline at end of file
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
\ No newline at end of file
diff -Naur ns-3.20/src/aodv/test/udp-chain-test-9-0.pcap ns-3.21/src/aodv/test/udp-chain-test-9-0.pcap
--- ns-3.20/src/aodv/test/udp-chain-test-9-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/test/udp-chain-test-9-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,109 +1,109 @@
-ò            i       y  T   T                     E  0      
+ò            i       u  T   T                     E  0      
 	
       
 	    
-	          _ T   T                     E  0      
+	            T   T                     E  0      
 
 
       
 
     
 
-         `Z  T   T                    E  0     
+         xV  T   T                    E  0     
 	
       
 	    
-	         P@ T   T                    E  0     
+	         `m  T   T                    E  0     
 
 
       
 
     
 
-          @   @                            
+         C @   @                            
 	
 
-       ݨ @   @   <                             
+       e @   @   <                             
 
      
-	              Ԁ               T   T   <                0     E  0     
+	              Ԁ               T   T   <                0     E  0      
 	
 
      
    
 
-  _              Ԁ              [ @   @               @            
+  _       &       Ԁ              + @   @               @            
 	
-       *       Ԁ               T   T   <                P     E  0     
+              Ԁ               T   T   <                P     E  0      
 	
    @ 
 
     
-  ^       Y @   @   <                `            
+  (        @   @   <                `            
 	     
-              Ԁ                     Ԁ               (  (  <                p     E    8  
+              Ԁ                     Ԁ               (  (  <                p     E     8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                      Ԁ              G (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 W       Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                     E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                     E  	  8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              /        Ԁ              5  (  (  <                     E  
-  8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              /        Ԁ              5  (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 5        Ԁ              u  T   T                    E  0     
-	
-      
-	    
-	         8 T   T               0     E  0     
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 5        Ԁ              e  T   T               0     E  0     
 
 
       
 
     
 
-         9       Ԁ               (  (  <                     E    8  
+         q  T   T                    E  0     
+	
+      
+	    
+	         9       Ԁ               (  (  <                     E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ               @   @   <                           
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              | @   @   <                           
 	     
-       g       Ԁ               @   @                           
+       ͯ       Ԁ              ) @   @                           
 	
 
-        @   @   <                @            
+       K @   @   <                @            
 
      
-	              Ԁ               (  (  <                0    E    8  
+	              Ԁ               (  (  <                0    E  	  8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                @    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                @    E  
+  8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                P    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ                     Ԁ               (  (  <                P    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                `    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ              Y	       Ԁ              	 (  (  <                `    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                p    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /	       Ԁ                     Ԁ              g (  (  <                p    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                    E    8  
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 w       Ԁ                     Ԁ               (  (  <                    E    8  
 
 
- 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ           
\ No newline at end of file
+ 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ԁ           
\ No newline at end of file
diff -Naur ns-3.20/src/aodv/wscript ns-3.21/src/aodv/wscript
--- ns-3.20/src/aodv/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/aodv/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('aodv', ['internet', 'wifi', 'applications', 'mesh', 'point-to-point', 'virtual-net-device'])
+    module = bld.create_ns3_module('aodv', ['internet', 'wifi', 'applications'])
     module.includes = '.'
     module.source = [
         'model/aodv-id-cache.cc',
diff -Naur ns-3.20/src/applications/bindings/modulegen__gcc_ILP32.py ns-3.21/src/applications/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/applications/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/applications/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -162,6 +162,8 @@
     module.add_class('Ping6Helper')
     ## radvd-helper.h (module 'applications'): ns3::RadvdHelper [class]
     module.add_class('RadvdHelper')
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper [class]
+    module.add_class('SimpleNetDeviceHelper', import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simulator.h (module 'core'): ns3::Simulator [class]
@@ -442,8 +444,12 @@
     module.add_class('PacketSizeMinMaxAvgTotalCalculator', import_from_module='ns.network', parent=root_module['ns3::MinMaxAvgTotalCalculator< unsigned int >'])
     ## packet-socket.h (module 'network'): ns3::PacketSocket [class]
     module.add_class('PacketSocket', import_from_module='ns.network', parent=root_module['ns3::Socket'])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient [class]
+    module.add_class('PacketSocketClient', import_from_module='ns.network', parent=root_module['ns3::Application'])
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory [class]
     module.add_class('PacketSocketFactory', import_from_module='ns.network', parent=root_module['ns3::SocketFactory'])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer [class]
+    module.add_class('PacketSocketServer', import_from_module='ns.network', parent=root_module['ns3::Application'])
     ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## packetbb.h (module 'network'): ns3::PbbAddressBlock [class]
@@ -672,6 +678,7 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3Ping6Helper_methods(root_module, root_module['ns3::Ping6Helper'])
     register_Ns3RadvdHelper_methods(root_module, root_module['ns3::RadvdHelper'])
+    register_Ns3SimpleNetDeviceHelper_methods(root_module, root_module['ns3::SimpleNetDeviceHelper'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
@@ -801,7 +808,9 @@
     register_Ns3PacketSink_methods(root_module, root_module['ns3::PacketSink'])
     register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, root_module['ns3::PacketSizeMinMaxAvgTotalCalculator'])
     register_Ns3PacketSocket_methods(root_module, root_module['ns3::PacketSocket'])
+    register_Ns3PacketSocketClient_methods(root_module, root_module['ns3::PacketSocketClient'])
     register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
+    register_Ns3PacketSocketServer_methods(root_module, root_module['ns3::PacketSocketServer'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3PbbAddressBlock_methods(root_module, root_module['ns3::PbbAddressBlock'])
     register_Ns3PbbAddressBlockIpv4_methods(root_module, root_module['ns3::PbbAddressBlockIpv4'])
@@ -3497,6 +3506,53 @@
                    [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
     return
 
+def register_Ns3SimpleNetDeviceHelper_methods(root_module, cls):
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper(ns3::SimpleNetDeviceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleNetDeviceHelper const &', 'arg0')])
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper() [constructor]
+    cls.add_constructor([])
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannel(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode(bool pointToPointMode) [member function]
+    cls.add_method('SetNetDevicePointToPointMode', 
+                   'void', 
+                   [param('bool', 'pointToPointMode')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    return
+
 def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -5874,10 +5930,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5888,25 +5944,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -6023,20 +6079,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -8609,6 +8665,37 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3PacketSocketClient_methods(root_module, cls):
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient(ns3::PacketSocketClient const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketClient const &', 'arg0')])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-client.h (module 'network'): static ns3::TypeId ns3::PacketSocketClient::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::SetRemote(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetRemote', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory::PacketSocketFactory(ns3::PacketSocketFactory const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PacketSocketFactory const &', 'arg0')])
@@ -8626,6 +8713,37 @@
                    is_static=True)
     return
 
+def register_Ns3PacketSocketServer_methods(root_module, cls):
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer(ns3::PacketSocketServer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketServer const &', 'arg0')])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-server.h (module 'network'): static ns3::TypeId ns3::PacketSocketServer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::SetLocal(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -10201,6 +10319,11 @@
                    'ns3::Ptr< ns3::Node >', 
                    [], 
                    is_const=True, is_virtual=True)
+    ## simple-net-device.h (module 'network'): ns3::Ptr<ns3::Queue> ns3::SimpleNetDevice::GetQueue() const [member function]
+    cls.add_method('GetQueue', 
+                   'ns3::Ptr< ns3::Queue >', 
+                   [], 
+                   is_const=True)
     ## simple-net-device.h (module 'network'): static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -10279,6 +10402,10 @@
                    'void', 
                    [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
                    is_virtual=True)
+    ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
     cls.add_method('SetReceiveCallback', 
                    'void', 
diff -Naur ns-3.20/src/applications/bindings/modulegen__gcc_LP64.py ns-3.21/src/applications/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/applications/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/applications/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -162,6 +162,8 @@
     module.add_class('Ping6Helper')
     ## radvd-helper.h (module 'applications'): ns3::RadvdHelper [class]
     module.add_class('RadvdHelper')
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper [class]
+    module.add_class('SimpleNetDeviceHelper', import_from_module='ns.network')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simulator.h (module 'core'): ns3::Simulator [class]
@@ -442,8 +444,12 @@
     module.add_class('PacketSizeMinMaxAvgTotalCalculator', import_from_module='ns.network', parent=root_module['ns3::MinMaxAvgTotalCalculator< unsigned int >'])
     ## packet-socket.h (module 'network'): ns3::PacketSocket [class]
     module.add_class('PacketSocket', import_from_module='ns.network', parent=root_module['ns3::Socket'])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient [class]
+    module.add_class('PacketSocketClient', import_from_module='ns.network', parent=root_module['ns3::Application'])
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory [class]
     module.add_class('PacketSocketFactory', import_from_module='ns.network', parent=root_module['ns3::SocketFactory'])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer [class]
+    module.add_class('PacketSocketServer', import_from_module='ns.network', parent=root_module['ns3::Application'])
     ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## packetbb.h (module 'network'): ns3::PbbAddressBlock [class]
@@ -672,6 +678,7 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3Ping6Helper_methods(root_module, root_module['ns3::Ping6Helper'])
     register_Ns3RadvdHelper_methods(root_module, root_module['ns3::RadvdHelper'])
+    register_Ns3SimpleNetDeviceHelper_methods(root_module, root_module['ns3::SimpleNetDeviceHelper'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
@@ -801,7 +808,9 @@
     register_Ns3PacketSink_methods(root_module, root_module['ns3::PacketSink'])
     register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, root_module['ns3::PacketSizeMinMaxAvgTotalCalculator'])
     register_Ns3PacketSocket_methods(root_module, root_module['ns3::PacketSocket'])
+    register_Ns3PacketSocketClient_methods(root_module, root_module['ns3::PacketSocketClient'])
     register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
+    register_Ns3PacketSocketServer_methods(root_module, root_module['ns3::PacketSocketServer'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3PbbAddressBlock_methods(root_module, root_module['ns3::PbbAddressBlock'])
     register_Ns3PbbAddressBlockIpv4_methods(root_module, root_module['ns3::PbbAddressBlockIpv4'])
@@ -3497,6 +3506,53 @@
                    [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
     return
 
+def register_Ns3SimpleNetDeviceHelper_methods(root_module, cls):
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper(ns3::SimpleNetDeviceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleNetDeviceHelper const &', 'arg0')])
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper() [constructor]
+    cls.add_constructor([])
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannel(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode(bool pointToPointMode) [member function]
+    cls.add_method('SetNetDevicePointToPointMode', 
+                   'void', 
+                   [param('bool', 'pointToPointMode')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    return
+
 def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -5874,10 +5930,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5888,25 +5944,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -6023,20 +6079,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -8609,6 +8665,37 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3PacketSocketClient_methods(root_module, cls):
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient(ns3::PacketSocketClient const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketClient const &', 'arg0')])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-client.h (module 'network'): static ns3::TypeId ns3::PacketSocketClient::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::SetRemote(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetRemote', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory::PacketSocketFactory(ns3::PacketSocketFactory const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PacketSocketFactory const &', 'arg0')])
@@ -8626,6 +8713,37 @@
                    is_static=True)
     return
 
+def register_Ns3PacketSocketServer_methods(root_module, cls):
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer(ns3::PacketSocketServer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketServer const &', 'arg0')])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-server.h (module 'network'): static ns3::TypeId ns3::PacketSocketServer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::SetLocal(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -10201,6 +10319,11 @@
                    'ns3::Ptr< ns3::Node >', 
                    [], 
                    is_const=True, is_virtual=True)
+    ## simple-net-device.h (module 'network'): ns3::Ptr<ns3::Queue> ns3::SimpleNetDevice::GetQueue() const [member function]
+    cls.add_method('GetQueue', 
+                   'ns3::Ptr< ns3::Queue >', 
+                   [], 
+                   is_const=True)
     ## simple-net-device.h (module 'network'): static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -10279,6 +10402,10 @@
                    'void', 
                    [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
                    is_virtual=True)
+    ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
     cls.add_method('SetReceiveCallback', 
                    'void', 
diff -Naur ns-3.20/src/bridge/bindings/modulegen__gcc_ILP32.py ns-3.21/src/bridge/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/bridge/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/bridge/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -1623,10 +1623,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1637,25 +1637,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1772,20 +1772,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/bridge/bindings/modulegen__gcc_LP64.py ns-3.21/src/bridge/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/bridge/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/bridge/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -1623,10 +1623,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1637,25 +1637,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1772,20 +1772,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/bridge/examples/wscript ns-3.21/src/bridge/examples/wscript
--- ns-3.20/src/bridge/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/bridge/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,11 +2,11 @@
 
 def build(bld):
 
-    obj = bld.create_ns3_program('csma-bridge', ['bridge', 'csma', 'internet'])
+    obj = bld.create_ns3_program('csma-bridge', ['bridge', 'csma', 'internet', 'applications'])
     obj.source = 'csma-bridge.cc'
 
-    bld.register_ns3_script('csma-bridge.py', ['bridge', 'csma', 'internet'])
+    bld.register_ns3_script('csma-bridge.py', ['bridge', 'csma', 'internet', 'applications'])
 
-    obj = bld.create_ns3_program('csma-bridge-one-hop', ['bridge', 'csma', 'internet'])
+    obj = bld.create_ns3_program('csma-bridge-one-hop', ['bridge', 'csma', 'internet', 'applications'])
     obj.source = 'csma-bridge-one-hop.cc'
 
diff -Naur ns-3.20/src/buildings/bindings/modulegen__gcc_ILP32.py ns-3.21/src/buildings/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/buildings/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/buildings/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -2328,10 +2328,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2342,25 +2342,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2477,20 +2477,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/buildings/bindings/modulegen__gcc_LP64.py ns-3.21/src/buildings/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/buildings/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/buildings/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -2328,10 +2328,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2342,25 +2342,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2477,20 +2477,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/core/bindings/modulegen__gcc_ILP32.py ns-3.21/src/core/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/core/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -658,6 +658,10 @@
     cls.add_method('AddValue', 
                    'void', 
                    [param('std::string const &', 'name'), param('std::string const &', 'help'), param('ns3::Callback< bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## command-line.h (module 'core'): void ns3::CommandLine::AddValue(std::string const & name, std::string const & attributePath) [member function]
+    cls.add_method('AddValue', 
+                   'void', 
+                   [param('std::string const &', 'name'), param('std::string const &', 'attributePath')])
     ## command-line.h (module 'core'): std::string ns3::CommandLine::GetName() const [member function]
     cls.add_method('GetName', 
                    'std::string', 
@@ -2516,10 +2520,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2530,25 +2534,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2665,20 +2669,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -4768,22 +4772,22 @@
                         'ns3::Ptr< ns3::PointerValue >', 
                         [], 
                         template_parameters=['ns3::PointerValue'])
-    ## nstime.h (module 'core'): ns3::Time ns3::Days(ns3::int64x64_t days) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Days(ns3::int64x64_t value) [free function]
     module.add_function('Days', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'days')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Days(double days) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Days(double value) [free function]
     module.add_function('Days', 
                         'ns3::Time', 
-                        [param('double', 'days')])
-    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(ns3::int64x64_t fs) [free function]
+                        [param('double', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('FemtoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'fs')])
-    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(uint64_t fs) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(uint64_t value) [free function]
     module.add_function('FemtoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'fs')])
+                        [param('uint64_t', 'value')])
     ## hash.h (module 'core'): uint32_t ns3::Hash32(std::string const s) [free function]
     module.add_function('Hash32', 
                         'uint32_t', 
@@ -4800,14 +4804,14 @@
     module.add_function('Hash64', 
                         'uint64_t', 
                         [param('char const *', 'buffer'), param('size_t const', 'size')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Hours(ns3::int64x64_t hours) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Hours(ns3::int64x64_t value) [free function]
     module.add_function('Hours', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'hours')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Hours(double hours) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Hours(double value) [free function]
     module.add_function('Hours', 
                         'ns3::Time', 
-                        [param('double', 'hours')])
+                        [param('double', 'value')])
     ## log.h (module 'core'): extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function]
     module.add_function('LogComponentDisable', 
                         'void', 
@@ -4908,22 +4912,22 @@
     module.add_function('Max', 
                         'ns3::int64x64_t', 
                         [param('ns3::int64x64_t const &', 'a'), param('ns3::int64x64_t const &', 'b')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(ns3::int64x64_t us) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(ns3::int64x64_t value) [free function]
     module.add_function('MicroSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'us')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(uint64_t us) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(uint64_t value) [free function]
     module.add_function('MicroSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'us')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(ns3::int64x64_t ms) [free function]
+                        [param('uint64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(ns3::int64x64_t value) [free function]
     module.add_function('MilliSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ms')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(uint64_t ms) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(uint64_t value) [free function]
     module.add_function('MilliSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ms')])
+                        [param('uint64_t', 'value')])
     ## nstime.h (module 'core'): ns3::Time ns3::Min(ns3::Time const & ta, ns3::Time const & tb) [free function]
     module.add_function('Min', 
                         'ns3::Time', 
@@ -4932,42 +4936,42 @@
     module.add_function('Min', 
                         'ns3::int64x64_t', 
                         [param('ns3::int64x64_t const &', 'a'), param('ns3::int64x64_t const &', 'b')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(ns3::int64x64_t minutes) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(ns3::int64x64_t value) [free function]
     module.add_function('Minutes', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'minutes')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(double minutes) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(double value) [free function]
     module.add_function('Minutes', 
                         'ns3::Time', 
-                        [param('double', 'minutes')])
-    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(ns3::int64x64_t ns) [free function]
+                        [param('double', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('NanoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ns')])
-    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(uint64_t ns) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(uint64_t value) [free function]
     module.add_function('NanoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ns')])
+                        [param('uint64_t', 'value')])
     ## simulator.h (module 'core'): extern ns3::Time ns3::Now() [free function]
     module.add_function('Now', 
                         'ns3::Time', 
                         [])
-    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(ns3::int64x64_t ps) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('PicoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ps')])
-    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(uint64_t ps) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(uint64_t value) [free function]
     module.add_function('PicoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ps')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(ns3::int64x64_t seconds) [free function]
+                        [param('uint64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(ns3::int64x64_t value) [free function]
     module.add_function('Seconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'seconds')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(double seconds) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(double value) [free function]
     module.add_function('Seconds', 
                         'ns3::Time', 
-                        [param('double', 'seconds')])
+                        [param('double', 'value')])
     ## test.h (module 'core'): extern bool ns3::TestDoubleIsEqual(double const a, double const b, double const epsilon=std::numeric_limits<double>::epsilon()) [free function]
     module.add_function('TestDoubleIsEqual', 
                         'bool', 
@@ -5026,14 +5030,14 @@
                         'std::string', 
                         [], 
                         template_parameters=['unsigned char'])
-    ## nstime.h (module 'core'): ns3::Time ns3::Years(ns3::int64x64_t years) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Years(ns3::int64x64_t value) [free function]
     module.add_function('Years', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'years')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Years(double years) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Years(double value) [free function]
     module.add_function('Years', 
                         'ns3::Time', 
-                        [param('double', 'years')])
+                        [param('double', 'value')])
     register_functions_ns3_CommandLineHelper(module.get_submodule('CommandLineHelper'), root_module)
     register_functions_ns3_Config(module.get_submodule('Config'), root_module)
     register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
diff -Naur ns-3.20/src/core/bindings/modulegen__gcc_LP64.py ns-3.21/src/core/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/core/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -658,6 +658,10 @@
     cls.add_method('AddValue', 
                    'void', 
                    [param('std::string const &', 'name'), param('std::string const &', 'help'), param('ns3::Callback< bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## command-line.h (module 'core'): void ns3::CommandLine::AddValue(std::string const & name, std::string const & attributePath) [member function]
+    cls.add_method('AddValue', 
+                   'void', 
+                   [param('std::string const &', 'name'), param('std::string const &', 'attributePath')])
     ## command-line.h (module 'core'): std::string ns3::CommandLine::GetName() const [member function]
     cls.add_method('GetName', 
                    'std::string', 
@@ -2516,10 +2520,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2530,25 +2534,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2665,20 +2669,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -4768,22 +4772,22 @@
                         'ns3::Ptr< ns3::PointerValue >', 
                         [], 
                         template_parameters=['ns3::PointerValue'])
-    ## nstime.h (module 'core'): ns3::Time ns3::Days(ns3::int64x64_t days) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Days(ns3::int64x64_t value) [free function]
     module.add_function('Days', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'days')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Days(double days) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Days(double value) [free function]
     module.add_function('Days', 
                         'ns3::Time', 
-                        [param('double', 'days')])
-    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(ns3::int64x64_t fs) [free function]
+                        [param('double', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('FemtoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'fs')])
-    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(uint64_t fs) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::FemtoSeconds(uint64_t value) [free function]
     module.add_function('FemtoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'fs')])
+                        [param('uint64_t', 'value')])
     ## hash.h (module 'core'): uint32_t ns3::Hash32(std::string const s) [free function]
     module.add_function('Hash32', 
                         'uint32_t', 
@@ -4800,14 +4804,14 @@
     module.add_function('Hash64', 
                         'uint64_t', 
                         [param('char const *', 'buffer'), param('size_t const', 'size')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Hours(ns3::int64x64_t hours) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Hours(ns3::int64x64_t value) [free function]
     module.add_function('Hours', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'hours')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Hours(double hours) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Hours(double value) [free function]
     module.add_function('Hours', 
                         'ns3::Time', 
-                        [param('double', 'hours')])
+                        [param('double', 'value')])
     ## log.h (module 'core'): extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function]
     module.add_function('LogComponentDisable', 
                         'void', 
@@ -4908,22 +4912,22 @@
     module.add_function('Max', 
                         'ns3::int64x64_t', 
                         [param('ns3::int64x64_t const &', 'a'), param('ns3::int64x64_t const &', 'b')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(ns3::int64x64_t us) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(ns3::int64x64_t value) [free function]
     module.add_function('MicroSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'us')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(uint64_t us) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MicroSeconds(uint64_t value) [free function]
     module.add_function('MicroSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'us')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(ns3::int64x64_t ms) [free function]
+                        [param('uint64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(ns3::int64x64_t value) [free function]
     module.add_function('MilliSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ms')])
-    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(uint64_t ms) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::MilliSeconds(uint64_t value) [free function]
     module.add_function('MilliSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ms')])
+                        [param('uint64_t', 'value')])
     ## nstime.h (module 'core'): ns3::Time ns3::Min(ns3::Time const & ta, ns3::Time const & tb) [free function]
     module.add_function('Min', 
                         'ns3::Time', 
@@ -4932,42 +4936,42 @@
     module.add_function('Min', 
                         'ns3::int64x64_t', 
                         [param('ns3::int64x64_t const &', 'a'), param('ns3::int64x64_t const &', 'b')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(ns3::int64x64_t minutes) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(ns3::int64x64_t value) [free function]
     module.add_function('Minutes', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'minutes')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(double minutes) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Minutes(double value) [free function]
     module.add_function('Minutes', 
                         'ns3::Time', 
-                        [param('double', 'minutes')])
-    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(ns3::int64x64_t ns) [free function]
+                        [param('double', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('NanoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ns')])
-    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(uint64_t ns) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::NanoSeconds(uint64_t value) [free function]
     module.add_function('NanoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ns')])
+                        [param('uint64_t', 'value')])
     ## simulator.h (module 'core'): extern ns3::Time ns3::Now() [free function]
     module.add_function('Now', 
                         'ns3::Time', 
                         [])
-    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(ns3::int64x64_t ps) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(ns3::int64x64_t value) [free function]
     module.add_function('PicoSeconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'ps')])
-    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(uint64_t ps) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::PicoSeconds(uint64_t value) [free function]
     module.add_function('PicoSeconds', 
                         'ns3::Time', 
-                        [param('uint64_t', 'ps')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(ns3::int64x64_t seconds) [free function]
+                        [param('uint64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(ns3::int64x64_t value) [free function]
     module.add_function('Seconds', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'seconds')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(double seconds) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Seconds(double value) [free function]
     module.add_function('Seconds', 
                         'ns3::Time', 
-                        [param('double', 'seconds')])
+                        [param('double', 'value')])
     ## test.h (module 'core'): extern bool ns3::TestDoubleIsEqual(double const a, double const b, double const epsilon=std::numeric_limits<double>::epsilon()) [free function]
     module.add_function('TestDoubleIsEqual', 
                         'bool', 
@@ -5026,14 +5030,14 @@
                         'std::string', 
                         [], 
                         template_parameters=['unsigned char'])
-    ## nstime.h (module 'core'): ns3::Time ns3::Years(ns3::int64x64_t years) [free function]
+    ## nstime.h (module 'core'): ns3::Time ns3::Years(ns3::int64x64_t value) [free function]
     module.add_function('Years', 
                         'ns3::Time', 
-                        [param('ns3::int64x64_t', 'years')])
-    ## nstime.h (module 'core'): ns3::Time ns3::Years(double years) [free function]
+                        [param('ns3::int64x64_t', 'value')])
+    ## nstime.h (module 'core'): ns3::Time ns3::Years(double value) [free function]
     module.add_function('Years', 
                         'ns3::Time', 
-                        [param('double', 'years')])
+                        [param('double', 'value')])
     register_functions_ns3_CommandLineHelper(module.get_submodule('CommandLineHelper'), root_module)
     register_functions_ns3_Config(module.get_submodule('Config'), root_module)
     register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
diff -Naur ns-3.20/src/core/examples/command-line-example.cc ns-3.21/src/core/examples/command-line-example.cc
--- ns-3.20/src/core/examples/command-line-example.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/examples/command-line-example.cc	2014-09-17 20:03:14.000000000 -0700
@@ -28,7 +28,7 @@
 using namespace ns3;
 
 
-std::string g_cbArg="cbArg default";
+std::string g_cbArg = "cbArg default";
 
 bool SetCbArg (std::string val)
 {
@@ -43,6 +43,26 @@
   int         intArg  = 1;
   bool        boolArg = false;
   std::string strArg  = "strArg default";
+  // Attribute path
+  const std::string attrClass = "ns3::RandomVariableStream";
+  const std::string attrName  = "Antithetic";
+  const std::string attrPath  = attrClass + "::" + attrName;
+ 
+  // Cache the initial values.  Normally one wouldn't do this,
+  // but we want to demonstrate that CommandLine has changed them.
+  const int intDef = intArg;
+  const bool boolDef = boolArg;
+  const std::string strDef = strArg;
+  const std::string cbDef  = g_cbArg;
+  // Look up default value for attribute
+  const TypeId tid = TypeId::LookupByName (attrClass);
+  std::string attrDef;
+  {
+    struct TypeId::AttributeInformation info;
+    tid.LookupAttributeByName (attrName, &info);
+    attrDef = info.originalInitialValue->SerializeToString (info.checker);
+  }
+  
   
   CommandLine cmd;
   cmd.Usage ("CommandLine example program.\n"
@@ -51,17 +71,62 @@
   cmd.AddValue ("intArg",  "an int argument",       intArg);
   cmd.AddValue ("boolArg", "a bool argument",       boolArg);
   cmd.AddValue ("strArg",  "a string argument",     strArg);
+  cmd.AddValue ("anti",    attrPath);
   cmd.AddValue ("cbArg",   "a string via callback", MakeCallback (SetCbArg));
   cmd.Parse (argc, argv);
 
-  std::cout << std::left
-            << std::setw (10) << "intArg:"         << intArg           << std::endl;
-  std::cout << std::setw (10) << "boolArg:"
-            << std::boolalpha                      << boolArg
-            << std::noboolalpha                                        << std::endl;
+  // Show initial values:
+  std::cout << std::endl;
+  std::cout << cmd.GetName () << ":" << std::endl;
+  std::cout << "Initial values:" << std::endl;
+  
+  std::cout << std::left << std::setw (10) << "intArg:"
+            <<                    intDef
+            << std::endl;
+  std::cout << std::setw (10)              << "boolArg:"
+            << std::boolalpha  << boolDef  << std::noboolalpha
+            << std::endl;
+  
+  std::cout << std::setw (10)              << "strArg:"
+            << "\""            << strDef   << "\""
+            << std::endl;
+  std::cout << std::setw (10)              << "anti:"
+            << "\""            << attrDef  << "\""
+            << std::endl;
+  std::cout << std::setw (10)              << "cbArg:"
+            << "\""            << cbDef    << "\""
+            << std::endl;
+  std::cout << std::endl;
+
+
+  // Show final values
+  std::cout << "Final values:" << std::endl;
+  std::cout << std::left << std::setw (10) << "intArg:"
+            <<                    intArg
+            << std::endl;
+  std::cout << std::setw (10)              << "boolArg:"
+            << std::boolalpha  << boolArg
+            << std::noboolalpha
+            << std::endl;
+  
+  std::cout << std::setw (10)              << "strArg:"
+            << "\""            << strArg   << "\""
+            << std::endl;
+
+  // Look up new default value for attribute
+  {
+    struct TypeId::AttributeInformation info;
+    tid.LookupAttributeByName (attrName, &info);
   
-  std::cout << std::setw (10) << "strArg:" << "\"" << strArg  << "\""  << std::endl;
-  std::cout << std::setw (10) << "cbArg:"  << "\"" << g_cbArg << "\""  << std::endl;
+    std::cout << std::setw (10)            << "anti:"
+              << "\""
+              << info.initialValue->SerializeToString (info.checker)
+              << "\""
+              << std::endl;
+  }
+  std::cout << std::setw (10)              << "cbArg:"
+            << "\""            << g_cbArg  << "\""
+            << std::endl;
 
   return 0;
 }
diff -Naur ns-3.20/src/core/model/callback.h ns-3.21/src/core/model/callback.h
--- ns-3.20/src/core/model/callback.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/callback.h	2014-09-17 20:03:14.000000000 -0700
@@ -32,6 +32,9 @@
 
 namespace ns3 {
 
+// Define the doxygen subgroups all at once,
+// since the implementations are interleaved.
+
 /**
  * \ingroup core
  * \defgroup callback Callbacks
@@ -42,20 +45,69 @@
  */
 /**
  * \ingroup callback
+ * \defgroup callbackimpl Callback Implementation
+ * Callback implementation classes
  */
-/**@{*/
 /**
- * Trait class to convert a pointer into a reference,
- * used by MemPtrCallBackImpl
+ * \ingroup callback
+ * \defgroup makecallbackmemptr MakeCallback from member function pointer
+ *
+ * Build Callbacks for class method members which take varying numbers
+ * of arguments and potentially returning a value.
+ *
+ * Generally the \c MakeCallback functions are invoked with the
+ * method function address first, followed by the \c this pointer:
+ * \code
+ *   MakeCallback ( & MyClass::Handler, this);
+ * \endcode
+ *
+ * There is not a version with bound arguments.  You may be able to
+ * get the same result by using \c MakeBoundCallback with a \c static
+ * member function, as in:
+ * \code
+ *   MakeBoundCallback ( & MyClass::StaticHandler, this);
+ * \endcode
+ * This still leaves two argument slots available for binding.
+ */
+/**
+ * \ingroup callback
+ * \defgroup makecallbackfnptr MakeCallback from function pointers
+ *
+ * Build Callbacks for functions which take varying numbers of arguments
+ * and potentially returning a value.
+ */
+/**
+ * \ingroup callback
+ * \defgroup makenullcallback MakeCallback with no arguments
+ *
+ * Define empty (Null) callbacks as placeholders for unset callback variables.
+ */
+/**
+ * \ingroup callback
+ * \defgroup makeboundcallback MakeBoundCallback from functions bound with up to three arguments.
+ *
+ * Build bound Callbacks which take varying numbers of arguments,
+ * and potentially returning a value.
+ *
+ * \internal
+ *
+ * The following is experimental code. It works but we have
+ * not yet determined whether or not it is really useful and whether
+ * or not we really want to use it.
  */
-template <typename T>
-struct CallbackTraits;
 
+  
 /**
+ * \ingroup makecallbackmemptr
+ *
  * Trait class to convert a pointer into a reference,
  * used by MemPtrCallBackImpl
+ * @{
  */
 template <typename T>
+struct CallbackTraits;
+
+template <typename T>
 struct CallbackTraits<T *>
 {
   /**
@@ -70,11 +122,6 @@
 /**@}*/
 
 /**
- * \ingroup callback
- * \defgroup callbackimpl Callback Implementation
- * Callback implementation classes
- */
-/**
  * \ingroup callbackimpl
  * Abstract base class for CallbackImpl
  * Provides reference counting and equality test.
@@ -103,8 +150,9 @@
 /**
  * \ingroup callbackimpl
  * CallbackImpl classes with varying numbers of argument types
+ *
+ * @{
  */
-/**@{*/
 /** CallbackImpl class with no arguments. */
 template <typename R>
 class CallbackImpl<R,empty,empty,empty,empty,empty,empty,empty,empty,empty> : public CallbackImplBase {
@@ -179,7 +227,7 @@
 
 
 /**
- * \ingroup callback
+ * \ingroup callbackimpl
  * CallbackImpl with functors
  */
 template <typename T, typename R, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8, typename T9>
@@ -325,7 +373,7 @@
 };
 
 /**
- * \ingroup callback
+ * \ingroup makecallbackmemptr
  * CallbackImpl for pointer to member functions
  */
 template <typename OBJ_PTR, typename MEM_PTR, typename R, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
@@ -474,7 +522,7 @@
 };
 
 /**
- * \ingroup callback
+ * \ingroup callbackimpl
  * CallbackImpl for functors with first argument bound at construction
  */
 template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7, typename T8>
@@ -608,7 +656,7 @@
 };
 
 /**
- * \ingroup callback
+ * \ingroup callbackimpl
  * CallbackImpl for functors with first two arguments bound at construction
  */
 template <typename T, typename R, typename TX1, typename TX2, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6, typename T7>
@@ -730,7 +778,7 @@
 };
 
 /**
- * \ingroup callback
+ * \ingroup callbackimpl
  * CallbackImpl for functors with first three arguments bound at construction
  */
 template <typename T, typename R, typename TX1, typename TX2, typename TX3, typename T1, typename T2, typename T3, typename T4,typename T5, typename T6>
@@ -841,7 +889,7 @@
 };
 
 /**
- * \ingroup callback
+ * \ingroup callbackimpl
  * Base class for Callback class.
  * Provides pimpl abstraction.
  */
@@ -1220,13 +1268,6 @@
 }
 
 /**
- * \ingroup callback
- * \defgroup makecallbackmemptr MakeCallback from member function pointer
- *
- * Build Callbacks for class method members which take varying numbers of arguments
- * and potentially returning a value.
- */
-/**
  * \ingroup makecallbackmemptr
  * @{
  */
@@ -1321,13 +1362,6 @@
 /**@}*/
 
 /**
- * \ingroup callback
- * \defgroup makecallbackfnptr MakeCallback from function pointers
- *
- * Build Callbacks for functions which take varying numbers of arguments
- * and potentially returning a value.
- */
-/**
  * \ingroup makecallbackfnptr
  * @{
  */
@@ -1381,10 +1415,6 @@
 /**@}*/
 
 /**
- * \ingroup callback
- * \defgroup makenullcallback MakeCallback with no arguments
- */
-/**
  * \ingroup makenullcallback
  * @{
  */
@@ -1439,26 +1469,9 @@
 
 
 /**
- * \ingroup callback
- * \defgroup makeboundcallback MakeBoundCallback from functions bound with up to three arguments.
- */
-  
-/**
  * \ingroup makeboundcallback
- *
- * Build bound Callbacks which take varying numbers of arguments,
- * and potentially returning a value.
- *
- * \internal
- *
- * The following is experimental code. It works but we have
- * not yet determined whether or not it is really useful and whether
- * or not we really want to use it.
- *
- * @{
- */
-/**
  * @{
+ * Make Callbacks with one bound argument.
  * \param fnPtr function pointer
  * \param a1 first bound argument
  * \return a bound Callback
@@ -1528,11 +1541,13 @@
 /**@}*/
 
 /**
+ * \ingroup makeboundcallback
+ * @{
+ * Make Callbacks with two bound arguments.
  * \param fnPtr function pointer
  * \param a1 first bound argument
  * \param a2 second bound argument 
  * \return a bound Callback
- * @{
  */
 template <typename R, typename TX1, typename TX2, typename ARG1, typename ARG2>
 Callback<R> MakeBoundCallback (R (*fnPtr)(TX1,TX2), ARG1 a1, ARG2 a2) {
@@ -1592,12 +1607,14 @@
 /**@}*/
 
 /**
+ * \ingroup makeboundcallback
+ * @{
+ * Make Callbacks with three bound arguments.
  * \param a1 first bound argument
  * \param a2 second bound argument 
  * \param a3 third bound argument 
  * \param fnPtr function pointer
  * \return a bound Callback
- * @{
  */
 template <typename R, typename TX1, typename TX2, typename TX3, typename ARG1, typename ARG2, typename ARG3>
 Callback<R> MakeBoundCallback (R (*fnPtr)(TX1,TX2,TX3), ARG1 a1, ARG2 a2, ARG3 a3) {
@@ -1649,7 +1666,6 @@
 }
 /**@}*/
 
-/**@}*/
 
 } // namespace ns3
 
diff -Naur ns-3.20/src/core/model/command-line.cc ns-3.21/src/core/model/command-line.cc
--- ns-3.20/src/core/model/command-line.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/command-line.cc	2014-09-17 20:03:14.000000000 -0700
@@ -22,6 +22,8 @@
 #include <cctype>     // for tolower
 #include <cstdlib>    // for exit
 #include <iomanip>    // for setw, boolalpha
+#include <set>
+#include <sstream>
 
 #include "command-line.h"
 #include "log.h"
@@ -204,17 +206,29 @@
   NS_LOG_FUNCTION (this);
 
   os << "Global values:" << std::endl;
+
+  // Sort output
+  std::vector<std::string> globals;
   
   for (GlobalValue::Iterator i = GlobalValue::Begin ();
        i != GlobalValue::End ();
        ++i)
     {
-      os << "    --" << (*i)->GetName () << "=[";
+      std::stringstream ss;
+      ss << "    --" << (*i)->GetName () << "=[";
       Ptr<const AttributeChecker> checker = (*i)->GetChecker ();
       StringValue v;
       (*i)->GetValue (v);
-      os << v.Get () << "]" << std::endl;
-      os << "        " << (*i)->GetHelp () << std::endl;
+      ss << v.Get () << "]" << std::endl;
+      ss << "        " << (*i)->GetHelp () << std::endl;
+      globals.push_back (ss.str ());
+    }
+  std::sort (globals.begin (), globals.end ());
+  for (std::vector<std::string>::const_iterator it = globals.begin ();
+       it < globals.end ();
+       ++it)
+    {
+      os << *it;
     }
 }
 
@@ -231,13 +245,25 @@
 
   os << "Attributes for TypeId " << tid.GetName () << std::endl;
   
+  // Sort output
+  std::vector<std::string> attributes;
+  
   for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
     {
-      os << "    --" << tid.GetAttributeFullName (i) << "=[";
+      std::stringstream ss;
+      ss << "    --" << tid.GetAttributeFullName (i) << "=[";
       struct TypeId::AttributeInformation info = tid.GetAttribute (i);
-      os << info.initialValue->SerializeToString (info.checker) << "]"
+      ss << info.initialValue->SerializeToString (info.checker) << "]"
                 << std::endl;
-      os << "        " << info.help << std::endl;
+      ss << "        " << info.help << std::endl;
+      attributes.push_back (ss.str ());
+    }
+  std::sort (attributes.begin (), attributes.end ());
+  for (std::vector<std::string>::const_iterator it = attributes.begin ();
+       it < attributes.end ();
+       ++it)
+    {
+      os << *it;
     }
 }
 
@@ -249,13 +275,25 @@
 
   os << "TypeIds in group " << group << ":" << std::endl;
   
+  // Sort output
+  std::vector<std::string> groupTypes;
+  
   for (uint32_t i = 0; i < TypeId::GetRegisteredN (); ++i)
     {
+      std::stringstream ss;
       TypeId tid = TypeId::GetRegistered (i);
       if (tid.GetGroupName () == group)
         {
-          os << "    " <<tid.GetName () << std::endl;
+          ss << "    " <<tid.GetName () << std::endl;
         }
+      groupTypes.push_back (ss.str ());
+    }
+  std::sort (groupTypes.begin (), groupTypes.end ());
+  for (std::vector<std::string>::const_iterator it = groupTypes.begin ();
+       it < groupTypes.end ();
+       ++it)
+    {
+      os << *it;
     }
 }
 
@@ -264,10 +302,23 @@
 {
   NS_LOG_FUNCTION (this);
   os << "Registered TypeIds:" << std::endl;
+
+  // Sort output
+  std::vector<std::string> types;
+    
   for (uint32_t i = 0; i < TypeId::GetRegisteredN (); ++i)
     {
+      std::stringstream ss;
       TypeId tid = TypeId::GetRegistered (i);
-      os << "    " << tid.GetName () << std::endl;
+      ss << "    " << tid.GetName () << std::endl;
+      types.push_back (ss.str ());
+    }
+  std::sort (types.begin (), types.end ());
+  for (std::vector<std::string>::const_iterator it = types.begin ();
+       it < types.end ();
+       ++it)
+    {
+      os << *it;
     }
 }
 
@@ -276,35 +327,16 @@
 {
   NS_LOG_FUNCTION (this);
 
-  std::list<std::string> groups;
+  std::set<std::string> groups;
   for (uint32_t i = 0; i < TypeId::GetRegisteredN (); ++i)
     {
       TypeId tid = TypeId::GetRegistered (i);
-      std::string group = tid.GetGroupName ();
-      if (group == "")
-        {
-          continue;
-        }
-      bool found = false;
-      for (std::list<std::string>::const_iterator j = groups.begin ();
-           j != groups.end ();
-           ++j)
-        {
-          if (*j == group)
-            {
-              found = true;
-              break;
-            }
-        }
-      if (!found)
-        {
-          groups.push_back (group);
-        }
+      groups.insert (tid.GetGroupName ());
     }
   
   os << "Registered TypeId groups:" << std::endl;
-  
-  for (std::list<std::string>::const_iterator k = groups.begin ();
+  // Sets are already sorted
+  for (std::set<std::string>::const_iterator k = groups.begin ();
        k != groups.end ();
        ++k)
     {
@@ -404,6 +436,53 @@
   m_items.push_back (item);
 }
 
+void
+CommandLine::AddValue (const std::string &name,
+                       const std::string &attributePath)
+{
+  NS_LOG_FUNCTION (this << name << attributePath);
+  // Attribute name is last token
+  size_t colon = attributePath.rfind ("::");
+  const std::string typeName = attributePath.substr (0, colon);
+  NS_LOG_DEBUG ("typeName: '" << typeName << "', colon: " << colon);
+  
+  TypeId tid;
+  if (!TypeId::LookupByNameFailSafe (typeName, &tid))
+    {
+      NS_FATAL_ERROR ("Unknown type=" << typeName);
+    }
+
+  const std::string attrName = attributePath.substr (colon + 2);
+  struct TypeId::AttributeInformation info;  
+  if (!tid.LookupAttributeByName (attrName, &info))
+    {
+      NS_FATAL_ERROR ("Attribute not found: " << attributePath);
+    }
+      
+  std::stringstream ss;
+  ss << info.help
+     << " (" << attributePath << ") ["
+     << info.initialValue->SerializeToString (info.checker) << "]";
+  
+  AddValue (name, ss.str (),
+            MakeBoundCallback (CommandLine::HandleAttribute, attributePath)) ;
+}
+
+
+/* static */
+bool
+CommandLine::HandleAttribute (const std::string name,
+                              const std::string value)
+{
+  bool success = true;
+  if (!Config::SetGlobalFailSafe (name, StringValue (value))
+      && !Config::SetDefaultFailSafe (name, StringValue (value)))
+    {
+      success = false;
+    }
+  return success;
+}
+    
 
 bool
 CommandLine::Item::HasDefault () const
diff -Naur ns-3.20/src/core/model/command-line.h ns-3.21/src/core/model/command-line.h
--- ns-3.20/src/core/model/command-line.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/command-line.h	2014-09-17 20:03:14.000000000 -0700
@@ -50,48 +50,66 @@
  * can be processed via a Callback.
  *
  * CommandLine also provides handlers for these standard arguments:
- * \code
- *   --PrintGlobals:              Print the list of globals.
- *   --PrintGroups:               Print the list of groups.
- *   --PrintGroup=[group]:        Print all TypeIds of group.
- *   --PrintTypeIds:              Print all TypeIds.
- *   --PrintAttributes=[typeid]:  Print all attributes of typeid.
- *   --PrintHelp:                 Print this help message.
- * \endcode
+ * \verbatim
+   --PrintGlobals:              Print the list of globals.
+   --PrintGroups:               Print the list of groups.
+   --PrintGroup=[group]:        Print all TypeIds of group.
+   --PrintTypeIds:              Print all TypeIds.
+   --PrintAttributes=[typeid]:  Print all attributes of typeid.
+   --PrintHelp:                 Print this help message. \endverbatim
  * 
  * The more common \c --help is a synonym for \c --PrintHelp; an example
  * is given below.
  *
  * Finally, CommandLine processes Attribute and GlobalValue arguments.
+ * Default values for chosen attributes can be set using a shorthand
+ * argument name.
  *
  * In use, arguments are given in the form
- * \code
- *   --arg=value --toggle
- * \endcode
+ * \verbatim
+   --arg=value --toggle \endverbatim
  * Most arguments expect a value, as in the first form, \c --arg=value.
  * Toggles, corresponding to boolean arguments, can be given in any of
  * the forms
- * \code
- *   --toggle1 --toggle2=1 --toggle3=t --toggle4=true
- * \endcode
+ * \verbatim
+   --toggle1 --toggle2=1 --toggle3=t --toggle4=true \endverbatim
  * The first form changes the state of toggle1 from its default; 
  * all the rest set the corresponding boolean variable to true.
  * \c 0, \c f and \c false are accepted to set the variable to false.
  *
+ * Arguments can be repeated on the command line; the last value given
+ * will be the final value used.  For example,
+ * \verbatim
+   --arg=one --toggle=f --arg=another --toggle \endverbatim
+ * The variable set by \c --arg will end up with the value \c "another";
+ * the boolean set by \c --toggle will end up as \c true.
+ *
+ * Because arguments can be repeated it can be hard to decipher what
+ * value each variable ended up with, especially when using boolean toggles.
+ * Suggested best practice is for scripts to report the values of all items
+ * settable throught CommandLine, as done by the example below.
+ * 
+ *
  * CommandLine can set the initial value of every attribute in the system
  * with the 
  * \c --TypeIdName::AttributeName=value syntax, for example
- * \code
- *   --Application::StartTime=3s
- * \endcode
+ * \verbatim
+   --Application::StartTime=3s \endverbatim
+ * In some cases you may want to highlight the use of a particular
+ * attribute for a simulation script.  For example, you might want
+ * to make it easy to set the \c Application::StartTime using
+ * the argument \c --start, and have its help string show as part
+ * of the help message.  This can be done using the
+ * \link AddValue(const std::string, const std::string)
+ * AddValue (name, attributePath) \endlink
+ * method.
  *
  * CommandLine can also set the value of every GlobalValue
  * in the system with the \c --GlobalValueName=value syntax, for example
- * \code
- *   --SchedulerType=HeapScheduler
- * \endcode
+ * \verbatim
+   --SchedulerType=HeapScheduler \endverbatim
  *
- * A simple example is in `src/core/example/ command-line-example.cc`
+ * A simple example is in `src/core/example/``command-line-example.cc`
  * The heart of that example is this code:
  *
  * \code
@@ -99,55 +117,56 @@
  *    bool        boolArg = false;
  *    std::string strArg  = "strArg default";
  *  
- *  CommandLine cmd;
- *  cmd.Usage ("CommandLine example program.\n"
- *             "\n"
- *             "This little program demonstrates how to use CommandLine.");
+ *    CommandLine cmd;
+ *    cmd.Usage ("CommandLine example program.\n"
+ *               "\n"
+ *               "This little program demonstrates how to use CommandLine.");
  *    cmd.AddValue ("intArg",  "an int argument",       intArg);
  *    cmd.AddValue ("boolArg", "a bool argument",       boolArg);
  *    cmd.AddValue ("strArg",  "a string argument",     strArg);
+ *    cmd.AddValue ("anti",    "ns3::RandomVariableStream::Antithetic");
  *    cmd.AddValue ("cbArg",   "a string via callback", MakeCallback (SetCbArg));
- *  cmd.Parse (argc, argv);
+ *    cmd.Parse (argc, argv);
  * \endcode
  * after which it prints the values of each variable.  (The \c SetCbArg function
- * is not shown here; see `src/core/example/ command-line-example.cc`)
+ * is not shown here; see `src/core/example/``command-line-example.cc`)
  *
  * Here is the output from a few runs of that program:
  *
- * \code
- *   $ ./waf --run="command-line-example"
- *   intArg:   1
- *   boolArg:  false
- *   strArg:   "strArg default"
- *   cbArg:    "cbArg default"
- *
- *   $ ./waf --run="command-line-example --intArg=2 --boolArg --strArg=Hello --cbArg=World"
- *   intArg:   2
- *   boolArg:  true
- *   strArg:   "Hello"
- *   cbArg:    "World"
- *   
- *   $ ./waf --run="command-line-example --help"
- *   ns3-dev-command-line-example-debug [Program Arguments] [General Arguments]
- *   
- *   CommandLine example program.
- *   
- *   This little program demonstrates how to use CommandLine.
- *   
- *   Program Arguments:
- *       --intArg:   an int argument [1]
- *       --boolArg:  a bool argument [false]
- *       --strArg:   a string argument [strArg default]
- *       --cbArg:    a string via callback
- *   
- *   General Arguments:
- *       --PrintGlobals:              Print the list of globals.
- *       --PrintGroups:               Print the list of groups.
- *       --PrintGroup=[group]:        Print all TypeIds of group.
- *       --PrintTypeIds:              Print all TypeIds.
- *       --PrintAttributes=[typeid]:  Print all attributes of typeid.
- *       --PrintHelp:                 Print this help message.
- * \endcode
+ * \verbatim
+   $ ./waf --run="command-line-example"
+   intArg:   1
+   boolArg:  false
+   strArg:   "strArg default"
+   cbArg:    "cbArg default"
+
+   $ ./waf --run="command-line-example --intArg=2 --boolArg --strArg=Hello --cbArg=World"
+   intArg:   2
+   boolArg:  true
+   strArg:   "Hello"
+   cbArg:    "World"
+   
+   $ ./waf --run="command-line-example --help"
+   ns3-dev-command-line-example-debug [Program Arguments] [General Arguments]
+   
+   CommandLine example program.
+   
+   This little program demonstrates how to use CommandLine.
+   
+   Program Arguments:
+       --intArg:   an int argument [1]
+       --boolArg:  a bool argument [false]
+       --strArg:   a string argument [strArg default]
+       --anti:     Set this RNG stream to generate antithetic values (ns3::RandomVariableStream::Antithetic) [false]
+       --cbArg:    a string via callback
+   
+   General Arguments:
+       --PrintGlobals:              Print the list of globals.
+       --PrintGroups:               Print the list of groups.
+       --PrintGroup=[group]:        Print all TypeIds of group.
+       --PrintTypeIds:              Print all TypeIds.
+       --PrintAttributes=[typeid]:  Print all attributes of typeid.
+       --PrintHelp:                 Print this help message. \endverbatim
  *
  * Having parsed the arguments, some programs will need to perform
  * some additional validation of the received values.  A common issue at this
@@ -216,7 +235,6 @@
                  const std::string &help,
                  T &value);
 
-
   /**
    * Add a program argument, using a Callback to parse the value
    *
@@ -233,6 +251,15 @@
                  Callback<bool, std::string> callback);
 
   /**
+   * Add a program argument as a shorthand for an Attribute.
+   *
+   * \param name the name of the program-supplied argument.
+   * \param attributePath the fully-qualified name of the Attribute
+   */
+  void AddValue (const std::string &name,
+                 const std::string &attributePath);
+
+  /**
    * Parse the program arguments
    *
    * \param argc the 'argc' variable: number of arguments (including the
@@ -348,6 +375,15 @@
    * \param value the command line value
    */
   void HandleArgument (const std::string &name, const std::string &value) const;
+  /**
+   * Callback function to handle attributes.
+   *
+   * \param name The full name of the Attribute.
+   * \param value The value to assign to \p name.
+   * \return true if the value was set successfully, false otherwise.
+   */  
+  static bool HandleAttribute (const std::string name, const std::string value);
+
   /** Handler for \c \-\-PrintGlobals:  print all global variables and values */
   void PrintGlobals (std::ostream &os) const;
   /**
diff -Naur ns-3.20/src/core/model/config.cc ns-3.21/src/core/model/config.cc
--- ns-3.20/src/core/model/config.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/config.cc	2014-09-17 20:03:14.000000000 -0700
@@ -403,52 +403,62 @@
   else 
     {
       // this is a normal attribute.
-      TypeId tid = root->GetInstanceTypeId ();
+      TypeId tid;
+      TypeId nextTid = root->GetInstanceTypeId ();
       bool foundMatch = false;
-      for (uint32_t i = 0; i < tid.GetAttributeN(); i++)
+      
+      do
         {
-          struct TypeId::AttributeInformation info;
-          info = tid.GetAttribute(i);
-          if (info.name != item && item != "*")
+          tid = nextTid;
+          
+          for (uint32_t i = 0; i < tid.GetAttributeN(); i++)
             {
-              continue;
-            }
-          // attempt to cast to a pointer checker.
-          const PointerChecker *ptr = dynamic_cast<const PointerChecker *> (PeekPointer (info.checker));
-          if (ptr != 0)
-            {
-              NS_LOG_DEBUG ("GetAttribute(ptr)="<<info.name<<" on path="<<GetResolvedPath ());
-              PointerValue ptr;
-              root->GetAttribute (info.name, ptr);
-              Ptr<Object> object = ptr.Get<Object> ();
-              if (object == 0)
+              struct TypeId::AttributeInformation info;
+              info = tid.GetAttribute(i);
+              if (info.name != item && item != "*")
                 {
-                  NS_LOG_ERROR ("Requested object name=\""<<item<<
-                                "\" exists on path=\""<<GetResolvedPath ()<<"\""
-                                " but is null.");
                   continue;
                 }
-              foundMatch = true;
-              m_workStack.push_back (info.name);
-              DoResolve (pathLeft, object);
-              m_workStack.pop_back ();
-            }
-          // attempt to cast to an object vector.
-          const ObjectPtrContainerChecker *vectorChecker = 
-            dynamic_cast<const ObjectPtrContainerChecker *> (PeekPointer (info.checker));
-          if (vectorChecker != 0)
-            {
-              NS_LOG_DEBUG ("GetAttribute(vector)="<<info.name<<" on path="<<GetResolvedPath () << pathLeft);
-              foundMatch = true;
-              ObjectPtrContainerValue vector;
-              root->GetAttribute (info.name, vector);
-              m_workStack.push_back (info.name);
-              DoArrayResolve (pathLeft, vector);
-              m_workStack.pop_back ();
+              // attempt to cast to a pointer checker.
+              const PointerChecker *ptr = dynamic_cast<const PointerChecker *> (PeekPointer (info.checker));
+              if (ptr != 0)
+                {
+                  NS_LOG_DEBUG ("GetAttribute(ptr)="<<info.name<<" on path="<<GetResolvedPath ());
+                  PointerValue ptr;
+                  root->GetAttribute (info.name, ptr);
+                  Ptr<Object> object = ptr.Get<Object> ();
+                  if (object == 0)
+                    {
+                      NS_LOG_ERROR ("Requested object name=\""<<item<<
+                                    "\" exists on path=\""<<GetResolvedPath ()<<"\""
+                                    " but is null.");
+                      continue;
+                    }
+                  foundMatch = true;
+                  m_workStack.push_back (info.name);
+                  DoResolve (pathLeft, object);
+                  m_workStack.pop_back ();
+                }
+              // attempt to cast to an object vector.
+              const ObjectPtrContainerChecker *vectorChecker = 
+                dynamic_cast<const ObjectPtrContainerChecker *> (PeekPointer (info.checker));
+              if (vectorChecker != 0)
+                {
+                  NS_LOG_DEBUG ("GetAttribute(vector)="<<info.name<<" on path="<<GetResolvedPath () << pathLeft);
+                  foundMatch = true;
+                  ObjectPtrContainerValue vector;
+                  root->GetAttribute (info.name, vector);
+                  m_workStack.push_back (info.name);
+                  DoArrayResolve (pathLeft, vector);
+                  m_workStack.pop_back ();
+                }
+              // this could be anything else and we don't know what to do with it.
+              // So, we just ignore it.
             }
-          // this could be anything else and we don't know what to do with it.
-          // So, we just ignore it.
-        }
+
+          nextTid = tid.GetParent ();
+        } while (nextTid != tid);
+      
       if (!foundMatch)
         {
           NS_LOG_DEBUG ("Requested item="<<item<<" does not exist on path="<<GetResolvedPath ());
diff -Naur ns-3.20/src/core/model/log-macros-enabled.h ns-3.21/src/core/model/log-macros-enabled.h
--- ns-3.20/src/core/model/log-macros-enabled.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/log-macros-enabled.h	2014-09-17 20:03:14.000000000 -0700
@@ -87,10 +87,11 @@
 #ifndef NS_LOG_APPEND_CONTEXT
 /**
  * \ingroup logging
- * Append the node id to a log message.
+ * Append the node id (or other file-local programatic context, such as
+ * MPI rank) to a log message.
  *
  * This is implemented locally in `.cc` files because
- * the the relevant variable is only known there.
+ * the relevant variable is only known there.
  *
  * Preferred format is something like (assuming the node id is
  * accessible from `var`:
@@ -100,15 +101,29 @@
  *       std::clog << "[node " << var->GetObject<Node> ()->GetId () << "] ";
  *     }
  * \endcode
- *
- * \internal
- * Logging implementation macro; should not be called directly.
- *
  */
 #define NS_LOG_APPEND_CONTEXT
 #endif /* NS_LOG_APPEND_CONTEXT */
 
 
+#ifndef NS_LOG_CONDITION
+/**
+ * \ingroup logging
+ * Limit logging output based on some file-local condition,
+ * such as MPI rank.
+ *
+ * This is implemented locally in `.cc` files because
+ * the relevant condition variable is only known there.
+ *
+ * Since this appears immediately before the `do { ... } while false`
+ * construct of \c NS_LOG(level, msg), it must have the form
+ * \code
+ *   #define NS_LOG_CONDITION    if (condition)
+ * \endcode
+ */
+#define NS_LOG_CONDITION
+#endif
+
 /**
  * \ingroup logging
  *
@@ -129,6 +144,7 @@
  * Logging implementation macro; should not be called directly.
  */
 #define NS_LOG(level, msg)                                      \
+  NS_LOG_CONDITION                                              \
   do                                                            \
     {                                                           \
       if (g_log.IsEnabled (level))                              \
@@ -152,6 +168,7 @@
  * should instead use NS_LOG_FUNCTION().
  */
 #define NS_LOG_FUNCTION_NOARGS()                                \
+  NS_LOG_CONDITION                                              \
   do                                                            \
     {                                                           \
       if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
@@ -188,6 +205,7 @@
  * \param parameters the parameters to output.
  */
 #define NS_LOG_FUNCTION(parameters)                             \
+  NS_LOG_CONDITION                                              \
   do                                                            \
     {                                                           \
       if (g_log.IsEnabled (ns3::LOG_FUNCTION))                  \
@@ -212,6 +230,7 @@
  * \param msg the message to log
  */
 #define NS_LOG_UNCOND(msg)              \
+  NS_LOG_CONDITION                                              \
   do                                    \
     {                                   \
       std::clog << msg << std::endl;    \
diff -Naur ns-3.20/src/core/model/nstime.h ns-3.21/src/core/model/nstime.h
--- ns-3.20/src/core/model/nstime.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/nstime.h	2014-09-17 20:03:14.000000000 -0700
@@ -37,6 +37,22 @@
   
 /**
  * \ingroup core
+ * \defgroup time Virtual Time
+ * \brief Management of virtual time in real world units.
+ *
+ * The underlying simulator is unit agnostic, just dealing with
+ * dimensionless virtual time.  Models usually need to handle
+ * time in real world units, such as seconds, and conversions/scaling
+ * between different units, between minutes and seconds, for example.
+ *
+ * The convenience constructors in the \ref timecivil "Standard Units" module
+ * make it easy to create Times in specific units.
+ *
+ * The Time::SetResolution() function allows a one-time change of the
+ * base resolution, before Simulator::Run().
+ */
+/**
+ * \ingroup time
  * \brief Simulation virtual time values and global simulation resolution.
  *
  * This class defines all the classic C++ addition/subtraction
@@ -97,11 +113,17 @@
     LAST = 10
   };
 
+  /**
+   *  Assignment operator
+   * \param [in] o Time to assign.
+   * \return the Time.
+   */      
   inline Time & operator = (const Time & o)
   {
     m_data = o.m_data;
     return *this;
   }
+  /** Default constructor, with value 0. */
   inline Time ()
     : m_data ()
   {
@@ -110,6 +132,11 @@
 	Mark (this);
       }
   }
+  /**
+   *  Copy constructor
+   *
+   * \param [in] o Time to copy
+   */      
   inline Time(const Time & o)
     : m_data (o.m_data)
   {
@@ -118,6 +145,13 @@
 	Mark (this);
       }
   }
+  /**
+   *  Construct from a numeric value.
+   *
+   *  The current time resolution will be assumed as the unit.
+   *  \param [in] v The value.
+   *  @{
+   */
   explicit inline Time (double v)
     : m_data (lround (v))
   {
@@ -174,6 +208,16 @@
 	Mark (this);
       }
   }
+  explicit inline Time (const int64x64_t & v)
+    : m_data (v.GetHigh ())
+  {
+    if (g_markingTimes)
+      {
+	Mark (this);
+      }
+  }
+  /**@}*/
+  
   /**
    * \brief Construct Time object from common time expressions like "1ms"
    *
@@ -196,24 +240,18 @@
    */
   explicit Time (const std::string & s);
 
-  /**
-   * \brief Minimum representable Time
-   */
+  /** Minimum representable Time */
   static Time Min ()
   {
     return Time (std::numeric_limits<int64_t>::min ());
   }
-  /**
-   * \brief Maximum representable Time
-   */
+  /** Maximum representable Time */
   static Time Max ()
   {
     return Time (std::numeric_limits<int64_t>::max ());
   }
 
-  /**
-   *  Destructor
-   */
+  /** Destructor */
   ~Time ()
   {
     if (g_markingTimes)
@@ -222,42 +260,35 @@
       }
   }
 
-  /**
-   * \return true if the time is zero, false otherwise.
-   */
+  /** \return true if the time is zero, false otherwise. */
   inline bool IsZero (void) const
   {
     return m_data == 0;
   }
-  /**
-   * \return true if the time is negative or zero, false otherwise.
-   */
+  /** \return true if the time is negative or zero, false otherwise. */
   inline bool IsNegative (void) const
   {
     return m_data <= 0;
   }
-  /**
-   * \return true if the time is positive or zero, false otherwise.
-   */
+  /** \return true if the time is positive or zero, false otherwise. */
   inline bool IsPositive (void) const
   {
     return m_data >= 0;
   }
-  /**
-   * \return true if the time is strictly negative, false otherwise.
-   */
+  /** \return true if the time is strictly negative, false otherwise. */
   inline bool IsStrictlyNegative (void) const
   {
     return m_data < 0;
   }
-  /**
-   * \return true if the time is strictly positive, false otherwise.
-   */
+  /** \return true if the time is strictly positive, false otherwise. */
   inline bool IsStrictlyPositive (void) const
   {
     return m_data > 0;
   }
   /**
+   *  Compare \p this to another Time
+   *
+   *  \param [in] o The other Time
    *  \return -1,0,+1 if `this < o`, `this == o`, or `this > o`
    */
   inline int Compare (const Time & o) const
@@ -266,90 +297,57 @@
   }
 
   /**
-   * \returns an approximation in seconds of the time stored in this
-   *          instance.
+   * Get an approximation of the time stored in this instance
+   * in the indicated unit.
+   *
+   * \return An approximate value in the indicated unit.
+   * @{
    */
+  inline double GetYears (void) const
+  {
+    return ToDouble (Time::Y);
+  }
+  inline double GetDays (void) const
+  {
+    return ToDouble (Time::D);
+  }
+  inline double GetHours (void) const
+  {
+    return ToDouble (Time::H);
+  }
+  inline double GetMinutes (void) const
+  {
+    return ToDouble (Time::MIN);
+  }
   inline double GetSeconds (void) const
   {
     return ToDouble (Time::S);
   }
-
-  /**
-   * \returns an approximation in milliseconds of the time stored in this
-   *          instance.
-   */
   inline int64_t GetMilliSeconds (void) const
   {
     return ToInteger (Time::MS);
   }
-  /**
-   * \returns an approximation in microseconds of the time stored in this
-   *          instance.
-   */
   inline int64_t GetMicroSeconds (void) const
   {
     return ToInteger (Time::US);
   }
-  /**
-   * \returns an approximation in nanoseconds of the time stored in this
-   *          instance.
-   */
   inline int64_t GetNanoSeconds (void) const
   {
     return ToInteger (Time::NS);
   }
-  /**
-   * \returns an approximation in picoseconds of the time stored in this
-   *          instance.
-   */
   inline int64_t GetPicoSeconds (void) const
   {
     return ToInteger (Time::PS);
   }
-  /**
-   * \returns an approximation in femtoseconds of the time stored in this
-   *          instance.
-   */
   inline int64_t GetFemtoSeconds (void) const
   {
     return ToInteger (Time::FS);
   }
+  /**@}*/
 
   /**
-   * \returns an approximation in minutes of the time stored in this
-   *          instance.
-   */
-  inline double GetMinutes (void) const
-  {
-    return ToDouble (Time::MIN);
-  }
-  /**
-   * \returns an approximation in hours of the time stored in this
-   *          instance.
-   */
-  inline double GetHours (void) const
-  {
-    return ToDouble (Time::H);
-  }
-  /**
-   * \returns an approximation in days of the time stored in this
-   *          instance.
-   */
-  inline double GetDays (void) const
-  {
-    return ToDouble (Time::D);
-  }
-  /**
-   * \returns an approximation in years of the time stored in this
-   *          instance.
-   */
-  inline double GetYears (void) const
-  {
-    return ToDouble (Time::Y);
-  }
-
-  /**
-   * \returns the raw time value, in the current units
+   * \returns the raw time value, in the current unit
+   * @{
    */
   inline int64_t GetTimeStep (void) const
   {
@@ -363,6 +361,7 @@
   {
     return GetTimeStep ();
   }
+  /**@}*/
 
 
   /**
@@ -377,19 +376,29 @@
    * \returns the current global resolution.
    */
   static enum Unit GetResolution (void);
+
+  
   /**
-   * \param value to convert into a Time object
-   * \param timeUnit the unit of the value to convert
-   * \return a new Time object
+   *  Create a Time in the current unit.
    *
-   * This method interprets the input value according to the input
-   * unit and constructs a matching Time object.
+   *  \param [in] value The value of the new Time.
+   *  \return A Time with \p value in the current time unit.
+   */
+  inline static Time From (const int64x64_t & value)
+  {
+    return Time (value);
+  }
+  /**
+   *  Create a Time equal to \p value  in unit \c unit
    *
-   * \sa FromDouble, ToDouble, ToInteger
+   *  \param [in] value The new Time value, expressed in \c unit
+   *  \param [in] unit The unit of \p value
+   *  \return The Time representing \p value in \c unit
+   *  @{
    */
-  inline static Time FromInteger (uint64_t value, enum Unit timeUnit)
+  inline static Time FromInteger (uint64_t value, enum Unit unit)
   {
-    struct Information *info = PeekInformation (timeUnit);
+    struct Information *info = PeekInformation (unit);
     if (info->fromMul)
       {
         value *= info->factor;
@@ -400,68 +409,57 @@
       }
     return Time (value);
   }
-  /**
-   * \param timeUnit the unit of the value to return
-   * \return int64_t time value
-   *
-   * Convert the input time into an integer value according to the requested
-   * time unit.
-   */
-  inline int64_t ToInteger (enum Unit timeUnit) const
+  inline static Time FromDouble (double value, enum Unit unit)
   {
-    struct Information *info = PeekInformation (timeUnit);
-    int64_t v = m_data;
-    if (info->toMul)
+    return From (int64x64_t (value), unit);
+  }
+  inline static Time From (const int64x64_t & value, enum Unit unit)
+  {
+    struct Information *info = PeekInformation (unit);
+    // DO NOT REMOVE this temporary variable. It's here
+    // to work around a compiler bug in gcc 3.4
+    int64x64_t retval = value;
+    if (info->fromMul)
       {
-        v *= info->factor;
+        retval *= info->timeFrom;
       }
     else
       {
-        v /= info->factor;
+        retval.MulByInvert (info->timeFrom);
       }
-    return v;
-  }
-  /**
-   * \param value to convert into a Time object
-   * \param timeUnit the unit of the value to convert
-   * \return a new Time object
-   *
-   * \sa FromInteger, ToInteger, ToDouble
-   */
-  inline static Time FromDouble (double value, enum Unit timeUnit)
-  {
-    return From (int64x64_t (value), timeUnit);
+    return Time (retval);
   }
+  /**@}*/
+
+  
   /**
-   * \param timeUnit the unit of the value to return
-   * \return double time value
+   *  Get the Time value expressed in a particular unit.
    *
-   * Convert the input time into a floating point value according to the requested
-   * time unit.
+   *  \param [in] unit The desired unit
+   *  \return The Time expressed in \p unit
+   *  @{
    */
-  inline double ToDouble (enum Unit timeUnit) const
-  {
-    return To (timeUnit).GetDouble ();
-  }
-  static inline Time From (const int64x64_t & from, enum Unit timeUnit)
+  inline int64_t ToInteger (enum Unit unit) const
   {
-    struct Information *info = PeekInformation (timeUnit);
-    // DO NOT REMOVE this temporary variable. It's here
-    // to work around a compiler bug in gcc 3.4
-    int64x64_t retval = from;
-    if (info->fromMul)
+    struct Information *info = PeekInformation (unit);
+    int64_t v = m_data;
+    if (info->toMul)
       {
-        retval *= info->timeFrom;
+        v *= info->factor;
       }
     else
       {
-        retval.MulByInvert (info->timeFrom);
+        v /= info->factor;
       }
-    return Time (retval);
+    return v;
+  }
+  inline double ToDouble (enum Unit unit) const
+  {
+    return To (unit).GetDouble ();
   }
-  inline int64x64_t To (enum Unit timeUnit) const
+  inline int64x64_t To (enum Unit unit) const
   {
-    struct Information *info = PeekInformation (timeUnit);
+    struct Information *info = PeekInformation (unit);
     int64x64_t retval = int64x64_t (m_data);
     if (info->toMul)
       {
@@ -473,23 +471,16 @@
       }
     return retval;
   }
+  /**@}*/
+
+  
+  /** Cast to int64x64_t */
   inline operator int64x64_t () const
   {
     return int64x64_t (m_data);
   }
-  explicit inline Time (const int64x64_t & value)
-    : m_data (value.GetHigh ())
-  {
-    if (g_markingTimes)
-      {
-	Mark (this);
-      }
-  }
-  inline static Time From (const int64x64_t & value)
-  {
-    return Time (value);
-  }
 
+  
   /**
    * Attach a unit to a Time, to facilitate output in a specific unit.
    *
@@ -501,13 +492,12 @@
    * will print ``+3140.0ms``
    *
    * \param unit [in] The unit to use.
+   * \return The Time with embedded unit.
    */
   TimeWithUnit As (const enum Unit unit) const;
 
 private:
-  /**
-   * How to convert between other units and the current unit
-   */
+  /** How to convert between other units and the current unit. */
   struct Information
   {
     bool toMul;                     //!< Multiply when converting To, otherwise divide
@@ -516,26 +506,47 @@
     int64x64_t timeTo;              //!< Multiplier to convert to this unit
     int64x64_t timeFrom;            //!< Multiplier to convert from this unit
   };
-  /**
-   * Current time unit, and conversion info.
-   */
+  /** Current time unit, and conversion info. */
   struct Resolution
   {
     struct Information info[LAST];  //!<  Conversion info from current unit
     enum Time::Unit unit;           //!<  Current time unit
   };
 
+  /**
+   *  Get the current Resolution
+   *
+   * \return A pointer to the current Resolution
+   */
   static inline struct Resolution *PeekResolution (void)
   {
     static struct Time::Resolution resolution = SetDefaultNsResolution ();
     return & resolution;
   }
+  /**
+   *  Get the Information record for \p timeUnit for the current Resolution
+   *
+   *  \param [in] timeUnit The Unit to get Information for
+   *  \return the Information for \p timeUnit
+   */
   static inline struct Information *PeekInformation (enum Unit timeUnit)
   {
     return & (PeekResolution ()->info[timeUnit]);
   }
 
+  /**
+   *  Set the default resolution
+   *
+   * \return The Resolution object for the default resolution.
+   */
   static struct Resolution SetDefaultNsResolution (void);
+  /**
+   *  Set the current Resolution.
+   *
+   *  \param [in] unit The unit to use as the new resolution.
+   *  \param [in,out] resolution The Resolution record to update.
+   *  \param [in] convert Whether to convert existing Time objects to the new resolution.
+   */
   static void SetResolution (enum Unit unit, struct Resolution *resolution,
                              const bool convert = true);
 
@@ -576,7 +587,9 @@
   static MarkedTimes * g_markingTimes;
 public:
   /**
-   *  Function to force static initialization of Time
+   *  Function to force static initialization of Time.
+   *
+   * \return true on the first call
    */
   static bool StaticInit ();
 private:
@@ -593,18 +606,28 @@
    */
   static void ClearMarkedTimes ();
   /**
-   *  Record a Time instance with the MarkedTimes
+   *  Record a Time instance with the MarkedTimes.
+   *  \param [in] time The Time instance to record.
    */
   static void Mark (Time * const time);
   /**
-   *  Remove a Time instance from the MarkedTimes, called by ~Time()
+   *  Remove a Time instance from the MarkedTimes, called by ~Time().
+   *  \param [in] time The Time instance to remove.
    */
   static void Clear (Time * const time);
   /**
    *  Convert existing Times to the new unit.
+   *  \param [in] unit The Unit to convert existing Times to.
    */
   static void ConvertTimes (const enum Unit unit);
 
+  /**
+   *  @{
+   *  Arithmetic operator.
+   *  \param [in] lhs Left hand argument
+   *  \param [in] rhs Righ hand argument
+   *  \return The result of the operator.
+   */
   friend bool operator == (const Time & lhs, const Time & rhs);
   friend bool operator != (const Time & lhs, const Time & rhs);
   friend bool operator <= (const Time & lhs, const Time & rhs);
@@ -619,12 +642,30 @@
   friend Time operator / (const Time & lhs, const int64_t & rhs);
   friend Time & operator += (Time & lhs, const Time & rhs);
   friend Time & operator -= (Time & lhs, const Time & rhs);
+  /**@}*/
+  
+  /**
+   *  Absolute value function for Time
+   *  \param time the input value
+   *  \returns the absolute value of the input value.
+   */
   friend Time Abs (const Time & time);
+  /**
+   *  Max function for Time.
+   *  \param ta the first value
+   *  \param tb the seconds value
+   *  \returns the max of the two input values.
+   */
   friend Time Max (const Time & ta, const Time & tb);
+  /**
+   *  Min function for Time.
+   *  \param ta the first value
+   *  \param tb the seconds value
+   *  \returns the min of the two input values.
+   */
   friend Time Min (const Time & ta, const Time & tb);
 
-
-  int64_t m_data;                   //!< Virtual time value, in the current unit.
+  int64_t m_data;  //!< Virtual time value, in the current unit.
 
 };  // class Time
 
@@ -708,38 +749,22 @@
   return lhs;
 }
 
-/**
- * Max function for Time.
- * \param ta the first value
- * \param tb the seconds value
- * \returns the max of the two input values.
- */
+  
+inline Time Abs (const Time & time)
+{
+  return Time ((time.m_data < 0) ? -time.m_data : time.m_data);
+}
 inline Time Max (const Time & ta, const Time & tb)
 {
   return Time ((ta.m_data < tb.m_data) ? tb : ta);
 }
-/**
- * Min function for Time.
- * \param ta the first value
- * \param tb the seconds value
- * \returns the min of the two input values.
- */
 inline Time Min (const Time & ta, const Time & tb)
 {
   return Time ((ta.m_data > tb.m_data) ? tb : ta);
 }
 
 /**
- * Absolute value function for Time
- * \param time the input value
- * \returns the absolute value of the input value.
- */
-inline Time Abs (const Time & time)
-{
-  return Time ((time.m_data < 0) ? -time.m_data : time.m_data);
-}
-
-/**
+ * \ingroup time
  * \brief Time output streamer.
  * 
  * Generates output such as "3.96ns".  Times are printed with the
@@ -749,274 +774,163 @@
  *   - `left`
  * The stream `width` and `precision` are ignored; Time output always
  * includes ".0".
- * \relates Time
+ *
+ * \param [in] os The output stream.
+ * \param [in] time The Time to put on the stream.
+ * \return The stream.
  */
-std::ostream & operator<< (std::ostream & os, const Time & time);
+std::ostream & operator << (std::ostream & os, const Time & time);
 /**
+ * \ingroup time
  * \brief Time input streamer
  *
  * Uses the Time::Time (const std::string &) constructor
- * \relates Time
+ *
+ * \param [in] is The input stream.
+ * \param [out] time The Time variable to set from the stream data.
+ * \return The stream.
  */
-std::istream & operator>> (std::istream & is, Time & time);
+std::istream & operator >> (std::istream & is, Time & time);
 
 /**
- * \brief create ns3::Time instances in units of seconds.
+ * \ingroup time
+ * \defgroup timecivil Standard time units.
+ * \brief Convenience constructors in standard units.
  *
  * For example:
  * \code
- * Time t = Seconds (2.0);
- * Simulator::Schedule (Seconds (5.0), ...);
+ *   Time t = Seconds (2.0);
+ *   Simulator::Schedule (Seconds (5.0), ...);
  * \endcode
- * \param seconds seconds value
- * \relates Time
  */
-inline Time Seconds (double seconds)
-{
-  return Time::FromDouble (seconds, Time::S);
-}
-
 /**
- * \brief create ns3::Time instances in units of milliseconds.
- *
- * For example:
- * \code
- * Time t = MilliSeconds (2);
- * Simulator::Schedule (MilliSeconds (5), ...);
- * \endcode
- * \param ms milliseconds value
- * \relates Time
+ * \ingroup timecivil
+ * Construct a Time in the indicated unit.
+ * \param value The value
+ * \return The Time
+ * @{
  */
-inline Time MilliSeconds (uint64_t ms)
+inline Time Years (double value)
 {
-  return Time::FromInteger (ms, Time::MS);
+  return Time::FromDouble (value, Time::Y);
 }
-/**
- * \brief create ns3::Time instances in units of microseconds.
- *
- * For example:
- * \code
- * Time t = MicroSeconds (2);
- * Simulator::Schedule (MicroSeconds (5), ...);
- * \endcode
- * \param us microseconds value
- * \relates Time
- */
-inline Time MicroSeconds (uint64_t us)
+inline Time Years (int64x64_t value)
 {
-  return Time::FromInteger (us, Time::US);
+  return Time::From (value, Time::Y);
 }
-/**
- * \brief create ns3::Time instances in units of nanoseconds.
- *
- * For example:
- * \code
- * Time t = NanoSeconds (2);
- * Simulator::Schedule (NanoSeconds (5), ...);
- * \endcode
- * \param ns nanoseconds value
- * \relates Time
- */
-inline Time NanoSeconds (uint64_t ns)
+inline Time Days (double value)
 {
-  return Time::FromInteger (ns, Time::NS);
+  return Time::FromDouble (value, Time::D);
 }
-/**
- * \brief create ns3::Time instances in units of picoseconds.
- *
- * For example:
- * \code
- * Time t = PicoSeconds (2);
- * Simulator::Schedule (PicoSeconds (5), ...);
- * \endcode
- * \param ps picoseconds value
- * \relates Time
- */
-inline Time PicoSeconds (uint64_t ps)
+inline Time Days (int64x64_t value)
 {
-  return Time::FromInteger (ps, Time::PS);
+  return Time::From (value, Time::D);
 }
-/**
- * \brief create ns3::Time instances in units of femtoseconds.
- *
- * For example:
- * \code
- * Time t = FemtoSeconds (2);
- * Simulator::Schedule (FemtoSeconds (5), ...);
- * \endcode
- * \param fs femtoseconds value
- * \relates Time
- */
-inline Time FemtoSeconds (uint64_t fs)
+inline Time Hours (double value)
 {
-  return Time::FromInteger (fs, Time::FS);
+  return Time::FromDouble (value, Time::H);
 }
-/**
- * \brief create ns3::Time instances in units of minutes (equal to 60 seconds).
- *
- * For example:
- * \code
- * Time t = Minutes (2.0);
- * Simulator::Schedule (Minutes (5.0), ...);
- * \endcode
- * \param minutes mintues value
- * \relates Time
- */
-inline Time Minutes (double minutes)
+inline Time Hours (int64x64_t value)
 {
-  return Time::FromDouble (minutes, Time::MIN);
+  return Time::From (value, Time::H);
 }
-/**
- * \brief create ns3::Time instances in units of hours (equal to 60 minutes).
- *
- * For example:
- * \code
- * Time t = Hours (2.0);
- * Simulator::Schedule (Hours (5.0), ...);
- * \endcode
- * \param hours hours value
- * \relates Time
- */
-inline Time Hours (double hours)
+inline Time Minutes (double value)
 {
-  return Time::FromDouble (hours, Time::H);
+  return Time::FromDouble (value, Time::MIN);
 }
-/**
- * \brief create ns3::Time instances in units of days (equal to 24 hours).
- *
- * For example:
- * \code
- * Time t = Days (2.0);
- * Simulator::Schedule (Days (5.0), ...);
- * \endcode
- * \param days days value
- * \relates Time
- */
-inline Time Days (double days)
+inline Time Minutes (int64x64_t value)
 {
-  return Time::FromDouble (days, Time::D);
+  return Time::From (value, Time::MIN);
 }
-/**
- * \brief create ns3::Time instances in units of years (equal to 365 days).
- *
- * For example:
- * \code
- * Time t = Years (2.0);
- * Simulator::Schedule (Years (5.0), ...);
- * \endcode
- * \param years years value
- * \relates Time
- */
-inline Time Years (double years)
+inline Time Seconds (double value)
 {
-  return Time::FromDouble (years, Time::Y);
+  return Time::FromDouble (value, Time::S);
 }
-
-/**
- * \see Seconds(double)
- * \relates Time
- */
-inline Time Seconds (int64x64_t seconds)
+inline Time Seconds (int64x64_t value)
 {
-  return Time::From (seconds, Time::S);
+  return Time::From (value, Time::S);
 }
-/**
- * \see MilliSeconds(uint64_t)
- * \relates Time
- */
-inline Time MilliSeconds (int64x64_t ms)
+inline Time MilliSeconds (uint64_t value)
 {
-  return Time::From (ms, Time::MS);
+  return Time::FromInteger (value, Time::MS);
 }
-/**
- * \see MicroSeconds(uint64_t)
- * \relates Time
- */
-inline Time MicroSeconds (int64x64_t us)
+inline Time MilliSeconds (int64x64_t value)
 {
-  return Time::From (us, Time::US);
+  return Time::From (value, Time::MS);
 }
-/**
- * \see NanoSeconds(uint64_t)
- * \relates Time
- */
-inline Time NanoSeconds (int64x64_t ns)
+inline Time MicroSeconds (uint64_t value)
 {
-  return Time::From (ns, Time::NS);
+  return Time::FromInteger (value, Time::US);
 }
-/**
- * \see PicoSeconds(uint64_t)
- * \relates Time
- */
-inline Time PicoSeconds (int64x64_t ps)
+inline Time MicroSeconds (int64x64_t value)
 {
-  return Time::From (ps, Time::PS);
+  return Time::From (value, Time::US);
 }
-/**
- * \see FemtoSeconds(uint64_t)
- * \relates Time
- */
-inline Time FemtoSeconds (int64x64_t fs)
+inline Time NanoSeconds (uint64_t value)
 {
-  return Time::From (fs, Time::FS);
+  return Time::FromInteger (value, Time::NS);
 }
-/**
- * \see Minutes(uint64_t)
- * \relates Time
- */
-inline Time Minutes (int64x64_t minutes)
+inline Time NanoSeconds (int64x64_t value)
 {
-  return Time::From (minutes, Time::MIN);
+  return Time::From (value, Time::NS);
 }
-/**
- * \see Minutes(uint64_t)
- * \relates Time
- */
-inline Time Hours (int64x64_t hours)
+inline Time PicoSeconds (uint64_t value)
 {
-  return Time::From (hours, Time::H);
+  return Time::FromInteger (value, Time::PS);
 }
-/**
- * \see Minutes(uint64_t)
- * \relates Time
- */
-inline Time Days (int64x64_t days)
+inline Time PicoSeconds (int64x64_t value)
 {
-  return Time::From (days, Time::D);
+  return Time::From (value, Time::PS);
 }
-/**
- * \see Minutes(uint64_t)
- * \relates Time
- */
-inline Time Years (int64x64_t years)
+inline Time FemtoSeconds (uint64_t value)
 {
-  return Time::From (years, Time::Y);
+  return Time::FromInteger (value, Time::FS);
 }
+inline Time FemtoSeconds (int64x64_t value)
+{
+  return Time::From (value, Time::FS);
+}
+/**@}*/
+  
 
-// internal function not publicly documented
+/**
+ *  \ingroup time
+ *  \internal Scheduler interface
+ *  \param [in] ts The time value, in the current unit.
+ *  \return A Time.
+ */
 inline Time TimeStep (uint64_t ts)
 {
   return Time (ts);
 }
 
 /**
+ * \ingroup time
  * \class ns3::TimeValue
- * \brief hold objects of type ns3::Time
+ * \brief Attribute for objects of type ns3::Time
  */
-
-
 ATTRIBUTE_VALUE_DEFINE (Time);
+
+/**
+ *  Attribute accessor function for Time
+ *  @{
+ */
 ATTRIBUTE_ACCESSOR_DEFINE (Time);
+/**@}*/
 
 /**
- * \brief Helper to make a Time checker with bounded range.
- * Both limits are inclusive
+ *  \ingroup time
+ *  \brief Helper to make a Time checker with bounded range.
+ *  Both limits are inclusive
  *
- * \return the AttributeChecker
+ *  \param [in] min Minimum allowed value.
+ *  \param [in] max Maximum allowed value.
+ *  \return the AttributeChecker
  */
 Ptr<const AttributeChecker> MakeTimeChecker (const Time min, const Time max);
 
 /**
+ * \ingroup time
  * \brief Helper to make an unbounded Time checker.
  *
  * \return the AttributeChecker
@@ -1028,8 +942,10 @@
 }
 
 /**
+ * \ingroup time
  * \brief Helper to make a Time checker with a lower bound.
  *
+ *  \param [in] min Minimum allowed value.
  * \return the AttributeChecker
  */
 inline
@@ -1060,8 +976,13 @@
   Time m_time;        //!< The time
   Time::Unit m_unit;  //!< The unit to use in output
 
-  /// Output streamer
-  friend std::ostream & operator << (std::ostream & os, const TimeWithUnit & time);
+  /**
+   *  Output streamer
+   *  \param [in] os The stream.
+   *  \param [in] timeU The Time with desired unit
+   *  \returns The stream.
+   */
+  friend std::ostream & operator << (std::ostream & os, const TimeWithUnit & timeU);
 
 };  // class TimeWithUnit
 
diff -Naur ns-3.20/src/core/model/random-variable-stream.cc ns-3.21/src/core/model/random-variable-stream.cc
--- ns-3.20/src/core/model/random-variable-stream.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/random-variable-stream.cc	2014-09-17 20:03:14.000000000 -0700
@@ -184,7 +184,7 @@
 {
   NS_LOG_FUNCTION (this << min << max);
   NS_ASSERT (min <= max);
-  return static_cast<uint32_t> ( GetValue (min, max + 1) );
+  return static_cast<uint32_t> ( GetValue ((double) (min), (double) (max) + 1.0) );
 }
 
 double 
diff -Naur ns-3.20/src/core/model/test.h ns-3.21/src/core/model/test.h
--- ns-3.20/src/core/model/test.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/test.h	2014-09-17 20:03:14.000000000 -0700
@@ -735,6 +735,31 @@
 
 /**
  * \ingroup testing
+ * \brief Test that an actual value is less than or equal to a limit and report
+ * and abort if not.
+ * \internal
+ */
+#define NS_TEST_ASSERT_MSG_LT_OR_EQ_INTERNAL(actual, limit, msg, file, line)  \
+  do {                                                                  \
+    if (!((actual) <= (limit)))                                          \
+      {                                                                 \
+        ASSERT_ON_FAILURE;                                              \
+        std::ostringstream msgStream;                                   \
+        msgStream << msg;                                               \
+        std::ostringstream actualStream;                                \
+        actualStream << actual;                                         \
+        std::ostringstream limitStream;                                 \
+        limitStream << limit;                                           \
+        ReportTestFailure (std::string (#actual) + " (actual) < " +         \
+                       std::string (#limit) + " (limit)",               \
+                       actualStream.str (), limitStream.str (),         \
+                       msgStream.str (), file, line);                   \
+        CONTINUE_ON_FAILURE;                                            \
+      }                                                                 \
+  } while (false)
+
+/**
+ * \ingroup testing
  *
  * \brief Test that an actual value is less than a limit and report and abort
  * if not.
@@ -755,6 +780,26 @@
 
 /**
  * \ingroup testing
+ *
+ * \brief Test that an actual value is less than or equal to a limit and
+ * report and abort if not.
+ *
+ * Check to see if the actual value found in a test case is less than or equal
+ * to the limit value.  If the actual value is lesser or equal nothing happens,
+ * but if the check fails, an error is reported in a consistent way and the
+ * execution of the current test case is aborted.
+ *
+ * The message is interpreted as a stream.
+ *
+ * \param actual Expression for the actual value found during the test.
+ * \param limit Expression for the limit value of the test.
+ * \param msg Message that is output if the test does not pass.
+ */
+#define NS_TEST_ASSERT_MSG_LT_OR_EQ(actual, limit, msg) \
+  NS_TEST_ASSERT_MSG_LT_OR_EQ_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
+
+/**
+ * \ingroup testing
  * \brief Test that an actual value is less than a limit and report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
@@ -781,6 +826,33 @@
 
 /**
  * \ingroup testing
+ * \brief Test that an actual value is less than or equal to a limit and report
+ * if not.
+ *
+ * Required to avoid use of return statement which allows use in methods
+ * (callbacks) returning void.
+ * \internal
+ */
+#define NS_TEST_EXPECT_MSG_LT_OR_EQ_INTERNAL(actual, limit, msg, file, line)  \
+  do {                                                                  \
+    if (!((actual) <= (limit)))                                          \
+      {                                                                 \
+        ASSERT_ON_FAILURE;                                              \
+        std::ostringstream msgStream;                                   \
+        msgStream << msg;                                               \
+        std::ostringstream actualStream;                                \
+        actualStream << actual;                                         \
+        std::ostringstream limitStream;                                 \
+        limitStream << limit;                                           \
+        ReportTestFailure (std::string (#actual) + " (actual) < " +         \
+                       std::string (#limit) + " (limit)",               \
+                       actualStream.str (), limitStream.str (),         \
+                       msgStream.str (), file, line);                   \
+      }                                                                 \
+  } while (false)
+
+/**
+ * \ingroup testing
  *
  * \brief Test that an actual value is less than a limit and report if not.
  *
@@ -798,6 +870,26 @@
 #define NS_TEST_EXPECT_MSG_LT(actual, limit, msg) \
   NS_TEST_EXPECT_MSG_LT_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
+/**
+ * \ingroup testing
+ *
+ * \brief Test that an actual value is less than or equal to a limit and report
+ *        if not.
+ *
+ * Check to see if the actual value found in a test case is less than or equal to
+ * the limit value.  If the actual value is lesser or equal nothing happens, but
+ * if the check fails, an error is reported in a consistent way.  EXPECT* macros
+ * do not return if an error is detected.
+ *
+ * The message is interpreted as a stream.
+ *
+ * \param actual Expression for the actual value found during the test.
+ * \param limit Expression for the limit value of the test.
+ * \param msg Message that is output if the test does not pass.
+ */
+#define NS_TEST_EXPECT_MSG_LT_OR_EQ(actual, limit, msg) \
+  NS_TEST_EXPECT_MSG_LT_OR_EQ_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
+
 // ===========================================================================
 // Test for greater than relation
 // ===========================================================================
@@ -829,6 +921,31 @@
 
 /**
  * \ingroup testing
+ * \brief Test that an actual value is greater than or equal to a limit and
+ * report and abort if not.
+ * \internal
+ */
+#define NS_TEST_ASSERT_MSG_GT_OR_EQ_INTERNAL(actual, limit, msg, file, line)  \
+  do {                                                                  \
+    if (!((actual) >= (limit)))                                          \
+      {                                                                 \
+        ASSERT_ON_FAILURE;                                              \
+        std::ostringstream msgStream;                                   \
+        msgStream << msg;                                               \
+        std::ostringstream actualStream;                                \
+        actualStream << actual;                                         \
+        std::ostringstream limitStream;                                 \
+        limitStream << limit;                                           \
+        ReportTestFailure (std::string (#actual) + " (actual) > " +         \
+                       std::string (#limit) + " (limit)",               \
+                       actualStream.str (), limitStream.str (),         \
+                       msgStream.str (), file, line);                   \
+        CONTINUE_ON_FAILURE;                                            \
+      }                                                                 \
+  } while (false)
+
+/**
+ * \ingroup testing
  *
  * \brief Test that an actual value is greater than a limit and report and abort
  * if not.
@@ -849,6 +966,26 @@
 
 /**
  * \ingroup testing
+ *
+ * \brief Test that an actual value is greater than or equal to a limit and
+ * report and abort if not.
+ *
+ * Check to see if the actual value found in a test case is greater than or
+ * equal to the limit value.  If the actual value is greater nothing happens, but
+ * if the check fails, an error is reported in a consistent way and the execution
+ * of the current test case is aborted.
+ *
+ * The message is interpreted as a stream.
+ *
+ * \param actual Expression for the actual value found during the test.
+ * \param limit Expression for the limit value of the test.
+ * \param msg Message that is output if the test does not pass.
+ */
+#define NS_TEST_ASSERT_MSG_GT_OR_EQ(actual, limit, msg) \
+  NS_TEST_ASSERT_MSG_GT_OR_EQ_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
+
+/**
+ * \ingroup testing
  * \brief Test that an actual value is greater than a limit and report if not.
  * 
  * Required to avoid use of return statement which allows use in methods 
@@ -875,6 +1012,33 @@
 
 /**
  * \ingroup testing
+ * \brief Test that an actual value is greater than a or equal to limit and
+ * report if not.
+ *
+ * Required to avoid use of return statement which allows use in methods
+ * (callbacks) returning void.
+ * \internal
+ */
+#define NS_TEST_EXPECT_MSG_GT_OR_EQ_INTERNAL(actual, limit, msg, file, line)  \
+  do {                                                                  \
+    if (!((actual) >= (limit)))                                          \
+      {                                                                 \
+        ASSERT_ON_FAILURE;                                               \
+        std::ostringstream msgStream;                                   \
+        msgStream << msg;                                               \
+        std::ostringstream actualStream;                                \
+        actualStream << actual;                                         \
+        std::ostringstream limitStream;                                 \
+        limitStream << limit;                                           \
+        ReportTestFailure (std::string (#actual) + " (actual) > " +      \
+                       std::string (#limit) + " (limit)",               \
+                       actualStream.str (), limitStream.str (),         \
+                       msgStream.str (), file, line);                   \
+      }                                                                 \
+  } while (false)
+
+/**
+ * \ingroup testing
  *
  * \brief Test that an actual value is greater than a limit and report if not.
  *
@@ -892,6 +1056,26 @@
 #define NS_TEST_EXPECT_MSG_GT(actual, limit, msg) \
   NS_TEST_EXPECT_MSG_GT_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
 
+/**
+ * \ingroup testing
+ *
+ * \brief Test that an actual value is greater than or equal to limit and report
+ * if not.
+ *
+ * Check to see if the actual value found in a test case is greater than or
+ * equal to the limit value.  If the actual value is greater nothing happens,
+ * but if the check fails, an error is reported in a consistent way.  EXPECT* macros do
+ * not return if an error is detected.
+ *
+ * The message is interpreted as a stream.
+ *
+ * \param actual Expression for the actual value found during the test.
+ * \param limit Expression for the limit value of the test.
+ * \param msg Message that is output if the test does not pass.
+ */
+#define NS_TEST_EXPECT_MSG_GT_OR_EQ(actual, limit, msg) \
+  NS_TEST_EXPECT_MSG_GT_OR_EQ_INTERNAL (actual, limit, msg, __FILE__, __LINE__)
+
 namespace ns3 {
 
 /**
diff -Naur ns-3.20/src/core/model/time.cc ns-3.21/src/core/model/time.cc
--- ns-3.20/src/core/model/time.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/model/time.cc	2014-09-17 20:03:14.000000000 -0700
@@ -44,6 +44,8 @@
  * \internal
  * Get mutex for critical sections around modification of Time::g_markingTimes
  *
+ * \returns The static mutex to control access to Time::g_markingTimes.
+ *
  * \relates Time
  */
 SystemMutex &
@@ -387,8 +389,8 @@
 }
  
 
-std::ostream&
-operator<< (std::ostream& os, const Time & time)
+std::ostream &
+operator << (std::ostream & os, const Time & time)
 {
   os << time.As (Time::GetResolution ());
   return os;
@@ -427,7 +429,8 @@
 }
 
 
-std::istream& operator>> (std::istream& is, Time & time)
+std::istream &
+operator >> (std::istream & is, Time & time)
 {
   std::string value;
   is >> value;
diff -Naur ns-3.20/src/core/test/config-test-suite.cc ns-3.21/src/core/test/config-test-suite.cc
--- ns-3.20/src/core/test/config-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/test/config-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -138,6 +138,68 @@
   return m_b;
 }
 
+// Other test objects
+//
+
+class DerivedConfigTestObject : public ConfigTestObject
+{
+public:
+  static TypeId GetTypeId (void);
+  DerivedConfigTestObject (void) {}
+  virtual ~DerivedConfigTestObject (void) {}
+};
+
+TypeId
+DerivedConfigTestObject::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("DerivedConfigTestObject")
+    .SetParent<ConfigTestObject> ()
+    ;
+  return tid;
+}
+
+class BaseConfigObject : public Object
+{
+public:
+  static TypeId GetTypeId (void);
+  BaseConfigObject (void) : m_x(15) {}
+  virtual ~BaseConfigObject (void) {}
+private:
+  int8_t m_x;
+  void Increment (void) { m_x++; } // silence unused variable warning
+};
+
+TypeId
+BaseConfigObject::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("BaseConfigObject")
+    .SetParent<Object> ()
+    .AddAttribute ("X", "",
+                   IntegerValue (10),
+                   MakeIntegerAccessor (&BaseConfigObject::m_x),
+                   MakeIntegerChecker<int8_t> ())
+    ;
+  return tid;
+}
+
+class DerivedConfigObject : public BaseConfigObject
+{
+public:
+  static TypeId GetTypeId (void);
+  DerivedConfigObject (void) {}
+  virtual ~DerivedConfigObject (void) {}
+};
+
+TypeId
+DerivedConfigObject::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("DerivedConfigObject")
+    .SetParent<BaseConfigObject> ()
+    ;
+  return tid;
+}
+
+
 // ===========================================================================
 // Test for the ability to register and use a root namespace
 // ===========================================================================
@@ -607,6 +669,58 @@
 }
 
 // ===========================================================================
+// Test for the ability to search attributes of parent classes
+// when Resolver searches for attributes in a derived class object.
+// This test passes with the patch found in
+// https://www.nsnam.org/bugzilla/show_bug.cgi?id=1673
+// (also reported in https://www.nsnam.org/bugzilla/show_bug.cgi?id=1959)
+// ===========================================================================
+class SearchAttributesOfParentObjectsTestCase : public TestCase
+{
+public:
+  SearchAttributesOfParentObjectsTestCase ();
+  virtual ~SearchAttributesOfParentObjectsTestCase () {}
+
+private:
+  virtual void DoRun (void);
+
+};
+
+SearchAttributesOfParentObjectsTestCase::SearchAttributesOfParentObjectsTestCase ()
+  : TestCase ("Check that attributes of base class are searchable from paths including objects of derived class")
+{
+}
+
+void
+SearchAttributesOfParentObjectsTestCase::DoRun (void)
+{
+  IntegerValue iv;
+  //
+  // Create a root namespace object that doesn't have attributes but
+  // whose parent class has 'NodeA' attribute
+  //
+  Ptr<DerivedConfigTestObject> root = CreateObject<DerivedConfigTestObject> ();
+  Config::RegisterRootNamespaceObject (root);
+
+  //
+  //  Instantiate /NodeA
+  //
+  Ptr<DerivedConfigTestObject> a = CreateObject<DerivedConfigTestObject> ();
+  root->SetNodeA (a);
+
+  //
+  // BaseConfigObject has attribute X, but we aggregate DerivedConfigObject 
+  // instead
+  //
+  Ptr<DerivedConfigObject> derived = CreateObject<DerivedConfigObject> ();
+  a->AggregateObject (derived);
+  Config::Set ("/NodeA/$DerivedConfigObject/X", IntegerValue (42));
+  derived->GetAttribute ("X", iv);
+  NS_TEST_ASSERT_MSG_EQ (iv.Get (), 42, "Object Attribute \"X\" not settable in derived class");
+
+}
+
+// ===========================================================================
 // The Test Suite that glues all of the Test Cases together.
 // ===========================================================================
 class ConfigTestSuite : public TestSuite
@@ -621,6 +735,7 @@
   AddTestCase (new RootNamespaceConfigTestCase, TestCase::QUICK);
   AddTestCase (new UnderRootNamespaceConfigTestCase, TestCase::QUICK);
   AddTestCase (new ObjectVectorConfigTestCase, TestCase::QUICK);
+  AddTestCase (new SearchAttributesOfParentObjectsTestCase, TestCase::QUICK);
 }
 
 static ConfigTestSuite configTestSuite;
diff -Naur ns-3.20/src/core/test/random-variable-stream-test-suite.cc ns-3.21/src/core/test/random-variable-stream-test-suite.cc
--- ns-3.20/src/core/test/random-variable-stream-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/core/test/random-variable-stream-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -162,6 +162,40 @@
       NS_TEST_ASSERT_MSG_LT (value, max, "Value greater than or equal to maximum.");
     }
 
+  // Boundary checking on GetInteger; should be [min,max]; from bug 1964
+  static const uint32_t UNIFORM_INTEGER_MIN = 0;
+  static const uint32_t UNIFORM_INTEGER_MAX = 4294967295U;
+  // [0,0] should return 0
+  uint32_t intValue;
+  intValue = x->GetInteger (UNIFORM_INTEGER_MIN, UNIFORM_INTEGER_MIN);
+  NS_TEST_ASSERT_MSG_EQ (intValue, UNIFORM_INTEGER_MIN, "Uniform RV GetInteger boundary testing");
+  // [UNIFORM_INTEGER_MAX, UNIFORM_INTEGER_MAX] should return UNIFORM_INTEGER_MAX
+  intValue = x->GetInteger (UNIFORM_INTEGER_MAX, UNIFORM_INTEGER_MAX);
+  NS_TEST_ASSERT_MSG_EQ (intValue, UNIFORM_INTEGER_MAX, "Uniform RV GetInteger boundary testing");
+  // [0,1] should return mix of 0 or 1
+  intValue = 0;
+  for (int i = 0; i < 20; i++)
+    {
+      intValue += x->GetInteger (UNIFORM_INTEGER_MIN, UNIFORM_INTEGER_MIN + 1);
+    }
+  NS_TEST_ASSERT_MSG_GT (intValue, 0, "Uniform RV GetInteger boundary testing");
+  NS_TEST_ASSERT_MSG_LT (intValue, 20, "Uniform RV GetInteger boundary testing");
+  // [MAX-1,MAX] should return mix of MAX-1 or MAX
+  uint32_t count = 0;
+  for (int i = 0; i < 20; i++)
+    {
+      intValue = x->GetInteger (UNIFORM_INTEGER_MAX - 1, UNIFORM_INTEGER_MAX);
+      if (intValue == UNIFORM_INTEGER_MAX)
+        {
+          count++;
+        }
+    }
+  NS_TEST_ASSERT_MSG_GT (count, 0, "Uniform RV GetInteger boundary testing");
+  NS_TEST_ASSERT_MSG_LT (count, 20, "Uniform RV GetInteger boundary testing");
+  // multiple [0,UNIFORM_INTEGER_MAX] should return non-zero
+  intValue = x->GetInteger (UNIFORM_INTEGER_MIN, UNIFORM_INTEGER_MAX);
+  uint32_t intValue2 = x->GetInteger (UNIFORM_INTEGER_MIN, UNIFORM_INTEGER_MAX);
+  NS_TEST_ASSERT_MSG_GT (intValue + intValue2, 0, "Uniform RV GetInteger boundary testing");
 
 }
 
diff -Naur ns-3.20/src/csma/bindings/modulegen__gcc_ILP32.py ns-3.21/src/csma/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/csma/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3351,10 +3351,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3365,25 +3365,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3500,20 +3500,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/csma/bindings/modulegen__gcc_LP64.py ns-3.21/src/csma/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/csma/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3351,10 +3351,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3365,25 +3365,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3500,20 +3500,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/csma/examples/wscript ns-3.21/src/csma/examples/wscript
--- ns-3.20/src/csma/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,19 +1,19 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('csma-one-subnet', ['csma', 'internet'])
+    obj = bld.create_ns3_program('csma-one-subnet', ['csma', 'internet', 'applications'])
     obj.source = 'csma-one-subnet.cc'
 
-    obj = bld.create_ns3_program('csma-broadcast', ['csma', 'internet'])
+    obj = bld.create_ns3_program('csma-broadcast', ['csma', 'internet', 'applications'])
     obj.source = 'csma-broadcast.cc'
 
-    obj = bld.create_ns3_program('csma-packet-socket', ['csma', 'internet'])
+    obj = bld.create_ns3_program('csma-packet-socket', ['csma', 'internet', 'applications'])
     obj.source = 'csma-packet-socket.cc'
 
-    obj = bld.create_ns3_program('csma-multicast', ['csma', 'internet'])
+    obj = bld.create_ns3_program('csma-multicast', ['csma', 'internet', 'applications'])
     obj.source = 'csma-multicast.cc'
 
-    obj = bld.create_ns3_program('csma-raw-ip-socket', ['csma', 'internet'])
+    obj = bld.create_ns3_program('csma-raw-ip-socket', ['csma', 'internet', 'applications'])
     obj.source = 'csma-raw-ip-socket.cc'
 
     obj = bld.create_ns3_program('csma-ping', ['csma', 'internet', 'applications'])
diff -Naur ns-3.20/src/csma/wscript ns-3.21/src/csma/wscript
--- ns-3.20/src/csma/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_module('csma', ['network', 'applications'])
+    obj = bld.create_ns3_module('csma', ['network'])
     obj.source = [
         'model/backoff.cc',
         'model/csma-net-device.cc',
diff -Naur ns-3.20/src/csma-layout/bindings/modulegen__gcc_ILP32.py ns-3.21/src/csma-layout/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/csma-layout/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma-layout/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -4812,10 +4812,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4826,25 +4826,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4961,20 +4961,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/csma-layout/bindings/modulegen__gcc_LP64.py ns-3.21/src/csma-layout/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/csma-layout/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma-layout/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -4812,10 +4812,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4826,25 +4826,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4961,20 +4961,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/csma-layout/wscript ns-3.21/src/csma-layout/wscript
--- ns-3.20/src/csma-layout/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/csma-layout/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_module('csma-layout', ['csma', 'network', 'applications', 'netanim', 'point-to-point'])
+    obj = bld.create_ns3_module('csma-layout', ['csma', 'network', 'internet'])
     obj.source = [
         'model/csma-star-helper.cc',
         ]
diff -Naur ns-3.20/src/dsdv/bindings/modulegen__gcc_ILP32.py ns-3.21/src/dsdv/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/dsdv/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsdv/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3862,10 +3862,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3876,25 +3876,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4011,20 +4011,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/dsdv/bindings/modulegen__gcc_LP64.py ns-3.21/src/dsdv/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/dsdv/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsdv/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3862,10 +3862,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3876,25 +3876,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4011,20 +4011,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/dsdv/examples/wscript ns-3.21/src/dsdv/examples/wscript
--- ns-3.20/src/dsdv/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsdv/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,6 +1,6 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-     obj = bld.create_ns3_program('dsdv-manet', ['wifi', 'internet', 'dsdv'])
+     obj = bld.create_ns3_program('dsdv-manet', ['wifi', 'internet', 'dsdv', 'applications'])
      obj.source = 'dsdv-manet.cc'
 
diff -Naur ns-3.20/src/dsdv/model/dsdv-routing-protocol.cc ns-3.21/src/dsdv/model/dsdv-routing-protocol.cc
--- ns-3.20/src/dsdv/model/dsdv-routing-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsdv/model/dsdv-routing-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -956,8 +956,8 @@
   Ptr<Socket> socket = Socket::CreateSocket (GetObject<Node> (),UdpSocketFactory::GetTypeId ());
   NS_ASSERT (socket != 0);
   socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvDsdv,this));
-  socket->BindToNetDevice (l3->GetNetDevice (i));
   socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), DSDV_PORT));
+  socket->BindToNetDevice (l3->GetNetDevice (i));
   socket->SetAllowBroadcast (true);
   socket->SetAttribute ("IpTtl",UintegerValue (1));
   m_socketAddresses.insert (std::make_pair (socket,iface));
@@ -1013,9 +1013,9 @@
       Ptr<Socket> socket = Socket::CreateSocket (GetObject<Node> (),UdpSocketFactory::GetTypeId ());
       NS_ASSERT (socket != 0);
       socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvDsdv,this));
-      socket->BindToNetDevice (l3->GetNetDevice (i));
       // Bind to any IP address so that broadcasts can be received
       socket->Bind (InetSocketAddress (Ipv4Address::GetAny (), DSDV_PORT));
+      socket->BindToNetDevice (l3->GetNetDevice (i));
       socket->SetAllowBroadcast (true);
       m_socketAddresses.insert (std::make_pair (socket,iface));
       Ptr<NetDevice> dev = m_ipv4->GetNetDevice (m_ipv4->GetInterfaceForAddress (iface.GetLocal ()));
diff -Naur ns-3.20/src/dsdv/wscript ns-3.21/src/dsdv/wscript
--- ns-3.20/src/dsdv/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsdv/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('dsdv', ['internet', 'wifi', 'mesh', 'applications'])
+    module = bld.create_ns3_module('dsdv', ['internet'])
     module.includes = '.'
     module.source = [
         'model/dsdv-rtable.cc',
diff -Naur ns-3.20/src/dsr/bindings/modulegen__gcc_ILP32.py ns-3.21/src/dsr/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/dsr/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsr/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -313,7 +313,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable [class]
@@ -3199,15 +3199,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4940,10 +4950,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4954,25 +4964,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5089,20 +5099,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6534,6 +6544,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6586,10 +6601,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6641,6 +6661,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
diff -Naur ns-3.20/src/dsr/bindings/modulegen__gcc_LP64.py ns-3.21/src/dsr/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/dsr/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsr/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -313,7 +313,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable [class]
@@ -3199,15 +3199,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4940,10 +4950,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4954,25 +4964,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5089,20 +5099,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6534,6 +6544,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6586,10 +6601,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6641,6 +6661,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
diff -Naur ns-3.20/src/dsr/wscript ns-3.21/src/dsr/wscript
--- ns-3.20/src/dsr/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/dsr/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('dsr', ['internet', 'wifi', 'mesh', 'applications'])
+    module = bld.create_ns3_module('dsr', ['internet', 'wifi'])
     module.includes = '.'
     module.source = [
         'model/dsr-routing.cc',
diff -Naur ns-3.20/src/emu/bindings/modulegen__gcc_ILP32.py ns-3.21/src/emu/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/emu/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/emu/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3072,10 +3072,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3086,25 +3086,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3221,20 +3221,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/emu/bindings/modulegen__gcc_LP64.py ns-3.21/src/emu/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/emu/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/emu/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3072,10 +3072,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3086,25 +3086,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3221,20 +3221,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/energy/bindings/callbacks_list.py ns-3.21/src/energy/bindings/callbacks_list.py
--- ns-3.20/src/energy/bindings/callbacks_list.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/bindings/callbacks_list.py	2014-09-17 20:03:14.000000000 -0700
@@ -1,5 +1,6 @@
 callback_classes = [
     ['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'double', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet const>', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
 ]
diff -Naur ns-3.20/src/energy/bindings/modulegen__gcc_ILP32.py ns-3.21/src/energy/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/energy/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -56,6 +56,8 @@
     module.add_class('DeviceEnergyModelContainer')
     ## energy-model-helper.h (module 'energy'): ns3::DeviceEnergyModelHelper [class]
     module.add_class('DeviceEnergyModelHelper', allow_subclassing=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper [class]
+    module.add_class('EnergyHarvesterHelper', allow_subclassing=True)
     ## energy-model-helper.h (module 'energy'): ns3::EnergySourceHelper [class]
     module.add_class('EnergySourceHelper', allow_subclassing=True)
     ## event-id.h (module 'core'): ns3::EventId [class]
@@ -140,6 +142,8 @@
     module.add_class('int64x64_t', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
     module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper [class]
+    module.add_class('BasicEnergyHarvesterHelper', parent=root_module['ns3::EnergyHarvesterHelper'])
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper [class]
     module.add_class('BasicEnergySourceHelper', parent=root_module['ns3::EnergySourceHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -150,6 +154,10 @@
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
     module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
+    module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::SequentialRandomVariable [class]
+    module.add_class('SequentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
@@ -182,10 +190,22 @@
     root_module['ns3::TracedValue< ns3::Time >'].implicitly_converts_to(root_module['ns3::Time'])
     ## trailer.h (module 'network'): ns3::Trailer [class]
     module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## random-variable-stream.h (module 'core'): ns3::TriangularRandomVariable [class]
+    module.add_class('TriangularRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::UniformRandomVariable [class]
+    module.add_class('UniformRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::WeibullRandomVariable [class]
+    module.add_class('WeibullRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel [class]
+    module.add_class('WifiTxCurrentModel', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable [class]
+    module.add_class('ZetaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::ZipfRandomVariable [class]
+    module.add_class('ZipfRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
     module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     ## attribute.h (module 'core'): ns3::AttributeChecker [class]
@@ -202,12 +222,22 @@
     module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
     ## callback.h (module 'core'): ns3::CallbackValue [class]
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class]
+    module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::DeterministicRandomVariable [class]
+    module.add_class('DeterministicRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel [class]
     module.add_class('DeviceEnergyModel', parent=root_module['ns3::Object'])
     ## double.h (module 'core'): ns3::DoubleValue [class]
     module.add_class('DoubleValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::EmpiricalRandomVariable [class]
+    module.add_class('EmpiricalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester [class]
+    module.add_class('EnergyHarvester', parent=root_module['ns3::Object'])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer [class]
+    module.add_class('EnergyHarvesterContainer', parent=root_module['ns3::Object'])
     ## energy-source.h (module 'energy'): ns3::EnergySource [class]
     module.add_class('EnergySource', parent=root_module['ns3::Object'])
     ## energy-source-container.h (module 'energy'): ns3::EnergySourceContainer [class]
@@ -216,8 +246,14 @@
     module.add_class('EnumChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## enum.h (module 'core'): ns3::EnumValue [class]
     module.add_class('EnumValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::ErlangRandomVariable [class]
+    module.add_class('ErlangRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    ## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable [class]
+    module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
+    module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -238,6 +274,10 @@
     module.add_class('Ipv6PrefixValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## li-ion-energy-source.h (module 'energy'): ns3::LiIonEnergySource [class]
     module.add_class('LiIonEnergySource', parent=root_module['ns3::EnergySource'])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel [class]
+    module.add_class('LinearWifiTxCurrentModel', parent=root_module['ns3::WifiTxCurrentModel'])
+    ## random-variable-stream.h (module 'core'): ns3::LogNormalRandomVariable [class]
+    module.add_class('LogNormalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## net-device.h (module 'network'): ns3::NetDevice [class]
     module.add_class('NetDevice', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## net-device.h (module 'network'): ns3::NetDevice::PacketType [enumeration]
@@ -246,12 +286,16 @@
     module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
     ## node.h (module 'network'): ns3::Node [class]
     module.add_class('Node', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable [class]
+    module.add_class('NormalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
     module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
     module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## packet.h (module 'network'): ns3::Packet [class]
     module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
+    module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## rv-battery-model.h (module 'energy'): ns3::RvBatteryModel [class]
     module.add_class('RvBatteryModel', parent=root_module['ns3::EnergySource'])
     ## simple-device-energy-model.h (module 'energy'): ns3::SimpleDeviceEnergyModel [class]
@@ -274,6 +318,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester [class]
+    module.add_class('BasicEnergyHarvester', parent=root_module['ns3::EnergyHarvester'])
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource [class]
     module.add_class('BasicEnergySource', parent=root_module['ns3::EnergySource'])
     module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
@@ -360,6 +406,7 @@
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
     register_Ns3DeviceEnergyModelContainer_methods(root_module, root_module['ns3::DeviceEnergyModelContainer'])
     register_Ns3DeviceEnergyModelHelper_methods(root_module, root_module['ns3::DeviceEnergyModelHelper'])
+    register_Ns3EnergyHarvesterHelper_methods(root_module, root_module['ns3::EnergyHarvesterHelper'])
     register_Ns3EnergySourceHelper_methods(root_module, root_module['ns3::EnergySourceHelper'])
     register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
@@ -396,11 +443,14 @@
     register_Ns3WifiTxVector_methods(root_module, root_module['ns3::WifiTxVector'])
     register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
     register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
+    register_Ns3BasicEnergyHarvesterHelper_methods(root_module, root_module['ns3::BasicEnergyHarvesterHelper'])
     register_Ns3BasicEnergySourceHelper_methods(root_module, root_module['ns3::BasicEnergySourceHelper'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
+    register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
+    register_Ns3SequentialRandomVariable_methods(root_module, root_module['ns3::SequentialRandomVariable'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
     register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
@@ -414,7 +464,13 @@
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3TracedValue__Ns3Time_methods(root_module, root_module['ns3::TracedValue< ns3::Time >'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3TriangularRandomVariable_methods(root_module, root_module['ns3::TriangularRandomVariable'])
+    register_Ns3UniformRandomVariable_methods(root_module, root_module['ns3::UniformRandomVariable'])
+    register_Ns3WeibullRandomVariable_methods(root_module, root_module['ns3::WeibullRandomVariable'])
     register_Ns3WifiPhy_methods(root_module, root_module['ns3::WifiPhy'])
+    register_Ns3WifiTxCurrentModel_methods(root_module, root_module['ns3::WifiTxCurrentModel'])
+    register_Ns3ZetaRandomVariable_methods(root_module, root_module['ns3::ZetaRandomVariable'])
+    register_Ns3ZipfRandomVariable_methods(root_module, root_module['ns3::ZipfRandomVariable'])
     register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
     register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
     register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
@@ -423,14 +479,22 @@
     register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
+    register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable'])
+    register_Ns3DeterministicRandomVariable_methods(root_module, root_module['ns3::DeterministicRandomVariable'])
     register_Ns3DeviceEnergyModel_methods(root_module, root_module['ns3::DeviceEnergyModel'])
     register_Ns3DoubleValue_methods(root_module, root_module['ns3::DoubleValue'])
+    register_Ns3EmpiricalRandomVariable_methods(root_module, root_module['ns3::EmpiricalRandomVariable'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EnergyHarvester_methods(root_module, root_module['ns3::EnergyHarvester'])
+    register_Ns3EnergyHarvesterContainer_methods(root_module, root_module['ns3::EnergyHarvesterContainer'])
     register_Ns3EnergySource_methods(root_module, root_module['ns3::EnergySource'])
     register_Ns3EnergySourceContainer_methods(root_module, root_module['ns3::EnergySourceContainer'])
     register_Ns3EnumChecker_methods(root_module, root_module['ns3::EnumChecker'])
     register_Ns3EnumValue_methods(root_module, root_module['ns3::EnumValue'])
+    register_Ns3ErlangRandomVariable_methods(root_module, root_module['ns3::ErlangRandomVariable'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+    register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
+    register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -441,12 +505,16 @@
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LiIonEnergySource_methods(root_module, root_module['ns3::LiIonEnergySource'])
+    register_Ns3LinearWifiTxCurrentModel_methods(root_module, root_module['ns3::LinearWifiTxCurrentModel'])
+    register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
     register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
     register_Ns3Node_methods(root_module, root_module['ns3::Node'])
+    register_Ns3NormalRandomVariable_methods(root_module, root_module['ns3::NormalRandomVariable'])
     register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
     register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
+    register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3RvBatteryModel_methods(root_module, root_module['ns3::RvBatteryModel'])
     register_Ns3SimpleDeviceEnergyModel_methods(root_module, root_module['ns3::SimpleDeviceEnergyModel'])
     register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
@@ -458,6 +526,7 @@
     register_Ns3WifiRadioEnergyModel_methods(root_module, root_module['ns3::WifiRadioEnergyModel'])
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
     register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
+    register_Ns3BasicEnergyHarvester_methods(root_module, root_module['ns3::BasicEnergyHarvester'])
     register_Ns3BasicEnergySource_methods(root_module, root_module['ns3::BasicEnergySource'])
     register_Ns3HashImplementation_methods(root_module, root_module['ns3::Hash::Implementation'])
     register_Ns3HashFunctionFnv1a_methods(root_module, root_module['ns3::Hash::Function::Fnv1a'])
@@ -1028,6 +1097,38 @@
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvesterHelper_methods(root_module, cls):
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper::EnergyHarvesterHelper() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper::EnergyHarvesterHelper(ns3::EnergyHarvesterHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterHelper const &', 'arg0')])
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(ns3::EnergySourceContainer sourceContainer) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('ns3::EnergySourceContainer', 'sourceContainer')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(std::string sourceName) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('std::string', 'sourceName')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): void ns3::EnergyHarvesterHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::EnergyHarvesterHelper::DoInstall(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('DoInstall', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySourceHelper_methods(root_module, cls):
     ## energy-model-helper.h (module 'energy'): ns3::EnergySourceHelper::EnergySourceHelper() [constructor]
     cls.add_constructor([])
@@ -2422,15 +2523,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -2448,6 +2559,14 @@
     cls.add_method('SetDepletionCallback', 
                    'void', 
                    [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model-helper.h (module 'energy'): void ns3::WifiRadioEnergyModelHelper::SetRechargedCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetRechargedCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model-helper.h (module 'energy'): void ns3::WifiRadioEnergyModelHelper::SetTxCurrentModel(std::string name, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetTxCurrentModel', 
+                   'void', 
+                   [param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
     ## wifi-radio-energy-model-helper.h (module 'energy'): ns3::Ptr<ns3::DeviceEnergyModel> ns3::WifiRadioEnergyModelHelper::DoInstall(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::EnergySource> source) const [member function]
     cls.add_method('DoInstall', 
                    'ns3::Ptr< ns3::DeviceEnergyModel >', 
@@ -2480,20 +2599,34 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_virtual=True)
-    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::SetChangeStateCallback(ns3::Callback<void, int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetChangeStateCallback', 
                    'void', 
                    [param('ns3::Callback< void, int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::SetUpdateTxCurrentCallback(ns3::Callback<void, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetUpdateTxCurrentCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
     return
 
 def register_Ns3WifiTxVector_methods(root_module, cls):
@@ -2643,6 +2776,23 @@
     cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
+def register_Ns3BasicEnergyHarvesterHelper_methods(root_module, cls):
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper::BasicEnergyHarvesterHelper(ns3::BasicEnergyHarvesterHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BasicEnergyHarvesterHelper const &', 'arg0')])
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper::BasicEnergyHarvesterHelper() [constructor]
+    cls.add_constructor([])
+    ## basic-energy-harvester-helper.h (module 'energy'): void ns3::BasicEnergyHarvesterHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')], 
+                   is_virtual=True)
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::BasicEnergyHarvesterHelper::DoInstall(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('DoInstall', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3BasicEnergySourceHelper_methods(root_module, cls):
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper::BasicEnergySourceHelper(ns3::BasicEnergySourceHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::BasicEnergySourceHelper const &', 'arg0')])
@@ -2781,6 +2931,89 @@
                    [])
     return
 
+def register_Ns3RandomVariableStream_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::RandomVariableStream::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream::RandomVariableStream() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::RandomVariableStream::SetStream(int64_t stream) [member function]
+    cls.add_method('SetStream', 
+                   'void', 
+                   [param('int64_t', 'stream')])
+    ## random-variable-stream.h (module 'core'): int64_t ns3::RandomVariableStream::GetStream() const [member function]
+    cls.add_method('GetStream', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): void ns3::RandomVariableStream::SetAntithetic(bool isAntithetic) [member function]
+    cls.add_method('SetAntithetic', 
+                   'void', 
+                   [param('bool', 'isAntithetic')])
+    ## random-variable-stream.h (module 'core'): bool ns3::RandomVariableStream::IsAntithetic() const [member function]
+    cls.add_method('IsAntithetic', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::RandomVariableStream::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::RandomVariableStream::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## random-variable-stream.h (module 'core'): ns3::RngStream * ns3::RandomVariableStream::Peek() const [member function]
+    cls.add_method('Peek', 
+                   'ns3::RngStream *', 
+                   [], 
+                   is_const=True, visibility='protected')
+    return
+
+def register_Ns3SequentialRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::SequentialRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::SequentialRandomVariable::SequentialRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): ns3::Ptr<ns3::RandomVariableStream> ns3::SequentialRandomVariable::GetIncrement() const [member function]
+    cls.add_method('GetIncrement', 
+                   'ns3::Ptr< ns3::RandomVariableStream >', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::SequentialRandomVariable::GetConsecutive() const [member function]
+    cls.add_method('GetConsecutive', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::SequentialRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -2921,10 +3154,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2935,25 +3168,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3070,20 +3303,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -3181,6 +3414,130 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3TriangularRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::TriangularRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::TriangularRandomVariable::TriangularRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetValue(double mean, double min, double max) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'min'), param('double', 'max')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::TriangularRandomVariable::GetInteger(uint32_t mean, uint32_t min, uint32_t max) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'min'), param('uint32_t', 'max')])
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::TriangularRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3UniformRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::UniformRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::UniformRandomVariable::UniformRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetValue(double min, double max) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'min'), param('double', 'max')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::UniformRandomVariable::GetInteger(uint32_t min, uint32_t max) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'min'), param('uint32_t', 'max')])
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::UniformRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3WeibullRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::WeibullRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::WeibullRandomVariable::WeibullRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetScale() const [member function]
+    cls.add_method('GetScale', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetShape() const [member function]
+    cls.add_method('GetShape', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetValue(double scale, double shape, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'scale'), param('double', 'shape'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::WeibullRandomVariable::GetInteger(uint32_t scale, uint32_t shape, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'scale'), param('uint32_t', 'shape'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::WeibullRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3WifiPhy_methods(root_module, cls):
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::WifiPhy(ns3::WifiPhy const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::WifiPhy const &', 'arg0')])
@@ -3726,6 +4083,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -3778,10 +4140,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<const ns3::Packet> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<const ns3::Packet> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -3833,6 +4200,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -3845,6 +4217,99 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3WifiTxCurrentModel_methods(root_module, cls):
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel::WifiTxCurrentModel(ns3::WifiTxCurrentModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WifiTxCurrentModel const &', 'arg0')])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel::WifiTxCurrentModel() [constructor]
+    cls.add_constructor([])
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::WifiTxCurrentModel::CalcTxCurrent(double txPowerDbm) const [member function]
+    cls.add_method('CalcTxCurrent', 
+                   'double', 
+                   [param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## wifi-tx-current-model.h (module 'energy'): static double ns3::WifiTxCurrentModel::DbmToW(double dbm) [member function]
+    cls.add_method('DbmToW', 
+                   'double', 
+                   [param('double', 'dbm')], 
+                   is_static=True)
+    ## wifi-tx-current-model.h (module 'energy'): static ns3::TypeId ns3::WifiTxCurrentModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3ZetaRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ZetaRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable::ZetaRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetValue(double alpha) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'alpha')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZetaRandomVariable::GetInteger(uint32_t alpha) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'alpha')])
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZetaRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3ZipfRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ZipfRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ZipfRandomVariable::ZipfRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetValue(uint32_t n, double alpha) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('uint32_t', 'n'), param('double', 'alpha')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetInteger(uint32_t n, uint32_t alpha) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'n'), param('uint32_t', 'alpha')])
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3AttributeAccessor_methods(root_module, cls):
     ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
@@ -4024,22 +4489,79 @@
                    [param('ns3::CallbackBase', 'base')])
     return
 
-def register_Ns3DeviceEnergyModel_methods(root_module, cls):
-    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel(ns3::DeviceEnergyModel const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DeviceEnergyModel const &', 'arg0')])
-    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel() [constructor]
+def register_Ns3ConstantRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable::ConstantRandomVariable() [constructor]
     cls.add_constructor([])
-    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::ChangeState(int newState) [member function]
-    cls.add_method('ChangeState', 
-                   'void', 
-                   [param('int', 'newState')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetCurrentA() const [member function]
-    cls.add_method('GetCurrentA', 
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetConstant() const [member function]
+    cls.add_method('GetConstant', 
                    'double', 
                    [], 
                    is_const=True)
-    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetTotalEnergyConsumption() const [member function]
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetValue(double constant) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'constant')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ConstantRandomVariable::GetInteger(uint32_t constant) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'constant')])
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ConstantRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3DeterministicRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::DeterministicRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::DeterministicRandomVariable::DeterministicRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::DeterministicRandomVariable::SetValueArray(double * values, uint64_t length) [member function]
+    cls.add_method('SetValueArray', 
+                   'void', 
+                   [param('double *', 'values'), param('uint64_t', 'length')])
+    ## random-variable-stream.h (module 'core'): double ns3::DeterministicRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::DeterministicRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3DeviceEnergyModel_methods(root_module, cls):
+    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel(ns3::DeviceEnergyModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::DeviceEnergyModel const &', 'arg0')])
+    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel() [constructor]
+    cls.add_constructor([])
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::ChangeState(int newState) [member function]
+    cls.add_method('ChangeState', 
+                   'void', 
+                   [param('int', 'newState')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetCurrentA() const [member function]
+    cls.add_method('GetCurrentA', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetTotalEnergyConsumption() const [member function]
     cls.add_method('GetTotalEnergyConsumption', 
                    'double', 
                    [], 
@@ -4054,6 +4576,11 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -4099,6 +4626,40 @@
                    [param('double const &', 'value')])
     return
 
+def register_Ns3EmpiricalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): ns3::EmpiricalRandomVariable::EmpiricalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::EmpiricalRandomVariable::CDF(double v, double c) [member function]
+    cls.add_method('CDF', 
+                   'void', 
+                   [param('double', 'v'), param('double', 'c')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::EmpiricalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::EmpiricalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): double ns3::EmpiricalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): double ns3::EmpiricalRandomVariable::Interpolate(double arg0, double arg1, double arg2, double arg3, double arg4) [member function]
+    cls.add_method('Interpolate', 
+                   'double', 
+                   [param('double', 'arg0'), param('double', 'arg1'), param('double', 'arg2'), param('double', 'arg3'), param('double', 'arg4')], 
+                   visibility='private', is_virtual=True)
+    ## random-variable-stream.h (module 'core'): void ns3::EmpiricalRandomVariable::Validate() [member function]
+    cls.add_method('Validate', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EmptyAttributeValue_methods(root_module, cls):
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
@@ -4121,6 +4682,115 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvester_methods(root_module, cls):
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester(ns3::EnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvester const &', 'arg0')])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::EnergySource> ns3::EnergyHarvester::GetEnergySource() const [member function]
+    cls.add_method('GetEnergySource', 
+                   'ns3::Ptr< ns3::EnergySource >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::Node> ns3::EnergyHarvester::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::GetPower() const [member function]
+    cls.add_method('GetPower', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
+    cls.add_method('SetEnergySource', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3EnergyHarvesterContainer_methods(root_module, cls):
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::EnergyHarvesterContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterContainer const &', 'arg0')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::Ptr<ns3::EnergyHarvester> harvester) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::EnergyHarvester >', 'harvester')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(std::string harvesterName) [constructor]
+    cls.add_constructor([param('std::string', 'harvesterName')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::EnergyHarvesterContainer const & a, ns3::EnergyHarvesterContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterContainer const &', 'a'), param('ns3::EnergyHarvesterContainer const &', 'b')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(ns3::EnergyHarvesterContainer container) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::EnergyHarvesterContainer', 'container')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(ns3::Ptr<ns3::EnergyHarvester> harvester) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'harvester')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(std::string harvesterName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'harvesterName')])
+    ## energy-harvester-container.h (module 'energy'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::EnergyHarvester>*,std::vector<ns3::Ptr<ns3::EnergyHarvester>, std::allocator<ns3::Ptr<ns3::EnergyHarvester> > > > ns3::EnergyHarvesterContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::EnergyHarvester > const, std::vector< ns3::Ptr< ns3::EnergyHarvester > > >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## energy-harvester-container.h (module 'energy'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::EnergyHarvester>*,std::vector<ns3::Ptr<ns3::EnergyHarvester>, std::allocator<ns3::Ptr<ns3::EnergyHarvester> > > > ns3::EnergyHarvesterContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::EnergyHarvester > const, std::vector< ns3::Ptr< ns3::EnergyHarvester > > >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::EnergyHarvesterContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): uint32_t ns3::EnergyHarvesterContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvesterContainer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySource_methods(root_module, cls):
     ## energy-source.h (module 'energy'): ns3::EnergySource::EnergySource(ns3::EnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EnergySource const &', 'arg0')])
@@ -4130,6 +4800,10 @@
     cls.add_method('AppendDeviceEnergyModel', 
                    'void', 
                    [param('ns3::Ptr< ns3::DeviceEnergyModel >', 'deviceEnergyModelPtr')])
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::ConnectEnergyHarvester(ns3::Ptr<ns3::EnergyHarvester> energyHarvesterPtr) [member function]
+    cls.add_method('ConnectEnergyHarvester', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'energyHarvesterPtr')])
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DisposeDeviceModels() [member function]
     cls.add_method('DisposeDeviceModels', 
                    'void', 
@@ -4200,6 +4874,11 @@
                    'void', 
                    [], 
                    visibility='protected')
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::NotifyEnergyRecharged() [member function]
+    cls.add_method('NotifyEnergyRecharged', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -4345,6 +5024,44 @@
                    [param('int', 'v')])
     return
 
+def register_Ns3ErlangRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ErlangRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ErlangRandomVariable::ErlangRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetK() const [member function]
+    cls.add_method('GetK', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetLambda() const [member function]
+    cls.add_method('GetLambda', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetValue(uint32_t k, double lambda) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('uint32_t', 'k'), param('double', 'lambda')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetInteger(uint32_t k, uint32_t lambda) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'k'), param('uint32_t', 'lambda')])
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3EventImpl_methods(root_module, cls):
     ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
@@ -4369,6 +5086,82 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
+def register_Ns3ExponentialRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ExponentialRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable::ExponentialRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetValue(double mean, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ExponentialRandomVariable::GetInteger(uint32_t mean, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ExponentialRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3GammaRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::GammaRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable::GammaRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetBeta() const [member function]
+    cls.add_method('GetBeta', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetValue(double alpha, double beta) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'alpha'), param('double', 'beta')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::GammaRandomVariable::GetInteger(uint32_t alpha, uint32_t beta) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'alpha'), param('uint32_t', 'beta')])
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::GammaRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3IntegerValue_methods(root_module, cls):
     ## integer.h (module 'core'): ns3::IntegerValue::IntegerValue() [constructor]
     cls.add_constructor([])
@@ -4636,6 +5429,88 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3LinearWifiTxCurrentModel_methods(root_module, cls):
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel::LinearWifiTxCurrentModel(ns3::LinearWifiTxCurrentModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LinearWifiTxCurrentModel const &', 'arg0')])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel::LinearWifiTxCurrentModel() [constructor]
+    cls.add_constructor([])
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::CalcTxCurrent(double txPowerDbm) const [member function]
+    cls.add_method('CalcTxCurrent', 
+                   'double', 
+                   [param('double', 'txPowerDbm')], 
+                   is_const=True, is_virtual=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetEta() const [member function]
+    cls.add_method('GetEta', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetIdleCurrent() const [member function]
+    cls.add_method('GetIdleCurrent', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): static ns3::TypeId ns3::LinearWifiTxCurrentModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetVoltage() const [member function]
+    cls.add_method('GetVoltage', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetEta(double eta) [member function]
+    cls.add_method('SetEta', 
+                   'void', 
+                   [param('double', 'eta')])
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetIdleCurrent(double idleCurrent) [member function]
+    cls.add_method('SetIdleCurrent', 
+                   'void', 
+                   [param('double', 'idleCurrent')])
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetVoltage(double voltage) [member function]
+    cls.add_method('SetVoltage', 
+                   'void', 
+                   [param('double', 'voltage')])
+    return
+
+def register_Ns3LogNormalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::LogNormalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::LogNormalRandomVariable::LogNormalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetMu() const [member function]
+    cls.add_method('GetMu', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetSigma() const [member function]
+    cls.add_method('GetSigma', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetValue(double mu, double sigma) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mu'), param('double', 'sigma')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::LogNormalRandomVariable::GetInteger(uint32_t mu, uint32_t sigma) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mu'), param('uint32_t', 'sigma')])
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::LogNormalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3NetDevice_methods(root_module, cls):
     ## net-device.h (module 'network'): ns3::NetDevice::NetDevice() [constructor]
     cls.add_constructor([])
@@ -4895,6 +5770,51 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3NormalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable::INFINITE_VALUE [variable]
+    cls.add_static_attribute('INFINITE_VALUE', 'double const', is_const=True)
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::NormalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable::NormalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetVariance() const [member function]
+    cls.add_method('GetVariance', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetValue(double mean, double variance, double bound=ns3::NormalRandomVariable::INFINITE_VALUE) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'variance'), param('double', 'bound', default_value='ns3::NormalRandomVariable::INFINITE_VALUE')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::NormalRandomVariable::GetInteger(uint32_t mean, uint32_t variance, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'variance'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::NormalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
     ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
     cls.add_constructor([])
@@ -5120,6 +6040,49 @@
                    [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
+def register_Ns3ParetoRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable::ParetoRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetShape() const [member function]
+    cls.add_method('GetShape', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetValue(double mean, double shape, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'shape'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ParetoRandomVariable::GetInteger(uint32_t mean, uint32_t shape, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'shape'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ParetoRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3RvBatteryModel_methods(root_module, cls):
     ## rv-battery-model.h (module 'energy'): ns3::RvBatteryModel::RvBatteryModel(ns3::RvBatteryModel const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RvBatteryModel const &', 'arg0')])
@@ -5260,6 +6223,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## simple-device-energy-model.h (module 'energy'): void ns3::SimpleDeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## simple-device-energy-model.h (module 'energy'): void ns3::SimpleDeviceEnergyModel::SetCurrentA(double current) [member function]
     cls.add_method('SetCurrentA', 
                    'void', 
@@ -5466,6 +6434,11 @@
                    'double', 
                    [], 
                    is_const=True)
+    ## wifi-radio-energy-model.h (module 'energy'): double ns3::WifiRadioEnergyModel::GetSleepCurrentA() const [member function]
+    cls.add_method('GetSleepCurrentA', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-radio-energy-model.h (module 'energy'): double ns3::WifiRadioEnergyModel::GetSwitchingCurrentA() const [member function]
     cls.add_method('GetSwitchingCurrentA', 
                    'double', 
@@ -5491,6 +6464,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetCcaBusyCurrentA(double ccaBusyCurrentA) [member function]
     cls.add_method('SetCcaBusyCurrentA', 
                    'void', 
@@ -5499,6 +6477,10 @@
     cls.add_method('SetEnergyDepletionCallback', 
                    'void', 
                    [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetEnergyRechargedCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetEnergyRechargedCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -5512,6 +6494,10 @@
     cls.add_method('SetRxCurrentA', 
                    'void', 
                    [param('double', 'rxCurrentA')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetSleepCurrentA(double sleepCurrentA) [member function]
+    cls.add_method('SetSleepCurrentA', 
+                   'void', 
+                   [param('double', 'sleepCurrentA')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetSwitchingCurrentA(double switchingCurrentA) [member function]
     cls.add_method('SetSwitchingCurrentA', 
                    'void', 
@@ -5520,6 +6506,14 @@
     cls.add_method('SetTxCurrentA', 
                    'void', 
                    [param('double', 'txCurrentA')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetTxCurrentFromModel(double txPowerDbm) [member function]
+    cls.add_method('SetTxCurrentFromModel', 
+                   'void', 
+                   [param('double', 'txPowerDbm')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetTxCurrentModel(ns3::Ptr<ns3::WifiTxCurrentModel> model) [member function]
+    cls.add_method('SetTxCurrentModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiTxCurrentModel >', 'model')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -5572,6 +6566,48 @@
                    [param('ns3::Address const &', 'value')])
     return
 
+def register_Ns3BasicEnergyHarvester_methods(root_module, cls):
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester(ns3::BasicEnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BasicEnergyHarvester const &', 'arg0')])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester(ns3::Time updateInterval) [constructor]
+    cls.add_constructor([param('ns3::Time', 'updateInterval')])
+    ## basic-energy-harvester.h (module 'energy'): int64_t ns3::BasicEnergyHarvester::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## basic-energy-harvester.h (module 'energy'): ns3::Time ns3::BasicEnergyHarvester::GetHarvestedPowerUpdateInterval() const [member function]
+    cls.add_method('GetHarvestedPowerUpdateInterval', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## basic-energy-harvester.h (module 'energy'): static ns3::TypeId ns3::BasicEnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::SetHarvestedPowerUpdateInterval(ns3::Time updateInterval) [member function]
+    cls.add_method('SetHarvestedPowerUpdateInterval', 
+                   'void', 
+                   [param('ns3::Time', 'updateInterval')])
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## basic-energy-harvester.h (module 'energy'): double ns3::BasicEnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3BasicEnergySource_methods(root_module, cls):
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource::BasicEnergySource(ns3::BasicEnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::BasicEnergySource const &', 'arg0')])
diff -Naur ns-3.20/src/energy/bindings/modulegen__gcc_LP64.py ns-3.21/src/energy/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/energy/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -56,6 +56,8 @@
     module.add_class('DeviceEnergyModelContainer')
     ## energy-model-helper.h (module 'energy'): ns3::DeviceEnergyModelHelper [class]
     module.add_class('DeviceEnergyModelHelper', allow_subclassing=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper [class]
+    module.add_class('EnergyHarvesterHelper', allow_subclassing=True)
     ## energy-model-helper.h (module 'energy'): ns3::EnergySourceHelper [class]
     module.add_class('EnergySourceHelper', allow_subclassing=True)
     ## event-id.h (module 'core'): ns3::EventId [class]
@@ -140,6 +142,8 @@
     module.add_class('int64x64_t', import_from_module='ns.core')
     ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
     module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper [class]
+    module.add_class('BasicEnergyHarvesterHelper', parent=root_module['ns3::EnergyHarvesterHelper'])
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper [class]
     module.add_class('BasicEnergySourceHelper', parent=root_module['ns3::EnergySourceHelper'])
     ## chunk.h (module 'network'): ns3::Chunk [class]
@@ -150,6 +154,10 @@
     module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
     module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
+    module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::SequentialRandomVariable [class]
+    module.add_class('SequentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
@@ -182,10 +190,22 @@
     root_module['ns3::TracedValue< ns3::Time >'].implicitly_converts_to(root_module['ns3::Time'])
     ## trailer.h (module 'network'): ns3::Trailer [class]
     module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
+    ## random-variable-stream.h (module 'core'): ns3::TriangularRandomVariable [class]
+    module.add_class('TriangularRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::UniformRandomVariable [class]
+    module.add_class('UniformRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::WeibullRandomVariable [class]
+    module.add_class('WeibullRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel [class]
+    module.add_class('WifiTxCurrentModel', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable [class]
+    module.add_class('ZetaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::ZipfRandomVariable [class]
+    module.add_class('ZipfRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
     module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     ## attribute.h (module 'core'): ns3::AttributeChecker [class]
@@ -202,12 +222,22 @@
     module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
     ## callback.h (module 'core'): ns3::CallbackValue [class]
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class]
+    module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::DeterministicRandomVariable [class]
+    module.add_class('DeterministicRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel [class]
     module.add_class('DeviceEnergyModel', parent=root_module['ns3::Object'])
     ## double.h (module 'core'): ns3::DoubleValue [class]
     module.add_class('DoubleValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::EmpiricalRandomVariable [class]
+    module.add_class('EmpiricalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester [class]
+    module.add_class('EnergyHarvester', parent=root_module['ns3::Object'])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer [class]
+    module.add_class('EnergyHarvesterContainer', parent=root_module['ns3::Object'])
     ## energy-source.h (module 'energy'): ns3::EnergySource [class]
     module.add_class('EnergySource', parent=root_module['ns3::Object'])
     ## energy-source-container.h (module 'energy'): ns3::EnergySourceContainer [class]
@@ -216,8 +246,14 @@
     module.add_class('EnumChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## enum.h (module 'core'): ns3::EnumValue [class]
     module.add_class('EnumValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## random-variable-stream.h (module 'core'): ns3::ErlangRandomVariable [class]
+    module.add_class('ErlangRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## event-impl.h (module 'core'): ns3::EventImpl [class]
     module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
+    ## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable [class]
+    module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+    ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
+    module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -238,6 +274,10 @@
     module.add_class('Ipv6PrefixValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
     ## li-ion-energy-source.h (module 'energy'): ns3::LiIonEnergySource [class]
     module.add_class('LiIonEnergySource', parent=root_module['ns3::EnergySource'])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel [class]
+    module.add_class('LinearWifiTxCurrentModel', parent=root_module['ns3::WifiTxCurrentModel'])
+    ## random-variable-stream.h (module 'core'): ns3::LogNormalRandomVariable [class]
+    module.add_class('LogNormalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## net-device.h (module 'network'): ns3::NetDevice [class]
     module.add_class('NetDevice', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## net-device.h (module 'network'): ns3::NetDevice::PacketType [enumeration]
@@ -246,12 +286,16 @@
     module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
     ## node.h (module 'network'): ns3::Node [class]
     module.add_class('Node', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable [class]
+    module.add_class('NormalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
     module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
     module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## packet.h (module 'network'): ns3::Packet [class]
     module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
+    ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
+    module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## rv-battery-model.h (module 'energy'): ns3::RvBatteryModel [class]
     module.add_class('RvBatteryModel', parent=root_module['ns3::EnergySource'])
     ## simple-device-energy-model.h (module 'energy'): ns3::SimpleDeviceEnergyModel [class]
@@ -274,6 +318,8 @@
     module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
     ## address.h (module 'network'): ns3::AddressValue [class]
     module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester [class]
+    module.add_class('BasicEnergyHarvester', parent=root_module['ns3::EnergyHarvester'])
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource [class]
     module.add_class('BasicEnergySource', parent=root_module['ns3::EnergySource'])
     module.add_container('ns3::WifiModeList', 'ns3::WifiMode', container_type=u'vector')
@@ -360,6 +406,7 @@
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
     register_Ns3DeviceEnergyModelContainer_methods(root_module, root_module['ns3::DeviceEnergyModelContainer'])
     register_Ns3DeviceEnergyModelHelper_methods(root_module, root_module['ns3::DeviceEnergyModelHelper'])
+    register_Ns3EnergyHarvesterHelper_methods(root_module, root_module['ns3::EnergyHarvesterHelper'])
     register_Ns3EnergySourceHelper_methods(root_module, root_module['ns3::EnergySourceHelper'])
     register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
@@ -396,11 +443,14 @@
     register_Ns3WifiTxVector_methods(root_module, root_module['ns3::WifiTxVector'])
     register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
     register_Ns3Int64x64_t_methods(root_module, root_module['ns3::int64x64_t'])
+    register_Ns3BasicEnergyHarvesterHelper_methods(root_module, root_module['ns3::BasicEnergyHarvesterHelper'])
     register_Ns3BasicEnergySourceHelper_methods(root_module, root_module['ns3::BasicEnergySourceHelper'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
+    register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
+    register_Ns3SequentialRandomVariable_methods(root_module, root_module['ns3::SequentialRandomVariable'])
     register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
     register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
     register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
@@ -414,7 +464,13 @@
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3TracedValue__Ns3Time_methods(root_module, root_module['ns3::TracedValue< ns3::Time >'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3TriangularRandomVariable_methods(root_module, root_module['ns3::TriangularRandomVariable'])
+    register_Ns3UniformRandomVariable_methods(root_module, root_module['ns3::UniformRandomVariable'])
+    register_Ns3WeibullRandomVariable_methods(root_module, root_module['ns3::WeibullRandomVariable'])
     register_Ns3WifiPhy_methods(root_module, root_module['ns3::WifiPhy'])
+    register_Ns3WifiTxCurrentModel_methods(root_module, root_module['ns3::WifiTxCurrentModel'])
+    register_Ns3ZetaRandomVariable_methods(root_module, root_module['ns3::ZetaRandomVariable'])
+    register_Ns3ZipfRandomVariable_methods(root_module, root_module['ns3::ZipfRandomVariable'])
     register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
     register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
     register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
@@ -423,14 +479,22 @@
     register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
+    register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable'])
+    register_Ns3DeterministicRandomVariable_methods(root_module, root_module['ns3::DeterministicRandomVariable'])
     register_Ns3DeviceEnergyModel_methods(root_module, root_module['ns3::DeviceEnergyModel'])
     register_Ns3DoubleValue_methods(root_module, root_module['ns3::DoubleValue'])
+    register_Ns3EmpiricalRandomVariable_methods(root_module, root_module['ns3::EmpiricalRandomVariable'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EnergyHarvester_methods(root_module, root_module['ns3::EnergyHarvester'])
+    register_Ns3EnergyHarvesterContainer_methods(root_module, root_module['ns3::EnergyHarvesterContainer'])
     register_Ns3EnergySource_methods(root_module, root_module['ns3::EnergySource'])
     register_Ns3EnergySourceContainer_methods(root_module, root_module['ns3::EnergySourceContainer'])
     register_Ns3EnumChecker_methods(root_module, root_module['ns3::EnumChecker'])
     register_Ns3EnumValue_methods(root_module, root_module['ns3::EnumValue'])
+    register_Ns3ErlangRandomVariable_methods(root_module, root_module['ns3::ErlangRandomVariable'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
+    register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
+    register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
     register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
     register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -441,12 +505,16 @@
     register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3LiIonEnergySource_methods(root_module, root_module['ns3::LiIonEnergySource'])
+    register_Ns3LinearWifiTxCurrentModel_methods(root_module, root_module['ns3::LinearWifiTxCurrentModel'])
+    register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
     register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
     register_Ns3Node_methods(root_module, root_module['ns3::Node'])
+    register_Ns3NormalRandomVariable_methods(root_module, root_module['ns3::NormalRandomVariable'])
     register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
     register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
+    register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3RvBatteryModel_methods(root_module, root_module['ns3::RvBatteryModel'])
     register_Ns3SimpleDeviceEnergyModel_methods(root_module, root_module['ns3::SimpleDeviceEnergyModel'])
     register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
@@ -458,6 +526,7 @@
     register_Ns3WifiRadioEnergyModel_methods(root_module, root_module['ns3::WifiRadioEnergyModel'])
     register_Ns3AddressChecker_methods(root_module, root_module['ns3::AddressChecker'])
     register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
+    register_Ns3BasicEnergyHarvester_methods(root_module, root_module['ns3::BasicEnergyHarvester'])
     register_Ns3BasicEnergySource_methods(root_module, root_module['ns3::BasicEnergySource'])
     register_Ns3HashImplementation_methods(root_module, root_module['ns3::Hash::Implementation'])
     register_Ns3HashFunctionFnv1a_methods(root_module, root_module['ns3::Hash::Function::Fnv1a'])
@@ -1028,6 +1097,38 @@
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvesterHelper_methods(root_module, cls):
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper::EnergyHarvesterHelper() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterHelper::EnergyHarvesterHelper(ns3::EnergyHarvesterHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterHelper const &', 'arg0')])
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(ns3::EnergySourceContainer sourceContainer) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('ns3::EnergySourceContainer', 'sourceContainer')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::EnergyHarvesterContainer ns3::EnergyHarvesterHelper::Install(std::string sourceName) const [member function]
+    cls.add_method('Install', 
+                   'ns3::EnergyHarvesterContainer', 
+                   [param('std::string', 'sourceName')], 
+                   is_const=True)
+    ## energy-harvester-helper.h (module 'energy'): void ns3::EnergyHarvesterHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## energy-harvester-helper.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::EnergyHarvesterHelper::DoInstall(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('DoInstall', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySourceHelper_methods(root_module, cls):
     ## energy-model-helper.h (module 'energy'): ns3::EnergySourceHelper::EnergySourceHelper() [constructor]
     cls.add_constructor([])
@@ -2422,15 +2523,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -2448,6 +2559,14 @@
     cls.add_method('SetDepletionCallback', 
                    'void', 
                    [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model-helper.h (module 'energy'): void ns3::WifiRadioEnergyModelHelper::SetRechargedCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetRechargedCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model-helper.h (module 'energy'): void ns3::WifiRadioEnergyModelHelper::SetTxCurrentModel(std::string name, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetTxCurrentModel', 
+                   'void', 
+                   [param('std::string', 'name'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue const &', 'v0', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue const &', 'v5', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue const &', 'v6', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue const &', 'v7', default_value='ns3::EmptyAttributeValue()')])
     ## wifi-radio-energy-model-helper.h (module 'energy'): ns3::Ptr<ns3::DeviceEnergyModel> ns3::WifiRadioEnergyModelHelper::DoInstall(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::EnergySource> source) const [member function]
     cls.add_method('DoInstall', 
                    'ns3::Ptr< ns3::DeviceEnergyModel >', 
@@ -2480,20 +2599,34 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_virtual=True)
-    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::SetChangeStateCallback(ns3::Callback<void, int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetChangeStateCallback', 
                    'void', 
                    [param('ns3::Callback< void, int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModelPhyListener::SetUpdateTxCurrentCallback(ns3::Callback<void, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetUpdateTxCurrentCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
     return
 
 def register_Ns3WifiTxVector_methods(root_module, cls):
@@ -2643,6 +2776,23 @@
     cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
     return
 
+def register_Ns3BasicEnergyHarvesterHelper_methods(root_module, cls):
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper::BasicEnergyHarvesterHelper(ns3::BasicEnergyHarvesterHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BasicEnergyHarvesterHelper const &', 'arg0')])
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::BasicEnergyHarvesterHelper::BasicEnergyHarvesterHelper() [constructor]
+    cls.add_constructor([])
+    ## basic-energy-harvester-helper.h (module 'energy'): void ns3::BasicEnergyHarvesterHelper::Set(std::string name, ns3::AttributeValue const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'v')], 
+                   is_virtual=True)
+    ## basic-energy-harvester-helper.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::BasicEnergyHarvesterHelper::DoInstall(ns3::Ptr<ns3::EnergySource> source) const [member function]
+    cls.add_method('DoInstall', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3BasicEnergySourceHelper_methods(root_module, cls):
     ## basic-energy-source-helper.h (module 'energy'): ns3::BasicEnergySourceHelper::BasicEnergySourceHelper(ns3::BasicEnergySourceHelper const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::BasicEnergySourceHelper const &', 'arg0')])
@@ -2781,6 +2931,89 @@
                    [])
     return
 
+def register_Ns3RandomVariableStream_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::RandomVariableStream::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream::RandomVariableStream() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::RandomVariableStream::SetStream(int64_t stream) [member function]
+    cls.add_method('SetStream', 
+                   'void', 
+                   [param('int64_t', 'stream')])
+    ## random-variable-stream.h (module 'core'): int64_t ns3::RandomVariableStream::GetStream() const [member function]
+    cls.add_method('GetStream', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): void ns3::RandomVariableStream::SetAntithetic(bool isAntithetic) [member function]
+    cls.add_method('SetAntithetic', 
+                   'void', 
+                   [param('bool', 'isAntithetic')])
+    ## random-variable-stream.h (module 'core'): bool ns3::RandomVariableStream::IsAntithetic() const [member function]
+    cls.add_method('IsAntithetic', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::RandomVariableStream::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::RandomVariableStream::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## random-variable-stream.h (module 'core'): ns3::RngStream * ns3::RandomVariableStream::Peek() const [member function]
+    cls.add_method('Peek', 
+                   'ns3::RngStream *', 
+                   [], 
+                   is_const=True, visibility='protected')
+    return
+
+def register_Ns3SequentialRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::SequentialRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::SequentialRandomVariable::SequentialRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): ns3::Ptr<ns3::RandomVariableStream> ns3::SequentialRandomVariable::GetIncrement() const [member function]
+    cls.add_method('GetIncrement', 
+                   'ns3::Ptr< ns3::RandomVariableStream >', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::SequentialRandomVariable::GetConsecutive() const [member function]
+    cls.add_method('GetConsecutive', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::SequentialRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::SequentialRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -2921,10 +3154,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2935,25 +3168,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3070,20 +3303,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -3181,6 +3414,130 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3TriangularRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::TriangularRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::TriangularRandomVariable::TriangularRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetValue(double mean, double min, double max) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'min'), param('double', 'max')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::TriangularRandomVariable::GetInteger(uint32_t mean, uint32_t min, uint32_t max) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'min'), param('uint32_t', 'max')])
+    ## random-variable-stream.h (module 'core'): double ns3::TriangularRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::TriangularRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3UniformRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::UniformRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::UniformRandomVariable::UniformRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetMin() const [member function]
+    cls.add_method('GetMin', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetMax() const [member function]
+    cls.add_method('GetMax', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetValue(double min, double max) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'min'), param('double', 'max')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::UniformRandomVariable::GetInteger(uint32_t min, uint32_t max) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'min'), param('uint32_t', 'max')])
+    ## random-variable-stream.h (module 'core'): double ns3::UniformRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::UniformRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3WeibullRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::WeibullRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::WeibullRandomVariable::WeibullRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetScale() const [member function]
+    cls.add_method('GetScale', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetShape() const [member function]
+    cls.add_method('GetShape', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetValue(double scale, double shape, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'scale'), param('double', 'shape'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::WeibullRandomVariable::GetInteger(uint32_t scale, uint32_t shape, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'scale'), param('uint32_t', 'shape'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::WeibullRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::WeibullRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3WifiPhy_methods(root_module, cls):
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::WifiPhy(ns3::WifiPhy const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::WifiPhy const &', 'arg0')])
@@ -3726,6 +4083,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -3778,10 +4140,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<const ns3::Packet> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<const ns3::Packet> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -3833,6 +4200,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -3845,6 +4217,99 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3WifiTxCurrentModel_methods(root_module, cls):
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel::WifiTxCurrentModel(ns3::WifiTxCurrentModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WifiTxCurrentModel const &', 'arg0')])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::WifiTxCurrentModel::WifiTxCurrentModel() [constructor]
+    cls.add_constructor([])
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::WifiTxCurrentModel::CalcTxCurrent(double txPowerDbm) const [member function]
+    cls.add_method('CalcTxCurrent', 
+                   'double', 
+                   [param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## wifi-tx-current-model.h (module 'energy'): static double ns3::WifiTxCurrentModel::DbmToW(double dbm) [member function]
+    cls.add_method('DbmToW', 
+                   'double', 
+                   [param('double', 'dbm')], 
+                   is_static=True)
+    ## wifi-tx-current-model.h (module 'energy'): static ns3::TypeId ns3::WifiTxCurrentModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3ZetaRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ZetaRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ZetaRandomVariable::ZetaRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetValue(double alpha) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'alpha')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZetaRandomVariable::GetInteger(uint32_t alpha) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'alpha')])
+    ## random-variable-stream.h (module 'core'): double ns3::ZetaRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZetaRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3ZipfRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ZipfRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ZipfRandomVariable::ZipfRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetValue(uint32_t n, double alpha) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('uint32_t', 'n'), param('double', 'alpha')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetInteger(uint32_t n, uint32_t alpha) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'n'), param('uint32_t', 'alpha')])
+    ## random-variable-stream.h (module 'core'): double ns3::ZipfRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ZipfRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3AttributeAccessor_methods(root_module, cls):
     ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
@@ -4024,22 +4489,79 @@
                    [param('ns3::CallbackBase', 'base')])
     return
 
-def register_Ns3DeviceEnergyModel_methods(root_module, cls):
-    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel(ns3::DeviceEnergyModel const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DeviceEnergyModel const &', 'arg0')])
-    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel() [constructor]
+def register_Ns3ConstantRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable::ConstantRandomVariable() [constructor]
     cls.add_constructor([])
-    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::ChangeState(int newState) [member function]
-    cls.add_method('ChangeState', 
-                   'void', 
-                   [param('int', 'newState')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetCurrentA() const [member function]
-    cls.add_method('GetCurrentA', 
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetConstant() const [member function]
+    cls.add_method('GetConstant', 
                    'double', 
                    [], 
                    is_const=True)
-    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetTotalEnergyConsumption() const [member function]
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetValue(double constant) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'constant')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ConstantRandomVariable::GetInteger(uint32_t constant) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'constant')])
+    ## random-variable-stream.h (module 'core'): double ns3::ConstantRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ConstantRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3DeterministicRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::DeterministicRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::DeterministicRandomVariable::DeterministicRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::DeterministicRandomVariable::SetValueArray(double * values, uint64_t length) [member function]
+    cls.add_method('SetValueArray', 
+                   'void', 
+                   [param('double *', 'values'), param('uint64_t', 'length')])
+    ## random-variable-stream.h (module 'core'): double ns3::DeterministicRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::DeterministicRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3DeviceEnergyModel_methods(root_module, cls):
+    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel(ns3::DeviceEnergyModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::DeviceEnergyModel const &', 'arg0')])
+    ## device-energy-model.h (module 'energy'): ns3::DeviceEnergyModel::DeviceEnergyModel() [constructor]
+    cls.add_constructor([])
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::ChangeState(int newState) [member function]
+    cls.add_method('ChangeState', 
+                   'void', 
+                   [param('int', 'newState')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetCurrentA() const [member function]
+    cls.add_method('GetCurrentA', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## device-energy-model.h (module 'energy'): double ns3::DeviceEnergyModel::GetTotalEnergyConsumption() const [member function]
     cls.add_method('GetTotalEnergyConsumption', 
                    'double', 
                    [], 
@@ -4054,6 +4576,11 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -4099,6 +4626,40 @@
                    [param('double const &', 'value')])
     return
 
+def register_Ns3EmpiricalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): ns3::EmpiricalRandomVariable::EmpiricalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): void ns3::EmpiricalRandomVariable::CDF(double v, double c) [member function]
+    cls.add_method('CDF', 
+                   'void', 
+                   [param('double', 'v'), param('double', 'c')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::EmpiricalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::EmpiricalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): double ns3::EmpiricalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): double ns3::EmpiricalRandomVariable::Interpolate(double arg0, double arg1, double arg2, double arg3, double arg4) [member function]
+    cls.add_method('Interpolate', 
+                   'double', 
+                   [param('double', 'arg0'), param('double', 'arg1'), param('double', 'arg2'), param('double', 'arg3'), param('double', 'arg4')], 
+                   visibility='private', is_virtual=True)
+    ## random-variable-stream.h (module 'core'): void ns3::EmpiricalRandomVariable::Validate() [member function]
+    cls.add_method('Validate', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EmptyAttributeValue_methods(root_module, cls):
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
@@ -4121,6 +4682,115 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvester_methods(root_module, cls):
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester(ns3::EnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvester const &', 'arg0')])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::EnergySource> ns3::EnergyHarvester::GetEnergySource() const [member function]
+    cls.add_method('GetEnergySource', 
+                   'ns3::Ptr< ns3::EnergySource >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::Node> ns3::EnergyHarvester::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::GetPower() const [member function]
+    cls.add_method('GetPower', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
+    cls.add_method('SetEnergySource', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
+def register_Ns3EnergyHarvesterContainer_methods(root_module, cls):
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::EnergyHarvesterContainer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterContainer const &', 'arg0')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::Ptr<ns3::EnergyHarvester> harvester) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::EnergyHarvester >', 'harvester')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(std::string harvesterName) [constructor]
+    cls.add_constructor([param('std::string', 'harvesterName')])
+    ## energy-harvester-container.h (module 'energy'): ns3::EnergyHarvesterContainer::EnergyHarvesterContainer(ns3::EnergyHarvesterContainer const & a, ns3::EnergyHarvesterContainer const & b) [constructor]
+    cls.add_constructor([param('ns3::EnergyHarvesterContainer const &', 'a'), param('ns3::EnergyHarvesterContainer const &', 'b')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(ns3::EnergyHarvesterContainer container) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::EnergyHarvesterContainer', 'container')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(ns3::Ptr<ns3::EnergyHarvester> harvester) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'harvester')])
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Add(std::string harvesterName) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('std::string', 'harvesterName')])
+    ## energy-harvester-container.h (module 'energy'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::EnergyHarvester>*,std::vector<ns3::Ptr<ns3::EnergyHarvester>, std::allocator<ns3::Ptr<ns3::EnergyHarvester> > > > ns3::EnergyHarvesterContainer::Begin() const [member function]
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::EnergyHarvester > const, std::vector< ns3::Ptr< ns3::EnergyHarvester > > >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::Clear() [member function]
+    cls.add_method('Clear', 
+                   'void', 
+                   [])
+    ## energy-harvester-container.h (module 'energy'): __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::EnergyHarvester>*,std::vector<ns3::Ptr<ns3::EnergyHarvester>, std::allocator<ns3::Ptr<ns3::EnergyHarvester> > > > ns3::EnergyHarvesterContainer::End() const [member function]
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::EnergyHarvester > const, std::vector< ns3::Ptr< ns3::EnergyHarvester > > >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): ns3::Ptr<ns3::EnergyHarvester> ns3::EnergyHarvesterContainer::Get(uint32_t i) const [member function]
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::EnergyHarvester >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): uint32_t ns3::EnergyHarvesterContainer::GetN() const [member function]
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester-container.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvesterContainer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester-container.h (module 'energy'): void ns3::EnergyHarvesterContainer::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySource_methods(root_module, cls):
     ## energy-source.h (module 'energy'): ns3::EnergySource::EnergySource(ns3::EnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EnergySource const &', 'arg0')])
@@ -4130,6 +4800,10 @@
     cls.add_method('AppendDeviceEnergyModel', 
                    'void', 
                    [param('ns3::Ptr< ns3::DeviceEnergyModel >', 'deviceEnergyModelPtr')])
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::ConnectEnergyHarvester(ns3::Ptr<ns3::EnergyHarvester> energyHarvesterPtr) [member function]
+    cls.add_method('ConnectEnergyHarvester', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'energyHarvesterPtr')])
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DisposeDeviceModels() [member function]
     cls.add_method('DisposeDeviceModels', 
                    'void', 
@@ -4200,6 +4874,11 @@
                    'void', 
                    [], 
                    visibility='protected')
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::NotifyEnergyRecharged() [member function]
+    cls.add_method('NotifyEnergyRecharged', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -4345,6 +5024,44 @@
                    [param('int', 'v')])
     return
 
+def register_Ns3ErlangRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ErlangRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ErlangRandomVariable::ErlangRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetK() const [member function]
+    cls.add_method('GetK', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetLambda() const [member function]
+    cls.add_method('GetLambda', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetValue(uint32_t k, double lambda) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('uint32_t', 'k'), param('double', 'lambda')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetInteger(uint32_t k, uint32_t lambda) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'k'), param('uint32_t', 'lambda')])
+    ## random-variable-stream.h (module 'core'): double ns3::ErlangRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ErlangRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3EventImpl_methods(root_module, cls):
     ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
@@ -4369,6 +5086,82 @@
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
+def register_Ns3ExponentialRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ExponentialRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable::ExponentialRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetValue(double mean, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ExponentialRandomVariable::GetInteger(uint32_t mean, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::ExponentialRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ExponentialRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
+def register_Ns3GammaRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::GammaRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable::GammaRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetAlpha() const [member function]
+    cls.add_method('GetAlpha', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetBeta() const [member function]
+    cls.add_method('GetBeta', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetValue(double alpha, double beta) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'alpha'), param('double', 'beta')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::GammaRandomVariable::GetInteger(uint32_t alpha, uint32_t beta) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'alpha'), param('uint32_t', 'beta')])
+    ## random-variable-stream.h (module 'core'): double ns3::GammaRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::GammaRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3IntegerValue_methods(root_module, cls):
     ## integer.h (module 'core'): ns3::IntegerValue::IntegerValue() [constructor]
     cls.add_constructor([])
@@ -4636,6 +5429,88 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3LinearWifiTxCurrentModel_methods(root_module, cls):
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel::LinearWifiTxCurrentModel(ns3::LinearWifiTxCurrentModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LinearWifiTxCurrentModel const &', 'arg0')])
+    ## wifi-tx-current-model.h (module 'energy'): ns3::LinearWifiTxCurrentModel::LinearWifiTxCurrentModel() [constructor]
+    cls.add_constructor([])
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::CalcTxCurrent(double txPowerDbm) const [member function]
+    cls.add_method('CalcTxCurrent', 
+                   'double', 
+                   [param('double', 'txPowerDbm')], 
+                   is_const=True, is_virtual=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetEta() const [member function]
+    cls.add_method('GetEta', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetIdleCurrent() const [member function]
+    cls.add_method('GetIdleCurrent', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): static ns3::TypeId ns3::LinearWifiTxCurrentModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## wifi-tx-current-model.h (module 'energy'): double ns3::LinearWifiTxCurrentModel::GetVoltage() const [member function]
+    cls.add_method('GetVoltage', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetEta(double eta) [member function]
+    cls.add_method('SetEta', 
+                   'void', 
+                   [param('double', 'eta')])
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetIdleCurrent(double idleCurrent) [member function]
+    cls.add_method('SetIdleCurrent', 
+                   'void', 
+                   [param('double', 'idleCurrent')])
+    ## wifi-tx-current-model.h (module 'energy'): void ns3::LinearWifiTxCurrentModel::SetVoltage(double voltage) [member function]
+    cls.add_method('SetVoltage', 
+                   'void', 
+                   [param('double', 'voltage')])
+    return
+
+def register_Ns3LogNormalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::LogNormalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::LogNormalRandomVariable::LogNormalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetMu() const [member function]
+    cls.add_method('GetMu', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetSigma() const [member function]
+    cls.add_method('GetSigma', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetValue(double mu, double sigma) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mu'), param('double', 'sigma')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::LogNormalRandomVariable::GetInteger(uint32_t mu, uint32_t sigma) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mu'), param('uint32_t', 'sigma')])
+    ## random-variable-stream.h (module 'core'): double ns3::LogNormalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::LogNormalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3NetDevice_methods(root_module, cls):
     ## net-device.h (module 'network'): ns3::NetDevice::NetDevice() [constructor]
     cls.add_constructor([])
@@ -4895,6 +5770,51 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3NormalRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable::INFINITE_VALUE [variable]
+    cls.add_static_attribute('INFINITE_VALUE', 'double const', is_const=True)
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::NormalRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::NormalRandomVariable::NormalRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetVariance() const [member function]
+    cls.add_method('GetVariance', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetValue(double mean, double variance, double bound=ns3::NormalRandomVariable::INFINITE_VALUE) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'variance'), param('double', 'bound', default_value='ns3::NormalRandomVariable::INFINITE_VALUE')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::NormalRandomVariable::GetInteger(uint32_t mean, uint32_t variance, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'variance'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::NormalRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::NormalRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
     ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
     cls.add_constructor([])
@@ -5120,6 +6040,49 @@
                    [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
     return
 
+def register_Ns3ParetoRandomVariable_methods(root_module, cls):
+    ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable::ParetoRandomVariable() [constructor]
+    cls.add_constructor([])
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetMean() const [member function]
+    cls.add_method('GetMean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetShape() const [member function]
+    cls.add_method('GetShape', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetBound() const [member function]
+    cls.add_method('GetBound', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetValue(double mean, double shape, double bound) [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [param('double', 'mean'), param('double', 'shape'), param('double', 'bound')])
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ParetoRandomVariable::GetInteger(uint32_t mean, uint32_t shape, uint32_t bound) [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [param('uint32_t', 'mean'), param('uint32_t', 'shape'), param('uint32_t', 'bound')])
+    ## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetValue() [member function]
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_virtual=True)
+    ## random-variable-stream.h (module 'core'): uint32_t ns3::ParetoRandomVariable::GetInteger() [member function]
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3RvBatteryModel_methods(root_module, cls):
     ## rv-battery-model.h (module 'energy'): ns3::RvBatteryModel::RvBatteryModel(ns3::RvBatteryModel const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RvBatteryModel const &', 'arg0')])
@@ -5260,6 +6223,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## simple-device-energy-model.h (module 'energy'): void ns3::SimpleDeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## simple-device-energy-model.h (module 'energy'): void ns3::SimpleDeviceEnergyModel::SetCurrentA(double current) [member function]
     cls.add_method('SetCurrentA', 
                    'void', 
@@ -5466,6 +6434,11 @@
                    'double', 
                    [], 
                    is_const=True)
+    ## wifi-radio-energy-model.h (module 'energy'): double ns3::WifiRadioEnergyModel::GetSleepCurrentA() const [member function]
+    cls.add_method('GetSleepCurrentA', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-radio-energy-model.h (module 'energy'): double ns3::WifiRadioEnergyModel::GetSwitchingCurrentA() const [member function]
     cls.add_method('GetSwitchingCurrentA', 
                    'double', 
@@ -5491,6 +6464,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetCcaBusyCurrentA(double ccaBusyCurrentA) [member function]
     cls.add_method('SetCcaBusyCurrentA', 
                    'void', 
@@ -5499,6 +6477,10 @@
     cls.add_method('SetEnergyDepletionCallback', 
                    'void', 
                    [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetEnergyRechargedCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetEnergyRechargedCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -5512,6 +6494,10 @@
     cls.add_method('SetRxCurrentA', 
                    'void', 
                    [param('double', 'rxCurrentA')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetSleepCurrentA(double sleepCurrentA) [member function]
+    cls.add_method('SetSleepCurrentA', 
+                   'void', 
+                   [param('double', 'sleepCurrentA')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetSwitchingCurrentA(double switchingCurrentA) [member function]
     cls.add_method('SetSwitchingCurrentA', 
                    'void', 
@@ -5520,6 +6506,14 @@
     cls.add_method('SetTxCurrentA', 
                    'void', 
                    [param('double', 'txCurrentA')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetTxCurrentFromModel(double txPowerDbm) [member function]
+    cls.add_method('SetTxCurrentFromModel', 
+                   'void', 
+                   [param('double', 'txPowerDbm')])
+    ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::SetTxCurrentModel(ns3::Ptr<ns3::WifiTxCurrentModel> model) [member function]
+    cls.add_method('SetTxCurrentModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiTxCurrentModel >', 'model')])
     ## wifi-radio-energy-model.h (module 'energy'): void ns3::WifiRadioEnergyModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -5572,6 +6566,48 @@
                    [param('ns3::Address const &', 'value')])
     return
 
+def register_Ns3BasicEnergyHarvester_methods(root_module, cls):
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester(ns3::BasicEnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BasicEnergyHarvester const &', 'arg0')])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## basic-energy-harvester.h (module 'energy'): ns3::BasicEnergyHarvester::BasicEnergyHarvester(ns3::Time updateInterval) [constructor]
+    cls.add_constructor([param('ns3::Time', 'updateInterval')])
+    ## basic-energy-harvester.h (module 'energy'): int64_t ns3::BasicEnergyHarvester::AssignStreams(int64_t stream) [member function]
+    cls.add_method('AssignStreams', 
+                   'int64_t', 
+                   [param('int64_t', 'stream')])
+    ## basic-energy-harvester.h (module 'energy'): ns3::Time ns3::BasicEnergyHarvester::GetHarvestedPowerUpdateInterval() const [member function]
+    cls.add_method('GetHarvestedPowerUpdateInterval', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## basic-energy-harvester.h (module 'energy'): static ns3::TypeId ns3::BasicEnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::SetHarvestedPowerUpdateInterval(ns3::Time updateInterval) [member function]
+    cls.add_method('SetHarvestedPowerUpdateInterval', 
+                   'void', 
+                   [param('ns3::Time', 'updateInterval')])
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## basic-energy-harvester.h (module 'energy'): double ns3::BasicEnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## basic-energy-harvester.h (module 'energy'): void ns3::BasicEnergyHarvester::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3BasicEnergySource_methods(root_module, cls):
     ## basic-energy-source.h (module 'energy'): ns3::BasicEnergySource::BasicEnergySource(ns3::BasicEnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::BasicEnergySource const &', 'arg0')])
diff -Naur ns-3.20/src/energy/doc/energy.rst ns-3.21/src/energy/doc/energy.rst
--- ns-3.20/src/energy/doc/energy.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/doc/energy.rst	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 Energy Framework
 ----------------
 
-Energy consumption is a key issue for wireless devices, and wireless network researchers often need to investigate the energy consumption at a node or in the overall network while running network simulations in ns-3. This requires ns-3 to support energy consumption modeling. Further, as concepts such as fuel cells and energy scavenging are becoming viable for low power wireless devices, incorporating the effect of these emerging technologies into simulations requires support for modeling diverse energy sources in ns-3. The ns-3 Energy Framework provides the basis for energy consumption and energy source modeling.
+Energy consumption is a key issue for wireless devices, and wireless network researchers often need to investigate the energy consumption at a node or in the overall network while running network simulations in ns-3. This requires ns-3 to support energy consumption modeling. Further, as concepts such as fuel cells and energy scavenging are becoming viable for low power wireless devices, incorporating the effect of these emerging technologies into simulations requires support for modeling diverse energy sources in ns-3. The ns-3 Energy Framework provides the basis for energy consumption, energy source and energy harvesting modeling.
 
 
 Model Description
@@ -12,8 +12,8 @@
 Design
 ******
 
-The ns-3 Energy Framework is composed of 2 parts: Energy Source and Device Energy Model. 
-The framework will be implemented into the ``src/energy/models`` folder.
+The ns-3 Energy Framework is composed of 3 parts: Energy Source, Device Energy Model and Energy Harvester. 
+The framework is implemented into the ``src/energy/models`` folder.
 
 Energy Source
 #############
@@ -25,21 +25,37 @@
 * Rate Capacity Effect: Decrease of battery lifetime when the current draw is higher than the rated value of the battery.
 * Recovery Effect: Increase of battery lifetime when the battery is alternating between discharge and idle states.
 
-In order to incorporate the Rate Capacity Effect, the Energy Source uses current draw from all devices on the same node to calculate energy consumption. The Energy Source polls all devices on the same node periodically to calculate the total current draw and hence the energy consumption. When a device changes state, its corresponding Device Energy Model will notify the Energy Source of this change and new total current draw will be calculated.
+In order to incorporate the Rate Capacity Effect, the Energy Source uses current draw from all the devices on the same node to calculate energy consumption. Moreover, multiple Energy Harvesters can be connected to the Energy Source in order to replenish its energy. The Energy Source periodically polls all the devices and energy harvesters on the same node to calculate the total current drain and hence the energy consumption. When a device changes state, its corresponding Device Energy Model will notify the Energy Source of this change and new total current draw will be calculated. Similarly, every Energy Harvester update triggers an update to the connected Energy Source.
+
+The Energy Source base class keeps a list of devices (Device Energy Model objects) and energy harvesters (Energy Harvester objects) that are using the particular Energy Source as power supply. When energy is completely drained, the Energy Source will notify all devices on this list. Each device can then handle this event independently, based on the desired behavior that should be followed in case of power outage.
 
-The Energy Source base class keeps a list of devices (Device Energy Model objects) using the particular Energy Source as power supply. When energy is completely drained, the Energy Source will notify all devices on this list. Each device can then handle this event independently, based on the desired behavior when power supply is drained.
 
 Device Energy Model
 ###################
 
-The Device Energy Model is the energy consumption model of a device on node. It is designed to be a state based model where each device is assumed to have a number of states, and each state is associated with a power consumption value. Whenever the state of the device changes, the corresponding Device Energy Model will notify the Energy Source of the new current draw of the device. The Energy Source will then calculate the new total current draw and update the remaining energy.
+The Device Energy Model is the energy consumption model of a device installed on the node. It is designed to be a state based model where each device is assumed to have a number of states, and each state is associated with a power consumption value. Whenever the state of the device changes, the corresponding Device Energy Model will notify the Energy Source of the new current draw of the device. The Energy Source will then calculate the new total current draw and update the remaining energy.
 
 The Device Energy Model can also be used for devices that do not have finite number of states. For example, in an electric vehicle, the current draw of the motor is determined by its speed. Since the vehicle's speed can take continuous values within a certain range, it is infeasible to define a set of discrete states of operation. However, by converting the speed value into current directly, the same set of Device Energy Model APIs can still be used.
 
+Energy Harvester
+#############
+
+The energy harvester represents the elements that harvest energy from the environment and recharge the Energy Source to which it is connected. The energy harvester includes the complete implementation of the actual energy harvesting device (e.g., a solar panel) and the environment (e.g., the solar radiation). This means that in implementing an energy harvester, the energy contribution of the environment and the additional energy requirements of the energy harvesting device such as the conversion efficiency and the internal power consumption of the device needs to be jointly modeled.
+
+
+WiFi Radio Energy Model
+#######################
+
+The WiFi Radio Energy Model is the energy consumption model of a Wifi net device. It provides a state for each of the available states of the PHY layer: Idle, CcaBusy, Tx, Rx, ChannelSwitch, Sleep. Each of such states is associated with a value (in Ampere) of the current draw (see below for the corresponding attribute names). A Wifi Radio Energy Model PHY Listener is registered to the Wifi PHY in order to be notified of every Wifi PHY state transition. At every transition, the energy consumed in the previous state is computed and the energy source is notified in order to update its remaining energy.
+
+The Wifi Tx Current Model gives the possibility to compute the current draw in the transmit state as a function of the nominal tx power (in dBm), as observed in several experimental measurements. To this purpose, the Wifi Radio Energy Model PHY Listener is notified of the nominal tx power used to transmit the current frame and passes such a value to the Wifi Tx Current Model which takes care of updating the current draw in the Tx state. Hence, the energy consumption is correctly computed even if the Wifi Remote Station Manager performs per-frame power control. Currently, a Linear Wifi Tx Current Model is implemented which computes the tx current as a linear function (according to parameters that can be specified by the user) of the nominal tx power in dBm.
+
+The Wifi Radio Energy Model offers the possibility to specify a callback that is invoked when the energy source is depleted. If such a callback is not specified when the Wifi Radio Energy Model Helper is used to install the model on a device, a callback is implicitly made so that the Wifi PHY is put in the SLEEP mode (hence no frame is transmitted nor received afterwards) when the energy source is depleted. Likewise, it is possible to specify a callback that is invoked when the energy source is recharged (which might occur in case an energy harvester is connected to the energy source). If such a callback is not specified when the Wifi Radio Energy Model Helper is used to install the model on a device, a callback is implicitly made so that the Wifi PHY is resumed from the SLEEP mode when the energy source is recharged.
+
 Future Work
 ***********
 
-For Device Energy Models, we are planning to include support for other PHY layer models provided in ns-3 such as WiMAX. For Energy Sources, we are planning to included new types of Energy Sources such as energy scavenging.
+For Device Energy Models, we are planning to include support for other PHY layer models provided in ns-3 such as WiMAX, and to model the energy consumptions of other non communicating devices, like a generic sensor and a CPU. For Energy Sources, we are planning to included new types of Energy Sources such as Supercapacitor and NickelMetal Hydride (Ni-MH) battery. For the Energy Harvesters, we are planning to implement an energy harvester that recharges the energy sources according to the power levels defined in a user customizable dataset of real measurements.
 
 References
 **********
@@ -51,19 +67,21 @@
        (ASM), 2003.
 .. [4] D. N. Rakhmatov and S. B. Vrudhula. An analytical high-level battery model for use in energy 
        management of portable electronic systems. In Proc. of IEEE/ACM International Conference on 
-       Computer Aided Design (ICCAD’01), pages 488–493, November 2001.
+       Computer Aided Design (ICCAD'01), pages 488-493, November 2001.
 .. [5] D. N. Rakhmatov, S. B. Vrudhula, and D. A. Wallach. Battery lifetime prediction for 
        energy-aware computing. In Proc. of the 2002 International Symposium on Low Power 
-       Electronics and Design (ISLPED’02), pages 154–159, 2002.
+       Electronics and Design (ISLPED'02), pages 154-159, 2002.
+.. [6] C. Tapparello, H. Ayatollahi and W. Heinzelman. Extending the Energy Framework for Network 
+       Simulator 3 (ns-3). Workshop on ns-3 (WNS3), Poster Session, Atlanta, GA, USA. May, 2014.
 
 Usage
 =====
 
 The main way that ns-3 users will typically interact with the Energy Framework is through the helper API and through the publicly visible attributes of the framework. The helper API is defined in ``src/energy/helper/*.h``.
 
-In order to use the energy framework, the user must install an Energy Source for the node of interest and the corresponding Device Energy Model for the network devices. Energy Source (objects) are aggregated onto each node by the Energy Source Helper. In order to allow multiple energy sources per node, we aggregate an Energy Source Container rather than directly aggregating a source object.
+In order to use the energy framework, the user must install an Energy Source for the node of interest, the corresponding Device Energy Model for the network devices and, if necessary, the one or more Energy Harvester. Energy Source (objects) are aggregated onto each node by the Energy Source Helper. In order to allow multiple energy sources per node, we aggregate an Energy Source Container rather than directly aggregating a source object.  
 
-The Energy Source object also keeps a list of Device Energy Model objects using the source as power supply. Device Energy Model objects are installed onto the Energy Source by the Device Energy Model Helper. User can access the Device Energy Model objects through the Energy Source object to obtain energy consumption information of individual devices.
+The Energy Source object keeps a list of Device Energy Model and Energy Harvester objects using the source as power supply. Device Energy Model objects are installed onto the Energy Source by the Device Energy Model Helper, while Energy Harvester object are installed by the Energy Harvester Helper. User can access the Device Energy Model objects through the Energy Source object to obtain energy consumption information of individual devices. Moreover, the user can access to the Energy Harvester objects in order to gather information regarding the current harvestable power and the total energy harvested by the harvester. 
 
 
 Examples
@@ -86,10 +104,16 @@
 
 Base helper class for Device Energy Model objects, this helper attaches Device Energy Model objects onto Energy Source objects. Child implementation of this class creates the actual Device Energy Model object.
 
+Energy Harvesting Helper
+##########################
+
+Base helper class for Energy Harvester objects, this helper attaches Energy Harvester objects onto Energy Source objects. Child implementation of this class creates the actual Energy Harvester object.
+
+
 Attributes
 **********
 
-Attributes differ between Energy Sources and Devices Energy Models implementations, please look at the specific child class for details.
+Attributes differ between Energy Sources, Devices Energy Models and Energy Harvesters implementations, please look at the specific child class for details.
 
 Basic Energy Source
 ###################
@@ -116,11 +140,19 @@
 * ``TxCurrentA``: The radio Tx current in Ampere.
 * ``RxCurrentA``: The radio Rx current in Ampere.
 * ``SwitchingCurrentA``: The default radio Channel Switch current in Ampere.
+* ``SleepCurrentA``: The radio Sleep current in Ampere.
+* ``TxCurrentModel``: A pointer to the attached tx current model.
+
+Basic Energy Harvester
+#######################
+
+* ``PeriodicHarvestedPowerUpdateInterval``: Time between two consecutive periodic updates of the harvested power.
+* ``HarvestablePower``: Random variables that represents the amount of power that is provided by the energy harvester.
 
 Tracing
 *******
 
-Traced values differ between Energy Sources and Devices Energy Models implementations, please look at the specific child class for details.
+Traced values differ between Energy Sources, Devices Energy Models and Energy Harvesters implementations, please look at the specific child class for details.
 
 Basic Energy Source
 ###################
@@ -138,6 +170,13 @@
 
 * ``TotalEnergyConsumption``: Total energy consumption of the radio device.
 
+Basic Energy Harvester
+#######################
+
+* ``HarvestedPower``: Current power provided by the BasicEnergyHarvester.
+* ``TotalEnergyHarvested``: Total energy harvested by the BasicEnergyHarvester.
+
+
 Validation
 **********
 
diff -Naur ns-3.20/src/energy/helper/basic-energy-harvester-helper.cc ns-3.21/src/energy/helper/basic-energy-harvester-helper.cc
--- ns-3.20/src/energy/helper/basic-energy-harvester-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/basic-energy-harvester-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,59 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "basic-energy-harvester-helper.h"
+#include "ns3/energy-harvester.h"
+
+namespace ns3 {
+  
+BasicEnergyHarvesterHelper::BasicEnergyHarvesterHelper ()
+{
+  m_basicEnergyHarvester.SetTypeId ("ns3::BasicEnergyHarvester");
+}
+
+BasicEnergyHarvesterHelper::~BasicEnergyHarvesterHelper ()
+{
+}
+
+void
+BasicEnergyHarvesterHelper::Set (std::string name, const AttributeValue &v)
+{
+  m_basicEnergyHarvester.Set (name, v);
+}
+
+Ptr<EnergyHarvester>
+BasicEnergyHarvesterHelper::DoInstall (Ptr<EnergySource> source) const
+{
+  NS_ASSERT (source != 0);
+  Ptr<Node> node = source->GetNode ();
+
+  // Create a new Basic Energy Harvester
+  Ptr<EnergyHarvester> harvester = m_basicEnergyHarvester.Create<EnergyHarvester> ();
+  NS_ASSERT (harvester != 0);
+
+  // Connect the Basic Energy Harvester to the Energy Source
+  source->ConnectEnergyHarvester (harvester);
+  harvester->SetNode (node);
+  harvester->SetEnergySource (source);
+  return harvester;
+}
+  
+} // namespace ns3
diff -Naur ns-3.20/src/energy/helper/basic-energy-harvester-helper.h ns-3.21/src/energy/helper/basic-energy-harvester-helper.h
--- ns-3.20/src/energy/helper/basic-energy-harvester-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/basic-energy-harvester-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,53 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#ifndef BASIC_ENERGY_HARVESTER_HELPER_H
+#define BASIC_ENERGY_HARVESTER_HELPER_H
+
+#include "energy-harvester-helper.h"
+#include "ns3/energy-source.h"
+#include "ns3/node.h"
+
+namespace ns3 {
+  
+/**
+ * \ingroup energy
+ * \brief Creates a BasicEnergyHarvester object.
+ */
+class BasicEnergyHarvesterHelper : public EnergyHarvesterHelper
+{
+public:
+  BasicEnergyHarvesterHelper ();
+  ~BasicEnergyHarvesterHelper ();
+
+  void Set (std::string name, const AttributeValue &v);
+
+private:
+  virtual Ptr<EnergyHarvester> DoInstall (Ptr<EnergySource> source) const;
+
+private:
+  ObjectFactory m_basicEnergyHarvester;
+
+};
+  
+} // namespace ns3
+
+#endif /* defined(BASIC_ENERGY_HARVESTER_HELPER_H) */
diff -Naur ns-3.20/src/energy/helper/energy-harvester-container.cc ns-3.21/src/energy/helper/energy-harvester-container.cc
--- ns-3.20/src/energy/helper/energy-harvester-container.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/energy-harvester-container.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,164 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "energy-harvester-container.h"
+
+#include "ns3/names.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("EnergyHarvesterContainer");
+
+namespace ns3 {
+    
+TypeId
+EnergyHarvesterContainer::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::EnergyHarvesterContainer")
+    .SetParent<Object> ()
+    .AddConstructor<EnergyHarvesterContainer> ()
+  ;
+  return tid;
+}
+
+EnergyHarvesterContainer::EnergyHarvesterContainer ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+EnergyHarvesterContainer::~EnergyHarvesterContainer ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+EnergyHarvesterContainer::EnergyHarvesterContainer (Ptr<EnergyHarvester> harvester)
+{
+  NS_LOG_FUNCTION (this << harvester);
+  NS_ASSERT (harvester != 0);
+  m_harvesters.push_back (harvester);
+}
+
+EnergyHarvesterContainer::EnergyHarvesterContainer (std::string harvesterName)
+{
+  NS_LOG_FUNCTION (this << harvesterName);
+  Ptr<EnergyHarvester> harvester = Names::Find<EnergyHarvester> (harvesterName);
+  NS_ASSERT (harvester != 0);
+  m_harvesters.push_back (harvester);
+}
+
+EnergyHarvesterContainer::EnergyHarvesterContainer (const EnergyHarvesterContainer &a,
+                                                    const EnergyHarvesterContainer &b)
+{
+  NS_LOG_FUNCTION (this << &a << &b);
+  *this = a;
+  Add (b);
+}
+
+EnergyHarvesterContainer::Iterator
+EnergyHarvesterContainer::Begin (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_harvesters.begin ();
+}
+
+EnergyHarvesterContainer::Iterator
+EnergyHarvesterContainer::End (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_harvesters.end ();
+}
+
+uint32_t
+EnergyHarvesterContainer::GetN (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_harvesters.size ();
+}
+
+Ptr<EnergyHarvester>
+EnergyHarvesterContainer::Get (uint32_t i) const
+{
+  NS_LOG_FUNCTION (this << i);
+  return m_harvesters[i];
+}
+
+void
+EnergyHarvesterContainer::Add (EnergyHarvesterContainer container)
+{
+  NS_LOG_FUNCTION (this << &container);
+  for (Iterator i = container.Begin (); i != container.End (); i++)
+  {
+      m_harvesters.push_back (*i);
+  }
+}
+
+void
+EnergyHarvesterContainer::Add (Ptr<EnergyHarvester> harvester)
+{
+  NS_LOG_FUNCTION (this << harvester);
+  NS_ASSERT (harvester != 0);
+  m_harvesters.push_back (harvester);
+}
+
+void
+EnergyHarvesterContainer::Add (std::string harvesterName)
+{
+  NS_LOG_FUNCTION (this << harvesterName);
+  Ptr<EnergyHarvester> harvester = Names::Find<EnergyHarvester> (harvesterName);
+  NS_ASSERT (harvester != 0);
+  m_harvesters.push_back (harvester);
+}
+
+void
+EnergyHarvesterContainer::Clear (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_harvesters.clear ();
+}
+
+
+/*
+ * Private functions start here.
+ */
+
+void
+EnergyHarvesterContainer::DoDispose (void)
+{
+  // call Object::Dispose for all EnergyHarvester objects
+  for (std::vector< Ptr<EnergyHarvester> >::iterator i = m_harvesters.begin ();
+       i != m_harvesters.end (); i++)
+  {
+      (*i)->Dispose ();
+  }
+  m_harvesters.clear ();
+}
+
+void
+EnergyHarvesterContainer::DoInitialize (void)
+{
+  // call Object::Initialize for all EnergyHarvester objects
+  for (std::vector< Ptr<EnergyHarvester> >::iterator i = m_harvesters.begin ();
+       i != m_harvesters.end (); i++)
+  {
+      (*i)->Initialize ();
+  }
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/energy/helper/energy-harvester-container.h ns-3.21/src/energy/helper/energy-harvester-container.h
--- ns-3.20/src/energy/helper/energy-harvester-container.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/energy-harvester-container.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,190 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#ifndef ENERGY_HARVESTER_CONTAINER_H
+#define ENERGY_HARVESTER_CONTAINER_H
+
+#include "ns3/energy-harvester.h"
+#include "ns3/object.h"
+#include <vector>
+#include <stdint.h>
+
+namespace ns3 {
+    
+class EnergyHarvester;
+
+/**
+ * \ingroup energy
+ * \brief Holds a vector of ns3::EnergyHarvester pointers.
+ *
+ * EnergyHarvesterContainer returns a list of EnergyHarvester pointers
+ * installed on a node. Users can use this list to access EnergyHarvester
+ * objects to obtain the total energy harvested on a node easily.
+ *
+ * \see NetDeviceContainer
+ *
+ */
+class EnergyHarvesterContainer : public Object
+{
+public:
+  typedef std::vector< Ptr<EnergyHarvester> >::const_iterator Iterator;
+
+public:
+  static TypeId GetTypeId (void);
+  /**
+   * Creates an empty EnergyHarvesterContainer.
+   */
+  EnergyHarvesterContainer ();
+  ~EnergyHarvesterContainer ();
+
+  /**
+   * \param harvester Pointer to an EnergyHarvester.
+   *
+   * Creates a EnergyHarvesterContainer with exactly one EnergyHarvester
+   * previously instantiated.
+   */
+  EnergyHarvesterContainer (Ptr<EnergyHarvester> harvester);
+
+  /**
+   * \param harvesterName Name of EnergyHarvester.
+   *
+   * Creates an EnergyHarvesterContainer with exactly one EnergyHarvester
+   * previously instantiated and assigned a name using the Object name service.
+   * This EnergyHarvester is specified by its assigned name.
+   */
+  EnergyHarvesterContainer (std::string harvesterName);
+
+  /**
+   * \param a A EnergyHarvesterContainer.
+   * \param b Another EnergyHarvesterContainer.
+   *
+   * Creates a EnergyHarvesterContainer by concatenating EnergyHarvesterContainer b
+   * to EnergyHarvesterContainer a.
+   *
+   * \note Can be used to concatenate 2 Ptr<EnergyHarvester> directly. C++
+   * will be calling EnergyHarvesterContainer constructor with Ptr<EnergyHarvester>
+   * first.
+   */
+  EnergyHarvesterContainer (const EnergyHarvesterContainer &a,
+                            const EnergyHarvesterContainer &b);
+
+  /**
+   * \brief Get an iterator which refers to the first EnergyHarvester pointer
+   * in the container.
+   *
+   * \returns An iterator which refers to the first EnergyHarvester in container.
+   *
+   * EnergyHarvesters can be retrieved from the container in two ways. First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a
+   * for-loop to run through the EnergyHarvesters.
+   *
+   * \code
+   *   EnergyHarvesterContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       (*i)->method ();  // some EnergyHarvester method
+   *     }
+   * \endcode
+   */
+  Iterator Begin (void) const;
+
+  /**
+   * \brief Get an iterator which refers to the last EnergyHarvester pointer
+   * in the container.
+   *
+   * \returns An iterator which refers to the last EnergyHarvester in container.
+   *
+   * EnergyHarvesters can be retrieved from the container in two ways. First,
+   * directly by an index into the container, and second, using an iterator.
+   * This method is used in the iterator method and is typically used in a
+   * for-loop to run through the EnergyHarvesters.
+   *
+   * \code
+   *   EnergyHarvesterContainer::Iterator i;
+   *   for (i = container.Begin (); i != container.End (); ++i)
+   *     {
+   *       (*i)->method ();  // some EnergyHarvester method
+   *     }
+   * \endcode
+   */
+  Iterator End (void) const;
+
+  /**
+   * \brief Get the number of Ptr<EnergyHarvester> stored in this container.
+   *
+   * \returns The number of Ptr<EnergyHarvester> stored in this container.
+   */
+  uint32_t GetN (void) const;
+
+  /**
+   * \brief Get the i-th Ptr<EnergyHarvester> stored in this container.
+   *
+   * \param i Index of the requested Ptr<EnergyHarvester>.
+   * \returns The requested Ptr<EnergyHarvester>.
+   */
+  Ptr<EnergyHarvester> Get (uint32_t i) const;
+
+  /**
+   * \param container Another EnergyHarvesterContainer.
+   *
+   * Appends the contents of another EnergyHarvesterContainer to the end of
+   * this EnergyHarvesterContainer.
+   */
+  void Add (EnergyHarvesterContainer container);
+
+  /**
+   * \brief Append a single Ptr<EnergyHarvester> to the end of this container.
+   *
+   * \param harvester Pointer to an EnergyHarvester.
+   */
+  void Add (Ptr<EnergyHarvester> harvester);
+
+  /**
+   * \brief Append a single Ptr<EnergyHarvester> referred to by its object
+   * name to the end of this container.
+   *
+   * \param harvesterName Name of EnergyHarvester object.
+   */
+  void Add (std::string harvesterName);
+
+  /**
+   * \brief Removes all elements in the container.
+   */
+  void Clear (void);
+
+private:
+  virtual void DoDispose (void);
+
+  /**
+   * \brief Calls Object::Initialize () for all EnergySource objects.
+   */
+  virtual void DoInitialize (void);
+
+private:
+  std::vector< Ptr<EnergyHarvester> > m_harvesters;
+
+};
+    
+} // namespace ns3
+
+
+#endif /* defined(ENERGY_HARVESTER_CONTAINER_H) */
diff -Naur ns-3.20/src/energy/helper/energy-harvester-helper.cc ns-3.21/src/energy/helper/energy-harvester-helper.cc
--- ns-3.20/src/energy/helper/energy-harvester-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/energy-harvester-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,79 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "energy-harvester-helper.h"
+#include "ns3/config.h"
+#include "ns3/names.h"
+
+namespace ns3 {
+  
+/*
+ * EnergyHarvesterHelper
+ */
+EnergyHarvesterHelper::~EnergyHarvesterHelper ()
+{
+}
+
+EnergyHarvesterContainer
+EnergyHarvesterHelper::Install (Ptr<EnergySource> source) const
+{
+  return Install (EnergySourceContainer (source));
+}
+
+EnergyHarvesterContainer
+EnergyHarvesterHelper::Install (EnergySourceContainer sourceContainer) const
+{
+  EnergyHarvesterContainer container;
+  for (EnergySourceContainer::Iterator i = sourceContainer.Begin (); i != sourceContainer.End (); ++i)
+  {
+    Ptr<EnergyHarvester> harvester = DoInstall (*i);
+    container.Add (harvester);
+    Ptr<Node> node = (*i)->GetNode ();
+    /*
+     * Check if EnergyHarvesterContainer is already aggregated to target node. If
+     * not, create a new EnergyHarvesterContainer and aggregate it to the node.
+     */
+    Ptr<EnergyHarvesterContainer> EnergyHarvesterContainerOnNode =
+    node->GetObject<EnergyHarvesterContainer> ();
+    if (EnergyHarvesterContainerOnNode == 0)
+    {
+      ObjectFactory fac;
+      fac.SetTypeId ("ns3::EnergyHarvesterContainer");
+      EnergyHarvesterContainerOnNode = fac.Create<EnergyHarvesterContainer> ();
+      EnergyHarvesterContainerOnNode->Add (harvester);
+      node->AggregateObject (EnergyHarvesterContainerOnNode);
+    }
+    else
+    {
+      EnergyHarvesterContainerOnNode->Add (harvester);  // append new EnergyHarvester
+    }
+  }
+  return container;
+}
+
+EnergyHarvesterContainer
+EnergyHarvesterHelper::Install (std::string sourceName) const
+{
+  Ptr<EnergySource> source  = Names::Find<EnergySource> (sourceName);
+  return Install (source);
+}
+    
+} // namespace ns3
diff -Naur ns-3.20/src/energy/helper/energy-harvester-helper.h ns-3.21/src/energy/helper/energy-harvester-helper.h
--- ns-3.20/src/energy/helper/energy-harvester-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/helper/energy-harvester-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,98 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#ifndef ENERGY_HARVESTER_HELPER_H
+#define ENERGY_HARVESTER_HELPER_H
+
+#include "ns3/attribute.h"
+#include "ns3/object-factory.h"
+#include "ns3/node-container.h"
+#include "ns3/ptr.h"
+#include "ns3/energy-harvester.h"
+#include "ns3/energy-harvester-container.h"
+
+#include "ns3/energy-source.h"
+#include "ns3/energy-source-container.h"
+
+
+namespace ns3 {
+  
+/**
+ * \ingroup energy
+ * \brief Creates EnergyHarvester objects.
+ *
+ * This class creates and installs energy harvesters onto network nodes.
+ *
+ */
+class EnergyHarvesterHelper
+{
+public:
+  virtual ~EnergyHarvesterHelper ();
+
+  /**
+   * \param name Name of attribute to set.
+   * \param v Value of the attribute.
+   *
+   * Sets one of the attributes of underlying EnergyHarvester.
+   */
+  virtual void Set (std::string name, const AttributeValue &v) = 0;
+
+  /**
+   * \param source Pointer to the energy source where EnergyHarvester will be installed.
+   * \returns An EnergyHarvesterContainer which contains all the EnergyHarvesters.
+   *
+   * This function installs an EnergyHarvester onto an energy source.
+   */
+  EnergyHarvesterContainer Install (Ptr<EnergySource> source) const;
+
+  /**
+   * \param sourceContainer List of nodes where EnergyHarvester will be installed.
+   * \returns An EnergyHarvesterContainer which contains all the EnergyHarvester.
+   *
+   * This function installs an EnergyHarvester onto a list of energy sources.
+   */
+  EnergyHarvesterContainer Install (EnergySourceContainer sourceContainer) const;
+
+  /**
+   * \param nodeName Name of node where EnergyHarvester will be installed.
+   * \returns An EnergyHarvesterContainer which contains all the EnergyHarvesters.
+   *
+   * This function installs an EnergyHarvester onto a node.
+   */
+  EnergyHarvesterContainer Install (std::string sourceName) const;
+
+private:
+  /**
+   * \param node Pointer to node where the energy harvester is to be installed.
+   * \returns Pointer to the created EnergyHarvester.
+   *
+   * Child classes of EnergyHarvesterHelper only have to implement this function,
+   * to create and aggregate an EnergyHarvester object onto a single node. Rest of
+   * the installation process (eg. installing EnergyHarvester on set of nodes) is
+   * implemented in the EnergyHarvesterHelper base class.
+   */
+  virtual Ptr<EnergyHarvester> DoInstall (Ptr<EnergySource> source) const = 0;
+
+};
+
+} // namespace ns3
+
+#endif /* defined(ENERGY_HARVESTER_HELPER_H) */
diff -Naur ns-3.20/src/energy/helper/wifi-radio-energy-model-helper.cc ns-3.21/src/energy/helper/wifi-radio-energy-model-helper.cc
--- ns-3.20/src/energy/helper/wifi-radio-energy-model-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/helper/wifi-radio-energy-model-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -24,6 +24,7 @@
 #include "ns3/wifi-net-device.h"
 #include "ns3/config.h"
 #include "ns3/names.h"
+#include "ns3/wifi-tx-current-model.h"
 
 namespace ns3 {
 
@@ -31,6 +32,7 @@
 {
   m_radioEnergy.SetTypeId ("ns3::WifiRadioEnergyModel");
   m_depletionCallback.Nullify ();
+  m_rechargedCallback.Nullify ();
 }
 
 WifiRadioEnergyModelHelper::~WifiRadioEnergyModelHelper ()
@@ -50,6 +52,38 @@
   m_depletionCallback = callback;
 }
 
+void
+WifiRadioEnergyModelHelper::SetRechargedCallback (
+  WifiRadioEnergyModel::WifiRadioEnergyRechargedCallback callback)
+{
+  m_rechargedCallback = callback;
+}
+
+void
+WifiRadioEnergyModelHelper::SetTxCurrentModel (std::string name,
+                                               std::string n0, const AttributeValue& v0,
+                                               std::string n1, const AttributeValue& v1,
+                                               std::string n2, const AttributeValue& v2,
+                                               std::string n3, const AttributeValue& v3,
+                                               std::string n4, const AttributeValue& v4,
+                                               std::string n5, const AttributeValue& v5,
+                                               std::string n6, const AttributeValue& v6,
+                                               std::string n7, const AttributeValue& v7)
+{
+  ObjectFactory factory;
+  factory.SetTypeId (name);
+  factory.Set (n0, v0);
+  factory.Set (n1, v1);
+  factory.Set (n2, v2);
+  factory.Set (n3, v3);
+  factory.Set (n4, v4);
+  factory.Set (n5, v5);
+  factory.Set (n6, v6);
+  factory.Set (n7, v7);
+  m_txCurrentModel = factory;
+}
+
+
 /*
  * Private function starts here.
  */
@@ -72,13 +106,37 @@
   // set energy source pointer
   model->SetEnergySource (source);
   // set energy depletion callback
-  model->SetEnergyDepletionCallback (m_depletionCallback);
+  // if none is specified, make a callback to WifiPhy::SetSleepMode
+  Ptr<WifiNetDevice> wifiDevice = DynamicCast<WifiNetDevice> (device);
+  Ptr<WifiPhy> wifiPhy = wifiDevice->GetPhy ();
+  if (m_depletionCallback.IsNull ())
+    {
+      model->SetEnergyDepletionCallback (MakeCallback (&WifiPhy::SetSleepMode, wifiPhy));
+    }
+  else
+    {
+      model->SetEnergyDepletionCallback (m_depletionCallback);
+    }
+  // set energy recharged callback
+  // if none is specified, make a callback to WifiPhy::ResumeFromSleep
+  if (m_rechargedCallback.IsNull ())
+    {
+      model->SetEnergyRechargedCallback (MakeCallback (&WifiPhy::ResumeFromSleep, wifiPhy));
+    }
+  else
+    {
+      model->SetEnergyRechargedCallback (m_rechargedCallback);
+    }
   // add model to device model list in energy source
   source->AppendDeviceEnergyModel (model);
   // create and register energy model phy listener
-  Ptr<WifiNetDevice> wifiDevice = DynamicCast<WifiNetDevice> (device);
-  Ptr<WifiPhy> wifiPhy = wifiDevice->GetPhy ();
   wifiPhy->RegisterListener (model->GetPhyListener ());
+  //
+  if (m_txCurrentModel.GetTypeId ().GetUid ())
+    {
+      Ptr<WifiTxCurrentModel> txcurrent = m_txCurrentModel.Create<WifiTxCurrentModel> ();
+      model->SetTxCurrentModel (txcurrent);
+    }
   return model;
 }
 
diff -Naur ns-3.20/src/energy/helper/wifi-radio-energy-model-helper.h ns-3.21/src/energy/helper/wifi-radio-energy-model-helper.h
--- ns-3.20/src/energy/helper/wifi-radio-energy-model-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/helper/wifi-radio-energy-model-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -62,6 +62,44 @@
   void SetDepletionCallback (
     WifiRadioEnergyModel::WifiRadioEnergyDepletionCallback callback);
 
+  /**
+   * \param callback Callback function for energy recharged handling.
+   *
+   * Sets the callback to be invoked when energy is recharged.
+   */
+  void SetRechargedCallback (
+    WifiRadioEnergyModel::WifiRadioEnergyRechargedCallback callback);
+
+  /**
+   * \param name the name of the model to set
+   * \param n0 the name of the attribute to set
+   * \param v0 the value of the attribute to set
+   * \param n1 the name of the attribute to set
+   * \param v1 the value of the attribute to set
+   * \param n2 the name of the attribute to set
+   * \param v2 the value of the attribute to set
+   * \param n3 the name of the attribute to set
+   * \param v3 the value of the attribute to set
+   * \param n4 the name of the attribute to set
+   * \param v4 the value of the attribute to set
+   * \param n5 the name of the attribute to set
+   * \param v5 the value of the attribute to set
+   * \param n6 the name of the attribute to set
+   * \param v6 the value of the attribute to set
+   * \param n7 the name of the attribute to set
+   * \param v7 the value of the attribute to set
+   *
+   * Configure a propagation delay for this channel.
+   */
+  void SetTxCurrentModel (std::string name,
+                          std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
+                          std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
+                          std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
+                          std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
+                          std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
+                          std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
+                          std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
+                          std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
 
 private:
   /**
@@ -76,6 +114,8 @@
 private:
   ObjectFactory m_radioEnergy;
   WifiRadioEnergyModel::WifiRadioEnergyDepletionCallback m_depletionCallback;
+  WifiRadioEnergyModel::WifiRadioEnergyRechargedCallback m_rechargedCallback;
+  ObjectFactory m_txCurrentModel;
 
 };
 
diff -Naur ns-3.20/src/energy/model/basic-energy-harvester.cc ns-3.21/src/energy/model/basic-energy-harvester.cc
--- ns-3.20/src/energy/model/basic-energy-harvester.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/basic-energy-harvester.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,180 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "basic-energy-harvester.h"
+
+#include "ns3/log.h"
+#include "ns3/assert.h"
+#include "ns3/pointer.h"
+#include "ns3/string.h"
+#include "ns3/trace-source-accessor.h"
+#include "ns3/simulator.h"
+
+NS_LOG_COMPONENT_DEFINE ("BasicEnergyHarvester");
+
+namespace ns3 {
+  
+NS_OBJECT_ENSURE_REGISTERED (BasicEnergyHarvester);
+
+TypeId
+BasicEnergyHarvester::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::BasicEnergyHarvester")
+  .SetParent<EnergyHarvester> ()
+  .AddConstructor<BasicEnergyHarvester> ()
+  .AddAttribute ("PeriodicHarvestedPowerUpdateInterval",
+                 "Time between two consecutive periodic updates of the harvested power. By default, the value is updated every 1 s",
+                 TimeValue (Seconds (1.0)),
+                 MakeTimeAccessor (&BasicEnergyHarvester::SetHarvestedPowerUpdateInterval,
+                                   &BasicEnergyHarvester::GetHarvestedPowerUpdateInterval),
+                 MakeTimeChecker ())
+  .AddAttribute ("HarvestablePower",
+                 "The harvestable power [Watts] that the energy harvester is allowed to harvest. By default, the model will allow to harvest an amount of power defined by a uniformly distributed random variable in 0 and 2.0 Watts",
+                 StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=2.0]"),
+                 MakePointerAccessor (&BasicEnergyHarvester::m_harvestablePower),
+                 MakePointerChecker<RandomVariableStream> ())
+  .AddTraceSource ("HarvestedPower",
+                   "Harvested power by the BasicEnergyHarvester.",
+                   MakeTraceSourceAccessor (&BasicEnergyHarvester::m_harvestedPower))
+  .AddTraceSource ("TotalEnergyHarvested",
+                   "Total energy harvested by the harvester.",
+                   MakeTraceSourceAccessor (&BasicEnergyHarvester::m_totalEnergyHarvestedJ))
+  ;
+  return tid;
+}
+
+BasicEnergyHarvester::BasicEnergyHarvester ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+BasicEnergyHarvester::BasicEnergyHarvester (Time updateInterval)
+{
+  NS_LOG_FUNCTION (this << updateInterval);
+  m_harvestedPowerUpdateInterval = updateInterval;
+}
+
+BasicEnergyHarvester::~BasicEnergyHarvester ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+int64_t
+BasicEnergyHarvester::AssignStreams (int64_t stream)
+{
+  NS_LOG_FUNCTION (this << stream);
+  m_harvestablePower->SetStream (stream);
+  return 1;
+}
+
+void
+BasicEnergyHarvester::SetHarvestedPowerUpdateInterval (Time updateInterval)
+{
+  NS_LOG_FUNCTION (this << updateInterval);
+  m_harvestedPowerUpdateInterval = updateInterval;
+}
+
+Time
+BasicEnergyHarvester::GetHarvestedPowerUpdateInterval (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_harvestedPowerUpdateInterval;
+}
+
+/*
+ * Private functions start here.
+ */
+
+void
+BasicEnergyHarvester::UpdateHarvestedPower (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG (Simulator::Now ().GetSeconds ()
+                << "s BasicEnergyHarvester(" << GetNode ()->GetId () << "): Updating harvesting power.");
+
+  Time duration = Simulator::Now () - m_lastHarvestingUpdateTime;
+
+  NS_ASSERT (duration.GetNanoSeconds () >= 0); // check if duration is valid
+
+  double energyHarvested = 0.0;
+
+  // do not update if simulation has finished
+  if (Simulator::IsFinished ())
+  {
+    NS_LOG_DEBUG ("BasicEnergyHarvester: Simulation Finished.");
+    return;
+  }
+
+  m_energyHarvestingUpdateEvent.Cancel ();
+
+  CalculateHarvestedPower ();
+
+  energyHarvested = duration.GetSeconds () * m_harvestedPower;
+
+  // update total energy harvested
+  m_totalEnergyHarvestedJ += energyHarvested;
+
+  // notify energy source
+  GetEnergySource ()->UpdateEnergySource ();
+
+  // update last harvesting time stamp
+  m_lastHarvestingUpdateTime = Simulator::Now ();
+
+  m_energyHarvestingUpdateEvent = Simulator::Schedule (m_harvestedPowerUpdateInterval,
+                                                       &BasicEnergyHarvester::UpdateHarvestedPower,
+                                                       this);
+}
+
+void
+BasicEnergyHarvester::DoInitialize (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_lastHarvestingUpdateTime = Simulator::Now ();
+
+  UpdateHarvestedPower ();  // start periodic harvesting update
+}
+
+void
+BasicEnergyHarvester::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+BasicEnergyHarvester::CalculateHarvestedPower (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_harvestedPower = m_harvestablePower->GetValue ();
+
+  NS_LOG_DEBUG (Simulator::Now ().GetSeconds ()
+                << "s BasicEnergyHarvester:Harvested energy = " << m_harvestedPower);
+}
+
+double
+BasicEnergyHarvester::DoGetPower (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_harvestedPower;
+}
+  
+} // namespace ns3
diff -Naur ns-3.20/src/energy/model/basic-energy-harvester.h ns-3.21/src/energy/model/basic-energy-harvester.h
--- ns-3.20/src/energy/model/basic-energy-harvester.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/basic-energy-harvester.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,131 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#ifndef BASIC_ENERGY_HARVESTER
+#define BASIC_ENERGY_HARVESTER
+
+#include <iostream>
+
+// include from ns-3
+#include "ns3/traced-value.h"
+#include "ns3/nstime.h"
+#include "ns3/event-id.h"
+#include "energy-harvester.h"
+#include "ns3/random-variable-stream.h"
+#include "ns3/device-energy-model.h"
+
+namespace ns3 {
+
+/**
+ * \ingroup energy
+ * BasicEnergyHarvester increases remaining energy stored in an associated
+ * Energy Source. The BasicEnergyHarvester implements a simple model in which
+ * the amount of power provided by the harvester varies over time according
+ * to a customizable generic random variable and time update intervals.
+ *
+ * Unit of power is chosen as Watt since energy models typically calculate
+ * energy as (time in seconds * power in Watt).
+ *
+ */
+class BasicEnergyHarvester: public EnergyHarvester
+{
+public:
+  static TypeId GetTypeId (void);
+
+  BasicEnergyHarvester ();
+
+  /**
+   * \param updateInterval Energy harvesting update interval.
+   *
+   * BasicEnergyHarvester constructor function that sets the interval
+   * between each update of the value of the power harvested by this
+   * energy harvester.
+   */
+  BasicEnergyHarvester (Time updateInterval);
+
+  virtual ~BasicEnergyHarvester ();
+
+  /**
+   * \param updateInterval Energy harvesting update interval.
+   *
+   * This function sets the interval between each update of the value of the
+   * power harvested by this energy harvester.
+   */
+  void SetHarvestedPowerUpdateInterval (Time updateInterval);
+
+  /**
+   * \returns The interval between each update of the harvested power.
+   *
+   * This function returns the interval between each update of the value of the
+   * power harvested by this energy harvester.
+   */
+  Time GetHarvestedPowerUpdateInterval (void) const;
+
+  /**
+   * \param stream Random variable stream number.
+   * \returns The number of stream indices assigned by this model.
+   *
+   * This function sets the stream number to be used by the random variable that
+   * determines the amount of power that can be harvested by this energy harvester.
+   */
+  int64_t AssignStreams (int64_t stream);
+
+private:
+  /// Defined in ns3::Object
+  void DoInitialize (void);
+
+  /// Defined in ns3::Object
+  void DoDispose (void);
+
+  /**
+   * Calculates harvested Power.
+   */
+  void CalculateHarvestedPower (void);
+
+  /**
+   * \returns m_harvestedPower The power currently provided by the Basic Energy Harvester.
+   * Implements DoGetPower defined in EnergyHarvester.
+   */
+  virtual double DoGetPower (void) const;
+
+  /**
+   * This function is called every m_energyHarvestingUpdateInterval in order to
+   * update the amount of power that will be provided by the harvester in the
+   * next interval.
+   */
+  void UpdateHarvestedPower (void);
+
+private:
+
+  Ptr<RandomVariableStream> m_harvestablePower; // Random variable for the harvestable power
+
+  TracedValue<double> m_harvestedPower;         // current harvested power, in Watt
+  TracedValue<double> m_totalEnergyHarvestedJ;  // total harvested energy, in Joule
+
+  EventId m_energyHarvestingUpdateEvent;        // energy harvesting event
+  Time m_lastHarvestingUpdateTime;              // last harvesting time
+  Time m_harvestedPowerUpdateInterval;          // harvestable energy update interval
+
+};
+
+} // namespace ns3
+
+#endif /* defined(BASIC_ENERGY_HARVESTER) */
diff -Naur ns-3.20/src/energy/model/basic-energy-source.cc ns-3.21/src/energy/model/basic-energy-source.cc
--- ns-3.20/src/energy/model/basic-energy-source.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/basic-energy-source.cc	2014-09-17 20:03:14.000000000 -0700
@@ -49,6 +49,16 @@
                    MakeDoubleAccessor (&BasicEnergySource::SetSupplyVoltage,
                                        &BasicEnergySource::GetSupplyVoltage),
                    MakeDoubleChecker<double> ())
+    .AddAttribute ("BasicEnergyLowBatteryThreshold",
+                   "Low battery threshold for basic energy source.",
+                   DoubleValue (0.10), // as a fraction of the initial energy
+                   MakeDoubleAccessor (&BasicEnergySource::m_lowBatteryTh),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("BasicEnergyHighBatteryThreshold",
+                   "High battery threshold for basic energy source.",
+                   DoubleValue (0.15), // as a fraction of the initial energy
+                   MakeDoubleAccessor (&BasicEnergySource::m_highBatteryTh),
+                   MakeDoubleChecker<double> ())
     .AddAttribute ("PeriodicEnergyUpdateInterval",
                    "Time between two consecutive periodic energy updates.",
                    TimeValue (Seconds (1.0)),
@@ -66,6 +76,7 @@
 {
   NS_LOG_FUNCTION (this);
   m_lastUpdateTime = Seconds (0.0);
+  m_depleted = false;
 }
 
 BasicEnergySource::~BasicEnergySource ()
@@ -151,13 +162,19 @@
 
   CalculateRemainingEnergy ();
 
-  if (m_remainingEnergyJ <= 0)
+  m_lastUpdateTime = Simulator::Now ();
+
+  if (!m_depleted && m_remainingEnergyJ <= m_lowBatteryTh * m_initialEnergyJ)
     {
+      m_depleted = true;
       HandleEnergyDrainedEvent ();
-      return; // stop periodic update
     }
 
-  m_lastUpdateTime = Simulator::Now ();
+  if (m_depleted && m_remainingEnergyJ > m_highBatteryTh * m_initialEnergyJ)
+    {
+      m_depleted = false;
+      HandleEnergyRechargedEvent ();
+    }
 
   m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval,
                                              &BasicEnergySource::UpdateEnergySource,
@@ -188,7 +205,18 @@
   NS_LOG_FUNCTION (this);
   NS_LOG_DEBUG ("BasicEnergySource:Energy depleted!");
   NotifyEnergyDrained (); // notify DeviceEnergyModel objects
-  m_remainingEnergyJ = 0; // energy never goes below 0
+  if (m_remainingEnergyJ <= 0)
+    {
+      m_remainingEnergyJ = 0; // energy never goes below 0
+    }
+}
+
+void
+BasicEnergySource::HandleEnergyRechargedEvent (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("BasicEnergySource:Energy recharged!");
+  NotifyEnergyRecharged (); // notify DeviceEnergyModel objects
 }
 
 void
diff -Naur ns-3.20/src/energy/model/basic-energy-source.h ns-3.21/src/energy/model/basic-energy-source.h
--- ns-3.20/src/energy/model/basic-energy-source.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/basic-energy-source.h	2014-09-17 20:03:14.000000000 -0700
@@ -118,6 +118,14 @@
   void HandleEnergyDrainedEvent (void);
 
   /**
+   * Handles the remaining energy exceeding the high threshold after it went
+   * below the low threshold. This function notifies all the energy models
+   * aggregated to the node about the energy being recharged. Each energy model
+   * is then responsible for its own handler.
+   */
+  void HandleEnergyRechargedEvent (void);
+
+  /**
    * Calculates remaining energy. This function uses the total current from all
    * device models to calculate the amount of energy to decrease. The energy to
    * decrease is given by:
@@ -130,6 +138,10 @@
 private:
   double m_initialEnergyJ;                // initial energy, in Joules
   double m_supplyVoltageV;                // supply voltage, in Volts
+  double m_lowBatteryTh;                  // low battery threshold, as a fraction of the initial energy
+  double m_highBatteryTh;                 // high battery threshold, as a fraction of the initial energy
+  bool m_depleted;                        // set to true when the remaining energy goes below the low threshold,
+                                          // set to false again when the remaining energy exceeds the high threshold
   TracedValue<double> m_remainingEnergyJ; // remaining energy, in Joules
   EventId m_energyUpdateEvent;            // energy update event
   Time m_lastUpdateTime;                  // last update time
diff -Naur ns-3.20/src/energy/model/device-energy-model.h ns-3.21/src/energy/model/device-energy-model.h
--- ns-3.20/src/energy/model/device-energy-model.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/device-energy-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -93,6 +93,12 @@
    */
   virtual void HandleEnergyDepletion (void) = 0;
 
+  /**
+   * This function is called by the EnergySource object when energy stored in
+   * the energy source is recharged. Should be implemented by child classes.
+   */
+  virtual void HandleEnergyRecharged (void) = 0;
+
 
 private:
   /**
diff -Naur ns-3.20/src/energy/model/energy-harvester.cc ns-3.21/src/energy/model/energy-harvester.cc
--- ns-3.20/src/energy/model/energy-harvester.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/energy-harvester.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,105 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "energy-harvester.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("EnergyHarvester");
+
+namespace ns3 {
+    
+NS_OBJECT_ENSURE_REGISTERED (EnergyHarvester);
+
+TypeId
+EnergyHarvester::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::EnergyHarvester")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+EnergyHarvester::EnergyHarvester ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+EnergyHarvester::~EnergyHarvester ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+EnergyHarvester::SetNode (Ptr<Node> node)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (node != 0);
+  m_node = node;
+}
+
+Ptr<Node>
+EnergyHarvester::GetNode (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_node;
+}
+
+void
+EnergyHarvester::SetEnergySource (Ptr<EnergySource> source)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (source != 0);
+  m_energySource = source;
+}
+
+Ptr<EnergySource>
+EnergyHarvester::GetEnergySource (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_energySource;
+}
+
+
+double
+EnergyHarvester::GetPower (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return DoGetPower ();
+}
+
+/*
+ * Private function starts here.
+ */
+
+void
+EnergyHarvester::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+double
+EnergyHarvester::DoGetPower (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return 0.0;
+}
+
+}
diff -Naur ns-3.20/src/energy/model/energy-harvester.h ns-3.21/src/energy/model/energy-harvester.h
--- ns-3.20/src/energy/model/energy-harvester.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/energy-harvester.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,137 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#ifndef ENERGY_HARVESTER_H
+#define ENERGY_HARVESTER_H
+
+#include <iostream>
+
+// include from ns-3
+#include "ns3/object.h"
+#include "ns3/ptr.h"
+#include "ns3/type-id.h"
+#include "ns3/node.h"
+#include "ns3/energy-source-container.h"
+
+namespace ns3 {
+    
+class EnergySource;
+
+/**
+ * \defgroup energy Energy Models
+ *
+ */
+
+/**
+ * \ingroup energy
+ *
+ * \brief Energy harvester base class.
+ *
+ *
+ */
+
+class EnergyHarvester : public Object
+{
+public:
+  static TypeId GetTypeId (void);
+
+  EnergyHarvester ();
+
+  virtual ~EnergyHarvester ();
+
+  /**
+   * \brief Sets pointer to node containing this EnergyHarvester.
+   *
+   * \param node Pointer to node containing this EnergyHarvester.
+   */
+  void SetNode (Ptr<Node> node);
+
+  /**
+   * \returns Pointer to node containing this EnergyHarvester.
+   *
+   * When a subclass needs to get access to the underlying node base class to
+   * print the nodeId for example, it can invoke this method.
+   */
+  Ptr<Node> GetNode (void) const;
+
+  /**
+   * \param source Pointer to energy source to which this EnergyHarvester is
+   * installed.
+   *
+   * This function sets the pointer to the energy source connected to the energy
+   * harvester.
+   */
+  void SetEnergySource (Ptr<EnergySource> source);
+
+  /**
+   * \returns source Pointer to energy source connected to the harvester.
+   *
+   * When a subclass needs to get access to the connected energy source,
+   * it can invoke this method.
+   */
+  Ptr<EnergySource> GetEnergySource (void) const;
+
+  /**
+   * \returns power Amount of power currently provided by the harvester.
+   *
+   * This method is called by the energy source connected to the harvester in order
+   * to determine the amount of energy that the harvester provided since last update.
+   */
+  double GetPower (void) const;
+
+private:
+  /**
+   *
+   * Defined in ns3::Object
+   */
+  virtual void DoDispose (void);
+
+  /**
+   * This method is called by the GetPower method and it needs to be implemented by the
+   * subclasses of the energy harvester. It returns the actual amount of power that is
+   * currently provided by the energy harvester.
+   *
+   * This method should be used to connect the logic behind the particular implementation
+   * of the energy harvester with the energy source.
+   */
+  virtual double DoGetPower (void) const;
+
+private:
+  /**
+   * Pointer to node containing this EnergyHarvester. Used by helper class to make
+   * sure energy harvesters are installed onto the corresponding node.
+   */
+  Ptr<Node> m_node;
+
+  /**
+   * Pointer to the Energy Source to which this EnergyHarvester is connected. Used
+   * by helper class to make sure energy harvesters are installed onto the
+   * corresponding energy source.
+   */
+  Ptr<EnergySource> m_energySource;
+
+protected:
+
+};
+    
+} // namespace ns3
+
+#endif /* defined(ENERGY_HARVESTER_H) */
diff -Naur ns-3.20/src/energy/model/energy-source.cc ns-3.21/src/energy/model/energy-source.cc
--- ns-3.20/src/energy/model/energy-source.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/energy-source.cc	2014-09-17 20:03:14.000000000 -0700
@@ -16,6 +16,11 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Sidharth Nabar <snabar@uw.edu>, He Wu <mdzz@u.washington.edu>
+ *
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * Modifications made by: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
  */
 
 #include "energy-source.h"
@@ -130,6 +135,14 @@
       (*i)->Dispose ();
     }
 }
+  
+void
+EnergySource::ConnectEnergyHarvester (Ptr<EnergyHarvester> energyHarvesterPtr)
+{
+  NS_LOG_FUNCTION (this << energyHarvesterPtr);
+  NS_ASSERT (energyHarvesterPtr != 0); // energy harvester must exist
+  m_harvesters.push_back (energyHarvesterPtr);
+}
 
 /*
  * Private function starts here.
@@ -156,6 +169,22 @@
     {
       totalCurrentA += (*i)->GetCurrentA ();
     }
+  
+  double totalHarvestedPower = 0.0;
+  
+  std::vector< Ptr<EnergyHarvester> >::const_iterator harvester;
+  for (harvester = m_harvesters.begin (); harvester != m_harvesters.end (); harvester++)
+  {
+    totalHarvestedPower += (*harvester)->GetPower ();
+  }
+  
+  NS_LOG_DEBUG ("EnergySource("<< GetNode ()->GetId () << "): Total harvested power = " << totalHarvestedPower);
+
+  double currentHarvestersA = totalHarvestedPower / GetSupplyVoltage ();
+  NS_LOG_DEBUG ("EnergySource("<< GetNode ()->GetId () << "): Current from harvesters = " << currentHarvestersA);
+  
+  totalCurrentA -= currentHarvestersA;
+  
   return totalCurrentA;
 }
 
@@ -172,10 +201,23 @@
 }
 
 void
+EnergySource::NotifyEnergyRecharged (void)
+{
+  NS_LOG_FUNCTION (this);
+  // notify all device energy models installed on node
+  DeviceEnergyModelContainer::Iterator i;
+  for (i = m_models.Begin (); i != m_models.End (); i++)
+    {
+      (*i)->HandleEnergyRecharged ();
+    }
+}
+
+void
 EnergySource::BreakDeviceEnergyModelRefCycle (void)
 {
   NS_LOG_FUNCTION (this);
   m_models.Clear ();
+  m_harvesters.clear ();
   m_node = NULL;
 }
 
diff -Naur ns-3.20/src/energy/model/energy-source.h ns-3.21/src/energy/model/energy-source.h
--- ns-3.20/src/energy/model/energy-source.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/energy-source.h	2014-09-17 20:03:14.000000000 -0700
@@ -16,8 +16,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Authors: Sidharth Nabar <snabar@uw.edu>, He Wu <mdzz@u.washington.edu>
+ *
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * Modifications made by: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
  */
 
+
 #ifndef ENERGY_SOURCE_H
 #define ENERGY_SOURCE_H
 
@@ -26,9 +32,10 @@
 #include "ns3/type-id.h"
 #include "ns3/node.h"
 #include "device-energy-model-container.h"  // #include "device-energy-model.h"
+#include "ns3/energy-harvester.h"
 
 namespace ns3 {
-
+  
 /**
  * \defgroup energy Energy Models
  *
@@ -68,6 +75,9 @@
  * energy in different units (eg. kWh), a simple converter function should
  * suffice.
  */
+  
+class EnergyHarvester;
+  
 class EnergySource : public Object
 {
 public:
@@ -158,6 +168,17 @@
    * here. Called by EnergySourceContainer, which is aggregated to the node.
    */
   void DisposeDeviceModels (void);
+  
+  /**
+   * \param energyHarvesterPtr Pointer to energy harvester.
+   *
+   * This function connect an energy harvester to the energy source. After the
+   * execution of this method, the pointer to the energy harvester is appended
+   * to the end of a vector of EnergyHarvester pointer.
+   * Note that the order in which different energy harvester are added to the
+   * energy source does not impact the simulation results.
+   */
+  void ConnectEnergyHarvester (Ptr<EnergyHarvester> energyHarvesterPtr);
 
 
 private:
@@ -180,6 +201,13 @@
    * sure device models are installed onto the corresponding node.
    */
   Ptr<Node> m_node;
+    
+  /**
+  * Vector of EnergyHarvester pointer connected to the same energy source.
+  * This vector is used by the CalculateTotalCurrent method to determine the
+  * total power provided by the energy harvesters connected to the energy source.
+  */
+  std::vector< Ptr<EnergyHarvester> > m_harvesters;
 
 
 protected:
@@ -195,6 +223,12 @@
   void NotifyEnergyDrained (void);
 
   /**
+   * This function notifies all DeviceEnergyModel of energy recharged event. It
+   * is called by the child EnergySource class when energy source is recharged.
+   */
+  void NotifyEnergyRecharged (void);
+
+  /**
    * This function is called to break reference cycle between EnergySource and
    * DeviceEnergyModel. Child of the EnergySource base class must call this
    * function in their implementation of DoDispose to make sure the reference
diff -Naur ns-3.20/src/energy/model/li-ion-energy-source.cc ns-3.21/src/energy/model/li-ion-energy-source.cc
--- ns-3.20/src/energy/model/li-ion-energy-source.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/li-ion-energy-source.cc	2014-09-17 20:03:14.000000000 -0700
@@ -45,6 +45,11 @@
                    MakeDoubleAccessor (&LiIonEnergySource::SetInitialEnergy,
                                        &LiIonEnergySource::GetInitialEnergy),
                    MakeDoubleChecker<double> ())
+    .AddAttribute ("LiIonEnergyLowBatteryThreshold",
+                   "Low battery threshold for LiIon energy source.",
+                   DoubleValue (0.10), // as a fraction of the initial energy
+                   MakeDoubleAccessor (&LiIonEnergySource::m_lowBatteryTh),
+                   MakeDoubleChecker<double> ())
     .AddAttribute ("InitialCellVoltage",
                    "Initial (maximum) voltage of the cell (fully charged).",
                    DoubleValue (4.05), // in Volts
@@ -219,14 +224,14 @@
 
   CalculateRemainingEnergy ();
 
-  if (m_remainingEnergyJ <= 0)
+  m_lastUpdateTime = Simulator::Now ();
+
+  if (m_remainingEnergyJ <= m_lowBatteryTh * m_initialEnergyJ)
     {
       HandleEnergyDrainedEvent ();
       return; // stop periodic update
     }
 
-  m_lastUpdateTime = Simulator::Now ();
-
   m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval,
                                              &LiIonEnergySource::UpdateEnergySource,
                                              this);
@@ -259,7 +264,10 @@
   NS_LOG_DEBUG ("LiIonEnergySource:Energy depleted at node #" <<
                 GetNode ()->GetId ());
   NotifyEnergyDrained (); // notify DeviceEnergyModel objects
-  m_remainingEnergyJ = 0; // energy never goes below 0
+  if (m_remainingEnergyJ <= 0)
+    {
+      m_remainingEnergyJ = 0; // energy never goes below 0
+    }
 }
 
 
diff -Naur ns-3.20/src/energy/model/li-ion-energy-source.h ns-3.21/src/energy/model/li-ion-energy-source.h
--- ns-3.20/src/energy/model/li-ion-energy-source.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/li-ion-energy-source.h	2014-09-17 20:03:14.000000000 -0700
@@ -185,6 +185,7 @@
   TracedValue<double> m_remainingEnergyJ; // remaining energy, in Joules
   double m_drainedCapacity;               // capacity drained from the cell, in Ah
   double m_supplyVoltageV;                // actual voltage of the cell
+  double m_lowBatteryTh;                  // low battery threshold, as a fraction of the initial energy
   EventId m_energyUpdateEvent;            // energy update event
   Time m_lastUpdateTime;                  // last update time
   Time m_energyUpdateInterval;            // energy update interval
diff -Naur ns-3.20/src/energy/model/rv-battery-model.cc ns-3.21/src/energy/model/rv-battery-model.cc
--- ns-3.20/src/energy/model/rv-battery-model.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/rv-battery-model.cc	2014-09-17 20:03:14.000000000 -0700
@@ -44,6 +44,11 @@
                    MakeTimeAccessor (&RvBatteryModel::SetSamplingInterval,
                                      &RvBatteryModel::GetSamplingInterval),
                    MakeTimeChecker ())
+    .AddAttribute ("RvBatteryModelLowBatteryThreshold",
+                   "Low battery threshold.",
+                   DoubleValue (0.10), // as a fraction of the initial energy
+                   MakeDoubleAccessor (&RvBatteryModel::m_lowBatteryTh),
+                   MakeDoubleChecker<double> ())
     .AddAttribute ("RvBatteryModelOpenCircuitVoltage",
                    "RV battery model open circuit voltage.",
                    DoubleValue (4.1),
@@ -164,7 +169,7 @@
     }
 
   // check if battery is dead.
-  if (calculatedAlpha >= m_alpha)
+  if (m_batteryLevel <= m_lowBatteryTh)
     {
       m_lifetime = Simulator::Now ();
       NS_LOG_DEBUG ("RvBatteryModel:Battery is dead!");
diff -Naur ns-3.20/src/energy/model/rv-battery-model.h ns-3.21/src/energy/model/rv-battery-model.h
--- ns-3.20/src/energy/model/rv-battery-model.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/rv-battery-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -246,6 +246,8 @@
    */
   TracedValue<double> m_batteryLevel;
 
+  double m_lowBatteryTh;           // low battery threshold, as a fraction of the initial energy
+
   /**
    * (1 / sampling interval) = sampling frequency
    */
diff -Naur ns-3.20/src/energy/model/simple-device-energy-model.h ns-3.21/src/energy/model/simple-device-energy-model.h
--- ns-3.20/src/energy/model/simple-device-energy-model.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/simple-device-energy-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -95,6 +95,15 @@
   }
 
   /**
+   * \brief Handles energy recharged.
+   *
+   * Not implemented
+   */
+  virtual void HandleEnergyRecharged (void)
+  {
+  }
+
+  /**
    * \param current the current draw of device.
    *
    * Set the actual current draw of the device.
diff -Naur ns-3.20/src/energy/model/wifi-radio-energy-model.cc ns-3.21/src/energy/model/wifi-radio-energy-model.cc
--- ns-3.20/src/energy/model/wifi-radio-energy-model.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/wifi-radio-energy-model.cc	2014-09-17 20:03:14.000000000 -0700
@@ -22,8 +22,10 @@
 #include "ns3/double.h"
 #include "ns3/simulator.h"
 #include "ns3/trace-source-accessor.h"
+#include "ns3/pointer.h"
 #include "energy-source.h"
 #include "wifi-radio-energy-model.h"
+#include "wifi-tx-current-model.h"
 
 NS_LOG_COMPONENT_DEFINE ("WifiRadioEnergyModel");
 
@@ -39,34 +41,44 @@
     .AddConstructor<WifiRadioEnergyModel> ()
     .AddAttribute ("IdleCurrentA",
                    "The default radio Idle current in Ampere.",
-                   DoubleValue (0.000426),  // idle mode = 426uA
+                   DoubleValue (0.273),  // idle mode = 273mA
                    MakeDoubleAccessor (&WifiRadioEnergyModel::SetIdleCurrentA,
                                        &WifiRadioEnergyModel::GetIdleCurrentA),
                    MakeDoubleChecker<double> ())
     .AddAttribute ("CcaBusyCurrentA",
                    "The default radio CCA Busy State current in Ampere.",
-                   DoubleValue (0.000426),  // default to be the same as idle mode
+                   DoubleValue (0.273),  // default to be the same as idle mode
                    MakeDoubleAccessor (&WifiRadioEnergyModel::SetCcaBusyCurrentA,
                                        &WifiRadioEnergyModel::GetCcaBusyCurrentA),
                    MakeDoubleChecker<double> ())
     .AddAttribute ("TxCurrentA",
                    "The radio Tx current in Ampere.",
-                   DoubleValue (0.0174),    // transmit at 0dBm = 17.4mA
+                   DoubleValue (0.380),    // transmit at 0dBm = 380mA
                    MakeDoubleAccessor (&WifiRadioEnergyModel::SetTxCurrentA,
                                        &WifiRadioEnergyModel::GetTxCurrentA),
                    MakeDoubleChecker<double> ())
     .AddAttribute ("RxCurrentA",
                    "The radio Rx current in Ampere.",
-                   DoubleValue (0.0197),    // receive mode = 19.7mA
+                   DoubleValue (0.313),    // receive mode = 313mA
                    MakeDoubleAccessor (&WifiRadioEnergyModel::SetRxCurrentA,
                                        &WifiRadioEnergyModel::GetRxCurrentA),
                    MakeDoubleChecker<double> ())
     .AddAttribute ("SwitchingCurrentA",
                    "The default radio Channel Switch current in Ampere.",
-                   DoubleValue (0.000426),  // default to be the same as idle mode
+                   DoubleValue (0.273),  // default to be the same as idle mode
                    MakeDoubleAccessor (&WifiRadioEnergyModel::SetSwitchingCurrentA,
                                        &WifiRadioEnergyModel::GetSwitchingCurrentA),
                    MakeDoubleChecker<double> ())
+    .AddAttribute ("SleepCurrentA",
+                   "The radio Sleep current in Ampere.",
+                   DoubleValue (0.033),  // sleep mode = 33mA
+                   MakeDoubleAccessor (&WifiRadioEnergyModel::SetSleepCurrentA,
+                                       &WifiRadioEnergyModel::GetSleepCurrentA),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("TxCurrentModel", "A pointer to the attached tx current model.",
+                   PointerValue (),
+                   MakePointerAccessor (&WifiRadioEnergyModel::m_txCurrentModel),
+                   MakePointerChecker<WifiTxCurrentModel> ())
     .AddTraceSource ("TotalEnergyConsumption",
                      "Total energy consumption of the radio device.",
                      MakeTraceSourceAccessor (&WifiRadioEnergyModel::m_totalEnergyConsumption))
@@ -79,11 +91,15 @@
   NS_LOG_FUNCTION (this);
   m_currentState = WifiPhy::IDLE;  // initially IDLE
   m_lastUpdateTime = Seconds (0.0);
+  m_nPendingChangeState = 0;
+  m_isSupersededChangeState = false;
   m_energyDepletionCallback.Nullify ();
   m_source = NULL;
   // set callback for WifiPhy listener
   m_listener = new WifiRadioEnergyModelPhyListener;
   m_listener->SetChangeStateCallback (MakeCallback (&DeviceEnergyModel::ChangeState, this));
+  // set callback for updating the tx current
+  m_listener->SetUpdateTxCurrentCallback (MakeCallback (&WifiRadioEnergyModel::SetTxCurrentFromModel, this));
 }
 
 WifiRadioEnergyModel::~WifiRadioEnergyModel ()
@@ -177,6 +193,19 @@
   m_switchingCurrentA = switchingCurrentA;
 }
 
+double
+WifiRadioEnergyModel::GetSleepCurrentA (void) const
+{
+  NS_LOG_FUNCTION (this);
+  return m_sleepCurrentA;
+}
+
+void
+WifiRadioEnergyModel::SetSleepCurrentA (double sleepCurrentA)
+{
+  NS_LOG_FUNCTION (this << sleepCurrentA);
+  m_sleepCurrentA = sleepCurrentA;
+}
 
 WifiPhy::State
 WifiRadioEnergyModel::GetCurrentState (void) const
@@ -198,6 +227,33 @@
 }
 
 void
+WifiRadioEnergyModel::SetEnergyRechargedCallback (
+  WifiRadioEnergyRechargedCallback callback)
+{
+  NS_LOG_FUNCTION (this);
+  if (callback.IsNull ())
+    {
+      NS_LOG_DEBUG ("WifiRadioEnergyModel:Setting NULL energy recharged callback!");
+    }
+  m_energyRechargedCallback = callback;
+}
+
+void
+WifiRadioEnergyModel::SetTxCurrentModel (Ptr<WifiTxCurrentModel> model)
+{
+  m_txCurrentModel = model;
+}
+
+void
+WifiRadioEnergyModel::SetTxCurrentFromModel (double txPowerDbm)
+{
+  if (m_txCurrentModel)
+    {
+      m_txCurrentA = m_txCurrentModel->CalcTxCurrent (txPowerDbm);
+    }
+}
+
+void
 WifiRadioEnergyModel::ChangeState (int newState)
 {
   NS_LOG_FUNCTION (this << newState);
@@ -225,6 +281,9 @@
     case WifiPhy::SWITCHING:
       energyToDecrease = duration.GetSeconds () * m_switchingCurrentA * supplyVoltage;
       break;
+    case WifiPhy::SLEEP:
+      energyToDecrease = duration.GetSeconds () * m_sleepCurrentA * supplyVoltage;
+      break;
     default:
       NS_FATAL_ERROR ("WifiRadioEnergyModel:Undefined radio state: " << m_currentState);
     }
@@ -235,15 +294,31 @@
   // update last update time stamp
   m_lastUpdateTime = Simulator::Now ();
 
+  m_nPendingChangeState++;
+
   // notify energy source
   m_source->UpdateEnergySource ();
 
-  // update current state & last update time stamp
-  SetWifiRadioState ((WifiPhy::State) newState);
+  // in case the energy source is found to be depleted during the last update, a callback might be
+  // invoked that might cause a change in the Wifi PHY state (e.g., the PHY is put into SLEEP mode).
+  // This in turn causes a new call to this member function, with the consequence that the previous
+  // instance is resumed after the termination of the new instance. In particular, the state set
+  // by the previous instance is erroneously the final state stored in m_currentState. The check below
+  // ensures that previous instances do not change m_currentState.
 
-  // some debug message
-  NS_LOG_DEBUG ("WifiRadioEnergyModel:Total energy consumption is " <<
-                m_totalEnergyConsumption << "J");
+  if (!m_isSupersededChangeState)
+    {
+      // update current state & last update time stamp
+      SetWifiRadioState ((WifiPhy::State) newState);
+
+      // some debug message
+      NS_LOG_DEBUG ("WifiRadioEnergyModel:Total energy consumption is " <<
+                    m_totalEnergyConsumption << "J");
+    }
+
+  m_isSupersededChangeState = (m_nPendingChangeState > 1);
+
+  m_nPendingChangeState--;
 }
 
 void
@@ -258,6 +333,18 @@
     }
 }
 
+void
+WifiRadioEnergyModel::HandleEnergyRecharged (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("WifiRadioEnergyModel:Energy is recharged!");
+  // invoke energy recharged callback, if set.
+  if (!m_energyRechargedCallback.IsNull ())
+    {
+      m_energyRechargedCallback ();
+    }
+}
+
 WifiRadioEnergyModelPhyListener *
 WifiRadioEnergyModel::GetPhyListener (void)
 {
@@ -293,6 +380,8 @@
       return m_rxCurrentA;
     case WifiPhy::SWITCHING:
       return m_switchingCurrentA;
+    case WifiPhy::SLEEP:
+      return m_sleepCurrentA;
     default:
       NS_FATAL_ERROR ("WifiRadioEnergyModel:Undefined radio state:" << m_currentState);
     }
@@ -321,6 +410,9 @@
     case WifiPhy::SWITCHING:
       stateName = "SWITCHING";
       break;
+    case WifiPhy::SLEEP:
+      stateName = "SLEEP";
+      break;
     }
   NS_LOG_DEBUG ("WifiRadioEnergyModel:Switching to state: " << stateName <<
                 " at time = " << Simulator::Now ());
@@ -332,6 +424,7 @@
 {
   NS_LOG_FUNCTION (this);
   m_changeStateCallback.Nullify ();
+  m_updateTxCurrentCallback.Nullify ();
 }
 
 WifiRadioEnergyModelPhyListener::~WifiRadioEnergyModelPhyListener ()
@@ -348,6 +441,14 @@
 }
 
 void
+WifiRadioEnergyModelPhyListener::SetUpdateTxCurrentCallback (UpdateTxCurrentCallback callback)
+{
+  NS_LOG_FUNCTION (this << &callback);
+  NS_ASSERT (!callback.IsNull ());
+  m_updateTxCurrentCallback = callback;
+}
+
+void
 WifiRadioEnergyModelPhyListener::NotifyRxStart (Time duration)
 {
   NS_LOG_FUNCTION (this << duration);
@@ -382,9 +483,14 @@
 }
 
 void
-WifiRadioEnergyModelPhyListener::NotifyTxStart (Time duration)
+WifiRadioEnergyModelPhyListener::NotifyTxStart (Time duration, double txPowerDbm)
 {
-  NS_LOG_FUNCTION (this << duration);
+  NS_LOG_FUNCTION (this << duration << txPowerDbm);
+  if (m_updateTxCurrentCallback.IsNull ())
+    {
+      NS_FATAL_ERROR ("WifiRadioEnergyModelPhyListener:Update tx current callback not set!");
+    }
+  m_updateTxCurrentCallback (txPowerDbm);
   if (m_changeStateCallback.IsNull ())
     {
       NS_FATAL_ERROR ("WifiRadioEnergyModelPhyListener:Change state callback not set!");
@@ -423,6 +529,29 @@
   m_switchToIdleEvent = Simulator::Schedule (duration, &WifiRadioEnergyModelPhyListener::SwitchToIdle, this);
 }
 
+void
+WifiRadioEnergyModelPhyListener::NotifySleep (void)
+{
+  NS_LOG_FUNCTION (this);
+  if (m_changeStateCallback.IsNull ())
+    {
+      NS_FATAL_ERROR ("WifiRadioEnergyModelPhyListener:Change state callback not set!");
+    }
+  m_changeStateCallback (WifiPhy::SLEEP);
+  m_switchToIdleEvent.Cancel ();
+}
+
+void
+WifiRadioEnergyModelPhyListener::NotifyWakeup(void)
+{
+  NS_LOG_FUNCTION (this);
+  if (m_changeStateCallback.IsNull ())
+    {
+      NS_FATAL_ERROR ("WifiRadioEnergyModelPhyListener:Change state callback not set!");
+    }
+  m_changeStateCallback (WifiPhy::IDLE);
+}
+
 /*
  * Private function state here.
  */
diff -Naur ns-3.20/src/energy/model/wifi-radio-energy-model.h ns-3.21/src/energy/model/wifi-radio-energy-model.h
--- ns-3.20/src/energy/model/wifi-radio-energy-model.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/model/wifi-radio-energy-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -29,6 +29,8 @@
 
 namespace ns3 {
 
+class WifiTxCurrentModel;
+
 /**
  * \ingroup energy
  * A WifiPhy listener class for notifying the WifiRadioEnergyModel of Wifi radio
@@ -38,6 +40,11 @@
 class WifiRadioEnergyModelPhyListener : public WifiPhyListener
 {
 public:
+  /**
+   * Callback type for updating the transmit current based on the nominal tx power.
+   */
+  typedef Callback<void, double> UpdateTxCurrentCallback;
+
   WifiRadioEnergyModelPhyListener ();
   virtual ~WifiRadioEnergyModelPhyListener ();
 
@@ -49,6 +56,13 @@
   void SetChangeStateCallback (DeviceEnergyModel::ChangeStateCallback callback);
 
   /**
+   * \brief Sets the update tx current callback.
+   *
+   * \param callback Update tx current callback.
+   */
+  void SetUpdateTxCurrentCallback (UpdateTxCurrentCallback callback);
+
+  /**
    * \brief Switches the WifiRadioEnergyModel to RX state.
    *
    * \param duration the expected duration of the packet reception.
@@ -82,10 +96,11 @@
    * IDLE after TX duration.
    *
    * \param duration the expected transmission duration.
+   * \param txPowerDbm the nominal tx power in dBm
    *
    * Defined in ns3::WifiPhyListener
    */
-  virtual void NotifyTxStart (Time duration);
+  virtual void NotifyTxStart (Time duration, double txPowerDbm);
 
   /**
    * \param duration the expected busy duration.
@@ -101,6 +116,16 @@
    */
   virtual void NotifySwitchingStart (Time duration);
 
+  /**
+   * Defined in ns3::WifiPhyListener
+   */
+  virtual void NotifySleep (void);
+
+  /**
+   * Defined in ns3::WifiPhyListener
+   */
+  virtual void NotifyWakeup (void);
+
 private:
   /**
    * A helper function that makes scheduling m_changeStateCallback possible.
@@ -114,6 +139,12 @@
    */
   DeviceEnergyModel::ChangeStateCallback m_changeStateCallback;
 
+  /**
+   * Callback used to update the tx current stored in WifiRadioEnergyModel based on 
+   * the nominal tx power used to transmit the current frame.
+   */
+  UpdateTxCurrentCallback m_updateTxCurrentCallback;
+
   EventId m_switchToIdleEvent;
 };
 
@@ -138,9 +169,34 @@
  * object. The EnergySource object will query this model for the total current.
  * Then the EnergySource object uses the total current to calculate energy.
  *
- * Default values for power consumption are based on CC2420 radio chip, with
- * supply voltage as 2.5V and currents as 17.4 mA (TX), 18.8 mA (RX), 20 uA
- * (sleep) and 426 uA (idle).
+ * Default values for power consumption are based on measurements reported in:
+ * 
+ * Daniel Halperin, Ben Greenstein, Anmol Sheth, David Wetherall,
+ * "Demystifying 802.11n power consumption", Proceedings of HotPower'10 
+ * 
+ * Power consumption in Watts (single antenna):
+ * 
+ * \f$ P_{tx} = 1.14 \f$ (transmit at 0dBm)
+ * 
+ * \f$ P_{rx} = 0.94 \f$
+ * 
+ * \f$ P_{idle} = 0.82 \f$
+ * 
+ * \f$ P_{sleep} = 0.10 \f$
+ * 
+ * Hence, considering the default supply voltage of 3.0 V for the basic energy
+ * source, the default current values in Ampere are:
+ * 
+ * \f$ I_{tx} = 0.380 \f$
+ * 
+ * \f$ I_{rx} = 0.313 \f$
+ * 
+ * \f$ I_{idle} = 0.273 \f$
+ * 
+ * \f$ I_{sleep} = 0.033 \f$
+ * 
+ * The dependence of the power consumption in transmission mode on the nominal
+ * transmit power can also be achieved through a wifi tx current model.
  *
  */
 class WifiRadioEnergyModel : public DeviceEnergyModel
@@ -151,6 +207,11 @@
    */
   typedef Callback<void> WifiRadioEnergyDepletionCallback;
 
+  /**
+   * Callback type for energy recharged handling.
+   */
+  typedef Callback<void> WifiRadioEnergyRechargedCallback;
+
 public:
   static TypeId GetTypeId (void);
   WifiRadioEnergyModel ();
@@ -183,6 +244,8 @@
   void SetRxCurrentA (double rxCurrentA);
   double GetSwitchingCurrentA (void) const;
   void SetSwitchingCurrentA (double switchingCurrentA);
+  double GetSleepCurrentA (void) const;
+  void SetSleepCurrentA (double sleepCurrentA);
 
   /**
    * \returns Current state.
@@ -197,6 +260,26 @@
   void SetEnergyDepletionCallback (WifiRadioEnergyDepletionCallback callback);
 
   /**
+   * \param callback Callback function.
+   *
+   * Sets callback for energy recharged handling.
+   */
+  void SetEnergyRechargedCallback (WifiRadioEnergyRechargedCallback callback);
+
+  /**
+   * \param model the model used to compute the wifi tx current.
+   */
+  void SetTxCurrentModel (Ptr<WifiTxCurrentModel> model);
+
+  /**
+   * \brief Calls the CalcTxCurrent method of the tx current model to
+   *        compute the tx current based on such model
+   * 
+   * \param txPowerDbm the nominal tx power in dBm
+   */
+  void SetTxCurrentFromModel (double txPowerDbm);
+
+  /**
    * \brief Changes state of the WifiRadioEnergyMode.
    *
    * \param newState New state the wifi radio is in.
@@ -213,6 +296,13 @@
   virtual void HandleEnergyDepletion (void);
 
   /**
+   * \brief Handles energy recharged.
+   *
+   * Implements DeviceEnergyModel::HandleEnergyRecharged
+   */
+  virtual void HandleEnergyRecharged (void);
+
+  /**
    * \returns Pointer to the PHY listener.
    */
   WifiRadioEnergyModelPhyListener * GetPhyListener (void);
@@ -245,6 +335,8 @@
   double m_idleCurrentA;
   double m_ccaBusyCurrentA;
   double m_switchingCurrentA;
+  double m_sleepCurrentA;
+  Ptr<WifiTxCurrentModel> m_txCurrentModel;
 
   // This variable keeps track of the total energy consumed by this model.
   TracedValue<double> m_totalEnergyConsumption;
@@ -253,9 +345,15 @@
   WifiPhy::State m_currentState;  // current state the radio is in
   Time m_lastUpdateTime;          // time stamp of previous energy update
 
+  uint8_t m_nPendingChangeState;
+  bool m_isSupersededChangeState;
+
   // Energy depletion callback
   WifiRadioEnergyDepletionCallback m_energyDepletionCallback;
 
+  // Energy recharged callback
+  WifiRadioEnergyRechargedCallback m_energyRechargedCallback;
+
   // WifiPhy listener
   WifiRadioEnergyModelPhyListener *m_listener;
 };
diff -Naur ns-3.20/src/energy/model/wifi-tx-current-model.cc ns-3.21/src/energy/model/wifi-tx-current-model.cc
--- ns-3.20/src/energy/model/wifi-tx-current-model.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/wifi-tx-current-model.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,142 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' degli Studi di Napoli "Federico II"
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as 
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Stefano Avallone <stefano.avallone@unina.it>
+ */
+
+#include "wifi-tx-current-model.h"
+#include "ns3/log.h"
+#include "ns3/boolean.h"
+#include "ns3/double.h"
+#include "ns3/string.h"
+#include "ns3/pointer.h"
+#include <cmath>
+
+NS_LOG_COMPONENT_DEFINE ("WifiTxCurrentModel");
+
+namespace ns3 {
+
+// ------------------------------------------------------------------------- //
+
+NS_OBJECT_ENSURE_REGISTERED (WifiTxCurrentModel);
+
+TypeId 
+WifiTxCurrentModel::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::WifiTxCurrentModel")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+WifiTxCurrentModel::WifiTxCurrentModel()
+{
+}
+
+WifiTxCurrentModel::~WifiTxCurrentModel()
+{
+}
+
+double
+WifiTxCurrentModel::DbmToW (double dbm)
+{
+  double mW = std::pow (10.0, dbm / 10.0);
+  return mW / 1000.0;
+}
+
+// ------------------------------------------------------------------------- //
+
+NS_OBJECT_ENSURE_REGISTERED (LinearWifiTxCurrentModel);
+
+TypeId 
+LinearWifiTxCurrentModel::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LinearWifiTxCurrentModel")
+    .SetParent<WifiTxCurrentModel> ()
+    .AddConstructor<LinearWifiTxCurrentModel> ()
+    .AddAttribute ("Eta", "The efficiency of the power amplifier.",
+                   DoubleValue (0.10),
+                   MakeDoubleAccessor (&LinearWifiTxCurrentModel::SetEta,
+                                       &LinearWifiTxCurrentModel::GetEta),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("Voltage", "The supply voltage (in Volts).",
+                   DoubleValue (3.0),
+                   MakeDoubleAccessor (&LinearWifiTxCurrentModel::SetVoltage,
+                                       &LinearWifiTxCurrentModel::GetVoltage),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("IdleCurrent", "The current in the IDLE state (in Watts).",
+                   DoubleValue (0.273333),
+                   MakeDoubleAccessor (&LinearWifiTxCurrentModel::SetIdleCurrent,
+                                       &LinearWifiTxCurrentModel::GetIdleCurrent),
+                   MakeDoubleChecker<double> ())
+  ;
+  return tid;
+}
+
+LinearWifiTxCurrentModel::LinearWifiTxCurrentModel ()
+{
+}
+
+LinearWifiTxCurrentModel::~LinearWifiTxCurrentModel()
+{
+}
+
+void
+LinearWifiTxCurrentModel::SetEta (double eta)
+{
+  m_eta = eta;
+}
+
+void
+LinearWifiTxCurrentModel::SetVoltage (double voltage)
+{
+  m_voltage = voltage;
+}
+
+void
+LinearWifiTxCurrentModel::SetIdleCurrent (double idleCurrent)
+{
+  m_idleCurrent = idleCurrent;
+}
+
+double
+LinearWifiTxCurrentModel::GetEta (void) const
+{
+  return m_eta;
+}
+
+double
+LinearWifiTxCurrentModel::GetVoltage (void) const
+{
+  return m_voltage;
+}
+
+double
+LinearWifiTxCurrentModel::GetIdleCurrent (void) const
+{
+  return m_idleCurrent;
+}
+
+double
+LinearWifiTxCurrentModel::CalcTxCurrent (double txPowerDbm) const
+{
+  return DbmToW (txPowerDbm) / (m_voltage * m_eta) + m_idleCurrent;
+}
+
+// ------------------------------------------------------------------------- //
+
+} // namespace ns3
diff -Naur ns-3.20/src/energy/model/wifi-tx-current-model.h ns-3.21/src/energy/model/wifi-tx-current-model.h
--- ns-3.20/src/energy/model/wifi-tx-current-model.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/model/wifi-tx-current-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,142 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' degli Studi di Napoli "Federico II"
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as 
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Stefano Avallone <stefano.avallone@unina.it>
+ */
+
+#ifndef WIFI_TX_CURRENT_MODEL_H
+#define WIFI_TX_CURRENT_MODEL_H
+
+#include "ns3/object.h"
+
+namespace ns3 {
+
+/**
+ * \ingroup energy
+ * 
+ * \brief Modelize the transmit current as a function of the transmit power and mode
+ *
+ */
+class WifiTxCurrentModel : public Object
+{
+public:
+  static TypeId GetTypeId (void);
+
+  WifiTxCurrentModel ();
+  virtual ~WifiTxCurrentModel ();
+
+  /**
+   * \param txPowerDbm the nominal tx power in dBm
+   * \returns the transmit current (in Ampere)
+   */
+  virtual double CalcTxCurrent (double txPowerDbm) const = 0;
+
+  /**
+   * Convert from dBm to Watts.
+   *
+   * \param dbm the power in dBm
+   * \return the equivalent Watts for the given dBm
+   */
+  static double DbmToW (double dbm);
+};
+
+/**
+ * \ingroup energy
+ *
+ * \brief a linear model of the Wifi transmit current
+ *
+ * This model assumes that the transmit current is a linear function
+ * of the nominal transmit power used to send the frame.
+ * In particular, the power absorbed during the transmission of a frame \f$ W_{tx} \f$
+ * is given by the power absorbed by the power amplifier \f$ W_{pa} \f$ plus the power
+ * absorbed by the RF subsystem. The latter is assumed to be the same as the power
+ * absorbed in the IDLE state \f$ W_{idle} \f$.
+ * 
+ * The efficiency \f$ \eta \f$ of the power amplifier is given by 
+ * \f$ \eta = \frac{P_{tx}}{W_{pa}} \f$, where \f$ P_{tx} \f$ is the output power, i.e.,
+ * the nominal transmit power. Hence, \f$ W_{pa} = \frac{P_{tx}}{\eta} \f$
+ * 
+ * It turns out that \f$ W_{tx} = \frac{P_{tx}}{\eta} + W_{idle} \f$. By dividing both
+ * sides by the supply voltage \f$ V \f$: \f$ I_{tx} = \frac{P_{tx}}{V \cdot \eta} + I_{idle} \f$,
+ * where \f$ I_{tx} \f$ and \f$ I_{idle} \f$ are, respectively, the transmit current and
+ * the idle current.
+ * 
+ * For more information, refer to:
+ * Francesco Ivan Di Piazza, Stefano Mangione, and Ilenia Tinnirello.
+ * "On the Effects of Transmit Power Control on the Energy Consumption of WiFi Network Cards",
+ * Proceedings of ICST QShine 2009, pp. 463--475
+ * 
+ * If the tx current corresponding to a given nominal transmit power is known, the efficiency
+ * of the power amplifier is given by the above formula:
+ * \f$ \eta = \frac{P_{tx}}{(I_{tx}-I_{idle})\cdot V} \f$
+ * 
+ */
+class LinearWifiTxCurrentModel : public WifiTxCurrentModel
+{
+public:
+  static TypeId GetTypeId (void);
+
+  LinearWifiTxCurrentModel ();
+  virtual ~LinearWifiTxCurrentModel ();
+  
+  /**
+   * \param eta (dimension-less)
+   *
+   * Set the power amplifier efficiency.
+   */
+  void SetEta (double eta);
+
+  /**
+   * \param voltage (Volts)
+   *
+   * Set the supply voltage.
+   */
+  void SetVoltage (double voltage);
+
+  /**
+   * \param idleCurrent (Ampere)
+   *
+   * Set the current in the IDLE state.
+   */
+  void SetIdleCurrent (double idleCurrent);
+
+  /**
+   * \return the power amplifier efficiency.
+   */
+  double GetEta (void) const;
+
+  /**
+   * \return the supply voltage.
+   */
+  double GetVoltage (void) const;
+
+  /**
+   * \return the current in the IDLE state.
+   */
+  double GetIdleCurrent (void) const;
+
+  double CalcTxCurrent (double txPowerDbm) const;
+
+private:
+  double m_eta;
+  double m_voltage;
+  double m_idleCurrent;
+};
+
+} // namespace ns3
+
+#endif /* WIFI_TX_CURRENT_MODEL_H */
diff -Naur ns-3.20/src/energy/test/basic-energy-harvester-test.cc ns-3.21/src/energy/test/basic-energy-harvester-test.cc
--- ns-3.20/src/energy/test/basic-energy-harvester-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/energy/test/basic-energy-harvester-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,134 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
+ * University of Rochester, Rochester, NY, USA.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
+ */
+
+#include "ns3/log.h"
+#include "ns3/test.h"
+#include "ns3/node.h"
+#include "ns3/simulator.h"
+#include "ns3/double.h"
+#include "ns3/config.h"
+#include "ns3/string.h"
+#include "ns3/basic-energy-harvester.h"
+#include "ns3/basic-energy-source.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("BasicEnergyHarvesterTestSuite");
+
+class BasicEnergyHarvesterTestCase : public TestCase
+{
+public:
+	BasicEnergyHarvesterTestCase ();
+  ~BasicEnergyHarvesterTestCase ();
+
+  void DoRun (void);
+
+  double m_timeS;     // in seconds
+  double m_tolerance; // tolerance for energy estimation
+
+  ObjectFactory m_energySource;
+  ObjectFactory m_energyHarvester;
+
+};
+
+BasicEnergyHarvesterTestCase::BasicEnergyHarvesterTestCase ()
+  : TestCase ("Basic Energy Harvester test case")
+{
+	m_timeS = 15; // harvest energy for 15 seconds
+	m_tolerance = 1.0e-13;  //
+}
+
+BasicEnergyHarvesterTestCase::~BasicEnergyHarvesterTestCase ()
+{
+}
+
+void
+BasicEnergyHarvesterTestCase::DoRun ()
+{
+	// set types
+	m_energySource.SetTypeId ("ns3::BasicEnergySource");
+	m_energyHarvester.SetTypeId ("ns3::BasicEnergyHarvester");
+  // create node
+  Ptr<Node> node = CreateObject<Node> ();
+
+  // create Energy Source
+  Ptr<BasicEnergySource> source = m_energySource.Create<BasicEnergySource> ();
+  // aggregate Energy Source to the node
+  node->AggregateObject (source);
+
+  //create energy harvester
+  Ptr<BasicEnergyHarvester> harvester = m_energyHarvester.Create<BasicEnergyHarvester> ();
+  // Set the Energy Harvesting update interval to a value grater than the
+  // simulation duration, so that the power provided by the harvester is constant
+  harvester->SetHarvestedPowerUpdateInterval (Seconds (m_timeS + 1.0));
+	// Connect the Basic Energy Harvester to the Energy Source
+	source->ConnectEnergyHarvester (harvester);
+	harvester->SetNode (node);
+	harvester->SetEnergySource (source);
+
+  Time now = Simulator::Now ();
+
+  /*
+	 * The energy harvester will recharge the energy source for m_timeS seconds.
+	 */
+
+  // Calculate remaining energy at simulation stop time
+  Simulator::Schedule (Seconds (m_timeS),
+                       &BasicEnergySource::UpdateEnergySource, source);
+
+  double timeDelta = 0.000000001; // 1 nanosecond
+  // run simulation; stop just after last scheduled event
+  Simulator::Stop (Seconds (m_timeS + timeDelta));
+  Simulator::Run ();
+
+  // calculate energy harvested
+  double estRemainingEnergy = source->GetInitialEnergy ();
+  // energy = power * time
+  estRemainingEnergy += harvester->GetPower () * m_timeS;
+
+  // obtain remaining energy from source
+	double remainingEnergy = source->GetRemainingEnergy ();
+	NS_LOG_DEBUG ("Remaining energy is " << remainingEnergy);
+	NS_LOG_DEBUG ("Estimated remaining energy is " << estRemainingEnergy);
+	NS_LOG_DEBUG ("Difference is " << estRemainingEnergy - remainingEnergy);
+
+	Simulator::Destroy ();
+
+	// check remaining energy
+  NS_TEST_ASSERT_MSG_EQ_TOL (remainingEnergy, estRemainingEnergy, m_tolerance,
+                             "Incorrect Remaining energy!");
+
+}
+
+class BasicEnergyHarvesterTestSuite : public TestSuite
+{
+public:
+  BasicEnergyHarvesterTestSuite ();
+};
+
+BasicEnergyHarvesterTestSuite::BasicEnergyHarvesterTestSuite ()
+  : TestSuite ("basic-energy-harvester", UNIT)
+{
+  AddTestCase (new BasicEnergyHarvesterTestCase, TestCase::QUICK);
+}
+
+// create an instance of the test suite
+static BasicEnergyHarvesterTestSuite g_basicEnergyHarvesterTestSuite;
diff -Naur ns-3.20/src/energy/test/basic-energy-model-test.cc ns-3.21/src/energy/test/basic-energy-model-test.cc
--- ns-3.20/src/energy/test/basic-energy-model-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/test/basic-energy-model-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -93,6 +93,7 @@
   NS_TEST_ASSERT_MSG_EQ (StateSwitchTest (WifiPhy::TX), false, "Problem with state switch test (WifiPhy tx).");
   NS_TEST_ASSERT_MSG_EQ (StateSwitchTest (WifiPhy::RX), false, "Problem with state switch test (WifiPhy rx).");
   NS_TEST_ASSERT_MSG_EQ (StateSwitchTest (WifiPhy::SWITCHING), false, "Problem with state switch test (WifiPhy switching).");
+  NS_TEST_ASSERT_MSG_EQ (StateSwitchTest (WifiPhy::SLEEP), false, "Problem with state switch test (WifiPhy sleep).");
 }
 
 bool
@@ -178,6 +179,9 @@
     case WifiPhy::SWITCHING:
       current = devModel->GetSwitchingCurrentA ();
       break;
+    case WifiPhy::SLEEP:
+      current = devModel->GetSleepCurrentA ();
+      break;
     default:
       NS_FATAL_ERROR ("Undefined radio state: " << state);
       break;
diff -Naur ns-3.20/src/energy/test/rv-battery-model-test.cc ns-3.21/src/energy/test/rv-battery-model-test.cc
--- ns-3.20/src/energy/test/rv-battery-model-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/test/rv-battery-model-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -740,6 +740,7 @@
   // Set alpha & beta values
   rvModelHelper.Set ("RvBatteryModelAlphaValue", DoubleValue (m_alpha));
   rvModelHelper.Set ("RvBatteryModelBetaValue", DoubleValue (m_beta));
+  rvModelHelper.Set ("RvBatteryModelLowBatteryThreshold", DoubleValue (0.0));
   // install source
   EnergySourceContainer sources = rvModelHelper.Install (c);
   // device energy model
@@ -827,6 +828,7 @@
   // Set alpha & beta values
   rvModelHelper.Set ("RvBatteryModelAlphaValue", DoubleValue (m_alpha));
   rvModelHelper.Set ("RvBatteryModelBetaValue", DoubleValue (m_beta));
+  rvModelHelper.Set ("RvBatteryModelLowBatteryThreshold", DoubleValue (0.0));
   // install source
   EnergySourceContainer sources = rvModelHelper.Install (c);
   // device energy model
diff -Naur ns-3.20/src/energy/wscript ns-3.21/src/energy/wscript
--- ns-3.20/src/energy/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/energy/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_module('energy', ['internet', 'wifi'])
+    obj = bld.create_ns3_module('energy', ['wifi'])
     obj.source = [
         'model/wifi-radio-energy-model.cc',
         'model/energy-source.cc',
@@ -11,11 +11,17 @@
         'model/device-energy-model.cc',
         'model/device-energy-model-container.cc',
         'model/simple-device-energy-model.cc',
+        'model/energy-harvester.cc',
+        'model/basic-energy-harvester.cc',
+        'model/wifi-tx-current-model.cc',
         'helper/energy-source-container.cc',
         'helper/energy-model-helper.cc',
         'helper/basic-energy-source-helper.cc',
         'helper/wifi-radio-energy-model-helper.cc',
         'helper/rv-battery-model-helper.cc',
+        'helper/energy-harvester-container.cc',
+        'helper/energy-harvester-helper.cc',
+        'helper/basic-energy-harvester-helper.cc',
         ]
 
     obj_test = bld.create_ns3_module_test_library('energy')
@@ -23,6 +29,7 @@
         'test/basic-energy-model-test.cc',
         'test/rv-battery-model-test.cc',
         'test/li-ion-energy-source-test.cc',
+        'test/basic-energy-harvester-test.cc',
         ]
 
     headers = bld(features='ns3header')
@@ -36,11 +43,17 @@
         'model/device-energy-model.h',
         'model/device-energy-model-container.h',
         'model/simple-device-energy-model.h',
+        'model/energy-harvester.h',
+        'model/basic-energy-harvester.h',
+        'model/wifi-tx-current-model.h',
         'helper/energy-source-container.h',
         'helper/energy-model-helper.h',
         'helper/basic-energy-source-helper.h',
         'helper/wifi-radio-energy-model-helper.h',
         'helper/rv-battery-model-helper.h',
+        'helper/energy-harvester-container.h',
+        'helper/energy-harvester-helper.h',
+        'helper/basic-energy-harvester-helper.h',
         ]
 
     if (bld.env['ENABLE_EXAMPLES']):
diff -Naur ns-3.20/src/fd-net-device/bindings/modulegen__gcc_ILP32.py ns-3.21/src/fd-net-device/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/fd-net-device/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/fd-net-device/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3134,10 +3134,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3148,25 +3148,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3283,20 +3283,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/fd-net-device/bindings/modulegen__gcc_LP64.py ns-3.21/src/fd-net-device/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/fd-net-device/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/fd-net-device/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3134,10 +3134,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3148,25 +3148,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3283,20 +3283,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/fd-net-device/helper/planetlab-tap-creator.cc ns-3.21/src/fd-net-device/helper/planetlab-tap-creator.cc
--- ns-3.20/src/fd-net-device/helper/planetlab-tap-creator.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/fd-net-device/helper/planetlab-tap-creator.cc	2014-09-17 20:03:14.000000000 -0700
@@ -142,7 +142,6 @@
   FILE *in;
   FILE *out;
   char errbuff[4096];
-  int nbytes;
 
   memset(errbuff, 0, 4096);
 
@@ -166,7 +165,7 @@
   // close pipe to indicate end parameter passing and flush the fifo
   fclose (in);
 
-  nbytes = fread((void*)errbuff, 4096, 1, out);
+  fread((void*)errbuff, 4096, 1, out);
  
   // the error buffer will not be empty if we read an error
   ABORT_IF (strcmp(errbuff, "") != 0, errbuff, 0);
diff -Naur ns-3.20/src/flow-monitor/bindings/modulegen__gcc_ILP32.py ns-3.21/src/flow-monitor/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/flow-monitor/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/flow-monitor/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3793,10 +3793,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3807,25 +3807,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3942,20 +3942,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/flow-monitor/bindings/modulegen__gcc_LP64.py ns-3.21/src/flow-monitor/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/flow-monitor/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/flow-monitor/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3793,10 +3793,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3807,25 +3807,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3942,20 +3942,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/flow-monitor/model/histogram.h ns-3.21/src/flow-monitor/model/histogram.h
--- ns-3.20/src/flow-monitor/model/histogram.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/flow-monitor/model/histogram.h	2014-09-17 20:03:14.000000000 -0700
@@ -38,7 +38,7 @@
  *
  * \todo Add support for negative data.
  *
- * \todo Add method(s) to estimate \f$N\f$, \f$\mu\f$, and \f$s^2\f$ from the histogram,
+ * \todo Add method(s) to estimate parameters from the histogram,
  * see http://www.dspguide.com/ch2/4.htm
  *
  */
diff -Naur ns-3.20/src/flow-monitor/model/ipv4-flow-probe.cc ns-3.21/src/flow-monitor/model/ipv4-flow-probe.cc
--- ns-3.20/src/flow-monitor/model/ipv4-flow-probe.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/flow-monitor/model/ipv4-flow-probe.cc	2014-09-17 20:03:14.000000000 -0700
@@ -260,17 +260,15 @@
       // tag the packet with the flow id and packet id, so that the packet can be identified even
       // when Ipv4Header is not accessible at some non-IPv4 protocol layer
       Ipv4FlowProbeTag fTag (flowId, packetId, size);
-      ipPayload->AddPacketTag (fTag);
+      ipPayload->AddByteTag (fTag);
     }
 }
 
 void
 Ipv4FlowProbe::ForwardLogger (const Ipv4Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  // peek the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
   Ipv4FlowProbeTag fTag;
-
-  bool found = ipPayload->PeekPacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -286,11 +284,8 @@
 void
 Ipv4FlowProbe::ForwardUpLogger (const Ipv4Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
   Ipv4FlowProbeTag fTag;
-
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -325,11 +320,8 @@
     }
 #endif
 
-  // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
   Ipv4FlowProbeTag fTag;
-
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -383,11 +375,9 @@
 void 
 Ipv4FlowProbe::QueueDropLogger (Ptr<const Packet> ipPayload)
 {
-  // remove the tags that are added by Ipv4FlowProbe::SendOutgoingLogger ()
   Ipv4FlowProbeTag fTag;
+  bool tagFound = ipPayload->FindFirstMatchingByteTag (fTag);
 
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool tagFound = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
   if (!tagFound)
     {
       return;
diff -Naur ns-3.20/src/flow-monitor/model/ipv6-flow-probe.cc ns-3.21/src/flow-monitor/model/ipv6-flow-probe.cc
--- ns-3.20/src/flow-monitor/model/ipv6-flow-probe.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/flow-monitor/model/ipv6-flow-probe.cc	2014-09-17 20:03:14.000000000 -0700
@@ -254,17 +254,15 @@
       // tag the packet with the flow id and packet id, so that the packet can be identified even
       // when Ipv6Header is not accessible at some non-IPv6 protocol layer
       Ipv6FlowProbeTag fTag (flowId, packetId, size);
-      ipPayload->AddPacketTag (fTag);
+      ipPayload->AddByteTag (fTag);
     }
 }
 
 void
 Ipv6FlowProbe::ForwardLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  // peek the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
   Ipv6FlowProbeTag fTag;
-
-  bool found = ipPayload->PeekPacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -280,11 +278,8 @@
 void
 Ipv6FlowProbe::ForwardUpLogger (const Ipv6Header &ipHeader, Ptr<const Packet> ipPayload, uint32_t interface)
 {
-  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
   Ipv6FlowProbeTag fTag;
-
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -319,11 +314,8 @@
     }
 #endif
 
-  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
   Ipv6FlowProbeTag fTag;
-
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool found = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
+  bool found = ipPayload->FindFirstMatchingByteTag (fTag);
 
   if (found)
     {
@@ -384,11 +376,9 @@
 void 
 Ipv6FlowProbe::QueueDropLogger (Ptr<const Packet> ipPayload)
 {
-  // remove the tags that are added by Ipv6FlowProbe::SendOutgoingLogger ()
   Ipv6FlowProbeTag fTag;
+  bool tagFound = ipPayload->FindFirstMatchingByteTag (fTag);
 
-  // ConstCast: see http://www.nsnam.org/bugzilla/show_bug.cgi?id=904
-  bool tagFound = ConstCast<Packet> (ipPayload)->RemovePacketTag (fTag);
   if (!tagFound)
     {
       return;
diff -Naur ns-3.20/src/internet/bindings/modulegen__gcc_ILP32.py ns-3.21/src/internet/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/internet/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -242,6 +242,8 @@
     module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
     ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
     module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool> [class]
+    module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['bool'])
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## traced-value.h (module 'core'): ns3::TracedValue<ns3::SequenceNumber<unsigned int, int> > [class]
@@ -368,6 +370,10 @@
     module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
     ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper [class]
     module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## queue.h (module 'network'): ns3::Queue [class]
+    module.add_class('Queue', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## queue.h (module 'network'): ns3::Queue::QueueMode [enumeration]
+    module.add_enum('QueueMode', ['QUEUE_MODE_PACKETS', 'QUEUE_MODE_BYTES'], outer_class=root_module['ns3::Queue'], import_from_module='ns.network')
     ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
     module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader [class]
@@ -434,6 +440,12 @@
     module.add_class('TcpHeader', parent=root_module['ns3::Header'])
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::Flags_t [enumeration]
     module.add_enum('Flags_t', ['NONE', 'FIN', 'SYN', 'RST', 'PSH', 'ACK', 'URG', 'ECE', 'CWR'], outer_class=root_module['ns3::TcpHeader'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption [class]
+    module.add_class('TcpOption', parent=root_module['ns3::Object'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::Kind [enumeration]
+    module.add_enum('Kind', ['END', 'NOP', 'MSS', 'WINSCALE', 'TS', 'UNKNOWN'], outer_class=root_module['ns3::TcpOption'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown [class]
+    module.add_class('TcpOptionUnknown', parent=root_module['ns3::TcpOption'])
     ## tcp-rx-buffer.h (module 'internet'): ns3::TcpRxBuffer [class]
     module.add_class('TcpRxBuffer', parent=root_module['ns3::Object'])
     ## tcp-socket.h (module 'internet'): ns3::TcpSocket [class]
@@ -510,6 +522,8 @@
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## channel.h (module 'network'): ns3::Channel [class]
     module.add_class('Channel', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue [class]
+    module.add_class('CoDelQueue', parent=root_module['ns3::Queue'])
     ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class]
     module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## data-collection-object.h (module 'stats'): ns3::DataCollectionObject [class]
@@ -666,6 +680,10 @@
     module.add_class('RipNg', parent=root_module['ns3::Ipv6RoutingProtocol'])
     ## ripng.h (module 'internet'): ns3::RipNg::SplitHorizonType_e [enumeration]
     module.add_enum('SplitHorizonType_e', ['NO_SPLIT_HORIZON', 'SPLIT_HORIZON', 'POISON_REVERSE'], outer_class=root_module['ns3::RipNg'])
+    ## string.h (module 'core'): ns3::StringChecker [class]
+    module.add_class('StringChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## string.h (module 'core'): ns3::StringValue [class]
+    module.add_class('StringValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol [class]
     module.add_class('TcpL4Protocol', parent=root_module['ns3::IpL4Protocol'])
     ## tcp-newreno.h (module 'internet'): ns3::TcpNewReno [class]
@@ -872,6 +890,7 @@
     register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TracedValue__Bool_methods(root_module, root_module['ns3::TracedValue< bool >'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TracedValue__Ns3SequenceNumber__lt__unsigned_int__int__gt___methods(root_module, root_module['ns3::TracedValue< ns3::SequenceNumber<unsigned int, int> >'])
     register_Ns3TracedValue__Ns3TcpStates_t_methods(root_module, root_module['ns3::TracedValue< ns3::TcpStates_t >'])
@@ -921,6 +940,7 @@
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
+    register_Ns3Queue_methods(root_module, root_module['ns3::Queue'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
     register_Ns3RipNgHeader_methods(root_module, root_module['ns3::RipNgHeader'])
     register_Ns3RipNgRte_methods(root_module, root_module['ns3::RipNgRte'])
@@ -950,6 +970,8 @@
     register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
     register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
     register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader'])
+    register_Ns3TcpOption_methods(root_module, root_module['ns3::TcpOption'])
+    register_Ns3TcpOptionUnknown_methods(root_module, root_module['ns3::TcpOptionUnknown'])
     register_Ns3TcpRxBuffer_methods(root_module, root_module['ns3::TcpRxBuffer'])
     register_Ns3TcpSocket_methods(root_module, root_module['ns3::TcpSocket'])
     register_Ns3TcpSocketBase_methods(root_module, root_module['ns3::TcpSocketBase'])
@@ -982,6 +1004,7 @@
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
+    register_Ns3CoDelQueue_methods(root_module, root_module['ns3::CoDelQueue'])
     register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable'])
     register_Ns3DataCollectionObject_methods(root_module, root_module['ns3::DataCollectionObject'])
     register_Ns3DeterministicRandomVariable_methods(root_module, root_module['ns3::DeterministicRandomVariable'])
@@ -1055,6 +1078,8 @@
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3Probe_methods(root_module, root_module['ns3::Probe'])
     register_Ns3RipNg_methods(root_module, root_module['ns3::RipNg'])
+    register_Ns3StringChecker_methods(root_module, root_module['ns3::StringChecker'])
+    register_Ns3StringValue_methods(root_module, root_module['ns3::StringValue'])
     register_Ns3TcpL4Protocol_methods(root_module, root_module['ns3::TcpL4Protocol'])
     register_Ns3TcpNewReno_methods(root_module, root_module['ns3::TcpNewReno'])
     register_Ns3TcpReno_methods(root_module, root_module['ns3::TcpReno'])
@@ -4884,6 +4909,40 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3TracedValue__Bool_methods(root_module, cls):
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue() [constructor]
+    cls.add_constructor([])
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue(ns3::TracedValue<bool> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TracedValue< bool > const &', 'o')])
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue(bool const & v) [constructor]
+    cls.add_constructor([param('bool const &', 'v')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::ConnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::DisconnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): bool ns3::TracedValue<bool>::Get() const [member function]
+    cls.add_method('Get', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Set(bool const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('bool const &', 'v')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -7578,6 +7637,94 @@
                    [])
     return
 
+def register_Ns3Queue_methods(root_module, cls):
+    ## queue.h (module 'network'): ns3::Queue::Queue(ns3::Queue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Queue const &', 'arg0')])
+    ## queue.h (module 'network'): ns3::Queue::Queue() [constructor]
+    cls.add_constructor([])
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Queue::Dequeue() [member function]
+    cls.add_method('Dequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
+    ## queue.h (module 'network'): void ns3::Queue::DequeueAll() [member function]
+    cls.add_method('DequeueAll', 
+                   'void', 
+                   [])
+    ## queue.h (module 'network'): bool ns3::Queue::Enqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('Enqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetNBytes() const [member function]
+    cls.add_method('GetNBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetNPackets() const [member function]
+    cls.add_method('GetNPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalDroppedBytes() const [member function]
+    cls.add_method('GetTotalDroppedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalDroppedPackets() const [member function]
+    cls.add_method('GetTotalDroppedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalReceivedBytes() const [member function]
+    cls.add_method('GetTotalReceivedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalReceivedPackets() const [member function]
+    cls.add_method('GetTotalReceivedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): static ns3::TypeId ns3::Queue::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## queue.h (module 'network'): bool ns3::Queue::IsEmpty() const [member function]
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet const> ns3::Queue::Peek() const [member function]
+    cls.add_method('Peek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): void ns3::Queue::ResetStatistics() [member function]
+    cls.add_method('ResetStatistics', 
+                   'void', 
+                   [])
+    ## queue.h (module 'network'): void ns3::Queue::Drop(ns3::Ptr<ns3::Packet> packet) [member function]
+    cls.add_method('Drop', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet')], 
+                   visibility='protected')
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Queue::DoDequeue() [member function]
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## queue.h (module 'network'): bool ns3::Queue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet const> ns3::Queue::DoPeek() const [member function]
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3RandomVariableStream_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::RandomVariableStream::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -7622,6 +7769,7 @@
     return
 
 def register_Ns3RipNgHeader_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader(ns3::RipNgHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RipNgHeader const &', 'arg0')])
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader() [constructor]
@@ -7686,6 +7834,7 @@
     return
 
 def register_Ns3RipNgRte_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte(ns3::RipNgRte const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RipNgRte const &', 'arg0')])
     ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte() [constructor]
@@ -7763,11 +7912,6 @@
     cls.add_constructor([])
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator::RttEstimator(ns3::RttEstimator const & r) [copy constructor]
     cls.add_constructor([param('ns3::RttEstimator const &', 'r')])
-    ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::AckSeq(ns3::SequenceNumber32 ackSeq) [member function]
-    cls.add_method('AckSeq', 
-                   'ns3::Time', 
-                   [param('ns3::SequenceNumber32', 'ackSeq')], 
-                   is_virtual=True)
     ## rtt-estimator.h (module 'internet'): void ns3::RttEstimator::ClearSent() [member function]
     cls.add_method('ClearSent', 
                    'void', 
@@ -7778,6 +7922,11 @@
                    'ns3::Ptr< ns3::RttEstimator >', 
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::EstimateRttFromSeq(ns3::SequenceNumber32 ackSeq) [member function]
+    cls.add_method('EstimateRttFromSeq', 
+                   'ns3::Time', 
+                   [param('ns3::SequenceNumber32', 'ackSeq')], 
+                   is_virtual=True)
     ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::GetCurrentEstimate() const [member function]
     cls.add_method('GetCurrentEstimate', 
                    'ns3::Time', 
@@ -8716,10 +8865,15 @@
     return
 
 def register_Ns3TcpHeader_methods(root_module, cls):
+    cls.add_binary_comparison_operator('==')
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::TcpHeader(ns3::TcpHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TcpHeader const &', 'arg0')])
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::TcpHeader() [constructor]
     cls.add_constructor([])
+    ## tcp-header.h (module 'internet'): bool ns3::TcpHeader::AppendOption(ns3::Ptr<ns3::TcpOption> option) [member function]
+    cls.add_method('AppendOption', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::TcpOption >', 'option')])
     ## tcp-header.h (module 'internet'): uint32_t ns3::TcpHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
     cls.add_method('Deserialize', 
                    'uint32_t', 
@@ -8754,6 +8908,11 @@
                    'uint8_t', 
                    [], 
                    is_const=True)
+    ## tcp-header.h (module 'internet'): ns3::Ptr<ns3::TcpOption> ns3::TcpHeader::GetOption(uint8_t kind) const [member function]
+    cls.add_method('GetOption', 
+                   'ns3::Ptr< ns3::TcpOption >', 
+                   [param('uint8_t', 'kind')], 
+                   is_const=True)
     ## tcp-header.h (module 'internet'): ns3::SequenceNumber32 ns3::TcpHeader::GetSequenceNumber() const [member function]
     cls.add_method('GetSequenceNumber', 
                    'ns3::SequenceNumber32', 
@@ -8784,6 +8943,11 @@
                    'uint16_t', 
                    [], 
                    is_const=True)
+    ## tcp-header.h (module 'internet'): bool ns3::TcpHeader::HasOption(uint8_t kind) const [member function]
+    cls.add_method('HasOption', 
+                   'bool', 
+                   [param('uint8_t', 'kind')], 
+                   is_const=True)
     ## tcp-header.h (module 'internet'): void ns3::TcpHeader::InitializeChecksum(ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol) [member function]
     cls.add_method('InitializeChecksum', 
                    'void', 
@@ -8823,10 +8987,6 @@
     cls.add_method('SetFlags', 
                    'void', 
                    [param('uint8_t', 'flags')])
-    ## tcp-header.h (module 'internet'): void ns3::TcpHeader::SetLength(uint8_t length) [member function]
-    cls.add_method('SetLength', 
-                   'void', 
-                   [param('uint8_t', 'length')])
     ## tcp-header.h (module 'internet'): void ns3::TcpHeader::SetSequenceNumber(ns3::SequenceNumber32 sequenceNumber) [member function]
     cls.add_method('SetSequenceNumber', 
                    'void', 
@@ -8845,6 +9005,100 @@
                    [param('uint16_t', 'windowSize')])
     return
 
+def register_Ns3TcpOption_methods(root_module, cls):
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::TcpOption(ns3::TcpOption const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpOption const &', 'arg0')])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::TcpOption() [constructor]
+    cls.add_constructor([])
+    ## tcp-option.h (module 'internet'): static ns3::Ptr<ns3::TcpOption> ns3::TcpOption::CreateOption(uint8_t kind) [member function]
+    cls.add_method('CreateOption', 
+                   'ns3::Ptr< ns3::TcpOption >', 
+                   [param('uint8_t', 'kind')], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOption::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): ns3::TypeId ns3::TcpOption::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint8_t ns3::TcpOption::GetKind() const [member function]
+    cls.add_method('GetKind', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOption::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): static ns3::TypeId ns3::TcpOption::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): static bool ns3::TcpOption::IsKindKnown(uint8_t kind) [member function]
+    cls.add_method('IsKindKnown', 
+                   'bool', 
+                   [param('uint8_t', 'kind')], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOption::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOption::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3TcpOptionUnknown_methods(root_module, cls):
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown::TcpOptionUnknown(ns3::TcpOptionUnknown const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpOptionUnknown const &', 'arg0')])
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown::TcpOptionUnknown() [constructor]
+    cls.add_constructor([])
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOptionUnknown::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## tcp-option.h (module 'internet'): ns3::TypeId ns3::TcpOptionUnknown::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint8_t ns3::TcpOptionUnknown::GetKind() const [member function]
+    cls.add_method('GetKind', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOptionUnknown::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): static ns3::TypeId ns3::TcpOptionUnknown::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOptionUnknown::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOptionUnknown::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    return
+
 def register_Ns3TcpRxBuffer_methods(root_module, cls):
     ## tcp-rx-buffer.h (module 'internet'): ns3::TcpRxBuffer::TcpRxBuffer(ns3::TcpRxBuffer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TcpRxBuffer const &', 'arg0')])
@@ -8961,6 +9215,11 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): ns3::Time ns3::TcpSocket::GetPersistTimeout() const [member function]
     cls.add_method('GetPersistTimeout', 
                    'ns3::Time', 
@@ -8971,11 +9230,6 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
-    ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetSegSize() const [member function]
     cls.add_method('GetSegSize', 
                    'uint32_t', 
@@ -9016,6 +9270,11 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
+                   'void', 
+                   [param('uint32_t', 'threshold')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetPersistTimeout(ns3::Time timeout) [member function]
     cls.add_method('SetPersistTimeout', 
                    'void', 
@@ -9026,11 +9285,6 @@
                    'void', 
                    [param('uint32_t', 'size')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
-    ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
-                   'void', 
-                   [param('uint32_t', 'threshold')], 
-                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetSegSize(uint32_t size) [member function]
     cls.add_method('SetSegSize', 
                    'void', 
@@ -9168,6 +9422,16 @@
                    'int', 
                    [], 
                    is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptionTimestamp(ns3::TcpHeader & header) [member function]
+    cls.add_method('AddOptionTimestamp', 
+                   'void', 
+                   [param('ns3::TcpHeader &', 'header')], 
+                   visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptionWScale(ns3::TcpHeader & header) [member function]
+    cls.add_method('AddOptionWScale', 
+                   'void', 
+                   [param('ns3::TcpHeader &', 'header')], 
+                   visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptions(ns3::TcpHeader & tcpHeader) [member function]
     cls.add_method('AddOptions', 
                    'void', 
@@ -9188,6 +9452,11 @@
                    'uint32_t', 
                    [], 
                    visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): uint8_t ns3::TcpSocketBase::CalculateWScale() const [member function]
+    cls.add_method('CalculateWScale', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True, visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::CancelAllTimers() [member function]
     cls.add_method('CancelAllTimers', 
                    'void', 
@@ -9323,6 +9592,11 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): ns3::Time ns3::TcpSocketBase::GetPersistTimeout() const [member function]
     cls.add_method('GetPersistTimeout', 
                    'ns3::Time', 
@@ -9333,11 +9607,6 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetSegSize() const [member function]
     cls.add_method('GetSegSize', 
                    'uint32_t', 
@@ -9398,6 +9667,16 @@
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::TcpHeader const &', 'tcpHeader'), param('ns3::Address const &', 'fromAddress'), param('ns3::Address const &', 'toAddress')], 
                    visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessOptionTimestamp(ns3::Ptr<const ns3::TcpOption> const option) [member function]
+    cls.add_method('ProcessOptionTimestamp', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::TcpOption const > const', 'option')], 
+                   visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessOptionWScale(ns3::Ptr<const ns3::TcpOption> const option) [member function]
+    cls.add_method('ProcessOptionWScale', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::TcpOption const > const', 'option')], 
+                   visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessSynRcvd(ns3::Ptr<ns3::Packet> packet, ns3::TcpHeader const & tcpHeader, ns3::Address const & fromAddress, ns3::Address const & toAddress) [member function]
     cls.add_method('ProcessSynRcvd', 
                    'void', 
@@ -9488,6 +9767,11 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
+                   'void', 
+                   [param('uint32_t', 'threshold')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetPersistTimeout(ns3::Time timeout) [member function]
     cls.add_method('SetPersistTimeout', 
                    'void', 
@@ -9498,11 +9782,6 @@
                    'void', 
                    [param('uint32_t', 'size')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
-                   'void', 
-                   [param('uint32_t', 'threshold')], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetSegSize(uint32_t size) [member function]
     cls.add_method('SetSegSize', 
                    'void', 
@@ -9597,8 +9876,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-tahoe.h (module 'internet'): uint32_t ns3::TcpTahoe::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-tahoe.h (module 'internet'): uint32_t ns3::TcpTahoe::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -9617,8 +9896,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-tahoe.h (module 'internet'): void ns3::TcpTahoe::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-tahoe.h (module 'internet'): void ns3::TcpTahoe::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -9736,8 +10015,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-westwood.h (module 'internet'): uint32_t ns3::TcpWestwood::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-westwood.h (module 'internet'): uint32_t ns3::TcpWestwood::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -9761,8 +10040,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-westwood.h (module 'internet'): void ns3::TcpWestwood::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-westwood.h (module 'internet'): void ns3::TcpWestwood::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -9810,10 +10089,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -9824,25 +10103,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -9959,20 +10238,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -10913,6 +11192,65 @@
                    is_static=True)
     return
 
+def register_Ns3CoDelQueue_methods(root_module, cls):
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue::CoDelQueue(ns3::CoDelQueue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CoDelQueue const &', 'arg0')])
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue::CoDelQueue() [constructor]
+    cls.add_constructor([])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropCount() [member function]
+    cls.add_method('GetDropCount', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropNext() [member function]
+    cls.add_method('GetDropNext', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropOverLimit() [member function]
+    cls.add_method('GetDropOverLimit', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Time ns3::CoDelQueue::GetInterval() [member function]
+    cls.add_method('GetInterval', 
+                   'ns3::Time', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Queue::QueueMode ns3::CoDelQueue::GetMode() [member function]
+    cls.add_method('GetMode', 
+                   'ns3::Queue::QueueMode', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetQueueSize() [member function]
+    cls.add_method('GetQueueSize', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Time ns3::CoDelQueue::GetTarget() [member function]
+    cls.add_method('GetTarget', 
+                   'ns3::Time', 
+                   [])
+    ## codel-queue.h (module 'internet'): static ns3::TypeId ns3::CoDelQueue::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## codel-queue.h (module 'internet'): void ns3::CoDelQueue::SetMode(ns3::Queue::QueueMode mode) [member function]
+    cls.add_method('SetMode', 
+                   'void', 
+                   [param('ns3::Queue::QueueMode', 'mode')])
+    ## codel-queue.h (module 'internet'): ns3::Ptr<ns3::Packet> ns3::CoDelQueue::DoDequeue() [member function]
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## codel-queue.h (module 'internet'): bool ns3::CoDelQueue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
+    ## codel-queue.h (module 'internet'): ns3::Ptr<ns3::Packet const> ns3::CoDelQueue::DoPeek() const [member function]
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ConstantRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -15036,6 +15374,46 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3StringChecker_methods(root_module, cls):
+    ## string.h (module 'core'): ns3::StringChecker::StringChecker() [constructor]
+    cls.add_constructor([])
+    ## string.h (module 'core'): ns3::StringChecker::StringChecker(ns3::StringChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::StringChecker const &', 'arg0')])
+    return
+
+def register_Ns3StringValue_methods(root_module, cls):
+    ## string.h (module 'core'): ns3::StringValue::StringValue() [constructor]
+    cls.add_constructor([])
+    ## string.h (module 'core'): ns3::StringValue::StringValue(ns3::StringValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::StringValue const &', 'arg0')])
+    ## string.h (module 'core'): ns3::StringValue::StringValue(std::string const & value) [constructor]
+    cls.add_constructor([param('std::string const &', 'value')])
+    ## string.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::StringValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## string.h (module 'core'): bool ns3::StringValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## string.h (module 'core'): std::string ns3::StringValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## string.h (module 'core'): std::string ns3::StringValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## string.h (module 'core'): void ns3::StringValue::Set(std::string const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string const &', 'value')])
+    return
+
 def register_Ns3TcpL4Protocol_methods(root_module, cls):
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint8_t const', is_const=True)
@@ -15206,8 +15584,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-newreno.h (module 'internet'): uint32_t ns3::TcpNewReno::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-newreno.h (module 'internet'): uint32_t ns3::TcpNewReno::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15226,8 +15604,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-newreno.h (module 'internet'): void ns3::TcpNewReno::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-newreno.h (module 'internet'): void ns3::TcpNewReno::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -15278,8 +15656,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-reno.h (module 'internet'): uint32_t ns3::TcpReno::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-reno.h (module 'internet'): uint32_t ns3::TcpReno::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15298,8 +15676,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-reno.h (module 'internet'): void ns3::TcpReno::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-reno.h (module 'internet'): void ns3::TcpReno::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -15340,8 +15718,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-rfc793.h (module 'internet'): uint32_t ns3::TcpRfc793::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-rfc793.h (module 'internet'): uint32_t ns3::TcpRfc793::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15350,8 +15728,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-rfc793.h (module 'internet'): void ns3::TcpRfc793::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-rfc793.h (module 'internet'): void ns3::TcpRfc793::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
diff -Naur ns-3.20/src/internet/bindings/modulegen__gcc_LP64.py ns-3.21/src/internet/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/internet/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -242,6 +242,8 @@
     module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer'], import_from_module='ns.core')
     ## timer-impl.h (module 'core'): ns3::TimerImpl [class]
     module.add_class('TimerImpl', allow_subclassing=True, import_from_module='ns.core')
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool> [class]
+    module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['bool'])
     ## traced-value.h (module 'core'): ns3::TracedValue<double> [class]
     module.add_class('TracedValue', import_from_module='ns.core', template_parameters=['double'])
     ## traced-value.h (module 'core'): ns3::TracedValue<ns3::SequenceNumber<unsigned int, int> > [class]
@@ -368,6 +370,10 @@
     module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
     ## pcap-file-wrapper.h (module 'network'): ns3::PcapFileWrapper [class]
     module.add_class('PcapFileWrapper', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## queue.h (module 'network'): ns3::Queue [class]
+    module.add_class('Queue', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## queue.h (module 'network'): ns3::Queue::QueueMode [enumeration]
+    module.add_enum('QueueMode', ['QUEUE_MODE_PACKETS', 'QUEUE_MODE_BYTES'], outer_class=root_module['ns3::Queue'], import_from_module='ns.network')
     ## random-variable-stream.h (module 'core'): ns3::RandomVariableStream [class]
     module.add_class('RandomVariableStream', import_from_module='ns.core', parent=root_module['ns3::Object'])
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader [class]
@@ -434,6 +440,12 @@
     module.add_class('TcpHeader', parent=root_module['ns3::Header'])
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::Flags_t [enumeration]
     module.add_enum('Flags_t', ['NONE', 'FIN', 'SYN', 'RST', 'PSH', 'ACK', 'URG', 'ECE', 'CWR'], outer_class=root_module['ns3::TcpHeader'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption [class]
+    module.add_class('TcpOption', parent=root_module['ns3::Object'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::Kind [enumeration]
+    module.add_enum('Kind', ['END', 'NOP', 'MSS', 'WINSCALE', 'TS', 'UNKNOWN'], outer_class=root_module['ns3::TcpOption'])
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown [class]
+    module.add_class('TcpOptionUnknown', parent=root_module['ns3::TcpOption'])
     ## tcp-rx-buffer.h (module 'internet'): ns3::TcpRxBuffer [class]
     module.add_class('TcpRxBuffer', parent=root_module['ns3::Object'])
     ## tcp-socket.h (module 'internet'): ns3::TcpSocket [class]
@@ -510,6 +522,8 @@
     module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## channel.h (module 'network'): ns3::Channel [class]
     module.add_class('Channel', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue [class]
+    module.add_class('CoDelQueue', parent=root_module['ns3::Queue'])
     ## random-variable-stream.h (module 'core'): ns3::ConstantRandomVariable [class]
     module.add_class('ConstantRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## data-collection-object.h (module 'stats'): ns3::DataCollectionObject [class]
@@ -666,6 +680,10 @@
     module.add_class('RipNg', parent=root_module['ns3::Ipv6RoutingProtocol'])
     ## ripng.h (module 'internet'): ns3::RipNg::SplitHorizonType_e [enumeration]
     module.add_enum('SplitHorizonType_e', ['NO_SPLIT_HORIZON', 'SPLIT_HORIZON', 'POISON_REVERSE'], outer_class=root_module['ns3::RipNg'])
+    ## string.h (module 'core'): ns3::StringChecker [class]
+    module.add_class('StringChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## string.h (module 'core'): ns3::StringValue [class]
+    module.add_class('StringValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol [class]
     module.add_class('TcpL4Protocol', parent=root_module['ns3::IpL4Protocol'])
     ## tcp-newreno.h (module 'internet'): ns3::TcpNewReno [class]
@@ -872,6 +890,7 @@
     register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
     register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
     register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
+    register_Ns3TracedValue__Bool_methods(root_module, root_module['ns3::TracedValue< bool >'])
     register_Ns3TracedValue__Double_methods(root_module, root_module['ns3::TracedValue< double >'])
     register_Ns3TracedValue__Ns3SequenceNumber__lt__unsigned_int__int__gt___methods(root_module, root_module['ns3::TracedValue< ns3::SequenceNumber<unsigned int, int> >'])
     register_Ns3TracedValue__Ns3TcpStates_t_methods(root_module, root_module['ns3::TracedValue< ns3::TcpStates_t >'])
@@ -921,6 +940,7 @@
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
     register_Ns3PcapFileWrapper_methods(root_module, root_module['ns3::PcapFileWrapper'])
+    register_Ns3Queue_methods(root_module, root_module['ns3::Queue'])
     register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
     register_Ns3RipNgHeader_methods(root_module, root_module['ns3::RipNgHeader'])
     register_Ns3RipNgRte_methods(root_module, root_module['ns3::RipNgRte'])
@@ -950,6 +970,8 @@
     register_Ns3SocketIpv6TclassTag_methods(root_module, root_module['ns3::SocketIpv6TclassTag'])
     register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
     register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader'])
+    register_Ns3TcpOption_methods(root_module, root_module['ns3::TcpOption'])
+    register_Ns3TcpOptionUnknown_methods(root_module, root_module['ns3::TcpOptionUnknown'])
     register_Ns3TcpRxBuffer_methods(root_module, root_module['ns3::TcpRxBuffer'])
     register_Ns3TcpSocket_methods(root_module, root_module['ns3::TcpSocket'])
     register_Ns3TcpSocketBase_methods(root_module, root_module['ns3::TcpSocketBase'])
@@ -982,6 +1004,7 @@
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
     register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
     register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
+    register_Ns3CoDelQueue_methods(root_module, root_module['ns3::CoDelQueue'])
     register_Ns3ConstantRandomVariable_methods(root_module, root_module['ns3::ConstantRandomVariable'])
     register_Ns3DataCollectionObject_methods(root_module, root_module['ns3::DataCollectionObject'])
     register_Ns3DeterministicRandomVariable_methods(root_module, root_module['ns3::DeterministicRandomVariable'])
@@ -1055,6 +1078,8 @@
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3Probe_methods(root_module, root_module['ns3::Probe'])
     register_Ns3RipNg_methods(root_module, root_module['ns3::RipNg'])
+    register_Ns3StringChecker_methods(root_module, root_module['ns3::StringChecker'])
+    register_Ns3StringValue_methods(root_module, root_module['ns3::StringValue'])
     register_Ns3TcpL4Protocol_methods(root_module, root_module['ns3::TcpL4Protocol'])
     register_Ns3TcpNewReno_methods(root_module, root_module['ns3::TcpNewReno'])
     register_Ns3TcpReno_methods(root_module, root_module['ns3::TcpReno'])
@@ -4884,6 +4909,40 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3TracedValue__Bool_methods(root_module, cls):
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue() [constructor]
+    cls.add_constructor([])
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue(ns3::TracedValue<bool> const & o) [copy constructor]
+    cls.add_constructor([param('ns3::TracedValue< bool > const &', 'o')])
+    ## traced-value.h (module 'core'): ns3::TracedValue<bool>::TracedValue(bool const & v) [constructor]
+    cls.add_constructor([param('bool const &', 'v')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::ConnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')])
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::DisconnectWithoutContext(ns3::CallbackBase const & cb) [member function]
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase const &', 'cb')])
+    ## traced-value.h (module 'core'): bool ns3::TracedValue<bool>::Get() const [member function]
+    cls.add_method('Get', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## traced-value.h (module 'core'): void ns3::TracedValue<bool>::Set(bool const & v) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('bool const &', 'v')])
+    return
+
 def register_Ns3TracedValue__Double_methods(root_module, cls):
     ## traced-value.h (module 'core'): ns3::TracedValue<double>::TracedValue() [constructor]
     cls.add_constructor([])
@@ -7578,6 +7637,94 @@
                    [])
     return
 
+def register_Ns3Queue_methods(root_module, cls):
+    ## queue.h (module 'network'): ns3::Queue::Queue(ns3::Queue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Queue const &', 'arg0')])
+    ## queue.h (module 'network'): ns3::Queue::Queue() [constructor]
+    cls.add_constructor([])
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Queue::Dequeue() [member function]
+    cls.add_method('Dequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
+    ## queue.h (module 'network'): void ns3::Queue::DequeueAll() [member function]
+    cls.add_method('DequeueAll', 
+                   'void', 
+                   [])
+    ## queue.h (module 'network'): bool ns3::Queue::Enqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('Enqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetNBytes() const [member function]
+    cls.add_method('GetNBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetNPackets() const [member function]
+    cls.add_method('GetNPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalDroppedBytes() const [member function]
+    cls.add_method('GetTotalDroppedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalDroppedPackets() const [member function]
+    cls.add_method('GetTotalDroppedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalReceivedBytes() const [member function]
+    cls.add_method('GetTotalReceivedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): uint32_t ns3::Queue::GetTotalReceivedPackets() const [member function]
+    cls.add_method('GetTotalReceivedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): static ns3::TypeId ns3::Queue::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## queue.h (module 'network'): bool ns3::Queue::IsEmpty() const [member function]
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet const> ns3::Queue::Peek() const [member function]
+    cls.add_method('Peek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_const=True)
+    ## queue.h (module 'network'): void ns3::Queue::ResetStatistics() [member function]
+    cls.add_method('ResetStatistics', 
+                   'void', 
+                   [])
+    ## queue.h (module 'network'): void ns3::Queue::Drop(ns3::Ptr<ns3::Packet> packet) [member function]
+    cls.add_method('Drop', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet')], 
+                   visibility='protected')
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Queue::DoDequeue() [member function]
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## queue.h (module 'network'): bool ns3::Queue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## queue.h (module 'network'): ns3::Ptr<ns3::Packet const> ns3::Queue::DoPeek() const [member function]
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3RandomVariableStream_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::RandomVariableStream::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -7622,6 +7769,7 @@
     return
 
 def register_Ns3RipNgHeader_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader(ns3::RipNgHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RipNgHeader const &', 'arg0')])
     ## ripng-header.h (module 'internet'): ns3::RipNgHeader::RipNgHeader() [constructor]
@@ -7686,6 +7834,7 @@
     return
 
 def register_Ns3RipNgRte_methods(root_module, cls):
+    cls.add_output_stream_operator()
     ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte(ns3::RipNgRte const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::RipNgRte const &', 'arg0')])
     ## ripng-header.h (module 'internet'): ns3::RipNgRte::RipNgRte() [constructor]
@@ -7763,11 +7912,6 @@
     cls.add_constructor([])
     ## rtt-estimator.h (module 'internet'): ns3::RttEstimator::RttEstimator(ns3::RttEstimator const & r) [copy constructor]
     cls.add_constructor([param('ns3::RttEstimator const &', 'r')])
-    ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::AckSeq(ns3::SequenceNumber32 ackSeq) [member function]
-    cls.add_method('AckSeq', 
-                   'ns3::Time', 
-                   [param('ns3::SequenceNumber32', 'ackSeq')], 
-                   is_virtual=True)
     ## rtt-estimator.h (module 'internet'): void ns3::RttEstimator::ClearSent() [member function]
     cls.add_method('ClearSent', 
                    'void', 
@@ -7778,6 +7922,11 @@
                    'ns3::Ptr< ns3::RttEstimator >', 
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::EstimateRttFromSeq(ns3::SequenceNumber32 ackSeq) [member function]
+    cls.add_method('EstimateRttFromSeq', 
+                   'ns3::Time', 
+                   [param('ns3::SequenceNumber32', 'ackSeq')], 
+                   is_virtual=True)
     ## rtt-estimator.h (module 'internet'): ns3::Time ns3::RttEstimator::GetCurrentEstimate() const [member function]
     cls.add_method('GetCurrentEstimate', 
                    'ns3::Time', 
@@ -8716,10 +8865,15 @@
     return
 
 def register_Ns3TcpHeader_methods(root_module, cls):
+    cls.add_binary_comparison_operator('==')
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::TcpHeader(ns3::TcpHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TcpHeader const &', 'arg0')])
     ## tcp-header.h (module 'internet'): ns3::TcpHeader::TcpHeader() [constructor]
     cls.add_constructor([])
+    ## tcp-header.h (module 'internet'): bool ns3::TcpHeader::AppendOption(ns3::Ptr<ns3::TcpOption> option) [member function]
+    cls.add_method('AppendOption', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::TcpOption >', 'option')])
     ## tcp-header.h (module 'internet'): uint32_t ns3::TcpHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
     cls.add_method('Deserialize', 
                    'uint32_t', 
@@ -8754,6 +8908,11 @@
                    'uint8_t', 
                    [], 
                    is_const=True)
+    ## tcp-header.h (module 'internet'): ns3::Ptr<ns3::TcpOption> ns3::TcpHeader::GetOption(uint8_t kind) const [member function]
+    cls.add_method('GetOption', 
+                   'ns3::Ptr< ns3::TcpOption >', 
+                   [param('uint8_t', 'kind')], 
+                   is_const=True)
     ## tcp-header.h (module 'internet'): ns3::SequenceNumber32 ns3::TcpHeader::GetSequenceNumber() const [member function]
     cls.add_method('GetSequenceNumber', 
                    'ns3::SequenceNumber32', 
@@ -8784,6 +8943,11 @@
                    'uint16_t', 
                    [], 
                    is_const=True)
+    ## tcp-header.h (module 'internet'): bool ns3::TcpHeader::HasOption(uint8_t kind) const [member function]
+    cls.add_method('HasOption', 
+                   'bool', 
+                   [param('uint8_t', 'kind')], 
+                   is_const=True)
     ## tcp-header.h (module 'internet'): void ns3::TcpHeader::InitializeChecksum(ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol) [member function]
     cls.add_method('InitializeChecksum', 
                    'void', 
@@ -8823,10 +8987,6 @@
     cls.add_method('SetFlags', 
                    'void', 
                    [param('uint8_t', 'flags')])
-    ## tcp-header.h (module 'internet'): void ns3::TcpHeader::SetLength(uint8_t length) [member function]
-    cls.add_method('SetLength', 
-                   'void', 
-                   [param('uint8_t', 'length')])
     ## tcp-header.h (module 'internet'): void ns3::TcpHeader::SetSequenceNumber(ns3::SequenceNumber32 sequenceNumber) [member function]
     cls.add_method('SetSequenceNumber', 
                    'void', 
@@ -8845,6 +9005,100 @@
                    [param('uint16_t', 'windowSize')])
     return
 
+def register_Ns3TcpOption_methods(root_module, cls):
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::TcpOption(ns3::TcpOption const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpOption const &', 'arg0')])
+    ## tcp-option.h (module 'internet'): ns3::TcpOption::TcpOption() [constructor]
+    cls.add_constructor([])
+    ## tcp-option.h (module 'internet'): static ns3::Ptr<ns3::TcpOption> ns3::TcpOption::CreateOption(uint8_t kind) [member function]
+    cls.add_method('CreateOption', 
+                   'ns3::Ptr< ns3::TcpOption >', 
+                   [param('uint8_t', 'kind')], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOption::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): ns3::TypeId ns3::TcpOption::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint8_t ns3::TcpOption::GetKind() const [member function]
+    cls.add_method('GetKind', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOption::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): static ns3::TypeId ns3::TcpOption::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): static bool ns3::TcpOption::IsKindKnown(uint8_t kind) [member function]
+    cls.add_method('IsKindKnown', 
+                   'bool', 
+                   [param('uint8_t', 'kind')], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOption::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOption::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3TcpOptionUnknown_methods(root_module, cls):
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown::TcpOptionUnknown(ns3::TcpOptionUnknown const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpOptionUnknown const &', 'arg0')])
+    ## tcp-option.h (module 'internet'): ns3::TcpOptionUnknown::TcpOptionUnknown() [constructor]
+    cls.add_constructor([])
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOptionUnknown::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## tcp-option.h (module 'internet'): ns3::TypeId ns3::TcpOptionUnknown::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint8_t ns3::TcpOptionUnknown::GetKind() const [member function]
+    cls.add_method('GetKind', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): uint32_t ns3::TcpOptionUnknown::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): static ns3::TypeId ns3::TcpOptionUnknown::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOptionUnknown::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## tcp-option.h (module 'internet'): void ns3::TcpOptionUnknown::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    return
+
 def register_Ns3TcpRxBuffer_methods(root_module, cls):
     ## tcp-rx-buffer.h (module 'internet'): ns3::TcpRxBuffer::TcpRxBuffer(ns3::TcpRxBuffer const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TcpRxBuffer const &', 'arg0')])
@@ -8961,6 +9215,11 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): ns3::Time ns3::TcpSocket::GetPersistTimeout() const [member function]
     cls.add_method('GetPersistTimeout', 
                    'ns3::Time', 
@@ -8971,11 +9230,6 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
-    ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): uint32_t ns3::TcpSocket::GetSegSize() const [member function]
     cls.add_method('GetSegSize', 
                    'uint32_t', 
@@ -9016,6 +9270,11 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
+                   'void', 
+                   [param('uint32_t', 'threshold')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetPersistTimeout(ns3::Time timeout) [member function]
     cls.add_method('SetPersistTimeout', 
                    'void', 
@@ -9026,11 +9285,6 @@
                    'void', 
                    [param('uint32_t', 'size')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
-    ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
-                   'void', 
-                   [param('uint32_t', 'threshold')], 
-                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h (module 'internet'): void ns3::TcpSocket::SetSegSize(uint32_t size) [member function]
     cls.add_method('SetSegSize', 
                    'void', 
@@ -9168,6 +9422,16 @@
                    'int', 
                    [], 
                    is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptionTimestamp(ns3::TcpHeader & header) [member function]
+    cls.add_method('AddOptionTimestamp', 
+                   'void', 
+                   [param('ns3::TcpHeader &', 'header')], 
+                   visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptionWScale(ns3::TcpHeader & header) [member function]
+    cls.add_method('AddOptionWScale', 
+                   'void', 
+                   [param('ns3::TcpHeader &', 'header')], 
+                   visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::AddOptions(ns3::TcpHeader & tcpHeader) [member function]
     cls.add_method('AddOptions', 
                    'void', 
@@ -9188,6 +9452,11 @@
                    'uint32_t', 
                    [], 
                    visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): uint8_t ns3::TcpSocketBase::CalculateWScale() const [member function]
+    cls.add_method('CalculateWScale', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True, visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::CancelAllTimers() [member function]
     cls.add_method('CancelAllTimers', 
                    'void', 
@@ -9323,6 +9592,11 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): ns3::Time ns3::TcpSocketBase::GetPersistTimeout() const [member function]
     cls.add_method('GetPersistTimeout', 
                    'ns3::Time', 
@@ -9333,11 +9607,6 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): uint32_t ns3::TcpSocketBase::GetSegSize() const [member function]
     cls.add_method('GetSegSize', 
                    'uint32_t', 
@@ -9398,6 +9667,16 @@
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::TcpHeader const &', 'tcpHeader'), param('ns3::Address const &', 'fromAddress'), param('ns3::Address const &', 'toAddress')], 
                    visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessOptionTimestamp(ns3::Ptr<const ns3::TcpOption> const option) [member function]
+    cls.add_method('ProcessOptionTimestamp', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::TcpOption const > const', 'option')], 
+                   visibility='protected')
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessOptionWScale(ns3::Ptr<const ns3::TcpOption> const option) [member function]
+    cls.add_method('ProcessOptionWScale', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::TcpOption const > const', 'option')], 
+                   visibility='protected')
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::ProcessSynRcvd(ns3::Ptr<ns3::Packet> packet, ns3::TcpHeader const & tcpHeader, ns3::Address const & fromAddress, ns3::Address const & toAddress) [member function]
     cls.add_method('ProcessSynRcvd', 
                    'void', 
@@ -9488,6 +9767,11 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
+                   'void', 
+                   [param('uint32_t', 'threshold')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetPersistTimeout(ns3::Time timeout) [member function]
     cls.add_method('SetPersistTimeout', 
                    'void', 
@@ -9498,11 +9782,6 @@
                    'void', 
                    [param('uint32_t', 'size')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
-                   'void', 
-                   [param('uint32_t', 'threshold')], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## tcp-socket-base.h (module 'internet'): void ns3::TcpSocketBase::SetSegSize(uint32_t size) [member function]
     cls.add_method('SetSegSize', 
                    'void', 
@@ -9597,8 +9876,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-tahoe.h (module 'internet'): uint32_t ns3::TcpTahoe::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-tahoe.h (module 'internet'): uint32_t ns3::TcpTahoe::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -9617,8 +9896,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-tahoe.h (module 'internet'): void ns3::TcpTahoe::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-tahoe.h (module 'internet'): void ns3::TcpTahoe::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -9736,8 +10015,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-westwood.h (module 'internet'): uint32_t ns3::TcpWestwood::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-westwood.h (module 'internet'): uint32_t ns3::TcpWestwood::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -9761,8 +10040,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-westwood.h (module 'internet'): void ns3::TcpWestwood::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-westwood.h (module 'internet'): void ns3::TcpWestwood::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -9810,10 +10089,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -9824,25 +10103,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -9959,20 +10238,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -10913,6 +11192,65 @@
                    is_static=True)
     return
 
+def register_Ns3CoDelQueue_methods(root_module, cls):
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue::CoDelQueue(ns3::CoDelQueue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CoDelQueue const &', 'arg0')])
+    ## codel-queue.h (module 'internet'): ns3::CoDelQueue::CoDelQueue() [constructor]
+    cls.add_constructor([])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropCount() [member function]
+    cls.add_method('GetDropCount', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropNext() [member function]
+    cls.add_method('GetDropNext', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetDropOverLimit() [member function]
+    cls.add_method('GetDropOverLimit', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Time ns3::CoDelQueue::GetInterval() [member function]
+    cls.add_method('GetInterval', 
+                   'ns3::Time', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Queue::QueueMode ns3::CoDelQueue::GetMode() [member function]
+    cls.add_method('GetMode', 
+                   'ns3::Queue::QueueMode', 
+                   [])
+    ## codel-queue.h (module 'internet'): uint32_t ns3::CoDelQueue::GetQueueSize() [member function]
+    cls.add_method('GetQueueSize', 
+                   'uint32_t', 
+                   [])
+    ## codel-queue.h (module 'internet'): ns3::Time ns3::CoDelQueue::GetTarget() [member function]
+    cls.add_method('GetTarget', 
+                   'ns3::Time', 
+                   [])
+    ## codel-queue.h (module 'internet'): static ns3::TypeId ns3::CoDelQueue::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## codel-queue.h (module 'internet'): void ns3::CoDelQueue::SetMode(ns3::Queue::QueueMode mode) [member function]
+    cls.add_method('SetMode', 
+                   'void', 
+                   [param('ns3::Queue::QueueMode', 'mode')])
+    ## codel-queue.h (module 'internet'): ns3::Ptr<ns3::Packet> ns3::CoDelQueue::DoDequeue() [member function]
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## codel-queue.h (module 'internet'): bool ns3::CoDelQueue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
+    ## codel-queue.h (module 'internet'): ns3::Ptr<ns3::Packet const> ns3::CoDelQueue::DoPeek() const [member function]
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet const >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ConstantRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ConstantRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -15036,6 +15374,46 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3StringChecker_methods(root_module, cls):
+    ## string.h (module 'core'): ns3::StringChecker::StringChecker() [constructor]
+    cls.add_constructor([])
+    ## string.h (module 'core'): ns3::StringChecker::StringChecker(ns3::StringChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::StringChecker const &', 'arg0')])
+    return
+
+def register_Ns3StringValue_methods(root_module, cls):
+    ## string.h (module 'core'): ns3::StringValue::StringValue() [constructor]
+    cls.add_constructor([])
+    ## string.h (module 'core'): ns3::StringValue::StringValue(ns3::StringValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::StringValue const &', 'arg0')])
+    ## string.h (module 'core'): ns3::StringValue::StringValue(std::string const & value) [constructor]
+    cls.add_constructor([param('std::string const &', 'value')])
+    ## string.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::StringValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## string.h (module 'core'): bool ns3::StringValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## string.h (module 'core'): std::string ns3::StringValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## string.h (module 'core'): std::string ns3::StringValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## string.h (module 'core'): void ns3::StringValue::Set(std::string const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string const &', 'value')])
+    return
+
 def register_Ns3TcpL4Protocol_methods(root_module, cls):
     ## tcp-l4-protocol.h (module 'internet'): ns3::TcpL4Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', 'uint8_t const', is_const=True)
@@ -15206,8 +15584,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-newreno.h (module 'internet'): uint32_t ns3::TcpNewReno::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-newreno.h (module 'internet'): uint32_t ns3::TcpNewReno::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15226,8 +15604,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-newreno.h (module 'internet'): void ns3::TcpNewReno::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-newreno.h (module 'internet'): void ns3::TcpNewReno::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -15278,8 +15656,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-reno.h (module 'internet'): uint32_t ns3::TcpReno::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-reno.h (module 'internet'): uint32_t ns3::TcpReno::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15298,8 +15676,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-reno.h (module 'internet'): void ns3::TcpReno::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-reno.h (module 'internet'): void ns3::TcpReno::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
@@ -15340,8 +15718,8 @@
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
-    ## tcp-rfc793.h (module 'internet'): uint32_t ns3::TcpRfc793::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 
+    ## tcp-rfc793.h (module 'internet'): uint32_t ns3::TcpRfc793::GetInitialSSThresh() const [member function]
+    cls.add_method('GetInitialSSThresh', 
                    'uint32_t', 
                    [], 
                    is_const=True, visibility='protected', is_virtual=True)
@@ -15350,8 +15728,8 @@
                    'void', 
                    [param('uint32_t', 'cwnd')], 
                    visibility='protected', is_virtual=True)
-    ## tcp-rfc793.h (module 'internet'): void ns3::TcpRfc793::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 
+    ## tcp-rfc793.h (module 'internet'): void ns3::TcpRfc793::SetInitialSSThresh(uint32_t threshold) [member function]
+    cls.add_method('SetInitialSSThresh', 
                    'void', 
                    [param('uint32_t', 'threshold')], 
                    visibility='protected', is_virtual=True)
diff -Naur ns-3.20/src/internet/doc/codel.rst ns-3.21/src/internet/doc/codel.rst
--- ns-3.20/src/internet/doc/codel.rst	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/doc/codel.rst	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,134 @@
+.. include:: replace.txt
+.. highlight:: cpp
+
+CoDel queue implementation in |ns3|
+-----------------------------------
+
+This chapter describes the CoDel ([Nic12]_, [Nic14]_) queue implementation 
+in |ns3|. 
+
+Developed by Kathleen Nichols and Van Jacobson as a solution to the 
+bufferbloat [Buf14]_ problem, CoDel (Controlled Delay Management) is a queuing 
+discipline that uses a packet's sojourn time (time in queue) to make 
+decisions on packet drops.
+
+Model Description
+*****************
+
+The source code for the CoDel model is located in the directory ``src/internet/model``
+and consists of 2 files `codel-queue.h` and `codel-queue.cc` defining a CoDelQueue
+class and a helper CoDelTimestampTag class. The code was ported to |ns3| by
+Andrew McGregor based on Linux kernel code implemented by Dave Täht and Eric Dumazet. 
+
+* class :cpp:class:`CoDelQueue`: This class implements the main CoDel algorithm:
+
+  * ``CoDelQueue::DoEnqueue ()``: This routine tags a packet with the current time before pushing it into the queue.  The timestamp tag is used by ``CoDelQueue::DoDequeue()`` to compute the packet's sojourn time.  If the queue is full upon the packet arrival, this routine will drop the packet and record the number of drops due to queue overflow, which is stored in `m_dropOverLimit`.
+
+  * ``CoDelQueue::ShouldDrop ()``: This routine is ``CoDelQueue::DoDequeue()``'s helper routine that determines whether a packet should be dropped or not based on its sojourn time.  If the sojourn time goes above `m_target` and remains above continuously for at least `m_interval`, the routine returns ``true`` indicating that it is OK to drop the packet. Otherwise, it returns ``false``. 
+
+  * ``CoDelQueue::DoDequeue ()``: This routine performs the actual packet drop based on ``CoDelQueue::ShouldDrop ()``'s return value and schedules the next drop. 
+* class :cpp:class:`CoDelTimestampTag`: This class implements the timestamp tagging for a packet.  This tag is used to compute the packet's sojourn time (the difference between the time the packet is dequeued and the time it is pushed into the queue). 
+
+There are 2 branches to ``CoDelQueue::DoDequeue ()``: 
+
+1. If the queue is currently in the dropping state, which means the sojourn time has remained above `m_target` for more than `m_interval`, the routine determines if it's OK to leave the dropping state or it's time for the next drop. When ``CoDelQueue::ShouldDrop ()`` returns ``false``, the queue can move out of the dropping state (set `m_dropping` to ``false``).  Otherwise, the queue continuously drops packets and updates the time for next drop (`m_dropNext`) until one of the following conditions is met: 
+
+    1. The queue is empty, upon which the queue leaves the dropping state and exits ``CoDelQueue::ShouldDrop ()`` routine; 
+    2. ``CoDelQueue::ShouldDrop ()`` returns ``false`` (meaning the sojourn time goes below `m_target`) upon which the queue leaves the dropping state; 
+    3. It is not yet time for next drop (`m_dropNext` is less than current time) upon which the queue waits for the next packet dequeue to check the condition again. 
+
+2. If the queue is not in the dropping state, the routine enters the dropping state and drop the first packet if ``CoDelQueue::ShouldDrop ()`` returns ``true`` (meaning the sojourn time has gone above `m_target` for at least `m_interval` for the first time or it has gone above again after the queue leaves the dropping state). 
+
+References
+==========
+
+.. [Nic12] K. Nichols and V. Jacobson, Controlling Queue Delay, ACM Queue, Vol. 10 No. 5, May 2012.  Available online at `<http://queue.acm.org/detail.cfm?id=2209336>`_.
+
+.. [Nic14] K. Nichols and V. Jacobson, Internet-Draft:  Controlled Delay Active Queue Management, March 2014.  Available online at `<http://tools.ietf.org/html/draft-nichols-tsvwg-codel-02>`_.
+
+.. [Buf14] Bufferbloat.net.  Available online at `<http://www.bufferbloat.net/>`_.
+
+Attributes
+==========
+
+The key attributes that the CoDelQueue class holds include the following: 
+
+* ``Mode:`` CoDel operating mode (BYTES, PACKETS, or ILLEGAL). The default mode is BYTES. 
+* ``MaxPackets:`` The maximum number of packets the queue can hold. The default value is DEFAULT_CODEL_LIMIT, which is 1000 packets.
+* ``MaxBytes:`` The maximum number of bytes the queue can hold. The default value is 1500 * DEFAULT_CODEL_LIMIT, which is 1500 * 1000 bytes. 
+* ``MinBytes:`` The CoDel algorithm minbytes parameter. The default value is 1500 bytes. 
+* ``Interval:`` The sliding-minimum window. The default value is 100 ms. 
+* ``Target:`` The CoDel algorithm target queue delay. The default value is 5 ms. 
+
+Examples
+========
+
+The first example is `codel-vs-droptail-basic-test.cc` located in ``src/internet/examples``.  To run the file (the first invocation below shows the available
+command-line options):
+
+:: 
+
+   $ ./waf --run "codel-vs-droptail-basic-test --PrintHelp"
+   $ ./waf --run "codel-vs-droptail-basic-test --queueType=CoDel --pcapFileName=codel.pcap --cwndTrFileName=cwndCodel.tr" 
+
+The expected output from the previous commands are two files: `codel.pcap` file and `cwndCoDel.tr` (ASCII trace) file The .pcap file can be analyzed using 
+wireshark or tcptrace:
+
+:: 
+
+   $ tcptrace -l -r -n -W codel.pcap
+
+The second example is `codel-vs-droptail-asymmetric.cc` located in ``src/internet/examples``.  This example is intended to model a typical cable modem
+deployment scenario.  To run the file:
+
+::
+
+   $ ./waf --run "codel-vs-droptail-asymmetric --PrintHelp"
+   $ ./waf --run codel-vs-droptail-asymmetric
+
+The expected output from the previous commands is six pcap files:
+
+* codel-vs-droptail-asymmetric-CoDel-server-lan.pcap
+* codel-vs-droptail-asymmetric-CoDel-router-wan.pcap
+* codel-vs-droptail-asymmetric-CoDel-router-lan.pcap
+* codel-vs-droptail-asymmetric-CoDel-cmts-wan.pcap
+* codel-vs-droptail-asymmetric-CoDel-cmts-lan.pcap
+* codel-vs-droptail-asymmetric-CoDel-host-lan.pcap
+
+One attribute file:
+
+* codel-vs-droptail-asymmetric-CoDel.attr 
+
+Five ASCII trace files:
+
+* codel-vs-droptail-asymmetric-CoDel-drop.tr
+* codel-vs-droptail-asymmetric-CoDel-drop-state.tr
+* codel-vs-droptail-asymmetric-CoDel-sojourn.tr
+* codel-vs-droptail-asymmetric-CoDel-length.tr
+* codel-vs-droptail-asymmetric-CoDel-cwnd.tr 
+
+Validation
+**********
+
+The CoDel model is tested using :cpp:class:`CoDelQueueTestSuite` class defined in `src/internet/test/codel-queue-test-suite.cc`.  The suite includes 5 test cases:
+
+* Test 1: The first test checks the enqueue/dequeue with no drops and makes sure that CoDel attributes can be set correctly.
+* Test 2: The second test checks the enqueue with drops due to queue overflow.
+* Test 3: The third test checks the NewtonStep() arithmetic against explicit port of Linux implementation
+* Test 4: The fourth test checks the ControlLaw() against explicit port of Linux implementation
+* Test 5: The fifth test checks the enqueue/dequeue with drops according to CoDel algorithm
+
+The test suite can be run using the following commands: 
+
+::
+
+  $ ./waf configure --enable-examples --enable-tests
+  $ ./waf build
+  $ ./test.py -s codel-queue
+
+or  
+
+::
+
+  $ NS_LOG="CoDelQueue" ./waf --run "test-runner --suite=codel-queue"
+
diff -Naur ns-3.20/src/internet/doc/internet-stack.rst ns-3.21/src/internet/doc/internet-stack.rst
--- ns-3.20/src/internet/doc/internet-stack.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/doc/internet-stack.rst	2014-09-17 20:03:14.000000000 -0700
@@ -204,6 +204,35 @@
 a :cpp:class:`Ipv4Address` or :cpp:class:`Ipv6Address`, these functions will
 return an error.  The ``Bind (void)`` and ``Bind6 (void)`` functions bind to
 "0.0.0.0" and "::" respectively.
+
+The socket can also be bound to a specific NetDevice though the 
+``BindToNetDevice (Ptr<NetDevice> netdevice)`` function.
+``BindToNetDevice (Ptr<NetDevice> netdevice)`` will bind the socket
+to "0.0.0.0" and "::" (equivalent to calling ``Bind ()`` and ``Bind6 ()``,
+unless the socket has been already bound to a specific address.
+Summarizing, the correct sequence is::
+
+      Ptr<Udp> udpSocketFactory = GetNode ()->GetObject<Udp> ();
+      Ptr<Socket> m_socket = socketFactory->CreateSocket ();
+      m_socket->BindToNetDevice (n_netDevice);
+     ...
+
+or::
+
+      Ptr<Udp> udpSocketFactory = GetNode ()->GetObject<Udp> ();
+      Ptr<Socket> m_socket = socketFactory->CreateSocket ();
+      m_socket->Bind (m_local_address);
+      m_socket->BindToNetDevice (n_netDevice);
+      ...
+
+The following raises an error::
+
+      Ptr<Udp> udpSocketFactory = GetNode ()->GetObject<Udp> ();
+      Ptr<Socket> m_socket = socketFactory->CreateSocket ();
+      m_socket->BindToNetDevice (n_netDevice);
+      m_socket->Bind (m_local_address);
+      ...
+
 See the chapter on |ns3| sockets for more information.  
 
 We have described so far a socket factory (e.g. ``class Udp``) and a socket,
diff -Naur ns-3.20/src/internet/examples/codel-vs-droptail-asymmetric.cc ns-3.21/src/internet/examples/codel-vs-droptail-asymmetric.cc
--- ns-3.20/src/internet/examples/codel-vs-droptail-asymmetric.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/examples/codel-vs-droptail-asymmetric.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,435 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 ResiliNets, ITTC, University of Kansas
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Truc Anh N Nguyen <trucanh524@gmail.com>
+ *
+ */
+
+/*
+ * This is an example that compares CoDel and DropTail queues using a
+ * typical cable modem topology and delay
+ * (total RTT 37 ms as measured by Measuring Broadband America)
+ *
+ *          10gigE         22 Mb/s         gigE
+ *           15 ms          1 ms           0.1 ms
+ *  --------       ------- (1)    --------        -------
+ *  |      |------>|      |------>|      |------->|     |
+ *  |server|       |CMTS  |       |Router|        |Host |
+ *  |      |<------|      |<------|      |<-------|     |
+ *  --------       --------    (2)--------        -------
+ *          10gigE         5 Mb/s          gigE
+ *           15 ms         6 ms            0.1 ms
+ *                                                                     -----------------
+ * (1) DropTail queue , 256K bytes
+ * (2) DropTail, CoDel, FqCoDel, SfqCoDel, etc.
+ *
+ * The server initiates a bulk send TCP transfer to the host.
+ * The host initiates a bulk send TCP transfer to the server.
+ * Also, isochronous traffic (VoIP-like) between server and host
+ * The default TCP version in ns-3, TcpNewReno, is used as the transport-layer
+ * protocol.
+ * Packets transmitted during a simulation run are captured into a .pcap file,
+ * and congestion window values are also traced.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/config-store-module.h"
+#include "ns3/error-model.h"
+#include "ns3/tcp-header.h"
+#include "ns3/udp-header.h"
+#include "ns3/enum.h"
+#include "ns3/event-id.h"
+#include "ns3/ipv4-global-routing-helper.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("CoDelDropTailAsymmetricTest");
+
+static void
+CwndTracer (Ptr<OutputStreamWrapper>stream, uint32_t oldval, uint32_t newval)
+{
+  *stream->GetStream () << oldval << " " << newval << std::endl;
+}
+
+static void
+TraceCwnd (std::string cwndTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (cwndTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for cwnd provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (cwndTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/0/$ns3::TcpL4Protocol/SocketList/0/CongestionWindow",MakeBoundCallback (&CwndTracer, stream));
+    }
+}
+
+static void
+SojournTracer (Ptr<OutputStreamWrapper>stream, Time oldval, Time newval)
+{
+  *stream->GetStream () << oldval << " " << newval << std::endl;
+}
+
+static void
+TraceSojourn (std::string sojournTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (sojournTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for sojourn provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (sojournTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/2/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/$ns3::CoDelQueue/Sojourn", MakeBoundCallback (&SojournTracer, stream));
+    }
+}
+
+static void
+QueueLengthTracer (Ptr<OutputStreamWrapper>stream, uint32_t oldval, uint32_t newval)
+{
+  *stream->GetStream () << oldval << " " << newval << std::endl;
+}
+
+static void
+TraceQueueLength (std::string queueLengthTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (queueLengthTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for queue length provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (queueLengthTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/2/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/$ns3::CoDelQueue/BytesInQueue", MakeBoundCallback (&QueueLengthTracer, stream));
+    }
+}
+
+static void
+EveryDropTracer (Ptr<OutputStreamWrapper>stream, Ptr<const Packet> p)
+{
+  *stream->GetStream () << Simulator::Now ().GetSeconds () << " " << p << std::endl;
+}
+
+static void
+TraceEveryDrop (std::string everyDropTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (everyDropTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for every drop event provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (everyDropTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/2/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/Drop", MakeBoundCallback (&EveryDropTracer, stream));
+    }
+}
+
+static void
+DroppingStateTracer (Ptr<OutputStreamWrapper>stream, bool oldVal, bool newVal)
+{
+  if (oldVal == false && newVal == true)
+    {
+      NS_LOG_INFO ("Entering the dropping state");
+      *stream->GetStream () << Simulator::Now ().GetSeconds () << " ";
+    }
+  else if (oldVal == true && newVal == false)
+    {
+      NS_LOG_INFO ("Leaving the dropping state");
+      *stream->GetStream () << Simulator::Now ().GetSeconds ()  << std::endl;
+    }
+}
+
+static void
+TraceDroppingState (std::string dropStateTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (dropStateTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for dropping state provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (dropStateTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/2/DeviceList/1/$ns3::PointToPointNetDevice/TxQueue/$ns3::CoDelQueue/DropState", MakeBoundCallback (&DroppingStateTracer, stream));
+    }
+}
+
+void
+CreateBulkFlow (AddressValue remoteAddress, Ptr<Node> sender, uint32_t pktSize, float stopTime)
+{
+  BulkSendHelper sourceHelper ("ns3::TcpSocketFactory", Address ());
+  sourceHelper.SetAttribute ("Remote", remoteAddress);
+  sourceHelper.SetAttribute ("SendSize", UintegerValue (pktSize));
+  sourceHelper.SetAttribute ("MaxBytes", UintegerValue (0));
+  ApplicationContainer sourceApp = sourceHelper.Install (sender);
+  sourceApp.Start (Seconds (0));
+  sourceApp.Stop (Seconds (stopTime - 3));
+}
+
+void
+CreateOnOffFlow (AddressValue remoteAddress, Ptr<Node> sender, float stopTime)
+{
+  OnOffHelper sourceHelper ("ns3::UdpSocketFactory", Address ());
+  sourceHelper.SetAttribute ("PacketSize", UintegerValue (280));
+  sourceHelper.SetAttribute ("Remote", remoteAddress);
+  ApplicationContainer sourceApp = sourceHelper.Install (sender);
+  sourceApp.Start (Seconds (0));
+  sourceApp.Stop (Seconds (stopTime - 3));
+}
+
+int main (int argc, char *argv[])
+{
+  std::string serverCmtsDelay = "15ms";
+  std::string cmtsRouterDelay = "6ms";
+  std::string routerHostDelay = "0.1ms";
+  std::string serverLanDataRate = "10Gbps";
+  std::string cmtsLanDataRate = "10Gbps";
+  std::string cmtsWanDataRate = "22Mbps";
+  std::string routerWanDataRate = "5Mbps";
+  std::string routerLanDataRate = "10Gbps";
+  std::string hostLanDataRate = "10Gbps";
+
+  std::string routerWanQueueType = "CoDel";           // outbound cable router queue
+  uint32_t pktSize = 1458;                // in bytes. 1458 to prevent fragments
+  uint32_t queueSize = 1000;              // in packets
+  uint32_t numOfUpLoadBulkFlows = 1;      // # of upload bulk transfer flows
+  uint32_t numOfDownLoadBulkFlows = 1;    // # of download bulk transfer flows
+  uint32_t numOfUpLoadOnOffFlows = 1;     // # of upload onoff flows
+  uint32_t numOfDownLoadOnOffFlows = 1;   // # of download onoff flows
+  bool isPcapEnabled = true;
+
+  float startTime = 0.1;
+  float simDuration = 60;        //in seconds
+
+  std::string fileNamePrefix = "codel-vs-droptail-asymmetric";
+  bool logging = true;
+
+  CommandLine cmd;
+  cmd.AddValue ("serverCmtsDelay", "Link delay between server and CMTS", serverCmtsDelay);
+  cmd.AddValue ("cmtsRouterDelay", "Link delay between CMTS and rounter", cmtsRouterDelay);
+  cmd.AddValue ("routerHostDelay", "Link delay between router and host", routerHostDelay);
+  cmd.AddValue ("serverLanDataRate", "Server LAN net device data rate", serverLanDataRate);
+  cmd.AddValue ("cmtsLanDataRate", "CMTS LAN net device data rate", cmtsLanDataRate);
+  cmd.AddValue ("cmtsWanDataRate", "CMTS WAN net device data rate", cmtsWanDataRate);
+  cmd.AddValue ("routerWanDataRate", "Router WAN net device data rate", routerWanDataRate);
+  cmd.AddValue ("routerLanDataRate", "Router LAN net device data rate", routerLanDataRate);
+  cmd.AddValue ("hostLanDataRate", "Host LAN net device data rate", hostLanDataRate);
+  cmd.AddValue ("routerWanQueueType", "Router WAN net device queue type", routerWanQueueType);
+  cmd.AddValue ("queueSize", "Queue size in packets", queueSize);
+  cmd.AddValue ("pktSize", "Packet size in bytes", pktSize);
+  cmd.AddValue ("numOfUpLoadBulkFlows", "Number of upload bulk transfer flows", numOfUpLoadBulkFlows);
+  cmd.AddValue ("numOfDownLoadBulkFlows", "Number of download bulk transfer flows", numOfDownLoadBulkFlows);
+  cmd.AddValue ("numOfUpLoadOnOffFlows", "Number of upload OnOff flows", numOfUpLoadOnOffFlows);
+  cmd.AddValue ("numOfDownLoadOnOffFlows", "Number of download OnOff flows", numOfDownLoadOnOffFlows);
+  cmd.AddValue ("startTime", "Simulation start time", startTime);
+  cmd.AddValue ("simDuration", "Simulation duration in seconds", simDuration);
+  cmd.AddValue ("isPcapEnabled", "Flag to enable/disable pcap", isPcapEnabled);
+  cmd.AddValue ("logging", "Flag to enable/disable logging", logging);
+  cmd.Parse (argc, argv);
+
+  float stopTime = startTime + simDuration;
+
+  std::string pcapFileName = fileNamePrefix + "-" + routerWanQueueType;
+  std::string cwndTrFileName = fileNamePrefix + "-" + routerWanQueueType + "-cwnd" + ".tr";
+  std::string attributeFileName = fileNamePrefix + "-" + routerWanQueueType + ".attr";
+  std::string sojournTrFileName = fileNamePrefix + "-" + routerWanQueueType + "-sojourn" + ".tr";
+  std::string queueLengthTrFileName = fileNamePrefix + "-" + routerWanQueueType + "-length" + ".tr";
+  std::string everyDropTrFileName = fileNamePrefix + "-" + routerWanQueueType + "-drop" + ".tr";
+  std::string dropStateTrFileName = fileNamePrefix + "-" + routerWanQueueType + "-drop-state" + ".tr";
+  if (logging)
+    {
+      //LogComponentEnable ("CoDelDropTailAsymmetricTest", LOG_LEVEL_ALL);
+      //LogComponentEnable ("BulkSendApplication", LOG_LEVEL_INFO);
+      //LogComponentEnable ("DropTailQueue", LOG_LEVEL_ALL);
+      LogComponentEnable ("CoDelQueue", LOG_LEVEL_FUNCTION);
+    }
+
+  // Queue defaults
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", UintegerValue (queueSize));
+  Config::SetDefault ("ns3::CoDelQueue::MaxPackets", UintegerValue (queueSize));
+  Config::SetDefault ("ns3::DropTailQueue::Mode", StringValue ("QUEUE_MODE_PACKETS"));
+  Config::SetDefault ("ns3::CoDelQueue::Mode", StringValue ("QUEUE_MODE_PACKETS"));
+
+  // Create the nodes
+  NS_LOG_INFO ("Create nodes");
+  NodeContainer nodes;
+  nodes.Create (4);
+  // Descriptive names
+  Names::Add ("server", nodes.Get (0));
+  Names::Add ("cmts", nodes.Get (1));
+  Names::Add ("router", nodes.Get (2));
+  Names::Add ("host", nodes.Get (3));
+  NodeContainer serverCmts;
+  serverCmts = NodeContainer (nodes.Get (0), nodes.Get (1));
+  NodeContainer cmtsRouter;
+  cmtsRouter = NodeContainer (nodes.Get (1), nodes.Get (2));
+  NodeContainer routerHost;
+  routerHost = NodeContainer (nodes.Get (2), nodes.Get (3));
+
+  // Enable checksum
+  if (isPcapEnabled)
+    {
+      GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+    }
+
+  Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (pktSize));
+
+  NS_LOG_INFO ("Install Internet stack on all nodes");
+  InternetStackHelper stack;
+  stack.InstallAll ();
+
+  NS_LOG_INFO ("Create channels and install net devices on nodes");
+  PointToPointHelper p2p;
+
+  p2p.SetChannelAttribute ("Delay", StringValue (serverCmtsDelay));
+  NetDeviceContainer serverCmtsDev = p2p.Install (serverCmts);
+  Names::Add ("server/lan", serverCmtsDev.Get (0));
+  Names::Add ("cmts/lan", serverCmtsDev.Get (1));
+  Ptr<PointToPointNetDevice> serverLanDev = DynamicCast<PointToPointNetDevice> (serverCmtsDev.Get (0));
+  serverLanDev->SetAttribute ("DataRate", StringValue (serverLanDataRate));
+  Ptr<PointToPointNetDevice> cmtsLanDev = DynamicCast<PointToPointNetDevice> (serverCmtsDev.Get (1));
+  cmtsLanDev->SetAttribute ("DataRate", StringValue (cmtsLanDataRate));
+
+  p2p.SetChannelAttribute ("Delay", StringValue (cmtsRouterDelay));
+  NetDeviceContainer cmtsRouterDev = p2p.Install (cmtsRouter);
+  Names::Add ("cmts/wan", cmtsRouterDev.Get (0));
+  Names::Add ("router/wan", cmtsRouterDev.Get (1));
+  Ptr<PointToPointNetDevice> cmtsWanDev = DynamicCast<PointToPointNetDevice> (cmtsRouterDev.Get (0));
+  cmtsWanDev->SetAttribute ("DataRate", StringValue (cmtsWanDataRate));
+  Ptr<Queue> queue = cmtsWanDev->GetQueue ();
+  DynamicCast<DropTailQueue> (queue)->SetMode (DropTailQueue::QUEUE_MODE_BYTES);
+  DynamicCast<DropTailQueue> (queue)->SetAttribute ("MaxBytes", UintegerValue (256000));
+
+  Ptr<PointToPointNetDevice> routerWanDev = DynamicCast<PointToPointNetDevice> (cmtsRouterDev.Get (1));
+  routerWanDev->SetAttribute ("DataRate", StringValue (routerWanDataRate));
+  if (routerWanQueueType.compare ("DropTail") == 0)
+    {
+      Ptr<Queue> dropTail = CreateObject<DropTailQueue> ();
+      routerWanDev->SetQueue (dropTail);
+    }
+  else if (routerWanQueueType.compare ("CoDel") == 0)
+    {
+      Ptr<Queue> codel = CreateObject<CoDelQueue> ();
+      routerWanDev->SetQueue (codel);
+    }
+
+  p2p.SetChannelAttribute ("Delay", StringValue (routerHostDelay));
+  NetDeviceContainer routerHostDev = p2p.Install (routerHost);
+  Names::Add ("router/lan", routerHostDev.Get (0));
+  Names::Add ("host/lan", routerHostDev.Get (1));
+  Ptr<PointToPointNetDevice> routerLanDev = DynamicCast<PointToPointNetDevice> (routerHostDev.Get (0));
+  routerLanDev->SetAttribute ("DataRate", StringValue (routerLanDataRate));
+  Ptr<PointToPointNetDevice> hostLanDev = DynamicCast<PointToPointNetDevice> (routerHostDev.Get (1));
+  hostLanDev->SetAttribute ("DataRate", StringValue (hostLanDataRate));
+
+  NS_LOG_INFO ("Assign IP Addresses");
+  Ipv4AddressHelper ipv4;
+  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+  Ipv4InterfaceContainer serverCmtsInterface = ipv4.Assign (serverCmtsDev);
+  ipv4.SetBase ("10.1.2.0", "255.255.255.0");
+  Ipv4InterfaceContainer cmtsRouterInterface = ipv4.Assign (cmtsRouterDev);
+  ipv4.SetBase ("10.1.3.0", "255.255.255.0");
+  Ipv4InterfaceContainer routerHostInterface = ipv4.Assign (routerHostDev);
+
+  NS_LOG_INFO ("Initialize Global Routing");
+  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+
+  NS_LOG_INFO ("Configure downstream");
+  uint16_t port1 = 50000;
+  Address sinkLocalAddress1 (InetSocketAddress (Ipv4Address::GetAny (), port1));
+  PacketSinkHelper sinkHelper1 ("ns3::TcpSocketFactory", sinkLocalAddress1);
+  ApplicationContainer sinkApp1 = sinkHelper1.Install (routerHost.Get (1));
+  sinkApp1.Start (Seconds (0));
+  sinkApp1.Stop (Seconds (stopTime));
+  AddressValue remoteAddress1 (InetSocketAddress (routerHostInterface.GetAddress (1), port1));
+  while (numOfDownLoadBulkFlows)
+    {
+      CreateBulkFlow (remoteAddress1, serverCmts.Get (0), pktSize, stopTime);
+      numOfDownLoadBulkFlows--;
+    }
+
+  while (numOfDownLoadOnOffFlows)
+    {
+      CreateOnOffFlow (remoteAddress1, serverCmts.Get (0), stopTime);
+      numOfDownLoadOnOffFlows--;
+    }
+
+  NS_LOG_INFO ("Configure upstream");
+  uint16_t port2 = 50001;
+  Address sinkLocalAddress2 (InetSocketAddress (Ipv4Address::GetAny (), port2));
+  PacketSinkHelper sinkHelper2 ("ns3::TcpSocketFactory", sinkLocalAddress2);
+  ApplicationContainer sinkApp2 = sinkHelper2.Install (serverCmts.Get (0));
+  sinkApp2.Start (Seconds (0));
+  sinkApp2.Stop (Seconds (stopTime));
+  AddressValue remoteAddress2 (InetSocketAddress (serverCmtsInterface.GetAddress (0), port2));
+  while (numOfUpLoadBulkFlows)
+    {
+      CreateBulkFlow (remoteAddress2, routerHost.Get (1), pktSize, stopTime);
+      numOfUpLoadBulkFlows--;
+    }
+
+  while (numOfUpLoadOnOffFlows)
+    {
+      CreateOnOffFlow (remoteAddress2, routerHost.Get (1), stopTime);
+      numOfUpLoadOnOffFlows--;
+    }
+
+  Simulator::Schedule (Seconds (0.00001), &TraceCwnd, cwndTrFileName);
+  TraceEveryDrop (everyDropTrFileName);
+  if (routerWanQueueType.compare ("CoDel") == 0)
+    {
+      TraceSojourn (sojournTrFileName);
+      TraceQueueLength (queueLengthTrFileName);
+      TraceDroppingState (dropStateTrFileName);
+    }
+  if (isPcapEnabled)
+    {
+      p2p.EnablePcapAll (pcapFileName);
+    }
+
+  // Output config store to txt format
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue (attributeFileName));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("RawText"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  ConfigStore outputConfig;
+  outputConfig.ConfigureDefaults ();
+  outputConfig.ConfigureAttributes ();
+
+  Simulator::Stop (Seconds (stopTime));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/internet/examples/codel-vs-droptail-basic-test.cc ns-3.21/src/internet/examples/codel-vs-droptail-basic-test.cc
--- ns-3.20/src/internet/examples/codel-vs-droptail-basic-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/examples/codel-vs-droptail-basic-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,219 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 ResiliNets, ITTC, University of Kansas
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Truc Anh N Nguyen <trucanh524@gmail.com>
+ *
+ */
+
+/*
+ * This is a basic example that compares CoDel and DropTail queues using a simple, single-flow topology:
+ *
+ * source -------------------------- router ------------------------ sink
+ *          100 Mb/s, 0.1 ms        droptail       5 Mb/s, 5ms
+ *                                 or codel        bottleneck
+ *
+ * The source generates traffic across the network using BulkSendApplication.
+ * The default TCP version in ns-3, TcpNewReno, is used as the transport-layer protocol.
+ * Packets transmitted during a simulation run are captured into a .pcap file, and
+ * congestion window values are also traced.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/error-model.h"
+#include "ns3/tcp-header.h"
+#include "ns3/udp-header.h"
+#include "ns3/enum.h"
+#include "ns3/event-id.h"
+#include "ns3/ipv4-global-routing-helper.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("CoDelDropTailBasicTest");
+
+static void
+CwndTracer (Ptr<OutputStreamWrapper>stream, uint32_t oldval, uint32_t newval)
+{
+  *stream->GetStream () << oldval << " " << newval << std::endl;
+}
+
+static void
+TraceCwnd (std::string cwndTrFileName)
+{
+  AsciiTraceHelper ascii;
+  if (cwndTrFileName.compare ("") == 0)
+    {
+      NS_LOG_DEBUG ("No trace file for cwnd provided");
+      return;
+    }
+  else
+    {
+      Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream (cwndTrFileName.c_str ());
+      Config::ConnectWithoutContext ("/NodeList/1/$ns3::TcpL4Protocol/SocketList/0/CongestionWindow",MakeBoundCallback (&CwndTracer, stream));
+    }
+}
+
+int main (int argc, char *argv[])
+{
+  std::string bottleneckBandwidth = "5Mbps";
+  std::string bottleneckDelay = "5ms";
+  std::string accessBandwidth = "100Mbps";
+  std::string accessDelay = "0.1ms";
+
+  std::string queueType = "DropTail";       //DropTail or CoDel
+  uint32_t queueSize = 1000;      //in packets
+  uint32_t pktSize = 1458;        //in bytes. 1458 to prevent fragments
+  float startTime = 0.1;
+  float simDuration = 60;        //in seconds
+
+  bool isPcapEnabled = true;
+  std::string pcapFileName = "pcapFileDropTail.pcap";
+  std::string cwndTrFileName = "cwndDropTail.tr";
+  bool logging = false;
+
+  CommandLine cmd;
+  cmd.AddValue ("bottleneckBandwidth", "Bottleneck bandwidth", bottleneckBandwidth);
+  cmd.AddValue ("bottleneckDelay", "Bottleneck delay", bottleneckDelay);
+  cmd.AddValue ("accessBandwidth", "Access link bandwidth", accessBandwidth);
+  cmd.AddValue ("accessDelay", "Access link delay", accessDelay);
+  cmd.AddValue ("queueType", "Queue type: DropTail, CoDel", queueType);
+  cmd.AddValue ("queueSize", "Queue size in packets", queueSize);
+  cmd.AddValue ("pktSize", "Packet size in bytes", pktSize);
+  cmd.AddValue ("startTime", "Simulation start time", startTime);
+  cmd.AddValue ("simDuration", "Simulation duration in seconds", simDuration);
+  cmd.AddValue ("isPcapEnabled", "Flag to enable/disable pcap", isPcapEnabled);
+  cmd.AddValue ("pcapFileName", "Name of pcap file", pcapFileName);
+  cmd.AddValue ("cwndTrFileName", "Name of cwnd trace file", cwndTrFileName);
+  cmd.AddValue ("logging", "Flag to enable/disable logging", logging);
+  cmd.Parse (argc, argv);
+
+  float stopTime = startTime + simDuration;
+
+  if (logging)
+    {
+      LogComponentEnable ("CoDelDropTailBasicTest", LOG_LEVEL_ALL);
+      LogComponentEnable ("BulkSendApplication", LOG_LEVEL_INFO);
+      LogComponentEnable ("DropTailQueue", LOG_LEVEL_ALL);
+      LogComponentEnable ("CoDelQueue", LOG_LEVEL_ALL);
+    }
+
+  // Enable checksum
+  if (isPcapEnabled)
+    {
+      GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+    }
+
+  // Create gateway, source, and sink
+  NodeContainer gateway;
+  gateway.Create (1);
+  NodeContainer source;
+  source.Create (1);
+  NodeContainer sink;
+  sink.Create (1);
+
+  // Create and configure access link and bottleneck link
+  PointToPointHelper accessLink;
+  accessLink.SetDeviceAttribute ("DataRate", StringValue (accessBandwidth));
+  accessLink.SetChannelAttribute ("Delay", StringValue (accessDelay));
+
+  PointToPointHelper bottleneckLink;
+  bottleneckLink.SetDeviceAttribute ("DataRate", StringValue (bottleneckBandwidth));
+  bottleneckLink.SetChannelAttribute ("Delay", StringValue (bottleneckDelay));
+
+  // Configure the queue
+  if (queueType.compare ("DropTail") == 0)
+    {
+      bottleneckLink.SetQueue ("ns3::DropTailQueue",
+                               "Mode", StringValue ("QUEUE_MODE_PACKETS"),
+                               "MaxPackets", UintegerValue (queueSize));
+    }
+  else if (queueType.compare ("CoDel") == 0)
+    {
+      bottleneckLink.SetQueue ("ns3::CoDelQueue",
+                               "Mode", StringValue ("QUEUE_MODE_PACKETS"),
+                               "MaxPackets", UintegerValue (queueSize));
+    }
+  else
+    {
+      NS_LOG_DEBUG ("Invalid queue type");
+      exit (1);
+    }
+
+  InternetStackHelper stack;
+  stack.InstallAll ();
+
+  Ipv4AddressHelper address;
+  address.SetBase ("10.0.0.0", "255.255.255.0");
+
+  // Configure the source and sink net devices
+  // and the channels between the source/sink and the gateway
+  Ipv4InterfaceContainer sinkInterface;
+
+  NetDeviceContainer devices;
+  devices = accessLink.Install (source.Get (0), gateway.Get (0));
+  address.NewNetwork ();
+  Ipv4InterfaceContainer interfaces = address.Assign (devices);
+  devices = bottleneckLink.Install (gateway.Get (0), sink.Get (0));
+  address.NewNetwork ();
+  interfaces = address.Assign (devices);
+
+  sinkInterface.Add (interfaces.Get (1));
+
+  NS_LOG_INFO ("Initialize Global Routing.");
+  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+
+  uint16_t port = 50000;
+  Address sinkLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));
+  PacketSinkHelper sinkHelper ("ns3::TcpSocketFactory", sinkLocalAddress);
+
+  // Configure application
+  AddressValue remoteAddress (InetSocketAddress (sinkInterface.GetAddress (0, 0), port));
+  Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (pktSize));
+  BulkSendHelper ftp ("ns3::TcpSocketFactory", Address ());
+  ftp.SetAttribute ("Remote", remoteAddress);
+  ftp.SetAttribute ("SendSize", UintegerValue (pktSize));
+  ftp.SetAttribute ("MaxBytes", UintegerValue (0));
+
+  ApplicationContainer sourceApp = ftp.Install (source.Get (0));
+  sourceApp.Start (Seconds (0));
+  sourceApp.Stop (Seconds (stopTime - 3));
+
+  sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
+  ApplicationContainer sinkApp = sinkHelper.Install (sink);
+  sinkApp.Start (Seconds (0));
+  sinkApp.Stop (Seconds (stopTime));
+
+  Simulator::Schedule (Seconds (0.00001), &TraceCwnd, cwndTrFileName);
+
+  if (isPcapEnabled)
+    {
+      accessLink.EnablePcap (pcapFileName,source,true);
+    }
+
+  Simulator::Stop (Seconds (stopTime));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/internet/examples/wscript ns-3.21/src/internet/examples/wscript
--- ns-3.20/src/internet/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -7,3 +7,11 @@
     obj = bld.create_ns3_program('main-simple',
                                  ['network', 'internet', 'applications'])
     obj.source = 'main-simple.cc'
+    
+    obj = bld.create_ns3_program('codel-vs-droptail-basic-test',
+                                 ['point-to-point','network', 'internet', 'applications'])
+    obj.source = 'codel-vs-droptail-basic-test.cc'
+
+    obj = bld.create_ns3_program('codel-vs-droptail-asymmetric',
+                                 ['point-to-point','network', 'internet', 'applications'])
+    obj.source = 'codel-vs-droptail-asymmetric.cc'
diff -Naur ns-3.20/src/internet/helper/ipv4-address-helper.h ns-3.21/src/internet/helper/ipv4-address-helper.h
--- ns-3.20/src/internet/helper/ipv4-address-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/helper/ipv4-address-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -55,6 +55,9 @@
  * @brief Construct a helper class to make life easier while doing simple IPv4
  * address assignment in scripts.  This version sets the base and mask
  * in the constructor
+ * @param network the network part
+ * @param mask the address mask
+ * @param base the host part to start from
  */
   Ipv4AddressHelper (Ipv4Address network, Ipv4Mask mask, 
                      Ipv4Address base = "0.0.0.1");
diff -Naur ns-3.20/src/internet/helper/ripng-helper.h ns-3.21/src/internet/helper/ripng-helper.h
--- ns-3.20/src/internet/helper/ripng-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/helper/ripng-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -135,7 +135,7 @@
    */
   RipNgHelper &operator = (const RipNgHelper &o);
 
-  ObjectFactory m_factory; //|< Object Factory
+  ObjectFactory m_factory; //!< Object Factory
 
   std::map< Ptr<Node>, std::set<uint32_t> > m_interfaceExclusions; //!< Interface Exclusion set
   std::map< Ptr<Node>, std::map<uint32_t, uint8_t> > m_interfaceMetrics; //!< Interface Metric set
diff -Naur ns-3.20/src/internet/model/codel-queue.cc ns-3.21/src/internet/model/codel-queue.cc
--- ns-3.20/src/internet/model/codel-queue.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/codel-queue.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,564 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Andrew McGregor
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Codel, the COntrolled DELay Queueing discipline
+ * Based on ns2 simulation code presented by Kathie Nichols
+ *
+ * This port based on linux kernel code by
+ * Authors:	Dave Täht <d@taht.net>
+ *		Eric Dumazet <edumazet@google.com>
+ *
+ * Ported to ns-3 by: Andrew McGregor <andrewmcgr@gmail.com>
+*/
+
+#include "ns3/log.h"
+#include "ns3/enum.h"
+#include "ns3/uinteger.h"
+#include "ns3/abort.h"
+#include "codel-queue.h"
+
+NS_LOG_COMPONENT_DEFINE ("CoDelQueue");
+
+namespace ns3 {
+
+/* borrowed from the linux kernel */
+static inline uint32_t ReciprocalDivide (uint32_t A, uint32_t R)
+{
+  return (uint32_t)(((uint64_t)A * R) >> 32);
+}
+
+/* end kernel borrowings */
+
+static uint32_t CoDelGetTime (void)
+{
+  Time time = Simulator::Now ();
+  uint64_t ns = time.GetNanoSeconds ();
+
+  return ns >> CODEL_SHIFT;
+}
+
+class CoDelTimestampTag : public Tag
+{
+public:
+  CoDelTimestampTag ();
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer i) const;
+  virtual void Deserialize (TagBuffer i);
+  virtual void Print (std::ostream &os) const;
+
+  Time GetTxTime (void) const;
+private:
+  uint64_t m_creationTime;
+};
+
+CoDelTimestampTag::CoDelTimestampTag ()
+  : m_creationTime (Simulator::Now ().GetTimeStep ())
+{
+}
+
+TypeId
+CoDelTimestampTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CoDelTimestampTag")
+    .SetParent<Tag> ()
+    .AddConstructor<CoDelTimestampTag> ()
+    .AddAttribute ("CreationTime",
+                   "The time at which the timestamp was created",
+                   StringValue ("0.0s"),
+                   MakeTimeAccessor (&CoDelTimestampTag::GetTxTime),
+                   MakeTimeChecker ())
+  ;
+  return tid;
+}
+
+TypeId
+CoDelTimestampTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+uint32_t
+CoDelTimestampTag::GetSerializedSize (void) const
+{
+  return 8;
+}
+void
+CoDelTimestampTag::Serialize (TagBuffer i) const
+{
+  i.WriteU64 (m_creationTime);
+}
+void
+CoDelTimestampTag::Deserialize (TagBuffer i)
+{
+  m_creationTime = i.ReadU64 ();
+}
+void
+CoDelTimestampTag::Print (std::ostream &os) const
+{
+  os << "CreationTime=" << m_creationTime;
+}
+Time
+CoDelTimestampTag::GetTxTime (void) const
+{
+  return TimeStep (m_creationTime);
+}
+
+NS_OBJECT_ENSURE_REGISTERED (CoDelQueue);
+
+TypeId CoDelQueue::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CoDelQueue")
+    .SetParent<Queue> ()
+    .AddConstructor<CoDelQueue> ()
+    .AddAttribute ("Mode",
+                   "Whether to use Bytes (see MaxBytes) or Packets (see MaxPackets) as the maximum queue size metric.",
+                   EnumValue (QUEUE_MODE_BYTES),
+                   MakeEnumAccessor (&CoDelQueue::SetMode),
+                   MakeEnumChecker (QUEUE_MODE_BYTES, "QUEUE_MODE_BYTES",
+                                    QUEUE_MODE_PACKETS, "QUEUE_MODE_PACKETS"))
+    .AddAttribute ("MaxPackets",
+                   "The maximum number of packets accepted by this CoDelQueue.",
+                   UintegerValue (DEFAULT_CODEL_LIMIT),
+                   MakeUintegerAccessor (&CoDelQueue::m_maxPackets),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("MaxBytes",
+                   "The maximum number of bytes accepted by this CoDelQueue.",
+                   UintegerValue (1500 * DEFAULT_CODEL_LIMIT),
+                   MakeUintegerAccessor (&CoDelQueue::m_maxBytes),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("MinBytes",
+                   "The CoDel algorithm minbytes parameter.",
+                   UintegerValue (1500),
+                   MakeUintegerAccessor (&CoDelQueue::m_minBytes),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("Interval",
+                   "The CoDel algorithm interval",
+                   StringValue ("100ms"),
+                   MakeTimeAccessor (&CoDelQueue::m_interval),
+                   MakeTimeChecker ())
+    .AddAttribute ("Target",
+                   "The CoDel algorithm target queue delay",
+                   StringValue ("5ms"),
+                   MakeTimeAccessor (&CoDelQueue::m_target),
+                   MakeTimeChecker ())
+    .AddTraceSource ("Count",
+                     "CoDel count",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_count))
+    .AddTraceSource ("DropCount",
+                     "CoDel drop count",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_dropCount))
+    .AddTraceSource ("LastCount",
+                     "CoDel lastcount",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_lastCount))
+    .AddTraceSource ("DropState",
+                     "Dropping state",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_dropping))
+    .AddTraceSource ("BytesInQueue",
+                     "Number of bytes in the queue",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_bytesInQueue))
+    .AddTraceSource ("Sojourn",
+                     "Time in the queue",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_sojourn))
+    .AddTraceSource ("DropNext",
+                     "Time until next packet drop",
+                     MakeTraceSourceAccessor (&CoDelQueue::m_dropNext))
+  ;
+
+  return tid;
+}
+
+CoDelQueue::CoDelQueue ()
+  : Queue (),
+    m_packets (),
+    m_maxBytes (),
+    m_bytesInQueue (0),
+    m_count (0),
+    m_dropCount (0),
+    m_lastCount (0),
+    m_dropping (false),
+    m_recInvSqrt (~0U >> REC_INV_SQRT_SHIFT),
+    m_firstAboveTime (0),
+    m_dropNext (0),
+    m_state1 (0),
+    m_state2 (0),
+    m_state3 (0),
+    m_states (0),
+    m_dropOverLimit (0),
+    m_sojourn (0)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+CoDelQueue::~CoDelQueue ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+CoDelQueue::NewtonStep (void)
+{
+  NS_LOG_FUNCTION (this);
+  uint32_t invsqrt = ((uint32_t) m_recInvSqrt) << REC_INV_SQRT_SHIFT;
+  uint32_t invsqrt2 = ((uint64_t) invsqrt * invsqrt) >> 32;
+  uint64_t val = (3ll << 32) - ((uint64_t) m_count * invsqrt2);
+
+  val >>= 2; /* avoid overflow */
+  val = (val * invsqrt) >> (32 - 2 + 1);
+  m_recInvSqrt = val >> REC_INV_SQRT_SHIFT;
+}
+
+uint32_t
+CoDelQueue::ControlLaw (uint32_t t)
+{
+  NS_LOG_FUNCTION (this);
+  return t + ReciprocalDivide (Time2CoDel (m_interval), m_recInvSqrt << REC_INV_SQRT_SHIFT);
+}
+
+void
+CoDelQueue::SetMode (CoDelQueue::QueueMode mode)
+{
+  NS_LOG_FUNCTION (mode);
+  m_mode = mode;
+}
+
+CoDelQueue::QueueMode
+CoDelQueue::GetMode (void)
+{
+  NS_LOG_FUNCTION (this);
+  return m_mode;
+}
+
+bool
+CoDelQueue::DoEnqueue (Ptr<Packet> p)
+{
+  NS_LOG_FUNCTION (this << p);
+
+  if (m_mode == QUEUE_MODE_PACKETS && (m_packets.size () + 1 > m_maxPackets))
+    {
+      NS_LOG_LOGIC ("Queue full (at max packets) -- droppping pkt");
+      Drop (p);
+      ++m_dropOverLimit;
+      return false;
+    }
+
+  if (m_mode == QUEUE_MODE_BYTES && (m_bytesInQueue + p->GetSize () > m_maxBytes))
+    {
+      NS_LOG_LOGIC ("Queue full (packet would exceed max bytes) -- droppping pkt");
+      Drop (p);
+      ++m_dropOverLimit;
+      return false;
+    }
+
+  // Tag packet with current time for DoDequeue() to compute sojourn time
+  CoDelTimestampTag tag;
+  p->AddPacketTag (tag);
+
+  m_bytesInQueue += p->GetSize ();
+  m_packets.push (p);
+
+  NS_LOG_LOGIC ("Number packets " << m_packets.size ());
+  NS_LOG_LOGIC ("Number bytes " << m_bytesInQueue);
+
+  return true;
+}
+
+bool
+CoDelQueue::OkToDrop (Ptr<Packet> p, uint32_t now)
+{
+  NS_LOG_FUNCTION (this);
+  CoDelTimestampTag tag;
+  bool okToDrop;
+  p->FindFirstMatchingByteTag (tag);
+  bool found = p->RemovePacketTag (tag);
+  NS_ASSERT_MSG (found, "found a packet without an input timestamp tag");
+  NS_UNUSED (found);    //silence compiler warning
+  Time delta = Simulator::Now () - tag.GetTxTime ();
+  NS_LOG_INFO ("Sojourn time " << delta.GetSeconds ());
+  m_sojourn = delta;
+  uint32_t sojournTime = Time2CoDel (delta);
+
+  if (CoDelTimeBefore (sojournTime, Time2CoDel (m_target))
+      || m_bytesInQueue < m_minBytes)
+    {
+      // went below so we'll stay below for at least q->interval
+      NS_LOG_LOGIC ("Sojourn time is below target or number of bytes in queue is less than minBytes; packet should not be dropped");
+      m_firstAboveTime = 0;
+      return false;
+    }
+  okToDrop = false;
+  if (m_firstAboveTime == 0)
+    {
+      /* just went above from below. If we stay above
+       * for at least q->interval we'll say it's ok to drop
+       */
+      NS_LOG_LOGIC ("Sojourn time has just gone above target from below, need to stay above for at least q->interval before packet can be dropped. ");
+      m_firstAboveTime = now + Time2CoDel (m_interval);
+    }
+  else
+  if (CoDelTimeAfter (now, m_firstAboveTime))
+    {
+      NS_LOG_LOGIC ("Sojourn time has been above target for at least q->interval; it's OK to (possibly) drop packet.");
+      okToDrop = true;
+      ++m_state1;
+    }
+  return okToDrop;
+}
+
+Ptr<Packet>
+CoDelQueue::DoDequeue (void)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_packets.empty ())
+    {
+      // Leave dropping state when queue is empty
+      m_dropping = false;
+      m_firstAboveTime = 0;
+      NS_LOG_LOGIC ("Queue empty");
+      return 0;
+    }
+  uint32_t now = CoDelGetTime ();
+  Ptr<Packet> p = m_packets.front ();
+  m_packets.pop ();
+  m_bytesInQueue -= p->GetSize ();
+
+  NS_LOG_LOGIC ("Popped " << p);
+  NS_LOG_LOGIC ("Number packets remaining " << m_packets.size ());
+  NS_LOG_LOGIC ("Number bytes remaining " << m_bytesInQueue);
+
+  // Determine if p should be dropped
+  bool okToDrop = OkToDrop (p, now);
+
+  if (m_dropping)
+    { // In the dropping state (sojourn time has gone above target and hasn't come down yet)
+      // Check if we can leave the dropping state or next drop should occur
+      NS_LOG_LOGIC ("In dropping state, check if it's OK to leave or next drop should occur");
+      if (!okToDrop)
+        {
+          /* sojourn time fell below target - leave dropping state */
+          NS_LOG_LOGIC ("Sojourn time goes below target, it's OK to leave dropping state.");
+          m_dropping = false;
+        }
+      else
+      if (CoDelTimeAfterEq (now, m_dropNext))
+        {
+          m_state2++;
+          while (m_dropping && CoDelTimeAfterEq (now, m_dropNext))
+            {
+              // It's time for the next drop. Drop the current packet and
+              // dequeue the next. The dequeue might take us out of dropping
+              // state. If not, schedule the next drop.
+              // A large amount of packets in queue might result in drop
+              // rates so high that the next drop should happen now,
+              // hence the while loop.
+              NS_LOG_LOGIC ("Sojourn time is still above target and it's time for next drop; dropping " << p);
+              Drop (p);
+              ++m_dropCount;
+              ++m_count;
+              NewtonStep ();
+              if (m_packets.empty ())
+                {
+                  m_dropping = false;
+                  NS_LOG_LOGIC ("Queue empty");
+                  ++m_states;
+                  return 0;
+                }
+              p = m_packets.front ();
+              m_packets.pop ();
+              m_bytesInQueue -= p->GetSize ();
+
+              NS_LOG_LOGIC ("Popped " << p);
+              NS_LOG_LOGIC ("Number packets remaining " << m_packets.size ());
+              NS_LOG_LOGIC ("Number bytes remaining " << m_bytesInQueue);
+
+              if (!OkToDrop (p, now))
+                {
+                  /* leave dropping state */
+                  NS_LOG_LOGIC ("Leaving dropping state");
+                  m_dropping = false;
+                }
+              else
+                {
+                  /* schedule the next drop */
+                  NS_LOG_LOGIC ("Running ControlLaw for input m_dropNext: " << (double)m_dropNext / 1000000);
+                  m_dropNext = ControlLaw (m_dropNext);
+                  NS_LOG_LOGIC ("Scheduled next drop at " << (double)m_dropNext / 1000000);
+                }
+            }
+        }
+    }
+  else
+    {
+      // Not in the dropping state
+      // Decide if we have to enter the dropping state and drop the first packet
+      NS_LOG_LOGIC ("Not in dropping state; decide if we have to enter the state and drop the first packet");
+      if (okToDrop)
+        {
+          // Drop the first packet and enter dropping state unless the queue is empty
+          NS_LOG_LOGIC ("Sojourn time goes above target, dropping the first packet " << p << " and entering the dropping state");
+          ++m_dropCount;
+          Drop (p);
+          if (m_packets.empty ())
+            {
+              m_dropping = false;
+              okToDrop = false;
+              NS_LOG_LOGIC ("Queue empty");
+              ++m_states;
+            }
+          else
+            {
+              p = m_packets.front ();
+              m_packets.pop ();
+              m_bytesInQueue -= p->GetSize ();
+
+              NS_LOG_LOGIC ("Popped " << p);
+              NS_LOG_LOGIC ("Number packets remaining " << m_packets.size ());
+              NS_LOG_LOGIC ("Number bytes remaining " << m_bytesInQueue);
+
+              okToDrop = OkToDrop (p, now);
+              m_dropping = true;
+            }
+          ++m_state3;
+          /*
+           * if min went above target close to when we last went below it
+           * assume that the drop rate that controlled the queue on the
+           * last cycle is a good starting point to control it now.
+           */
+          int delta = m_count - m_lastCount;
+          if (delta > 1 && CoDelTimeBefore (now - m_dropNext, 16 * Time2CoDel (m_interval)))
+            {
+              m_count = delta;
+              NewtonStep ();
+            }
+          else
+            {
+              m_count = 1;
+              m_recInvSqrt = ~0U >> REC_INV_SQRT_SHIFT;
+            }
+          m_lastCount = m_count;
+          NS_LOG_LOGIC ("Running ControlLaw for input now: " << (double)now);
+          m_dropNext = ControlLaw (now);
+          NS_LOG_LOGIC ("Scheduled next drop at " << (double)m_dropNext / 1000000 << " now " << (double)now / 1000000);
+        }
+    }
+  ++m_states;
+  return p;
+}
+
+uint32_t
+CoDelQueue::GetQueueSize (void)
+{
+  NS_LOG_FUNCTION (this);
+  if (GetMode () == QUEUE_MODE_BYTES)
+    {
+      return m_bytesInQueue;
+    }
+  else if (GetMode () == QUEUE_MODE_PACKETS)
+    {
+      return m_packets.size ();
+    }
+  else
+    {
+      NS_ABORT_MSG ("Unknown mode.");
+    }
+}
+
+uint32_t
+CoDelQueue::GetDropOverLimit (void)
+{
+  return m_dropOverLimit;
+}
+
+uint32_t
+CoDelQueue::GetDropCount (void)
+{
+  return m_dropCount;
+}
+
+Time
+CoDelQueue::GetTarget (void)
+{
+  return m_target;
+}
+
+Time
+CoDelQueue::GetInterval (void)
+{
+  return m_interval;
+}
+
+uint32_t
+CoDelQueue::GetDropNext (void)
+{
+  return m_dropNext;
+}
+
+Ptr<const Packet>
+CoDelQueue::DoPeek (void) const
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_packets.empty ())
+    {
+      NS_LOG_LOGIC ("Queue empty");
+      return 0;
+    }
+
+  Ptr<Packet> p = m_packets.front ();
+
+  NS_LOG_LOGIC ("Number packets " << m_packets.size ());
+  NS_LOG_LOGIC ("Number bytes " << m_bytesInQueue);
+
+  return p;
+}
+
+bool
+CoDelQueue::CoDelTimeAfter (uint32_t a, uint32_t b)
+{
+  return  ((int)(a) - (int)(b) > 0);
+}
+
+bool
+CoDelQueue::CoDelTimeAfterEq (uint32_t a, uint32_t b)
+{
+  return ((int)(a) - (int)(b) >= 0);
+}
+
+bool
+CoDelQueue::CoDelTimeBefore (uint32_t a, uint32_t b)
+{
+  return  ((int)(a) - (int)(b) < 0);
+}
+
+bool
+CoDelQueue::CoDelTimeBeforeEq (uint32_t a, uint32_t b)
+{
+  return ((int)(a) - (int)(b) <= 0);
+}
+
+uint32_t
+CoDelQueue::Time2CoDel (Time t)
+{
+  return (t.GetNanoSeconds () >> CODEL_SHIFT);
+}
+
+
+} // namespace ns3
+
diff -Naur ns-3.20/src/internet/model/codel-queue.h ns-3.21/src/internet/model/codel-queue.h
--- ns-3.20/src/internet/model/codel-queue.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/codel-queue.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,218 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Andrew McGregor
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Codel, the COntrolled DELay Queueing discipline
+ * Based on ns2 simulation code presented by Kathie Nichols
+ *
+ * This port based on linux kernel code by
+ * Authors:	Dave Täht <d@taht.net>
+ *		Eric Dumazet <edumazet@google.com>
+ *
+ * Ported to ns-3 by: Andrew McGregor <andrewmcgr@gmail.com>
+ */
+
+#ifndef CODEL_H
+#define CODEL_H
+
+#include <queue>
+#include "ns3/packet.h"
+#include "ns3/queue.h"
+#include "ns3/nstime.h"
+#include "ns3/simulator.h"
+#include "ns3/string.h"
+#include "ns3/traced-value.h"
+#include "ns3/trace-source-accessor.h"
+
+class CoDelQueueNewtonStepTest;  // Forward declaration for unit test
+class CoDelQueueControlLawTest;  // Forward declaration for unit test
+
+namespace ns3 {
+
+static const int  CODEL_SHIFT = 10;
+static const int DEFAULT_CODEL_LIMIT = 1000;
+
+#define REC_INV_SQRT_BITS (8 * sizeof(uint16_t))
+#define REC_INV_SQRT_SHIFT (32 - REC_INV_SQRT_BITS)
+
+class TraceContainer;
+
+/**
+ * \ingroup queue
+ *
+ * \brief A CoDel packet queue
+ */
+
+class CoDelQueue : public Queue
+{
+public:
+  static TypeId GetTypeId (void);
+
+  /**
+   * \brief CoDelQueue Constructor
+   *
+   * Creates a CoDel queue
+   */
+  CoDelQueue ();
+
+  virtual ~CoDelQueue ();
+
+  /**
+   * \brief Set the operating mode of this device.
+   *
+   * \param mode The operating mode of this device.
+   */
+  void SetMode (CoDelQueue::QueueMode mode);
+
+  /**
+   * \brief Get the encapsulation mode of this device.
+   *
+   * \returns The encapsulation mode of this device.
+   */
+  CoDelQueue::QueueMode  GetMode (void);
+
+  /**
+   * \brief Get the current value of the queue in bytes or packets.
+   *
+   * \returns The queue size in bytes or packets.
+   */
+  uint32_t GetQueueSize (void);
+
+  /**
+   * \brief Get the number of packets dropped when packets
+   * arrive at a full queue and cannot be enqueued.
+   *
+   * \returns The number of dropped packets
+   */
+  uint32_t GetDropOverLimit (void);
+
+  /**
+   * \brief Get the number of packets dropped according to CoDel algorithm
+   *
+   * \returns The number of dropped packets
+   */
+  uint32_t GetDropCount (void);
+
+  /**
+   * \brief Get the target queue delay
+   *
+   * \returns The target queue delay
+   */
+  Time GetTarget (void);
+
+  /**
+   * \brief Get the interval
+   *
+   * \returns The interval
+   */
+  Time GetInterval (void);
+
+  /**
+   * \brief Get the time for next packet drop while in the dropping state
+   *
+   * \returns The time for next packet drop
+   */
+  uint32_t GetDropNext (void);
+
+private:
+  friend class::CoDelQueueNewtonStepTest;  // Test code
+  friend class::CoDelQueueControlLawTest;  // Test code
+  /**
+   * \brief Add a packet to the queue
+   *
+   * \param p The packet to be added
+   * \returns True if the packet can be added, False if the packet is dropped due to full queue
+   */
+  virtual bool DoEnqueue (Ptr<Packet> p);
+
+  /**
+   * \brief Remove a packet from queue based on the current state
+   * If we are in dropping state, check if we could leave the dropping state
+   * or if we should perform next drop
+   * If we are not currently in dropping state, check if we need to enter the state
+   * and drop the first packet
+   *
+   * \returns The packet that is examined
+   */
+  virtual Ptr<Packet> DoDequeue (void);
+
+  virtual Ptr<const Packet> DoPeek (void) const;
+
+  /**
+   * \brief Calculate the reciprocal square root of m_count by using Newton's method
+   *  http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Iterative_methods_for_reciprocal_square_roots
+   * m_recInvSqrt (new) = (m_recInvSqrt (old) / 2) * (3 - m_count * m_recInvSqrt^2)
+   */
+  void NewtonStep (void);
+
+  /**
+   * \brief Determine the time for next drop
+   * CoDel control law is t + m_interval/sqrt(m_count).
+   * Here, we use m_recInvSqrt calculated by Newton's method in NewtonStep() to avoid
+   * both sqrt() and divide operations
+   *
+   * \param t Current next drop time
+   * \returns The new next drop time:
+   */
+  uint32_t ControlLaw (uint32_t t);
+
+  /**
+   * \brief Determine whether a packet is OK to be dropped. The packet
+   * may not be actually dropped (depending on the drop state)
+   *
+   * \param p The packet that is considered
+   * \param now The current time represented as 32-bit unsigned integer (us)
+   * \returns True if it is OK to drop the packet (sojourn time above target for at least interval)
+   */
+  bool OkToDrop (Ptr<Packet> p, uint32_t now);
+
+  bool CoDelTimeAfter (uint32_t a, uint32_t b);
+  bool CoDelTimeAfterEq (uint32_t a, uint32_t b);
+  bool CoDelTimeBefore (uint32_t a, uint32_t b);
+  bool CoDelTimeBeforeEq (uint32_t a, uint32_t b);
+
+  /**
+   * returned unsigned 32-bit integer representation of the input Time object
+   * units are microseconds
+   */
+  uint32_t Time2CoDel (Time t);
+
+  std::queue<Ptr<Packet> > m_packets;     //!< The packet queue
+  uint32_t m_maxPackets;                  //!< Max # of packets accepted by the queue
+  uint32_t m_maxBytes;                    //!< Max # of bytes accepted by the queue
+  TracedValue<uint32_t> m_bytesInQueue;   //!< The total number of bytes in queue
+  uint32_t m_minBytes;                    //!< Minimum bytes in queue to allow a packet drop
+  Time m_interval;                        //!< 100 ms sliding minimum time window width
+  Time m_target;                          //!< 5 ms target queue delay
+  TracedValue<uint32_t> m_count;          //!< Number of packets dropped since entering drop state
+  TracedValue<uint32_t> m_dropCount;      //!< Number of dropped packets according CoDel algorithm
+  TracedValue<uint32_t> m_lastCount;      //<! Last number of packets dropped since entering drop state
+  TracedValue<bool> m_dropping;           //!< True if in dropping state
+  uint16_t m_recInvSqrt;                  //!< Reciprocal inverse square root
+  uint32_t m_firstAboveTime;              //!< Time to declare sojourn time above target
+  TracedValue<uint32_t> m_dropNext;       //!< Time to drop next packet
+  uint32_t m_state1;                      //!< Number of times packet sojourn goes above target for interval
+  uint32_t m_state2;                      //!< Number of times we perform next drop while in dropping state
+  uint32_t m_state3;                      //!< Number of times we enter drop state and drop the fist packet
+  uint32_t m_states;                      //!< Total number of times we are in state 1, state 2, or state 3
+  uint32_t m_dropOverLimit;               //!< The number of packets dropped due to full queue
+  QueueMode     m_mode;                   //!< The operating mode (Bytes or packets)
+  TracedValue<Time> m_sojourn;            //!< Time in queue
+};
+
+} // namespace ns3
+
+#endif /* CODEL_H */
diff -Naur ns-3.20/src/internet/model/global-route-manager.h ns-3.21/src/internet/model/global-route-manager.h
--- ns-3.20/src/internet/model/global-route-manager.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/global-route-manager.h	2014-09-17 20:03:14.000000000 -0700
@@ -72,12 +72,16 @@
  * @brief Global Route Manager copy construction is disallowed.  There's no 
  * need for it and a compiler provided shallow copy would be wrong.
  *
+ * @param srm object to copy from
  */
   GlobalRouteManager (GlobalRouteManager& srm);
 
 /**
  * @brief Global Router copy assignment operator is disallowed.  There's no 
  * need for it and a compiler provided shallow copy would be wrong.
+ *
+ * @param srm object to copy from
+ * @returns the copied object
  */
   GlobalRouteManager& operator= (GlobalRouteManager& srm);
 };
diff -Naur ns-3.20/src/internet/model/global-route-manager-impl.h ns-3.21/src/internet/model/global-route-manager-impl.h
--- ns-3.20/src/internet/model/global-route-manager-impl.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/global-route-manager-impl.h	2014-09-17 20:03:14.000000000 -0700
@@ -559,12 +559,15 @@
 /**
  * @brief The SPFVertex copy construction is disallowed.  There's no need for
  * it and a compiler provided shallow copy would be wrong.
+ * @param v object to copy from
  */
   SPFVertex (SPFVertex& v);
 
 /**
  * @brief The SPFVertex copy assignment operator is disallowed.  There's no 
  * need for it and a compiler provided shallow copy would be wrong.
+ * @param v object to copy from
+ * @returns the copied object
  */
   SPFVertex& operator= (SPFVertex& v);
 
@@ -707,12 +710,15 @@
 /**
  * @brief GlobalRouteManagerLSDB copy construction is disallowed.  There's no 
  * need for it and a compiler provided shallow copy would be wrong.
+ * @param lsdb object to copy from
  */
   GlobalRouteManagerLSDB (GlobalRouteManagerLSDB& lsdb);
 
 /**
  * @brief The SPFVertex copy assignment operator is disallowed.  There's no 
  * need for it and a compiler provided shallow copy would be wrong.
+ * @param lsdb object to copy from
+ * @returns the copied object
  */
   GlobalRouteManagerLSDB& operator= (GlobalRouteManagerLSDB& lsdb);
 };
@@ -776,6 +782,8 @@
  * @brief GlobalRouteManagerImpl copy construction is disallowed.
  * There's no  need for it and a compiler provided shallow copy would be 
  * wrong.
+ *
+ * @param srmi object to copy from
  */
   GlobalRouteManagerImpl (GlobalRouteManagerImpl& srmi);
 
@@ -783,6 +791,9 @@
  * @brief Global Route Manager Implementation assignment operator is
  * disallowed.  There's no  need for it and a compiler provided shallow copy
  * would be hopelessly wrong.
+ *
+ * @param srmi object to copy from
+ * @returns the copied object
  */
   GlobalRouteManagerImpl& operator= (GlobalRouteManagerImpl& srmi);
 
diff -Naur ns-3.20/src/internet/model/global-router-interface.h ns-3.21/src/internet/model/global-router-interface.h
--- ns-3.20/src/internet/model/global-router-interface.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/global-router-interface.h	2014-09-17 20:03:14.000000000 -0700
@@ -376,6 +376,7 @@
 /**
  * @brief Print the contents of the Global Routing Link State Advertisement and
  * any Global Routing Link Records present in the list.  Quite verbose.
+ * @param os the output stream
  */
   void Print (std::ostream &os) const;
 
diff -Naur ns-3.20/src/internet/model/icmpv6-header.cc ns-3.21/src/internet/model/icmpv6-header.cc
--- ns-3.20/src/internet/model/icmpv6-header.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/icmpv6-header.cc	2014-09-17 20:03:14.000000000 -0700
@@ -245,7 +245,7 @@
 void Icmpv6NS::Print (std::ostream& os) const
 {
   NS_LOG_FUNCTION (this << &os);
-  os << "( type = " << (uint32_t)GetType () << " (NS) code = " << (uint32_t)GetCode () << " checksum = " << (uint32_t)GetChecksum ()  << ")";
+  os << "( type = " << (uint32_t)GetType () << " (NS) code = " << (uint32_t)GetCode () << " target = " << m_target << " checksum = " << (uint32_t)GetChecksum ()  << ")";
 }
 
 uint32_t Icmpv6NS::GetSerializedSize () const
diff -Naur ns-3.20/src/internet/model/icmpv6-l4-protocol.cc ns-3.21/src/internet/model/icmpv6-l4-protocol.cc
--- ns-3.20/src/internet/model/icmpv6-l4-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/icmpv6-l4-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -588,8 +588,17 @@
   req.SetId (id);
   req.SetSeq (seq);
 
+  req.CalculatePseudoHeaderChecksum (src, dst, p->GetSize () + req.GetSerializedSize (), PROT_NUMBER);
   p->AddHeader (req);
 
+  ipHeader.SetSourceAddress (src);
+  ipHeader.SetDestinationAddress (dst);
+  ipHeader.SetNextHeader (PROT_NUMBER);
+  ipHeader.SetPayloadLength (p->GetSize ());
+  ipHeader.SetHopLimit (255);
+
+  p->AddHeader (ipHeader);
+
   return p;
 }
 
@@ -994,6 +1003,8 @@
   else
     {
       NS_LOG_LOGIC ("Destination is Multicast, using DelayedSendMessage");
+      std::cout << Simulator::Now ().GetSeconds () << " - " << this << " - " << m_node->GetId () << " - ";
+      std::cout << src << " -> " << dst << " - " << *p << std::endl;
       Simulator::Schedule (Time (MilliSeconds (m_solicitationJitter->GetValue ())), &Icmpv6L4Protocol::DelayedSendMessage, this, p, src, dst, 255);
     }
 }
@@ -1340,7 +1351,7 @@
           *hardwareDestination = entry->GetMacAddress ();
           return true;
         }
-      else /* PROBE */
+      else /* INCOMPLETE or PROBE */
         {
           /* queue packet */
           entry->AddWaitingPacket (p);
diff -Naur ns-3.20/src/internet/model/icmpv6-l4-protocol.h ns-3.21/src/internet/model/icmpv6-l4-protocol.h
--- ns-3.20/src/internet/model/icmpv6-l4-protocol.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/icmpv6-l4-protocol.h	2014-09-17 20:03:14.000000000 -0700
@@ -329,7 +329,7 @@
    * \param id ID of the packet
    * \param seq sequence number
    * \param data the data
-   * \return Echo Request packet (without IPv6 header)
+   * \return Echo Request packet (with IPv6 header)
    */
   Ptr<Packet> ForgeEchoRequest (Ipv6Address src, Ipv6Address dst, uint16_t id, uint16_t seq, Ptr<Packet> data);
 
diff -Naur ns-3.20/src/internet/model/ipv4-l3-protocol.cc ns-3.21/src/internet/model/ipv4-l3-protocol.cc
--- ns-3.20/src/internet/model/ipv4-l3-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv4-l3-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -735,11 +735,17 @@
   ipHeader.SetPayloadSize (payloadSize);
   ipHeader.SetTtl (ttl);
   ipHeader.SetTos (tos);
+
+  uint64_t src = source.Get ();
+  uint64_t dst = destination.Get ();
+  uint64_t srcDst = dst | (src << 32);
+  std::pair<uint64_t, uint8_t> key = std::make_pair (srcDst, protocol);
+
   if (mayFragment == true)
     {
       ipHeader.SetMayFragment ();
-      ipHeader.SetIdentification (m_identification[protocol]);
-      m_identification[protocol]++;
+      ipHeader.SetIdentification (m_identification[key]);
+      m_identification[key]++;
     }
   else
     {
@@ -748,8 +754,8 @@
       // identification requirement:
       // >> Originating sources MAY set the IPv4 ID field of atomic datagrams
       //    to any value.
-      ipHeader.SetIdentification (m_identification[protocol]);
-      m_identification[protocol]++;
+      ipHeader.SetIdentification (m_identification[key]);
+      m_identification[key]++;
     }
   if (Node::ChecksumEnabled ())
     {
@@ -1524,5 +1530,4 @@
   m_fragments.erase (key);
   m_fragmentsTimers.erase (key);
 }
-
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/ipv4-l3-protocol.h ns-3.21/src/internet/model/ipv4-l3-protocol.h
--- ns-3.20/src/internet/model/ipv4-l3-protocol.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv4-l3-protocol.h	2014-09-17 20:03:14.000000000 -0700
@@ -388,7 +388,7 @@
    * \param iif Input Interface
    */
   void HandleFragmentsTimeout ( std::pair<uint64_t, uint32_t> key, Ipv4Header & ipHeader, uint32_t iif);
-
+  
   /**
    * \brief Container of the IPv4 Interfaces.
    */
@@ -408,7 +408,7 @@
   Ipv4InterfaceList m_interfaces; //!< List of IPv4 interfaces.
   uint8_t m_defaultTos;  //!< Default TOS
   uint8_t m_defaultTtl;  //!< Default TTL
-  std::map<uint8_t, uint16_t> m_identification; //!< Identification (for each protocol)
+  std::map<std::pair<uint64_t, uint8_t>, uint16_t> m_identification; //!< Identification (for each {src, dst, proto} tuple)
   Ptr<Node> m_node; //!< Node attached to stack.
 
   /// Trace of sent packets
diff -Naur ns-3.20/src/internet/model/ipv6-l3-protocol.cc ns-3.21/src/internet/model/ipv6-l3-protocol.cc
--- ns-3.20/src/internet/model/ipv6-l3-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv6-l3-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -820,13 +820,10 @@
   //for link-local traffic, we need to determine the interface
   if (source.IsLinkLocal ()
       || destination.IsLinkLocal ()
-      || destination.IsAllNodesMulticast ()
-      || destination.IsAllRoutersMulticast ()
-      || destination.IsAllHostsMulticast ()
-      || destination.IsSolicitedMulticast ())
+      || destination.IsLinkLocalMulticast ())
     {
       int32_t index = GetInterfaceForAddress (source);
-      NS_ASSERT (index >= 0);
+      NS_ASSERT_MSG (index >= 0, "Can not find an outgoing interface for a packet with src " << source << " and dst " << destination);
       oif = GetNetDevice (index);
     }
 
diff -Naur ns-3.20/src/internet/model/ipv6-l3-protocol.h ns-3.21/src/internet/model/ipv6-l3-protocol.h
--- ns-3.20/src/internet/model/ipv6-l3-protocol.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv6-l3-protocol.h	2014-09-17 20:03:14.000000000 -0700
@@ -379,7 +379,7 @@
    *
    * This function is used by Fragment Timeout handling to signal a fragment drop.
    *
-   * \param ipv6Header the IPv6 header of dropped packet
+   * \param ipHeader the IPv6 header of dropped packet
    * \param p the packet (if available)
    * \param dropReason the drop reason
    *
diff -Naur ns-3.20/src/internet/model/ipv6-list-routing.cc ns-3.21/src/internet/model/ipv6-list-routing.cc
--- ns-3.20/src/internet/model/ipv6-list-routing.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv6-list-routing.cc	2014-09-17 20:03:14.000000000 -0700
@@ -129,7 +129,7 @@
         }
 
       /* do not forward link-local multicast address */
-      if (dst == Ipv6Address::GetAllNodesMulticast () || dst == Ipv6Address::GetAllRoutersMulticast () || dst == Ipv6Address::GetAllHostsMulticast ())
+      if (dst.IsLinkLocalMulticast ())
         {
           return retVal;
         }
diff -Naur ns-3.20/src/internet/model/ipv6-static-routing.cc ns-3.21/src/internet/model/ipv6-static-routing.cc
--- ns-3.20/src/internet/model/ipv6-static-routing.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ipv6-static-routing.cc	2014-09-17 20:03:14.000000000 -0700
@@ -285,8 +285,7 @@
   uint32_t shortestMetric = 0xffffffff;
 
   /* when sending on link-local multicast, there have to be interface specified */
-  if (dst == Ipv6Address::GetAllNodesMulticast () || dst.IsSolicitedMulticast ()
-      || dst == Ipv6Address::GetAllRoutersMulticast () || dst == Ipv6Address::GetAllHostsMulticast ())
+  if (dst.IsLinkLocalMulticast ())
     {
       NS_ASSERT_MSG (interface, "Try to send on link-local multicast address, and no interface index is given!");
       rtentry = Create<Ipv6Route> ();
diff -Naur ns-3.20/src/internet/model/ndisc-cache.cc ns-3.21/src/internet/model/ndisc-cache.cc
--- ns-3.20/src/internet/model/ndisc-cache.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ndisc-cache.cc	2014-09-17 20:03:14.000000000 -0700
@@ -367,6 +367,10 @@
 void NdiscCache::Entry::StartReachableTimer ()
 {
   NS_LOG_FUNCTION_NOARGS ();
+  if (m_reachableTimer.IsRunning ())
+    {
+      m_reachableTimer.Cancel ();
+    }
   m_reachableTimer.SetFunction (&NdiscCache::Entry::FunctionReachableTimeout, this);
   m_reachableTimer.SetDelay (MilliSeconds (Icmpv6L4Protocol::REACHABLE_TIME));
   m_reachableTimer.Schedule ();
@@ -381,6 +385,10 @@
 void NdiscCache::Entry::StartProbeTimer ()
 {
   NS_LOG_FUNCTION_NOARGS ();
+  if (m_probeTimer.IsRunning ())
+    {
+      m_probeTimer.Cancel ();
+    }
   m_probeTimer.SetFunction (&NdiscCache::Entry::FunctionProbeTimeout, this);
   m_probeTimer.SetDelay (MilliSeconds (Icmpv6L4Protocol::RETRANS_TIMER));
   m_probeTimer.Schedule ();
@@ -397,6 +405,10 @@
 void NdiscCache::Entry::StartDelayTimer ()
 {
   NS_LOG_FUNCTION_NOARGS ();
+  if (m_delayTimer.IsRunning ())
+    {
+      m_delayTimer.Cancel ();
+    }
   m_delayTimer.SetFunction (&NdiscCache::Entry::FunctionDelayTimeout, this);
   m_delayTimer.SetDelay (Seconds (Icmpv6L4Protocol::DELAY_FIRST_PROBE_TIME));
   m_delayTimer.Schedule ();
@@ -412,6 +424,10 @@
 void NdiscCache::Entry::StartRetransmitTimer ()
 {
   NS_LOG_FUNCTION_NOARGS ();
+  if (m_retransTimer.IsRunning ())
+    {
+      m_retransTimer.Cancel ();
+    }
   m_retransTimer.SetFunction (&NdiscCache::Entry::FunctionRetransmitTimeout, this);
   m_retransTimer.SetDelay (MilliSeconds (Icmpv6L4Protocol::RETRANS_TIMER));
   m_retransTimer.Schedule ();
diff -Naur ns-3.20/src/internet/model/nsc-tcp-socket-impl.cc ns-3.21/src/internet/model/nsc-tcp-socket-impl.cc
--- ns-3.20/src/internet/model/nsc-tcp-socket-impl.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/nsc-tcp-socket-impl.cc	2014-09-17 20:03:14.000000000 -0700
@@ -57,6 +57,9 @@
     .AddTraceSource ("CongestionWindow",
                      "The TCP connection's congestion window",
                      MakeTraceSourceAccessor (&NscTcpSocketImpl::m_cWnd))
+    .AddTraceSource ("SlowStartThreshold",
+                     "TCP slow start threshold (bytes)",
+                     MakeTraceSourceAccessor (&NscTcpSocketImpl::m_ssThresh))
   ;
   return tid;
 }
@@ -106,6 +109,7 @@
     m_cWnd (sock.m_cWnd),
     m_ssThresh (sock.m_ssThresh),
     m_initialCWnd (sock.m_initialCWnd),
+    m_initialSsThresh (sock.m_initialSsThresh),
     m_lastMeasuredRtt (Seconds (0.0)),
     m_cnTimeout (sock.m_cnTimeout),
     m_cnCount (sock.m_cnCount),
@@ -152,6 +156,7 @@
   m_node = node;
   // Initialize some variables 
   m_cWnd = m_initialCWnd * m_segmentSize;
+  m_ssThresh = m_initialSsThresh;
   m_rxWindowSize = m_advertisedWindowSize;
 }
 
@@ -730,15 +735,15 @@
 }
 
 void
-NscTcpSocketImpl::SetSSThresh (uint32_t threshold)
+NscTcpSocketImpl::SetInitialSSThresh (uint32_t threshold)
 {
-  m_ssThresh = threshold;
+  m_initialSsThresh = threshold;
 }
 
 uint32_t
-NscTcpSocketImpl::GetSSThresh (void) const
+NscTcpSocketImpl::GetInitialSSThresh (void) const
 {
-  return m_ssThresh;
+  return m_initialSsThresh;
 }
 
 void
diff -Naur ns-3.20/src/internet/model/nsc-tcp-socket-impl.h ns-3.21/src/internet/model/nsc-tcp-socket-impl.h
--- ns-3.20/src/internet/model/nsc-tcp-socket-impl.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/nsc-tcp-socket-impl.h	2014-09-17 20:03:14.000000000 -0700
@@ -187,8 +187,8 @@
    * \returns the window size
    */
   virtual uint32_t GetAdvWin (void) const;
-  virtual void SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
   virtual void SetConnTimeout (Time timeout);
@@ -241,8 +241,9 @@
   uint32_t                       m_rxWindowSize;         //!< Receive window size
   uint32_t                       m_advertisedWindowSize; //!< Window to advertise
   TracedValue<uint32_t>          m_cWnd;                 //!< Congestion window
-  uint32_t                       m_ssThresh;             //!< Slow Start Threshold
+  TracedValue<uint32_t>          m_ssThresh;             //!< Slow Start Threshold
   uint32_t                       m_initialCWnd;          //!< Initial cWnd value
+  uint32_t                       m_initialSsThresh;      //!< Initial Slow Start Threshold
 
   // Round trip time estimation
   Time m_lastMeasuredRtt; //!< Last measured RTT
diff -Naur ns-3.20/src/internet/model/ripng.h ns-3.21/src/internet/model/ripng.h
--- ns-3.20/src/internet/model/ripng.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ripng.h	2014-09-17 20:03:14.000000000 -0700
@@ -36,7 +36,7 @@
 /**
  * \defgroup ripng RIPng
  *
- * The RIPng protocol (\rfc{2080}) is a unicast-only IPv6 IGP (Interior Gateway Protocol).
+ * The RIPng protocol (\RFC{2080}) is a unicast-only IPv6 IGP (Interior Gateway Protocol).
  * Its convergence time is rather long. As a consequence, it is suggested to
  * carefully check the network topology and the route status before sending
  * data flows.
@@ -136,7 +136,7 @@
    * After a Triggered Update, all the changed flags are cleared
    * from the routing table.
    *
-   * \param true if route is changed
+   * \param changed true if route is changed
    */
   void SetRouteChanged (bool changed);
 
@@ -168,7 +168,7 @@
 /**
  * \ingroup ripng
  *
- * \brief RIPng Routing Protocol, defined in \rfc{2080}.
+ * \brief RIPng Routing Protocol, defined in \RFC{2080}.
  */
 class RipNg : public Ipv6RoutingProtocol
 {
@@ -177,6 +177,10 @@
   RipNg ();
   virtual ~RipNg ();
 
+  /**
+   * \brief Get the type ID
+   * \return type ID
+   */
   static TypeId GetTypeId (void);
 
   // \name From Ipv6RoutingProtocol
@@ -198,10 +202,13 @@
   virtual void PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const;
   // \}
 
+  /**
+   * Split Horizon strategy type. See \RFC{2080}.
+   */
   enum SplitHorizonType_e {
-    NO_SPLIT_HORIZON,
-    SPLIT_HORIZON,
-    POISON_REVERSE,
+    NO_SPLIT_HORIZON,//!< No Split Horizon
+    SPLIT_HORIZON,   //!< Split Horizon
+    POISON_REVERSE,  //!< Poison Reverse Split Horizon
   };
 
   /**
@@ -323,11 +330,10 @@
   /**
    * \brief Add route to network.
    * \param network network address
-   * \param networkPrefix network prefix*
+   * \param networkPrefix network prefix
    * \param nextHop next hop address to route the packet.
    * \param interface interface index
    * \param prefixToUse prefix that should be used for source address for this destination
-   * \param metric metric of route in case of multiple routes to same destination
    */
   void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse);
 
@@ -336,7 +342,6 @@
    * \param network network address
    * \param networkPrefix network prefix
    * \param interface interface index
-   * \param metric metric of route in case of multiple routes to same destination
    */
   void AddNetworkRouteTo (Ipv6Address network, Ipv6Prefix networkPrefix, uint32_t interface);
 
@@ -391,19 +396,19 @@
   typedef std::map<Ptr<Socket>, uint32_t>::const_iterator SocketListCI;
 
   SocketList m_sendSocketList; //!< list of sockets for sending (socket, interface index)
-  Ptr<Socket> m_recvSocket;
+  Ptr<Socket> m_recvSocket; //!< receive socket
 
   EventId m_nextUnsolicitedUpdate; //!< Next Unsolicited Update event
   EventId m_nextTriggeredUpdate; //!< Next Triggered Update event
 
   Ptr<UniformRandomVariable> m_rng; //!< Rng stream.
 
-  std::set<uint32_t> m_interfaceExclusions; // Set of excluded interfaces
-  std::map<uint32_t, uint8_t> m_interfaceMetrics; // Map of interface metrics
+  std::set<uint32_t> m_interfaceExclusions; //!< Set of excluded interfaces
+  std::map<uint32_t, uint8_t> m_interfaceMetrics; //!< Map of interface metrics
 
-  SplitHorizonType_e m_splitHorizonStrategy; // Split Horizon strategy
+  SplitHorizonType_e m_splitHorizonStrategy; //!< Split Horizon strategy
 
-  bool m_initialized; // flag to allow socket's late-creation.
+  bool m_initialized; //!< flag to allow socket's late-creation.
 };
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/ripng-header.h ns-3.21/src/internet/model/ripng-header.h
--- ns-3.20/src/internet/model/ripng-header.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/ripng-header.h	2014-09-17 20:03:14.000000000 -0700
@@ -128,6 +128,14 @@
   uint8_t m_metric; //!< route metric
 };
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the reference to the output stream
+ * \param h the Routing Table Entry
+ * \returns the reference to the output stream
+ */
+std::ostream & operator << (std::ostream & os, const RipNgRte & h);
 
 /**
  * \ingroup ripng
@@ -220,6 +228,15 @@
   std::list<RipNgRte> m_rteList; //!< list of the RTEs in the message
 };
 
+/**
+ * \brief Stream insertion operator.
+ *
+ * \param os the reference to the output stream
+ * \param h the RIPng header
+ * \returns the reference to the output stream
+ */
+std::ostream & operator << (std::ostream & os, const RipNgHeader & h);
+
 }
 
 #endif /* RIPNG_HEADER_H */
diff -Naur ns-3.20/src/internet/model/rtt-estimator.cc ns-3.21/src/internet/model/rtt-estimator.cc
--- ns-3.20/src/internet/model/rtt-estimator.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/rtt-estimator.cc	2014-09-17 20:03:14.000000000 -0700
@@ -168,7 +168,7 @@
     }
 }
 
-Time RttEstimator::AckSeq (SequenceNumber32 ackSeq)
+Time RttEstimator::EstimateRttFromSeq (SequenceNumber32 ackSeq)
 { 
   NS_LOG_FUNCTION (this << ackSeq);
   // An ack has been received, calculate rtt and log this measurement
diff -Naur ns-3.20/src/internet/model/rtt-estimator.h ns-3.21/src/internet/model/rtt-estimator.h
--- ns-3.20/src/internet/model/rtt-estimator.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/rtt-estimator.h	2014-09-17 20:03:14.000000000 -0700
@@ -97,7 +97,7 @@
    * \param ackSeq the ack sequence number.
    * \return The measured RTT for this ack.
    */
-  virtual Time AckSeq (SequenceNumber32 ackSeq);
+  virtual Time EstimateRttFromSeq (SequenceNumber32 ackSeq);
 
   /**
    * \brief Clear all history entries
diff -Naur ns-3.20/src/internet/model/tcp-header.cc ns-3.21/src/internet/model/tcp-header.cc
--- ns-3.20/src/internet/model/tcp-header.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-header.cc	2014-09-17 20:03:14.000000000 -0700
@@ -21,8 +21,12 @@
 #include <stdint.h>
 #include <iostream>
 #include "tcp-header.h"
+#include "tcp-option.h"
 #include "ns3/buffer.h"
 #include "ns3/address-utils.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("TcpHeader");
 
 namespace ns3 {
 
@@ -38,7 +42,8 @@
     m_windowSize (0xffff),
     m_urgentPointer (0),
     m_calcChecksum (false),
-    m_goodChecksum (true)
+    m_goodChecksum (true),
+    m_optionsLen (0)
 {
 }
 
@@ -52,68 +57,92 @@
   m_calcChecksum = true;
 }
 
-void TcpHeader::SetSourcePort (uint16_t port)
+void
+TcpHeader::SetSourcePort (uint16_t port)
 {
   m_sourcePort = port;
 }
-void TcpHeader::SetDestinationPort (uint16_t port)
+
+void
+TcpHeader::SetDestinationPort (uint16_t port)
 {
   m_destinationPort = port;
 }
-void TcpHeader::SetSequenceNumber (SequenceNumber32 sequenceNumber)
+
+void
+TcpHeader::SetSequenceNumber (SequenceNumber32 sequenceNumber)
 {
   m_sequenceNumber = sequenceNumber;
 }
-void TcpHeader::SetAckNumber (SequenceNumber32 ackNumber)
+
+void
+TcpHeader::SetAckNumber (SequenceNumber32 ackNumber)
 {
   m_ackNumber = ackNumber;
 }
-void TcpHeader::SetLength (uint8_t length)
-{
-  m_length = length;
-}
-void TcpHeader::SetFlags (uint8_t flags)
+
+void
+TcpHeader::SetFlags (uint8_t flags)
 {
   m_flags = flags;
 }
-void TcpHeader::SetWindowSize (uint16_t windowSize)
+
+void
+TcpHeader::SetWindowSize (uint16_t windowSize)
 {
   m_windowSize = windowSize;
 }
-void TcpHeader::SetUrgentPointer (uint16_t urgentPointer)
+
+void
+TcpHeader::SetUrgentPointer (uint16_t urgentPointer)
 {
   m_urgentPointer = urgentPointer;
 }
 
-uint16_t TcpHeader::GetSourcePort () const
+uint16_t
+TcpHeader::GetSourcePort () const
 {
   return m_sourcePort;
 }
-uint16_t TcpHeader::GetDestinationPort () const
+
+uint16_t
+TcpHeader::GetDestinationPort () const
 {
   return m_destinationPort;
 }
-SequenceNumber32 TcpHeader::GetSequenceNumber () const
+
+SequenceNumber32
+TcpHeader::GetSequenceNumber () const
 {
   return m_sequenceNumber;
 }
-SequenceNumber32 TcpHeader::GetAckNumber () const
+
+SequenceNumber32
+TcpHeader::GetAckNumber () const
 {
   return m_ackNumber;
 }
-uint8_t  TcpHeader::GetLength () const
+
+uint8_t
+TcpHeader::GetLength () const
 {
   return m_length;
 }
-uint8_t  TcpHeader::GetFlags () const
+
+uint8_t
+TcpHeader::GetFlags () const
 {
   return m_flags;
 }
-uint16_t TcpHeader::GetWindowSize () const
+
+uint16_t
+TcpHeader::GetWindowSize () const
 {
   return m_windowSize;
 }
-uint16_t TcpHeader::GetUrgentPointer () const
+
+uint16_t
+TcpHeader::GetUrgentPointer () const
 {
   return m_urgentPointer;
 }
@@ -167,7 +196,7 @@
 
   WriteTo (it, m_source);
   WriteTo (it, m_destination);
-  if (Ipv4Address::IsMatchingType(m_source))
+  if (Ipv4Address::IsMatchingType (m_source))
     {
       it.WriteU8 (0); /* protocol */
       it.WriteU8 (m_protocol); /* protocol */
@@ -206,69 +235,108 @@
   ;
   return tid;
 }
+
 TypeId 
 TcpHeader::GetInstanceTypeId (void) const
 {
   return GetTypeId ();
 }
-void TcpHeader::Print (std::ostream &os)  const
+
+void
+TcpHeader::Print (std::ostream &os)  const
 {
   os << m_sourcePort << " > " << m_destinationPort;
-  if(m_flags!=0)
+
+  if (m_flags != 0)
     {
       os<<" [";
-      if((m_flags & FIN) != 0)
+      if ((m_flags & FIN) != 0)
         {
           os<<" FIN ";
         }
-      if((m_flags & SYN) != 0)
+      if ((m_flags & SYN) != 0)
         {
           os<<" SYN ";
         }
-      if((m_flags & RST) != 0)
+      if ((m_flags & RST) != 0)
         {
           os<<" RST ";
         }
-      if((m_flags & PSH) != 0)
+      if ((m_flags & PSH) != 0)
         {
           os<<" PSH ";
         }
-      if((m_flags & ACK) != 0)
+      if ((m_flags & ACK) != 0)
         {
           os<<" ACK ";
         }
-      if((m_flags & URG) != 0)
+      if ((m_flags & URG) != 0)
         {
           os<<" URG ";
         }
-      if((m_flags & ECE) != 0)
+      if ((m_flags & ECE) != 0)
         {
           os<<" ECE ";
         }
-      if((m_flags & CWR) != 0)
+      if ((m_flags & CWR) != 0)
         {
           os<<" CWR ";
         }
+
       os<<"]";
     }
+
   os<<" Seq="<<m_sequenceNumber<<" Ack="<<m_ackNumber<<" Win="<<m_windowSize;
+
+  TcpOptionList::const_iterator op;
+
+  for (op = m_options.begin (); op != m_options.end (); ++op)
+    {
+      os << " " << (*op)->GetInstanceTypeId ().GetName () << "(";
+      (*op)->Print (os);
+      os << ")";
+    }
 }
-uint32_t TcpHeader::GetSerializedSize (void)  const
+
+uint32_t
+TcpHeader::GetSerializedSize (void)  const
 {
-  return 4*m_length;
+  return CalculateHeaderLength () * 4;
 }
-void TcpHeader::Serialize (Buffer::Iterator start)  const
+
+void
+TcpHeader::Serialize (Buffer::Iterator start)  const
 {
   Buffer::Iterator i = start;
   i.WriteHtonU16 (m_sourcePort);
   i.WriteHtonU16 (m_destinationPort);
   i.WriteHtonU32 (m_sequenceNumber.GetValue ());
   i.WriteHtonU32 (m_ackNumber.GetValue ());
-  i.WriteHtonU16 (m_length << 12 | m_flags); //reserved bits are all zero
+  i.WriteHtonU16 (GetLength () << 12 | m_flags); //reserved bits are all zero
   i.WriteHtonU16 (m_windowSize);
   i.WriteHtonU16 (0);
   i.WriteHtonU16 (m_urgentPointer);
 
+  // Serialize options if they exist
+  // This implementation does not presently try to align options on word
+  // boundaries using NOP options
+  uint32_t optionLen = 0;
+  TcpOptionList::const_iterator op;
+  for (op = m_options.begin (); op != m_options.end (); ++op)
+    {
+      optionLen += (*op)->GetSerializedSize ();
+      (*op)->Serialize (i);
+      i.Next ((*op)->GetSerializedSize ());
+    }
+
+  // padding to word alignment; add ENDs and/or pad values (they are the same)
+  while (optionLen % 4)
+  {
+    i.WriteU8 (TcpOption::END);
+    ++optionLen;
+  }
+
+  // Make checksum
   if(m_calcChecksum)
     {
       uint16_t headerChecksum = CalculateHeaderChecksum (start.GetSize ());
@@ -280,7 +348,9 @@
       i.WriteU16 (checksum);
     }
 }
-uint32_t TcpHeader::Deserialize (Buffer::Iterator start)
+
+uint32_t
+TcpHeader::Deserialize (Buffer::Iterator start)
 {
   Buffer::Iterator i = start;
   m_sourcePort = i.ReadNtohU16 ();
@@ -294,6 +364,62 @@
   i.Next (2);
   m_urgentPointer = i.ReadNtohU16 ();
 
+  // Deserialize options if they exist
+  m_options.clear ();
+  uint32_t optionLen = (m_length - 5) * 4;
+  if (optionLen > 40)
+    {
+      NS_LOG_ERROR ("Illegal TCP option length " << optionLen << "; options discarded");
+      return 20;
+    }
+  while (optionLen)
+    {
+      uint8_t kind = i.PeekU8 ();
+      Ptr<TcpOption> op;
+      uint32_t optionSize;
+      if (TcpOption::IsKindKnown (kind))
+        {
+          op = TcpOption::CreateOption (kind);
+        }
+      else 
+        {
+          op = TcpOption::CreateOption (TcpOption::UNKNOWN);
+          NS_LOG_WARN ("Option kind " << static_cast<int> (kind) << " unknown, skipping.");
+        }
+      optionSize = op->Deserialize (i);
+      if (optionSize != op->GetSerializedSize ())
+        {
+          NS_LOG_ERROR ("Option did not deserialize correctly");
+          break;
+        }
+      if (optionLen >= optionSize)
+        {
+          optionLen -= optionSize;
+          i.Next (optionSize);
+          m_options.push_back (op);
+        }
+      else
+        {
+          NS_LOG_ERROR ("Option exceeds TCP option space; option discarded");
+          break;
+        }
+      if (op->GetKind () == TcpOption::END)
+        {
+          while (optionLen)
+            {
+              // Discard padding bytes without adding to option list
+              i.Next (1);
+              --optionLen;
+            }
+        }
+    }
+
+  if (m_length != CalculateHeaderLength ())
+    {
+      NS_LOG_ERROR ("Mismatch between calculated length and in-header value");
+    }
+
+  // Do checksum
   if(m_calcChecksum)
     {
       uint16_t headerChecksum = CalculateHeaderChecksum (start.GetSize ());
@@ -305,5 +431,94 @@
   return GetSerializedSize ();
 }
 
+uint8_t
+TcpHeader::CalculateHeaderLength () const
+{
+  uint32_t len = 20;
+  TcpOptionList::const_iterator i;
+
+  for (i = m_options.begin (); i != m_options.end (); ++i)
+    {
+      len += (*i)->GetSerializedSize ();
+    }
+  // Option list may not include padding; need to pad up to word boundary
+  if (len % 4)
+    {
+      len += 4 - (len % 4);
+    }
+  return len >> 2;
+}
+
+bool
+TcpHeader::AppendOption (Ptr<TcpOption> option)
+{
+  if (m_optionsLen + option->GetSerializedSize () <= m_maxOptionsLen)
+    {
+      if (!TcpOption::IsKindKnown (option->GetKind ()))
+        {
+          NS_LOG_WARN ("The option kind " << static_cast<int> (option->GetKind ()) << " is unknown");
+          return false;
+        }
+
+      if (option->GetKind () != TcpOption::END)
+        {
+          m_options.push_back (option);
+          m_optionsLen += option->GetSerializedSize ();
+
+          uint32_t totalLen = 20 + 3 + m_optionsLen;
+          m_length = totalLen >> 2;
+        }
+
+      return true;
+    }
+
+  return false;
+}
+
+Ptr<TcpOption>
+TcpHeader::GetOption (uint8_t kind) const
+{
+  TcpOptionList::const_iterator i;
+
+  for (i = m_options.begin (); i != m_options.end (); ++i)
+    {
+      if ((*i)->GetKind () == kind)
+        {
+          return (*i);
+        }
+    }
+
+  return 0;
+}
+
+bool
+TcpHeader::HasOption (uint8_t kind) const
+{
+  TcpOptionList::const_iterator i;
+
+  for (i = m_options.begin (); i != m_options.end (); ++i)
+    {
+      if ((*i)->GetKind () == kind)
+        {
+          return true;
+        }
+    }
+
+  return false;
+}
+
+bool
+operator== (const TcpHeader &lhs, const TcpHeader &rhs)
+{
+  return (
+    lhs.m_sourcePort      == rhs.m_sourcePort      &&
+    lhs.m_destinationPort == rhs.m_destinationPort &&
+    lhs.m_sequenceNumber  == rhs.m_sequenceNumber  &&
+    lhs.m_ackNumber       == rhs.m_ackNumber       &&
+    lhs.m_flags           == rhs.m_flags           &&
+    lhs.m_windowSize      == rhs.m_windowSize      &&
+    lhs.m_urgentPointer   == rhs.m_urgentPointer
+    );
+}
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-header.h ns-3.21/src/internet/model/tcp-header.h
--- ns-3.20/src/internet/model/tcp-header.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-header.h	2014-09-17 20:03:14.000000000 -0700
@@ -23,6 +23,7 @@
 
 #include <stdint.h>
 #include "ns3/header.h"
+#include "ns3/tcp-option.h"
 #include "ns3/buffer.h"
 #include "ns3/tcp-socket-factory.h"
 #include "ns3/ipv4-address.h"
@@ -52,76 +53,126 @@
    * \todo currently has no effect
    */
   void EnableChecksums (void);
+
 //Setters
+
 /**
+ * \brief Set the source port
  * \param port The source port for this TcpHeader
  */
   void SetSourcePort (uint16_t port);
+
   /**
+   * \brief Set the destination port
    * \param port the destination port for this TcpHeader
    */
   void SetDestinationPort (uint16_t port);
+
   /**
+   * \brief Set the sequence Number
    * \param sequenceNumber the sequence number for this TcpHeader
    */
   void SetSequenceNumber (SequenceNumber32 sequenceNumber);
+
   /**
+   * \brief Set the ACK number
    * \param ackNumber the ACK number for this TcpHeader
    */
   void SetAckNumber (SequenceNumber32 ackNumber);
+
   /**
-   * \param length the length of this TcpHeader
-   */
-  void SetLength (uint8_t length);
-  /**
+   * \brief Set flags of the header
    * \param flags the flags for this TcpHeader
    */
   void SetFlags (uint8_t flags);
+
   /**
+   * \brief Set the window size
    * \param windowSize the window size for this TcpHeader
    */
   void SetWindowSize (uint16_t windowSize);
+
   /**
+   * \brief Set the urgent pointer
    * \param urgentPointer the urgent pointer for this TcpHeader
    */
   void SetUrgentPointer (uint16_t urgentPointer);
 
-
 //Getters
-/**
- * \return The source port for this TcpHeader
- */
+
+  /**
+   * \brief Get the source port
+   * \return The source port for this TcpHeader
+   */
   uint16_t GetSourcePort () const;
+
   /**
+   * \brief Get the destination port
    * \return the destination port for this TcpHeader
    */
   uint16_t GetDestinationPort () const;
+
   /**
+   * \brief Get the sequence number
    * \return the sequence number for this TcpHeader
    */
   SequenceNumber32 GetSequenceNumber () const;
+
   /**
+   * \brief Get the ACK number
    * \return the ACK number for this TcpHeader
    */
   SequenceNumber32 GetAckNumber () const;
+
   /**
+   * \brief Get the length in words
+   *
+   * A word is 4 bytes; without Tcp Options, header is 5 words (20 bytes).
+   * With options, it can reach up to 15 words (60 bytes).
+   *
    * \return the length of this TcpHeader
    */
-  uint8_t  GetLength () const;
+  uint8_t GetLength () const;
+
   /**
+   * \brief Get the flags
    * \return the flags for this TcpHeader
    */
-  uint8_t  GetFlags () const;
+  uint8_t GetFlags () const;
+
   /**
+   * \brief Get the window size
    * \return the window size for this TcpHeader
    */
   uint16_t GetWindowSize () const;
+
   /**
+   * \brief Get the urgent pointer
    * \return the urgent pointer for this TcpHeader
    */
   uint16_t GetUrgentPointer () const;
 
   /**
+   * \brief Get the option specified
+   * \param kind the option to retrieve
+   * \return Whether the header contains a specific kind of option, or 0
+   */
+  Ptr<TcpOption> GetOption (uint8_t kind) const;
+
+  /**
+   * \brief Check if the header has the option specified
+   * \param kind Option to check for
+   * \return true if the header has the option, false otherwise
+   */
+  bool HasOption (uint8_t kind) const;
+
+  /**
+   * \brief Append an option to the TCP header
+   * \param option The option to append
+   */
+  bool AppendOption (Ptr<TcpOption> option);
+
+  /**
    * \brief Initialize the TCP checksum.
    *
    * If you want to use tcp checksums, you should call this
@@ -178,8 +229,18 @@
   /**
    * \brief TCP flag field values
    */
-  typedef enum { NONE = 0, FIN = 1, SYN = 2, RST = 4, PSH = 8, ACK = 16, 
-                 URG = 32, ECE = 64, CWR = 128} Flags_t;
+  typedef enum
+  {
+    NONE = 0,   //!< No flags
+    FIN  = 1,   //!< FIN
+    SYN  = 2,   //!< SYN
+    RST  = 4,   //!< Reset
+    PSH  = 8,   //!< Push
+    ACK  = 16,  //!< Ack
+    URG  = 32,  //!< Urgent
+    ECE  = 64,  //!< ECE
+    CWR  = 128  //!< CWR
+  } Flags_t;
 
   /**
    * \brief Get the type ID.
@@ -198,6 +259,8 @@
    */
   bool IsChecksumOk (void) const;
 
+  friend bool operator== (const TcpHeader &lhs, const TcpHeader &rhs);
+
 private:
   /**
    * \brief Calculate the header checksum
@@ -205,11 +268,22 @@
    * \returns the checksum
    */
   uint16_t CalculateHeaderChecksum (uint16_t size) const;
+
+  /**
+   * \brief Calculates the header length (in words)
+   *
+   * Given the standard size of the header, the method checks for options
+   * and calculates the real length (in words).
+   *
+   * \return header length in 4-byte words
+   */
+  uint8_t CalculateHeaderLength () const;
+
   uint16_t m_sourcePort;        //!< Source port
   uint16_t m_destinationPort;   //!< Destination port
   SequenceNumber32 m_sequenceNumber;  //!< Sequence number
   SequenceNumber32 m_ackNumber;       //!< ACK number
-  uint8_t m_length;             //!< Length (really a uint4_t)
+  uint8_t m_length;             //!< Length (really a uint4_t) in words.
   uint8_t m_flags;              //!< Flags (really a uint6_t)
   uint16_t m_windowSize;        //!< Window size
   uint16_t m_urgentPointer;     //!< Urgent pointer
@@ -220,6 +294,12 @@
 
   bool m_calcChecksum;    //!< Flag to calculate checksum
   bool m_goodChecksum;    //!< Flag to indicate that checksum is correct
+
+
+  typedef std::list< Ptr<TcpOption> > TcpOptionList; //!< List of TcpOption
+  TcpOptionList m_options; //!< TcpOption present in the header
+  uint8_t m_optionsLen; //!< Tcp options length.
+  static const uint8_t m_maxOptionsLen = 40; //!< Maximum options length
 };
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-l4-protocol.cc ns-3.21/src/internet/model/tcp-l4-protocol.cc
--- ns-3.20/src/internet/model/tcp-l4-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-l4-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -611,7 +611,6 @@
   // XXX outgoingHeader cannot be logged
 
   TcpHeader outgoingHeader = outgoing;
-  outgoingHeader.SetLength (5); //header length in units of 32bit words
   /** \todo UrgentPointer */
   /* outgoingHeader.SetUrgentPointer (0); */
   if(Node::ChecksumEnabled ())
@@ -663,7 +662,6 @@
       return (SendPacket (packet, outgoing, saddr.GetIpv4MappedAddress(), daddr.GetIpv4MappedAddress(), oif));
     }
   TcpHeader outgoingHeader = outgoing;
-  outgoingHeader.SetLength (5); //header length in units of 32bit words
   /** \todo UrgentPointer */
   /* outgoingHeader.SetUrgentPointer (0); */
   if(Node::ChecksumEnabled ())
diff -Naur ns-3.20/src/internet/model/tcp-newreno.cc ns-3.21/src/internet/model/tcp-newreno.cc
--- ns-3.20/src/internet/model/tcp-newreno.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-newreno.cc	2014-09-17 20:03:14.000000000 -0700
@@ -45,13 +45,16 @@
                     MakeUintegerAccessor (&TcpNewReno::m_retxThresh),
                     MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("LimitedTransmit", "Enable limited transmit",
-		    BooleanValue (false),
-		    MakeBooleanAccessor (&TcpNewReno::m_limitedTx),
-		    MakeBooleanChecker ())
+                   BooleanValue (false),
+                   MakeBooleanAccessor (&TcpNewReno::m_limitedTx),
+                   MakeBooleanChecker ())
     .AddTraceSource ("CongestionWindow",
                      "The TCP connection's congestion window",
                      MakeTraceSourceAccessor (&TcpNewReno::m_cWnd))
-  ;
+    .AddTraceSource ("SlowStartThreshold",
+                     "TCP slow start threshold (bytes)",
+                     MakeTraceSourceAccessor (&TcpNewReno::m_ssThresh))
+ ;
   return tid;
 }
 
@@ -68,6 +71,7 @@
     m_cWnd (sock.m_cWnd),
     m_ssThresh (sock.m_ssThresh),
     m_initialCWnd (sock.m_initialCWnd),
+    m_initialSsThresh (sock.m_initialSsThresh),
     m_retxThresh (sock.m_retxThresh),
     m_inFastRec (false),
     m_limitedTx (sock.m_limitedTx)
@@ -124,8 +128,7 @@
   // Check for exit condition of fast recovery
   if (m_inFastRec && seq < m_recover)
     { // Partial ACK, partial window deflation (RFC2582 sec.3 bullet #5 paragraph 3)
-      m_cWnd -= seq - m_txBuffer.HeadSequence ();
-      m_cWnd += m_segmentSize;  // increase cwnd
+      m_cWnd += m_segmentSize - (seq - m_txBuffer.HeadSequence ());
       NS_LOG_INFO ("Partial ACK in fast recovery: cwnd set to " << m_cWnd);
       m_txBuffer.DiscardUpTo(seq);  //Bug 1850:  retransmit before newack
       DoRetransmit (); // Assume the next seq is lost. Retransmit lost packet
@@ -134,7 +137,7 @@
     }
   else if (m_inFastRec && seq >= m_recover)
     { // Full ACK (RFC2582 sec.3 bullet #5 paragraph 2, option 1)
-      m_cWnd = std::min (m_ssThresh, BytesInFlight () + m_segmentSize);
+      m_cWnd = std::min (m_ssThresh.Get (), BytesInFlight () + m_segmentSize);
       m_inFastRec = false;
       NS_LOG_INFO ("Received full ACK. Leaving fast recovery with cwnd set to " << m_cWnd);
     }
@@ -220,15 +223,16 @@
 }
 
 void
-TcpNewReno::SetSSThresh (uint32_t threshold)
+TcpNewReno::SetInitialSSThresh (uint32_t threshold)
 {
-  m_ssThresh = threshold;
+  NS_ABORT_MSG_UNLESS (m_state == CLOSED, "TcpNewReno::SetSSThresh() cannot change initial ssThresh after connection started.");
+  m_initialSsThresh = threshold;
 }
 
 uint32_t
-TcpNewReno::GetSSThresh (void) const
+TcpNewReno::GetInitialSSThresh (void) const
 {
-  return m_ssThresh;
+  return m_initialSsThresh;
 }
 
 void
@@ -253,6 +257,7 @@
    * m_segmentSize are set by the attribute system in ns3::TcpSocket.
    */
   m_cWnd = m_initialCWnd * m_segmentSize;
+  m_ssThresh = m_initialSsThresh;
 }
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-newreno.h ns-3.21/src/internet/model/tcp-newreno.h
--- ns-3.20/src/internet/model/tcp-newreno.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-newreno.h	2014-09-17 20:03:14.000000000 -0700
@@ -65,8 +65,8 @@
 
   // Implementing ns3::TcpSocket -- Attribute get/set
   virtual void     SetSegSize (uint32_t size);
-  virtual void     SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void     SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void     SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
 private:
@@ -77,8 +77,9 @@
 
 protected:
   TracedValue<uint32_t>  m_cWnd;         //!< Congestion window
-  uint32_t               m_ssThresh;     //!< Slow Start Threshold
+  TracedValue<uint32_t>  m_ssThresh;     //!< Slow Start Threshold
   uint32_t               m_initialCWnd;  //!< Initial cWnd value
+  uint32_t               m_initialSsThresh;  //!< Initial Slow Start Threshold value
   SequenceNumber32       m_recover;      //!< Previous highest Tx seqnum for fast recovery
   uint32_t               m_retxThresh;   //!< Fast Retransmit threshold
   bool                   m_inFastRec;    //!< currently in fast recovery
diff -Naur ns-3.20/src/internet/model/tcp-option.cc ns-3.21/src/internet/model/tcp-option.cc
--- ns-3.20/src/internet/model/tcp-option.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,191 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+
+#include "tcp-option.h"
+#include "tcp-option-rfc793.h"
+#include "tcp-option-winscale.h"
+#include "tcp-option-ts.h"
+
+#include "ns3/type-id.h"
+#include "ns3/log.h"
+
+#include <vector>
+
+NS_LOG_COMPONENT_DEFINE ("TcpOption");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOption);
+
+
+TcpOption::TcpOption ()
+{
+}
+
+TcpOption::~TcpOption ()
+{
+}
+
+TypeId
+TcpOption::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOption")
+    .SetParent<Object> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOption::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+Ptr<TcpOption>
+TcpOption::CreateOption (uint8_t kind)
+{
+  struct kindToTid
+  {
+    TcpOption::Kind kind;
+    TypeId tid;
+  };
+
+  static ObjectFactory objectFactory;
+  static kindToTid toTid[] =
+  {
+    { TcpOption::END,       TcpOptionEnd::GetTypeId () },
+    { TcpOption::MSS,       TcpOptionMSS::GetTypeId () },
+    { TcpOption::NOP,       TcpOptionNOP::GetTypeId () },
+    { TcpOption::TS,        TcpOptionTS::GetTypeId () },
+    { TcpOption::WINSCALE,  TcpOptionWinScale::GetTypeId () },
+    { TcpOption::UNKNOWN,  TcpOptionUnknown::GetTypeId () }
+  };
+
+  for (unsigned int i = 0; i < sizeof (toTid) / sizeof (kindToTid); ++i)
+    {
+      if (toTid[i].kind == kind)
+        {
+          objectFactory.SetTypeId (toTid[i].tid);
+          return objectFactory.Create<TcpOption> ();
+        }
+    }
+
+  return CreateObject<TcpOptionUnknown> ();
+}
+
+bool
+TcpOption::IsKindKnown (uint8_t kind)
+{
+  switch (kind)
+    {
+    case END:
+    case NOP:
+    case MSS:
+    case WINSCALE:
+    case TS:
+    // Do not add UNKNOWN here
+      return true;
+    }
+
+  return false;
+}
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionUnknown);
+
+TcpOptionUnknown::TcpOptionUnknown ()
+  : TcpOption ()
+{
+  m_kind = 0xFF;
+  m_size = 0;
+}
+
+TcpOptionUnknown::~TcpOptionUnknown ()
+{
+}
+
+TypeId
+TcpOptionUnknown::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionUnknown")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionUnknown> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionUnknown::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionUnknown::Print (std::ostream &os) const
+{
+  os << "Unknown option";
+}
+
+uint32_t
+TcpOptionUnknown::GetSerializedSize (void) const
+{
+  return m_size;
+}
+
+void
+TcpOptionUnknown::Serialize (Buffer::Iterator i) const
+{
+  if (m_size == 0)
+    {
+      NS_LOG_WARN ("Can't Serialize an Unknown Tcp Option");
+      return;
+    }
+
+  i.WriteU8 (GetKind ());
+  i.WriteU8 (GetSerializedSize ());
+  i.Write (m_content, m_size-2);
+}
+
+uint32_t
+TcpOptionUnknown::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  m_kind = i.ReadU8 ();
+  NS_LOG_WARN ("Trying to Deserialize an Unknown Option of Kind " << int (m_kind));
+
+  m_size = i.ReadU8 ();
+  if (m_size < 2 || m_size > 40)
+    {
+      NS_LOG_WARN ("Unable to parse an unknown option of kind " << int (m_kind) << " with apparent size " << int (m_size));
+      return 0;
+    }
+
+  i.Read (m_content, m_size-2);
+
+  return m_size;
+}
+
+uint8_t
+TcpOptionUnknown::GetKind (void) const
+{
+  return m_kind;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-option.h ns-3.21/src/internet/model/tcp-option.h
--- ns-3.20/src/internet/model/tcp-option.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,145 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+
+#ifndef TCP_OPTION_H
+#define TCP_OPTION_H
+
+#include <stdint.h>
+#include "ns3/object.h"
+#include "ns3/buffer.h"
+#include "ns3/object-factory.h"
+
+namespace ns3 {
+
+/**
+ * Base class for all kinds of TCP options
+ */
+class TcpOption : public Object
+{
+public:
+  TcpOption ();
+  virtual ~TcpOption ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  /**
+   * The option Kind, as defined in the respective RFCs.
+   */
+  enum Kind
+  {
+    // Remember to extend IsKindKnown() with new value, when adding values here
+    //
+    END = 0,      //!< END
+    NOP = 1,      //!< NOP
+    MSS = 2,      //!< MSS
+    WINSCALE = 3, //!< WINSCALE
+    TS = 8,       //!< TS
+    UNKNOWN = 255 //!< not a standardized value; for unknown recv'd options
+  };
+
+  /**
+   * \brief Print the Option contents
+   * \param os the output stream
+   */
+  virtual void Print (std::ostream &os) const = 0;
+  /**
+   * \brief Serialize the Option to a buffer iterator
+   * \param start the buffer iterator
+   */
+  virtual void Serialize (Buffer::Iterator start) const = 0;
+
+  /**
+   * \brief Deserialize the Option from a buffer iterator
+   * \param start the buffer iterator
+   * \returns the number of deserialized bytes
+   */
+  virtual uint32_t Deserialize (Buffer::Iterator start) = 0;
+
+  /**
+   * \brief Get the `kind' (as in \RFC{793}) of this option
+   * \return the Option Kind
+   */
+  virtual uint8_t GetKind (void) const = 0;
+  /**
+   * \brief Returns number of bytes required for Option
+   * serialization.
+   *
+   * \returns number of bytes required for Option
+   * serialization
+   */
+  virtual uint32_t GetSerializedSize (void) const = 0;
+
+  /**
+   * \brief Creates an option
+   * \param kind the option kind
+   * \return the requested option or an ns3::UnknownOption if the option is not supported
+   */
+  static Ptr<TcpOption> CreateOption (uint8_t kind);
+
+  /**
+   * \brief Check if the option is implemented
+   * \param kind the Option kind
+   * \return true if the option is known
+   */
+  static bool IsKindKnown (uint8_t kind);
+};
+
+/**
+ * \brief An unknown TCP option.
+ *
+ * An unknown option can be deserialized and (only if deserialized previously)
+ * serialized again.
+ */
+class TcpOptionUnknown : public TcpOption
+{
+public:
+  TcpOptionUnknown ();
+  virtual ~TcpOptionUnknown ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+
+private:
+  uint8_t m_kind; //!< The unknown option kind
+  uint32_t m_size; //!< The unknown option size
+  uint8_t m_content[40]; //!< The option data
+
+};
+
+} // namespace ns3
+
+#endif /* TCP_OPTION */
diff -Naur ns-3.20/src/internet/model/tcp-option-rfc793.cc ns-3.21/src/internet/model/tcp-option-rfc793.cc
--- ns-3.20/src/internet/model/tcp-option-rfc793.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-rfc793.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,257 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+
+// TCP options that are specified in RFC 793 (kinds 0, 1, and 2)
+
+#include "tcp-option-rfc793.h"
+
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("TcpOptionRfc793");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionEnd);
+
+TcpOptionEnd::TcpOptionEnd () : TcpOption ()
+{
+}
+
+TcpOptionEnd::~TcpOptionEnd ()
+{
+}
+
+TypeId
+TcpOptionEnd::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionEnd")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionEnd> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionEnd::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionEnd::Print (std::ostream &os) const
+{
+  os << "EOL";
+}
+
+uint32_t
+TcpOptionEnd::GetSerializedSize (void) const
+{
+  return 1;
+}
+
+void
+TcpOptionEnd::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  i.WriteU8 (GetKind ());
+}
+
+uint32_t
+TcpOptionEnd::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t readKind = i.ReadU8 ();
+
+  if (readKind != GetKind ())
+    {
+      NS_LOG_WARN ("Malformed END option");
+      return 0;
+    }
+
+  return GetSerializedSize ();
+}
+
+uint8_t
+TcpOptionEnd::GetKind (void) const
+{
+  return TcpOption::END;
+}
+
+
+// Tcp Option NOP
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionNOP);
+
+TcpOptionNOP::TcpOptionNOP ()
+  : TcpOption ()
+{
+}
+
+TcpOptionNOP::~TcpOptionNOP ()
+{
+}
+
+TypeId
+TcpOptionNOP::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionNOP")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionNOP> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionNOP::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionNOP::Print (std::ostream &os) const
+{
+  os << "NOP";
+}
+
+uint32_t
+TcpOptionNOP::GetSerializedSize (void) const
+{
+  return 1;
+}
+
+void
+TcpOptionNOP::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  i.WriteU8 (GetKind ());
+}
+
+uint32_t
+TcpOptionNOP::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t readKind = i.ReadU8 ();
+  if (readKind != GetKind ())
+    {
+      NS_LOG_WARN ("Malformed NOP option");
+      return 0;
+    }
+
+  return GetSerializedSize ();
+}
+
+uint8_t
+TcpOptionNOP::GetKind (void) const
+{
+  return TcpOption::NOP;
+}
+
+// Tcp Option MSS
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionMSS);
+
+TcpOptionMSS::TcpOptionMSS ()
+  : TcpOption (),
+    m_mss (1460)
+{
+}
+
+TcpOptionMSS::~TcpOptionMSS ()
+{
+}
+
+TypeId
+TcpOptionMSS::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionMSS")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionMSS> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionMSS::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionMSS::Print (std::ostream &os) const
+{
+  os << "MSS:" << m_mss;
+}
+
+uint32_t
+TcpOptionMSS::GetSerializedSize (void) const
+{
+  return 4;
+}
+
+void
+TcpOptionMSS::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  i.WriteU8 (GetKind ()); // Kind
+  i.WriteU8 (4); // Length
+  i.WriteHtonU16 (m_mss); // Max segment size
+}
+
+uint32_t
+TcpOptionMSS::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t readKind = i.ReadU8 ();
+  if (readKind != GetKind ())
+    {
+      NS_LOG_WARN ("Malformed MSS option");
+      return 0;
+    }
+
+  uint8_t size = i.ReadU8 ();
+
+  NS_ASSERT (size == 4);
+  m_mss = i.ReadNtohU16 ();
+
+  return GetSerializedSize ();
+}
+
+uint8_t
+TcpOptionMSS::GetKind (void) const
+{
+  return TcpOption::MSS;
+}
+
+uint16_t
+TcpOptionMSS::GetMSS (void) const
+{
+  return m_mss;
+}
+
+void
+TcpOptionMSS::SetMSS (uint16_t mss)
+{
+  m_mss = mss;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-option-rfc793.h ns-3.21/src/internet/model/tcp-option-rfc793.h
--- ns-3.20/src/internet/model/tcp-option-rfc793.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-rfc793.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,116 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+#ifndef TCPOPTIONRFC793_H
+#define TCPOPTIONRFC793_H
+
+#include "tcp-option.h"
+
+namespace ns3 {
+
+/**
+ * Defines the TCP option of kind 0 (end of option list) as in \RFC{793}
+ */
+class TcpOptionEnd : public TcpOption
+{
+public:
+  TcpOptionEnd ();
+  virtual ~TcpOptionEnd ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+
+};
+
+/**
+ * Defines the TCP option of kind 1 (no operation) as in \RFC{793}
+ */
+class TcpOptionNOP : public TcpOption
+{
+public:
+  TcpOptionNOP ();
+  virtual ~TcpOptionNOP ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+};
+
+/**
+ * Defines the TCP option of kind 2 (maximum segment size) as in \RFC{793}
+ */
+class TcpOptionMSS : public TcpOption
+{
+public:
+  TcpOptionMSS ();
+  virtual ~TcpOptionMSS ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Get the Maximum Segment Size stored in the Option
+   * \return The Maximum Segment Size
+   */
+  uint16_t GetMSS (void) const;
+  /**
+   * \brief Set the Maximum Segment Size stored in the Option
+   * \param mss The Maximum Segment Size
+   */
+  void SetMSS (uint16_t mss);
+
+protected:
+  uint16_t m_mss; //!< maximum segment size
+};
+
+} // namespace ns3
+
+#endif // TCPOPTIONRFC793_H
diff -Naur ns-3.20/src/internet/model/tcp-option-ts.cc ns-3.21/src/internet/model/tcp-option-ts.cc
--- ns-3.20/src/internet/model/tcp-option-ts.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-ts.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,156 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+
+#include "tcp-option-ts.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("TcpOptionTS");
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionTS);
+
+TcpOptionTS::TcpOptionTS ()
+  : TcpOption (),
+    m_timestamp (0),
+    m_echo (0)
+{
+}
+
+TcpOptionTS::~TcpOptionTS ()
+{
+}
+
+TypeId
+TcpOptionTS::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionTS")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionTS> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionTS::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionTS::Print (std::ostream &os) const
+{
+  os << m_timestamp << ";" << m_echo;
+}
+
+uint32_t
+TcpOptionTS::GetSerializedSize (void) const
+{
+  return 10;
+}
+
+void
+TcpOptionTS::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  i.WriteU8 (GetKind ()); // Kind
+  i.WriteU8 (10); // Length
+  i.WriteHtonU32 (m_timestamp); // Local timestamp
+  i.WriteHtonU32 (m_echo); // Echo timestamp
+}
+
+uint32_t
+TcpOptionTS::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t readKind = i.ReadU8 ();
+  if (readKind != GetKind ())
+    {
+      NS_LOG_WARN ("Malformed Timestamp option");
+      return 0;
+    }
+
+  uint8_t size = i.ReadU8 ();
+  if (size != 10)
+    {
+      NS_LOG_WARN ("Malformed Timestamp option");
+      return 0;
+    }
+  m_timestamp = i.ReadNtohU32 ();
+  m_echo = i.ReadNtohU32 ();
+  return GetSerializedSize ();
+}
+
+uint8_t
+TcpOptionTS::GetKind (void) const
+{
+  return TcpOption::TS;
+}
+
+uint32_t
+TcpOptionTS::GetTimestamp (void) const
+{
+  return m_timestamp;
+}
+
+uint32_t
+TcpOptionTS::GetEcho (void) const
+{
+  return m_echo;
+}
+
+void
+TcpOptionTS::SetTimestamp (uint32_t ts)
+{
+  m_timestamp = ts;
+}
+
+void
+TcpOptionTS::SetEcho (uint32_t ts)
+{
+  m_echo = ts;
+}
+
+uint32_t
+TcpOptionTS::NowToTsValue ()
+{
+  uint64_t now = (uint64_t) Simulator::Now ().GetMilliSeconds ();
+
+  // high: (now & 0xFFFFFFFF00000000ULL) >> 32;
+  // low: now & 0xFFFFFFFF
+  return (now & 0xFFFFFFFF);
+}
+
+Time
+TcpOptionTS::ElapsedTimeFromTsValue (uint32_t echoTime)
+{
+  uint64_t now64 = (uint64_t) Simulator::Now ().GetMilliSeconds ();
+  uint32_t now32 = now64 & 0xFFFFFFFF;
+
+  Time ret = Seconds (0.0);
+  if (now32 > echoTime)
+    {
+      ret = MilliSeconds (now32 - echoTime);
+    }
+
+  return ret;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-option-ts.h ns-3.21/src/internet/model/tcp-option-ts.h
--- ns-3.20/src/internet/model/tcp-option-ts.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-ts.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,108 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ */
+
+#ifndef TCP_OPTION_TS_H
+#define TCP_OPTION_TS_H
+
+#include "tcp-option.h"
+#include "ns3/timer.h"
+
+namespace ns3 {
+
+/**
+ * Defines the TCP option of kind 8 (timestamp option) as in \RFC{1323}
+ */
+
+class TcpOptionTS : public TcpOption
+{
+public:
+  TcpOptionTS ();
+  virtual ~TcpOptionTS ();
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Get the timestamp stored in the Option
+   * \return the timestamp
+   */
+  uint32_t GetTimestamp (void) const;
+  /**
+   * \brief Get the timestamp echo stored in the Option
+   * \return the timestamp echo
+   */
+  uint32_t GetEcho (void) const;
+  /**
+   * \brief Set the timestamp stored in the Option
+   * \param ts the timestamp
+   */
+  void SetTimestamp (uint32_t ts);
+  /**
+   * \brief Set the timestamp echo stored in the Option
+   * \param ts the timestamp echo
+   */
+  void SetEcho (uint32_t ts);
+
+  /**
+    * \brief Return an uint32_t value which represent "now"
+    *
+    * The value returned is usually used as Timestamp option for the
+    * TCP header; when the value will be echoed back, calculating the RTT
+    * will be an easy matter.
+    *
+    * The RFC does not mention any units for this value; following what
+    * is implemented in OS, we use milliseconds. Any change to this must be
+    * reflected to EstimateRttFromTs.
+    *
+    * \see EstimateRttFromTs
+    * \return The Timestamp value to use
+    */
+  static uint32_t NowToTsValue ();
+
+  /**
+   * \brief Estimate the Time elapsed from a TS echo value
+   *
+   * The echoTime should be a value returned from NowToTsValue.
+   *
+   * \param echoTime Echoed value from other side
+   * \see NowToTsValue
+   * \return The measured RTT
+   */
+  static Time ElapsedTimeFromTsValue (uint32_t echoTime);
+
+protected:
+  uint32_t m_timestamp; //!< local timestamp
+  uint32_t m_echo; //!< echo timestamp
+};
+
+} // namespace ns3
+
+#endif /* TCP_OPTION_TS */
diff -Naur ns-3.20/src/internet/model/tcp-option-winscale.cc ns-3.21/src/internet/model/tcp-option-winscale.cc
--- ns-3.20/src/internet/model/tcp-option-winscale.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-winscale.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,120 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ * Documentation, test cases: Natale Patriciello <natale.patriciello@gmail.com>
+ */
+
+#include "tcp-option-winscale.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("TcpOptionWinScale");
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (TcpOptionWinScale);
+
+TcpOptionWinScale::TcpOptionWinScale ()
+  : TcpOption (),
+    m_scale (0)
+{
+}
+
+TcpOptionWinScale::~TcpOptionWinScale ()
+{
+}
+
+TypeId
+TcpOptionWinScale::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::TcpOptionWinScale")
+    .SetParent<TcpOption> ()
+    .AddConstructor<TcpOptionWinScale> ()
+  ;
+  return tid;
+}
+
+TypeId
+TcpOptionWinScale::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+void
+TcpOptionWinScale::Print (std::ostream &os) const
+{
+  os << static_cast<int> (m_scale);
+}
+
+uint32_t
+TcpOptionWinScale::GetSerializedSize (void) const
+{
+  return 3;
+}
+
+void
+TcpOptionWinScale::Serialize (Buffer::Iterator start) const
+{
+  Buffer::Iterator i = start;
+  i.WriteU8 (GetKind ()); // Kind
+  i.WriteU8 (3); // Length
+  i.WriteU8 (m_scale); // Max segment size
+}
+
+uint32_t
+TcpOptionWinScale::Deserialize (Buffer::Iterator start)
+{
+  Buffer::Iterator i = start;
+
+  uint8_t readKind = i.ReadU8 ();
+  if (readKind != GetKind ())
+    {
+      NS_LOG_WARN ("Malformed Window Scale option");
+      return 0;
+    }
+  uint8_t size = i.ReadU8 ();
+  if (size != 3)
+    {
+      NS_LOG_WARN ("Malformed Window Scale option");
+      return 0;
+    }
+  m_scale = i.ReadU8 ();
+  return GetSerializedSize ();
+}
+
+uint8_t
+TcpOptionWinScale::GetKind (void) const
+{
+  return TcpOption::WINSCALE;
+}
+
+uint8_t
+TcpOptionWinScale::GetScale (void) const
+{
+  NS_ASSERT (m_scale <= 14);
+
+  return m_scale;
+}
+
+void
+TcpOptionWinScale::SetScale (uint8_t scale)
+{
+  NS_ASSERT (scale <= 14);
+
+  m_scale = scale;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-option-winscale.h ns-3.21/src/internet/model/tcp-option-winscale.h
--- ns-3.20/src/internet/model/tcp-option-winscale.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/model/tcp-option-winscale.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,89 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 Adrian Sai-wah Tam
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Adrian Sai-wah Tam <adrian.sw.tam@gmail.com>
+ * Documentation, test cases: Natale Patriciello <natale.patriciello@gmail.com>
+ */
+
+#ifndef TCP_OPTION_WINSCALE_H
+#define TCP_OPTION_WINSCALE_H
+
+#include "tcp-option.h"
+
+namespace ns3 {
+
+/**
+ * \brief Defines the TCP option of kind 3 (window scale option) as in \RFC{1323}
+ *
+ * For more efficient use of high bandwidth networks, a larger TCP window size
+ * may be used. The TCP window size field controls the flow of data and its
+ * value is limited to between 2 and 65,535 bytes.
+ *
+ * Since the size field cannot be expanded, a scaling factor is used.
+ * The TCP window scale option, as defined in \RFC{1323}, is an option used
+ * to increase the maximum window size from 65,535 bytes to 1 gigabyte.
+ * Scaling up to larger window sizes is a part of what is necessary for TCP Tuning.
+ *
+ * The window scale option is used only during the TCP 3-way handshake.
+ * The window scale value represents the number of bits to left-shift the
+ * 16-bit window size field. The window scale value can be set from 0
+ * (no shift) to 14 for each direction independently. Both sides must
+ * send the option in their SYN segments to enable window scaling in
+ * either direction.
+ */
+class TcpOptionWinScale : public TcpOption
+{
+public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  TcpOptionWinScale ();
+  virtual ~TcpOptionWinScale ();
+
+  virtual void Print (std::ostream &os) const;
+  virtual void Serialize (Buffer::Iterator start) const;
+  virtual uint32_t Deserialize (Buffer::Iterator start);
+
+  virtual uint8_t GetKind (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+
+  /**
+   * \brief Get the scale value (uint8_t)
+   * \return The scale value
+   */
+  uint8_t GetScale (void) const;
+
+  /**
+   * \brief Set the scale option
+   *
+   * The scale option SHOULD be <= 14 (as \RFC{1323}).
+   *
+   * \param scale Scale factor
+   */
+  void SetScale (uint8_t scale);
+
+protected:
+  uint8_t m_scale; //!< Window scaling in number of bit shift
+};
+
+} // namespace ns3
+
+#endif /* TCP_OPTION_WINSCALE */
diff -Naur ns-3.20/src/internet/model/tcp-reno.cc ns-3.21/src/internet/model/tcp-reno.cc
--- ns-3.20/src/internet/model/tcp-reno.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-reno.cc	2014-09-17 20:03:14.000000000 -0700
@@ -47,6 +47,9 @@
     .AddTraceSource ("CongestionWindow",
                      "The TCP connection's congestion window",
                      MakeTraceSourceAccessor (&TcpReno::m_cWnd))
+    .AddTraceSource ("SlowStartThreshold",
+                     "TCP slow start threshold (bytes)",
+                     MakeTraceSourceAccessor (&TcpReno::m_ssThresh))
   ;
   return tid;
 }
@@ -61,6 +64,7 @@
     m_cWnd (sock.m_cWnd),
     m_ssThresh (sock.m_ssThresh),
     m_initialCWnd (sock.m_initialCWnd),
+    m_initialSsThresh (sock.m_initialSsThresh),
     m_retxThresh (sock.m_retxThresh),
     m_inFastRec (false)
 {
@@ -194,15 +198,16 @@
 }
 
 void
-TcpReno::SetSSThresh (uint32_t threshold)
+TcpReno::SetInitialSSThresh (uint32_t threshold)
 {
-  m_ssThresh = threshold;
+  NS_ABORT_MSG_UNLESS (m_state == CLOSED, "TcpReno::SetSSThresh() cannot change initial ssThresh after connection started.");
+  m_initialSsThresh = threshold;
 }
 
 uint32_t
-TcpReno::GetSSThresh (void) const
+TcpReno::GetInitialSSThresh (void) const
 {
-  return m_ssThresh;
+  return m_initialSsThresh;
 }
 
 void
@@ -227,6 +232,7 @@
    * m_segmentSize are set by the attribute system in ns3::TcpSocket.
    */
   m_cWnd = m_initialCWnd * m_segmentSize;
+  m_ssThresh = m_initialSsThresh;
 }
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-reno.h ns-3.21/src/internet/model/tcp-reno.h
--- ns-3.20/src/internet/model/tcp-reno.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-reno.h	2014-09-17 20:03:14.000000000 -0700
@@ -67,8 +67,8 @@
 
   // Implementing ns3::TcpSocket -- Attribute get/set
   virtual void     SetSegSize (uint32_t size);
-  virtual void     SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void     SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void     SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
 private:
@@ -79,8 +79,9 @@
 
 protected:
   TracedValue<uint32_t>  m_cWnd;         //!< Congestion window
-  uint32_t               m_ssThresh;     //!< Slow Start Threshold
+  TracedValue<uint32_t>  m_ssThresh;     //!< Slow Start Threshold
   uint32_t               m_initialCWnd;  //!< Initial cWnd value
+  uint32_t               m_initialSsThresh;  //!< Initial Slow Start Threshold value
   uint32_t               m_retxThresh;   //!< Fast Retransmit threshold
   bool                   m_inFastRec;    //!< currently in fast recovery
 };
diff -Naur ns-3.20/src/internet/model/tcp-rfc793.cc ns-3.21/src/internet/model/tcp-rfc793.cc
--- ns-3.20/src/internet/model/tcp-rfc793.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-rfc793.cc	2014-09-17 20:03:14.000000000 -0700
@@ -63,13 +63,13 @@
 }
 
 void
-TcpRfc793::SetSSThresh (uint32_t threshold)
+TcpRfc793::SetInitialSSThresh (uint32_t threshold)
 {
   NS_LOG_WARN ("DoD TCP does not perform slow start");
 }
 
 uint32_t
-TcpRfc793::GetSSThresh (void) const
+TcpRfc793::GetInitialSSThresh (void) const
 {
   NS_LOG_WARN ("DoD TCP does not perform slow start");
   return 0;
diff -Naur ns-3.20/src/internet/model/tcp-rfc793.h ns-3.21/src/internet/model/tcp-rfc793.h
--- ns-3.20/src/internet/model/tcp-rfc793.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-rfc793.h	2014-09-17 20:03:14.000000000 -0700
@@ -58,8 +58,8 @@
 protected:
   virtual Ptr<TcpSocketBase> Fork (); // Call CopyObject<TcpRfc793> to clone me
   virtual void DupAck (const TcpHeader& t, uint32_t count);
-  virtual void     SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void     SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void     SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
 };
diff -Naur ns-3.20/src/internet/model/tcp-socket-base.cc ns-3.21/src/internet/model/tcp-socket-base.cc
--- ns-3.20/src/internet/model/tcp-socket-base.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-socket-base.cc	2014-09-17 20:03:14.000000000 -0700
@@ -46,8 +46,11 @@
 #include "ipv6-end-point.h"
 #include "ipv6-l3-protocol.h"
 #include "tcp-header.h"
+#include "tcp-option-winscale.h"
+#include "tcp-option-ts.h"
 #include "rtt-estimator.h"
 
+#include <math.h>
 #include <algorithm>
 
 NS_LOG_COMPONENT_DEFINE ("TcpSocketBase");
@@ -82,7 +85,15 @@
     .AddAttribute ("IcmpCallback6", "Callback invoked whenever an icmpv6 error is received on this socket.",
                    CallbackValue (),
                    MakeCallbackAccessor (&TcpSocketBase::m_icmpCallback6),
-                   MakeCallbackChecker ())                   
+                   MakeCallbackChecker ())
+    .AddAttribute ("WindowScaling", "Enable or disable Window Scaling option",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&TcpSocketBase::m_winScalingEnabled),
+                   MakeBooleanChecker ())
+    .AddAttribute ("Timestamp", "Enable or disable Timestamp option",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&TcpSocketBase::m_timestampEnabled),
+                   MakeBooleanChecker ())
     .AddTraceSource ("RTO",
                      "Retransmission timeout",
                      MakeTraceSourceAccessor (&TcpSocketBase::m_rto))
@@ -127,7 +138,13 @@
     m_connected (false),
     m_segmentSize (0),
     // For attribute initialization consistency (quiet valgrind)
-    m_rWnd (0)
+    m_rWnd (0),
+    m_sndScaleFactor (0),
+    m_rcvScaleFactor (0),
+    m_timestampEnabled (true),
+    m_timestampToEcho (0),
+    m_lastEchoedTime (0)
+
 {
   NS_LOG_FUNCTION (this);
 }
@@ -162,7 +179,14 @@
     m_msl (sock.m_msl),
     m_segmentSize (sock.m_segmentSize),
     m_maxWinSize (sock.m_maxWinSize),
-    m_rWnd (sock.m_rWnd)
+    m_rWnd (sock.m_rWnd),
+    m_winScalingEnabled (sock.m_winScalingEnabled),
+    m_sndScaleFactor (sock.m_sndScaleFactor),
+    m_rcvScaleFactor (sock.m_rcvScaleFactor),
+    m_timestampEnabled (sock.m_timestampEnabled),
+    m_timestampToEcho (sock.m_timestampToEcho),
+    m_lastEchoedTime (sock.m_lastEchoedTime)
+
 {
   NS_LOG_FUNCTION (this);
   NS_LOG_LOGIC ("Invoked the copy constructor");
@@ -662,21 +686,28 @@
 {
   NS_LOG_FUNCTION (netdevice);
   Socket::BindToNetDevice (netdevice); // Includes sanity check
-  if (m_endPoint == 0 && m_endPoint6 == 0)
+  if (m_endPoint == 0)
     {
       if (Bind () == -1)
         {
-          NS_ASSERT ((m_endPoint == 0 && m_endPoint6 == 0));
+          NS_ASSERT (m_endPoint == 0);
           return;
         }
-      NS_ASSERT ((m_endPoint != 0 && m_endPoint6 != 0));
+      NS_ASSERT (m_endPoint != 0);
     }
+  m_endPoint->BindToNetDevice (netdevice);
 
-  if (m_endPoint != 0)
+  if (m_endPoint6 == 0)
     {
-      m_endPoint->BindToNetDevice (netdevice);
+      if (Bind6 () == -1)
+        {
+          NS_ASSERT (m_endPoint6 == 0);
+          return;
+        }
+      NS_ASSERT (m_endPoint6 != 0);
     }
-  // No BindToNetDevice() for Ipv6EndPoint
+  m_endPoint6->BindToNetDevice (netdevice);
+
   return;
 }
 
@@ -872,12 +903,19 @@
 
   // Peel off TCP header and do validity checking
   TcpHeader tcpHeader;
-  packet->RemoveHeader (tcpHeader);
+  uint32_t bytesRemoved = packet->RemoveHeader (tcpHeader);
+  if (bytesRemoved == 0 || bytesRemoved > 60)
+    {
+      NS_LOG_ERROR ("Bytes removed: " << bytesRemoved << " invalid");
+      return; // Discard invalid packet
+    }
+
+  ReadOptions (tcpHeader);
+
   if (tcpHeader.GetFlags () & TcpHeader::ACK)
     {
       EstimateRtt (tcpHeader);
     }
-  ReadOptions (tcpHeader);
 
   // Update Rx window size, i.e. the flow control window
   if (m_rWnd.Get () == 0 && tcpHeader.GetWindowSize () != 0)
@@ -886,6 +924,7 @@
       m_persistEvent.Cancel ();
     }
   m_rWnd = tcpHeader.GetWindowSize ();
+  m_rWnd <<= m_rcvScaleFactor;
 
   // Discard fully out of range data packets
   if (packet->GetSize ()
@@ -954,6 +993,7 @@
     }
 }
 
+// XXX this is duplicate code with the other DoForwardUp()
 void
 TcpSocketBase::DoForwardUp (Ptr<Packet> packet, Ipv6Header header, uint16_t port)
 {
@@ -967,12 +1007,19 @@
 
   // Peel off TCP header and do validity checking
   TcpHeader tcpHeader;
-  packet->RemoveHeader (tcpHeader);
+  uint32_t bytesRemoved = packet->RemoveHeader (tcpHeader);
+  if (bytesRemoved == 0 || bytesRemoved > 60)
+    {
+      NS_LOG_ERROR ("Bytes removed: " << bytesRemoved << " invalid");
+      return; // Discard invalid packet
+    }
+
+  ReadOptions (tcpHeader);
+
   if (tcpHeader.GetFlags () & TcpHeader::ACK)
     {
       EstimateRtt (tcpHeader);
     }
-  ReadOptions (tcpHeader);
 
   // Update Rx window size, i.e. the flow control window
   if (m_rWnd.Get () == 0 && tcpHeader.GetWindowSize () != 0)
@@ -981,6 +1028,7 @@
       m_persistEvent.Cancel ();
     }
   m_rWnd = tcpHeader.GetWindowSize ();
+  m_rWnd <<= m_rcvScaleFactor;
 
   // Discard fully out of range packets
   if (packet->GetSize ()
@@ -1636,8 +1684,8 @@
       header.SetSourcePort (m_endPoint6->GetLocalPort ());
       header.SetDestinationPort (m_endPoint6->GetPeerPort ());
     }
-  header.SetWindowSize (AdvertisedWindowSize ());
   AddOptions (header);
+  header.SetWindowSize (AdvertisedWindowSize ());
   m_rto = m_rtt->RetransmitTimeout ();
   bool hasSyn = flags & TcpHeader::SYN;
   bool hasFin = flags & TcpHeader::FIN;
@@ -1817,6 +1865,7 @@
   SetupCallback ();
   // Set the sequence number and send SYN+ACK
   m_rxBuffer.SetNextRxSequence (h.GetSequenceNumber () + SequenceNumber32 (1));
+
   SendEmptyPacket (TcpHeader::SYN | TcpHeader::ACK);
 }
 
@@ -2025,7 +2074,17 @@
 uint16_t
 TcpSocketBase::AdvertisedWindowSize ()
 {
-  return std::min (m_rxBuffer.MaxBufferSize () - m_rxBuffer.Size (), (uint32_t)m_maxWinSize);
+  uint32_t w = m_rxBuffer.MaxBufferSize () - m_rxBuffer.Size ();
+
+  w >>= m_sndScaleFactor;
+
+  if (w > m_maxWinSize)
+    {
+      NS_LOG_WARN ("There is a loss in the adv win size, wrt buffer size");
+      w = m_maxWinSize;
+    }
+
+  return (uint16_t) w;
 }
 
 // Receipt of new packet, put into Rx buffer
@@ -2085,17 +2144,31 @@
     }
 }
 
-/* Called by ForwardUp() to estimate RTT */
+/**
+ * \brief Estimate the RTT
+ *
+ * Called by ForwardUp() to estimate RTT.
+ *
+ * \param tcpHeader TCP header for the incoming packet
+ */
 void
 TcpSocketBase::EstimateRtt (const TcpHeader& tcpHeader)
 {
-  // Use m_rtt for the estimation. Note, RTT of duplicated acknowledgement
-  // (which should be ignored) is handled by m_rtt. Once timestamp option
-  // is implemented, this function would be more elaborated.
-  Time nextRtt =  m_rtt->AckSeq (tcpHeader.GetAckNumber () );
+  Time nextRtt;
+
+  if (m_timestampEnabled)
+    {
+      nextRtt = TcpOptionTS::ElapsedTimeFromTsValue (m_lastEchoedTime);
+    }
+  else
+    {
+      // Use m_rtt for the estimation. Note, RTT of duplicated acknowledgement
+      // (which should be ignored) is handled by m_rtt.
+      nextRtt =  m_rtt->EstimateRttFromSeq (tcpHeader.GetAckNumber () );
+    }
 
   //nextRtt will be zero for dup acks.  Don't want to update lastRtt in that case
-  //but still needed to do list clearing that is done in AckSeq. 
+  //but still needed to do list clearing that is done in EstimateRttFromSeq.
   if(nextRtt != Time (0))
   {
     m_lastRtt = nextRtt;
@@ -2432,16 +2505,141 @@
   return false;
 }
 
-/* Placeholder function for future extension that reads more from the TCP header */
 void
-TcpSocketBase::ReadOptions (const TcpHeader&)
+TcpSocketBase::ReadOptions (const TcpHeader& header)
+{
+  NS_LOG_FUNCTION (this << header);
+
+  if ((header.GetFlags () & TcpHeader::SYN))
+    {
+      if (m_winScalingEnabled)
+        {
+          m_winScalingEnabled = false;
+
+          if (header.HasOption (TcpOption::WINSCALE))
+            {
+              m_winScalingEnabled = true;
+              ProcessOptionWScale (header.GetOption (TcpOption::WINSCALE));
+            }
+        }
+    }
+
+  m_timestampEnabled = false;
+  if (header.HasOption (TcpOption::TS))
+    {
+      m_timestampEnabled = true;
+      ProcessOptionTimestamp (header.GetOption (TcpOption::TS));
+    }
+}
+
+void
+TcpSocketBase::AddOptions (TcpHeader& header)
 {
+  NS_LOG_FUNCTION (this << header);
+
+  // The window scaling option is set only on SYN packets
+  if (m_winScalingEnabled && (header.GetFlags () & TcpHeader::SYN))
+    {
+      AddOptionWScale (header);
+    }
+
+  if (m_timestampEnabled)
+    {
+      AddOptionTimestamp (header);
+    }
 }
 
-/* Placeholder function for future extension that changes the TCP header */
 void
-TcpSocketBase::AddOptions (TcpHeader&)
+TcpSocketBase::ProcessOptionWScale (const Ptr<const TcpOption> option)
 {
+  NS_LOG_FUNCTION (this << option);
+
+  Ptr<const TcpOptionWinScale> ws = DynamicCast<const TcpOptionWinScale> (option);
+
+  // In naming, we do the contrary of RFC 1323. The received scaling factor
+  // is Rcv.Wind.Scale (and not Snd.Wind.Scale)
+  m_rcvScaleFactor = ws->GetScale ();
+
+  if (m_rcvScaleFactor > 14)
+    {
+      NS_LOG_WARN ("Possible error; m_rcvScaleFactor exceeds 14: " << m_rcvScaleFactor);
+      m_rcvScaleFactor = 14;
+    }
+
+  NS_LOG_INFO (m_node->GetId () << " Received a scale factor of " <<
+                 static_cast<int> (m_rcvScaleFactor));
+}
+
+uint8_t
+TcpSocketBase::CalculateWScale () const
+{
+  NS_LOG_FUNCTION (this);
+  uint32_t maxSpace = m_rxBuffer.MaxBufferSize ();
+  uint8_t scale = 0;
+
+  while (maxSpace > m_maxWinSize)
+    {
+      maxSpace = maxSpace >> 1;
+      ++scale;
+    }
+
+  if (scale > 14)
+    {
+      NS_LOG_WARN ("Possible error; scale exceeds 14: " << scale);
+      scale = 14;
+    }
+
+  NS_LOG_INFO ("Node " << m_node->GetId () << " calculated wscale factor of " <<
+               static_cast<int> (scale) << " for buffer size " << m_rxBuffer.MaxBufferSize ());
+  return scale;
+}
+
+void
+TcpSocketBase::AddOptionWScale (TcpHeader &header)
+{
+  NS_LOG_FUNCTION (this << header);
+  NS_ASSERT(header.GetFlags () & TcpHeader::SYN);
+
+  Ptr<TcpOptionWinScale> option = CreateObject<TcpOptionWinScale> ();
+
+  // In naming, we do the contrary of RFC 1323. The sended scaling factor
+  // is Snd.Wind.Scale (and not Rcv.Wind.Scale)
+
+  m_sndScaleFactor = CalculateWScale ();
+  option->SetScale (m_sndScaleFactor);
+
+  header.AppendOption (option);
+
+  NS_LOG_INFO (m_node->GetId () << " Send a scaling factor of " <<
+                 static_cast<int> (m_sndScaleFactor));
+}
+
+void
+TcpSocketBase::ProcessOptionTimestamp (const Ptr<const TcpOption> option)
+{
+  NS_LOG_FUNCTION (this << option);
+
+  Ptr<const TcpOptionTS> ts = DynamicCast<const TcpOptionTS> (option);
+  m_timestampToEcho = ts->GetTimestamp ();
+  m_lastEchoedTime = ts->GetEcho ();
+
+  NS_LOG_INFO (m_node->GetId () << " Got timestamp=" <<
+               m_timestampToEcho << " and Echo="     << m_lastEchoedTime);
+}
+
+void
+TcpSocketBase::AddOptionTimestamp (TcpHeader& header)
+{
+  NS_LOG_FUNCTION (this << header);
+
+  Ptr<TcpOptionTS> option = CreateObject<TcpOptionTS> ();
+
+  option->SetTimestamp (TcpOptionTS::NowToTsValue ());
+  option->SetEcho (m_timestampToEcho);
+
+  header.AppendOption (option);
+  NS_LOG_INFO (m_node->GetId () << " Add option TS, ts=" <<
+               option->GetTimestamp () << " echo=" << m_timestampToEcho);
 }
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-socket-base.h ns-3.21/src/internet/model/tcp-socket-base.h
--- ns-3.20/src/internet/model/tcp-socket-base.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-socket-base.h	2014-09-17 20:03:14.000000000 -0700
@@ -132,8 +132,8 @@
   virtual uint32_t GetRcvBufSize (void) const;
   virtual void     SetSegSize (uint32_t size);
   virtual uint32_t GetSegSize (void) const;
-  virtual void     SetSSThresh (uint32_t threshold) = 0;
-  virtual uint32_t GetSSThresh (void) const = 0;
+  virtual void     SetInitialSSThresh (uint32_t threshold) = 0;
+  virtual uint32_t GetInitialSSThresh (void) const = 0;
   virtual void     SetInitialCwnd (uint32_t cwnd) = 0;
   virtual uint32_t GetInitialCwnd (void) const = 0;
   virtual void     SetConnTimeout (Time timeout);
@@ -539,17 +539,76 @@
   virtual void DoRetransmit (void);
 
   /**
-   * \brief Read option from incoming packets
+   * \brief Read TCP options from incoming packets
+   *  
+   * This method sequentially checks each kind of option, and if it
+   * is present in the header, starts its processing.
+   *
+   * To deal with hosts which don't have the option enabled (or
+   * implemented) we disable all options, and then re-enable them
+   * if in the packet there is the option itself.
+   *
    * \param tcpHeader the packet's TCP header
    */
   virtual void ReadOptions (const TcpHeader& tcpHeader);
 
-  /**
-   * \brief Add option to outgoing packets
-   * \param tcpHeader the packet's TCP header
+  /** \brief Add options to TcpHeader
+   *
+   * Test each option, and if it is enabled on our side, add it
+   * to the header
+   *
+   * \param tcpHeader TcpHeader to add options to
    */
   virtual void AddOptions (TcpHeader& tcpHeader);
 
+  /**
+   * \brief Read and parse the Window scale option
+   *
+   * Read the window scale option (encoded logarithmically) and save it.
+   * Per RFC 1323, the value can't exceed 14.
+   *
+   * \param option Window scale option read from the header
+   */
+  void ProcessOptionWScale (const Ptr<const TcpOption> option);
+  /**
+   * \brief Add the window scale option to the header
+   *
+   * Calculate our factor from the rxBuffer max size, and add it
+   * to the header.
+   *
+   * \param header TcpHeader where the method should add the window scale option
+   */
+  void AddOptionWScale (TcpHeader& header);
+
+  /**
+   * \brief Calculate window scale value based on receive buffer space
+   *
+   * Calculate our factor from the rxBuffer max size
+   *
+   * \param header TcpHeader where the method should add the window scale option
+   */
+  uint8_t CalculateWScale () const;
+
+  /** \brief Process the timestamp option from other side
+   *
+   * Get the timestamp and the echo, then save timestamp (which will
+   * be the echo value in our out-packets) and save the echoed timestamp,
+   * to utilize later to calculate RTT.
+   *
+   * \see EstimateRtt
+   * \param option Option from the packet
+   */
+  void ProcessOptionTimestamp (const Ptr<const TcpOption> option);
+  /**
+   * \brief Add the timestamp option to the header
+   *
+   * Set the timestamp as the lower bits of the Simulator::Now time,
+   * and the echo value as the last seen timestamp from the other part.
+   *
+   * \param header TcpHeader to which add the option to
+   */
+  void AddOptionTimestamp (TcpHeader& header);
+
 
 protected:
   // Counters and events
@@ -600,6 +659,15 @@
   uint32_t              m_segmentSize; //!< Segment size
   uint16_t              m_maxWinSize;  //!< Maximum window size to advertise
   TracedValue<uint32_t> m_rWnd;        //!< Flow control window at remote side
+
+  // Options
+  bool    m_winScalingEnabled;
+  uint8_t m_sndScaleFactor;
+  uint8_t m_rcvScaleFactor;
+
+  bool     m_timestampEnabled;
+  uint32_t m_timestampToEcho;
+  uint32_t m_lastEchoedTime;
 };
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-socket.cc ns-3.21/src/internet/model/tcp-socket.cc
--- ns-3.20/src/internet/model/tcp-socket.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-socket.cc	2014-09-17 20:03:14.000000000 -0700
@@ -58,11 +58,11 @@
                    MakeUintegerAccessor (&TcpSocket::GetSegSize,
                                          &TcpSocket::SetSegSize),
                    MakeUintegerChecker<uint32_t> ())
-    .AddAttribute ("SlowStartThreshold",
-                   "TCP slow start threshold (bytes)",
+    .AddAttribute ("InitialSlowStartThreshold",
+                   "TCP initial slow start threshold (bytes)",
                    UintegerValue (0xffff),
-                   MakeUintegerAccessor (&TcpSocket::GetSSThresh,
-                                         &TcpSocket::SetSSThresh),
+                   MakeUintegerAccessor (&TcpSocket::GetInitialSSThresh,
+                                         &TcpSocket::SetInitialSSThresh),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("InitialCwnd",
                    "TCP initial congestion window size (segments)",
diff -Naur ns-3.20/src/internet/model/tcp-socket.h ns-3.21/src/internet/model/tcp-socket.h
--- ns-3.20/src/internet/model/tcp-socket.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-socket.h	2014-09-17 20:03:14.000000000 -0700
@@ -119,16 +119,16 @@
   virtual uint32_t GetSegSize (void) const = 0;
 
   /**
-   * \brief Set the Slow Start Threshold.
+   * \brief Set the initial Slow Start Threshold.
    * \param threshold the Slow Start Threshold (in bytes)
    */
-  virtual void SetSSThresh (uint32_t threshold) = 0;
+  virtual void SetInitialSSThresh (uint32_t threshold) = 0;
 
   /**
-   * \brief Get the Slow Start Threshold.
+   * \brief Get the initial Slow Start Threshold.
    * \returns the Slow Start Threshold (in bytes)
    */
-  virtual uint32_t GetSSThresh (void) const = 0;
+  virtual uint32_t GetInitialSSThresh (void) const = 0;
 
   /**
    * \brief Set the initial Congestion Window.
diff -Naur ns-3.20/src/internet/model/tcp-tahoe.cc ns-3.21/src/internet/model/tcp-tahoe.cc
--- ns-3.20/src/internet/model/tcp-tahoe.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-tahoe.cc	2014-09-17 20:03:14.000000000 -0700
@@ -47,6 +47,9 @@
     .AddTraceSource ("CongestionWindow",
                      "The TCP connection's congestion window",
                      MakeTraceSourceAccessor (&TcpTahoe::m_cWnd))
+    .AddTraceSource ("SlowStartThreshold",
+                     "TCP slow start threshold (bytes)",
+                     MakeTraceSourceAccessor (&TcpTahoe::m_ssThresh))
   ;
   return tid;
 }
@@ -61,6 +64,7 @@
     m_cWnd (sock.m_cWnd),
     m_ssThresh (sock.m_ssThresh),
     m_initialCWnd (sock.m_initialCWnd),
+    m_initialSsThresh (sock.m_initialSsThresh),
     m_retxThresh (sock.m_retxThresh)
 {
   NS_LOG_FUNCTION (this);
@@ -108,7 +112,7 @@
 TcpTahoe::NewAck (SequenceNumber32 const& seq)
 {
   NS_LOG_FUNCTION (this << seq);
-  NS_LOG_LOGIC ("TcpTahoe receieved ACK for seq " << seq <<
+  NS_LOG_LOGIC ("TcpTahoe received ACK for seq " << seq <<
                 " cwnd " << m_cWnd <<
                 " ssthresh " << m_ssThresh);
   if (m_cWnd < m_ssThresh)
@@ -172,15 +176,16 @@
 }
 
 void
-TcpTahoe::SetSSThresh (uint32_t threshold)
+TcpTahoe::SetInitialSSThresh (uint32_t threshold)
 {
-  m_ssThresh = threshold;
+  NS_ABORT_MSG_UNLESS (m_state == CLOSED, "TcpTahoe::SetSSThresh() cannot change initial ssThresh after connection started.");
+  m_initialSsThresh = threshold;
 }
 
 uint32_t
-TcpTahoe::GetSSThresh (void) const
+TcpTahoe::GetInitialSSThresh (void) const
 {
-  return m_ssThresh;
+  return m_initialSsThresh;
 }
 
 void
@@ -205,6 +210,7 @@
    * m_segmentSize are set by the attribute system in ns3::TcpSocket.
    */
   m_cWnd = m_initialCWnd * m_segmentSize;
+  m_ssThresh = m_initialSsThresh;
 }
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-tahoe.h ns-3.21/src/internet/model/tcp-tahoe.h
--- ns-3.20/src/internet/model/tcp-tahoe.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-tahoe.h	2014-09-17 20:03:14.000000000 -0700
@@ -71,8 +71,8 @@
 
   // Implementing ns3::TcpSocket -- Attribute get/set
   virtual void     SetSegSize (uint32_t size);
-  virtual void     SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void     SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void     SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
 private:
@@ -83,8 +83,9 @@
 
 protected:
   TracedValue<uint32_t>  m_cWnd;         //!< Congestion window
-  uint32_t               m_ssThresh;     //!< Slow Start Threshold
+  TracedValue<uint32_t>  m_ssThresh;     //!< Slow Start Threshold
   uint32_t               m_initialCWnd;  //!< Initial cWnd value
+  uint32_t               m_initialSsThresh;  //!< Initial Slow Start Threshold value
   uint32_t               m_retxThresh;   //!< Fast Retransmit threshold
 };
 
diff -Naur ns-3.20/src/internet/model/tcp-westwood.cc ns-3.21/src/internet/model/tcp-westwood.cc
--- ns-3.20/src/internet/model/tcp-westwood.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-westwood.cc	2014-09-17 20:03:14.000000000 -0700
@@ -56,6 +56,9 @@
       .AddConstructor<TcpWestwood>()
       .AddTraceSource("CongestionWindow", "The TCP connection's congestion window",
                       MakeTraceSourceAccessor(&TcpWestwood::m_cWnd))
+      .AddTraceSource ("SlowStartThreshold",
+                       "TCP slow start threshold (bytes)",
+                       MakeTraceSourceAccessor (&TcpWestwood::m_ssThresh))
       .AddAttribute("FilterType", "Use this to choose no filter or Tustin's approximation filter",
                     EnumValue(TcpWestwood::TUSTIN), MakeEnumAccessor(&TcpWestwood::m_fType),
                     MakeEnumChecker(TcpWestwood::NONE, "None", TcpWestwood::TUSTIN, "Tustin"))
@@ -88,6 +91,7 @@
   m_cWnd(sock.m_cWnd),
   m_ssThresh(sock.m_ssThresh),
   m_initialCWnd(sock.m_initialCWnd),
+  m_initialSsThresh (sock.m_initialSsThresh),
   m_inFastRec(false),
   m_currentBW(sock.m_currentBW),
   m_lastSampleBW(sock.m_lastSampleBW),
@@ -272,7 +276,7 @@
   if (count == 3 && !m_inFastRec)
     {// Triple duplicate ACK triggers fast retransmit
      // Adjust cwnd and ssthresh based on the estimated BW
-      m_ssThresh = m_currentBW * static_cast<double> (m_minRtt.GetSeconds());
+      m_ssThresh = uint32_t(m_currentBW * static_cast<double> (m_minRtt.GetSeconds()));
       if (m_cWnd > m_ssThresh)
         {
           m_cWnd = m_ssThresh;
@@ -380,17 +384,18 @@
 }
 
 void
-TcpWestwood::SetSSThresh (uint32_t threshold)
+TcpWestwood::SetInitialSSThresh (uint32_t threshold)
 {
   NS_LOG_FUNCTION (this);
-  m_ssThresh = threshold;
+  NS_ABORT_MSG_UNLESS (m_state == CLOSED, "TcpWestwood::SetSSThresh() cannot change initial ssThresh after connection started.");
+  m_initialSsThresh = threshold;
 }
 
 uint32_t
-TcpWestwood::GetSSThresh (void) const
+TcpWestwood::GetInitialSSThresh (void) const
 {
   NS_LOG_FUNCTION (this);
-  return m_ssThresh;
+  return m_initialSsThresh;
 }
 
 void
@@ -417,6 +422,7 @@
    * m_segmentSize are set by the attribute system in ns3::TcpSocket.
    */
   m_cWnd = m_initialCWnd * m_segmentSize;
+  m_ssThresh = m_initialSsThresh;
 }
 
 } // namespace ns3
diff -Naur ns-3.20/src/internet/model/tcp-westwood.h ns-3.21/src/internet/model/tcp-westwood.h
--- ns-3.20/src/internet/model/tcp-westwood.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/tcp-westwood.h	2014-09-17 20:03:14.000000000 -0700
@@ -122,8 +122,8 @@
 
   // Implementing ns3::TcpSocket -- Attribute get/set
   virtual void     SetSegSize (uint32_t size);
-  virtual void     SetSSThresh (uint32_t threshold);
-  virtual uint32_t GetSSThresh (void) const;
+  virtual void     SetInitialSSThresh (uint32_t threshold);
+  virtual uint32_t GetInitialSSThresh (void) const;
   virtual void     SetInitialCwnd (uint32_t cwnd);
   virtual uint32_t GetInitialCwnd (void) const;
 
@@ -164,8 +164,9 @@
 
 protected:
   TracedValue<uint32_t>  m_cWnd;                   //!< Congestion window
-  uint32_t               m_ssThresh;               //!< Slow Start Threshold
+  TracedValue<uint32_t>  m_ssThresh;               //!< Slow Start Threshold
   uint32_t               m_initialCWnd;            //!< Initial cWnd value
+  uint32_t               m_initialSsThresh;        //!< Initial Slow Start Threshold value
   bool                   m_inFastRec;              //!< Currently in fast recovery if TRUE
 
   TracedValue<double>    m_currentBW;              //!< Current value of the estimated BW
diff -Naur ns-3.20/src/internet/model/udp-socket-impl.cc ns-3.21/src/internet/model/udp-socket-impl.cc
--- ns-3.20/src/internet/model/udp-socket-impl.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/model/udp-socket-impl.cc	2014-09-17 20:03:14.000000000 -0700
@@ -247,6 +247,8 @@
 
   if (InetSocketAddress::IsMatchingType (address))
     {
+      NS_ASSERT_MSG (m_endPoint == 0, "Endpoint already allocated (maybe you used BindToNetDevice before Bind).");
+
       InetSocketAddress transport = InetSocketAddress::ConvertFrom (address);
       Ipv4Address ipv4 = transport.GetIpv4 ();
       uint16_t port = transport.GetPort ();
@@ -274,6 +276,8 @@
     }
   else if (Inet6SocketAddress::IsMatchingType (address))
     {
+      NS_ASSERT_MSG (m_endPoint == 0, "Endpoint already allocated (maybe you used BindToNetDevice before Bind).");
+
       Inet6SocketAddress transport = Inet6SocketAddress::ConvertFrom (address);
       Ipv6Address ipv6 = transport.GetIpv6 ();
       uint16_t port = transport.GetPort ();
@@ -917,6 +921,7 @@
 UdpSocketImpl::BindToNetDevice (Ptr<NetDevice> netdevice)
 {
   NS_LOG_FUNCTION (netdevice);
+
   Socket::BindToNetDevice (netdevice); // Includes sanity check
   if (m_endPoint == 0)
     {
@@ -928,6 +933,17 @@
       NS_ASSERT (m_endPoint != 0);
     }
   m_endPoint->BindToNetDevice (netdevice);
+
+  if (m_endPoint6 == 0)
+    {
+      if (Bind6 () == -1)
+        {
+          NS_ASSERT (m_endPoint6 == 0);
+          return;
+        }
+      NS_ASSERT (m_endPoint6 != 0);
+    }
+  m_endPoint6->BindToNetDevice (netdevice);
   return;
 }
 
diff -Naur ns-3.20/src/internet/test/codel-queue-test-suite.cc ns-3.21/src/internet/test/codel-queue-test-suite.cc
--- ns-3.20/src/internet/test/codel-queue-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/codel-queue-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,478 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 ResiliNets, ITTC, University of Kansas
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Truc Anh N Nguyen <trucanh524@gmail.com>
+ *
+ */
+
+#include "ns3/test.h"
+#include "ns3/codel-queue.h"
+#include "ns3/uinteger.h"
+#include "ns3/string.h"
+#include "ns3/double.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/network-module.h"
+#include "ns3/core-module.h"
+
+using namespace ns3;
+
+// The following code borrowed from Linux codel.h, for unit testing
+#define REC_INV_SQRT_BITS_ns3 (8 * sizeof(uint16_t))
+/* or sizeof_in_bits(rec_inv_sqrt) */
+/* needed shift to get a Q0.32 number from rec_inv_sqrt */
+#define REC_INV_SQRT_SHIFT_ns3 (32 - REC_INV_SQRT_BITS_ns3)
+
+static uint16_t _codel_Newton_step (uint32_t count, uint16_t rec_inv_sqrt)
+{
+  uint32_t invsqrt = ((uint32_t)rec_inv_sqrt) << REC_INV_SQRT_SHIFT_ns3;
+  uint32_t invsqrt2 = ((uint64_t)invsqrt * invsqrt) >> 32;
+  uint64_t val = (3LL << 32) - ((uint64_t)count * invsqrt2);
+
+  val >>= 2; /* avoid overflow in following multiply */
+  val = (val * invsqrt) >> (32 - 2 + 1);
+  return (val >> REC_INV_SQRT_SHIFT_ns3);
+}
+
+static uint32_t _reciprocal_scale (uint32_t val, uint32_t ep_ro)
+{
+  return (uint32_t)(((uint64_t)val * ep_ro) >> 32);
+}
+// End Linux borrow
+
+
+// Test 1: simple enqueue/dequeue with no drops
+class CoDelQueueBasicEnqueueDequeue : public TestCase
+{
+public:
+  CoDelQueueBasicEnqueueDequeue (std::string mode);
+  virtual void DoRun (void);
+private:
+  StringValue m_mode;
+};
+
+CoDelQueueBasicEnqueueDequeue::CoDelQueueBasicEnqueueDequeue (std::string mode)
+  : TestCase ("Basic enqueue and dequeue operations, and attribute setting for " + mode)
+{
+  m_mode = StringValue (mode);
+}
+
+void
+CoDelQueueBasicEnqueueDequeue::DoRun (void)
+{
+  Ptr<CoDelQueue> queue = CreateObject<CoDelQueue> ();
+
+  uint32_t pktSize = 1000;
+  uint32_t modeSize = 0;
+
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
+                         "Verify that we can actually set the attribute Mode");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (1500)), true,
+                         "Verify that we can actually set the attribute MaxPackets");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxBytes", UintegerValue (pktSize * 1500)), true,
+                         "Verify that we can actually set the attribute MaxBytes");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinBytes", UintegerValue (pktSize)), true,
+                         "Verify that we can actually set the attribute MinBytes");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Interval", StringValue ("50ms")), true,
+                         "Verify that we can actually set the attribute Interval");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Target", StringValue ("4ms")), true,
+                         "Verify that we can actually set the attribute Target");
+
+  if (queue->GetMode () == CoDelQueue::QUEUE_MODE_BYTES)
+    {
+      modeSize = pktSize;
+    }
+  else if (queue->GetMode () == CoDelQueue::QUEUE_MODE_PACKETS)
+    {
+      modeSize = 1;
+    }
+
+  Ptr<Packet> p1, p2, p3, p4, p5, p6;
+  p1 = Create<Packet> (pktSize);
+  p2 = Create<Packet> (pktSize);
+  p3 = Create<Packet> (pktSize);
+  p4 = Create<Packet> (pktSize);
+  p5 = Create<Packet> (pktSize);
+  p6 = Create<Packet> (pktSize);
+
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 0 * modeSize, "There should be no packets in queue");
+  queue->Enqueue (p1);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 1 * modeSize, "There should be one packet in queue");
+  queue->Enqueue (p2);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 2 * modeSize, "There should be two packets in queue");
+  queue->Enqueue (p3);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 3 * modeSize, "There should be three packets in queue");
+  queue->Enqueue (p4);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 4 * modeSize, "There should be four packets in queue");
+  queue->Enqueue (p5);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 5 * modeSize, "There should be five packets in queue");
+  queue->Enqueue (p6);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 6 * modeSize, "There should be six packets in queue");
+
+  NS_TEST_EXPECT_MSG_EQ (queue->GetDropOverLimit (), 0, "There should be no packets being dropped due to full queue");
+
+  Ptr<Packet> p;
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the first packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 5 * modeSize, "There should be five packets in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p1->GetUid (), "was this the first packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the second packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 4 * modeSize, "There should be four packets in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p2->GetUid (), "Was this the second packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the third packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 3 * modeSize, "There should be three packets in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p3->GetUid (), "Was this the third packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the forth packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 2 * modeSize, "There should be two packets in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p4->GetUid (), "Was this the fourth packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the fifth packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 1 * modeSize, "There should be one packet in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p5->GetUid (), "Was this the fifth packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p != 0), true, "I want to remove the last packet");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 0 * modeSize, "There should be zero packet in queue");
+  NS_TEST_EXPECT_MSG_EQ (p->GetUid (), p6->GetUid (), "Was this the sixth packet ?");
+
+  p = queue->Dequeue ();
+  NS_TEST_EXPECT_MSG_EQ ((p == 0), true, "There are really no packets in queue");
+
+  NS_TEST_EXPECT_MSG_EQ (queue->GetDropCount (), 0, "There should be no packet drops according to CoDel algorithm");
+}
+
+// Test 2: enqueue with drops due to queue overflow
+class CoDelQueueBasicOverflow : public TestCase
+{
+public:
+  CoDelQueueBasicOverflow (std::string mode);
+  virtual void DoRun (void);
+private:
+  void Enqueue (Ptr<CoDelQueue> queue, uint32_t size, uint32_t nPkt);
+  StringValue m_mode;
+};
+
+CoDelQueueBasicOverflow::CoDelQueueBasicOverflow (std::string mode)
+  : TestCase ("Basic overflow behavior for " + mode)
+{
+  m_mode = StringValue (mode);
+}
+
+void
+CoDelQueueBasicOverflow::DoRun (void)
+{
+  Ptr<CoDelQueue> queue = CreateObject<CoDelQueue> ();
+  uint32_t pktSize = 1000;
+  uint32_t modeSize = 0;
+
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
+                         "Verify that we can actually set the attribute Mode");
+
+  if (queue->GetMode () == CoDelQueue::QUEUE_MODE_BYTES)
+    {
+      modeSize = pktSize;
+    }
+  else if (queue->GetMode () == CoDelQueue::QUEUE_MODE_PACKETS)
+    {
+      modeSize = 1;
+    }
+
+  Ptr<Packet> p1, p2, p3;
+  p1 = Create<Packet> (pktSize);
+  p2 = Create<Packet> (pktSize);
+  p3 = Create<Packet> (pktSize);
+
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (500)), true,
+                         "Verify that we can actually set the attribute MaxPackets");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxBytes", UintegerValue (pktSize * 500)), true,
+                         "Verify that we can actually set the attribute MaxBytes");
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinBytes", UintegerValue (pktSize)), true,
+                         "Verify that we can actually set the attribute MinBytes");
+
+  Enqueue (queue, pktSize, 500);
+  queue->Enqueue (p1);
+  queue->Enqueue (p2);
+  queue->Enqueue (p3);
+
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 500 * modeSize, "There should be 500 packets in queue");
+  NS_TEST_EXPECT_MSG_EQ (queue->GetDropOverLimit (), 3, "There should be three packets being dropped due to full queue");
+}
+
+void
+CoDelQueueBasicOverflow::Enqueue (Ptr<CoDelQueue> queue, uint32_t size, uint32_t nPkt)
+{
+  for (uint32_t i = 0; i < nPkt; i++)
+    {
+      queue->Enqueue (Create<Packet> (size));
+    }
+}
+
+// Test 3: NewtonStep unit test
+// test against explicit port of Linux implementation
+class CoDelQueueNewtonStepTest : public TestCase
+{
+public:
+  CoDelQueueNewtonStepTest ();
+  virtual void DoRun (void);
+};
+
+CoDelQueueNewtonStepTest::CoDelQueueNewtonStepTest ()
+  : TestCase ("NewtonStep arithmetic unit test")
+{
+}
+
+void
+CoDelQueueNewtonStepTest::DoRun (void)
+{
+  Ptr<CoDelQueue> queue = CreateObject<CoDelQueue> ();
+
+  // Spot check a few points in the expected operational range of
+  // CoDelQueue's m_count and m_recInvSqrt variables
+  uint32_t count = 2;
+  uint16_t recInvSqrt = 65535;
+  queue->m_count = count;
+  queue->m_recInvSqrt = recInvSqrt;
+  queue->NewtonStep ();
+  // Test that ns-3 value is exactly the same as the Linux value
+  NS_TEST_ASSERT_MSG_EQ (_codel_Newton_step (count, recInvSqrt), queue->m_recInvSqrt,
+                         "ns-3 NewtonStep() fails to match Linux equivalent");
+
+  count = 4;
+  recInvSqrt = 36864;
+  queue->m_count = count;
+  queue->m_recInvSqrt = recInvSqrt;
+  queue->NewtonStep ();
+  // Test that ns-3 value is exactly the same as the Linux value
+  NS_TEST_ASSERT_MSG_EQ (_codel_Newton_step (count, recInvSqrt), queue->m_recInvSqrt,
+                         "ns-3 NewtonStep() fails to match Linux equivalent");
+}
+
+// Test 4: ControlLaw unit test
+// test against explicit port of Linux implementation
+class CoDelQueueControlLawTest : public TestCase
+{
+public:
+  CoDelQueueControlLawTest ();
+  virtual void DoRun (void);
+  uint32_t _codel_control_law (Ptr<CoDelQueue> queue, uint32_t t);
+};
+
+CoDelQueueControlLawTest::CoDelQueueControlLawTest ()
+  : TestCase ("ControlLaw arithmetic unit test")
+{
+}
+
+// The following code borrowed from Linux codel.h,
+// except the addition of queue parameter
+uint32_t
+CoDelQueueControlLawTest::_codel_control_law (Ptr<CoDelQueue> queue, uint32_t t)
+{
+  return t + _reciprocal_scale (queue->Time2CoDel (queue->m_interval), queue->m_recInvSqrt << REC_INV_SQRT_SHIFT_ns3);
+}
+// End Linux borrrow
+
+void
+CoDelQueueControlLawTest::DoRun (void)
+{
+  Ptr<CoDelQueue> queue = CreateObject<CoDelQueue> ();
+
+  /* Spot check a few points of m_dropNext
+   The integer approximations in Linux should be within
+   2% of the true floating point value obtained in ns-3
+   */
+  uint32_t dropNextTestVals [4] = {292299, 341128, 9804717, 55885007};
+
+  for (int i = 0; i < 4; ++i)
+    {
+      uint32_t ns3Result = queue->ControlLaw (dropNextTestVals[i]);
+      uint32_t upperBound = ns3Result + 0.02 * ns3Result;
+      uint32_t lowerBound = ns3Result - 0.02 * ns3Result;
+      uint32_t linuxResult = _codel_control_law (queue, dropNextTestVals[i]);
+      NS_TEST_EXPECT_MSG_EQ ((lowerBound < linuxResult || linuxResult < upperBound), true,
+                             "Linux result should stay within 2% of ns-3 result");
+    }
+}
+
+// Test 5: enqueue/dequeue with drops according to CoDel algorithm
+class CoDelQueueBasicDrop : public TestCase
+{
+public:
+  CoDelQueueBasicDrop (std::string mode);
+  virtual void DoRun (void);
+private:
+  void Enqueue (Ptr<CoDelQueue> queue, uint32_t size, uint32_t nPkt);
+  void Dequeue (Ptr<CoDelQueue> queue, uint32_t modeSize);
+  void DropNextTracer (uint32_t oldVal, uint32_t newVal);
+  StringValue m_mode;
+  uint32_t m_dropNextCount;    //count the number of times m_dropNext is recalculated
+};
+
+CoDelQueueBasicDrop::CoDelQueueBasicDrop (std::string mode)
+  : TestCase ("Basic drop operations for " + mode)
+{
+  m_mode = StringValue (mode);
+  m_dropNextCount = 0;
+}
+
+void
+CoDelQueueBasicDrop::DropNextTracer (uint32_t oldVal, uint32_t newVal)
+{
+  m_dropNextCount++;
+}
+
+void
+CoDelQueueBasicDrop::DoRun (void)
+{
+  Ptr<CoDelQueue> queue = CreateObject<CoDelQueue> ();
+  uint32_t pktSize = 1000;
+  uint32_t modeSize = 0;
+
+  NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
+                         "Verify that we can actually set the attribute Mode");
+
+  if (queue->GetMode () == CoDelQueue::QUEUE_MODE_BYTES)
+    {
+      modeSize = pktSize;
+    }
+  else if (queue->GetMode () == CoDelQueue::QUEUE_MODE_PACKETS)
+    {
+      modeSize = 1;
+    }
+
+  Enqueue (queue, pktSize, 20);
+  NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 20 * modeSize, "There should be 20 packets in queue.");
+
+  // Although the first dequeue occurs with a sojourn time above target
+  // the dequeue should be successful in this interval
+  Time waitUntilFirstDequeue =  2 * queue->GetTarget ();
+  Simulator::Schedule (waitUntilFirstDequeue, &CoDelQueueBasicDrop::Dequeue, this, queue, modeSize);
+
+  // This dequeue should cause a drop
+  Time waitUntilSecondDequeue = waitUntilFirstDequeue + 2 * queue->GetInterval ();
+  Simulator::Schedule (waitUntilSecondDequeue, &CoDelQueueBasicDrop::Dequeue, this, queue, modeSize);
+
+  // Although we are in dropping state, it's not time for next drop
+  // the dequeue should not cause a drop
+  Simulator::Schedule (waitUntilSecondDequeue, &CoDelQueueBasicDrop::Dequeue, this, queue, modeSize);
+
+  // In dropping time and it's time for next drop
+  // the dequeue should cause additional packet drops
+  Simulator::Schedule (waitUntilSecondDequeue * 2, &CoDelQueueBasicDrop::Dequeue, this, queue, modeSize);
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+}
+
+void
+CoDelQueueBasicDrop::Enqueue (Ptr<CoDelQueue> queue, uint32_t size, uint32_t nPkt)
+{
+  for (uint32_t i = 0; i < nPkt; i++)
+    {
+      queue->Enqueue (Create<Packet> (size));
+    }
+}
+
+void
+CoDelQueueBasicDrop::Dequeue (Ptr<CoDelQueue> queue, uint32_t modeSize)
+{
+  uint32_t initialDropCount = queue->GetDropCount ();
+  uint32_t initialQSize = queue->GetQueueSize ();
+  uint32_t initialDropNext = queue->GetDropNext ();
+  Time currentTime = Simulator::Now ();
+  uint32_t currentDropCount = 0;
+
+  if (initialDropCount > 0 && currentTime.GetMicroSeconds () >= initialDropNext)
+    {
+      queue->TraceConnectWithoutContext ("DropNext", MakeCallback (&CoDelQueueBasicDrop::DropNextTracer, this));
+    }
+
+  if (initialQSize != 0)
+    {
+      Ptr<Packet> p = queue->Dequeue ();
+      if (initialDropCount == 0 && currentTime > queue->GetTarget ())
+        {
+          if (currentTime < queue->GetInterval ())
+            {
+              currentDropCount = queue->GetDropCount ();
+              NS_TEST_EXPECT_MSG_EQ (currentDropCount, 0, "We are not in dropping state."
+                                     "Sojourn time has just gone above target from below."
+                                     "Hence, there should be no packet drops");
+              NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), initialQSize - modeSize, "There should be 1 packet dequeued.");
+
+            }
+          else if (currentTime >= queue->GetInterval ())
+            {
+              currentDropCount = queue->GetDropCount ();
+              NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), initialQSize - 2 * modeSize, "Sojourn time has been above target for at least interval."
+                                     "We enter the dropping state, perform initial packet drop, and dequeue the next."
+                                     "So there should be 2 more packets dequeued.");
+              NS_TEST_EXPECT_MSG_EQ (currentDropCount, 1, "There should be 1 packet drop");
+            }
+        }
+      else if (initialDropCount > 0)
+        { // In dropping state
+          if (currentTime.GetMicroSeconds () < initialDropNext)
+            {
+              currentDropCount = queue->GetDropCount ();
+              NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), initialQSize - modeSize, "We are in dropping state."
+                                     "Sojourn is still above target."
+                                     "However, it's not time for next drop."
+                                     "So there should be only 1 more packet dequeued");
+
+              NS_TEST_EXPECT_MSG_EQ (currentDropCount, 1, "There should still be only 1 packet drop from the last dequeue");
+            }
+          else if (currentTime.GetMicroSeconds () >= initialDropNext)
+            {
+              currentDropCount = queue->GetDropCount ();
+              NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), initialQSize - (m_dropNextCount + 1) * modeSize, "We are in dropping state."
+                                     "It's time for next drop."
+                                     "The number of packets dequeued equals to the number of times m_dropNext is updated plus initial dequeue");
+              NS_TEST_EXPECT_MSG_EQ (currentDropCount, 1 + m_dropNextCount, "The number of drops equals to the number of times m_dropNext is updated plus 1 from last dequeue");
+            }
+        }
+    }
+}
+
+static class CoDelQueueTestSuite : public TestSuite
+{
+public:
+  CoDelQueueTestSuite ()
+    : TestSuite ("codel-queue", UNIT)
+  {
+    // Test 1: simple enqueue/dequeue with no drops
+    AddTestCase (new CoDelQueueBasicEnqueueDequeue ("QUEUE_MODE_PACKETS"), TestCase::QUICK);
+    AddTestCase (new CoDelQueueBasicEnqueueDequeue ("QUEUE_MODE_BYTES"), TestCase::QUICK);
+    // Test 2: enqueue with drops due to queue overflow
+    AddTestCase (new CoDelQueueBasicOverflow ("QUEUE_MODE_PACKETS"), TestCase::QUICK);
+    AddTestCase (new CoDelQueueBasicOverflow ("QUEUE_MODE_BYTES"), TestCase::QUICK);
+    // Test 3: test NewtonStep() against explicit port of Linux implementation
+    AddTestCase (new CoDelQueueNewtonStepTest (), TestCase::QUICK);
+    // Test 4: test ControlLaw() against explicit port of Linux implementation
+    AddTestCase (new CoDelQueueControlLawTest (), TestCase::QUICK);
+    // Test 5: enqueue/dequeue with drops according to CoDel algorithm
+    AddTestCase (new CoDelQueueBasicDrop ("QUEUE_MODE_PACKETS"), TestCase::QUICK);
+    AddTestCase (new CoDelQueueBasicDrop ("QUEUE_MODE_PACKETS"), TestCase::QUICK);
+  }
+} g_coDelQueueTestSuite;
diff -Naur ns-3.20/src/internet/test/ipv4-fragmentation-test.cc ns-3.21/src/internet/test/ipv4-fragmentation-test.cc
--- ns-3.20/src/internet/test/ipv4-fragmentation-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/test/ipv4-fragmentation-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -30,6 +30,7 @@
 #include "ns3/simulator.h"
 #include "error-channel.h"
 #include "ns3/simple-net-device.h"
+#include "ns3/simple-net-device-helper.h"
 #include "ns3/drop-tail-queue.h"
 #include "ns3/socket.h"
 #include "ns3/udp-socket.h"
@@ -45,6 +46,7 @@
 #include "ns3/ipv4-list-routing.h"
 #include "ns3/ipv4-static-routing.h"
 #include "ns3/udp-l4-protocol.h"
+#include "ns3/internet-stack-helper.h"
 
 #include <string>
 #include <limits>
@@ -74,29 +76,6 @@
   uint64_t getToken () { return token; }
 };
 
-static void
-AddInternetStack (Ptr<Node> node)
-{
-  //ARP
-  Ptr<ArpL3Protocol> arp = CreateObject<ArpL3Protocol> ();
-  node->AggregateObject(arp);
-  //IPV4
-  Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
-  //Routing for Ipv4
-  Ptr<Ipv4ListRouting> ipv4Routing = CreateObject<Ipv4ListRouting> ();
-  ipv4->SetRoutingProtocol (ipv4Routing);
-  Ptr<Ipv4StaticRouting> ipv4staticRouting = CreateObject<Ipv4StaticRouting> ();
-  ipv4Routing->AddRoutingProtocol (ipv4staticRouting, 0);
-  node->AggregateObject(ipv4);
-  //ICMP
-  Ptr<Icmpv4L4Protocol> icmp = CreateObject<Icmpv4L4Protocol> ();
-  node->AggregateObject(icmp);
-  // //Ipv4Raw
-  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
-  node->AggregateObject(udp);
-}
-
-
 class Ipv4FragmentationTest: public TestCase
 {
   Ptr<Packet> m_sentPacketClient;
@@ -283,52 +262,52 @@
 
   // Create topology
   
-  // Receiver Node
+   // Receiver Node
   Ptr<Node> serverNode = CreateObject<Node> ();
-  AddInternetStack (serverNode);
-  Ptr<SimpleNetDevice> serverDev;
-  Ptr<BinaryErrorModel> serverDevErrorModel = CreateObject<BinaryErrorModel> ();
-  {
-    serverDev = CreateObject<SimpleNetDevice> ();
-    serverDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    serverDev->SetMtu(1500);
-    serverDev->SetReceiveErrorModel(serverDevErrorModel);
-    serverDevErrorModel->Disable();
-    serverNode->AddDevice (serverDev);
-    Ptr<Ipv4> ipv4 = serverNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (serverDev);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-  StartServer(serverNode);
-
   // Sender Node
   Ptr<Node> clientNode = CreateObject<Node> ();
-  AddInternetStack (clientNode);
-  Ptr<SimpleNetDevice> clientDev;
-  Ptr<BinaryErrorModel> clientDevErrorModel = CreateObject<BinaryErrorModel> ();
-  {
-    clientDev = CreateObject<SimpleNetDevice> ();
-    clientDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    clientDev->SetMtu(1000);
-    clientDev->SetReceiveErrorModel(clientDevErrorModel);
-    clientDevErrorModel->Disable();
-    clientNode->AddDevice (clientDev);
-    Ptr<Ipv4> ipv4 = clientNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (clientDev);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-  StartClient(clientNode);
 
-  // link the two nodes
+  NodeContainer nodes (serverNode, clientNode);
+
   Ptr<ErrorChannel> channel = CreateObject<ErrorChannel> ();
-  serverDev->SetChannel (channel);
-  clientDev->SetChannel (channel);
-  channel->SetJumpingTime(Seconds(0.5));
+  channel->SetJumpingTime (Seconds (0.5));
+
+  SimpleNetDeviceHelper helperChannel;
+  helperChannel.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net = helperChannel.Install (nodes, channel);
+
+  InternetStackHelper internet;
+  internet.Install (nodes);
+
+  Ptr<Ipv4> ipv4;
+  uint32_t netdev_idx;
+  Ipv4InterfaceAddress ipv4Addr;
+
+  // Receiver Node
+  ipv4 = serverNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net.Get (0));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+  Ptr<BinaryErrorModel> serverDevErrorModel = CreateObject<BinaryErrorModel> ();
+  Ptr<SimpleNetDevice> serverDev = DynamicCast<SimpleNetDevice> (net.Get (0));
+  serverDevErrorModel->Disable ();
+  serverDev->SetMtu(1500);
+  serverDev->SetReceiveErrorModel (serverDevErrorModel);
+  StartServer (serverNode);
 
+  // Sender Node
+  ipv4 = clientNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net.Get (1));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+  Ptr<BinaryErrorModel> clientDevErrorModel = CreateObject<BinaryErrorModel> ();
+  Ptr<SimpleNetDevice> clientDev = DynamicCast<SimpleNetDevice> (net.Get (1));
+  clientDevErrorModel->Disable ();
+  clientDev->SetMtu(1500);
+  clientDev->SetReceiveErrorModel (clientDevErrorModel);
+  StartClient (clientNode);
 
   // some small packets, some rather big ones
   uint32_t packetSizes[5] = {1000, 2000, 5000, 10000, 65000};
diff -Naur ns-3.20/src/internet/test/ipv4-global-routing-test-suite.cc ns-3.21/src/internet/test/ipv4-global-routing-test-suite.cc
--- ns-3.20/src/internet/test/ipv4-global-routing-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/ipv4-global-routing-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,457 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <vector>
+#include "ns3/boolean.h"
+#include "ns3/config.h"
+#include "ns3/inet-socket-address.h"
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv4-address-helper.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/ipv4-static-routing-helper.h"
+#include "ns3/node.h"
+#include "ns3/node-container.h"
+#include "ns3/packet.h"
+#include "ns3/simple-net-device-helper.h"
+#include "ns3/pointer.h"
+#include "ns3/simulator.h"
+#include "ns3/string.h"
+#include "ns3/test.h"
+#include "ns3/uinteger.h"
+#include "ns3/ipv4-packet-info-tag.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/simple-channel.h"
+#include "ns3/socket-factory.h"
+#include "ns3/udp-socket-factory.h"
+
+using namespace ns3;
+
+class Ipv4DynamicGlobalRoutingTestCase : public TestCase
+{
+public:
+  Ipv4DynamicGlobalRoutingTestCase ();
+  virtual ~Ipv4DynamicGlobalRoutingTestCase ();
+
+private:
+  void SendData (uint8_t index);
+  void ShutDownSock (uint8_t index);
+  void SinkRx (std::string path, Ptr<const Packet> p, const Address &address);
+  void HandleRead (Ptr<Socket>);
+  virtual void DoRun (void);
+
+  int m_count;
+  std::vector<std::pair<Ptr<Socket>, bool> > m_sendSocks;
+  DataRate m_dataRate;
+  uint16_t m_packetSize;
+  std::vector<uint8_t> m_firstInterface;
+  std::vector<uint8_t> m_secondInterface;
+};
+
+// Add some help text to this case to describe what it is intended to test
+Ipv4DynamicGlobalRoutingTestCase::Ipv4DynamicGlobalRoutingTestCase ()
+  : TestCase ("Dynamic global routing example"), m_count (0)
+{
+  m_firstInterface.resize (16);
+  m_secondInterface.resize (16);
+  m_dataRate = DataRate ("2kbps");
+  m_packetSize = 50;
+}
+
+Ipv4DynamicGlobalRoutingTestCase::~Ipv4DynamicGlobalRoutingTestCase ()
+{
+  std::vector<std::pair<Ptr<Socket>, bool> >::iterator iter;
+
+  for (iter = m_sendSocks.begin (); iter != m_sendSocks.end (); iter++)
+    {
+      if (iter->second)
+        {
+          iter->second = false;
+          iter->first->Close ();
+          iter->first = 0;
+        }
+    }
+}
+
+void
+Ipv4DynamicGlobalRoutingTestCase::SinkRx (std::string path, Ptr<const Packet> p, const Address& address)
+{
+  Ipv4PacketInfoTag tag;
+  bool found;
+  found = p->PeekPacketTag (tag);
+  uint8_t now = static_cast<uint8_t> (Simulator::Now ().GetSeconds ());
+  if (found)
+    {
+      ;
+    }
+  m_firstInterface[now]++;
+  m_count++;
+}
+
+void 
+Ipv4DynamicGlobalRoutingTestCase::HandleRead (Ptr<Socket> socket)
+{
+  Ptr<Packet> packet;
+  Address from;
+  while ((packet = socket->RecvFrom (from)))
+    {
+      if (packet->GetSize () == 0)
+        { //EOF
+          break;
+        }
+      Ipv4PacketInfoTag tag;
+      bool found;
+      found = packet->PeekPacketTag (tag);
+      uint8_t now = static_cast<uint8_t> (Simulator::Now ().GetSeconds ());
+      if (found)
+        {
+          if (tag.GetRecvIf () == 1)
+            {
+              m_firstInterface[now]++;
+            }
+          if (tag.GetRecvIf () == 2)
+            {
+              m_secondInterface[now]++;
+            }
+          m_count++;
+        }
+    }
+}
+
+void
+Ipv4DynamicGlobalRoutingTestCase::SendData (uint8_t index)
+{
+  if (m_sendSocks[index].second == false)
+    {
+      return;
+    }
+  Ptr<Packet> packet = Create<Packet> (m_packetSize);
+  m_sendSocks[index].first->Send (packet);
+
+  Time tNext (Seconds (m_packetSize * 8 / static_cast<double> (m_dataRate.GetBitRate ())));
+  Simulator::Schedule (tNext, &Ipv4DynamicGlobalRoutingTestCase::SendData, this, index);
+}
+
+void
+Ipv4DynamicGlobalRoutingTestCase::ShutDownSock (uint8_t index)
+{
+  m_sendSocks[index].second = false;
+  m_sendSocks[index].first->Close ();
+  m_sendSocks[index].first = 0;
+}
+
+// Test derived from examples/routing/dynamic-global-routing.cc
+//
+// Network topology
+//
+//  n0
+//     \ p-p
+//      \          (shared csma/cd)
+//       n2 -------------------------n3
+//      /            |        | 
+//     / p-p        n4        n5 ---------- n6
+//   n1                             p-p
+//   |                                      |
+//   ----------------------------------------
+//                p-p
+//
+// Test that for node n6, the interface facing n5 receives packets at
+// times (1-2), (4-6), (8-10), (11-12), (14-16) and the interface
+// facing n1 receives packets at times (2-4), (6-8), (12-13)
+//
+void
+Ipv4DynamicGlobalRoutingTestCase::DoRun (void)
+{
+  // The below value configures the default behavior of global routing.
+  // By default, it is disabled.  To respond to interface events, set to true
+  Config::SetDefault ("ns3::Ipv4GlobalRouting::RespondToInterfaceEvents", BooleanValue (true));
+
+  NodeContainer c;
+  c.Create (7);
+  NodeContainer n0n2 = NodeContainer (c.Get (0), c.Get (2));
+  NodeContainer n1n2 = NodeContainer (c.Get (1), c.Get (2));
+  NodeContainer n5n6 = NodeContainer (c.Get (5), c.Get (6));
+  NodeContainer n1n6 = NodeContainer (c.Get (1), c.Get (6));
+  NodeContainer n2345 = NodeContainer (c.Get (2), c.Get (3), c.Get (4), c.Get (5));
+
+  InternetStackHelper internet;
+  internet.Install (c);
+
+  // We create the channels first without any IP addressing information
+  SimpleNetDeviceHelper devHelper;
+
+  devHelper.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer d0d2 = devHelper.Install (n0n2);
+  devHelper.SetNetDevicePointToPointMode (false);
+
+  NetDeviceContainer d1d6 = devHelper.Install (n1n6);
+  NetDeviceContainer d1d2 = devHelper.Install (n1n2);
+  NetDeviceContainer d5d6 = devHelper.Install (n5n6);
+  NetDeviceContainer d2345 = devHelper.Install (n2345);
+
+  // Later, we add IP addresses.
+  Ipv4AddressHelper ipv4;
+  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+  ipv4.Assign (d0d2);
+
+  ipv4.SetBase ("10.1.2.0", "255.255.255.0");
+  ipv4.Assign (d1d2);
+
+  ipv4.SetBase ("10.1.3.0", "255.255.255.0");
+  Ipv4InterfaceContainer i5i6 = ipv4.Assign (d5d6);
+
+  ipv4.SetBase ("10.250.1.0", "255.255.255.0");
+  ipv4.Assign (d2345);
+
+  ipv4.SetBase ("172.16.1.0", "255.255.255.0");
+  Ipv4InterfaceContainer i1i6 = ipv4.Assign (d1d6);
+
+  // Create router nodes, initialize routing database and set up the routing
+  // tables in the nodes.
+  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+
+  // Create the applications to send UDP datagrams of size
+  // 50 bytes at a rate of 2 Kb/s
+  TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
+  uint16_t port = 9;   // Discard port (RFC 863)
+
+  std::pair<Ptr<Socket>, bool>  sendSockA;
+  sendSockA.first = Socket::CreateSocket (c.Get (1), tid);
+  sendSockA.first->Bind ();
+  sendSockA.first->Connect (InetSocketAddress (i5i6.GetAddress (1), port));
+  sendSockA.second = true;
+  m_sendSocks.push_back (sendSockA);
+  Simulator::Schedule (Seconds (1.0), &Ipv4DynamicGlobalRoutingTestCase::SendData, this, 0);
+  Simulator::Schedule (Seconds (10.0), &Ipv4DynamicGlobalRoutingTestCase::ShutDownSock, this, 0);
+
+  std::pair<Ptr<Socket>, bool>  sendSockB;
+  sendSockB.first = Socket::CreateSocket (c.Get (1), tid);
+  sendSockB.first->Bind ();
+  sendSockB.first->Connect (InetSocketAddress (i1i6.GetAddress (1), port));
+  sendSockB.second = true;
+  m_sendSocks.push_back (sendSockB);
+  Simulator::Schedule (Seconds (11.0), &Ipv4DynamicGlobalRoutingTestCase::SendData, this, 1);
+  Simulator::Schedule (Seconds (16.0), &Ipv4DynamicGlobalRoutingTestCase::ShutDownSock, this, 1);
+
+
+  // Create an optional packet sink to receive these packets
+  Ptr<Socket> sink2 = Socket::CreateSocket (c.Get (6), tid);
+  sink2->Bind (Address (InetSocketAddress (Ipv4Address::GetAny (), port)));
+  sink2->Listen ();
+  sink2->ShutdownSend ();
+
+  sink2->SetRecvPktInfo (true);
+  sink2->SetRecvCallback (MakeCallback (&Ipv4DynamicGlobalRoutingTestCase::HandleRead, this));
+
+  Ptr<Node> n1 = c.Get (1);
+  Ptr<Ipv4> ipv41 = n1->GetObject<Ipv4> ();
+  // The first ifIndex is 0 for loopback, then the first p2p is numbered 1,
+  // then the next p2p is numbered 2
+  uint32_t ipv4ifIndex1 = 2;
+
+  // Trace receptions
+  Config::Connect ("/NodeList/6/ApplicationList/*/$ns3::PacketSink/Rx",
+                   MakeCallback (&Ipv4DynamicGlobalRoutingTestCase::SinkRx, this));
+
+  Simulator::Schedule (Seconds (2), &Ipv4::SetDown,ipv41, ipv4ifIndex1);
+  Simulator::Schedule (Seconds (4), &Ipv4::SetUp,ipv41, ipv4ifIndex1);
+
+  Ptr<Node> n6 = c.Get (6);
+  Ptr<Ipv4> ipv46 = n6->GetObject<Ipv4> ();
+  // The first ifIndex is 0 for loopback, then the first p2p is numbered 1,
+  // then the next p2p is numbered 2
+  uint32_t ipv4ifIndex6 = 2;
+  Simulator::Schedule (Seconds (6), &Ipv4::SetDown,ipv46, ipv4ifIndex6);
+  Simulator::Schedule (Seconds (8), &Ipv4::SetUp,ipv46, ipv4ifIndex6);
+
+  Simulator::Schedule (Seconds (12), &Ipv4::SetDown,ipv41, ipv4ifIndex1);
+  Simulator::Schedule (Seconds (14), &Ipv4::SetUp,ipv41, ipv4ifIndex1);
+
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_count, 70, "Dynamic global routing did not deliver all packets");
+// Test that for node n6, the interface facing n5 receives packets at
+// times (1-2), (4-6), (8-10), (11-12), (14-16) and the interface
+// facing n1 receives packets at times (2-4), (6-8), (12-13)
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[1], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[1]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[2], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[2]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[3], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[3]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[4], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[4]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[5], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[5]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[6], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[6]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[7], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[7]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[8], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[8]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[9], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[9]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[10], 0, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[10]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[11], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[11]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[12], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[12]));
+  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[13], 5, "Dynamic global routing did not deliver all packets " << int(m_secondInterface[13]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[14], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[14]));
+  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[15], 5, "Dynamic global routing did not deliver all packets " << int(m_firstInterface[15]));
+  Simulator::Destroy ();
+}
+
+class Ipv4GlobalRoutingSlash32TestCase : public TestCase
+{
+public:
+  Ipv4GlobalRoutingSlash32TestCase ();
+  virtual ~Ipv4GlobalRoutingSlash32TestCase ();
+
+  Ptr<Packet> m_receivedPacket;
+  void ReceivePkt (Ptr<Socket> socket);
+  void DoSendData (Ptr<Socket> socket, std::string to);
+  void SendData (Ptr<Socket> socket, std::string to);
+
+private:
+  virtual void DoRun (void);
+};
+
+// Add some help text to this case to describe what it is intended to test
+Ipv4GlobalRoutingSlash32TestCase::Ipv4GlobalRoutingSlash32TestCase ()
+  : TestCase ("Slash 32 global routing example")
+{
+}
+
+Ipv4GlobalRoutingSlash32TestCase::~Ipv4GlobalRoutingSlash32TestCase ()
+{
+}
+
+void
+Ipv4GlobalRoutingSlash32TestCase::ReceivePkt (Ptr<Socket> socket)
+{
+  uint32_t availableData;
+  availableData = socket->GetRxAvailable ();
+  m_receivedPacket = socket->Recv (std::numeric_limits<uint32_t>::max (), 0);
+  NS_ASSERT (availableData == m_receivedPacket->GetSize ());
+  //cast availableData to void, to suppress 'availableData' set but not used
+  //compiler warning
+  (void) availableData;
+}
+
+void
+Ipv4GlobalRoutingSlash32TestCase::DoSendData (Ptr<Socket> socket, std::string to)
+{
+  Address realTo = InetSocketAddress (Ipv4Address (to.c_str ()), 1234);
+  NS_TEST_EXPECT_MSG_EQ (socket->SendTo (Create<Packet> (123), 0, realTo),
+                         123, "100");
+}
+
+void
+Ipv4GlobalRoutingSlash32TestCase::SendData (Ptr<Socket> socket, std::string to)
+{
+  m_receivedPacket = Create<Packet> ();
+  Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (60),
+                                  &Ipv4GlobalRoutingSlash32TestCase::DoSendData, this, socket, to);
+  Simulator::Stop (Seconds (66));
+  Simulator::Run ();
+}
+
+// Test program for this 3-router scenario, using global routing
+//
+// (a.a.a.a/32)A<--x.x.x.0/30-->B<--y.y.y.0/30-->C(c.c.c.c/32)
+//
+void
+Ipv4GlobalRoutingSlash32TestCase::DoRun (void)
+{
+  Ptr<Node> nA = CreateObject<Node> ();
+  Ptr<Node> nB = CreateObject<Node> ();
+  Ptr<Node> nC = CreateObject<Node> ();
+
+  NodeContainer c = NodeContainer (nA, nB, nC);
+
+  InternetStackHelper internet;
+  internet.Install (c);
+
+  // simple links
+  NodeContainer nAnB = NodeContainer (nA, nB);
+  NodeContainer nBnC = NodeContainer (nB, nC);
+
+  SimpleNetDeviceHelper devHelper;
+
+  Ptr<SimpleNetDevice> deviceA = CreateObject<SimpleNetDevice> ();
+  deviceA->SetAddress (Mac48Address::Allocate ());
+  nA->AddDevice (deviceA);
+
+  NetDeviceContainer dAdB = devHelper.Install (nAnB);
+  NetDeviceContainer dBdC = devHelper.Install (nBnC);
+
+  Ptr<SimpleNetDevice> deviceC = CreateObject<SimpleNetDevice> ();
+  deviceC->SetAddress (Mac48Address::Allocate ());
+  nC->AddDevice (deviceC);
+
+  // Later, we add IP addresses.
+  Ipv4AddressHelper ipv4;
+  ipv4.SetBase ("10.1.1.0", "255.255.255.252");
+  Ipv4InterfaceContainer iAiB = ipv4.Assign (dAdB);
+
+  ipv4.SetBase ("10.1.1.4", "255.255.255.252");
+  Ipv4InterfaceContainer iBiC = ipv4.Assign (dBdC);
+
+  Ptr<Ipv4> ipv4A = nA->GetObject<Ipv4> ();
+  Ptr<Ipv4> ipv4B = nB->GetObject<Ipv4> ();
+  Ptr<Ipv4> ipv4C = nC->GetObject<Ipv4> ();
+
+  int32_t ifIndexA = ipv4A->AddInterface (deviceA);
+  int32_t ifIndexC = ipv4C->AddInterface (deviceC);
+
+  Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("/32"));
+  ipv4A->AddAddress (ifIndexA, ifInAddrA);
+  ipv4A->SetMetric (ifIndexA, 1);
+  ipv4A->SetUp (ifIndexA);
+
+  Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("/32"));
+  ipv4C->AddAddress (ifIndexC, ifInAddrC);
+  ipv4C->SetMetric (ifIndexC, 1);
+  ipv4C->SetUp (ifIndexC);
+
+  // Create router nodes, initialize routing database and set up the routing
+  // tables in the nodes.
+  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+
+  // Create the UDP sockets
+  Ptr<SocketFactory> rxSocketFactory = nC->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
+  NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (InetSocketAddress (Ipv4Address ("192.168.1.1"), 1234)), 0, "trivial");
+  rxSocket->SetRecvCallback (MakeCallback (&Ipv4GlobalRoutingSlash32TestCase::ReceivePkt, this));
+
+  Ptr<SocketFactory> txSocketFactory = nA->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> txSocket = txSocketFactory->CreateSocket ();
+  txSocket->SetAllowBroadcast (true);
+
+  // ------ Now the tests ------------
+
+  // Unicast test
+  SendData (txSocket, "192.168.1.1");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "Static routing with /32 did not deliver all packets.");
+
+  Simulator::Destroy ();
+}
+
+
+class Ipv4GlobalRoutingTestSuite : public TestSuite
+{
+public:
+  Ipv4GlobalRoutingTestSuite ();
+};
+
+Ipv4GlobalRoutingTestSuite::Ipv4GlobalRoutingTestSuite ()
+  : TestSuite ("ipv4-global-routing", UNIT)
+{
+  AddTestCase (new Ipv4DynamicGlobalRoutingTestCase, TestCase::QUICK);
+  AddTestCase (new Ipv4GlobalRoutingSlash32TestCase, TestCase::QUICK);
+}
+
+// Do not forget to allocate an instance of this TestSuite
+static Ipv4GlobalRoutingTestSuite globalRoutingTestSuite;
diff -Naur ns-3.20/src/internet/test/ipv4-raw-test.cc ns-3.21/src/internet/test/ipv4-raw-test.cc
--- ns-3.20/src/internet/test/ipv4-raw-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/test/ipv4-raw-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -27,6 +27,7 @@
 #include "ns3/simulator.h"
 #include "ns3/simple-channel.h"
 #include "ns3/simple-net-device.h"
+#include "ns3/simple-net-device-helper.h"
 #include "ns3/drop-tail-queue.h"
 #include "ns3/socket.h"
 
@@ -40,6 +41,7 @@
 #include "ns3/icmpv4-l4-protocol.h"
 #include "ns3/ipv4-list-routing.h"
 #include "ns3/ipv4-static-routing.h"
+#include "ns3/internet-stack-helper.h"
 
 #include <string>
 #include <limits>
@@ -49,28 +51,6 @@
 
 using namespace ns3;
 
-static void
-AddInternetStack (Ptr<Node> node)
-{
-  //ARP
-  Ptr<ArpL3Protocol> arp = CreateObject<ArpL3Protocol> ();
-  node->AggregateObject (arp);
-  //IPV4
-  Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
-  //Routing for Ipv4
-  Ptr<Ipv4ListRouting> ipv4Routing = CreateObject<Ipv4ListRouting> ();
-  ipv4->SetRoutingProtocol (ipv4Routing);
-  Ptr<Ipv4StaticRouting> ipv4staticRouting = CreateObject<Ipv4StaticRouting> ();
-  ipv4Routing->AddRoutingProtocol (ipv4staticRouting, 0);
-  node->AggregateObject (ipv4);
-  //ICMP
-  Ptr<Icmpv4L4Protocol> icmp = CreateObject<Icmpv4L4Protocol> ();
-  node->AggregateObject (icmp);
-  // //Ipv4Raw
-  // Ptr<Ipv4UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
-  // node->AggregateObject(udp); 
-}
-
 
 class Ipv4RawSocketImplTest : public TestCase
 {
@@ -181,65 +161,49 @@
 
   // Receiver Node
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack (rxNode);
-  Ptr<SimpleNetDevice> rxDev1, rxDev2;
-  { // first interface
-    rxDev1 = CreateObject<SimpleNetDevice> ();
-    rxDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev1);
-    Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (rxDev1);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
-  { // second interface
-    rxDev2 = CreateObject<SimpleNetDevice> ();
-    rxDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev2);
-    Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (rxDev2);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.1"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
   // Sender Node
   Ptr<Node> txNode = CreateObject<Node> ();
-  AddInternetStack (txNode);
-  Ptr<SimpleNetDevice> txDev1;
-  {
-    txDev1 = CreateObject<SimpleNetDevice> ();
-    txDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev1);
-    Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (txDev1);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-  Ptr<SimpleNetDevice> txDev2;
-  {
-    txDev2 = CreateObject<SimpleNetDevice> ();
-    txDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev2);
-    Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (txDev2);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.2"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
-  // link the two nodes
-  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
-  rxDev1->SetChannel (channel1);
-  txDev1->SetChannel (channel1);
-
-  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
-  rxDev2->SetChannel (channel2);
-  txDev2->SetChannel (channel2);
 
+  NodeContainer nodes (rxNode, txNode);
+
+  SimpleNetDeviceHelper helperChannel1;
+  helperChannel1.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net1 = helperChannel1.Install (nodes);
+
+  SimpleNetDeviceHelper helperChannel2;
+  helperChannel2.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net2 = helperChannel2.Install (nodes);
+
+  InternetStackHelper internet;
+  internet.Install (nodes);
+
+  Ptr<Ipv4> ipv4;
+  uint32_t netdev_idx;
+  Ipv4InterfaceAddress ipv4Addr;
+
+  // Receiver Node
+  ipv4 = rxNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net1.Get (0));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  netdev_idx = ipv4->AddInterface (net2.Get (0));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.1"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  // Sender Node
+  ipv4 = txNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net1.Get (1));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  netdev_idx = ipv4->AddInterface (net2.Get (1));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.2"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
 
   // Create the IPv4 Raw sockets
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<Ipv4RawSocketFactory> ();
diff -Naur ns-3.20/src/internet/test/ipv4-static-routing-test-suite.cc ns-3.21/src/internet/test/ipv4-static-routing-test-suite.cc
--- ns-3.20/src/internet/test/ipv4-static-routing-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/ipv4-static-routing-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,195 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+// End-to-end tests for Ipv4 static routing
+
+#include "ns3/boolean.h"
+#include "ns3/config.h"
+#include "ns3/inet-socket-address.h"
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv4-address-helper.h"
+#include "ns3/ipv4-static-routing-helper.h"
+#include "ns3/node.h"
+#include "ns3/node-container.h"
+#include "ns3/packet.h"
+#include "ns3/pointer.h"
+#include "ns3/simulator.h"
+#include "ns3/string.h"
+#include "ns3/test.h"
+#include "ns3/uinteger.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/simple-channel.h"
+#include "ns3/simple-net-device-helper.h"
+#include "ns3/socket-factory.h"
+#include "ns3/udp-socket-factory.h"
+
+using namespace ns3;
+
+class Ipv4StaticRoutingSlash32TestCase : public TestCase
+{
+public:
+  Ipv4StaticRoutingSlash32TestCase ();
+  virtual ~Ipv4StaticRoutingSlash32TestCase ();
+
+  Ptr<Packet> m_receivedPacket;
+  void ReceivePkt (Ptr<Socket> socket);
+  void DoSendData (Ptr<Socket> socket, std::string to);
+  void SendData (Ptr<Socket> socket, std::string to);
+
+private:
+  virtual void DoRun (void);
+};
+
+// Add some help text to this case to describe what it is intended to test
+Ipv4StaticRoutingSlash32TestCase::Ipv4StaticRoutingSlash32TestCase ()
+  : TestCase ("Slash 32 static routing example")
+{
+}
+
+Ipv4StaticRoutingSlash32TestCase::~Ipv4StaticRoutingSlash32TestCase ()
+{
+}
+
+void
+Ipv4StaticRoutingSlash32TestCase::ReceivePkt (Ptr<Socket> socket)
+{
+  uint32_t availableData;
+  availableData = socket->GetRxAvailable ();
+  m_receivedPacket = socket->Recv (std::numeric_limits<uint32_t>::max (), 0);
+  NS_ASSERT (availableData == m_receivedPacket->GetSize ());
+  //cast availableData to void, to suppress 'availableData' set but not used
+  //compiler warning
+  (void) availableData;
+}
+
+void
+Ipv4StaticRoutingSlash32TestCase::DoSendData (Ptr<Socket> socket, std::string to)
+{
+  Address realTo = InetSocketAddress (Ipv4Address (to.c_str ()), 1234);
+  NS_TEST_EXPECT_MSG_EQ (socket->SendTo (Create<Packet> (123), 0, realTo),
+                         123, "100");
+}
+
+void
+Ipv4StaticRoutingSlash32TestCase::SendData (Ptr<Socket> socket, std::string to)
+{
+  m_receivedPacket = Create<Packet> ();
+  Simulator::ScheduleWithContext (socket->GetNode ()->GetId (), Seconds (60),
+                                  &Ipv4StaticRoutingSlash32TestCase::DoSendData, this, socket, to);
+  Simulator::Stop (Seconds (66));
+  Simulator::Run ();
+}
+
+// Test program for this 3-router scenario, using static routing
+//
+// (a.a.a.a/32)A<--x.x.x.0/30-->B<--y.y.y.0/30-->C(c.c.c.c/32)
+//
+void
+Ipv4StaticRoutingSlash32TestCase::DoRun (void)
+{
+  Ptr<Node> nA = CreateObject<Node> ();
+  Ptr<Node> nB = CreateObject<Node> ();
+  Ptr<Node> nC = CreateObject<Node> ();
+
+  NodeContainer c = NodeContainer (nA, nB, nC);
+
+  InternetStackHelper internet;
+  internet.Install (c);
+
+  // simple links
+  NodeContainer nAnB = NodeContainer (nA, nB);
+  NodeContainer nBnC = NodeContainer (nB, nC);
+
+  SimpleNetDeviceHelper devHelper;
+
+  Ptr<SimpleNetDevice> deviceA = CreateObject<SimpleNetDevice> ();
+  deviceA->SetAddress (Mac48Address::Allocate ());
+  nA->AddDevice (deviceA);
+
+  NetDeviceContainer dAdB = devHelper.Install (nAnB);
+  NetDeviceContainer dBdC = devHelper.Install (nBnC);
+
+  Ptr<SimpleNetDevice> deviceC = CreateObject<SimpleNetDevice> ();
+  deviceC->SetAddress (Mac48Address::Allocate ());
+  nC->AddDevice (deviceC);
+
+  // Later, we add IP addresses.
+  Ipv4AddressHelper ipv4;
+  ipv4.SetBase ("10.1.1.0", "255.255.255.252");
+  Ipv4InterfaceContainer iAiB = ipv4.Assign (dAdB);
+
+  ipv4.SetBase ("10.1.1.4", "255.255.255.252");
+  Ipv4InterfaceContainer iBiC = ipv4.Assign (dBdC);
+
+  Ptr<Ipv4> ipv4A = nA->GetObject<Ipv4> ();
+  Ptr<Ipv4> ipv4B = nB->GetObject<Ipv4> ();
+  Ptr<Ipv4> ipv4C = nC->GetObject<Ipv4> ();
+
+  int32_t ifIndexA = ipv4A->AddInterface (deviceA);
+  int32_t ifIndexC = ipv4C->AddInterface (deviceC);
+
+  Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("/32"));
+  ipv4A->AddAddress (ifIndexA, ifInAddrA);
+  ipv4A->SetMetric (ifIndexA, 1);
+  ipv4A->SetUp (ifIndexA);
+
+  Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("/32"));
+  ipv4C->AddAddress (ifIndexC, ifInAddrC);
+  ipv4C->SetMetric (ifIndexC, 1);
+  ipv4C->SetUp (ifIndexC);
+ 
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  // Create static routes from A to C
+  Ptr<Ipv4StaticRouting> staticRoutingA = ipv4RoutingHelper.GetStaticRouting (ipv4A);
+  // The ifIndex for this outbound route is 1; the first p2p link added
+  staticRoutingA->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.2"), 1);
+  Ptr<Ipv4StaticRouting> staticRoutingB = ipv4RoutingHelper.GetStaticRouting (ipv4B);
+  // The ifIndex we want on node B is 2; 0 corresponds to loopback, and 1 to the first point to point link
+  staticRoutingB->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.6"), 2);
+
+  // Create the UDP sockets
+  Ptr<SocketFactory> rxSocketFactory = nC->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
+  NS_TEST_EXPECT_MSG_EQ (rxSocket->Bind (InetSocketAddress (Ipv4Address ("192.168.1.1"), 1234)), 0, "trivial");
+  rxSocket->SetRecvCallback (MakeCallback (&Ipv4StaticRoutingSlash32TestCase::ReceivePkt, this));
+
+  Ptr<SocketFactory> txSocketFactory = nA->GetObject<UdpSocketFactory> ();
+  Ptr<Socket> txSocket = txSocketFactory->CreateSocket ();
+  txSocket->SetAllowBroadcast (true);
+
+  // ------ Now the tests ------------
+
+  // Unicast test
+  SendData (txSocket, "192.168.1.1");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "Static routing with /32 did not deliver all packets.");
+
+  Simulator::Destroy ();
+}
+
+class Ipv4StaticRoutingTestSuite : public TestSuite
+{
+public:
+  Ipv4StaticRoutingTestSuite ();
+};
+
+Ipv4StaticRoutingTestSuite::Ipv4StaticRoutingTestSuite ()
+  : TestSuite ("ipv4-static-routing", UNIT)
+{
+  AddTestCase (new Ipv4StaticRoutingSlash32TestCase, TestCase::QUICK);
+}
+
+// Do not forget to allocate an instance of this TestSuite
+static Ipv4StaticRoutingTestSuite ipv4StaticRoutingTestSuite;
diff -Naur ns-3.20/src/internet/test/ipv6-forwarding-test.cc ns-3.21/src/internet/test/ipv6-forwarding-test.cc
--- ns-3.20/src/internet/test/ipv6-forwarding-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/test/ipv6-forwarding-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -24,6 +24,7 @@
 #include "ns3/simulator.h"
 #include "ns3/simple-channel.h"
 #include "ns3/simple-net-device.h"
+#include "ns3/simple-net-device-helper.h"
 #include "ns3/drop-tail-queue.h"
 #include "ns3/socket.h"
 #include "ns3/boolean.h"
@@ -36,35 +37,15 @@
 #include "ns3/icmpv6-l4-protocol.h"
 #include "ns3/udp-l4-protocol.h"
 #include "ns3/ipv6-static-routing.h"
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv6-address-helper.h"
+#include "ns3/ipv6-routing-helper.h"
 
 #include <string>
 #include <limits>
 
 using namespace ns3;
 
-static void
-AddInternetStack6 (Ptr<Node> node)
-{
-  //IPV6
-  Ptr<Ipv6L3Protocol> ipv6 = CreateObject<Ipv6L3Protocol> ();
-  //Routing for Ipv6
-  Ptr<Ipv6StaticRouting> ipv6Routing = CreateObject<Ipv6StaticRouting> ();
-  ipv6->SetRoutingProtocol (ipv6Routing);
-  node->AggregateObject (ipv6);
-  node->AggregateObject (ipv6Routing);
-  //ICMP
-  Ptr<Icmpv6L4Protocol> icmp = CreateObject<Icmpv6L4Protocol> ();
-  node->AggregateObject (icmp);
-  //Ipv6 Extensions
-  ipv6->RegisterExtensions ();
-  ipv6->RegisterOptions ();
-  //UDP
-  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
-  node->AggregateObject (udp);
-}
-
-
-
 class Ipv6ForwardingTest : public TestCase
 {
   Ptr<Packet> m_receivedPacket;
@@ -79,7 +60,7 @@
 };
 
 Ipv6ForwardingTest::Ipv6ForwardingTest ()
-  : TestCase ("UDP6 socket implementation")
+  : TestCase ("IPv6 forwarding")
 {
 }
 
@@ -118,72 +99,65 @@
 
   // Receiver Node
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack6 (rxNode);
-  Ptr<SimpleNetDevice> rxDev;
-  { // first interface
-    rxDev = CreateObject<SimpleNetDevice> ();
-    rxDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev);
-    Ptr<Ipv6> ipv6 = rxNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (rxDev);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:1::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
   // Forwarding Node
   Ptr<Node> fwNode = CreateObject<Node> ();
-  AddInternetStack6 (fwNode);
-  Ptr<SimpleNetDevice> fwDev1, fwDev2;
-  { // first interface
-    fwDev1 = CreateObject<SimpleNetDevice> ();
-    fwDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    fwNode->AddDevice (fwDev1);
-    Ptr<Ipv6> ipv6 = fwNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (fwDev1);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:1::1"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
-  Ipv6Address nextHop;
-  { // second interface
-    fwDev2 = CreateObject<SimpleNetDevice> ();
-    fwDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    fwNode->AddDevice (fwDev2);
-    Ptr<Ipv6> ipv6 = fwNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (fwDev2);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:2::1"), Ipv6Prefix (64));
-    nextHop = ipv6->GetAddress(netdev_idx, 0).GetAddress();
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
   // Sender Node
   Ptr<Node> txNode = CreateObject<Node> ();
-  AddInternetStack6 (txNode);
-  Ptr<SimpleNetDevice> txDev;
-  {
-    txDev = CreateObject<SimpleNetDevice> ();
-    txDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev);
-    Ptr<Ipv6> ipv6 = txNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (txDev);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:2::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-    Ptr<Ipv6StaticRouting> ipv6StaticRouting = txNode->GetObject<Ipv6StaticRouting> ();
-    ipv6StaticRouting->SetDefaultRoute(nextHop, netdev_idx);
-  }
-
-  // link the two nodes
-  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
-  rxDev->SetChannel (channel1);
-  fwDev1->SetChannel (channel1);
-
-  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
-  fwDev2->SetChannel (channel2);
-  txDev->SetChannel (channel2);
+
+  NodeContainer net1nodes (rxNode, fwNode);
+  NodeContainer net2nodes (fwNode, txNode);
+  NodeContainer nodes (rxNode, fwNode, txNode);
+
+  SimpleNetDeviceHelper helperChannel1;
+  helperChannel1.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net1 = helperChannel1.Install (net1nodes);
+
+  SimpleNetDeviceHelper helperChannel2;
+  helperChannel2.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net2 = helperChannel2.Install (net2nodes);
+
+  InternetStackHelper internetv6;
+  internetv6.Install (nodes);
+
+  txNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+  fwNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+  rxNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+
+  Ipv6AddressHelper ipv6helper;
+  Ipv6InterfaceContainer iic1 = ipv6helper.AssignWithoutAddress (net1);
+  Ipv6InterfaceContainer iic2 = ipv6helper.AssignWithoutAddress (net2);
+
+  Ptr<NetDevice> device;
+  Ptr<Ipv6> ipv6;
+  int32_t ifIndex;
+  Ipv6InterfaceAddress ipv6Addr;
+
+  ipv6 = rxNode->GetObject<Ipv6> ();
+  device = net1.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:1::2"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  ipv6 = fwNode->GetObject<Ipv6> ();
+  device = net1.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:1::1"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  device = net2.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:2::1"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  ipv6 = txNode->GetObject<Ipv6> ();
+  device = net2.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:2::2"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  // Setup at least a route from the sender.
+  Ptr<Ipv6StaticRouting> ipv6StaticRouting = Ipv6RoutingHelper::GetRouting <Ipv6StaticRouting> (txNode->GetObject<Ipv6> ()->GetRoutingProtocol ());
+  ipv6StaticRouting->SetDefaultRoute (Ipv6Address ("2001:2::1"), ifIndex);
 
   // Create the UDP sockets
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
@@ -204,7 +178,7 @@
   m_receivedPacket->RemoveAllByteTags ();
   m_receivedPacket = 0;
 
-  Ptr<Ipv6> ipv6 = fwNode->GetObject<Ipv6> ();
+  ipv6 = fwNode->GetObject<Ipv6> ();
   ipv6->SetAttribute("IpForward", BooleanValue (true));
   SendData (txSocket, "2001:1::2");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 123, "IPv6 Forwarding on");
diff -Naur ns-3.20/src/internet/test/ipv6-raw-test.cc ns-3.21/src/internet/test/ipv6-raw-test.cc
--- ns-3.20/src/internet/test/ipv6-raw-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/test/ipv6-raw-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -27,19 +27,23 @@
 #include "ns3/simulator.h"
 #include "ns3/simple-channel.h"
 #include "ns3/simple-net-device.h"
+#include "ns3/simple-net-device-helper.h"
 #include "ns3/drop-tail-queue.h"
 #include "ns3/socket.h"
 
 #include "ns3/log.h"
 #include "ns3/node.h"
+#include "ns3/node-container.h"
 #include "ns3/inet6-socket-address.h"
 #include "ns3/boolean.h"
 #include "ns3/uinteger.h"
 
+#include "ns3/internet-stack-helper.h"
 #include "ns3/ipv6-l3-protocol.h"
 #include "ns3/icmpv6-l4-protocol.h"
 #include "ns3/ipv6-list-routing.h"
 #include "ns3/ipv6-static-routing.h"
+#include "ns3/ipv6-address-helper.h"
 
 #include <string>
 #include <limits>
@@ -49,25 +53,6 @@
 
 using namespace ns3;
 
-static void
-AddInternetStack (Ptr<Node> node)
-{
-  Ptr<Ipv6L3Protocol> ipv6 = CreateObject<Ipv6L3Protocol> ();
-  Ptr<Icmpv6L4Protocol> icmpv6 = CreateObject<Icmpv6L4Protocol> ();
-  node->AggregateObject (ipv6);
-  node->AggregateObject (icmpv6);
-  ipv6->Insert (icmpv6);
-  icmpv6->SetAttribute ("DAD", BooleanValue (false));
-
-  //Routing for Ipv6
-  Ptr<Ipv6ListRouting> ipv6Routing = CreateObject<Ipv6ListRouting> ();
-  ipv6->SetRoutingProtocol (ipv6Routing);
-  Ptr<Ipv6StaticRouting> ipv6staticRouting = CreateObject<Ipv6StaticRouting> ();  ipv6Routing->AddRoutingProtocol (ipv6staticRouting, 0);
-  /* register IPv6 extensions and options */
-  ipv6->RegisterExtensions ();  ipv6->RegisterOptions ();
-}
-
-
 class Ipv6RawSocketImplTest : public TestCase
 {
   Ptr<Packet> m_receivedPacket;
@@ -121,7 +106,7 @@
   m_receivedPacket2 = socket->RecvFrom (std::numeric_limits<uint32_t>::max (), 0, addr);
   NS_ASSERT (availableData == m_receivedPacket2->GetSize ());
   Inet6SocketAddress v6addr = Inet6SocketAddress::ConvertFrom (addr);
-  NS_TEST_EXPECT_MSG_EQ (v6addr.GetIpv6 (),Ipv6Address ("2001:0db8:0000:0000:0000:0000:0000:0002"), "recvfrom");
+  NS_TEST_EXPECT_MSG_EQ (v6addr.GetIpv6 (), Ipv6Address ("2001:db8::2"), "recvfrom");
 }
 
 void
@@ -149,65 +134,55 @@
 
   // Receiver Node
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack (rxNode);
-  Ptr<SimpleNetDevice> rxDev1, rxDev2;
-  { // first interface
-    rxDev1 = CreateObject<SimpleNetDevice> ();
-    rxDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev1);
-    Ptr<Ipv6> ipv6 = rxNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (rxDev1);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:0::1"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
-  { // second interface
-    rxDev2 = CreateObject<SimpleNetDevice> ();
-    rxDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev2);
-    Ptr<Ipv6> ipv6 = rxNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (rxDev2);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:1::1"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
   // Sender Node
   Ptr<Node> txNode = CreateObject<Node> ();
-  AddInternetStack (txNode);
-  Ptr<SimpleNetDevice> txDev1;
-  {
-    txDev1 = CreateObject<SimpleNetDevice> ();
-    txDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev1);
-    Ptr<Ipv6> ipv6 = txNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (txDev1);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:0::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-  Ptr<SimpleNetDevice> txDev2;
-  {
-    txDev2 = CreateObject<SimpleNetDevice> ();
-    txDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev2);
-    Ptr<Ipv6> ipv6 = txNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (txDev2);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:1::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
-  // link the two nodes
-  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
-  rxDev1->SetChannel (channel1);
-  txDev1->SetChannel (channel1);
-
-  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
-  rxDev2->SetChannel (channel2);
-  txDev2->SetChannel (channel2);
 
+  NodeContainer nodes (rxNode, txNode);
+
+  SimpleNetDeviceHelper helperChannel1;
+  helperChannel1.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net1 = helperChannel1.Install (nodes);
+
+  SimpleNetDeviceHelper helperChannel2;
+  helperChannel2.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net2 = helperChannel2.Install (nodes);
+
+  InternetStackHelper internetv6;
+  internetv6.Install (nodes);
+
+  txNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+  rxNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+
+  Ipv6AddressHelper ipv6helper;
+  Ipv6InterfaceContainer iic1 = ipv6helper.AssignWithoutAddress (net1);
+  Ipv6InterfaceContainer iic2 = ipv6helper.AssignWithoutAddress (net2);
+
+  Ptr<NetDevice> device;
+  Ptr<Ipv6> ipv6;
+  int32_t ifIndex;
+  Ipv6InterfaceAddress ipv6Addr;
+
+  ipv6 = rxNode->GetObject<Ipv6> ();
+  device = net1.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8::1"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  device = net2.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:1::3"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  ipv6 = txNode->GetObject<Ipv6> ();
+  device = net1.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8::2"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+
+  device = net2.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:db8:1::4"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
 
   // Create the Ipv6 Raw sockets
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<Ipv6RawSocketFactory> ();
@@ -219,7 +194,7 @@
   Ptr<Socket> rxSocket2 = rxSocketFactory->CreateSocket ();
   rxSocket2->SetRecvCallback (MakeCallback (&Ipv6RawSocketImplTest::ReceivePkt2, this));
   rxSocket2->SetAttribute ("Protocol", UintegerValue (Ipv6Header::IPV6_ICMPV6));
-  NS_TEST_EXPECT_MSG_EQ (rxSocket2->Bind (Inet6SocketAddress (Ipv6Address ("2001:db8:1::1"), 0)), 0, "trivial");
+  NS_TEST_EXPECT_MSG_EQ (rxSocket2->Bind (Inet6SocketAddress (Ipv6Address ("2001:db8:1::3"), 0)), 0, "trivial");
 
   Ptr<SocketFactory> txSocketFactory = txNode->GetObject<Ipv6RawSocketFactory> ();
   Ptr<Socket> txSocket = txSocketFactory->CreateSocket ();
@@ -228,15 +203,15 @@
   // ------ Now the tests ------------
 
   // Unicast test
-  SendData (txSocket, "2001:db8:0::1");
-  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 163, "recv: 2001:db8:0::1");
+  SendData (txSocket, "2001:db8::1");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 163, "recv: 2001:db8::1");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket2->GetSize (), 0, "second interface should not receive it");
 
   m_receivedPacket->RemoveAllByteTags ();
   m_receivedPacket2->RemoveAllByteTags ();
 
   // Simple Link-local multicast test
-  txSocket->Bind (Inet6SocketAddress (Ipv6Address ("2001:db8:0::2"), 0));
+  txSocket->Bind (Inet6SocketAddress (Ipv6Address ("2001:db8::2"), 0));
   SendData (txSocket, "ff02::1");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 163, "recv: ff02::1");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket2->GetSize (), 0, "second socket should not receive it (it is bound specifically to the second interface's address");
diff -Naur ns-3.20/src/internet/test/tcp-header-test.cc ns-3.21/src/internet/test/tcp-header-test.cc
--- ns-3.20/src/internet/test/tcp-header-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/tcp-header-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,359 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Natale Patriciello <natale.patriciello@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#define __STDC_LIMIT_MACROS
+#include <stdint.h>
+#include "ns3/test.h"
+#include "ns3/core-module.h"
+#include "ns3/tcp-header.h"
+#include "ns3/buffer.h"
+
+#include "../src/internet/model/tcp-option-rfc793.h"
+
+namespace ns3 {
+
+class TcpHeaderGetSetTestCase : public TestCase
+{
+public:
+  TcpHeaderGetSetTestCase (uint16_t sourcePort, uint16_t destinationPort,
+                           SequenceNumber32 sequenceNumber, SequenceNumber32 ackNumber,
+                           uint8_t flags, uint16_t m_windowSize, uint16_t m_urgentPointer,
+                           std::string name);
+protected:
+  uint16_t m_sourcePort;        //!< Source port
+  uint16_t m_destinationPort;   //!< Destination port
+  SequenceNumber32 m_sequenceNumber;  //!< Sequence number
+  SequenceNumber32 m_ackNumber;       //!< ACK number
+  uint8_t m_flags;              //!< Flags (really a uint6_t)
+  uint16_t m_windowSize;        //!< Window size
+  uint16_t m_urgentPointer;     //!< Urgent pointer
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  TcpHeader m_header;
+  Buffer m_buffer;
+};
+
+TcpHeaderGetSetTestCase::TcpHeaderGetSetTestCase (
+  uint16_t sourcePort, uint16_t destinationPort,
+  SequenceNumber32 sequenceNumber, SequenceNumber32 ackNumber,
+  uint8_t flags, uint16_t windowSize, uint16_t urgentPointer,
+  std::string name) : TestCase (name)
+{
+  m_sourcePort = sourcePort;
+  m_destinationPort = destinationPort;
+  m_sequenceNumber = sequenceNumber;
+  m_ackNumber = ackNumber;
+  m_flags = flags;
+  m_windowSize = windowSize;
+  m_urgentPointer = urgentPointer;
+
+  m_header.SetSourcePort (m_sourcePort);
+  m_header.SetDestinationPort (m_destinationPort);
+  m_header.SetSequenceNumber (m_sequenceNumber);
+  m_header.SetAckNumber (m_ackNumber);
+  m_header.SetFlags (m_flags);
+  m_header.SetWindowSize (m_windowSize);
+  m_header.SetUrgentPointer (m_urgentPointer);
+
+  NS_TEST_ASSERT_MSG_EQ (m_header.GetLength (), 5, "TcpHeader without option is"
+                         " not 5 word");
+
+  m_buffer.AddAtStart (m_header.GetSerializedSize ());
+  m_header.Serialize (m_buffer.Begin ());
+}
+
+void TcpHeaderGetSetTestCase::DoRun (void)
+{
+  NS_TEST_ASSERT_MSG_EQ (m_sourcePort, m_header.GetSourcePort (),
+                         "Different source port found");
+  NS_TEST_ASSERT_MSG_EQ (m_destinationPort, m_header.GetDestinationPort (),
+                         "Different destination port found");
+  NS_TEST_ASSERT_MSG_EQ (m_sequenceNumber, m_header.GetSequenceNumber (),
+                         "Different sequence number found");
+  NS_TEST_ASSERT_MSG_EQ (m_ackNumber, m_header.GetAckNumber (),
+                         "Different ack number found");
+  NS_TEST_ASSERT_MSG_EQ (m_flags, m_header.GetFlags (),
+                         "Different flags found");
+  NS_TEST_ASSERT_MSG_EQ (m_windowSize, m_header.GetWindowSize (),
+                         "Different window size found");
+  NS_TEST_ASSERT_MSG_EQ (m_urgentPointer, m_header.GetUrgentPointer (),
+                         "Different urgent pointer found");
+
+  NS_TEST_ASSERT_MSG_EQ (m_header.GetLength (), 5, "TcpHeader without option is"
+                         " not 5 word");
+
+  TcpHeader copyHeader;
+
+  copyHeader.Deserialize (m_buffer.Begin ());
+
+  NS_TEST_ASSERT_MSG_EQ (m_sourcePort, copyHeader.GetSourcePort (),
+                         "Different source port found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_destinationPort, copyHeader.GetDestinationPort (),
+                         "Different destination port found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_sequenceNumber, copyHeader.GetSequenceNumber (),
+                         "Different sequence number found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_ackNumber, copyHeader.GetAckNumber (),
+                         "Different ack number found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_flags, copyHeader.GetFlags (),
+                         "Different flags found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_windowSize, copyHeader.GetWindowSize (),
+                         "Different window size found in deserialized header");
+  NS_TEST_ASSERT_MSG_EQ (m_urgentPointer, copyHeader.GetUrgentPointer (),
+                         "Different urgent pointer found in deserialized header");
+}
+
+void TcpHeaderGetSetTestCase::DoTeardown (void)
+{
+
+}
+
+class TcpHeaderWithRFC793OptionTestCase : public TestCase
+{
+public:
+  TcpHeaderWithRFC793OptionTestCase (std::string name);
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  /**
+   * \brief Check an header with only one kind of option
+   *
+   */
+  void OneOptionAtTime ();
+  void CheckNoPadding ();
+  void CheckCorrectDeserialize ();
+};
+
+
+TcpHeaderWithRFC793OptionTestCase::TcpHeaderWithRFC793OptionTestCase (std::string name)
+  : TestCase (name)
+{
+
+}
+
+void
+TcpHeaderWithRFC793OptionTestCase::DoRun ()
+{
+  OneOptionAtTime ();
+  CheckNoPadding ();
+  CheckCorrectDeserialize ();
+}
+
+void
+TcpHeaderWithRFC793OptionTestCase::CheckCorrectDeserialize ()
+{
+  TcpHeader source, destination;
+  TcpOptionNOP temp;
+  Buffer buffer;
+  buffer.AddAtStart (40);
+
+  Buffer::Iterator i = buffer.Begin ();
+  source.AppendOption (&temp);
+
+  source.Serialize (i);
+
+  i.ReadU8 ();
+  i.WriteU8 (59);
+
+  i = buffer.Begin ();
+  destination.Deserialize (i);
+
+  NS_TEST_ASSERT_MSG_EQ (destination.HasOption (59), false, "Kind 59 registered");
+}
+
+void
+TcpHeaderWithRFC793OptionTestCase::CheckNoPadding ()
+{
+  {
+    TcpOptionNOP oNop1, oNop2, oNop3, oNop4;
+    TcpHeader header;
+    Buffer buffer;
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 5, "TcpHeader without option is"
+                           " not 5 word");
+    header.AppendOption (&oNop1);
+    header.AppendOption (&oNop2);
+    header.AppendOption (&oNop3);
+    header.AppendOption (&oNop4);
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 6, "Four byte added as option "
+                           "are not a word");
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (), 24, "Four byte added as option "
+                           "are not a word");
+
+    buffer.AddAtStart (header.GetSerializedSize ());
+    header.Serialize (buffer.Begin ());
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (),
+                           buffer.GetSize (), "Header not correctly serialized");
+
+    // Inserted 4 byte NOP, no padding should be present
+    Buffer::Iterator i = buffer.Begin ();
+    i.Next (20);
+
+    for (uint32_t j = 0; j < 4; ++j)
+      {
+        std::stringstream ss;
+        ss << j;
+        uint8_t value = i.ReadU8 ();
+        NS_TEST_ASSERT_MSG_EQ (value, TcpOption::NOP,
+                               "NOP not present at position " + ss.str ());
+      }
+  }
+}
+
+void
+TcpHeaderWithRFC793OptionTestCase::OneOptionAtTime ()
+{
+  {
+    TcpOptionEnd oEnd;
+    TcpHeader header;
+    Buffer buffer;
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 5, "TcpHeader without option is"
+                           " not 5 word");
+    header.AppendOption (&oEnd);
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 5, "Length has changed also for"
+                           " END option");
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (), 20, "Length has changed also for"
+                           " END option");
+
+
+    buffer.AddAtStart (header.GetSerializedSize ());
+    header.Serialize (buffer.Begin ());
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (),
+                           buffer.GetSize (), "Header not correctly serialized");
+  }
+
+  {
+    TcpOptionNOP oNop;
+    TcpHeader header;
+    Buffer buffer;
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 5, "TcpHeader without option is"
+                           " not 5 word");
+    header.AppendOption (&oNop);
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 6, "NOP option not handled correctly");
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (), 24, "Different length found for"
+                           "NOP option");
+
+    buffer.AddAtStart (header.GetSerializedSize ());
+    header.Serialize (buffer.Begin ());
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (),
+                           buffer.GetSize (), "Header not correctly serialized");
+
+    // Inserted only 1 byte NOP, and so implementation should pad; so
+    // the other 3 bytes should be END, PAD, PAD (n.b. PAD is same as END)
+    Buffer::Iterator i = buffer.Begin ();
+    i.Next (20);
+
+    uint8_t value = i.ReadU8 ();
+    NS_TEST_ASSERT_MSG_EQ (value, TcpOption::NOP, "NOP not present at byte 1");
+    value = i.ReadU8 ();
+    NS_TEST_ASSERT_MSG_EQ (value, TcpOption::END, "END not present at byte 2");
+    value = i.ReadU8 ();
+    NS_TEST_ASSERT_MSG_EQ (value, TcpOption::END, "pad not present at byte 3");
+    value = i.ReadU8 ();
+    NS_TEST_ASSERT_MSG_EQ (value, TcpOption::END, "pad not present at byte 4");
+  }
+
+  {
+    TcpOptionMSS oMSS;
+    oMSS.SetMSS (50);
+    TcpHeader header, dest;
+    Buffer buffer;
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 5, "TcpHeader without option is"
+                           " not 5 word");
+    header.AppendOption (&oMSS);
+    NS_TEST_ASSERT_MSG_EQ (header.GetLength (), 6, "MSS option not handled correctly");
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (), 24, "Different length found for"
+                           "MSS option");
+
+    buffer.AddAtStart (header.GetSerializedSize ());
+    header.Serialize (buffer.Begin ());
+
+    NS_TEST_ASSERT_MSG_EQ (header.GetSerializedSize (),
+                           buffer.GetSize (), "Header not correctly serialized");
+
+    dest.Deserialize (buffer.Begin ());
+    NS_TEST_ASSERT_MSG_EQ (header.HasOption (TcpOption::MSS),
+                           true, "MSS option not correctly serialized");
+  }
+}
+
+
+void
+TcpHeaderWithRFC793OptionTestCase::DoTeardown ()
+{
+  uint32_t foo;
+  foo = UINT32_MAX;
+  foo--;
+
+}
+
+#define GET_RANDOM_UINT32(RandomVariable) \
+  static_cast<uint32_t> (RandomVariable->GetInteger (0, UINT32_MAX))
+
+#define GET_RANDOM_UINT16(RandomVariable) \
+  static_cast<uint16_t> (RandomVariable->GetInteger (0, UINT16_MAX))
+
+#define GET_RANDOM_UINT8(RandomVariable) \
+  static_cast<uint8_t> (RandomVariable->GetInteger (0, UINT8_MAX))
+
+#define GET_RANDOM_UINT6(RandomVariable) \
+  static_cast<uint8_t> (RandomVariable->GetInteger (0, UINT8_MAX >> 2))
+
+static class TcpHeaderTestSuite : public TestSuite
+{
+public:
+  TcpHeaderTestSuite ()
+    : TestSuite ("tcp-header", UNIT)
+  {
+    Ptr<UniformRandomVariable> x = CreateObject<UniformRandomVariable> ();
+
+    for (uint32_t i = 0; i < 1000; ++i)
+      {
+        std::stringstream ss;
+        ss << i;
+
+        AddTestCase (new TcpHeaderGetSetTestCase (GET_RANDOM_UINT16 (x),
+                                                  GET_RANDOM_UINT16 (x),
+                                                  SequenceNumber32 (GET_RANDOM_UINT32 (x)),
+                                                  SequenceNumber32 (GET_RANDOM_UINT32 (x)),
+                                                  GET_RANDOM_UINT6 (x),
+                                                  GET_RANDOM_UINT16 (x),
+                                                  GET_RANDOM_UINT16 (x),
+                                                  "Case number " + ss.str ()),
+                     TestCase::QUICK);
+      }
+
+    AddTestCase (new TcpHeaderWithRFC793OptionTestCase ("Test for options in RFC 793"),
+                 TestCase::QUICK);
+  }
+
+} g_TcpHeaderTestSuite;
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/test/tcp-option-test.cc ns-3.21/src/internet/test/tcp-option-test.cc
--- ns-3.20/src/internet/test/tcp-option-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/tcp-option-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,189 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Natale Patriciello <natale.patriciello@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include "ns3/test.h"
+#include "ns3/core-module.h"
+#include "ns3/tcp-option.h"
+#include "../src/internet/model/tcp-option-winscale.h"
+#include "../src/internet/model/tcp-option-ts.h"
+
+#include <string.h>
+
+namespace ns3 {
+
+class TcpOptionWSTestCase : public TestCase
+{
+public:
+  TcpOptionWSTestCase (std::string name, uint8_t scale);
+
+  void TestSerialize ();
+  void TestDeserialize ();
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  uint8_t m_scale;
+  Buffer m_buffer;
+};
+
+
+TcpOptionWSTestCase::TcpOptionWSTestCase (std::string name, uint8_t scale)
+  : TestCase (name)
+{
+  m_scale = scale;
+}
+
+void
+TcpOptionWSTestCase::DoRun ()
+{
+  TestSerialize ();
+  TestDeserialize ();
+}
+
+void
+TcpOptionWSTestCase::TestSerialize ()
+{
+  TcpOptionWinScale opt;
+
+  opt.SetScale (m_scale);
+  NS_TEST_EXPECT_MSG_EQ (m_scale, opt.GetScale (), "Scale isn't saved correctly");
+
+  m_buffer.AddAtStart (opt.GetSerializedSize ());
+
+  opt.Serialize (m_buffer.Begin ());
+}
+
+void
+TcpOptionWSTestCase::TestDeserialize ()
+{
+  TcpOptionWinScale opt;
+
+  Buffer::Iterator start = m_buffer.Begin ();
+  uint8_t kind = start.PeekU8 ();
+
+  NS_TEST_EXPECT_MSG_EQ (kind, TcpOption::WINSCALE, "Different kind found");
+
+  opt.Deserialize (start);
+
+  NS_TEST_EXPECT_MSG_EQ (m_scale, opt.GetScale (), "Different scale found");
+}
+
+void
+TcpOptionWSTestCase::DoTeardown ()
+{
+}
+
+class TcpOptionTSTestCase : public TestCase
+{
+public:
+  TcpOptionTSTestCase (std::string name, uint32_t timestamp, uint32_t echo);
+
+  void TestSerialize ();
+  void TestDeserialize ();
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  uint32_t m_timestamp;
+  uint32_t m_echo;
+  Buffer m_buffer;
+};
+
+
+TcpOptionTSTestCase::TcpOptionTSTestCase (std::string name, uint32_t timestamp,
+                                          uint32_t echo)
+  : TestCase (name)
+{
+  m_timestamp = timestamp;
+  m_echo = echo;
+}
+
+void
+TcpOptionTSTestCase::DoRun ()
+{
+  TestSerialize ();
+  TestDeserialize ();
+}
+
+void
+TcpOptionTSTestCase::TestSerialize ()
+{
+  TcpOptionTS opt;
+
+  opt.SetTimestamp (m_timestamp);
+  opt.SetEcho (m_echo);
+
+  NS_TEST_EXPECT_MSG_EQ (m_timestamp, opt.GetTimestamp (), "TS isn't saved correctly");
+  NS_TEST_EXPECT_MSG_EQ (m_echo, opt.GetEcho (), "echo isn't saved correctly");
+
+  m_buffer.AddAtStart (opt.GetSerializedSize ());
+
+  opt.Serialize (m_buffer.Begin ());
+}
+
+void
+TcpOptionTSTestCase::TestDeserialize ()
+{
+  TcpOptionTS opt;
+
+  Buffer::Iterator start = m_buffer.Begin ();
+  uint8_t kind = start.PeekU8 ();
+
+  NS_TEST_EXPECT_MSG_EQ (kind, TcpOption::TS, "Different kind found");
+
+  opt.Deserialize (start);
+
+  NS_TEST_EXPECT_MSG_EQ (m_timestamp, opt.GetTimestamp (), "Different TS found");
+  NS_TEST_EXPECT_MSG_EQ (m_echo, opt.GetEcho (), "Different echo found");
+}
+
+void
+TcpOptionTSTestCase::DoTeardown ()
+{
+}
+
+static class TcpOptionTestSuite : public TestSuite
+{
+public:
+  TcpOptionTestSuite ()
+    : TestSuite ("tcp-option", UNIT)
+  {
+    for (uint8_t i = 0; i < 15; ++i)
+      {
+        AddTestCase (new TcpOptionWSTestCase ("Testing window "
+                                              "scale value", i), TestCase::QUICK);
+      }
+
+    Ptr<UniformRandomVariable> x = CreateObject<UniformRandomVariable> ();
+
+    for (uint32_t i = 0; i < 1000; ++i)
+      {
+        AddTestCase (new TcpOptionTSTestCase ("Testing serialization of random "
+                                              "values for timestamp",
+                                              x->GetInteger (),
+                                              x->GetInteger ()), TestCase::QUICK);
+      }
+
+  }
+
+} g_TcpOptionTestSuite;
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/test/tcp-timestamp-test.cc ns-3.21/src/internet/test/tcp-timestamp-test.cc
--- ns-3.20/src/internet/test/tcp-timestamp-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/tcp-timestamp-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,413 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Natale Patriciello <natale.patriciello@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include "ns3/test.h"
+#include "ns3/socket-factory.h"
+#include "ns3/tcp-socket-factory.h"
+#include "ns3/simulator.h"
+#include "ns3/simple-channel.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/drop-tail-queue.h"
+#include "ns3/config.h"
+#include "ns3/ipv4-static-routing.h"
+#include "ns3/ipv4-list-routing.h"
+#include "ns3/ipv6-static-routing.h"
+#include "ns3/ipv6-list-routing.h"
+#include "ns3/node.h"
+#include "ns3/inet-socket-address.h"
+#include "ns3/inet6-socket-address.h"
+#include "ns3/uinteger.h"
+#include "ns3/log.h"
+#include "ns3/tcp-socket-base.h"
+
+#include "ns3/ipv4-end-point.h"
+#include "ns3/arp-l3-protocol.h"
+#include "ns3/ipv4-l3-protocol.h"
+#include "ns3/ipv6-l3-protocol.h"
+#include "ns3/icmpv4-l4-protocol.h"
+#include "ns3/icmpv6-l4-protocol.h"
+#include "ns3/udp-l4-protocol.h"
+#include "ns3/tcp-l4-protocol.h"
+
+#include "../src/internet/model/tcp-option-ts.h"
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("TimestampTestSuite");
+
+class TimestampTestCase : public TestCase
+{
+public:
+  enum Configuration
+  {
+    DISABLED,
+    ENABLED_CLIENT,
+    ENABLED_SERVER,
+    ENABLED
+  };
+
+  TimestampTestCase (TimestampTestCase::Configuration conf);
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  void SetupDefaultSim (void);
+  //void SetupDefaultSim6 (void);
+
+  Ptr<Node> CreateInternetNode (void);
+  Ptr<Node> CreateInternetNode6 (void);
+  Ptr<SimpleNetDevice> AddSimpleNetDevice (Ptr<Node> node, const char* ipaddr, const char* netmask);
+  Ptr<SimpleNetDevice> AddSimpleNetDevice6 (Ptr<Node> node, Ipv6Address ipaddr, Ipv6Prefix prefix);
+  void ServerHandleConnectionCreated (Ptr<Socket> s, const Address & addr);
+  void ServerHandleRecv (Ptr<Socket> sock);
+  void ServerHandleSend (Ptr<Socket> sock, uint32_t sendB);
+  void SourceHandleSend (Ptr<Socket> sock, uint32_t available);
+  void SourceHandleRecv (Ptr<Socket> sock);
+
+  Configuration m_configuration;
+
+  uint32_t m_totalBytes;
+  uint32_t m_sourceWriteSize;
+  uint32_t m_sourceReadSize;
+  uint32_t m_serverWriteSize;
+  uint32_t m_serverReadSize;
+  uint32_t m_currentSourceTxBytes;
+  uint32_t m_currentSourceRxBytes;
+  uint32_t m_currentServerRxBytes;
+  uint32_t m_currentServerTxBytes;
+};
+
+TimestampTestCase::TimestampTestCase (TimestampTestCase::Configuration conf)
+  : TestCase ("Testing the TCP Timestamp option")
+{
+  m_configuration = conf;
+  m_totalBytes = 2000;
+  m_sourceWriteSize = 500;
+  m_sourceReadSize = 500;
+  m_serverWriteSize = 500;
+  m_serverReadSize = 500;
+}
+
+void
+TimestampTestCase::DoRun (void)
+{
+  m_currentSourceTxBytes = 0;
+  m_currentSourceRxBytes = 0;
+  m_currentServerRxBytes = 0;
+  m_currentServerTxBytes = 0;
+
+
+//  if (m_useIpv6 == true)
+//    {
+//      SetupDefaultSim6 ();
+//    }
+//  else
+//    {
+  SetupDefaultSim ();
+//    }
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_currentSourceTxBytes, m_totalBytes, "Source sent all bytes");
+  NS_TEST_EXPECT_MSG_EQ (m_currentServerRxBytes, m_totalBytes, "Server received all bytes");
+  NS_TEST_EXPECT_MSG_EQ (m_currentSourceRxBytes, m_totalBytes, "Source received all bytes");
+}
+
+void
+TimestampTestCase::DoTeardown (void)
+{
+  Simulator::Destroy ();
+}
+
+void
+TimestampTestCase::ServerHandleConnectionCreated (Ptr<Socket> s, const Address & addr)
+{
+  s->SetRecvCallback (MakeCallback (&TimestampTestCase::ServerHandleRecv, this));
+  s->SetSendCallback (MakeCallback (&TimestampTestCase::ServerHandleSend, this));
+}
+
+void
+TimestampTestCase::ServerHandleRecv (Ptr<Socket> sock)
+{
+  while (sock->GetRxAvailable () > 0)
+    {
+      uint32_t toRead = std::min (m_serverReadSize, sock->GetRxAvailable ());
+      Ptr<Packet> p = sock->Recv (toRead, 0);
+
+      if (p == 0 && sock->GetErrno () != Socket::ERROR_NOTERROR)
+        {
+          NS_FATAL_ERROR ("Server could not read stream at byte " << m_currentServerRxBytes);
+        }
+
+      m_currentServerRxBytes += p->GetSize ();
+
+      ServerHandleSend (sock, sock->GetTxAvailable ());
+    }
+}
+
+void
+TimestampTestCase::ServerHandleSend (Ptr<Socket> sock, uint32_t sendB)
+{
+  while (sock->GetTxAvailable () > 0 && m_currentServerTxBytes < m_currentServerRxBytes)
+    {
+      uint32_t left = m_currentServerRxBytes - m_currentServerTxBytes;
+      uint32_t toSend = std::min (left, sock->GetTxAvailable ());
+      toSend = std::min (toSend, m_serverWriteSize);
+
+      Ptr<Packet> p = Create<Packet> (toSend);
+
+      int sent = sock->Send (p);
+
+      NS_TEST_EXPECT_MSG_EQ ((sent != -1), true, "Server error during send ?");
+
+      m_currentServerTxBytes += sent;
+    }
+
+  if (m_currentServerTxBytes == m_totalBytes)
+    {
+      sock->Close ();
+    }
+}
+
+void
+TimestampTestCase::SourceHandleSend (Ptr<Socket> sock, uint32_t available)
+{
+  while (sock->GetTxAvailable () > 0 && m_currentSourceTxBytes < m_totalBytes)
+    {
+      uint32_t left = m_totalBytes - m_currentSourceTxBytes;
+      uint32_t toSend = std::min (left, sock->GetTxAvailable ());
+      toSend = std::min (toSend, m_sourceWriteSize);
+
+      Ptr<Packet> p = Create<Packet> (toSend);
+
+      int sent = sock->Send (p);
+      NS_TEST_EXPECT_MSG_EQ ((sent != -1), true, "Error during send ?");
+      m_currentSourceTxBytes += sent;
+    }
+}
+
+void
+TimestampTestCase::SourceHandleRecv (Ptr<Socket> sock)
+{
+  while (sock->GetRxAvailable () > 0 && m_currentSourceRxBytes < m_totalBytes)
+    {
+      uint32_t toRead = std::min (m_sourceReadSize, sock->GetRxAvailable ());
+      Ptr<Packet> p = sock->Recv (toRead, 0);
+
+      if (p == 0 && sock->GetErrno () != Socket::ERROR_NOTERROR)
+        {
+          NS_FATAL_ERROR ("Source could not read stream at byte " << m_currentSourceRxBytes);
+        }
+
+      m_currentSourceRxBytes += p->GetSize ();
+    }
+
+  if (m_currentSourceRxBytes == m_totalBytes)
+    {
+      sock->Close ();
+    }
+}
+
+Ptr<Node>
+TimestampTestCase::CreateInternetNode ()
+{
+  Ptr<Node> node = CreateObject<Node> ();
+  //ARP
+  Ptr<ArpL3Protocol> arp = CreateObject<ArpL3Protocol> ();
+  node->AggregateObject (arp);
+  //IPV4
+  Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
+  //Routing for Ipv4
+  Ptr<Ipv4ListRouting> ipv4Routing = CreateObject<Ipv4ListRouting> ();
+  ipv4->SetRoutingProtocol (ipv4Routing);
+  Ptr<Ipv4StaticRouting> ipv4staticRouting = CreateObject<Ipv4StaticRouting> ();
+  ipv4Routing->AddRoutingProtocol (ipv4staticRouting, 0);
+  node->AggregateObject (ipv4);
+  //ICMP
+  Ptr<Icmpv4L4Protocol> icmp = CreateObject<Icmpv4L4Protocol> ();
+  node->AggregateObject (icmp);
+  //UDP
+  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
+  node->AggregateObject (udp);
+  //TCP
+  Ptr<TcpL4Protocol> tcp = CreateObject<TcpL4Protocol> ();
+  node->AggregateObject (tcp);
+  return node;
+}
+
+Ptr<SimpleNetDevice>
+TimestampTestCase::AddSimpleNetDevice (Ptr<Node> node, const char* ipaddr, const char* netmask)
+{
+  Ptr<SimpleNetDevice> dev = CreateObject<SimpleNetDevice> ();
+  dev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
+  node->AddDevice (dev);
+  Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
+  uint32_t ndid = ipv4->AddInterface (dev);
+  Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address (ipaddr), Ipv4Mask (netmask));
+  ipv4->AddAddress (ndid, ipv4Addr);
+  ipv4->SetUp (ndid);
+  return dev;
+}
+
+void
+TimestampTestCase::SetupDefaultSim (void)
+{
+  const char* netmask = "255.255.255.0";
+  const char* ipaddr0 = "192.168.1.1";
+  const char* ipaddr1 = "192.168.1.2";
+  Ptr<Node> node0 = CreateInternetNode ();
+  Ptr<Node> node1 = CreateInternetNode ();
+  Ptr<SimpleNetDevice> dev0 = AddSimpleNetDevice (node0, ipaddr0, netmask);
+  Ptr<SimpleNetDevice> dev1 = AddSimpleNetDevice (node1, ipaddr1, netmask);
+
+  Ptr<SimpleChannel> channel = CreateObject<SimpleChannel> ();
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+
+  Ptr<SocketFactory> sockFactory0 = node0->GetObject<TcpSocketFactory> ();
+  Ptr<SocketFactory> sockFactory1 = node1->GetObject<TcpSocketFactory> ();
+
+  Ptr<TcpSocketBase> server = DynamicCast<TcpSocketBase> (sockFactory0->CreateSocket ());
+  Ptr<TcpSocketBase> source = DynamicCast<TcpSocketBase> (sockFactory1->CreateSocket ());
+
+  NS_ASSERT (server != 0);
+  NS_ASSERT (source != 0);
+
+  switch (m_configuration)
+    {
+    case DISABLED:
+      server->SetAttribute ("Timestamp", BooleanValue (false));
+      source->SetAttribute ("Timestamp", BooleanValue (false));
+      break;
+
+    case ENABLED_CLIENT:
+      server->SetAttribute ("Timestamp", BooleanValue (false));
+      source->SetAttribute ("Timestamp", BooleanValue (true));
+      break;
+
+    case ENABLED_SERVER:
+      server->SetAttribute ("Timestamp", BooleanValue (true));
+      source->SetAttribute ("Timestamp", BooleanValue (false));
+      break;
+
+    case ENABLED:
+      server->SetAttribute ("Timestamp", BooleanValue (true));
+      source->SetAttribute ("Timestamp", BooleanValue (true));
+      break;
+    }
+
+  uint16_t port = 50000;
+  InetSocketAddress serverlocaladdr (Ipv4Address::GetAny (), port);
+  InetSocketAddress serverremoteaddr (Ipv4Address (ipaddr0), port);
+
+  server->Bind (serverlocaladdr);
+  server->Listen ();
+  server->SetAcceptCallback (MakeNullCallback<bool, Ptr< Socket >, const Address &> (),
+                             MakeCallback (&TimestampTestCase::ServerHandleConnectionCreated,this));
+
+  source->SetRecvCallback (MakeCallback (&TimestampTestCase::SourceHandleRecv, this));
+  source->SetSendCallback (MakeCallback (&TimestampTestCase::SourceHandleSend, this));
+
+  source->Connect (serverremoteaddr);
+}
+
+class TimestampValueTestCase : public TestCase
+{
+public:
+  TimestampValueTestCase (double startTime, double timeToWait,
+                          std::string name);
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  void Check ();
+  void Init ();
+
+  double m_startTime;
+  double m_timeToWait;
+  double m_initValue;
+};
+
+TimestampValueTestCase::TimestampValueTestCase (double startTime,
+                                                double timeToWait,
+                                                std::string name)
+  : TestCase (name)
+{
+  m_startTime = startTime;
+  m_timeToWait = timeToWait;
+}
+
+void
+TimestampValueTestCase::DoRun ()
+{
+  Simulator::Schedule (Seconds (m_startTime + m_timeToWait),
+                       &TimestampValueTestCase::Check, this);
+  Simulator::Schedule (Seconds (m_startTime),
+                       &TimestampValueTestCase::Init, this);
+
+  Simulator::Run ();
+}
+
+void
+TimestampValueTestCase::DoTeardown ()
+{
+  Simulator::Destroy ();
+}
+
+void
+TimestampValueTestCase::Init ()
+{
+  m_initValue = TcpOptionTS::NowToTsValue ();
+}
+
+void
+TimestampValueTestCase::Check ()
+{
+  uint32_t lastValue = TcpOptionTS::NowToTsValue ();
+
+  NS_TEST_ASSERT_MSG_EQ_TOL (MilliSeconds (lastValue - m_initValue), Seconds (m_timeToWait),
+                             MilliSeconds (1), "Different TS values");
+
+  NS_TEST_ASSERT_MSG_EQ_TOL (TcpOptionTS::ElapsedTimeFromTsValue (m_initValue), Seconds (m_timeToWait),
+                             MilliSeconds (1), "Estimating Wrong RTT");
+}
+
+static class TcpTimestampTestSuite : public TestSuite
+{
+public:
+  TcpTimestampTestSuite ()
+    : TestSuite ("tcp-timestamp", UNIT)
+  {
+    AddTestCase (new TimestampTestCase (TimestampTestCase::DISABLED), TestCase::QUICK);
+    AddTestCase (new TimestampTestCase (TimestampTestCase::ENABLED_CLIENT), TestCase::QUICK);
+    AddTestCase (new TimestampTestCase (TimestampTestCase::ENABLED_SERVER), TestCase::QUICK);
+    AddTestCase (new TimestampTestCase (TimestampTestCase::ENABLED), TestCase::QUICK);
+    AddTestCase (new TimestampValueTestCase (0.0, 0.01, "Value Check"), TestCase::QUICK);
+    AddTestCase (new TimestampValueTestCase (3.0, 0.5,  "Value Check"), TestCase::QUICK);
+    AddTestCase (new TimestampValueTestCase (5.5, 1.0,  "Value Check"), TestCase::QUICK);
+    AddTestCase (new TimestampValueTestCase (6.0, 2.0,  "Value Check"), TestCase::QUICK);
+    AddTestCase (new TimestampValueTestCase (2.4, 0.7,  "Value Check"), TestCase::QUICK);
+
+  }
+
+} g_tcpTimestampTestSuite;
+
+} // namespace ns3
diff -Naur ns-3.20/src/internet/test/tcp-wscaling-test.cc ns-3.21/src/internet/test/tcp-wscaling-test.cc
--- ns-3.20/src/internet/test/tcp-wscaling-test.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/internet/test/tcp-wscaling-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,428 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2013 Natale Patriciello <natale.patriciello@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include "ns3/test.h"
+
+#define private public
+#define protected public
+
+#include "ns3/socket-factory.h"
+#include "ns3/tcp-socket-factory.h"
+#include "ns3/simulator.h"
+#include "ns3/simple-channel.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/drop-tail-queue.h"
+#include "ns3/config.h"
+#include "ns3/ipv4-static-routing.h"
+#include "ns3/ipv4-list-routing.h"
+#include "ns3/ipv6-static-routing.h"
+#include "ns3/ipv6-list-routing.h"
+#include "ns3/node.h"
+#include "ns3/inet-socket-address.h"
+#include "ns3/inet6-socket-address.h"
+#include "ns3/uinteger.h"
+#include "ns3/log.h"
+
+#include "ns3/ipv4-end-point.h"
+#include "ns3/arp-l3-protocol.h"
+#include "ns3/ipv4-l3-protocol.h"
+#include "ns3/ipv6-l3-protocol.h"
+#include "ns3/icmpv4-l4-protocol.h"
+#include "ns3/icmpv6-l4-protocol.h"
+#include "ns3/udp-l4-protocol.h"
+#include "ns3/tcp-l4-protocol.h"
+
+#include "ns3/tcp-socket-base.h"
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("WScalingTestSuite");
+
+class WScalingTestCase : public TestCase
+{
+public:
+  enum Configuration
+  {
+    DISABLED,
+    ENABLED_CLIENT,
+    ENABLED_SERVER,
+    ENABLED
+  };
+
+  WScalingTestCase (WScalingTestCase::Configuration conf,
+                    uint32_t maxServerBufferSize,
+                    uint32_t maxSourceBufferSize, std::string name);
+
+private:
+  virtual void DoRun (void);
+  virtual void DoTeardown (void);
+
+  void SetupDefaultSim (void);
+  //void SetupDefaultSim6 (void);
+
+  Ptr<Node> CreateInternetNode (void);
+  Ptr<Node> CreateInternetNode6 (void);
+
+  Ptr<SimpleNetDevice> AddSimpleNetDevice (Ptr<Node> node, const char* ipaddr, const char* netmask);
+  Ptr<SimpleNetDevice> AddSimpleNetDevice6 (Ptr<Node> node, Ipv6Address ipaddr, Ipv6Prefix prefix);
+
+  void ServerHandleConnectionCreated (Ptr<Socket> s, const Address & addr);
+  void SourceHandleConnectionCreated (Ptr<Socket> sock);
+  void ServerHandleRecv (Ptr<Socket> sock);
+  void ServerHandleSend (Ptr<Socket> sock, uint32_t sendB);
+  void SourceHandleSend (Ptr<Socket> sock, uint32_t available);
+  void SourceHandleRecv (Ptr<Socket> sock);
+
+  Configuration m_configuration;
+
+  uint32_t m_totalBytes;
+  uint32_t m_sourceWriteSize;
+  uint32_t m_sourceReadSize;
+  uint32_t m_serverWriteSize;
+  uint32_t m_serverReadSize;
+  uint32_t m_currentSourceTxBytes;
+  uint32_t m_currentSourceRxBytes;
+  uint32_t m_currentServerRxBytes;
+  uint32_t m_currentServerTxBytes;
+
+  uint32_t m_maxServerBufferSize;
+  uint32_t m_maxSourceBufferSize;
+
+  Ptr<TcpSocketBase> m_server;
+  Ptr<TcpSocketBase> m_source;
+};
+
+WScalingTestCase::WScalingTestCase (WScalingTestCase::Configuration conf,
+                                    uint32_t maxServerBufferSize,
+                                    uint32_t maxSourceBufferSize, std::string name)
+  : TestCase (name)
+{
+  m_configuration = conf;
+  m_totalBytes = 2000;
+  m_sourceWriteSize = 500;
+  m_sourceReadSize = 500;
+  m_serverWriteSize = 500;
+  m_serverReadSize = 500;
+
+  m_maxServerBufferSize = maxServerBufferSize;
+  m_maxSourceBufferSize = maxSourceBufferSize;
+}
+
+void
+WScalingTestCase::DoRun (void)
+{
+  m_currentSourceTxBytes = 0;
+  m_currentSourceRxBytes = 0;
+  m_currentServerRxBytes = 0;
+  m_currentServerTxBytes = 0;
+
+
+//  if (m_useIpv6 == true)
+//    {
+//      SetupDefaultSim6 ();
+//    }
+//  else
+//    {
+  SetupDefaultSim ();
+//    }
+
+  Simulator::Run ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_currentSourceTxBytes,
+                         m_totalBytes,
+                         "Source sent all bytes");
+
+  NS_TEST_EXPECT_MSG_EQ (m_currentServerRxBytes,
+                         m_totalBytes,
+                         "Server received all bytes");
+
+  NS_TEST_EXPECT_MSG_EQ (m_currentSourceRxBytes,
+                         m_totalBytes,
+                         "Source received all bytes");
+}
+
+void
+WScalingTestCase::DoTeardown (void)
+{
+  Simulator::Destroy ();
+}
+
+void
+WScalingTestCase::ServerHandleConnectionCreated (Ptr<Socket> s,
+                                                 const Address & addr)
+{
+  s->SetRecvCallback (MakeCallback (&WScalingTestCase::ServerHandleRecv, this));
+  s->SetSendCallback (MakeCallback (&WScalingTestCase::ServerHandleSend, this));
+
+  Ptr<TcpSocketBase> b = DynamicCast <TcpSocketBase> (s);
+
+  if (m_configuration == ENABLED)
+    {
+      NS_TEST_EXPECT_MSG_EQ ((b->m_rWnd.Get ()), m_maxSourceBufferSize,
+                             "Miscalculating source window");
+
+      NS_TEST_EXPECT_MSG_LT_OR_EQ ((b->m_rWnd.Get () >> b->m_rcvScaleFactor),
+                                   b->m_maxWinSize, "Violating maximum adv window");
+
+      NS_TEST_EXPECT_MSG_LT_OR_EQ (b->m_rcvScaleFactor, 14,
+                                   "Violating RFC for max value of the scale factor");
+    }
+  else
+    {
+      NS_TEST_EXPECT_MSG_EQ (b->m_rcvScaleFactor, 0, "Using Window scale while disabled");
+      NS_TEST_EXPECT_MSG_EQ (b->m_sndScaleFactor, 0, "Using Window scale while disabled");
+      NS_TEST_EXPECT_MSG_LT_OR_EQ (b->m_rWnd.Get (), m_source->m_maxWinSize, "Violating max adv window");
+    }
+}
+
+void
+WScalingTestCase::ServerHandleRecv (Ptr<Socket> sock)
+{
+  while (sock->GetRxAvailable () > 0)
+    {
+      uint32_t toRead = std::min (m_serverReadSize, sock->GetRxAvailable ());
+      Ptr<Packet> p = sock->Recv (toRead, 0);
+
+      if (p == 0 && sock->GetErrno () != Socket::ERROR_NOTERROR)
+        {
+          NS_FATAL_ERROR ("Server could not read stream at byte " << m_currentServerRxBytes);
+        }
+
+      m_currentServerRxBytes += p->GetSize ();
+
+      ServerHandleSend (sock, sock->GetTxAvailable ());
+    }
+}
+
+void
+WScalingTestCase::SourceHandleConnectionCreated (Ptr<Socket> sock)
+{
+  Ptr<TcpSocketBase> b = DynamicCast <TcpSocketBase> (sock);
+
+  if (m_configuration == ENABLED)
+    {
+      NS_TEST_EXPECT_MSG_EQ ((b->m_rWnd.Get ()), m_maxServerBufferSize,
+                             "Miscalculating server window " << (int)b->m_rcvScaleFactor);
+
+      NS_TEST_EXPECT_MSG_LT_OR_EQ ((b->m_rWnd.Get () >> b->m_rcvScaleFactor),
+                                   b->m_maxWinSize, "Violating maximum adv window");
+
+      NS_TEST_EXPECT_MSG_LT_OR_EQ (b->m_rcvScaleFactor, 14,
+                                   "Violating RFC for max value of the scale factor");
+    }
+  else
+    {
+      NS_TEST_EXPECT_MSG_EQ (b->m_rcvScaleFactor, 0, "Using Window scale while disabled");
+      NS_TEST_EXPECT_MSG_EQ (b->m_sndScaleFactor, 0, "Using Window scale while disabled");
+      NS_TEST_EXPECT_MSG_LT_OR_EQ (b->m_rWnd.Get (), m_server->m_maxWinSize, "Violating max adv window");
+    }
+}
+
+void
+WScalingTestCase::ServerHandleSend (Ptr<Socket> sock, uint32_t sendB)
+{
+  while (sock->GetTxAvailable () > 0 && m_currentServerTxBytes < m_currentServerRxBytes)
+    {
+      uint32_t left = m_currentServerRxBytes - m_currentServerTxBytes;
+      uint32_t toSend = std::min (left, sock->GetTxAvailable ());
+      toSend = std::min (toSend, m_serverWriteSize);
+
+      Ptr<Packet> p = Create<Packet> (toSend);
+
+      int sent = sock->Send (p);
+
+      NS_TEST_EXPECT_MSG_EQ ((sent != -1), true, "Server error during send ?");
+
+      m_currentServerTxBytes += sent;
+    }
+
+  if (m_currentServerTxBytes == m_totalBytes)
+    {
+      sock->Close ();
+    }
+}
+
+void
+WScalingTestCase::SourceHandleSend (Ptr<Socket> sock, uint32_t available)
+{
+  while (sock->GetTxAvailable () > 0 && m_currentSourceTxBytes < m_totalBytes)
+    {
+      uint32_t left = m_totalBytes - m_currentSourceTxBytes;
+      uint32_t toSend = std::min (left, sock->GetTxAvailable ());
+      toSend = std::min (toSend, m_sourceWriteSize);
+
+      Ptr<Packet> p = Create<Packet> (toSend);
+
+      int sent = sock->Send (p);
+      NS_TEST_EXPECT_MSG_EQ ((sent != -1), true, "Error during send ?");
+      m_currentSourceTxBytes += sent;
+    }
+}
+
+void
+WScalingTestCase::SourceHandleRecv (Ptr<Socket> sock)
+{
+  while (sock->GetRxAvailable () > 0 && m_currentSourceRxBytes < m_totalBytes)
+    {
+      uint32_t toRead = std::min (m_sourceReadSize, sock->GetRxAvailable ());
+      Ptr<Packet> p = sock->Recv (toRead, 0);
+
+      if (p == 0 && sock->GetErrno () != Socket::ERROR_NOTERROR)
+        {
+          NS_FATAL_ERROR ("Source could not read stream at byte " << m_currentSourceRxBytes);
+        }
+
+      m_currentSourceRxBytes += p->GetSize ();
+    }
+
+  if (m_currentSourceRxBytes == m_totalBytes)
+    {
+      sock->Close ();
+    }
+}
+
+Ptr<Node>
+WScalingTestCase::CreateInternetNode ()
+{
+  Ptr<Node> node = CreateObject<Node> ();
+  //ARP
+  Ptr<ArpL3Protocol> arp = CreateObject<ArpL3Protocol> ();
+  node->AggregateObject (arp);
+  //IPV4
+  Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
+  //Routing for Ipv4
+  Ptr<Ipv4ListRouting> ipv4Routing = CreateObject<Ipv4ListRouting> ();
+  ipv4->SetRoutingProtocol (ipv4Routing);
+  Ptr<Ipv4StaticRouting> ipv4staticRouting = CreateObject<Ipv4StaticRouting> ();
+  ipv4Routing->AddRoutingProtocol (ipv4staticRouting, 0);
+  node->AggregateObject (ipv4);
+  //ICMP
+  Ptr<Icmpv4L4Protocol> icmp = CreateObject<Icmpv4L4Protocol> ();
+  node->AggregateObject (icmp);
+  //UDP
+  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
+  node->AggregateObject (udp);
+  //TCP
+  Ptr<TcpL4Protocol> tcp = CreateObject<TcpL4Protocol> ();
+  node->AggregateObject (tcp);
+  return node;
+}
+
+Ptr<SimpleNetDevice>
+WScalingTestCase::AddSimpleNetDevice (Ptr<Node> node, const char* ipaddr, const char* netmask)
+{
+  Ptr<SimpleNetDevice> dev = CreateObject<SimpleNetDevice> ();
+  dev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
+  node->AddDevice (dev);
+  Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
+  uint32_t ndid = ipv4->AddInterface (dev);
+  Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address (ipaddr), Ipv4Mask (netmask));
+  ipv4->AddAddress (ndid, ipv4Addr);
+  ipv4->SetUp (ndid);
+  return dev;
+}
+
+void
+WScalingTestCase::SetupDefaultSim (void)
+{
+  const char* netmask = "255.255.255.0";
+  const char* ipaddr0 = "192.168.1.1";
+  const char* ipaddr1 = "192.168.1.2";
+  Ptr<Node> node0 = CreateInternetNode ();
+  Ptr<Node> node1 = CreateInternetNode ();
+  Ptr<SimpleNetDevice> dev0 = AddSimpleNetDevice (node0, ipaddr0, netmask);
+  Ptr<SimpleNetDevice> dev1 = AddSimpleNetDevice (node1, ipaddr1, netmask);
+
+  Ptr<SimpleChannel> channel = CreateObject<SimpleChannel> ();
+  dev0->SetChannel (channel);
+  dev1->SetChannel (channel);
+
+  Ptr<SocketFactory> sockFactory0 = node0->GetObject<TcpSocketFactory> ();
+  Ptr<SocketFactory> sockFactory1 = node1->GetObject<TcpSocketFactory> ();
+
+  m_server = DynamicCast<TcpSocketBase> (sockFactory0->CreateSocket ());
+  m_source = DynamicCast<TcpSocketBase> (sockFactory1->CreateSocket ());
+
+  NS_ASSERT (m_server != 0);
+  NS_ASSERT (m_source != 0);
+
+  switch (m_configuration)
+    {
+    case DISABLED:
+      m_server->SetAttribute ("WindowScaling", BooleanValue (false));
+      m_source->SetAttribute ("WindowScaling", BooleanValue (false));
+      break;
+
+    case ENABLED_CLIENT:
+      m_server->SetAttribute ("WindowScaling", BooleanValue (false));
+      m_source->SetAttribute ("WindowScaling", BooleanValue (true));
+      break;
+
+    case ENABLED_SERVER:
+      m_server->SetAttribute ("WindowScaling", BooleanValue (true));
+      m_source->SetAttribute ("WindowScaling", BooleanValue (false));
+      break;
+
+    case ENABLED:
+      m_server->SetAttribute ("WindowScaling", BooleanValue (true));
+      m_source->SetAttribute ("WindowScaling", BooleanValue (true));
+      break;
+    }
+
+  m_server->m_rxBuffer.SetMaxBufferSize (m_maxServerBufferSize);
+  m_source->m_rxBuffer.SetMaxBufferSize (m_maxSourceBufferSize);
+
+  uint16_t port = 50000;
+  InetSocketAddress serverlocaladdr (Ipv4Address::GetAny (), port);
+  InetSocketAddress serverremoteaddr (Ipv4Address (ipaddr0), port);
+
+  m_server->Bind (serverlocaladdr);
+  m_server->Listen ();
+  m_server->SetAcceptCallback (MakeNullCallback<bool, Ptr< Socket >, const Address &> (),
+                               MakeCallback (&WScalingTestCase::ServerHandleConnectionCreated,this));
+
+  m_source->SetRecvCallback (MakeCallback (&WScalingTestCase::SourceHandleRecv, this));
+  m_source->SetSendCallback (MakeCallback (&WScalingTestCase::SourceHandleSend, this));
+  m_source->SetConnectCallback (MakeCallback (&WScalingTestCase::SourceHandleConnectionCreated, this),
+                                MakeNullCallback<void, Ptr<Socket> > ());
+
+  m_source->Connect (serverremoteaddr);
+}
+
+static class TcpWScalingTestSuite : public TestSuite
+{
+public:
+  TcpWScalingTestSuite ()
+    : TestSuite ("tcp-wscaling", UNIT)
+  {
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED, 200000, 65535, "WS only server"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED, 65535, 65535, "Window scaling not used, all enabled"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::DISABLED, 65535, 65535, "WS disabled"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED_CLIENT, 65535, 65535, "WS enabled client"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED_SERVER, 65535, 65535, "WS disabled client"), TestCase::QUICK);
+
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED, 65535, 200000, "WS only client"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED, 131072, 65535, "WS only server"), TestCase::QUICK);
+    AddTestCase (new WScalingTestCase (WScalingTestCase::ENABLED, 65535, 131072, "WS only client"), TestCase::QUICK);
+  }
+
+} g_tcpWScalingTestSuite;
+
+} // namespace ns3
+
diff -Naur ns-3.20/src/internet/test/udp-test.cc ns-3.21/src/internet/test/udp-test.cc
--- ns-3.20/src/internet/test/udp-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/test/udp-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -28,13 +28,16 @@
 #include "ns3/simulator.h"
 #include "ns3/simple-channel.h"
 #include "ns3/simple-net-device.h"
+#include "ns3/simple-net-device-helper.h"
 #include "ns3/drop-tail-queue.h"
 #include "ns3/socket.h"
 
+#include "ns3/boolean.h"
 #include "ns3/log.h"
 #include "ns3/node.h"
 #include "ns3/inet-socket-address.h"
 #include "ns3/inet6-socket-address.h"
+#include "ns3/internet-stack-helper.h"
 
 #include "ns3/arp-l3-protocol.h"
 #include "ns3/ipv4-l3-protocol.h"
@@ -47,62 +50,13 @@
 #include "ns3/ipv4-static-routing.h"
 #include "ns3/ipv6-list-routing.h"
 #include "ns3/ipv6-static-routing.h"
+#include "ns3/ipv6-address-helper.h"
 
 #include <string>
 #include <limits>
 
 using namespace ns3;
 
-static void
-AddInternetStack (Ptr<Node> node)
-{
-  //ARP
-  Ptr<ArpL3Protocol> arp = CreateObject<ArpL3Protocol> ();
-  node->AggregateObject (arp);
-  //IPV4
-  Ptr<Ipv4L3Protocol> ipv4 = CreateObject<Ipv4L3Protocol> ();
-  //Routing for Ipv4
-  Ptr<Ipv4ListRouting> ipv4Routing = CreateObject<Ipv4ListRouting> ();
-  ipv4->SetRoutingProtocol (ipv4Routing);
-  Ptr<Ipv4StaticRouting> ipv4staticRouting = CreateObject<Ipv4StaticRouting> ();
-  ipv4Routing->AddRoutingProtocol (ipv4staticRouting, 0);
-  node->AggregateObject (ipv4);
-  //ICMP
-  Ptr<Icmpv4L4Protocol> icmp = CreateObject<Icmpv4L4Protocol> ();
-  node->AggregateObject (icmp);
-  //UDP
-  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
-  node->AggregateObject (udp);
-  //TCP
-  Ptr<TcpL4Protocol> tcp = CreateObject<TcpL4Protocol> ();
-  node->AggregateObject (tcp);
-}
-
-static void
-AddInternetStack6 (Ptr<Node> node)
-{
-  //IPV6
-  Ptr<Ipv6L3Protocol> ipv6 = CreateObject<Ipv6L3Protocol> ();
-  //Routing for Ipv6
-  Ptr<Ipv6ListRouting> ipv6Routing = CreateObject<Ipv6ListRouting> ();
-  ipv6->SetRoutingProtocol (ipv6Routing);
-  Ptr<Ipv6StaticRouting> ipv6staticRouting = CreateObject<Ipv6StaticRouting> ();
-  ipv6Routing->AddRoutingProtocol (ipv6staticRouting, 0);
-  node->AggregateObject (ipv6);
-  //ICMP
-  Ptr<Icmpv6L4Protocol> icmp = CreateObject<Icmpv6L4Protocol> ();
-  node->AggregateObject (icmp);
-  //Ipv6 Extensions
-  ipv6->RegisterExtensions ();
-  ipv6->RegisterOptions ();
-  //UDP
-  Ptr<UdpL4Protocol> udp = CreateObject<UdpL4Protocol> ();
-  node->AggregateObject (udp);
-  //TCP
-  Ptr<TcpL4Protocol> tcp = CreateObject<TcpL4Protocol> ();
-  node->AggregateObject (tcp);
-}
-
 
 class UdpSocketLoopbackTest : public TestCase
 {
@@ -131,7 +85,8 @@
 UdpSocketLoopbackTest::DoRun ()
 {
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack (rxNode);
+  InternetStackHelper internet;
+  internet.Install (rxNode);
 
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
   Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
@@ -175,7 +130,8 @@
 Udp6SocketLoopbackTest::DoRun ()
 {
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack6 (rxNode);
+  InternetStackHelper internet;
+  internet.Install (rxNode);
 
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
   Ptr<Socket> rxSocket = rxSocketFactory->CreateSocket ();
@@ -262,65 +218,49 @@
 
   // Receiver Node
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack (rxNode);
-  Ptr<SimpleNetDevice> rxDev1, rxDev2;
-  { // first interface
-    rxDev1 = CreateObject<SimpleNetDevice> ();
-    rxDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev1);
-    Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (rxDev1);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
-  { // second interface
-    rxDev2 = CreateObject<SimpleNetDevice> ();
-    rxDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev2);
-    Ptr<Ipv4> ipv4 = rxNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (rxDev2);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.1"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
   // Sender Node
   Ptr<Node> txNode = CreateObject<Node> ();
-  AddInternetStack (txNode);
-  Ptr<SimpleNetDevice> txDev1;
-  {
-    txDev1 = CreateObject<SimpleNetDevice> ();
-    txDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev1);
-    Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (txDev1);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-  Ptr<SimpleNetDevice> txDev2;
-  {
-    txDev2 = CreateObject<SimpleNetDevice> ();
-    txDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev2);
-    Ptr<Ipv4> ipv4 = txNode->GetObject<Ipv4> ();
-    uint32_t netdev_idx = ipv4->AddInterface (txDev2);
-    Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.2"), Ipv4Mask (0xffff0000U));
-    ipv4->AddAddress (netdev_idx, ipv4Addr);
-    ipv4->SetUp (netdev_idx);
-  }
-
-  // link the two nodes
-  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
-  rxDev1->SetChannel (channel1);
-  txDev1->SetChannel (channel1);
-
-  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
-  rxDev2->SetChannel (channel2);
-  txDev2->SetChannel (channel2);
 
+  NodeContainer nodes (rxNode, txNode);
+
+  SimpleNetDeviceHelper helperChannel1;
+  helperChannel1.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net1 = helperChannel1.Install (nodes);
+
+  SimpleNetDeviceHelper helperChannel2;
+  helperChannel2.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net2 = helperChannel2.Install (nodes);
+
+  InternetStackHelper internet;
+  internet.Install (nodes);
+
+  Ptr<Ipv4> ipv4;
+  uint32_t netdev_idx;
+  Ipv4InterfaceAddress ipv4Addr;
+
+  // Receiver Node
+  ipv4 = rxNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net1.Get (0));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.1"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  netdev_idx = ipv4->AddInterface (net2.Get (0));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.1"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  // Sender Node
+  ipv4 = txNode->GetObject<Ipv4> ();
+  netdev_idx = ipv4->AddInterface (net1.Get (1));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.0.2"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
+
+  netdev_idx = ipv4->AddInterface (net2.Get (1));
+  ipv4Addr = Ipv4InterfaceAddress (Ipv4Address ("10.0.1.2"), Ipv4Mask (0xffff0000U));
+  ipv4->AddAddress (netdev_idx, ipv4Addr);
+  ipv4->SetUp (netdev_idx);
 
   // Create the UDP sockets
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
@@ -374,7 +314,7 @@
 
   // Simple Link-local multicast test
 
-  txSocket->BindToNetDevice (txDev1);
+  txSocket->BindToNetDevice (net1.Get (1));
   SendData (txSocket, "224.0.0.9");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 0, "first socket should not receive it (it is bound specifically to the second interface's address");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket2->GetSize (), 123, "recv2: 224.0.0.9");
@@ -465,64 +405,59 @@
 
   // Receiver Node
   Ptr<Node> rxNode = CreateObject<Node> ();
-  AddInternetStack6 (rxNode);
-  Ptr<SimpleNetDevice> rxDev1, rxDev2;
-  { // first interface
-    rxDev1 = CreateObject<SimpleNetDevice> ();
-    rxDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev1);
-    Ptr<Ipv6> ipv6 = rxNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (rxDev1);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::1"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-  { // second interface
-    rxDev2 = CreateObject<SimpleNetDevice> ();
-    rxDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    rxNode->AddDevice (rxDev2);
-    Ptr<Ipv6> ipv6 = rxNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (rxDev2);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100:1::1"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
   // Sender Node
   Ptr<Node> txNode = CreateObject<Node> ();
-  AddInternetStack6 (txNode);
-  Ptr<SimpleNetDevice> txDev1;
-  {
-    txDev1 = CreateObject<SimpleNetDevice> ();
-    txDev1->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev1);
-    Ptr<Ipv6> ipv6 = txNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (txDev1);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-  Ptr<SimpleNetDevice> txDev2;
-  {
-    txDev2 = CreateObject<SimpleNetDevice> ();
-    txDev2->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
-    txNode->AddDevice (txDev2);
-    Ptr<Ipv6> ipv6 = txNode->GetObject<Ipv6> ();
-    uint32_t netdev_idx = ipv6->AddInterface (txDev2);
-    Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100:1::2"), Ipv6Prefix (64));
-    ipv6->AddAddress (netdev_idx, ipv6Addr);
-    ipv6->SetUp (netdev_idx);
-  }
-
-  // link the two nodes
-  Ptr<SimpleChannel> channel1 = CreateObject<SimpleChannel> ();
-  rxDev1->SetChannel (channel1);
-  txDev1->SetChannel (channel1);
-
-  Ptr<SimpleChannel> channel2 = CreateObject<SimpleChannel> ();
-  rxDev2->SetChannel (channel2);
-  txDev2->SetChannel (channel2);
 
+  NodeContainer nodes (rxNode, txNode);
+
+  SimpleNetDeviceHelper helperChannel1;
+  helperChannel1.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net1 = helperChannel1.Install (nodes);
+
+  SimpleNetDeviceHelper helperChannel2;
+  helperChannel2.SetNetDevicePointToPointMode (true);
+  NetDeviceContainer net2 = helperChannel2.Install (nodes);
+
+  InternetStackHelper internetv6;
+  internetv6.Install (nodes);
+
+  txNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+  rxNode->GetObject<Icmpv6L4Protocol> ()->SetAttribute ("DAD", BooleanValue (false));
+
+  Ipv6AddressHelper ipv6helper;
+  Ipv6InterfaceContainer iic1 = ipv6helper.AssignWithoutAddress (net1);
+  Ipv6InterfaceContainer iic2 = ipv6helper.AssignWithoutAddress (net2);
+
+  Ptr<NetDevice> device;
+  Ptr<Ipv6> ipv6;
+  int32_t ifIndex;
+  Ipv6InterfaceAddress ipv6Addr;
+
+  ipv6 = rxNode->GetObject<Ipv6> ();
+  device = net1.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::1"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+  ipv6->SetUp (ifIndex);
+
+  device = net2.Get (0);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100:1::1"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+  ipv6->SetUp (ifIndex);
+
+  ipv6 = txNode->GetObject<Ipv6> ();
+  device = net1.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::2"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+  ipv6->SetUp (ifIndex);
+
+  device = net2.Get (1);
+  ifIndex = ipv6->GetInterfaceForDevice (device);
+  ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100:1::2"), Ipv6Prefix (64));
+  ipv6->AddAddress (ifIndex, ipv6Addr);
+  ipv6->SetUp (ifIndex);
 
   // Create the UDP sockets
   Ptr<SocketFactory> rxSocketFactory = rxNode->GetObject<UdpSocketFactory> ();
@@ -557,7 +492,7 @@
   rxSocket2->SetRecvCallback (MakeCallback (&Udp6SocketImplTest::ReceivePkt2, this));
   NS_TEST_EXPECT_MSG_EQ (rxSocket2->Bind (Inet6SocketAddress (Ipv6Address ("::"), 1234)), 0, "trivial");
 
-  txSocket->BindToNetDevice (txDev1);
+  txSocket->BindToNetDevice (net1.Get (1));
   SendData (txSocket, "ff02::1");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket->GetSize (), 0, "first socket should not receive it (it is bound specifically to the second interface's address");
   NS_TEST_EXPECT_MSG_EQ (m_receivedPacket2->GetSize (), 123, "recv2: ff02::1");
diff -Naur ns-3.20/src/internet/wscript ns-3.21/src/internet/wscript
--- ns-3.20/src/internet/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/internet/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -14,11 +14,18 @@
                    help=('Use Network Simulation Cradle, given by the indicated path,'
                          ' to allow the use of real-world network stacks'),
                    default='', dest='with_nsc')
-
+    opt.add_option('--disable-nsc',
+                   help=('Disable Network Simulation Cradle support'),
+                   dest='disable_nsc', default=False, action="store_true")
 
 def configure(conf):
     conf.env['ENABLE_NSC'] = False
 
+    if Options.options.disable_nsc:
+        conf.report_optional_feature("nsc", "Network Simulation Cradle", False,
+                                     "disabled by user request")
+        return
+
     # checks for flex and bison, which is needed to build NSCs globaliser
     # TODO: how to move these checks into the allinone scripts?
     #def check_nsc_buildutils():
@@ -145,6 +152,10 @@
         'model/tcp-westwood.cc',
         'model/tcp-rx-buffer.cc',
         'model/tcp-tx-buffer.cc',
+        'model/tcp-option.cc',
+        'model/tcp-option-rfc793.cc',
+        'model/tcp-option-winscale.cc',
+        'model/tcp-option-ts.cc',
         'model/ipv4-packet-info-tag.cc',
         'model/ipv6-packet-info-tag.cc',
         'model/ipv4-interface-address.cc',
@@ -178,6 +189,7 @@
         'model/global-route-manager.cc',
         'model/global-route-manager-impl.cc',
         'model/candidate-queue.cc',
+        'model/codel-queue.cc',
         'model/ipv4-global-routing.cc',
         'helper/ipv4-global-routing-helper.cc',
         'helper/internet-stack-helper.cc',
@@ -210,12 +222,18 @@
         'test/ipv4-forwarding-test.cc',
         'test/error-channel.cc',
         'test/ipv4-test.cc',
+        'test/ipv4-static-routing-test-suite.cc',
+        'test/ipv4-global-routing-test-suite.cc',
         'test/ipv6-extension-header-test-suite.cc',
         'test/ipv6-list-routing-test-suite.cc',
         'test/ipv6-packet-info-tag-test-suite.cc',
         'test/ipv6-test.cc',
         'test/ipv6-raw-test.cc',
         'test/tcp-test.cc',
+        'test/tcp-timestamp-test.cc',
+        'test/tcp-wscaling-test.cc',
+        'test/tcp-option-test.cc',
+        'test/tcp-header-test.cc',
         'test/udp-test.cc',
         'test/ipv6-address-generator-test-suite.cc',
         'test/ipv6-dual-stack-test-suite.cc',
@@ -224,12 +242,14 @@
         'test/ipv6-ripng-test.cc',
      	'test/ipv6-address-helper-test-suite.cc',
         'test/rtt-test.cc',
+        'test/codel-queue-test-suite.cc',
         ]
     headers = bld(features='ns3header')
     headers.module = 'internet'
     headers.source = [
         'model/udp-header.h',
         'model/tcp-header.h',
+        'model/tcp-option.h',
         'model/icmpv4.h',
         'model/icmpv6-header.h',
         # used by routing
@@ -286,6 +306,7 @@
         'model/global-route-manager.h',
         'model/global-route-manager-impl.h',
         'model/candidate-queue.h',
+        'model/codel-queue.h',
         'model/ipv4-global-routing.h',
         'helper/ipv4-global-routing-helper.h',
         'helper/internet-stack-helper.h',
diff -Naur ns-3.20/src/lr-wpan/bindings/modulegen__gcc_ILP32.py ns-3.21/src/lr-wpan/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/lr-wpan/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -2945,10 +2945,10 @@
     cls.add_method('EnableLogComponents', 
                    'void', 
                    [])
-    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration arg0) [member function]
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration e) [member function]
     cls.add_method('LrWpanPhyEnumerationPrinter', 
                    'std::string', 
-                   [param('ns3::LrWpanPhyEnumeration', 'arg0')], 
+                   [param('ns3::LrWpanPhyEnumeration', 'e')], 
                    is_static=True)
     ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanMacStatePrinter(ns3::LrWpanMacState e) [member function]
     cls.add_method('LrWpanMacStatePrinter', 
@@ -3096,16 +3096,16 @@
                    'uint64_t', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): std::string ns3::LrWpanMacHeader::GetName() const [member function]
-    cls.add_method('GetName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecControl() const [member function]
     cls.add_method('GetSecControl', 
                    'uint8_t', 
                    [], 
                    is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecCtrlReserved() const [member function]
+    cls.add_method('GetSecCtrlReserved', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecLevel() const [member function]
     cls.add_method('GetSecLevel', 
                    'uint8_t', 
@@ -3151,11 +3151,6 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetsecctrlReserved() const [member function]
-    cls.add_method('GetsecctrlReserved', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAckReq() const [member function]
     cls.add_method('IsAckReq', 
                    'bool', 
@@ -3186,31 +3181,11 @@
                    'bool', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoAckReq() const [member function]
-    cls.add_method('IsNoAckReq', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoFrmPend() const [member function]
-    cls.add_method('IsNoFrmPend', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoPanIdComp() const [member function]
-    cls.add_method('IsNoPanIdComp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsPanIdComp() const [member function]
     cls.add_method('IsPanIdComp', 
                    'bool', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecDisable() const [member function]
-    cls.add_method('IsSecDisable', 
-                   'bool', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecEnable() const [member function]
     cls.add_method('IsSecEnable', 
                    'bool', 
@@ -3221,11 +3196,6 @@
                    'void', 
                    [param('std::ostream &', 'os')], 
                    is_const=True, is_virtual=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::PrintFrameControl(std::ostream & os) const [member function]
-    cls.add_method('PrintFrameControl', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
     cls.add_method('Serialize', 
                    'void', 
@@ -3303,6 +3273,10 @@
     cls.add_method('SetSecControl', 
                    'void', 
                    [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecCtrlReserved(uint8_t res) [member function]
+    cls.add_method('SetSecCtrlReserved', 
+                   'void', 
+                   [param('uint8_t', 'res')])
     ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecDisable() [member function]
     cls.add_method('SetSecDisable', 
                    'void', 
@@ -3335,10 +3309,6 @@
     cls.add_method('SetType', 
                    'void', 
                    [param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType')])
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetsecctrlReserved(uint8_t res) [member function]
-    cls.add_method('SetsecctrlReserved', 
-                   'void', 
-                   [param('uint8_t', 'res')])
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -3729,10 +3699,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3743,25 +3713,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3878,20 +3848,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/lr-wpan/bindings/modulegen__gcc_LP64.py ns-3.21/src/lr-wpan/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/lr-wpan/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -2945,10 +2945,10 @@
     cls.add_method('EnableLogComponents', 
                    'void', 
                    [])
-    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration arg0) [member function]
+    ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanPhyEnumerationPrinter(ns3::LrWpanPhyEnumeration e) [member function]
     cls.add_method('LrWpanPhyEnumerationPrinter', 
                    'std::string', 
-                   [param('ns3::LrWpanPhyEnumeration', 'arg0')], 
+                   [param('ns3::LrWpanPhyEnumeration', 'e')], 
                    is_static=True)
     ## lr-wpan-helper.h (module 'lr-wpan'): static std::string ns3::LrWpanHelper::LrWpanMacStatePrinter(ns3::LrWpanMacState e) [member function]
     cls.add_method('LrWpanMacStatePrinter', 
@@ -3096,16 +3096,16 @@
                    'uint64_t', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): std::string ns3::LrWpanMacHeader::GetName() const [member function]
-    cls.add_method('GetName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecControl() const [member function]
     cls.add_method('GetSecControl', 
                    'uint8_t', 
                    [], 
                    is_const=True)
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecCtrlReserved() const [member function]
+    cls.add_method('GetSecCtrlReserved', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetSecLevel() const [member function]
     cls.add_method('GetSecLevel', 
                    'uint8_t', 
@@ -3151,11 +3151,6 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): uint8_t ns3::LrWpanMacHeader::GetsecctrlReserved() const [member function]
-    cls.add_method('GetsecctrlReserved', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsAckReq() const [member function]
     cls.add_method('IsAckReq', 
                    'bool', 
@@ -3186,31 +3181,11 @@
                    'bool', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoAckReq() const [member function]
-    cls.add_method('IsNoAckReq', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoFrmPend() const [member function]
-    cls.add_method('IsNoFrmPend', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsNoPanIdComp() const [member function]
-    cls.add_method('IsNoPanIdComp', 
-                   'bool', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsPanIdComp() const [member function]
     cls.add_method('IsPanIdComp', 
                    'bool', 
                    [], 
                    is_const=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecDisable() const [member function]
-    cls.add_method('IsSecDisable', 
-                   'bool', 
-                   [], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): bool ns3::LrWpanMacHeader::IsSecEnable() const [member function]
     cls.add_method('IsSecEnable', 
                    'bool', 
@@ -3221,11 +3196,6 @@
                    'void', 
                    [param('std::ostream &', 'os')], 
                    is_const=True, is_virtual=True)
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::PrintFrameControl(std::ostream & os) const [member function]
-    cls.add_method('PrintFrameControl', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
     ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
     cls.add_method('Serialize', 
                    'void', 
@@ -3303,6 +3273,10 @@
     cls.add_method('SetSecControl', 
                    'void', 
                    [param('uint8_t', 'secLevel')])
+    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecCtrlReserved(uint8_t res) [member function]
+    cls.add_method('SetSecCtrlReserved', 
+                   'void', 
+                   [param('uint8_t', 'res')])
     ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetSecDisable() [member function]
     cls.add_method('SetSecDisable', 
                    'void', 
@@ -3335,10 +3309,6 @@
     cls.add_method('SetType', 
                    'void', 
                    [param('ns3::LrWpanMacHeader::LrWpanMacType', 'wpanMacType')])
-    ## lr-wpan-mac-header.h (module 'lr-wpan'): void ns3::LrWpanMacHeader::SetsecctrlReserved(uint8_t res) [member function]
-    cls.add_method('SetsecctrlReserved', 
-                   'void', 
-                   [param('uint8_t', 'res')])
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -3729,10 +3699,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3743,25 +3713,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3878,20 +3848,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/lr-wpan/helper/lr-wpan-helper.cc ns-3.21/src/lr-wpan/helper/lr-wpan-helper.cc
--- ns-3.20/src/lr-wpan/helper/lr-wpan-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/helper/lr-wpan-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -32,6 +32,12 @@
 
 namespace ns3 {
 
+/**
+ * @brief Output an ascii line representing the Transmit event (with context)
+ * @param stream the output stream
+ * @param context the context
+ * @param p the packet
+ */
 static void
 AsciiLrWpanMacTransmitSinkWithContext (
   Ptr<OutputStreamWrapper> stream,
@@ -41,6 +47,11 @@
   *stream->GetStream () << "t " << Simulator::Now ().GetSeconds () << " " << context << " " << *p << std::endl;
 }
 
+/**
+ * @brief Output an ascii line representing the Transmit event (without context)
+ * @param stream the output stream
+ * @param p the packet
+ */
 static void
 AsciiLrWpanMacTransmitSinkWithoutContext (
   Ptr<OutputStreamWrapper> stream,
@@ -198,6 +209,11 @@
   return;
 }
 
+/**
+ * @brief Write a packet in a PCAP file
+ * @param file the output file
+ * @param packet the packet
+ */
 static void
 PcapSniffLrWpan (Ptr<PcapFileWrapper> file, Ptr<const Packet> packet)
 {
diff -Naur ns-3.20/src/lr-wpan/helper/lr-wpan-helper.h ns-3.21/src/lr-wpan/helper/lr-wpan-helper.h
--- ns-3.20/src/lr-wpan/helper/lr-wpan-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/helper/lr-wpan-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -60,7 +60,9 @@
   void AddMobility (Ptr<LrWpanPhy> phy, Ptr<MobilityModel> m);
 
   /**
+   * \brief Install a LrWpanNetDevice and the associated structures (e.g., channel) in the nodes.
    * \param c a set of nodes
+   * \returns A container holding the added net devices.
    */
   NetDeviceContainer Install (NodeContainer c);
 
@@ -77,7 +79,18 @@
    */
   void EnableLogComponents (void);
 
-  static std::string LrWpanPhyEnumerationPrinter (LrWpanPhyEnumeration);
+  /**
+   * \brief Transform the LrWpanPhyEnumeration enumeration into a printable string.
+   * \param e the LrWpanPhyEnumeration
+   * \return a string
+   */
+  static std::string LrWpanPhyEnumerationPrinter (LrWpanPhyEnumeration e);
+
+  /**
+   * \brief Transform the LrWpanMacState enumeration into a printable string.
+   * \param e the LrWpanMacState
+   * \return a string
+   */
   static std::string LrWpanMacStatePrinter (LrWpanMacState e);
 
   /**
@@ -95,7 +108,14 @@
 
 private:
   // Disable implicit constructors
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   */
   LrWpanHelper (LrWpanHelper const &);
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   * \returns
+   */
   LrWpanHelper& operator= (LrWpanHelper const &);
   /**
    * \internal
@@ -123,6 +143,7 @@
    * \param stream The output stream object to use when logging ascii traces.
    * \param prefix Filename prefix to use for ascii trace files.
    * \param nd Net device for which you want to enable tracing.
+   * \param explicitFilename Treat the prefix as an explicit filename if true
    */
   virtual void EnableAsciiInternal (Ptr<OutputStreamWrapper> stream,
                                     std::string prefix,
@@ -130,7 +151,7 @@
                                     bool explicitFilename);
 
 private:
-  Ptr<SingleModelSpectrumChannel> m_channel;
+  Ptr<SingleModelSpectrumChannel> m_channel; //!< channel to be used for the devices
 
 };
 
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.h ns-3.21/src/lr-wpan/model/lr-wpan-csmaca.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-csmaca.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-csmaca.h	2014-09-17 20:03:14.000000000 -0700
@@ -240,7 +240,14 @@
 
 private:
   // Disable implicit copy constructors
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   */
   LrWpanCsmaCa (LrWpanCsmaCa const &);
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   * \returns
+   */
   LrWpanCsmaCa& operator= (LrWpanCsmaCa const &);
  
   virtual void DoDispose (void);
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.h ns-3.21/src/lr-wpan/model/lr-wpan-interference-helper.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-interference-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-interference-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -87,7 +87,14 @@
   Ptr<const SpectrumModel> GetSpectrumModel (void) const;
 private:
   // Disable implicit copy constructors
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   */
   LrWpanInterferenceHelper (LrWpanInterferenceHelper const &);
+  /**
+   * \brief Copy constructor - defined and not implemented.
+   * \returns
+   */
   LrWpanInterferenceHelper& operator= (LrWpanInterferenceHelper const &);
   /**
    * The helpers SpectrumModel.
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-mac.h ns-3.21/src/lr-wpan/model/lr-wpan-mac.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-mac.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-mac.h	2014-09-17 20:03:14.000000000 -0700
@@ -44,23 +44,30 @@
  *
  * This section documents the API of the IEEE 802.15.4-related models.  For a generic functional description, please refer to the ns-3 manual.
  */
+
+/**
+ * Tx options
+ */
 typedef enum
 {
-  TX_OPTION_NONE = 0,
-  TX_OPTION_ACK = 1,
-  TX_OPTION_GTS = 2,
-  TX_OPTION_INDIRECT = 4
+  TX_OPTION_NONE = 0,    //!< TX_OPTION_NONE
+  TX_OPTION_ACK = 1,     //!< TX_OPTION_ACK
+  TX_OPTION_GTS = 2,     //!< TX_OPTION_GTS
+  TX_OPTION_INDIRECT = 4 //!< TX_OPTION_INDIRECT
 } LrWpanTxOption;
 
+/**
+ * MAC states
+ */
 typedef enum
 {
-  MAC_IDLE,
-  MAC_CSMA,
-  MAC_SENDING,
-  MAC_ACK_PENDING,
-  CHANNEL_ACCESS_FAILURE,
-  CHANNEL_IDLE,
-  SET_PHY_TX_ON
+  MAC_IDLE,              //!< MAC_IDLE
+  MAC_CSMA,              //!< MAC_CSMA
+  MAC_SENDING,           //!< MAC_SENDING
+  MAC_ACK_PENDING,       //!< MAC_ACK_PENDING
+  CHANNEL_ACCESS_FAILURE,//!< CHANNEL_ACCESS_FAILURE
+  CHANNEL_IDLE,          //!< CHANNEL_IDLE
+  SET_PHY_TX_ON          //!< SET_PHY_TX_ON
 } LrWpanMacState;
 
 /**
@@ -86,7 +93,7 @@
   DISASSOCIATED = 0xff
 } LrWpanAssociationStatus;
 
-/*
+/**
  * Table 42 of 802.15.4-2006
  */
 typedef enum
@@ -105,6 +112,10 @@
   IEEE_802_15_4_INVALID_PARAMETER      = 11
 } LrWpanMcpsDataConfirmStatus;
 
+
+/**
+ * MCPS-DATA.request params. See 7.1.1.1
+ */
 struct McpsDataRequestParams
 {
   McpsDataRequestParams ()
@@ -116,42 +127,52 @@
       m_txOptions (0)
   {
   }
-  LrWpanAddressMode m_srcAddrMode;
-  LrWpanAddressMode m_dstAddrMode;
-  uint16_t m_dstPanId;
-  Mac16Address m_dstAddr;
-  uint8_t m_msduHandle;
-  uint8_t m_txOptions;  // bitmap
+  LrWpanAddressMode m_srcAddrMode; //!< Source address mode
+  LrWpanAddressMode m_dstAddrMode; //!< Destination address mode
+  uint16_t m_dstPanId;             //!< Destination PAN identifier
+  Mac16Address m_dstAddr;          //!< Destination address
+  uint8_t m_msduHandle;            //!< MSDU handle
+  uint8_t m_txOptions;             //!< Tx Options (bitfield)
 };
 
+/**
+ * MCPS-DATA.confirm params. See 7.1.1.2
+ */
 struct McpsDataConfirmParams
 {
-  uint8_t m_msduHandle;
-  LrWpanMcpsDataConfirmStatus m_status;
+  uint8_t m_msduHandle; //!< MSDU handle
+  LrWpanMcpsDataConfirmStatus m_status; //!< The status of the last MSDU transmission
 };
 
+/**
+ * MCPS-DATA.indication params. See 7.1.1.3
+ */
 struct McpsDataIndicationParams
 {
-  uint8_t m_srcAddrMode;
-  uint16_t m_srcPanId;
-  Mac16Address m_srcAddr;
-  uint8_t m_dstAddrMode;
-  uint16_t m_dstPanId;
-  Mac16Address m_dstAddr;
-  uint8_t m_mpduLinkQuality;
-  uint8_t m_dsn;
+  uint8_t m_srcAddrMode;  //!< Source address mode
+  uint16_t m_srcPanId;    //!< Source PAN identifier
+  Mac16Address m_srcAddr; //!< Source address
+  uint8_t m_dstAddrMode;  //!< Destination address mode
+  uint16_t m_dstPanId;    //!< Destination PAN identifier
+  Mac16Address m_dstAddr; //!< Destination address
+  uint8_t m_mpduLinkQuality;  //!< LQI value measured during reception of the MPDU
+  uint8_t m_dsn;          //!< The DSN of the received data frame
 };
 
-// This callback is called after a McpsDataRequest has been called from
-// the higher layer.  It returns a status of the outcome of the
-// transmission request
+/**
+ * This callback is called after a McpsDataRequest has been called from
+ * the higher layer.  It returns a status of the outcome of the
+ * transmission request
+ */
 typedef Callback<void, McpsDataConfirmParams> McpsDataConfirmCallback;
 
-// This callback is called after a Mcps has successfully received a
-// frame and wants to deliver it to the higher layer.
-//
-// XXX for now, we do not deliver all of the parameters in section
-// 7.1.1.3.1 but just send up the packet.
+/**
+ * This callback is called after a Mcps has successfully received a
+ *  frame and wants to deliver it to the higher layer.
+ *
+ *  \todo for now, we do not deliver all of the parameters in section
+ *  7.1.1.3.1 but just send up the packet.
+ */
 typedef Callback<void, McpsDataIndicationParams, Ptr<Packet> > McpsDataIndicationCallback;
 
 
@@ -488,8 +509,8 @@
    */
   struct TxQueueElement
   {
-    uint8_t txQMsduHandle;
-    Ptr<Packet> txQPkt;
+    uint8_t txQMsduHandle; //!< MSDU Handle
+    Ptr<Packet> txQPkt;    //!< Queued packet
   };
 
   /**
@@ -652,7 +673,7 @@
    */
   TracedCallback<Ptr<const Packet> > m_promiscSnifferTrace;
 
-  /*
+  /**
    * A trace source that fires when the LrWpanMac changes states.
    * Parameters are the old mac state and the new mac state.
    */
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.cc ns-3.21/src/lr-wpan/model/lr-wpan-mac-header.cc
--- ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-mac-header.cc	2014-09-17 20:03:14.000000000 -0700
@@ -110,47 +110,23 @@
 }
 
 bool
-LrWpanMacHeader::IsSecDisable (void) const
-{
-  return (m_fctrlSecU == 0);
-}
-
-bool
 LrWpanMacHeader::IsFrmPend (void) const
 {
   return (m_fctrlFrmPending == 1);
 }
 
 bool
-LrWpanMacHeader::IsNoFrmPend (void) const
-{
-  return (m_fctrlFrmPending == 0);
-}
-
-bool
 LrWpanMacHeader::IsAckReq (void) const
 {
   return (m_fctrlAckReq == 1);
 }
 
 bool
-LrWpanMacHeader::IsNoAckReq (void) const
-{
-  return (m_fctrlAckReq == 0);
-}
-
-bool
 LrWpanMacHeader::IsPanIdComp (void) const
 {
   return (m_fctrlPanIdComp == 1);
 }
 
-bool
-LrWpanMacHeader::IsNoPanIdComp (void) const
-{
-  return (m_fctrlPanIdComp == 0);
-}
-
 uint8_t
 LrWpanMacHeader::GetFrmCtrlRes (void) const
 {
@@ -252,7 +228,7 @@
 }
 
 uint8_t
-LrWpanMacHeader::GetsecctrlReserved (void) const
+LrWpanMacHeader::GetSecCtrlReserved (void) const
 {
   return (m_secctrlReserved);
 }
@@ -475,7 +451,7 @@
 }
 
 void
-LrWpanMacHeader::SetsecctrlReserved (uint8_t res)
+LrWpanMacHeader::SetSecCtrlReserved (uint8_t res)
 {
   m_secctrlReserved = res;
 }
@@ -504,13 +480,6 @@
   m_auxKeyIdKeySrc64 = keySrc;
 }
 
-
-std::string
-LrWpanMacHeader::GetName (void) const
-{
-  return "LrWpan MAC Header";
-}
-
 TypeId
 LrWpanMacHeader::GetTypeId (void)
 {
@@ -520,7 +489,6 @@
   return tid;
 }
 
-
 TypeId
 LrWpanMacHeader::GetInstanceTypeId (void) const
 {
@@ -528,18 +496,13 @@
 }
 
 void
-LrWpanMacHeader::PrintFrameControl (std::ostream &os) const
+LrWpanMacHeader::Print (std::ostream &os) const
 {
   os << "  Frame Type = " << (uint32_t) m_fctrlFrmType << ", Sec Enable = " << (uint32_t) m_fctrlSecU
      << ", Frame Pending = " << (uint32_t) m_fctrlFrmPending << ", Ack Request = " << (uint32_t) m_fctrlAckReq
      << ", PAN ID Compress = " << (uint32_t) m_fctrlPanIdComp << ", Frame Vers = " << (uint32_t) m_fctrlFrmVer
      << ", Dst Addrs Mode = " << (uint32_t) m_fctrlDstAddrMode << ", Src Addr Mode = " << (uint32_t) m_fctrlSrcAddrMode;
-}
 
-void
-LrWpanMacHeader::Print (std::ostream &os) const
-{
-  PrintFrameControl (os);
   os << ", Sequence Num = " << static_cast<uint16_t> (m_SeqNum);
 
   switch (m_fctrlDstAddrMode)
@@ -629,7 +592,7 @@
       break;
     case SHORTADDR:
       // check if PAN Id compression is enabled
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           size += 4;
         }
@@ -640,7 +603,7 @@
       break;
     case EXTADDR:
       // check if PAN Id compression is enabled
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           size += 10;
         }
@@ -703,14 +666,14 @@
     case NOADDR:
       break;
     case SHORTADDR:
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           i.WriteHtolsbU16 (GetSrcPanId ());
         }
       WriteTo (i, m_addrShortSrcAddr);
       break;
     case EXTADDR:
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           i.WriteHtolsbU16 (GetSrcPanId ());
         }
@@ -771,7 +734,7 @@
     case NOADDR:
       break;
     case SHORTADDR:
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           m_addrSrcPanId = i.ReadLsbtohU16 ();
         }
@@ -785,7 +748,7 @@
       ReadFrom (i, m_addrShortSrcAddr);
       break;
     case EXTADDR:
-      if (IsNoPanIdComp ())
+      if (!IsPanIdComp ())
         {
           m_addrSrcPanId = i.ReadLsbtohU16 ();
         }
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.h ns-3.21/src/lr-wpan/model/lr-wpan-mac-header.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-mac-header.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-mac-header.h	2014-09-17 20:03:14.000000000 -0700
@@ -18,7 +18,7 @@
  *  Author: kwong yin <kwong-sang.yin@boeing.com>
  */
 
-/**
+/*
  * the following classes implements the 802.15.4 Mac Header
  * There are 4 types of 802.15.4 Mac Headers Frames, and they have these fields
  *
@@ -46,7 +46,7 @@
 namespace ns3 {
 
 
-/*
+/**
  * \ingroup lr-wpan
  * Represent the Mac Header with the Frame Control and Sequence Number fields
  */
@@ -54,15 +54,22 @@
 {
 
 public:
+
+  /**
+   * The possible MAC types, see IEEE 802.15.4-2006, Table 79.
+   */
   enum LrWpanMacType
   {
-    LRWPAN_MAC_BEACON = 0,
-    LRWPAN_MAC_DATA = 1,
-    LRWPAN_MAC_ACKNOWLEDGMENT = 2,
-    LRWPAN_MAC_COMMAND = 3,
-    LRWPAN_MAC_RESERVED
+    LRWPAN_MAC_BEACON = 0,        //!< LRWPAN_MAC_BEACON
+    LRWPAN_MAC_DATA = 1,          //!< LRWPAN_MAC_DATA
+    LRWPAN_MAC_ACKNOWLEDGMENT = 2,//!< LRWPAN_MAC_ACKNOWLEDGMENT
+    LRWPAN_MAC_COMMAND = 3,       //!< LRWPAN_MAC_COMMAND
+    LRWPAN_MAC_RESERVED           //!< LRWPAN_MAC_RESERVED
   };
 
+  /**
+   * The addressing mode types, see IEEE 802.15.4-2006, Table 80.
+   */
   enum AddrModeType
   {
     NOADDR = 0,
@@ -71,6 +78,9 @@
     EXTADDR = 3
   };
 
+  /**
+   * The addressing mode types, see IEEE 802.15.4-2006, Table 80.
+   */
   enum KeyIdModeType
   {
     IMPLICIT = 0,
@@ -81,6 +91,11 @@
 
   LrWpanMacHeader (void);
 
+  /**
+   * Constructor
+   * \param wpanMacType the header MAC type
+   * \param seqNum the sequence number
+   */
   LrWpanMacHeader (enum LrWpanMacType wpanMacType,      // Data, ACK, Control MAC Header must have
                    uint8_t seqNum);                     // frame control and sequence number.
                                                         // Beacon MAC Header must have frame control,
@@ -88,96 +103,324 @@
 
   ~LrWpanMacHeader (void);
 
-
+  /**
+   * Get the header type
+   * \return the header type
+   */
   enum LrWpanMacType GetType (void) const;
+  /**
+   * Get the Frame control field
+   * \return the Frame control field
+   */
   uint16_t GetFrameControl (void) const;
+
+  /**
+   * Check if Security Enabled bit of Frame Control is enabled
+   * \return true if Security Enabled bit is enabled
+   */
   bool IsSecEnable (void) const;
-  bool IsSecDisable (void) const;
+
+  /**
+   * Check if Frame Pending bit of Frame Control is enabled
+   * \return true if Frame Pending bit is enabled
+   */
   bool IsFrmPend (void) const;
-  bool IsNoFrmPend (void) const;
+
+  /**
+   * Check if Ack. Request bit of Frame Control is enabled
+   * \return true if Ack. Request bit is enabled
+   */
   bool IsAckReq (void) const;
-  bool IsNoAckReq (void) const;
+
+  /**
+   * Check if PAN ID Compression bit of Frame Control is enabled
+   * \return true if PAN ID Compression bit is enabled
+   */
   bool IsPanIdComp (void) const;
-  bool IsNoPanIdComp (void) const;
+
+  /**
+   * Get the Reserved bits of Frame control field
+   * \return the Reserved bits
+   */
   uint8_t GetFrmCtrlRes (void) const;
+
+  /**
+   * Get the Dest. Addressing Mode of Frame control field
+   * \return the Dest. Addressing Mode bits
+   */
   uint8_t GetDstAddrMode (void) const;
+  /**
+   * Get the Frame Version of Frame control field
+   * \return the Frame Version bits
+   */
   uint8_t GetFrameVer (void) const;
+  /**
+   * Get the Source Addressing Mode of Frame control field
+   * \return the Source Addressing Mode bits
+   */
   uint8_t GetSrcAddrMode (void) const;
 
+  /**
+   * Get the frame Sequence number
+   * \return the sequence number
+   */
   uint8_t GetSeqNum (void) const;
 
+  /**
+   * Get the Destination PAN ID
+   * \return the Destination PAN ID
+   */
   uint16_t GetDstPanId (void) const;
+  /**
+   * Get the Destination Short address
+   * \return the Destination Short address
+   */
   Mac16Address GetShortDstAddr (void) const;
+  /**
+   * Get the Destination Extended address
+   * \return the Destination Extended address
+   */
   Mac64Address GetExtDstAddr (void) const;
+  /**
+   * Get the Source PAN ID
+   * \return the Source PAN ID
+   */
   uint16_t GetSrcPanId (void) const;
+  /**
+   * Get the Source Short address
+   * \return the Source Short address
+   */
   Mac16Address GetShortSrcAddr (void) const;
+  /**
+   * Get the Source Extended address
+   * \return the Source Extended address
+   */
   Mac64Address GetExtSrcAddr (void) const;
 
+  /**
+   * Get the Auxiliary Security Header - Security Control Octect
+   * \return the Auxiliary Security Header - Security Control Octect
+   */
   uint8_t GetSecControl (void) const;
+  /**
+   * Get the Auxiliary Security Header - Frame Counter Octects
+   * \return the Auxiliary Security Header - Frame Counter Octects
+   */
   uint32_t GetFrmCounter (void) const;
 
+  /**
+   * Get the Auxiliary Security Header - Security Control - Security Level bits
+   * \return the Auxiliary Security Header - Security Control - Security Level bits
+   */
   uint8_t GetSecLevel (void) const;
+  /**
+   * Get the Auxiliary Security Header - Security Control - Key Identifier Mode bits
+   * \return the Auxiliary Security Header - Security Control - Key Identifier Mode bits
+   */
   uint8_t GetKeyIdMode (void) const;
-  uint8_t GetsecctrlReserved (void) const;
-
+  /**
+   * Get the Auxiliary Security Header - Security Control - Reserved bits
+   * \return the Auxiliary Security Header - Security Control - Reserved bits
+   */
+  uint8_t GetSecCtrlReserved (void) const;
+
+  /**
+   * Get the Auxiliary Security Header - Key Identifier - Key Source (2 Octects)
+   * \return the Auxiliary Security Header - Key Identifier - Key Source  (2 Octects)
+   */
   uint32_t GetKeyIdSrc32 (void) const;
+  /**
+   * Get the Auxiliary Security Header - Key Identifier - Key Source (4 Octects)
+   * \return the Auxiliary Security Header - Key Identifier - Key Source  (4 Octects)
+   */
   uint64_t GetKeyIdSrc64 (void) const;
+  /**
+   * Get the Auxiliary Security Header - Key Identifier - Key Index
+   * \return the Auxiliary Security Header - Key Identifier - Key Index
+   */
   uint8_t GetKeyIdIndex (void) const;
 
-
+  /**
+   * Returns true if the header is a beacon
+   * \return true if the header is a beacon
+   */
   bool IsBeacon (void) const;
+  /**
+   * Returns true if the header is a data
+   * \return true if the header is a data
+   */
   bool IsData (void) const;
+  /**
+   * Returns true if the header is an ack
+   * \return true if the header is an ack
+   */
   bool IsAcknowledgment (void) const;
+  /**
+   * Returns true if the header is a command
+   * \return true if the header is a command
+   */
   bool IsCommand (void) const;
 
-
+  /**
+   * Set the Frame Control field "Frame Type" bits
+   * \param wpanMacType the frame type
+   */
   void SetType (enum LrWpanMacType wpanMacType);
+
+  /**
+   * Set the whole Frame Control field
+   * \param frameControl the Frame Control field
+   */
   void SetFrameControl (uint16_t frameControl);
+
+  /**
+   * Set the Frame Control field "Security Enabled" bit to true
+   */
   void SetSecEnable (void);
+
+  /**
+   * Set the Frame Control field "Security Enabled" bit to false
+   */
   void SetSecDisable (void);
+
+  /**
+   * Set the Frame Control field "Frame Pending" bit to true
+   */
   void SetFrmPend (void);
+
+  /**
+   * Set the Frame Control field "Frame Pending" bit to false
+   */
   void SetNoFrmPend (void);
+
+  /**
+   * Set the Frame Control field "Ack. Request" bit to true
+   */
   void SetAckReq (void);
+
+  /**
+   * Set the Frame Control field "Ack. Request" bit to false
+   */
   void SetNoAckReq (void);
+
+  /**
+   * Set the Frame Control field "PAN ID Compression" bit to true
+   */
   void SetPanIdComp (void);
+
+  /**
+   * Set the Frame Control field "PAN ID Compression" bit to false
+   */
   void SetNoPanIdComp (void);
+
+  /**
+   * Set the Frame Control field "Reserved" bits
+   * \param res reserved bits
+   */
   void SetFrmCtrlRes (uint8_t res);
+  /**
+   * Set the Destination address mode
+   * \param addrMode Destination address mode
+   */
   void SetDstAddrMode (uint8_t addrMode);
+  /**
+   * Set the Frame version
+   * \param ver frame version
+   */
   void SetFrameVer (uint8_t ver);
+  /**
+   * Set the Source address mode
+   * \param addrMode Source address mode
+   */
   void SetSrcAddrMode (uint8_t addrMode);
 
+  /**
+   * Set the Sequence number
+   * \param seqNum sequence number
+   */
   void SetSeqNum (uint8_t seqNum);
 
   /* The Source/Destination Addressing fields are only set if SrcAddrMode/DstAddrMode are set */
-  void SetSrcAddrFields (uint16_t panId,
-                         Mac16Address addr);
-  void SetSrcAddrFields (uint16_t panId,
-                         Mac64Address addr);
-  void SetDstAddrFields (uint16_t panId,
-                         Mac16Address addr);
-  void SetDstAddrFields (uint16_t panId,
-                         Mac64Address addr);
+  /**
+   * Set Source address fields
+   * \param panId source PAN ID
+   * \param addr source address (16 bit)
+   */
+  void SetSrcAddrFields (uint16_t panId, Mac16Address addr);
+  /**
+   * Set Source address fields
+   * \param panId source PAN ID
+   * \param addr source address (64 bit)
+   */
+  void SetSrcAddrFields (uint16_t panId, Mac64Address addr);
+  /**
+   * Set Destination address fields
+   * \param panId destination PAN ID
+   * \param addr destination address (16 bit)
+   */
+  void SetDstAddrFields (uint16_t panId, Mac16Address addr);
+  /**
+   * Set Destination address fields
+   * \param panId destination PAN ID
+   * \param addr destination address (64 bit)
+   */
+  void SetDstAddrFields (uint16_t panId, Mac64Address addr);
 
   /* Auxiliary Security Header is only set if Sec Enable (SecU) field is set to 1 */
+  /**
+   * Set the auxiliary security header "Security Control" octet
+   * \param secLevel the "Security Control" octect
+   */
   void SetSecControl (uint8_t secLevel);
+  /**
+   * Set the auxiliary security header "Frame Counter" octet
+   * \param frmCntr the "Frame Counter" octect
+   */
   void SetFrmCounter (uint32_t frmCntr);
 
+  /**
+   * Set the Security Control field "Security Level" bits (3 bits)
+   * \param secLevel the "Security Level" bits
+   */
   void SetSecLevel (uint8_t secLevel);
+  /**
+   * Set the Security Control field "Key Identifier Mode" bits (2 bits)
+   * \param keyIdMode the "Key Identifier Mode" bits
+   */
   void SetKeyIdMode (uint8_t keyIdMode);
-  void SetsecctrlReserved (uint8_t res);
+
+  /**
+   * Set the Security Control field "Reserved" bits (3 bits)
+   * \param res the "Reserved" bits
+   */
+  void SetSecCtrlReserved (uint8_t res);
 
   /* Variable length will be dependent on Key Id Mode*/
+  /**
+   * Set the Key Index
+   * \param keyIndex the Key index
+   */
   void SetKeyId (uint8_t keyIndex);
-  void SetKeyId (uint32_t keySrc,
-                 uint8_t keyIndex);
-  void SetKeyId (uint64_t keySrc,
-                 uint8_t keyIndex);
-
-
-  std::string GetName (void) const;
+  /**
+   * Set the Key Index and originator
+   * \param keySrc the originator of a group key
+   * \param keyIndex the Key index
+   */
+  void SetKeyId (uint32_t keySrc, uint8_t keyIndex);
+  /**
+   * Set the Key Index and originator
+   * \param keySrc the originator of a group key
+   * \param keyIndex the Key index
+   */
+  void SetKeyId (uint64_t keySrc, uint8_t keyIndex);
+
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
-  void PrintFrameControl (std::ostream &os) const;
+
   void Print (std::ostream &os) const;
   uint32_t GetSerializedSize (void) const;
   void Serialize (Buffer::Iterator start) const;
@@ -186,50 +429,50 @@
 
 private:
   /* Frame Control 2 Octets */
-  /* Frame Control fields */
-  uint8_t m_fctrlFrmType;               // Bit 0-2    = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command
-  uint8_t m_fctrlSecU;                  // Bit 3      = 0 - no AuxSecHdr ,  1 - security enabled AuxSecHdr present
-  uint8_t m_fctrlFrmPending;            // Bit 4
-  uint8_t m_fctrlAckReq;                // Bit 5
-  uint8_t m_fctrlPanIdComp;             // Bit 6      = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId
-  uint8_t m_fctrlReserved;              // Bit 7-9
-  uint8_t m_fctrlDstAddrMode;           // Bit 10-11  = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr
-  uint8_t m_fctrlFrmVer;                // Bit 12-13
-  uint8_t m_fctrlSrcAddrMode;           // Bit 14-15  = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr
+  /* Frame Control field - see 7.2.1.1 */
+  uint8_t m_fctrlFrmType;               //!< Frame Control field Bit 0-2    = 0 - Beacon, 1 - Data, 2 - Ack, 3 - Command
+  uint8_t m_fctrlSecU;                  //!< Frame Control field Bit 3      = 0 - no AuxSecHdr ,  1 - security enabled AuxSecHdr present
+  uint8_t m_fctrlFrmPending;            //!< Frame Control field Bit 4
+  uint8_t m_fctrlAckReq;                //!< Frame Control field Bit 5
+  uint8_t m_fctrlPanIdComp;             //!< Frame Control field Bit 6      = 0 - no compression, 1 - using only DstPanId for both Src and DstPanId
+  uint8_t m_fctrlReserved;              //!< Frame Control field Bit 7-9
+  uint8_t m_fctrlDstAddrMode;           //!< Frame Control field Bit 10-11  = 0 - No DstAddr, 2 - ShtDstAddr, 3 - ExtDstAddr
+  uint8_t m_fctrlFrmVer;                //!< Frame Control field Bit 12-13
+  uint8_t m_fctrlSrcAddrMode;           //!< Frame Control field Bit 14-15  = 0 - No SrcAddr, 2 - ShtSrcAddr, 3 - ExtSrcAddr
 
   /* Sequence Number */
-  uint8_t m_SeqNum;                     // 1 Octet
+  uint8_t m_SeqNum;                     //!< Sequence Number (1 Octet)
 
   /* Addressing fields */
-  uint16_t m_addrDstPanId;              // 0 or 2 Octet
-  Mac16Address m_addrShortDstAddr;      // 0 or 8 Octet
-  Mac64Address m_addrExtDstAddr;        // 0 or 8 Octet
-  uint16_t m_addrSrcPanId;              // 0 or 2 Octet
-  Mac16Address m_addrShortSrcAddr;      // 0 or 8 Octet
-  Mac64Address m_addrExtSrcAddr;        // 0 or 8 Octet
-
-  /* Auxiliary Security Header          // 0, 5, 6, 10 or 14 Octets */
-  // uint8_t m_auxSecCtrl;                 // 1 Octet see below
-  uint32_t m_auxFrmCntr;                // 4 Octet
-
-  /* Security Control fields */
-  uint8_t m_secctrlSecLevel;            // Bit 0-2
-  uint8_t m_secctrlKeyIdMode;           // Bit 3-4 will indicate size of Key Id
+  uint16_t m_addrDstPanId;              //!< Dst PAN id (0 or 2 Octets)
+  Mac16Address m_addrShortDstAddr;      //!< Dst Short addr (0 or 2 Octets)
+  Mac64Address m_addrExtDstAddr;        //!< Dst Ext addr (0 or 8 Octets)
+  uint16_t m_addrSrcPanId;              //!< Src PAN id (0 or 2 Octets)
+  Mac16Address m_addrShortSrcAddr;      //!< Src Short addr (0 or 2 Octets)
+  Mac64Address m_addrExtSrcAddr;        //!< Src Ext addr (0 or 8 Octets)
+
+  /* Auxiliary Security Header - See 7.6.2 - 0, 5, 6, 10 or 14 Octets */
+  // uint8_t m_auxSecCtrl;              // 1 Octet see below
+  uint32_t m_auxFrmCntr;                //!< Auxiliary security header - Frame Counter (4 Octets)
+
+  /* Security Control fields - See 7.6.2.2 */
+  uint8_t m_secctrlSecLevel;            //!< Auxiliary security header - Security Control field - Bit 0-2
+  uint8_t m_secctrlKeyIdMode;           //!< Auxiliary security header - Security Control field - Bit 3-4 will indicate size of Key Id
                                         // = 0 - Key is determined implicitly
-                                        //       from originator and receipient
+                                        //       from originator and recipient
                                         // = 1 - 1 Octet Key Index
-                                        // = 2 - 1 octet Key Index and 4 oct Key src
-                                        // = 3 - 1 octet Key Index and 8 oct Key src
+                                        // = 2 - 1 Octet Key Index and 4 oct Key src
+                                        // = 3 - 1 Octet Key Index and 8 oct Key src
 
-  uint8_t m_secctrlReserved;            // Bit 5-7
+  uint8_t m_secctrlReserved;            //!< Auxiliary security header - Security Control field - Bit 5-7
 
   union
   {
-    uint32_t m_auxKeyIdKeySrc32;        // 4 octets
-    uint64_t m_auxKeyIdKeySrc64;        // 8 octets
+    uint32_t m_auxKeyIdKeySrc32;        //!< Auxiliary security header - Key Source (4 Octets)
+    uint64_t m_auxKeyIdKeySrc64;        //!< Auxiliary security header - Key Source (8 Octets)
   };
 
-  uint8_t m_auxKeyIdKeyIndex;           // 1 octet
+  uint8_t m_auxKeyIdKeyIndex;           //!< Auxiliary security header - Key Index (1 Octet)
 
 }; //LrWpanMacHeader
 
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.h ns-3.21/src/lr-wpan/model/lr-wpan-mac-trailer.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-mac-trailer.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-mac-trailer.h	2014-09-17 20:03:14.000000000 -0700
@@ -82,7 +82,7 @@
    * trailer. The packet itself should contain no trailer. If FCS calculation is
    * disabled for this trailer, CheckFcs() will always return true.
    *
-   * \param the packet to be checked
+   * \param p the packet to be checked
    * \return false, if the FCS values do not match, true otherwise
    */
   bool CheckFcs (Ptr<const Packet> p);
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-net-device.h ns-3.21/src/lr-wpan/model/lr-wpan-net-device.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-net-device.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-net-device.h	2014-09-17 20:03:14.000000000 -0700
@@ -138,7 +138,7 @@
   virtual void SetNode (Ptr<Node> node);
   virtual bool NeedsArp (void) const;
 
-  virtual void SetReceiveCallback (ReceiveCallback cb);
+  virtual void SetReceiveCallback (NetDevice::ReceiveCallback cb);
   virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
   virtual bool SupportsSendFrom (void) const;
 
@@ -215,7 +215,7 @@
   bool m_configComplete;
 
   /**
-   * Configure the NetDevice to request MAC layer acknowledgements when sending
+   * Configure the NetDevice to request MAC layer acknowledgments when sending
    * packets using the Send() API.
    */
   bool m_useAcks;
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-phy.h ns-3.21/src/lr-wpan/model/lr-wpan-phy.h
--- ns-3.20/src/lr-wpan/model/lr-wpan-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -46,29 +46,30 @@
  */
 typedef struct
 {
-  double averagePower;
-  Time lastUpdate;
-  Time measurementLength;
+  double averagePower;    //!< Average measured power
+  Time lastUpdate;        //!< Last update time
+  Time measurementLength; //!< Total measuremement period
 } LrWpanEdPower;
 
 /**
- * IEEE802.15.4-2006 Table 1 and 2 in section 6.1.1 and 6.1.2
+ * This data structure provides the Bit rate and Symbol rate for a given channel
+ * See IEEE802.15.4-2006 Table 1 and 2 in section 6.1.1 and 6.1.2
  */
 typedef  struct
 {
-  double bitRate;
-  double symbolRate;
+  double bitRate;    //!< bit rate
+  double symbolRate; //!< symbol rate
 } LrWpanPhyDataAndSymbolRates;
 
 /**
- * IEEE802.15.4-2006 Figure 16, Table 19 and 20 in section 6.3
- * this data structure provides number of symbols for the PPDU headers: SHR and PHR
+ * This data structure provides number of symbols for the PPDU headers: SHR and PHR
+ * See IEEE802.15.4-2006 Figure 16, Table 19 and 20 in section 6.3
  */
 typedef  struct
 {
-  double shrPreamble;
-  double shrSfd;
-  double phr;
+  double shrPreamble; //!< Number of symbols for the SHR preamble
+  double shrSfd;      //!< Number of symbols for the SHR SFD
+  double phr;         //!< Number of symbols for the PHR
 } LrWpanPhyPpduHeaderSymbolNumber;
 
 /**
@@ -127,14 +128,14 @@
  */
 typedef struct
 {
-  uint8_t phyCurrentChannel;
-  uint32_t phyChannelsSupported[32];
-  uint8_t phyTransmitPower;
-  uint8_t phyCCAMode;
-  uint32_t phyCurrentPage;
-  uint32_t phyMaxFrameDuration;
-  uint32_t phySHRDuration;
-  double phySymbolsPerOctet;
+  uint8_t phyCurrentChannel;         //!< The RF channel to use
+  uint32_t phyChannelsSupported[32]; //!< BitField representing the available channels supported by a channel page.
+  uint8_t phyTransmitPower;          //!< Transmit power
+  uint8_t phyCCAMode;                //!< CCA mode
+  uint32_t phyCurrentPage;           //!< Current channel page
+  uint32_t phyMaxFrameDuration;      //!< The maximum number of symbols in a frame
+  uint32_t phySHRDuration;           //!< The duration of the synchronization header (SHR) in symbols
+  double phySymbolsPerOctet;         //!< The number of symbols per octet
 } LrWpanPhyPibAttributes;
 
 /**
@@ -647,6 +648,10 @@
    * The error model describing the bit and packet error rates.
    */
   Ptr<LrWpanErrorModel> m_errorModel;
+
+  /**
+   * The current PHY PIB attributes.
+   */
   LrWpanPhyPibAttributes m_phyPIBAttributes;
 
   // State variables
diff -Naur ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc ns-3.21/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc
--- ns-3.20/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -27,8 +27,12 @@
 
 namespace ns3 {
 
-Ptr<SpectrumModel> g_LrWpanSpectrumModel;
+Ptr<SpectrumModel> g_LrWpanSpectrumModel; //!< Global object used to initialize the LrWpan Spectrum Model
 
+/**
+ * \ingroup lr-wpan
+ * \brief Helper class used to automatically initialize the LrWpan Spectrum Model objects
+ */
 class LrWpanSpectrumModelInitializer
 {
 public:
@@ -50,7 +54,7 @@
     g_LrWpanSpectrumModel = Create<SpectrumModel> (bands);
   }
 
-} g_LrWpanSpectrumModelInitializerInstance;
+} g_LrWpanSpectrumModelInitializerInstance;  //!< Global object used to initialize the LrWpan Spectrum Model
 
 LrWpanSpectrumValueHelper::LrWpanSpectrumValueHelper (void)
 {
diff -Naur ns-3.20/src/lte/bindings/modulegen_customizations.py ns-3.21/src/lte/bindings/modulegen_customizations.py
--- ns-3.20/src/lte/bindings/modulegen_customizations.py	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/bindings/modulegen_customizations.py	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,9 @@
+import os
+
+def post_register_types(root_module):
+    enabled_features = os.environ['NS3_ENABLED_FEATURES'].split(',')
+
+    if 'EmuFdNetDevice' not in enabled_features:
+        if 'ns3::EmuEpcHelper'in root_module:
+            root_module.classes.remove(root_module['ns3::EmuEpcHelper'])
+
diff -Naur ns-3.20/src/lte/bindings/modulegen__gcc_ILP32.py ns-3.21/src/lte/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/lte/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -354,6 +354,14 @@
     module.add_class('LteEnbPhySapUser', allow_subclassing=True)
     ## lte-common.h (module 'lte'): ns3::LteFfConverter [class]
     module.add_class('LteFfConverter')
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider [class]
+    module.add_class('LteFfrRrcSapProvider', allow_subclassing=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser [class]
+    module.add_class('LteFfrRrcSapUser', allow_subclassing=True)
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider [class]
+    module.add_class('LteFfrSapProvider', allow_subclassing=True)
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser [class]
+    module.add_class('LteFfrSapUser')
     ## lte-common.h (module 'lte'): ns3::LteFlowId_t [struct]
     module.add_class('LteFlowId_t')
     ## lte-global-pathloss-database.h (module 'lte'): ns3::LteGlobalPathlossDatabase [class]
@@ -442,6 +450,12 @@
     module.add_class('MobilityControlInfo', outer_class=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MobilityStateParameters [struct]
     module.add_class('MobilityStateParameters', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon [struct]
+    module.add_class('PdschConfigCommon', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated [struct]
+    module.add_class('PdschConfigDedicated', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated [enumeration]
+    module.add_enum('', ['dB_6', 'dB_4dot77', 'dB_3', 'dB_1dot77', 'dB0', 'dB1', 'dB2', 'dB3'], outer_class=root_module['ns3::LteRrcSap::PdschConfigDedicated'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysCellIdRange [struct]
     module.add_class('PhysCellIdRange', outer_class=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated [struct]
@@ -806,12 +820,12 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4MulticastRoute', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4MulticastRoute>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4Route', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4Route>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteChunkProcessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteChunkProcessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteControlMessage', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteControlMessage>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteHarqPhy, ns3::empty, ns3::DefaultDeleter<ns3::LteHarqPhy> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteHarqPhy', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteHarqPhy>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteSinrChunkProcessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteSinrChunkProcessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
@@ -1026,6 +1040,8 @@
     module.add_enum('AmcModel', ['PiroEW2010', 'MiErrorModel'], outer_class=root_module['ns3::LteAmc'])
     ## lte-anr.h (module 'lte'): ns3::LteAnr [class]
     module.add_class('LteAnr', parent=root_module['ns3::Object'])
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor [class]
+    module.add_class('LteChunkProcessor', parent=root_module['ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >'])
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage [class]
     module.add_class('LteControlMessage', parent=root_module['ns3::SimpleRefCount< ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >'])
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage::MessageType [enumeration]
@@ -1040,6 +1056,22 @@
     module.add_class('LteEnbRrcProtocolIdeal', parent=root_module['ns3::Object'])
     ## lte-rrc-protocol-real.h (module 'lte'): ns3::LteEnbRrcProtocolReal [class]
     module.add_class('LteEnbRrcProtocolReal', parent=root_module['ns3::Object'])
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm [class]
+    module.add_class('LteFfrAlgorithm', parent=root_module['ns3::Object'])
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm [class]
+    module.add_class('LteFfrDistributedAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm [class]
+    module.add_class('LteFfrEnhancedAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm [class]
+    module.add_class('LteFfrSoftAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm [class]
+    module.add_class('LteFrHardAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm [class]
+    module.add_class('LteFrNoOpAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm [class]
+    module.add_class('LteFrSoftAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm [class]
+    module.add_class('LteFrStrictAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
     ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm [class]
     module.add_class('LteHandoverAlgorithm', parent=root_module['ns3::Object'])
     ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy [class]
@@ -1072,8 +1104,6 @@
     module.add_class('LteRlcUm', parent=root_module['ns3::LteRlc'])
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteSignalingRadioBearerInfo [class]
     module.add_class('LteSignalingRadioBearerInfo', parent=root_module['ns3::LteRadioBearerInfo'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor [class]
-    module.add_class('LteSinrChunkProcessor', parent=root_module['ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >'])
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy [class]
     module.add_class('LteSpectrumPhy', parent=root_module['ns3::SpectrumPhy'])
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy::State [enumeration]
@@ -1094,6 +1124,8 @@
     module.add_class('LteUePhy', parent=root_module['ns3::LtePhy'])
     ## lte-ue-phy.h (module 'lte'): ns3::LteUePhy::State [enumeration]
     module.add_enum('State', ['CELL_SEARCH', 'SYNCHRONIZED', 'NUM_STATES'], outer_class=root_module['ns3::LteUePhy'])
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl [class]
+    module.add_class('LteUePowerControl', parent=root_module['ns3::Object'])
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc [class]
     module.add_class('LteUeRrc', parent=root_module['ns3::Object'])
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::State [enumeration]
@@ -1226,6 +1258,8 @@
     module.add_class('DlDciLteControlMessage', parent=root_module['ns3::LteControlMessage'])
     ## lte-control-messages.h (module 'lte'): ns3::DlHarqFeedbackLteControlMessage [class]
     module.add_class('DlHarqFeedbackLteControlMessage', parent=root_module['ns3::LteControlMessage'])
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper [class]
+    module.add_class('EmuEpcHelper', parent=root_module['ns3::EpcHelper'])
     ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::FdBetFfMacScheduler [class]
     module.add_class('FdBetFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## fdmt-ff-mac-scheduler.h (module 'lte'): ns3::FdMtFfMacScheduler [class]
@@ -1234,20 +1268,12 @@
     module.add_class('FdTbfqFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## lte-rrc-header.h (module 'lte'): ns3::HandoverPreparationInfoHeader [class]
     module.add_class('HandoverPreparationInfoHeader', parent=root_module['ns3::RrcAsn1Header'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor [class]
-    module.add_class('LteCtrlSinrChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteDataRadioBearerInfo [class]
     module.add_class('LteDataRadioBearerInfo', parent=root_module['ns3::LteRadioBearerInfo'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor [class]
-    module.add_class('LteDataSinrChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-enb-phy.h (module 'lte'): ns3::LteEnbPhy [class]
     module.add_class('LteEnbPhy', parent=root_module['ns3::LtePhy'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor [class]
-    module.add_class('LteInterferencePowerChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-net-device.h (module 'lte'): ns3::LteNetDevice [class]
     module.add_class('LteNetDevice', parent=root_module['ns3::NetDevice'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor [class]
-    module.add_class('LteRsReceivedPowerChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-ue-net-device.h (module 'lte'): ns3::LteUeNetDevice [class]
     module.add_class('LteUeNetDevice', parent=root_module['ns3::LteNetDevice'])
     ## lte-rrc-header.h (module 'lte'): ns3::MeasurementReportHeader [class]
@@ -1311,6 +1337,7 @@
     module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type=u'vector')
     module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type=u'vector')
     module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type=u'vector')
+    module.add_container('std::map< unsigned short, std::vector< double > >', ('short unsigned int', 'std::vector< double >'), container_type=u'map')
     module.add_container('std::vector< int >', 'int', container_type=u'vector')
     module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type=u'vector')
     module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type=u'list')
@@ -1323,6 +1350,7 @@
     module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type=u'list')
     module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type=u'list')
+    module.add_container('std::map< int, double >', ('int', 'double'), container_type=u'map')
     module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type=u'vector')
     module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type=u'vector')
     module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type=u'vector')
@@ -1341,6 +1369,9 @@
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', u'ns3::DlHarqRlcPduListBuffer_t')
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', u'ns3::DlHarqRlcPduListBuffer_t*')
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', u'ns3::DlHarqRlcPduListBuffer_t&')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&')
@@ -1359,9 +1390,6 @@
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndErrorCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndErrorCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndErrorCallback&')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndErrorCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndErrorCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndErrorCallback&')
@@ -1421,6 +1449,9 @@
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', u'ns3::DlHarqProcessesDciBuffer_t')
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', u'ns3::DlHarqProcessesDciBuffer_t*')
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', u'ns3::DlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LteChunkProcessorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LteChunkProcessorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LteChunkProcessorCallback&')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
@@ -1653,6 +1684,10 @@
     register_Ns3LteEnbPhySapProvider_methods(root_module, root_module['ns3::LteEnbPhySapProvider'])
     register_Ns3LteEnbPhySapUser_methods(root_module, root_module['ns3::LteEnbPhySapUser'])
     register_Ns3LteFfConverter_methods(root_module, root_module['ns3::LteFfConverter'])
+    register_Ns3LteFfrRrcSapProvider_methods(root_module, root_module['ns3::LteFfrRrcSapProvider'])
+    register_Ns3LteFfrRrcSapUser_methods(root_module, root_module['ns3::LteFfrRrcSapUser'])
+    register_Ns3LteFfrSapProvider_methods(root_module, root_module['ns3::LteFfrSapProvider'])
+    register_Ns3LteFfrSapUser_methods(root_module, root_module['ns3::LteFfrSapUser'])
     register_Ns3LteFlowId_t_methods(root_module, root_module['ns3::LteFlowId_t'])
     register_Ns3LteGlobalPathlossDatabase_methods(root_module, root_module['ns3::LteGlobalPathlossDatabase'])
     register_Ns3LteHandoverManagementSapProvider_methods(root_module, root_module['ns3::LteHandoverManagementSapProvider'])
@@ -1694,6 +1729,8 @@
     register_Ns3LteRrcSapMeasurementReport_methods(root_module, root_module['ns3::LteRrcSap::MeasurementReport'])
     register_Ns3LteRrcSapMobilityControlInfo_methods(root_module, root_module['ns3::LteRrcSap::MobilityControlInfo'])
     register_Ns3LteRrcSapMobilityStateParameters_methods(root_module, root_module['ns3::LteRrcSap::MobilityStateParameters'])
+    register_Ns3LteRrcSapPdschConfigCommon_methods(root_module, root_module['ns3::LteRrcSap::PdschConfigCommon'])
+    register_Ns3LteRrcSapPdschConfigDedicated_methods(root_module, root_module['ns3::LteRrcSap::PdschConfigDedicated'])
     register_Ns3LteRrcSapPhysCellIdRange_methods(root_module, root_module['ns3::LteRrcSap::PhysCellIdRange'])
     register_Ns3LteRrcSapPhysicalConfigDedicated_methods(root_module, root_module['ns3::LteRrcSap::PhysicalConfigDedicated'])
     register_Ns3LteRrcSapPlmnIdentityInfo_methods(root_module, root_module['ns3::LteRrcSap::PlmnIdentityInfo'])
@@ -1841,9 +1878,9 @@
     register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
+    register_Ns3SimpleRefCount__Ns3LteChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteChunkProcessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >'])
     register_Ns3SimpleRefCount__Ns3LteControlMessage_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteControlMessage__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >'])
     register_Ns3SimpleRefCount__Ns3LteHarqPhy_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteHarqPhy__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteHarqPhy, ns3::empty, ns3::DefaultDeleter<ns3::LteHarqPhy> >'])
-    register_Ns3SimpleRefCount__Ns3LteSinrChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteSinrChunkProcessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >'])
     register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
     register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
     register_Ns3SimpleRefCount__Ns3SpectrumModel_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumModel__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::SpectrumModel, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumModel> >'])
@@ -1940,11 +1977,20 @@
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
     register_Ns3LteAmc_methods(root_module, root_module['ns3::LteAmc'])
     register_Ns3LteAnr_methods(root_module, root_module['ns3::LteAnr'])
+    register_Ns3LteChunkProcessor_methods(root_module, root_module['ns3::LteChunkProcessor'])
     register_Ns3LteControlMessage_methods(root_module, root_module['ns3::LteControlMessage'])
     register_Ns3LteEnbMac_methods(root_module, root_module['ns3::LteEnbMac'])
     register_Ns3LteEnbRrc_methods(root_module, root_module['ns3::LteEnbRrc'])
     register_Ns3LteEnbRrcProtocolIdeal_methods(root_module, root_module['ns3::LteEnbRrcProtocolIdeal'])
     register_Ns3LteEnbRrcProtocolReal_methods(root_module, root_module['ns3::LteEnbRrcProtocolReal'])
+    register_Ns3LteFfrAlgorithm_methods(root_module, root_module['ns3::LteFfrAlgorithm'])
+    register_Ns3LteFfrDistributedAlgorithm_methods(root_module, root_module['ns3::LteFfrDistributedAlgorithm'])
+    register_Ns3LteFfrEnhancedAlgorithm_methods(root_module, root_module['ns3::LteFfrEnhancedAlgorithm'])
+    register_Ns3LteFfrSoftAlgorithm_methods(root_module, root_module['ns3::LteFfrSoftAlgorithm'])
+    register_Ns3LteFrHardAlgorithm_methods(root_module, root_module['ns3::LteFrHardAlgorithm'])
+    register_Ns3LteFrNoOpAlgorithm_methods(root_module, root_module['ns3::LteFrNoOpAlgorithm'])
+    register_Ns3LteFrSoftAlgorithm_methods(root_module, root_module['ns3::LteFrSoftAlgorithm'])
+    register_Ns3LteFrStrictAlgorithm_methods(root_module, root_module['ns3::LteFrStrictAlgorithm'])
     register_Ns3LteHandoverAlgorithm_methods(root_module, root_module['ns3::LteHandoverAlgorithm'])
     register_Ns3LteHarqPhy_methods(root_module, root_module['ns3::LteHarqPhy'])
     register_Ns3LteHelper_methods(root_module, root_module['ns3::LteHelper'])
@@ -1960,7 +2006,6 @@
     register_Ns3LteRlcTm_methods(root_module, root_module['ns3::LteRlcTm'])
     register_Ns3LteRlcUm_methods(root_module, root_module['ns3::LteRlcUm'])
     register_Ns3LteSignalingRadioBearerInfo_methods(root_module, root_module['ns3::LteSignalingRadioBearerInfo'])
-    register_Ns3LteSinrChunkProcessor_methods(root_module, root_module['ns3::LteSinrChunkProcessor'])
     register_Ns3LteSpectrumPhy_methods(root_module, root_module['ns3::LteSpectrumPhy'])
     register_Ns3LteSpectrumSignalParameters_methods(root_module, root_module['ns3::LteSpectrumSignalParameters'])
     register_Ns3LteSpectrumSignalParametersDataFrame_methods(root_module, root_module['ns3::LteSpectrumSignalParametersDataFrame'])
@@ -1969,6 +2014,7 @@
     register_Ns3LteStatsCalculator_methods(root_module, root_module['ns3::LteStatsCalculator'])
     register_Ns3LteUeMac_methods(root_module, root_module['ns3::LteUeMac'])
     register_Ns3LteUePhy_methods(root_module, root_module['ns3::LteUePhy'])
+    register_Ns3LteUePowerControl_methods(root_module, root_module['ns3::LteUePowerControl'])
     register_Ns3LteUeRrc_methods(root_module, root_module['ns3::LteUeRrc'])
     register_Ns3LteUeRrcProtocolIdeal_methods(root_module, root_module['ns3::LteUeRrcProtocolIdeal'])
     register_Ns3LteUeRrcProtocolReal_methods(root_module, root_module['ns3::LteUeRrcProtocolReal'])
@@ -2033,17 +2079,14 @@
     register_Ns3DlCqiLteControlMessage_methods(root_module, root_module['ns3::DlCqiLteControlMessage'])
     register_Ns3DlDciLteControlMessage_methods(root_module, root_module['ns3::DlDciLteControlMessage'])
     register_Ns3DlHarqFeedbackLteControlMessage_methods(root_module, root_module['ns3::DlHarqFeedbackLteControlMessage'])
+    register_Ns3EmuEpcHelper_methods(root_module, root_module['ns3::EmuEpcHelper'])
     register_Ns3FdBetFfMacScheduler_methods(root_module, root_module['ns3::FdBetFfMacScheduler'])
     register_Ns3FdMtFfMacScheduler_methods(root_module, root_module['ns3::FdMtFfMacScheduler'])
     register_Ns3FdTbfqFfMacScheduler_methods(root_module, root_module['ns3::FdTbfqFfMacScheduler'])
     register_Ns3HandoverPreparationInfoHeader_methods(root_module, root_module['ns3::HandoverPreparationInfoHeader'])
-    register_Ns3LteCtrlSinrChunkProcessor_methods(root_module, root_module['ns3::LteCtrlSinrChunkProcessor'])
     register_Ns3LteDataRadioBearerInfo_methods(root_module, root_module['ns3::LteDataRadioBearerInfo'])
-    register_Ns3LteDataSinrChunkProcessor_methods(root_module, root_module['ns3::LteDataSinrChunkProcessor'])
     register_Ns3LteEnbPhy_methods(root_module, root_module['ns3::LteEnbPhy'])
-    register_Ns3LteInterferencePowerChunkProcessor_methods(root_module, root_module['ns3::LteInterferencePowerChunkProcessor'])
     register_Ns3LteNetDevice_methods(root_module, root_module['ns3::LteNetDevice'])
-    register_Ns3LteRsReceivedPowerChunkProcessor_methods(root_module, root_module['ns3::LteRsReceivedPowerChunkProcessor'])
     register_Ns3LteUeNetDevice_methods(root_module, root_module['ns3::LteUeNetDevice'])
     register_Ns3MeasurementReportHeader_methods(root_module, root_module['ns3::MeasurementReportHeader'])
     register_Ns3RrcConnectionReconfigurationCompleteHeader_methods(root_module, root_module['ns3::RrcConnectionReconfigurationCompleteHeader'])
@@ -5410,6 +5453,11 @@
                    'void', 
                    [param('uint16_t', 'rnti')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## lte-enb-cphy-sap.h (module 'lte'): int8_t ns3::LteEnbCphySapProvider::GetReferenceSignalPower() [member function]
+    cls.add_method('GetReferenceSignalPower', 
+                   'int8_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::RemoveUe(uint16_t rnti) [member function]
     cls.add_method('RemoveUe', 
                    'void', 
@@ -5435,6 +5483,11 @@
                    'void', 
                    [param('ns3::LteRrcSap::MasterInformationBlock', 'mib')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::SetPa(uint16_t rnti, double pa) [member function]
+    cls.add_method('SetPa', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('double', 'pa')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi) [member function]
     cls.add_method('SetSrsConfigurationIndex', 
                    'void', 
@@ -5545,6 +5598,114 @@
                    is_static=True)
     return
 
+def register_Ns3LteFfrRrcSapProvider_methods(root_module, cls):
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider::LteFfrRrcSapProvider() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider::LteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrRrcSapProvider const &', 'arg0')])
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::RecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('RecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::ReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('ReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::SetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth) [member function]
+    cls.add_method('SetBandwidth', 
+                   'void', 
+                   [param('uint8_t', 'ulBandwidth'), param('uint8_t', 'dlBandwidth')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::SetCellId(uint16_t cellId) [member function]
+    cls.add_method('SetCellId', 
+                   'void', 
+                   [param('uint16_t', 'cellId')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrRrcSapUser_methods(root_module, cls):
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser::LteFfrRrcSapUser() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser::LteFfrRrcSapUser(ns3::LteFfrRrcSapUser const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrRrcSapUser const &', 'arg0')])
+    ## lte-ffr-rrc-sap.h (module 'lte'): uint8_t ns3::LteFfrRrcSapUser::AddUeMeasReportConfigForFfr(ns3::LteRrcSap::ReportConfigEutra reportConfig) [member function]
+    cls.add_method('AddUeMeasReportConfigForFfr', 
+                   'uint8_t', 
+                   [param('ns3::LteRrcSap::ReportConfigEutra', 'reportConfig')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapUser::SendLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('SendLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapUser::SetPdschConfigDedicated(uint16_t rnti, ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('SetPdschConfigDedicated', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrSapProvider_methods(root_module, cls):
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider::LteFfrSapProvider() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider::LteFfrSapProvider(ns3::LteFfrSapProvider const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSapProvider const &', 'arg0')])
+    ## lte-ffr-sap.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSapProvider::GetAvailableDlRbg() [member function]
+    cls.add_method('GetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSapProvider::GetAvailableUlRbg() [member function]
+    cls.add_method('GetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): uint8_t ns3::LteFfrSapProvider::GetMinContinuousUlBandwidth() [member function]
+    cls.add_method('GetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): uint8_t ns3::LteFfrSapProvider::GetTpc(uint16_t rnti) [member function]
+    cls.add_method('GetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): bool ns3::LteFfrSapProvider::IsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('IsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): bool ns3::LteFfrSapProvider::IsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('IsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('ReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('ReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('ReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrSapUser_methods(root_module, cls):
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser::LteFfrSapUser() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser::LteFfrSapUser(ns3::LteFfrSapUser const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSapUser const &', 'arg0')])
+    return
+
 def register_Ns3LteFlowId_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('==')
@@ -5805,6 +5966,11 @@
     cls.add_constructor([])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::LteRrcSap(ns3::LteRrcSap const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteRrcSap const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): static double ns3::LteRrcSap::ConvertPdschConfigDedicated2Double(ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('ConvertPdschConfigDedicated2Double', 
+                   'double', 
+                   [param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')], 
+                   is_static=True)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MaxReportCells [variable]
     cls.add_static_attribute('MaxReportCells', 'uint8_t const', is_const=True)
     return
@@ -6173,6 +6339,26 @@
     cls.add_instance_attribute('tHystNormal', 'uint8_t', is_const=False)
     return
 
+def register_Ns3LteRrcSapPdschConfigCommon_methods(root_module, cls):
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::PdschConfigCommon() [constructor]
+    cls.add_constructor([])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::PdschConfigCommon(ns3::LteRrcSap::PdschConfigCommon const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteRrcSap::PdschConfigCommon const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::pb [variable]
+    cls.add_instance_attribute('pb', 'int8_t', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::referenceSignalPower [variable]
+    cls.add_instance_attribute('referenceSignalPower', 'int8_t', is_const=False)
+    return
+
+def register_Ns3LteRrcSapPdschConfigDedicated_methods(root_module, cls):
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::PdschConfigDedicated() [constructor]
+    cls.add_constructor([])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::PdschConfigDedicated(ns3::LteRrcSap::PdschConfigDedicated const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteRrcSap::PdschConfigDedicated const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::pa [variable]
+    cls.add_instance_attribute('pa', 'uint8_t', is_const=False)
+    return
+
 def register_Ns3LteRrcSapPhysCellIdRange_methods(root_module, cls):
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysCellIdRange::PhysCellIdRange() [constructor]
     cls.add_constructor([])
@@ -6195,8 +6381,12 @@
     cls.add_instance_attribute('antennaInfo', 'ns3::LteRrcSap::AntennaInfoDedicated', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::haveAntennaInfoDedicated [variable]
     cls.add_instance_attribute('haveAntennaInfoDedicated', 'bool', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::havePdschConfigDedicated [variable]
+    cls.add_instance_attribute('havePdschConfigDedicated', 'bool', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::haveSoundingRsUlConfigDedicated [variable]
     cls.add_instance_attribute('haveSoundingRsUlConfigDedicated', 'bool', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::pdschConfigDedicated [variable]
+    cls.add_instance_attribute('pdschConfigDedicated', 'ns3::LteRrcSap::PdschConfigDedicated', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::soundingRsUlConfigDedicated [variable]
     cls.add_instance_attribute('soundingRsUlConfigDedicated', 'ns3::LteRrcSap::SoundingRsUlConfigDedicated', is_const=False)
     return
@@ -6277,6 +6467,8 @@
     cls.add_constructor([])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::RadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteRrcSap::RadioResourceConfigCommonSib const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::pdschConfigCommon [variable]
+    cls.add_instance_attribute('pdschConfigCommon', 'ns3::LteRrcSap::PdschConfigCommon', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::rachConfigCommon [variable]
     cls.add_instance_attribute('rachConfigCommon', 'ns3::LteRrcSap::RachConfigCommon', is_const=False)
     return
@@ -6582,6 +6774,11 @@
                    'ns3::Ptr< ns3::SpectrumValue >', 
                    [param('uint16_t', 'earfcn'), param('uint8_t', 'bandwidth'), param('double', 'powerTx'), param('std::vector< int >', 'activeRbs')], 
                    is_static=True)
+    ## lte-spectrum-value-helper.h (module 'lte'): static ns3::Ptr<ns3::SpectrumValue> ns3::LteSpectrumValueHelper::CreateTxPowerSpectralDensity(uint16_t earfcn, uint8_t bandwidth, double powerTx, std::map<int, double, std::less<int>, std::allocator<std::pair<int const, double> > > powerTxMap, std::vector<int, std::allocator<int> > activeRbs) [member function]
+    cls.add_method('CreateTxPowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('uint16_t', 'earfcn'), param('uint8_t', 'bandwidth'), param('double', 'powerTx'), param('std::map< int, double >', 'powerTxMap'), param('std::vector< int >', 'activeRbs')], 
+                   is_static=True)
     ## lte-spectrum-value-helper.h (module 'lte'): static double ns3::LteSpectrumValueHelper::GetCarrierFrequency(uint16_t earfcn) [member function]
     cls.add_method('GetCarrierFrequency', 
                    'double', 
@@ -6718,6 +6915,11 @@
     cls.add_constructor([])
     ## lte-ue-cphy-sap.h (module 'lte'): ns3::LteUeCphySapProvider::LteUeCphySapProvider(ns3::LteUeCphySapProvider const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteUeCphySapProvider const &', 'arg0')])
+    ## lte-ue-cphy-sap.h (module 'lte'): void ns3::LteUeCphySapProvider::ConfigureReferenceSignalPower(int8_t referenceSignalPower) [member function]
+    cls.add_method('ConfigureReferenceSignalPower', 
+                   'void', 
+                   [param('int8_t', 'referenceSignalPower')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-ue-cphy-sap.h (module 'lte'): void ns3::LteUeCphySapProvider::ConfigureUplink(uint16_t ulEarfcn, uint8_t ulBandwidth) [member function]
     cls.add_method('ConfigureUplink', 
                    'void', 
@@ -9979,6 +10181,18 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3LteChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteChunkProcessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter< ns3::LteChunkProcessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
 def register_Ns3SimpleRefCount__Ns3LteControlMessage_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteControlMessage__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -10003,18 +10217,6 @@
                    is_static=True)
     return
 
-def register_Ns3SimpleRefCount__Ns3LteSinrChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteSinrChunkProcessor__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter< ns3::LteSinrChunkProcessor > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
 def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -11003,10 +11205,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -11017,25 +11219,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -11152,20 +11354,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -11422,6 +11624,10 @@
     cls.add_method('SetImsi', 
                    'void', 
                    [param('uint64_t', 'imsi')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::UeManager::SetPdschConfigDedicated(ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('SetPdschConfigDedicated', 
+                   'void', 
+                   [param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')])
     ## lte-enb-rrc.h (module 'lte'): void ns3::UeManager::SetSource(uint16_t sourceCellId, uint16_t sourceX2apId) [member function]
     cls.add_method('SetSource', 
                    'void', 
@@ -13685,6 +13891,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -13700,6 +13911,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ff-mac-scheduler.h (module 'lte'): void ns3::FfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
     return
 
 def register_Ns3GammaRandomVariable_methods(root_module, cls):
@@ -14455,6 +14671,33 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3LteChunkProcessor_methods(root_module, cls):
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor::LteChunkProcessor(ns3::LteChunkProcessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteChunkProcessor const &', 'arg0')])
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor::LteChunkProcessor() [constructor]
+    cls.add_constructor([])
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::AddCallback(ns3::LteChunkProcessorCallback c) [member function]
+    cls.add_method('AddCallback', 
+                   'void', 
+                   [param('ns3::LteChunkProcessorCallback', 'c')], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::End() [member function]
+    cls.add_method('End', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::EvaluateChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
+    cls.add_method('EvaluateChunk', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::Start() [member function]
+    cls.add_method('Start', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3LteControlMessage_methods(root_module, cls):
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage::LteControlMessage(ns3::LteControlMessage const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteControlMessage const &', 'arg0')])
@@ -14552,8 +14795,12 @@
     cls.add_method('ConnectionRejectedTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
-    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionTimeout(uint16_t rnti) [member function]
-    cls.add_method('ConnectionTimeout', 
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionRequestTimeout(uint16_t rnti) [member function]
+    cls.add_method('ConnectionRequestTimeout', 
+                   'void', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionSetupTimeout(uint16_t rnti) [member function]
+    cls.add_method('ConnectionSetupTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
     ## lte-enb-rrc.h (module 'lte'): ns3::EpcX2SapUser * ns3::LteEnbRrc::GetEpcX2SapUser() [member function]
@@ -14576,6 +14823,10 @@
     cls.add_method('GetLteEnbRrcSapProvider', 
                    'ns3::LteEnbRrcSapProvider *', 
                    [])
+    ## lte-enb-rrc.h (module 'lte'): ns3::LteFfrRrcSapUser * ns3::LteEnbRrc::GetLteFfrRrcSapUser() [member function]
+    cls.add_method('GetLteFfrRrcSapUser', 
+                   'ns3::LteFfrRrcSapUser *', 
+                   [])
     ## lte-enb-rrc.h (module 'lte'): ns3::LteHandoverManagementSapUser * ns3::LteEnbRrc::GetLteHandoverManagementSapUser() [member function]
     cls.add_method('GetLteHandoverManagementSapUser', 
                    'ns3::LteHandoverManagementSapUser *', 
@@ -14606,6 +14857,11 @@
     cls.add_method('HandoverLeavingTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
+    ## lte-enb-rrc.h (module 'lte'): bool ns3::LteEnbRrc::HasUeManager(uint16_t rnti) const [member function]
+    cls.add_method('HasUeManager', 
+                   'bool', 
+                   [param('uint16_t', 'rnti')], 
+                   is_const=True)
     ## lte-enb-rrc.h (module 'lte'): bool ns3::LteEnbRrc::SendData(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('SendData', 
                    'bool', 
@@ -14646,6 +14902,10 @@
     cls.add_method('SetLteEnbRrcSapUser', 
                    'void', 
                    [param('ns3::LteEnbRrcSapUser *', 's')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider * s) [member function]
+    cls.add_method('SetLteFfrRrcSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapProvider *', 's')])
     ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteHandoverManagementSapProvider(ns3::LteHandoverManagementSapProvider * s) [member function]
     cls.add_method('SetLteHandoverManagementSapProvider', 
                    'void', 
@@ -14743,99 +15003,952 @@
                    [param('uint16_t', 'rnti'), param('ns3::LteUeRrcSapProvider *', 'p')])
     return
 
-def register_Ns3LteHandoverAlgorithm_methods(root_module, cls):
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm(ns3::LteHandoverAlgorithm const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHandoverAlgorithm const &', 'arg0')])
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm() [constructor]
+def register_Ns3LteFfrAlgorithm_methods(root_module, cls):
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm::LteFfrAlgorithm(ns3::LteFfrAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrAlgorithm const &', 'arg0')])
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm::LteFfrAlgorithm() [constructor]
     cls.add_constructor([])
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverManagementSapProvider * ns3::LteHandoverAlgorithm::GetLteHandoverManagementSapProvider() [member function]
-    cls.add_method('GetLteHandoverManagementSapProvider', 
-                   'ns3::LteHandoverManagementSapProvider *', 
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetDlBandwidth() const [member function]
+    cls.add_method('GetDlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetFrCellTypeId() const [member function]
+    cls.add_method('GetFrCellTypeId', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteHandoverAlgorithm::GetTypeId() [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrAlgorithm::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::SetLteHandoverManagementSapUser(ns3::LteHandoverManagementSapUser * s) [member function]
-    cls.add_method('SetLteHandoverManagementSapUser', 
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetUlBandwidth() const [member function]
+    cls.add_method('GetUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetDlBandwidth(uint8_t bw) [member function]
+    cls.add_method('SetDlBandwidth', 
                    'void', 
-                   [param('ns3::LteHandoverManagementSapUser *', 's')], 
+                   [param('uint8_t', 'bw')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetFrCellTypeId(uint8_t cellTypeId) [member function]
+    cls.add_method('SetFrCellTypeId', 
+                   'void', 
+                   [param('uint8_t', 'cellTypeId')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoDispose() [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetUlBandwidth(uint8_t bw) [member function]
+    cls.add_method('SetUlBandwidth', 
+                   'void', 
+                   [param('uint8_t', 'bw')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): bool ns3::LteFfrAlgorithm::DoIsDlRbgAvailableForUe(int rbId, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'rbId'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): bool ns3::LteFfrAlgorithm::DoIsUlRbgAvailableForUe(int rbId, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'rbId'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
     cls.add_method('DoReportUeMeas', 
                    'void', 
                    [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3LteHarqPhy_methods(root_module, cls):
-    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy(ns3::LteHarqPhy const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHarqPhy const &', 'arg0')])
-    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy() [constructor]
-    cls.add_constructor([])
-    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiDl(uint8_t harqProcId, uint8_t layer) [member function]
-    cls.add_method('GetAccumulatedMiDl', 
-                   'double', 
-                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
-    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiUl(uint16_t rnti) [member function]
-    cls.add_method('GetAccumulatedMiUl', 
-                   'double', 
-                   [param('uint16_t', 'rnti')])
-    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoDl(uint8_t harqProcId, uint8_t layer) [member function]
-    cls.add_method('GetHarqProcessInfoDl', 
-                   'ns3::HarqProcessInfoList_t', 
-                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
-    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoUl(uint16_t rnti, uint8_t harqProcId) [member function]
-    cls.add_method('GetHarqProcessInfoUl', 
-                   'ns3::HarqProcessInfoList_t', 
-                   [param('uint16_t', 'rnti'), param('uint8_t', 'harqProcId')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetDlHarqProcessStatus(uint8_t id) [member function]
-    cls.add_method('ResetDlHarqProcessStatus', 
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
                    'void', 
-                   [param('uint8_t', 'id')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetUlHarqProcessStatus(uint16_t rnti, uint8_t id) [member function]
-    cls.add_method('ResetUlHarqProcessStatus', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
                    'void', 
-                   [param('uint16_t', 'rnti'), param('uint8_t', 'id')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::SubframeIndication(uint32_t frameNo, uint32_t subframeNo) [member function]
-    cls.add_method('SubframeIndication', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoSetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth) [member function]
+    cls.add_method('DoSetBandwidth', 
                    'void', 
-                   [param('uint32_t', 'frameNo'), param('uint32_t', 'subframeNo')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateDlHarqProcessStatus(uint8_t id, uint8_t layer, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
-    cls.add_method('UpdateDlHarqProcessStatus', 
+                   [param('uint8_t', 'ulBandwidth'), param('uint8_t', 'dlBandwidth')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoSetCellId(uint16_t cellId) [member function]
+    cls.add_method('DoSetCellId', 
                    'void', 
-                   [param('uint8_t', 'id'), param('uint8_t', 'layer'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateUlHarqProcessStatus(uint16_t rnti, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
-    cls.add_method('UpdateUlHarqProcessStatus', 
+                   [param('uint16_t', 'cellId')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): int ns3::LteFfrAlgorithm::GetRbgSize(int dlbandwidth) [member function]
+    cls.add_method('GetRbgSize', 
+                   'int', 
+                   [param('int', 'dlbandwidth')], 
+                   visibility='protected')
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
                    'void', 
-                   [param('uint16_t', 'rnti'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3LteHelper_methods(root_module, cls):
-    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper(ns3::LteHelper const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHelper const &', 'arg0')])
-    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper() [constructor]
+def register_Ns3LteFfrDistributedAlgorithm_methods(root_module, cls):
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm::LteFfrDistributedAlgorithm(ns3::LteFfrDistributedAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrDistributedAlgorithm const &', 'arg0')])
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm::LteFfrDistributedAlgorithm() [constructor]
     cls.add_constructor([])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer) [member function]
-    cls.add_method('ActivateDataRadioBearer', 
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrDistributedAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrDistributedAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrDistributedAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
                    'void', 
-                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer) [member function]
-    cls.add_method('ActivateDataRadioBearer', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
-    cls.add_method('ActivateDedicatedEpsBearer', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
                    'void', 
-                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrDistributedAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrDistributedAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): uint8_t ns3::LteFfrDistributedAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): uint8_t ns3::LteFfrDistributedAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): bool ns3::LteFfrDistributedAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): bool ns3::LteFfrDistributedAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFfrEnhancedAlgorithm_methods(root_module, cls):
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm::LteFfrEnhancedAlgorithm(ns3::LteFfrEnhancedAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrEnhancedAlgorithm const &', 'arg0')])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm::LteFfrEnhancedAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrEnhancedAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrEnhancedAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrEnhancedAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrEnhancedAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrEnhancedAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): uint8_t ns3::LteFfrEnhancedAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): uint8_t ns3::LteFfrEnhancedAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): bool ns3::LteFfrEnhancedAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): bool ns3::LteFfrEnhancedAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFfrSoftAlgorithm_methods(root_module, cls):
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm::LteFfrSoftAlgorithm(ns3::LteFfrSoftAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSoftAlgorithm const &', 'arg0')])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm::LteFfrSoftAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrSoftAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrSoftAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrSoftAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSoftAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSoftAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFfrSoftAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFfrSoftAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): bool ns3::LteFfrSoftAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): bool ns3::LteFfrSoftAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrHardAlgorithm_methods(root_module, cls):
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm::LteFrHardAlgorithm(ns3::LteFrHardAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrHardAlgorithm const &', 'arg0')])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm::LteFrHardAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrHardAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrHardAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrHardAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrHardAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrHardAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): uint8_t ns3::LteFrHardAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): uint8_t ns3::LteFrHardAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): bool ns3::LteFrHardAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): bool ns3::LteFrHardAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrNoOpAlgorithm_methods(root_module, cls):
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm::LteFrNoOpAlgorithm(ns3::LteFrNoOpAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrNoOpAlgorithm const &', 'arg0')])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm::LteFrNoOpAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrNoOpAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrNoOpAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrNoOpAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrNoOpAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrNoOpAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): uint8_t ns3::LteFrNoOpAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): uint8_t ns3::LteFrNoOpAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): bool ns3::LteFrNoOpAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): bool ns3::LteFrNoOpAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrSoftAlgorithm_methods(root_module, cls):
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm::LteFrSoftAlgorithm(ns3::LteFrSoftAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrSoftAlgorithm const &', 'arg0')])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm::LteFrSoftAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrSoftAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrSoftAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrSoftAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrSoftAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrSoftAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFrSoftAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFrSoftAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): bool ns3::LteFrSoftAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): bool ns3::LteFrSoftAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrStrictAlgorithm_methods(root_module, cls):
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm::LteFrStrictAlgorithm(ns3::LteFrStrictAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrStrictAlgorithm const &', 'arg0')])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm::LteFrStrictAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrStrictAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrStrictAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrStrictAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrStrictAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrStrictAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): uint8_t ns3::LteFrStrictAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): uint8_t ns3::LteFrStrictAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): bool ns3::LteFrStrictAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): bool ns3::LteFrStrictAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteHandoverAlgorithm_methods(root_module, cls):
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm(ns3::LteHandoverAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHandoverAlgorithm const &', 'arg0')])
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverManagementSapProvider * ns3::LteHandoverAlgorithm::GetLteHandoverManagementSapProvider() [member function]
+    cls.add_method('GetLteHandoverManagementSapProvider', 
+                   'ns3::LteHandoverManagementSapProvider *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteHandoverAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::SetLteHandoverManagementSapUser(ns3::LteHandoverManagementSapUser * s) [member function]
+    cls.add_method('SetLteHandoverManagementSapUser', 
+                   'void', 
+                   [param('ns3::LteHandoverManagementSapUser *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteHarqPhy_methods(root_module, cls):
+    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy(ns3::LteHarqPhy const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHarqPhy const &', 'arg0')])
+    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy() [constructor]
+    cls.add_constructor([])
+    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiDl(uint8_t harqProcId, uint8_t layer) [member function]
+    cls.add_method('GetAccumulatedMiDl', 
+                   'double', 
+                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
+    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiUl(uint16_t rnti) [member function]
+    cls.add_method('GetAccumulatedMiUl', 
+                   'double', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoDl(uint8_t harqProcId, uint8_t layer) [member function]
+    cls.add_method('GetHarqProcessInfoDl', 
+                   'ns3::HarqProcessInfoList_t', 
+                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
+    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoUl(uint16_t rnti, uint8_t harqProcId) [member function]
+    cls.add_method('GetHarqProcessInfoUl', 
+                   'ns3::HarqProcessInfoList_t', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'harqProcId')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetDlHarqProcessStatus(uint8_t id) [member function]
+    cls.add_method('ResetDlHarqProcessStatus', 
+                   'void', 
+                   [param('uint8_t', 'id')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetUlHarqProcessStatus(uint16_t rnti, uint8_t id) [member function]
+    cls.add_method('ResetUlHarqProcessStatus', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'id')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::SubframeIndication(uint32_t frameNo, uint32_t subframeNo) [member function]
+    cls.add_method('SubframeIndication', 
+                   'void', 
+                   [param('uint32_t', 'frameNo'), param('uint32_t', 'subframeNo')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateDlHarqProcessStatus(uint8_t id, uint8_t layer, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
+    cls.add_method('UpdateDlHarqProcessStatus', 
+                   'void', 
+                   [param('uint8_t', 'id'), param('uint8_t', 'layer'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateUlHarqProcessStatus(uint16_t rnti, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
+    cls.add_method('UpdateUlHarqProcessStatus', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+    return
+
+def register_Ns3LteHelper_methods(root_module, cls):
+    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper(ns3::LteHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHelper const &', 'arg0')])
+    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper() [constructor]
+    cls.add_constructor([])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateDataRadioBearer', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateDataRadioBearer', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
+    cls.add_method('ActivateDedicatedEpsBearer', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
     cls.add_method('ActivateDedicatedEpsBearer', 
                    'void', 
                    [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
@@ -14936,6 +16049,11 @@
     cls.add_method('EnableUlTxPhyTraces', 
                    'void', 
                    [])
+    ## lte-helper.h (module 'lte'): std::string ns3::LteHelper::GetFfrAlgorithmType() const [member function]
+    cls.add_method('GetFfrAlgorithmType', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## lte-helper.h (module 'lte'): std::string ns3::LteHelper::GetHandoverAlgorithmType() const [member function]
     cls.add_method('GetHandoverAlgorithmType', 
                    'std::string', 
@@ -14995,6 +16113,14 @@
     cls.add_method('SetFadingModelAttribute', 
                    'void', 
                    [param('std::string', 'n'), param('ns3::AttributeValue const &', 'v')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetFfrAlgorithmAttribute(std::string n, ns3::AttributeValue const & v) [member function]
+    cls.add_method('SetFfrAlgorithmAttribute', 
+                   'void', 
+                   [param('std::string', 'n'), param('ns3::AttributeValue const &', 'v')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetFfrAlgorithmType(std::string type) [member function]
+    cls.add_method('SetFfrAlgorithmType', 
+                   'void', 
+                   [param('std::string', 'type')])
     ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetHandoverAlgorithmAttribute(std::string n, ns3::AttributeValue const & v) [member function]
     cls.add_method('SetHandoverAlgorithmAttribute', 
                    'void', 
@@ -15076,22 +16202,22 @@
     cls.add_constructor([param('ns3::LteInterference const &', 'arg0')])
     ## lte-interference.h (module 'lte'): ns3::LteInterference::LteInterference() [constructor]
     cls.add_constructor([])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddInterferenceChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddInterferenceChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddRsPowerChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSignal(ns3::Ptr<ns3::SpectrumValue const> spd, ns3::Time const duration) [member function]
     cls.add_method('AddSignal', 
                    'void', 
                    [param('ns3::Ptr< ns3::SpectrumValue const >', 'spd'), param('ns3::Time const', 'duration')])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-interference.h (module 'lte'): void ns3::LteInterference::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -15551,28 +16677,6 @@
     cls.add_instance_attribute('m_srbIdentity', 'uint8_t', is_const=False)
     return
 
-def register_Ns3LteSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor::LteSinrChunkProcessor() [constructor]
-    cls.add_constructor([])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor::LteSinrChunkProcessor(ns3::LteSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3LteSpectrumPhy_methods(root_module, cls):
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy::LteSpectrumPhy() [constructor]
     cls.add_constructor([])
@@ -15706,26 +16810,30 @@
     cls.add_method('SetCellId', 
                    'void', 
                    [param('uint16_t', 'cellId')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddRsPowerChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
+    cls.add_method('AddDataPowerChunkProcessor', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddDataSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceCtrlChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceCtrlChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceCtrlChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceDataChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceDataChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceDataChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddCtrlSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddCtrlSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddCtrlSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddExpectedTb(uint16_t rnti, uint8_t ndi, uint16_t size, uint8_t mcs, std::vector<int, std::allocator<int> > map, uint8_t layer, uint8_t harqId, uint8_t rv, bool downlink) [member function]
     cls.add_method('AddExpectedTb', 
                    'void', 
@@ -15985,6 +17093,11 @@
                    'void', 
                    [param('ns3::SpectrumValue const &', 'sinr')], 
                    is_virtual=True)
+    ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::GenerateMixedCqiReport(ns3::SpectrumValue const & sinr) [member function]
+    cls.add_method('GenerateMixedCqiReport', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'sinr')], 
+                   is_virtual=True)
     ## lte-ue-phy.h (module 'lte'): ns3::Ptr<ns3::LteSpectrumPhy> ns3::LteUePhy::GetDlSpectrumPhy() const [member function]
     cls.add_method('GetDlSpectrumPhy', 
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
@@ -16036,6 +17149,11 @@
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
                    [], 
                    is_const=True)
+    ## lte-ue-phy.h (module 'lte'): ns3::Ptr<ns3::LteUePowerControl> ns3::LteUePhy::GetUplinkPowerControl() const [member function]
+    cls.add_method('GetUplinkPowerControl', 
+                   'ns3::Ptr< ns3::LteUePowerControl >', 
+                   [], 
+                   is_const=True)
     ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::PhyPduReceived(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('PhyPduReceived', 
                    'void', 
@@ -16055,6 +17173,11 @@
                    'void', 
                    [param('uint16_t', 'cellId'), param('ns3::Ptr< ns3::SpectrumValue >', 'p')], 
                    is_virtual=True)
+    ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::ReportDataInterference(ns3::SpectrumValue const & interf) [member function]
+    cls.add_method('ReportDataInterference', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'interf')], 
+                   is_virtual=True)
     ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::ReportInterference(ns3::SpectrumValue const & interf) [member function]
     cls.add_method('ReportInterference', 
                    'void', 
@@ -16118,6 +17241,96 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3LteUePowerControl_methods(root_module, cls):
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl::LteUePowerControl(ns3::LteUePowerControl const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteUePowerControl const &', 'arg0')])
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl::LteUePowerControl() [constructor]
+    cls.add_constructor([])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculatePucchTxPower() [member function]
+    cls.add_method('CalculatePucchTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculatePuschTxPower() [member function]
+    cls.add_method('CalculatePuschTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculateSrsTxPower() [member function]
+    cls.add_method('CalculateSrsTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::ConfigureReferenceSignalPower(int8_t referenceSignalPower) [member function]
+    cls.add_method('ConfigureReferenceSignalPower', 
+                   'void', 
+                   [param('int8_t', 'referenceSignalPower')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPcmax() [member function]
+    cls.add_method('GetPcmax', 
+                   'double', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPucchTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetPucchTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPuschTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetPuschTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetSrsTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetSrsTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): static ns3::TypeId ns3::LteUePowerControl::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::ReportTpc(uint8_t tpc) [member function]
+    cls.add_method('ReportTpc', 
+                   'void', 
+                   [param('uint8_t', 'tpc')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetAlpha(double value) [member function]
+    cls.add_method('SetAlpha', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetCellId(uint16_t cellId) [member function]
+    cls.add_method('SetCellId', 
+                   'void', 
+                   [param('uint16_t', 'cellId')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPcmax(double value) [member function]
+    cls.add_method('SetPcmax', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPoNominalPusch(int16_t value) [member function]
+    cls.add_method('SetPoNominalPusch', 
+                   'void', 
+                   [param('int16_t', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPoUePusch(int16_t value) [member function]
+    cls.add_method('SetPoUePusch', 
+                   'void', 
+                   [param('int16_t', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetRnti(uint16_t rnti) [member function]
+    cls.add_method('SetRnti', 
+                   'void', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetRsrp(double value) [member function]
+    cls.add_method('SetRsrp', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetTxPower(double value) [member function]
+    cls.add_method('SetTxPower', 
+                   'void', 
+                   [param('double', 'value')])
+    return
+
 def register_Ns3LteUeRrc_methods(root_module, cls):
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::LteUeRrc(ns3::LteUeRrc const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteUeRrc const &', 'arg0')])
@@ -17078,6 +18291,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## pf-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::PfFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## pf-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::PfFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17093,6 +18311,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## pf-ff-mac-scheduler.h (module 'lte'): void ns3::PfFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## pf-ff-mac-scheduler.h (module 'lte'): void ns3::PfFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -17371,6 +18594,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## pss-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::PssFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## pss-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::PssFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17386,6 +18614,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## pss-ff-mac-scheduler.h (module 'lte'): void ns3::PssFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## pss-ff-mac-scheduler.h (module 'lte'): void ns3::PssFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -17663,6 +18896,14 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
+    ## rem-spectrum-phy.h (module 'lte'): void ns3::RemSpectrumPhy::SetUseDataChannel(bool value) [member function]
+    cls.add_method('SetUseDataChannel', 
+                   'void', 
+                   [param('bool', 'value')])
+    ## rem-spectrum-phy.h (module 'lte'): void ns3::RemSpectrumPhy::SetRbId(int32_t rbId) [member function]
+    cls.add_method('SetRbId', 
+                   'void', 
+                   [param('int32_t', 'rbId')])
     return
 
 def register_Ns3RrFfMacScheduler_methods(root_module, cls):
@@ -17685,6 +18926,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## rr-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::RrFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## rr-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::RrFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17700,6 +18946,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## rr-ff-mac-scheduler.h (module 'lte'): void ns3::RrFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## rr-ff-mac-scheduler.h (module 'lte'): void ns3::RrFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18149,6 +19400,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdbet-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdBetFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdbet-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdBetFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18164,6 +19420,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdbet-ff-mac-scheduler.h (module 'lte'): void ns3::TdBetFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdbet-ff-mac-scheduler.h (module 'lte'): void ns3::TdBetFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18190,6 +19451,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdmt-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdMtFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdmt-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdMtFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18205,6 +19471,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdmt-ff-mac-scheduler.h (module 'lte'): void ns3::TdMtFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdmt-ff-mac-scheduler.h (module 'lte'): void ns3::TdMtFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18231,6 +19502,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdtbfq-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdTbfqFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdtbfq-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdTbfqFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18246,6 +19522,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::TdTbfqFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::TdTbfqFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18305,6 +19586,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tta-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TtaFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tta-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TtaFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18320,6 +19606,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tta-ff-mac-scheduler.h (module 'lte'): void ns3::TtaFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tta-ff-mac-scheduler.h (module 'lte'): void ns3::TtaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18800,6 +20091,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::CqaFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## cqa-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::CqaFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18815,6 +20111,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18866,6 +20167,63 @@
                    [param('ns3::DlInfoListElement_s', 'm')])
     return
 
+def register_Ns3EmuEpcHelper_methods(root_module, cls):
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper(ns3::EmuEpcHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EmuEpcHelper const &', 'arg0')])
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper() [constructor]
+    cls.add_constructor([])
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateEpsBearer', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddEnb(ns3::Ptr<ns3::Node> enbNode, ns3::Ptr<ns3::NetDevice> lteEnbNetDevice, uint16_t cellId) [member function]
+    cls.add_method('AddEnb', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'enbNode'), param('ns3::Ptr< ns3::NetDevice >', 'lteEnbNetDevice'), param('uint16_t', 'cellId')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddUe(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi) [member function]
+    cls.add_method('AddUe', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddX2Interface(ns3::Ptr<ns3::Node> enbNode1, ns3::Ptr<ns3::Node> enbNode2) [member function]
+    cls.add_method('AddX2Interface', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'enbNode1'), param('ns3::Ptr< ns3::Node >', 'enbNode2')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ipv4InterfaceContainer ns3::EmuEpcHelper::AssignUeIpv4Address(ns3::NetDeviceContainer ueDevices) [member function]
+    cls.add_method('AssignUeIpv4Address', 
+                   'ns3::Ipv4InterfaceContainer', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ptr<ns3::Node> ns3::EmuEpcHelper::GetPgwNode() [member function]
+    cls.add_method('GetPgwNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): static ns3::TypeId ns3::EmuEpcHelper::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ipv4Address ns3::EmuEpcHelper::GetUeDefaultGatewayAddress() [member function]
+    cls.add_method('GetUeDefaultGatewayAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3FdBetFfMacScheduler_methods(root_module, cls):
     ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::FdBetFfMacScheduler::FdBetFfMacScheduler(ns3::FdBetFfMacScheduler const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::FdBetFfMacScheduler const &', 'arg0')])
@@ -18886,6 +20244,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdBetFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdbet-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdBetFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18901,6 +20264,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdbet-ff-mac-scheduler.h (module 'lte'): void ns3::FdBetFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdbet-ff-mac-scheduler.h (module 'lte'): void ns3::FdBetFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18927,6 +20295,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdmt-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdMtFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdmt-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdMtFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18942,6 +20315,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdmt-ff-mac-scheduler.h (module 'lte'): void ns3::FdMtFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdmt-ff-mac-scheduler.h (module 'lte'): void ns3::FdMtFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18968,6 +20346,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdtbfq-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdTbfqFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdtbfq-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdTbfqFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18983,6 +20366,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::FdTbfqFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::FdTbfqFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -19025,30 +20413,6 @@
                    [param('ns3::LteRrcSap::HandoverPreparationInfo', 'msg')])
     return
 
-def register_Ns3LteCtrlSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::LteCtrlSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteCtrlSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::Ptr<ns3::LtePhy> p, ns3::Ptr<ns3::LteSpectrumPhy> s) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p'), param('ns3::Ptr< ns3::LteSpectrumPhy >', 's')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteDataRadioBearerInfo_methods(root_module, cls):
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteDataRadioBearerInfo::LteDataRadioBearerInfo() [constructor]
     cls.add_constructor([])
@@ -19077,30 +20441,6 @@
     cls.add_instance_attribute('m_transportLayerAddress', 'ns3::Ipv4Address', is_const=False)
     return
 
-def register_Ns3LteDataSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::LteDataSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteDataSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::Ptr<ns3::LteSpectrumPhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LteSpectrumPhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::Ptr<ns3::LteSpectrumPhy> s, ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LteSpectrumPhy >', 's'), param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteEnbPhy_methods(root_module, cls):
     ## lte-enb-phy.h (module 'lte'): ns3::LteEnbPhy::LteEnbPhy(ns3::LteEnbPhy const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteEnbPhy const &', 'arg0')])
@@ -19125,6 +20465,11 @@
                    'ns3::Ptr< ns3::SpectrumValue >', 
                    [], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): ns3::Ptr<ns3::SpectrumValue> ns3::LteEnbPhy::CreateTxPowerSpectralDensityWithPowerAllocation() [member function]
+    cls.add_method('CreateTxPowerSpectralDensityWithPowerAllocation', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [], 
+                   is_virtual=True)
     ## lte-enb-phy.h (module 'lte'): std::list<ns3::UlDciLteControlMessage,std::allocator<ns3::UlDciLteControlMessage> > ns3::LteEnbPhy::DequeueUlDci() [member function]
     cls.add_method('DequeueUlDci', 
                    'std::list< ns3::UlDciLteControlMessage >', 
@@ -19134,6 +20479,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): int8_t ns3::LteEnbPhy::DoGetReferenceSignalPower() const [member function]
+    cls.add_method('DoGetReferenceSignalPower', 
+                   'int8_t', 
+                   [], 
+                   is_const=True)
     ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::DoInitialize() [member function]
     cls.add_method('DoInitialize', 
                    'void', 
@@ -19157,6 +20507,10 @@
                    'void', 
                    [param('ns3::SpectrumValue const &', 'sinr')], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::GeneratePowerAllocationMap(uint16_t rnti, int rbId) [member function]
+    cls.add_method('GeneratePowerAllocationMap', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('int', 'rbId')])
     ## lte-enb-phy.h (module 'lte'): ns3::Ptr<ns3::LteSpectrumPhy> ns3::LteEnbPhy::GetDlSpectrumPhy() const [member function]
     cls.add_method('GetDlSpectrumPhy', 
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
@@ -19244,6 +20598,10 @@
     cls.add_method('SetDownlinkSubChannels', 
                    'void', 
                    [param('std::vector< int >', 'mask')])
+    ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::SetDownlinkSubChannelsWithPowerAllocation(std::vector<int, std::allocator<int> > mask) [member function]
+    cls.add_method('SetDownlinkSubChannelsWithPowerAllocation', 
+                   'void', 
+                   [param('std::vector< int >', 'mask')])
     ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::SetHarqPhyModule(ns3::Ptr<ns3::LteHarqPhy> harq) [member function]
     cls.add_method('SetHarqPhyModule', 
                    'void', 
@@ -19283,28 +20641,6 @@
                    visibility='private', is_virtual=True)
     return
 
-def register_Ns3LteInterferencePowerChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor::LteInterferencePowerChunkProcessor(ns3::LteInterferencePowerChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteInterferencePowerChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor::LteInterferencePowerChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteNetDevice_methods(root_module, cls):
     ## lte-net-device.h (module 'lte'): static ns3::TypeId ns3::LteNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -19439,28 +20775,6 @@
                    [param('ns3::Ptr< ns3::Packet >', 'p')])
     return
 
-def register_Ns3LteRsReceivedPowerChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor::LteRsReceivedPowerChunkProcessor(ns3::LteRsReceivedPowerChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteRsReceivedPowerChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor::LteRsReceivedPowerChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteUeNetDevice_methods(root_module, cls):
     ## lte-ue-net-device.h (module 'lte'): static ns3::TypeId ns3::LteUeNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
diff -Naur ns-3.20/src/lte/bindings/modulegen__gcc_LP64.py ns-3.21/src/lte/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/lte/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -354,6 +354,14 @@
     module.add_class('LteEnbPhySapUser', allow_subclassing=True)
     ## lte-common.h (module 'lte'): ns3::LteFfConverter [class]
     module.add_class('LteFfConverter')
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider [class]
+    module.add_class('LteFfrRrcSapProvider', allow_subclassing=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser [class]
+    module.add_class('LteFfrRrcSapUser', allow_subclassing=True)
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider [class]
+    module.add_class('LteFfrSapProvider', allow_subclassing=True)
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser [class]
+    module.add_class('LteFfrSapUser')
     ## lte-common.h (module 'lte'): ns3::LteFlowId_t [struct]
     module.add_class('LteFlowId_t')
     ## lte-global-pathloss-database.h (module 'lte'): ns3::LteGlobalPathlossDatabase [class]
@@ -442,6 +450,12 @@
     module.add_class('MobilityControlInfo', outer_class=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MobilityStateParameters [struct]
     module.add_class('MobilityStateParameters', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon [struct]
+    module.add_class('PdschConfigCommon', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated [struct]
+    module.add_class('PdschConfigDedicated', outer_class=root_module['ns3::LteRrcSap'])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated [enumeration]
+    module.add_enum('', ['dB_6', 'dB_4dot77', 'dB_3', 'dB_1dot77', 'dB0', 'dB1', 'dB2', 'dB3'], outer_class=root_module['ns3::LteRrcSap::PdschConfigDedicated'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysCellIdRange [struct]
     module.add_class('PhysCellIdRange', outer_class=root_module['ns3::LteRrcSap'])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated [struct]
@@ -806,12 +820,12 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4MulticastRoute', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4MulticastRoute>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4Route', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4Route>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteChunkProcessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteChunkProcessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteControlMessage', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteControlMessage>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteHarqPhy, ns3::empty, ns3::DefaultDeleter<ns3::LteHarqPhy> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteHarqPhy', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteHarqPhy>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::LteSinrChunkProcessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::LteSinrChunkProcessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
@@ -1026,6 +1040,8 @@
     module.add_enum('AmcModel', ['PiroEW2010', 'MiErrorModel'], outer_class=root_module['ns3::LteAmc'])
     ## lte-anr.h (module 'lte'): ns3::LteAnr [class]
     module.add_class('LteAnr', parent=root_module['ns3::Object'])
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor [class]
+    module.add_class('LteChunkProcessor', parent=root_module['ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >'])
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage [class]
     module.add_class('LteControlMessage', parent=root_module['ns3::SimpleRefCount< ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >'])
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage::MessageType [enumeration]
@@ -1040,6 +1056,22 @@
     module.add_class('LteEnbRrcProtocolIdeal', parent=root_module['ns3::Object'])
     ## lte-rrc-protocol-real.h (module 'lte'): ns3::LteEnbRrcProtocolReal [class]
     module.add_class('LteEnbRrcProtocolReal', parent=root_module['ns3::Object'])
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm [class]
+    module.add_class('LteFfrAlgorithm', parent=root_module['ns3::Object'])
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm [class]
+    module.add_class('LteFfrDistributedAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm [class]
+    module.add_class('LteFfrEnhancedAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm [class]
+    module.add_class('LteFfrSoftAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm [class]
+    module.add_class('LteFrHardAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm [class]
+    module.add_class('LteFrNoOpAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm [class]
+    module.add_class('LteFrSoftAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm [class]
+    module.add_class('LteFrStrictAlgorithm', parent=root_module['ns3::LteFfrAlgorithm'])
     ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm [class]
     module.add_class('LteHandoverAlgorithm', parent=root_module['ns3::Object'])
     ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy [class]
@@ -1072,8 +1104,6 @@
     module.add_class('LteRlcUm', parent=root_module['ns3::LteRlc'])
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteSignalingRadioBearerInfo [class]
     module.add_class('LteSignalingRadioBearerInfo', parent=root_module['ns3::LteRadioBearerInfo'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor [class]
-    module.add_class('LteSinrChunkProcessor', parent=root_module['ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >'])
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy [class]
     module.add_class('LteSpectrumPhy', parent=root_module['ns3::SpectrumPhy'])
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy::State [enumeration]
@@ -1094,6 +1124,8 @@
     module.add_class('LteUePhy', parent=root_module['ns3::LtePhy'])
     ## lte-ue-phy.h (module 'lte'): ns3::LteUePhy::State [enumeration]
     module.add_enum('State', ['CELL_SEARCH', 'SYNCHRONIZED', 'NUM_STATES'], outer_class=root_module['ns3::LteUePhy'])
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl [class]
+    module.add_class('LteUePowerControl', parent=root_module['ns3::Object'])
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc [class]
     module.add_class('LteUeRrc', parent=root_module['ns3::Object'])
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::State [enumeration]
@@ -1226,6 +1258,8 @@
     module.add_class('DlDciLteControlMessage', parent=root_module['ns3::LteControlMessage'])
     ## lte-control-messages.h (module 'lte'): ns3::DlHarqFeedbackLteControlMessage [class]
     module.add_class('DlHarqFeedbackLteControlMessage', parent=root_module['ns3::LteControlMessage'])
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper [class]
+    module.add_class('EmuEpcHelper', parent=root_module['ns3::EpcHelper'])
     ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::FdBetFfMacScheduler [class]
     module.add_class('FdBetFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## fdmt-ff-mac-scheduler.h (module 'lte'): ns3::FdMtFfMacScheduler [class]
@@ -1234,20 +1268,12 @@
     module.add_class('FdTbfqFfMacScheduler', parent=root_module['ns3::FfMacScheduler'])
     ## lte-rrc-header.h (module 'lte'): ns3::HandoverPreparationInfoHeader [class]
     module.add_class('HandoverPreparationInfoHeader', parent=root_module['ns3::RrcAsn1Header'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor [class]
-    module.add_class('LteCtrlSinrChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteDataRadioBearerInfo [class]
     module.add_class('LteDataRadioBearerInfo', parent=root_module['ns3::LteRadioBearerInfo'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor [class]
-    module.add_class('LteDataSinrChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-enb-phy.h (module 'lte'): ns3::LteEnbPhy [class]
     module.add_class('LteEnbPhy', parent=root_module['ns3::LtePhy'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor [class]
-    module.add_class('LteInterferencePowerChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-net-device.h (module 'lte'): ns3::LteNetDevice [class]
     module.add_class('LteNetDevice', parent=root_module['ns3::NetDevice'])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor [class]
-    module.add_class('LteRsReceivedPowerChunkProcessor', parent=root_module['ns3::LteSinrChunkProcessor'])
     ## lte-ue-net-device.h (module 'lte'): ns3::LteUeNetDevice [class]
     module.add_class('LteUeNetDevice', parent=root_module['ns3::LteNetDevice'])
     ## lte-rrc-header.h (module 'lte'): ns3::MeasurementReportHeader [class]
@@ -1311,6 +1337,7 @@
     module.add_container('std::vector< ns3::BuildBroadcastListElement_s >', 'ns3::BuildBroadcastListElement_s', container_type=u'vector')
     module.add_container('std::vector< ns3::UlDciListElement_s >', 'ns3::UlDciListElement_s', container_type=u'vector')
     module.add_container('std::vector< ns3::PhichListElement_s >', 'ns3::PhichListElement_s', container_type=u'vector')
+    module.add_container('std::map< unsigned short, std::vector< double > >', ('short unsigned int', 'std::vector< double >'), container_type=u'map')
     module.add_container('std::vector< int >', 'int', container_type=u'vector')
     module.add_container('ns3::HarqProcessInfoList_t', 'ns3::HarqProcessInfoElement_t', container_type=u'vector')
     module.add_container('std::list< ns3::LteRrcSap::SrbToAddMod >', 'ns3::LteRrcSap::SrbToAddMod', container_type=u'list')
@@ -1323,6 +1350,7 @@
     module.add_container('std::list< ns3::LteRrcSap::MeasIdToAddMod >', 'ns3::LteRrcSap::MeasIdToAddMod', container_type=u'list')
     module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
     module.add_container('std::list< ns3::LteRrcSap::MeasResultEutra >', 'ns3::LteRrcSap::MeasResultEutra', container_type=u'list')
+    module.add_container('std::map< int, double >', ('int', 'double'), container_type=u'map')
     module.add_container('std::vector< ns3::LteUeCphySapUser::UeMeasurementsElement >', 'ns3::LteUeCphySapUser::UeMeasurementsElement', container_type=u'vector')
     module.add_container('std::vector< ns3::HigherLayerSelected_s >', 'ns3::HigherLayerSelected_s', container_type=u'vector')
     module.add_container('std::vector< ns3::SiMessageListElement_s >', 'ns3::SiMessageListElement_s', container_type=u'vector')
@@ -1341,6 +1369,9 @@
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >', u'ns3::DlHarqRlcPduListBuffer_t')
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >*', u'ns3::DlHarqRlcPduListBuffer_t*')
     typehandlers.add_type_alias(u'std::vector< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > >, std::allocator< std::vector< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > >, std::allocator< std::vector< ns3::RlcPduListElement_s, std::allocator< ns3::RlcPduListElement_s > > > > > >&', u'ns3::DlHarqRlcPduListBuffer_t&')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
+    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxPssCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxPssCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, unsigned short, ns3::Ptr< ns3::SpectrumValue >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxPssCallback&')
@@ -1359,9 +1390,6 @@
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxDataEndErrorCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxDataEndErrorCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxDataEndErrorCallback&')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >', u'ns3::HarqProcessInfoList_t')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >*', u'ns3::HarqProcessInfoList_t*')
-    typehandlers.add_type_alias(u'std::vector< ns3::HarqProcessInfoElement_t, std::allocator< ns3::HarqProcessInfoElement_t > >&', u'ns3::HarqProcessInfoList_t&')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LtePhyRxCtrlEndErrorCallback')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LtePhyRxCtrlEndErrorCallback*')
     typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LtePhyRxCtrlEndErrorCallback&')
@@ -1421,6 +1449,9 @@
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >', u'ns3::DlHarqProcessesDciBuffer_t')
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >*', u'ns3::DlHarqProcessesDciBuffer_t*')
     typehandlers.add_type_alias(u'std::vector< ns3::DlDciListElement_s, std::allocator< ns3::DlDciListElement_s > >&', u'ns3::DlHarqProcessesDciBuffer_t&')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::LteChunkProcessorCallback')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::LteChunkProcessorCallback*')
+    typehandlers.add_type_alias(u'ns3::Callback< void, ns3::SpectrumValue const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::LteChunkProcessorCallback&')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
     typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
@@ -1653,6 +1684,10 @@
     register_Ns3LteEnbPhySapProvider_methods(root_module, root_module['ns3::LteEnbPhySapProvider'])
     register_Ns3LteEnbPhySapUser_methods(root_module, root_module['ns3::LteEnbPhySapUser'])
     register_Ns3LteFfConverter_methods(root_module, root_module['ns3::LteFfConverter'])
+    register_Ns3LteFfrRrcSapProvider_methods(root_module, root_module['ns3::LteFfrRrcSapProvider'])
+    register_Ns3LteFfrRrcSapUser_methods(root_module, root_module['ns3::LteFfrRrcSapUser'])
+    register_Ns3LteFfrSapProvider_methods(root_module, root_module['ns3::LteFfrSapProvider'])
+    register_Ns3LteFfrSapUser_methods(root_module, root_module['ns3::LteFfrSapUser'])
     register_Ns3LteFlowId_t_methods(root_module, root_module['ns3::LteFlowId_t'])
     register_Ns3LteGlobalPathlossDatabase_methods(root_module, root_module['ns3::LteGlobalPathlossDatabase'])
     register_Ns3LteHandoverManagementSapProvider_methods(root_module, root_module['ns3::LteHandoverManagementSapProvider'])
@@ -1694,6 +1729,8 @@
     register_Ns3LteRrcSapMeasurementReport_methods(root_module, root_module['ns3::LteRrcSap::MeasurementReport'])
     register_Ns3LteRrcSapMobilityControlInfo_methods(root_module, root_module['ns3::LteRrcSap::MobilityControlInfo'])
     register_Ns3LteRrcSapMobilityStateParameters_methods(root_module, root_module['ns3::LteRrcSap::MobilityStateParameters'])
+    register_Ns3LteRrcSapPdschConfigCommon_methods(root_module, root_module['ns3::LteRrcSap::PdschConfigCommon'])
+    register_Ns3LteRrcSapPdschConfigDedicated_methods(root_module, root_module['ns3::LteRrcSap::PdschConfigDedicated'])
     register_Ns3LteRrcSapPhysCellIdRange_methods(root_module, root_module['ns3::LteRrcSap::PhysCellIdRange'])
     register_Ns3LteRrcSapPhysicalConfigDedicated_methods(root_module, root_module['ns3::LteRrcSap::PhysicalConfigDedicated'])
     register_Ns3LteRrcSapPlmnIdentityInfo_methods(root_module, root_module['ns3::LteRrcSap::PlmnIdentityInfo'])
@@ -1841,9 +1878,9 @@
     register_Ns3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
     register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >'])
+    register_Ns3SimpleRefCount__Ns3LteChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteChunkProcessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >'])
     register_Ns3SimpleRefCount__Ns3LteControlMessage_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteControlMessage__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >'])
     register_Ns3SimpleRefCount__Ns3LteHarqPhy_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteHarqPhy__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteHarqPhy, ns3::empty, ns3::DefaultDeleter<ns3::LteHarqPhy> >'])
-    register_Ns3SimpleRefCount__Ns3LteSinrChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteSinrChunkProcessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >'])
     register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
     register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
     register_Ns3SimpleRefCount__Ns3SpectrumModel_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumModel__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::SpectrumModel, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumModel> >'])
@@ -1940,11 +1977,20 @@
     register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
     register_Ns3LteAmc_methods(root_module, root_module['ns3::LteAmc'])
     register_Ns3LteAnr_methods(root_module, root_module['ns3::LteAnr'])
+    register_Ns3LteChunkProcessor_methods(root_module, root_module['ns3::LteChunkProcessor'])
     register_Ns3LteControlMessage_methods(root_module, root_module['ns3::LteControlMessage'])
     register_Ns3LteEnbMac_methods(root_module, root_module['ns3::LteEnbMac'])
     register_Ns3LteEnbRrc_methods(root_module, root_module['ns3::LteEnbRrc'])
     register_Ns3LteEnbRrcProtocolIdeal_methods(root_module, root_module['ns3::LteEnbRrcProtocolIdeal'])
     register_Ns3LteEnbRrcProtocolReal_methods(root_module, root_module['ns3::LteEnbRrcProtocolReal'])
+    register_Ns3LteFfrAlgorithm_methods(root_module, root_module['ns3::LteFfrAlgorithm'])
+    register_Ns3LteFfrDistributedAlgorithm_methods(root_module, root_module['ns3::LteFfrDistributedAlgorithm'])
+    register_Ns3LteFfrEnhancedAlgorithm_methods(root_module, root_module['ns3::LteFfrEnhancedAlgorithm'])
+    register_Ns3LteFfrSoftAlgorithm_methods(root_module, root_module['ns3::LteFfrSoftAlgorithm'])
+    register_Ns3LteFrHardAlgorithm_methods(root_module, root_module['ns3::LteFrHardAlgorithm'])
+    register_Ns3LteFrNoOpAlgorithm_methods(root_module, root_module['ns3::LteFrNoOpAlgorithm'])
+    register_Ns3LteFrSoftAlgorithm_methods(root_module, root_module['ns3::LteFrSoftAlgorithm'])
+    register_Ns3LteFrStrictAlgorithm_methods(root_module, root_module['ns3::LteFrStrictAlgorithm'])
     register_Ns3LteHandoverAlgorithm_methods(root_module, root_module['ns3::LteHandoverAlgorithm'])
     register_Ns3LteHarqPhy_methods(root_module, root_module['ns3::LteHarqPhy'])
     register_Ns3LteHelper_methods(root_module, root_module['ns3::LteHelper'])
@@ -1960,7 +2006,6 @@
     register_Ns3LteRlcTm_methods(root_module, root_module['ns3::LteRlcTm'])
     register_Ns3LteRlcUm_methods(root_module, root_module['ns3::LteRlcUm'])
     register_Ns3LteSignalingRadioBearerInfo_methods(root_module, root_module['ns3::LteSignalingRadioBearerInfo'])
-    register_Ns3LteSinrChunkProcessor_methods(root_module, root_module['ns3::LteSinrChunkProcessor'])
     register_Ns3LteSpectrumPhy_methods(root_module, root_module['ns3::LteSpectrumPhy'])
     register_Ns3LteSpectrumSignalParameters_methods(root_module, root_module['ns3::LteSpectrumSignalParameters'])
     register_Ns3LteSpectrumSignalParametersDataFrame_methods(root_module, root_module['ns3::LteSpectrumSignalParametersDataFrame'])
@@ -1969,6 +2014,7 @@
     register_Ns3LteStatsCalculator_methods(root_module, root_module['ns3::LteStatsCalculator'])
     register_Ns3LteUeMac_methods(root_module, root_module['ns3::LteUeMac'])
     register_Ns3LteUePhy_methods(root_module, root_module['ns3::LteUePhy'])
+    register_Ns3LteUePowerControl_methods(root_module, root_module['ns3::LteUePowerControl'])
     register_Ns3LteUeRrc_methods(root_module, root_module['ns3::LteUeRrc'])
     register_Ns3LteUeRrcProtocolIdeal_methods(root_module, root_module['ns3::LteUeRrcProtocolIdeal'])
     register_Ns3LteUeRrcProtocolReal_methods(root_module, root_module['ns3::LteUeRrcProtocolReal'])
@@ -2033,17 +2079,14 @@
     register_Ns3DlCqiLteControlMessage_methods(root_module, root_module['ns3::DlCqiLteControlMessage'])
     register_Ns3DlDciLteControlMessage_methods(root_module, root_module['ns3::DlDciLteControlMessage'])
     register_Ns3DlHarqFeedbackLteControlMessage_methods(root_module, root_module['ns3::DlHarqFeedbackLteControlMessage'])
+    register_Ns3EmuEpcHelper_methods(root_module, root_module['ns3::EmuEpcHelper'])
     register_Ns3FdBetFfMacScheduler_methods(root_module, root_module['ns3::FdBetFfMacScheduler'])
     register_Ns3FdMtFfMacScheduler_methods(root_module, root_module['ns3::FdMtFfMacScheduler'])
     register_Ns3FdTbfqFfMacScheduler_methods(root_module, root_module['ns3::FdTbfqFfMacScheduler'])
     register_Ns3HandoverPreparationInfoHeader_methods(root_module, root_module['ns3::HandoverPreparationInfoHeader'])
-    register_Ns3LteCtrlSinrChunkProcessor_methods(root_module, root_module['ns3::LteCtrlSinrChunkProcessor'])
     register_Ns3LteDataRadioBearerInfo_methods(root_module, root_module['ns3::LteDataRadioBearerInfo'])
-    register_Ns3LteDataSinrChunkProcessor_methods(root_module, root_module['ns3::LteDataSinrChunkProcessor'])
     register_Ns3LteEnbPhy_methods(root_module, root_module['ns3::LteEnbPhy'])
-    register_Ns3LteInterferencePowerChunkProcessor_methods(root_module, root_module['ns3::LteInterferencePowerChunkProcessor'])
     register_Ns3LteNetDevice_methods(root_module, root_module['ns3::LteNetDevice'])
-    register_Ns3LteRsReceivedPowerChunkProcessor_methods(root_module, root_module['ns3::LteRsReceivedPowerChunkProcessor'])
     register_Ns3LteUeNetDevice_methods(root_module, root_module['ns3::LteUeNetDevice'])
     register_Ns3MeasurementReportHeader_methods(root_module, root_module['ns3::MeasurementReportHeader'])
     register_Ns3RrcConnectionReconfigurationCompleteHeader_methods(root_module, root_module['ns3::RrcConnectionReconfigurationCompleteHeader'])
@@ -5410,6 +5453,11 @@
                    'void', 
                    [param('uint16_t', 'rnti')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## lte-enb-cphy-sap.h (module 'lte'): int8_t ns3::LteEnbCphySapProvider::GetReferenceSignalPower() [member function]
+    cls.add_method('GetReferenceSignalPower', 
+                   'int8_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::RemoveUe(uint16_t rnti) [member function]
     cls.add_method('RemoveUe', 
                    'void', 
@@ -5435,6 +5483,11 @@
                    'void', 
                    [param('ns3::LteRrcSap::MasterInformationBlock', 'mib')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::SetPa(uint16_t rnti, double pa) [member function]
+    cls.add_method('SetPa', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('double', 'pa')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-enb-cphy-sap.h (module 'lte'): void ns3::LteEnbCphySapProvider::SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi) [member function]
     cls.add_method('SetSrsConfigurationIndex', 
                    'void', 
@@ -5545,6 +5598,114 @@
                    is_static=True)
     return
 
+def register_Ns3LteFfrRrcSapProvider_methods(root_module, cls):
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider::LteFfrRrcSapProvider() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapProvider::LteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrRrcSapProvider const &', 'arg0')])
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::RecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('RecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::ReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('ReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::SetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth) [member function]
+    cls.add_method('SetBandwidth', 
+                   'void', 
+                   [param('uint8_t', 'ulBandwidth'), param('uint8_t', 'dlBandwidth')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapProvider::SetCellId(uint16_t cellId) [member function]
+    cls.add_method('SetCellId', 
+                   'void', 
+                   [param('uint16_t', 'cellId')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrRrcSapUser_methods(root_module, cls):
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser::LteFfrRrcSapUser() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-rrc-sap.h (module 'lte'): ns3::LteFfrRrcSapUser::LteFfrRrcSapUser(ns3::LteFfrRrcSapUser const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrRrcSapUser const &', 'arg0')])
+    ## lte-ffr-rrc-sap.h (module 'lte'): uint8_t ns3::LteFfrRrcSapUser::AddUeMeasReportConfigForFfr(ns3::LteRrcSap::ReportConfigEutra reportConfig) [member function]
+    cls.add_method('AddUeMeasReportConfigForFfr', 
+                   'uint8_t', 
+                   [param('ns3::LteRrcSap::ReportConfigEutra', 'reportConfig')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapUser::SendLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('SendLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-rrc-sap.h (module 'lte'): void ns3::LteFfrRrcSapUser::SetPdschConfigDedicated(uint16_t rnti, ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('SetPdschConfigDedicated', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrSapProvider_methods(root_module, cls):
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider::LteFfrSapProvider() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapProvider::LteFfrSapProvider(ns3::LteFfrSapProvider const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSapProvider const &', 'arg0')])
+    ## lte-ffr-sap.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSapProvider::GetAvailableDlRbg() [member function]
+    cls.add_method('GetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSapProvider::GetAvailableUlRbg() [member function]
+    cls.add_method('GetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): uint8_t ns3::LteFfrSapProvider::GetMinContinuousUlBandwidth() [member function]
+    cls.add_method('GetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): uint8_t ns3::LteFfrSapProvider::GetTpc(uint16_t rnti) [member function]
+    cls.add_method('GetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): bool ns3::LteFfrSapProvider::IsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('IsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): bool ns3::LteFfrSapProvider::IsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('IsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('ReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('ReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-sap.h (module 'lte'): void ns3::LteFfrSapProvider::ReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('ReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3LteFfrSapUser_methods(root_module, cls):
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser::LteFfrSapUser() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-sap.h (module 'lte'): ns3::LteFfrSapUser::LteFfrSapUser(ns3::LteFfrSapUser const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSapUser const &', 'arg0')])
+    return
+
 def register_Ns3LteFlowId_t_methods(root_module, cls):
     cls.add_binary_comparison_operator('<')
     cls.add_binary_comparison_operator('==')
@@ -5805,6 +5966,11 @@
     cls.add_constructor([])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::LteRrcSap(ns3::LteRrcSap const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteRrcSap const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): static double ns3::LteRrcSap::ConvertPdschConfigDedicated2Double(ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('ConvertPdschConfigDedicated2Double', 
+                   'double', 
+                   [param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')], 
+                   is_static=True)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::MaxReportCells [variable]
     cls.add_static_attribute('MaxReportCells', 'uint8_t const', is_const=True)
     return
@@ -6173,6 +6339,26 @@
     cls.add_instance_attribute('tHystNormal', 'uint8_t', is_const=False)
     return
 
+def register_Ns3LteRrcSapPdschConfigCommon_methods(root_module, cls):
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::PdschConfigCommon() [constructor]
+    cls.add_constructor([])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::PdschConfigCommon(ns3::LteRrcSap::PdschConfigCommon const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteRrcSap::PdschConfigCommon const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::pb [variable]
+    cls.add_instance_attribute('pb', 'int8_t', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigCommon::referenceSignalPower [variable]
+    cls.add_instance_attribute('referenceSignalPower', 'int8_t', is_const=False)
+    return
+
+def register_Ns3LteRrcSapPdschConfigDedicated_methods(root_module, cls):
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::PdschConfigDedicated() [constructor]
+    cls.add_constructor([])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::PdschConfigDedicated(ns3::LteRrcSap::PdschConfigDedicated const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteRrcSap::PdschConfigDedicated const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PdschConfigDedicated::pa [variable]
+    cls.add_instance_attribute('pa', 'uint8_t', is_const=False)
+    return
+
 def register_Ns3LteRrcSapPhysCellIdRange_methods(root_module, cls):
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysCellIdRange::PhysCellIdRange() [constructor]
     cls.add_constructor([])
@@ -6195,8 +6381,12 @@
     cls.add_instance_attribute('antennaInfo', 'ns3::LteRrcSap::AntennaInfoDedicated', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::haveAntennaInfoDedicated [variable]
     cls.add_instance_attribute('haveAntennaInfoDedicated', 'bool', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::havePdschConfigDedicated [variable]
+    cls.add_instance_attribute('havePdschConfigDedicated', 'bool', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::haveSoundingRsUlConfigDedicated [variable]
     cls.add_instance_attribute('haveSoundingRsUlConfigDedicated', 'bool', is_const=False)
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::pdschConfigDedicated [variable]
+    cls.add_instance_attribute('pdschConfigDedicated', 'ns3::LteRrcSap::PdschConfigDedicated', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::PhysicalConfigDedicated::soundingRsUlConfigDedicated [variable]
     cls.add_instance_attribute('soundingRsUlConfigDedicated', 'ns3::LteRrcSap::SoundingRsUlConfigDedicated', is_const=False)
     return
@@ -6277,6 +6467,8 @@
     cls.add_constructor([])
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::RadioResourceConfigCommonSib(ns3::LteRrcSap::RadioResourceConfigCommonSib const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteRrcSap::RadioResourceConfigCommonSib const &', 'arg0')])
+    ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::pdschConfigCommon [variable]
+    cls.add_instance_attribute('pdschConfigCommon', 'ns3::LteRrcSap::PdschConfigCommon', is_const=False)
     ## lte-rrc-sap.h (module 'lte'): ns3::LteRrcSap::RadioResourceConfigCommonSib::rachConfigCommon [variable]
     cls.add_instance_attribute('rachConfigCommon', 'ns3::LteRrcSap::RachConfigCommon', is_const=False)
     return
@@ -6582,6 +6774,11 @@
                    'ns3::Ptr< ns3::SpectrumValue >', 
                    [param('uint16_t', 'earfcn'), param('uint8_t', 'bandwidth'), param('double', 'powerTx'), param('std::vector< int >', 'activeRbs')], 
                    is_static=True)
+    ## lte-spectrum-value-helper.h (module 'lte'): static ns3::Ptr<ns3::SpectrumValue> ns3::LteSpectrumValueHelper::CreateTxPowerSpectralDensity(uint16_t earfcn, uint8_t bandwidth, double powerTx, std::map<int, double, std::less<int>, std::allocator<std::pair<int const, double> > > powerTxMap, std::vector<int, std::allocator<int> > activeRbs) [member function]
+    cls.add_method('CreateTxPowerSpectralDensity', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [param('uint16_t', 'earfcn'), param('uint8_t', 'bandwidth'), param('double', 'powerTx'), param('std::map< int, double >', 'powerTxMap'), param('std::vector< int >', 'activeRbs')], 
+                   is_static=True)
     ## lte-spectrum-value-helper.h (module 'lte'): static double ns3::LteSpectrumValueHelper::GetCarrierFrequency(uint16_t earfcn) [member function]
     cls.add_method('GetCarrierFrequency', 
                    'double', 
@@ -6718,6 +6915,11 @@
     cls.add_constructor([])
     ## lte-ue-cphy-sap.h (module 'lte'): ns3::LteUeCphySapProvider::LteUeCphySapProvider(ns3::LteUeCphySapProvider const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteUeCphySapProvider const &', 'arg0')])
+    ## lte-ue-cphy-sap.h (module 'lte'): void ns3::LteUeCphySapProvider::ConfigureReferenceSignalPower(int8_t referenceSignalPower) [member function]
+    cls.add_method('ConfigureReferenceSignalPower', 
+                   'void', 
+                   [param('int8_t', 'referenceSignalPower')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## lte-ue-cphy-sap.h (module 'lte'): void ns3::LteUeCphySapProvider::ConfigureUplink(uint16_t ulEarfcn, uint8_t ulBandwidth) [member function]
     cls.add_method('ConfigureUplink', 
                    'void', 
@@ -9979,6 +10181,18 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3LteChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteChunkProcessor__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter< ns3::LteChunkProcessor > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LteChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteChunkProcessor> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
 def register_Ns3SimpleRefCount__Ns3LteControlMessage_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteControlMessage__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteControlMessage, ns3::empty, ns3::DefaultDeleter<ns3::LteControlMessage> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -10003,18 +10217,6 @@
                    is_static=True)
     return
 
-def register_Ns3SimpleRefCount__Ns3LteSinrChunkProcessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3LteSinrChunkProcessor__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter< ns3::LteSinrChunkProcessor > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::LteSinrChunkProcessor, ns3::empty, ns3::DefaultDeleter<ns3::LteSinrChunkProcessor> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
 def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -11003,10 +11205,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -11017,25 +11219,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -11152,20 +11354,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -11422,6 +11624,10 @@
     cls.add_method('SetImsi', 
                    'void', 
                    [param('uint64_t', 'imsi')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::UeManager::SetPdschConfigDedicated(ns3::LteRrcSap::PdschConfigDedicated pdschConfigDedicated) [member function]
+    cls.add_method('SetPdschConfigDedicated', 
+                   'void', 
+                   [param('ns3::LteRrcSap::PdschConfigDedicated', 'pdschConfigDedicated')])
     ## lte-enb-rrc.h (module 'lte'): void ns3::UeManager::SetSource(uint16_t sourceCellId, uint16_t sourceX2apId) [member function]
     cls.add_method('SetSource', 
                    'void', 
@@ -13685,6 +13891,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -13700,6 +13911,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## ff-mac-scheduler.h (module 'lte'): void ns3::FfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
     return
 
 def register_Ns3GammaRandomVariable_methods(root_module, cls):
@@ -14455,6 +14671,33 @@
                    visibility='protected', is_virtual=True)
     return
 
+def register_Ns3LteChunkProcessor_methods(root_module, cls):
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor::LteChunkProcessor(ns3::LteChunkProcessor const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteChunkProcessor const &', 'arg0')])
+    ## lte-chunk-processor.h (module 'lte'): ns3::LteChunkProcessor::LteChunkProcessor() [constructor]
+    cls.add_constructor([])
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::AddCallback(ns3::LteChunkProcessorCallback c) [member function]
+    cls.add_method('AddCallback', 
+                   'void', 
+                   [param('ns3::LteChunkProcessorCallback', 'c')], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::End() [member function]
+    cls.add_method('End', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::EvaluateChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
+    cls.add_method('EvaluateChunk', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
+                   is_virtual=True)
+    ## lte-chunk-processor.h (module 'lte'): void ns3::LteChunkProcessor::Start() [member function]
+    cls.add_method('Start', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3LteControlMessage_methods(root_module, cls):
     ## lte-control-messages.h (module 'lte'): ns3::LteControlMessage::LteControlMessage(ns3::LteControlMessage const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteControlMessage const &', 'arg0')])
@@ -14552,8 +14795,12 @@
     cls.add_method('ConnectionRejectedTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
-    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionTimeout(uint16_t rnti) [member function]
-    cls.add_method('ConnectionTimeout', 
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionRequestTimeout(uint16_t rnti) [member function]
+    cls.add_method('ConnectionRequestTimeout', 
+                   'void', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::ConnectionSetupTimeout(uint16_t rnti) [member function]
+    cls.add_method('ConnectionSetupTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
     ## lte-enb-rrc.h (module 'lte'): ns3::EpcX2SapUser * ns3::LteEnbRrc::GetEpcX2SapUser() [member function]
@@ -14576,6 +14823,10 @@
     cls.add_method('GetLteEnbRrcSapProvider', 
                    'ns3::LteEnbRrcSapProvider *', 
                    [])
+    ## lte-enb-rrc.h (module 'lte'): ns3::LteFfrRrcSapUser * ns3::LteEnbRrc::GetLteFfrRrcSapUser() [member function]
+    cls.add_method('GetLteFfrRrcSapUser', 
+                   'ns3::LteFfrRrcSapUser *', 
+                   [])
     ## lte-enb-rrc.h (module 'lte'): ns3::LteHandoverManagementSapUser * ns3::LteEnbRrc::GetLteHandoverManagementSapUser() [member function]
     cls.add_method('GetLteHandoverManagementSapUser', 
                    'ns3::LteHandoverManagementSapUser *', 
@@ -14606,6 +14857,11 @@
     cls.add_method('HandoverLeavingTimeout', 
                    'void', 
                    [param('uint16_t', 'rnti')])
+    ## lte-enb-rrc.h (module 'lte'): bool ns3::LteEnbRrc::HasUeManager(uint16_t rnti) const [member function]
+    cls.add_method('HasUeManager', 
+                   'bool', 
+                   [param('uint16_t', 'rnti')], 
+                   is_const=True)
     ## lte-enb-rrc.h (module 'lte'): bool ns3::LteEnbRrc::SendData(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('SendData', 
                    'bool', 
@@ -14646,6 +14902,10 @@
     cls.add_method('SetLteEnbRrcSapUser', 
                    'void', 
                    [param('ns3::LteEnbRrcSapUser *', 's')])
+    ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteFfrRrcSapProvider(ns3::LteFfrRrcSapProvider * s) [member function]
+    cls.add_method('SetLteFfrRrcSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapProvider *', 's')])
     ## lte-enb-rrc.h (module 'lte'): void ns3::LteEnbRrc::SetLteHandoverManagementSapProvider(ns3::LteHandoverManagementSapProvider * s) [member function]
     cls.add_method('SetLteHandoverManagementSapProvider', 
                    'void', 
@@ -14743,99 +15003,952 @@
                    [param('uint16_t', 'rnti'), param('ns3::LteUeRrcSapProvider *', 'p')])
     return
 
-def register_Ns3LteHandoverAlgorithm_methods(root_module, cls):
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm(ns3::LteHandoverAlgorithm const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHandoverAlgorithm const &', 'arg0')])
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm() [constructor]
+def register_Ns3LteFfrAlgorithm_methods(root_module, cls):
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm::LteFfrAlgorithm(ns3::LteFfrAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrAlgorithm const &', 'arg0')])
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrAlgorithm::LteFfrAlgorithm() [constructor]
     cls.add_constructor([])
-    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverManagementSapProvider * ns3::LteHandoverAlgorithm::GetLteHandoverManagementSapProvider() [member function]
-    cls.add_method('GetLteHandoverManagementSapProvider', 
-                   'ns3::LteHandoverManagementSapProvider *', 
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetDlBandwidth() const [member function]
+    cls.add_method('GetDlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetFrCellTypeId() const [member function]
+    cls.add_method('GetFrCellTypeId', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteHandoverAlgorithm::GetTypeId() [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrAlgorithm::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::SetLteHandoverManagementSapUser(ns3::LteHandoverManagementSapUser * s) [member function]
-    cls.add_method('SetLteHandoverManagementSapUser', 
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::GetUlBandwidth() const [member function]
+    cls.add_method('GetUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetDlBandwidth(uint8_t bw) [member function]
+    cls.add_method('SetDlBandwidth', 
                    'void', 
-                   [param('ns3::LteHandoverManagementSapUser *', 's')], 
+                   [param('uint8_t', 'bw')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetFrCellTypeId(uint8_t cellTypeId) [member function]
+    cls.add_method('SetFrCellTypeId', 
+                   'void', 
+                   [param('uint8_t', 'cellTypeId')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoDispose() [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::SetUlBandwidth(uint8_t bw) [member function]
+    cls.add_method('SetUlBandwidth', 
+                   'void', 
+                   [param('uint8_t', 'bw')])
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
-    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    ## lte-ffr-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): uint8_t ns3::LteFfrAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): bool ns3::LteFfrAlgorithm::DoIsDlRbgAvailableForUe(int rbId, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'rbId'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): bool ns3::LteFfrAlgorithm::DoIsUlRbgAvailableForUe(int rbId, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'rbId'), param('uint16_t', 'rnti')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
     cls.add_method('DoReportUeMeas', 
                    'void', 
                    [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3LteHarqPhy_methods(root_module, cls):
-    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy(ns3::LteHarqPhy const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHarqPhy const &', 'arg0')])
-    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy() [constructor]
-    cls.add_constructor([])
-    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiDl(uint8_t harqProcId, uint8_t layer) [member function]
-    cls.add_method('GetAccumulatedMiDl', 
-                   'double', 
-                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
-    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiUl(uint16_t rnti) [member function]
-    cls.add_method('GetAccumulatedMiUl', 
-                   'double', 
-                   [param('uint16_t', 'rnti')])
-    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoDl(uint8_t harqProcId, uint8_t layer) [member function]
-    cls.add_method('GetHarqProcessInfoDl', 
-                   'ns3::HarqProcessInfoList_t', 
-                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
-    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoUl(uint16_t rnti, uint8_t harqProcId) [member function]
-    cls.add_method('GetHarqProcessInfoUl', 
-                   'ns3::HarqProcessInfoList_t', 
-                   [param('uint16_t', 'rnti'), param('uint8_t', 'harqProcId')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetDlHarqProcessStatus(uint8_t id) [member function]
-    cls.add_method('ResetDlHarqProcessStatus', 
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
                    'void', 
-                   [param('uint8_t', 'id')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetUlHarqProcessStatus(uint16_t rnti, uint8_t id) [member function]
-    cls.add_method('ResetUlHarqProcessStatus', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
                    'void', 
-                   [param('uint16_t', 'rnti'), param('uint8_t', 'id')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::SubframeIndication(uint32_t frameNo, uint32_t subframeNo) [member function]
-    cls.add_method('SubframeIndication', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoSetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth) [member function]
+    cls.add_method('DoSetBandwidth', 
                    'void', 
-                   [param('uint32_t', 'frameNo'), param('uint32_t', 'subframeNo')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateDlHarqProcessStatus(uint8_t id, uint8_t layer, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
-    cls.add_method('UpdateDlHarqProcessStatus', 
+                   [param('uint8_t', 'ulBandwidth'), param('uint8_t', 'dlBandwidth')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::DoSetCellId(uint16_t cellId) [member function]
+    cls.add_method('DoSetCellId', 
                    'void', 
-                   [param('uint8_t', 'id'), param('uint8_t', 'layer'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
-    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateUlHarqProcessStatus(uint16_t rnti, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
-    cls.add_method('UpdateUlHarqProcessStatus', 
+                   [param('uint16_t', 'cellId')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-algorithm.h (module 'lte'): int ns3::LteFfrAlgorithm::GetRbgSize(int dlbandwidth) [member function]
+    cls.add_method('GetRbgSize', 
+                   'int', 
+                   [param('int', 'dlbandwidth')], 
+                   visibility='protected')
+    ## lte-ffr-algorithm.h (module 'lte'): void ns3::LteFfrAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
                    'void', 
-                   [param('uint16_t', 'rnti'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
-def register_Ns3LteHelper_methods(root_module, cls):
-    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper(ns3::LteHelper const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteHelper const &', 'arg0')])
-    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper() [constructor]
+def register_Ns3LteFfrDistributedAlgorithm_methods(root_module, cls):
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm::LteFfrDistributedAlgorithm(ns3::LteFfrDistributedAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrDistributedAlgorithm const &', 'arg0')])
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrDistributedAlgorithm::LteFfrDistributedAlgorithm() [constructor]
     cls.add_constructor([])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer) [member function]
-    cls.add_method('ActivateDataRadioBearer', 
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrDistributedAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrDistributedAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrDistributedAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
                    'void', 
-                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer) [member function]
-    cls.add_method('ActivateDataRadioBearer', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
                    'void', 
-                   [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
-    cls.add_method('ActivateDedicatedEpsBearer', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
                    'void', 
-                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
-    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrDistributedAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrDistributedAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): uint8_t ns3::LteFfrDistributedAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): uint8_t ns3::LteFfrDistributedAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): bool ns3::LteFfrDistributedAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): bool ns3::LteFfrDistributedAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-distributed-algorithm.h (module 'lte'): void ns3::LteFfrDistributedAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFfrEnhancedAlgorithm_methods(root_module, cls):
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm::LteFfrEnhancedAlgorithm(ns3::LteFfrEnhancedAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrEnhancedAlgorithm const &', 'arg0')])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrEnhancedAlgorithm::LteFfrEnhancedAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrEnhancedAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrEnhancedAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrEnhancedAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrEnhancedAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrEnhancedAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): uint8_t ns3::LteFfrEnhancedAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): uint8_t ns3::LteFfrEnhancedAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): bool ns3::LteFfrEnhancedAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): bool ns3::LteFfrEnhancedAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-enhanced-algorithm.h (module 'lte'): void ns3::LteFfrEnhancedAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFfrSoftAlgorithm_methods(root_module, cls):
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm::LteFfrSoftAlgorithm(ns3::LteFfrSoftAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFfrSoftAlgorithm const &', 'arg0')])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSoftAlgorithm::LteFfrSoftAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFfrSoftAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFfrSoftAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFfrSoftAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSoftAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFfrSoftAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFfrSoftAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFfrSoftAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): bool ns3::LteFfrSoftAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): bool ns3::LteFfrSoftAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-ffr-soft-algorithm.h (module 'lte'): void ns3::LteFfrSoftAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrHardAlgorithm_methods(root_module, cls):
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm::LteFrHardAlgorithm(ns3::LteFrHardAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrHardAlgorithm const &', 'arg0')])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFrHardAlgorithm::LteFrHardAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrHardAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrHardAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrHardAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrHardAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrHardAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): uint8_t ns3::LteFrHardAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): uint8_t ns3::LteFrHardAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): bool ns3::LteFrHardAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): bool ns3::LteFrHardAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-hard-algorithm.h (module 'lte'): void ns3::LteFrHardAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrNoOpAlgorithm_methods(root_module, cls):
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm::LteFrNoOpAlgorithm(ns3::LteFrNoOpAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrNoOpAlgorithm const &', 'arg0')])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFrNoOpAlgorithm::LteFrNoOpAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrNoOpAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrNoOpAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrNoOpAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrNoOpAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrNoOpAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): uint8_t ns3::LteFrNoOpAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): uint8_t ns3::LteFrNoOpAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): bool ns3::LteFrNoOpAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): bool ns3::LteFrNoOpAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-no-op-algorithm.h (module 'lte'): void ns3::LteFrNoOpAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrSoftAlgorithm_methods(root_module, cls):
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm::LteFrSoftAlgorithm(ns3::LteFrSoftAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrSoftAlgorithm const &', 'arg0')])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFrSoftAlgorithm::LteFrSoftAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrSoftAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrSoftAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrSoftAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrSoftAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrSoftAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFrSoftAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): uint8_t ns3::LteFrSoftAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): bool ns3::LteFrSoftAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): bool ns3::LteFrSoftAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-soft-algorithm.h (module 'lte'): void ns3::LteFrSoftAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteFrStrictAlgorithm_methods(root_module, cls):
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm::LteFrStrictAlgorithm(ns3::LteFrStrictAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteFrStrictAlgorithm const &', 'arg0')])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFrStrictAlgorithm::LteFrStrictAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFfrRrcSapProvider * ns3::LteFrStrictAlgorithm::GetLteFfrRrcSapProvider() [member function]
+    cls.add_method('GetLteFfrRrcSapProvider', 
+                   'ns3::LteFfrRrcSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): ns3::LteFfrSapProvider * ns3::LteFrStrictAlgorithm::GetLteFfrSapProvider() [member function]
+    cls.add_method('GetLteFfrSapProvider', 
+                   'ns3::LteFfrSapProvider *', 
+                   [], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteFrStrictAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::SetLteFfrRrcSapUser(ns3::LteFfrRrcSapUser * s) [member function]
+    cls.add_method('SetLteFfrRrcSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrRrcSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::SetLteFfrSapUser(ns3::LteFfrSapUser * s) [member function]
+    cls.add_method('SetLteFfrSapUser', 
+                   'void', 
+                   [param('ns3::LteFfrSapUser *', 's')], 
+                   is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrStrictAlgorithm::DoGetAvailableDlRbg() [member function]
+    cls.add_method('DoGetAvailableDlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): std::vector<bool, std::allocator<bool> > ns3::LteFrStrictAlgorithm::DoGetAvailableUlRbg() [member function]
+    cls.add_method('DoGetAvailableUlRbg', 
+                   'std::vector< bool >', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): uint8_t ns3::LteFrStrictAlgorithm::DoGetMinContinuousUlBandwidth() [member function]
+    cls.add_method('DoGetMinContinuousUlBandwidth', 
+                   'uint8_t', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): uint8_t ns3::LteFrStrictAlgorithm::DoGetTpc(uint16_t rnti) [member function]
+    cls.add_method('DoGetTpc', 
+                   'uint8_t', 
+                   [param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): bool ns3::LteFrStrictAlgorithm::DoIsDlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsDlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): bool ns3::LteFrStrictAlgorithm::DoIsUlRbgAvailableForUe(int i, uint16_t rnti) [member function]
+    cls.add_method('DoIsUlRbgAvailableForUe', 
+                   'bool', 
+                   [param('int', 'i'), param('uint16_t', 'rnti')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoRecvLoadInformation(ns3::EpcX2Sap::LoadInformationParams params) [member function]
+    cls.add_method('DoRecvLoadInformation', 
+                   'void', 
+                   [param('ns3::EpcX2Sap::LoadInformationParams', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportDlCqiInfo(ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportDlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedDlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUlCqiInfo(ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const & params) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('ns3::FfMacSchedSapProvider::SchedUlCqiInfoReqParameters const &', 'params')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::DoReportUlCqiInfo(std::map<unsigned short, std::vector<double, std::allocator<double> >, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, std::vector<double, std::allocator<double> > > > > ulCqiMap) [member function]
+    cls.add_method('DoReportUlCqiInfo', 
+                   'void', 
+                   [param('std::map< unsigned short, std::vector< double > >', 'ulCqiMap')], 
+                   visibility='protected', is_virtual=True)
+    ## lte-fr-strict-algorithm.h (module 'lte'): void ns3::LteFrStrictAlgorithm::Reconfigure() [member function]
+    cls.add_method('Reconfigure', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteHandoverAlgorithm_methods(root_module, cls):
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm(ns3::LteHandoverAlgorithm const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHandoverAlgorithm const &', 'arg0')])
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverAlgorithm::LteHandoverAlgorithm() [constructor]
+    cls.add_constructor([])
+    ## lte-handover-algorithm.h (module 'lte'): ns3::LteHandoverManagementSapProvider * ns3::LteHandoverAlgorithm::GetLteHandoverManagementSapProvider() [member function]
+    cls.add_method('GetLteHandoverManagementSapProvider', 
+                   'ns3::LteHandoverManagementSapProvider *', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): static ns3::TypeId ns3::LteHandoverAlgorithm::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::SetLteHandoverManagementSapUser(ns3::LteHandoverManagementSapUser * s) [member function]
+    cls.add_method('SetLteHandoverManagementSapUser', 
+                   'void', 
+                   [param('ns3::LteHandoverManagementSapUser *', 's')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## lte-handover-algorithm.h (module 'lte'): void ns3::LteHandoverAlgorithm::DoReportUeMeas(uint16_t rnti, ns3::LteRrcSap::MeasResults measResults) [member function]
+    cls.add_method('DoReportUeMeas', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('ns3::LteRrcSap::MeasResults', 'measResults')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3LteHarqPhy_methods(root_module, cls):
+    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy(ns3::LteHarqPhy const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHarqPhy const &', 'arg0')])
+    ## lte-harq-phy.h (module 'lte'): ns3::LteHarqPhy::LteHarqPhy() [constructor]
+    cls.add_constructor([])
+    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiDl(uint8_t harqProcId, uint8_t layer) [member function]
+    cls.add_method('GetAccumulatedMiDl', 
+                   'double', 
+                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
+    ## lte-harq-phy.h (module 'lte'): double ns3::LteHarqPhy::GetAccumulatedMiUl(uint16_t rnti) [member function]
+    cls.add_method('GetAccumulatedMiUl', 
+                   'double', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoDl(uint8_t harqProcId, uint8_t layer) [member function]
+    cls.add_method('GetHarqProcessInfoDl', 
+                   'ns3::HarqProcessInfoList_t', 
+                   [param('uint8_t', 'harqProcId'), param('uint8_t', 'layer')])
+    ## lte-harq-phy.h (module 'lte'): ns3::HarqProcessInfoList_t ns3::LteHarqPhy::GetHarqProcessInfoUl(uint16_t rnti, uint8_t harqProcId) [member function]
+    cls.add_method('GetHarqProcessInfoUl', 
+                   'ns3::HarqProcessInfoList_t', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'harqProcId')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetDlHarqProcessStatus(uint8_t id) [member function]
+    cls.add_method('ResetDlHarqProcessStatus', 
+                   'void', 
+                   [param('uint8_t', 'id')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::ResetUlHarqProcessStatus(uint16_t rnti, uint8_t id) [member function]
+    cls.add_method('ResetUlHarqProcessStatus', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('uint8_t', 'id')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::SubframeIndication(uint32_t frameNo, uint32_t subframeNo) [member function]
+    cls.add_method('SubframeIndication', 
+                   'void', 
+                   [param('uint32_t', 'frameNo'), param('uint32_t', 'subframeNo')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateDlHarqProcessStatus(uint8_t id, uint8_t layer, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
+    cls.add_method('UpdateDlHarqProcessStatus', 
+                   'void', 
+                   [param('uint8_t', 'id'), param('uint8_t', 'layer'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+    ## lte-harq-phy.h (module 'lte'): void ns3::LteHarqPhy::UpdateUlHarqProcessStatus(uint16_t rnti, double mi, uint16_t infoBytes, uint16_t codeBytes) [member function]
+    cls.add_method('UpdateUlHarqProcessStatus', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('double', 'mi'), param('uint16_t', 'infoBytes'), param('uint16_t', 'codeBytes')])
+    return
+
+def register_Ns3LteHelper_methods(root_module, cls):
+    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper(ns3::LteHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteHelper const &', 'arg0')])
+    ## lte-helper.h (module 'lte'): ns3::LteHelper::LteHelper() [constructor]
+    cls.add_constructor([])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateDataRadioBearer', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDataRadioBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateDataRadioBearer', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
+    cls.add_method('ActivateDedicatedEpsBearer', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr<ns3::NetDevice> ueDevice, ns3::EpsBearer bearer, ns3::Ptr<ns3::EpcTft> tft) [member function]
     cls.add_method('ActivateDedicatedEpsBearer', 
                    'void', 
                    [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')])
@@ -14936,6 +16049,11 @@
     cls.add_method('EnableUlTxPhyTraces', 
                    'void', 
                    [])
+    ## lte-helper.h (module 'lte'): std::string ns3::LteHelper::GetFfrAlgorithmType() const [member function]
+    cls.add_method('GetFfrAlgorithmType', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## lte-helper.h (module 'lte'): std::string ns3::LteHelper::GetHandoverAlgorithmType() const [member function]
     cls.add_method('GetHandoverAlgorithmType', 
                    'std::string', 
@@ -14995,6 +16113,14 @@
     cls.add_method('SetFadingModelAttribute', 
                    'void', 
                    [param('std::string', 'n'), param('ns3::AttributeValue const &', 'v')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetFfrAlgorithmAttribute(std::string n, ns3::AttributeValue const & v) [member function]
+    cls.add_method('SetFfrAlgorithmAttribute', 
+                   'void', 
+                   [param('std::string', 'n'), param('ns3::AttributeValue const &', 'v')])
+    ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetFfrAlgorithmType(std::string type) [member function]
+    cls.add_method('SetFfrAlgorithmType', 
+                   'void', 
+                   [param('std::string', 'type')])
     ## lte-helper.h (module 'lte'): void ns3::LteHelper::SetHandoverAlgorithmAttribute(std::string n, ns3::AttributeValue const & v) [member function]
     cls.add_method('SetHandoverAlgorithmAttribute', 
                    'void', 
@@ -15076,22 +16202,22 @@
     cls.add_constructor([param('ns3::LteInterference const &', 'arg0')])
     ## lte-interference.h (module 'lte'): ns3::LteInterference::LteInterference() [constructor]
     cls.add_constructor([])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddInterferenceChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddInterferenceChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddRsPowerChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSignal(ns3::Ptr<ns3::SpectrumValue const> spd, ns3::Time const duration) [member function]
     cls.add_method('AddSignal', 
                    'void', 
                    [param('ns3::Ptr< ns3::SpectrumValue const >', 'spd'), param('ns3::Time const', 'duration')])
-    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-interference.h (module 'lte'): void ns3::LteInterference::AddSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-interference.h (module 'lte'): void ns3::LteInterference::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -15551,28 +16677,6 @@
     cls.add_instance_attribute('m_srbIdentity', 'uint8_t', is_const=False)
     return
 
-def register_Ns3LteSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor::LteSinrChunkProcessor() [constructor]
-    cls.add_constructor([])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteSinrChunkProcessor::LteSinrChunkProcessor(ns3::LteSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
 def register_Ns3LteSpectrumPhy_methods(root_module, cls):
     ## lte-spectrum-phy.h (module 'lte'): ns3::LteSpectrumPhy::LteSpectrumPhy() [constructor]
     cls.add_constructor([])
@@ -15706,26 +16810,30 @@
     cls.add_method('SetCellId', 
                    'void', 
                    [param('uint16_t', 'cellId')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddRsPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddRsPowerChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataPowerChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
+    cls.add_method('AddDataPowerChunkProcessor', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddDataSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddDataSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceCtrlChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceCtrlChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceCtrlChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceDataChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddInterferenceDataChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddInterferenceDataChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
-    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddCtrlSinrChunkProcessor(ns3::Ptr<ns3::LteSinrChunkProcessor> p) [member function]
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
+    ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddCtrlSinrChunkProcessor(ns3::Ptr<ns3::LteChunkProcessor> p) [member function]
     cls.add_method('AddCtrlSinrChunkProcessor', 
                    'void', 
-                   [param('ns3::Ptr< ns3::LteSinrChunkProcessor >', 'p')])
+                   [param('ns3::Ptr< ns3::LteChunkProcessor >', 'p')])
     ## lte-spectrum-phy.h (module 'lte'): void ns3::LteSpectrumPhy::AddExpectedTb(uint16_t rnti, uint8_t ndi, uint16_t size, uint8_t mcs, std::vector<int, std::allocator<int> > map, uint8_t layer, uint8_t harqId, uint8_t rv, bool downlink) [member function]
     cls.add_method('AddExpectedTb', 
                    'void', 
@@ -15985,6 +17093,11 @@
                    'void', 
                    [param('ns3::SpectrumValue const &', 'sinr')], 
                    is_virtual=True)
+    ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::GenerateMixedCqiReport(ns3::SpectrumValue const & sinr) [member function]
+    cls.add_method('GenerateMixedCqiReport', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'sinr')], 
+                   is_virtual=True)
     ## lte-ue-phy.h (module 'lte'): ns3::Ptr<ns3::LteSpectrumPhy> ns3::LteUePhy::GetDlSpectrumPhy() const [member function]
     cls.add_method('GetDlSpectrumPhy', 
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
@@ -16036,6 +17149,11 @@
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
                    [], 
                    is_const=True)
+    ## lte-ue-phy.h (module 'lte'): ns3::Ptr<ns3::LteUePowerControl> ns3::LteUePhy::GetUplinkPowerControl() const [member function]
+    cls.add_method('GetUplinkPowerControl', 
+                   'ns3::Ptr< ns3::LteUePowerControl >', 
+                   [], 
+                   is_const=True)
     ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::PhyPduReceived(ns3::Ptr<ns3::Packet> p) [member function]
     cls.add_method('PhyPduReceived', 
                    'void', 
@@ -16055,6 +17173,11 @@
                    'void', 
                    [param('uint16_t', 'cellId'), param('ns3::Ptr< ns3::SpectrumValue >', 'p')], 
                    is_virtual=True)
+    ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::ReportDataInterference(ns3::SpectrumValue const & interf) [member function]
+    cls.add_method('ReportDataInterference', 
+                   'void', 
+                   [param('ns3::SpectrumValue const &', 'interf')], 
+                   is_virtual=True)
     ## lte-ue-phy.h (module 'lte'): void ns3::LteUePhy::ReportInterference(ns3::SpectrumValue const & interf) [member function]
     cls.add_method('ReportInterference', 
                    'void', 
@@ -16118,6 +17241,96 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3LteUePowerControl_methods(root_module, cls):
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl::LteUePowerControl(ns3::LteUePowerControl const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::LteUePowerControl const &', 'arg0')])
+    ## lte-ue-power-control.h (module 'lte'): ns3::LteUePowerControl::LteUePowerControl() [constructor]
+    cls.add_constructor([])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculatePucchTxPower() [member function]
+    cls.add_method('CalculatePucchTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculatePuschTxPower() [member function]
+    cls.add_method('CalculatePuschTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::CalculateSrsTxPower() [member function]
+    cls.add_method('CalculateSrsTxPower', 
+                   'void', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::ConfigureReferenceSignalPower(int8_t referenceSignalPower) [member function]
+    cls.add_method('ConfigureReferenceSignalPower', 
+                   'void', 
+                   [param('int8_t', 'referenceSignalPower')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPcmax() [member function]
+    cls.add_method('GetPcmax', 
+                   'double', 
+                   [])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPucchTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetPucchTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetPuschTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetPuschTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): double ns3::LteUePowerControl::GetSrsTxPower(std::vector<int, std::allocator<int> > rb) [member function]
+    cls.add_method('GetSrsTxPower', 
+                   'double', 
+                   [param('std::vector< int >', 'rb')])
+    ## lte-ue-power-control.h (module 'lte'): static ns3::TypeId ns3::LteUePowerControl::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::ReportTpc(uint8_t tpc) [member function]
+    cls.add_method('ReportTpc', 
+                   'void', 
+                   [param('uint8_t', 'tpc')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetAlpha(double value) [member function]
+    cls.add_method('SetAlpha', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetCellId(uint16_t cellId) [member function]
+    cls.add_method('SetCellId', 
+                   'void', 
+                   [param('uint16_t', 'cellId')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPcmax(double value) [member function]
+    cls.add_method('SetPcmax', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPoNominalPusch(int16_t value) [member function]
+    cls.add_method('SetPoNominalPusch', 
+                   'void', 
+                   [param('int16_t', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetPoUePusch(int16_t value) [member function]
+    cls.add_method('SetPoUePusch', 
+                   'void', 
+                   [param('int16_t', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetRnti(uint16_t rnti) [member function]
+    cls.add_method('SetRnti', 
+                   'void', 
+                   [param('uint16_t', 'rnti')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetRsrp(double value) [member function]
+    cls.add_method('SetRsrp', 
+                   'void', 
+                   [param('double', 'value')])
+    ## lte-ue-power-control.h (module 'lte'): void ns3::LteUePowerControl::SetTxPower(double value) [member function]
+    cls.add_method('SetTxPower', 
+                   'void', 
+                   [param('double', 'value')])
+    return
+
 def register_Ns3LteUeRrc_methods(root_module, cls):
     ## lte-ue-rrc.h (module 'lte'): ns3::LteUeRrc::LteUeRrc(ns3::LteUeRrc const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteUeRrc const &', 'arg0')])
@@ -17078,6 +18291,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## pf-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::PfFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## pf-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::PfFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17093,6 +18311,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## pf-ff-mac-scheduler.h (module 'lte'): void ns3::PfFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## pf-ff-mac-scheduler.h (module 'lte'): void ns3::PfFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -17371,6 +18594,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## pss-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::PssFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## pss-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::PssFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17386,6 +18614,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## pss-ff-mac-scheduler.h (module 'lte'): void ns3::PssFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## pss-ff-mac-scheduler.h (module 'lte'): void ns3::PssFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -17663,6 +18896,14 @@
     cls.add_method('Reset', 
                    'void', 
                    [])
+    ## rem-spectrum-phy.h (module 'lte'): void ns3::RemSpectrumPhy::SetUseDataChannel(bool value) [member function]
+    cls.add_method('SetUseDataChannel', 
+                   'void', 
+                   [param('bool', 'value')])
+    ## rem-spectrum-phy.h (module 'lte'): void ns3::RemSpectrumPhy::SetRbId(int32_t rbId) [member function]
+    cls.add_method('SetRbId', 
+                   'void', 
+                   [param('int32_t', 'rbId')])
     return
 
 def register_Ns3RrFfMacScheduler_methods(root_module, cls):
@@ -17685,6 +18926,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## rr-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::RrFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## rr-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::RrFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -17700,6 +18946,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## rr-ff-mac-scheduler.h (module 'lte'): void ns3::RrFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## rr-ff-mac-scheduler.h (module 'lte'): void ns3::RrFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18149,6 +19400,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdbet-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdBetFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdbet-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdBetFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18164,6 +19420,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdbet-ff-mac-scheduler.h (module 'lte'): void ns3::TdBetFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdbet-ff-mac-scheduler.h (module 'lte'): void ns3::TdBetFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18190,6 +19451,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdmt-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdMtFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdmt-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdMtFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18205,6 +19471,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdmt-ff-mac-scheduler.h (module 'lte'): void ns3::TdMtFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdmt-ff-mac-scheduler.h (module 'lte'): void ns3::TdMtFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18231,6 +19502,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tdtbfq-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TdTbfqFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tdtbfq-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TdTbfqFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18246,6 +19522,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::TdTbfqFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::TdTbfqFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18305,6 +19586,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## tta-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::TtaFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## tta-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::TtaFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18320,6 +19606,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## tta-ff-mac-scheduler.h (module 'lte'): void ns3::TtaFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## tta-ff-mac-scheduler.h (module 'lte'): void ns3::TtaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18800,6 +20091,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::CqaFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## cqa-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::CqaFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18815,6 +20111,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## cqa-ff-mac-scheduler.h (module 'lte'): void ns3::CqaFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18866,6 +20167,63 @@
                    [param('ns3::DlInfoListElement_s', 'm')])
     return
 
+def register_Ns3EmuEpcHelper_methods(root_module, cls):
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper(ns3::EmuEpcHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EmuEpcHelper const &', 'arg0')])
+    ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper() [constructor]
+    cls.add_constructor([])
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi, ns3::Ptr<ns3::EpcTft> tft, ns3::EpsBearer bearer) [member function]
+    cls.add_method('ActivateEpsBearer', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddEnb(ns3::Ptr<ns3::Node> enbNode, ns3::Ptr<ns3::NetDevice> lteEnbNetDevice, uint16_t cellId) [member function]
+    cls.add_method('AddEnb', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'enbNode'), param('ns3::Ptr< ns3::NetDevice >', 'lteEnbNetDevice'), param('uint16_t', 'cellId')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddUe(ns3::Ptr<ns3::NetDevice> ueLteDevice, uint64_t imsi) [member function]
+    cls.add_method('AddUe', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddX2Interface(ns3::Ptr<ns3::Node> enbNode1, ns3::Ptr<ns3::Node> enbNode2) [member function]
+    cls.add_method('AddX2Interface', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'enbNode1'), param('ns3::Ptr< ns3::Node >', 'enbNode2')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ipv4InterfaceContainer ns3::EmuEpcHelper::AssignUeIpv4Address(ns3::NetDeviceContainer ueDevices) [member function]
+    cls.add_method('AssignUeIpv4Address', 
+                   'ns3::Ipv4InterfaceContainer', 
+                   [param('ns3::NetDeviceContainer', 'ueDevices')], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::DoInitialize() [member function]
+    cls.add_method('DoInitialize', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ptr<ns3::Node> ns3::EmuEpcHelper::GetPgwNode() [member function]
+    cls.add_method('GetPgwNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_virtual=True)
+    ## emu-epc-helper.h (module 'lte'): static ns3::TypeId ns3::EmuEpcHelper::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## emu-epc-helper.h (module 'lte'): ns3::Ipv4Address ns3::EmuEpcHelper::GetUeDefaultGatewayAddress() [member function]
+    cls.add_method('GetUeDefaultGatewayAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_virtual=True)
+    return
+
 def register_Ns3FdBetFfMacScheduler_methods(root_module, cls):
     ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::FdBetFfMacScheduler::FdBetFfMacScheduler(ns3::FdBetFfMacScheduler const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::FdBetFfMacScheduler const &', 'arg0')])
@@ -18886,6 +20244,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdbet-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdBetFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdbet-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdBetFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18901,6 +20264,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdbet-ff-mac-scheduler.h (module 'lte'): void ns3::FdBetFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdbet-ff-mac-scheduler.h (module 'lte'): void ns3::FdBetFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18927,6 +20295,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdmt-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdMtFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdmt-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdMtFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18942,6 +20315,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdmt-ff-mac-scheduler.h (module 'lte'): void ns3::FdMtFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdmt-ff-mac-scheduler.h (module 'lte'): void ns3::FdMtFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -18968,6 +20346,11 @@
                    'ns3::FfMacSchedSapProvider *', 
                    [], 
                    is_virtual=True)
+    ## fdtbfq-ff-mac-scheduler.h (module 'lte'): ns3::LteFfrSapUser * ns3::FdTbfqFfMacScheduler::GetLteFfrSapUser() [member function]
+    cls.add_method('GetLteFfrSapUser', 
+                   'ns3::LteFfrSapUser *', 
+                   [], 
+                   is_virtual=True)
     ## fdtbfq-ff-mac-scheduler.h (module 'lte'): static ns3::TypeId ns3::FdTbfqFfMacScheduler::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -18983,6 +20366,11 @@
                    'void', 
                    [param('ns3::FfMacSchedSapUser *', 's')], 
                    is_virtual=True)
+    ## fdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::FdTbfqFfMacScheduler::SetLteFfrSapProvider(ns3::LteFfrSapProvider * s) [member function]
+    cls.add_method('SetLteFfrSapProvider', 
+                   'void', 
+                   [param('ns3::LteFfrSapProvider *', 's')], 
+                   is_virtual=True)
     ## fdtbfq-ff-mac-scheduler.h (module 'lte'): void ns3::FdTbfqFfMacScheduler::TransmissionModeConfigurationUpdate(uint16_t rnti, uint8_t txMode) [member function]
     cls.add_method('TransmissionModeConfigurationUpdate', 
                    'void', 
@@ -19025,30 +20413,6 @@
                    [param('ns3::LteRrcSap::HandoverPreparationInfo', 'msg')])
     return
 
-def register_Ns3LteCtrlSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::LteCtrlSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteCtrlSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor(ns3::Ptr<ns3::LtePhy> p, ns3::Ptr<ns3::LteSpectrumPhy> s) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p'), param('ns3::Ptr< ns3::LteSpectrumPhy >', 's')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteCtrlSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteDataRadioBearerInfo_methods(root_module, cls):
     ## lte-radio-bearer-info.h (module 'lte'): ns3::LteDataRadioBearerInfo::LteDataRadioBearerInfo() [constructor]
     cls.add_constructor([])
@@ -19077,30 +20441,6 @@
     cls.add_instance_attribute('m_transportLayerAddress', 'ns3::Ipv4Address', is_const=False)
     return
 
-def register_Ns3LteDataSinrChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::LteDataSinrChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteDataSinrChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::Ptr<ns3::LteSpectrumPhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LteSpectrumPhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteDataSinrChunkProcessor::LteDataSinrChunkProcessor(ns3::Ptr<ns3::LteSpectrumPhy> s, ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LteSpectrumPhy >', 's'), param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteDataSinrChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteEnbPhy_methods(root_module, cls):
     ## lte-enb-phy.h (module 'lte'): ns3::LteEnbPhy::LteEnbPhy(ns3::LteEnbPhy const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LteEnbPhy const &', 'arg0')])
@@ -19125,6 +20465,11 @@
                    'ns3::Ptr< ns3::SpectrumValue >', 
                    [], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): ns3::Ptr<ns3::SpectrumValue> ns3::LteEnbPhy::CreateTxPowerSpectralDensityWithPowerAllocation() [member function]
+    cls.add_method('CreateTxPowerSpectralDensityWithPowerAllocation', 
+                   'ns3::Ptr< ns3::SpectrumValue >', 
+                   [], 
+                   is_virtual=True)
     ## lte-enb-phy.h (module 'lte'): std::list<ns3::UlDciLteControlMessage,std::allocator<ns3::UlDciLteControlMessage> > ns3::LteEnbPhy::DequeueUlDci() [member function]
     cls.add_method('DequeueUlDci', 
                    'std::list< ns3::UlDciLteControlMessage >', 
@@ -19134,6 +20479,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): int8_t ns3::LteEnbPhy::DoGetReferenceSignalPower() const [member function]
+    cls.add_method('DoGetReferenceSignalPower', 
+                   'int8_t', 
+                   [], 
+                   is_const=True)
     ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::DoInitialize() [member function]
     cls.add_method('DoInitialize', 
                    'void', 
@@ -19157,6 +20507,10 @@
                    'void', 
                    [param('ns3::SpectrumValue const &', 'sinr')], 
                    is_virtual=True)
+    ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::GeneratePowerAllocationMap(uint16_t rnti, int rbId) [member function]
+    cls.add_method('GeneratePowerAllocationMap', 
+                   'void', 
+                   [param('uint16_t', 'rnti'), param('int', 'rbId')])
     ## lte-enb-phy.h (module 'lte'): ns3::Ptr<ns3::LteSpectrumPhy> ns3::LteEnbPhy::GetDlSpectrumPhy() const [member function]
     cls.add_method('GetDlSpectrumPhy', 
                    'ns3::Ptr< ns3::LteSpectrumPhy >', 
@@ -19244,6 +20598,10 @@
     cls.add_method('SetDownlinkSubChannels', 
                    'void', 
                    [param('std::vector< int >', 'mask')])
+    ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::SetDownlinkSubChannelsWithPowerAllocation(std::vector<int, std::allocator<int> > mask) [member function]
+    cls.add_method('SetDownlinkSubChannelsWithPowerAllocation', 
+                   'void', 
+                   [param('std::vector< int >', 'mask')])
     ## lte-enb-phy.h (module 'lte'): void ns3::LteEnbPhy::SetHarqPhyModule(ns3::Ptr<ns3::LteHarqPhy> harq) [member function]
     cls.add_method('SetHarqPhyModule', 
                    'void', 
@@ -19283,28 +20641,6 @@
                    visibility='private', is_virtual=True)
     return
 
-def register_Ns3LteInterferencePowerChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor::LteInterferencePowerChunkProcessor(ns3::LteInterferencePowerChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteInterferencePowerChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteInterferencePowerChunkProcessor::LteInterferencePowerChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteInterferencePowerChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteNetDevice_methods(root_module, cls):
     ## lte-net-device.h (module 'lte'): static ns3::TypeId ns3::LteNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -19439,28 +20775,6 @@
                    [param('ns3::Ptr< ns3::Packet >', 'p')])
     return
 
-def register_Ns3LteRsReceivedPowerChunkProcessor_methods(root_module, cls):
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor::LteRsReceivedPowerChunkProcessor(ns3::LteRsReceivedPowerChunkProcessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::LteRsReceivedPowerChunkProcessor const &', 'arg0')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): ns3::LteRsReceivedPowerChunkProcessor::LteRsReceivedPowerChunkProcessor(ns3::Ptr<ns3::LtePhy> p) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::LtePhy >', 'p')])
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::End() [member function]
-    cls.add_method('End', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::EvaluateSinrChunk(ns3::SpectrumValue const & sinr, ns3::Time duration) [member function]
-    cls.add_method('EvaluateSinrChunk', 
-                   'void', 
-                   [param('ns3::SpectrumValue const &', 'sinr'), param('ns3::Time', 'duration')], 
-                   is_virtual=True)
-    ## lte-sinr-chunk-processor.h (module 'lte'): void ns3::LteRsReceivedPowerChunkProcessor::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    return
-
 def register_Ns3LteUeNetDevice_methods(root_module, cls):
     ## lte-ue-net-device.h (module 'lte'): static ns3::TypeId ns3::LteUeNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
diff -Naur ns-3.20/src/lte/doc/Makefile ns-3.21/src/lte/doc/Makefile
--- ns-3.20/src/lte/doc/Makefile	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/Makefile	2014-09-17 20:03:14.000000000 -0700
@@ -108,6 +108,22 @@
 	$(FIGURES)/fading_pedestrian.pdf \
 	$(FIGURES)/fading_vehicular.pdf \
 	$(FIGURES)/fading_urban_3kmph.pdf \
+	$(FIGURES)/fr-enhanced-fractional-frequency-reuse-scheme.png \
+	$(FIGURES)/fr-enhanced-fractional-frequency-reuse-scheme.pdf \
+	$(FIGURES)/fr-full-frequency-reuse-scheme.png \
+	$(FIGURES)/fr-full-frequency-reuse-scheme.pdf \
+	$(FIGURES)/fr-hard-frequency-reuse-scheme.png \
+	$(FIGURES)/fr-hard-frequency-reuse-scheme.pdf \
+	$(FIGURES)/fr-soft-fractional-frequency-reuse-scheme.png \
+	$(FIGURES)/fr-soft-fractional-frequency-reuse-scheme.pdf \
+	$(FIGURES)/fr-soft-frequency-reuse-scheme-v1.png \
+	$(FIGURES)/fr-soft-frequency-reuse-scheme-v1.pdf \
+	$(FIGURES)/fr-soft-frequency-reuse-scheme-v2.png \
+	$(FIGURES)/fr-soft-frequency-reuse-scheme-v2.pdf \
+	$(FIGURES)/fr-strict-frequency-reuse-scheme.png \
+	$(FIGURES)/fr-strict-frequency-reuse-scheme.pdf \
+	$(FIGURES)/ffr-distributed-scheme.png \
+	$(FIGURES)/ffr-distributed-scheme.pdf \
 	$(FIGURES)/MCS_1_4.pdf \
 	$(FIGURES)/MCS_1_4.png \
 	$(FIGURES)/MCS_5_8.pdf \
@@ -130,6 +146,20 @@
 	$(FIGURES)/MCS_12_test.pdf \
 	$(FIGURES)/MCS_16_test.png \
 	$(FIGURES)/MCS_16_test.pdf \
+	$(FIGURES)/lte-dl-power-control.png \
+	$(FIGURES)/lte-dl-power-control.pdf \
+	$(FIGURES)/lte-fr-soft-1-rem.png \
+	$(FIGURES)/lte-fr-soft-1-rem.pdf \
+	$(FIGURES)/lte-ffr-soft-2-spectrum-trace.png \
+	$(FIGURES)/lte-ffr-soft-2-spectrum-trace.pdf \
+	$(FIGURES)/lte-fr-hard-1-rem.png \
+	$(FIGURES)/lte-fr-hard-1-rem.pdf \
+	$(FIGURES)/lte-fr-hard-2-rem.png \
+	$(FIGURES)/lte-fr-hard-2-rem.pdf \
+	$(FIGURES)/lte-fr-hard-3-rem.png \
+	$(FIGURES)/lte-fr-hard-3-rem.pdf \
+	$(FIGURES)/lte-ffr-scheduling.png \
+	$(FIGURES)/lte-ffr-scheduling.pdf \
 	$(FIGURES)/lte-phy-interference.png \
 	$(FIGURES)/lte-phy-interference.pdf \
 	$(FIGURES)/helpers.png \
diff -Naur ns-3.20/src/lte/doc/source/conf.py ns-3.21/src/lte/doc/source/conf.py
--- ns-3.20/src/lte/doc/source/conf.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/conf.py	2014-09-17 20:03:14.000000000 -0700
@@ -48,9 +48,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = 'lena-dev'
+version = 'v8'
 # The full version, including alpha/beta/rc tags.
-release = 'M6'
+release = 'v8'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -181,7 +181,7 @@
 #  ('lte-testing', 'lte-doc-testing.tex', u'LTE Simulator Testing Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
 #  ('lte-design', 'lte-doc-design.tex', u'LTE Simulator Design Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
 #  ('lte-user', 'lte-doc-user.tex', u'LTE Simulator User Documentation', u'Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
-  ('lte', 'lte-sim-doc.tex', u'LTE Simulator Documentation', u'Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
+  ('lte', 'lena-lte-module-doc.tex', u'The LENA ns-3 LTE Module Documentation', u'Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
diff -Naur ns-3.20/src/lte/doc/source/figures/ffr-distributed-scheme.pdf ns-3.21/src/lte/doc/source/figures/ffr-distributed-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/ffr-distributed-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/ffr-distributed-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,238 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 462 498 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 462 498 ]
+   /Resources 7 0 R
+>>
+stream
+x+*213R0 BK0˥h^_a 
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 462
+   /Height 498
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+x읇_t ;6ر)rPEvxr`@ETQAl Qcleq7ȃd2-y1f'GAAAAAAAAAAAAAAD-8~ؒEhfmկ66k~54YWysXX	ڣFlZ{T/`=9mQaѓ%D
+2??>s"l=j֮aۓ~!2}ܾSVVfVxc9V-`_x8f=} ԯfmxz*"[uiOEyM4D!lѵ[RRg:퉼QԱ^ZONӻUrdfgg#ӧhTEakQ#vҞ-aaȾ"0ÇpݸǏwl_w2DrZq}6]ؾ}v.\iHW`+Q.ǎ?wK?g߿:h٧ǏQTA+Mq }Ϟ9cl@D5bk`iʤ+WQ`WVV:yÇ|?:#'mE=Q2'c>䪧0CX<uur=@>>yⲏ:"j9&OqǴmΞM|VaB҆g>}\M\\5
+aLU -	Ygl@D5bk\py\,DD+++C88#xN3Jv[QO4E.jq-//oy߳'x]Ϟ>0f.G"MLL}Uk{sgF$b&M!2%"Y*^
+,=vca{@
+[fCM~)}}G/]v[oݒGi%;#sxQ=Q2rFaX]P;-3Ơq!~@|t-W|7bHݰ>tSd)2KKK{<|KfT3>yJoِ{s7&%j]CþƔ_ի4gƻ{9qdgոr(wrFaX]P;I8)KJJqo'ۺyi4kJGViNSZ\to@Y5i-no)߼AhQ#>|@طwom[?ꌘK#Tn	zd.Ll¼籺u/_8K-H`[8sVrssYʀӇƎN,bNzU0>0*L;.d͚C+++%F!CBFrӞMDl;a{دԌyyy-61RHjUD-z%qyqğ9uVN+-'艒_90y.e=OF>Ή>qܜ&..sfJ~|!2AϻcUrC#>n:]֤)8))	9->%Xdy.hOh޹v333-RyӚcXo:td֮~0f@[L!U.^3w[N%s"XiգKWؘٓ"E>=H@@`(sRʇzzx~<.8$zRX]DڞQ>0$).*i?vB</Vm[?z?(C䴦+|)fy[N
+]ux$4	i9t[aOU/af>upߥ1|g'555#=̂e0#_+u="N+F,Hɹ{.c8wڶÇ2;rxܣDӚ.ׯ1v-..6>3<$;dD.lluZwׯ^:o.F2VlF"~=Üv*,,DW춡wOQ"ɇ i	^xW}Ws"~=Üv޽AWq9z&bh`h!?,?g0(g:ܳ:iٓ	{pZZI5( 9j:f8(4=1e- >Y("N+ŝV!@rZlꭓiMy2Os
+"~=cq|rx?['5ioߺrܹ-5N~1aLm[H|rNFPk('?{ ŝV!@HON+\?l'(u줜5i1Åbݽy~T
+˳}]3OH$W0kfQm"~~{j(<hq4d?l'A>I95ZvMl7p2\BŸ=EBBߞk	&r	"j͢buEZ{Ԉ]CVOZr}XZauAvZ>Op2q=~[xkذG \HVIX5jEakQ#vvZ~jN*:vR3Sjocd-UG7Ē{:HXq.N Bu"j͢buEZ{Ԉ]CVOO8aN*IEG+
+t.Nۍ8xСׯrq[پak	Vk(ڣFl~nN*IIsԯ?>tpڶ5}'N^^;wAQQϝCg="$W0/b,-VQG54iEԲI9ŕmZ-m̒[h%B<#C._|CѦYT[.[kkhӊe;)WS?8ӱ2ц=C9ׯ^~sWA[kcuEZ{Ԉ]CcO-I2>HafEakQ#vm=X]D5bkڣ:~CVͺ"ըqm M5u MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=HSARP{ڃ4U; MivP0|Ϟ۲Km-&I^^ޚc?5V|ld{M\KNvP[cG'syJr{`/],ЖK6WYYĵHjl.9rpCKo+@nP^^'ibAli,Wo@;nJJʖ0_	ycvm<6!z"?^pύwR ۳gL?gkV 1qӆ9d"݋b1Z;u$#kd7oX0cڴsъ
+UTT~7WۦrFrRWte9)q%S')r[[e9qi	rNvD>y
+ׯc٬~4vkg۫C#CvLr)ݛurwk̩r)33P)8R0uwÏC6j6_Tٞ-,W2߁01_Ï4z{)Muo߾}Sh: |}ǍӢi3WfV,'sLW3W.⚢,gf(ɈKNKpupZ+bЁkWvqp퍡==<Ɇ7ԡX,/,U߇4
+)ٿ=̛ׯ72k 9#}ab#n gnEu^*p֣GbU``0qJKKHGbߥ!YpJΖVNYNQ2+Bڊ}6SLe۟WƌS-ر7BJt]5ʥL|1USb0UOQq{,Ø-a/^<dDaãF `˗\&CcfeeWbOtbΖVNYNQ2媝W!5dŜe95CYER\rZ&%%}עφ\{wϟUQ!%:#'(D_Ǆ}1C A铨wLNGqM~AO|lN>֜VNYNꙨ,W
+)&*˙ yr2_P-
+شaK{Ѽ?*Dg܍/\.%:S/!YrD?wnq@ b)5GNO?oa4nG׋VNYNQ2媝W!5dYte9EqP9qi	rN珪E1U}XzaTH)rZ/:| ;b:<΢"rE<(5o޼Axc{.qڵU {C;-,(ruZ
+&)A(˙ " '.9-Yi9HtL͆ҬkġC߳4?*9\Jm۵rkq4 D_}g̼{7 `^3edGt҇MW#,a*xB0Y%3QY*oSߚ,gU117srZRN}D!˗7&ǒ	BJʥTgl͚G_\8 FGZ=S5aqQ1cYZUW5|Ty-cF:PYNꙨ,g$\J35EY4qk,WIq1%%O\|*)y233_z	E!FJ픖3߿JN3jZ`Quaa!"==]3+M^d5(qV7qi)h67aXh[dvu%M)XCg{6EZ [S4U;`IIIAܷw[QX"ؔ!i=HSUs厞K޽sm!I\zƽ؏~߶w}Iojfנ]XED9{jq>=GoF:->C5H(}mfE\'
+^%'
+`iv9-xeN{A}FNں{YYEԂS'O
+M3ۈÆ*|6-m_kQܾc,bRRE`XhчL}j^ҘVu<q¸B_k
+b,T[[9-,=B%UlQ;a'>d))&lt14tw9}zmIc1m]ӪGzyg6;rna&iWxjDrb$.)))-",$NMM?zB	z"Z{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jT{j MՎ~/iV?	S+~4O?*QP?R?GSS+~4O?*QP?R?GSS+~4O?*QP?R?GSS+~4O?*QP?R?GSS{eqq8<{񥥥?i?fV'%Ԃ~4/2!>|`|5ރqjo޼vC,9- o^;->SZ!PQPiݛ55|91VVV?ztޜ9WMeee[?m԰W/=cfġC,A=7_CdևF!J,פPksH޿GihM.]Ȓ}}-hrK?$.n9˗Lz*//ǧjHOOG|kj~¸&HdEgjZE?TGA9mC#s'X];-\q	;wigv{vݺ7wmK#G͙9YcנˑaCX;z	^nPtskѴ<Y
+Qb&FAz{{WWH5Gn
+X"oߺܒ'N jAN:6qq'WmȂϝ.^^x|iѸǏoH?{L"35CS~U߮N'G̑5i0sZ;q6$[\{:0xi\Šl(ArUcW2=No^[wnߑL;c`ɵW{lŚUTa"}5\0a1v4ؕ
+LDH?z$YLT觟j((紘N<ab0&?wgnߺ~lg`_c`2<
+<$u]?D%SpZdABabb`cnNdJi1}{"gjl	sZWocD+(ţ186&fʤɿΛǬ.\E35OS~U}ƨåy]|fLp[<q"$YcW̝5RyN b&K	+ʥ>{>iS࣡Ɩ0(
+
+ji.]dCBܛWǎ~ZNCF!r<M~Vя
+NˤI0[Ξ9s8"۵`ܾ9-gl*99m'G-㋜V
+Hwب={dJӞ?w,K-O"o-aN{;il`\?;aaU8eQȞ\E
+觟j(3a_ ;-\>AlNΰP$X*^q I$>tM0u&|:?gd I/V
+H҄m"!a]J:->S\])-aNϣׯ^9u.}kD$g7lG|H߷g/o-iO?*QPiua'pZM'l͞þb:
+c2ϰZB׭ǸCOrUdzBɢ_.̝5[rK7͢ض m}6ACY]zBE
+觟j(hv(5}U/d00qff&{ʴVU6}YYܞ[dsZ?~(V6Խ"!%Ԃ~O'Y!~4O?*QP?ձgq9O?*QP?R?GSS+~4O?*QP?R?GSS+~4O?*QP?R?GSS+~4O?*QP?R?GSSo?if~V!i=HSC
+jT{j M)=HSARP{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jIM3?wnadvv6"عg5ܷ[Tx4[O+O)=$5eo*ǖG߇n?uJtXz*SC
+jeݶe+9d`~Ǐ%%%¼EEoSV_~MOO_DL~5rcw
+N\Ra(%_TXr,Y)8Uğ1O)=o=`1Iӗw;m];v[9#asgfW,/v1Cgy͛7\0WpQw Z"rZSJ8{Ls&U-tr<w^\ؘ-hj,ˤrd<Y>bmfЁ\|ޜ9{~&09)"HAdۻ"09mVVVcGSSS>{<"pҥ;v yIKdFS?}}hReK:B	mhϯ5qqP\ɾ}C׭o:̀"r98.dشaӇ#"4w.
+Yލ,>#M].?}d ޸~˳M1$lvUPsZ8c0l:uQ*m32ܿSB	('AʖO23j_b%*kNlxdJi9G_F.V
+L/lsZ~gϘYcWv*Z`'N҇r)ϱV*
+NXv-Wb76&w%KEKN7>k!Cٽ^=z0--- ͽYsbu>0.-W>j|#(0aCNV2>=>)ǓL/,N3o
+cӗOد_II	S&M^`0\vq}&<ZiJRP{(;gUysm1i1FE<Zlr.]}*(_F`/i9dևbL"+**Vmі`J>k.R["e||J6i0Xgјvƴi<1ue:&..:Ɋi )=ݼScxi_%'cF2Ϟ>1X+ '<>i䂣].)pff&avyӦt6r9d)))v'"6n{Pǎ`Mڮ<M!%sZcTF<(WiYYY7ڌԷHS!sqa^Ɋi )=Аu?zX5l㝖Kci\ON{1^cs&9_sF&[߸~cO5vt9dD#CDpʕkNtK)zvB)ÜwOC=,{v`lHϞ:A_G+"1-JX!R	cZgp
+I,۷ohYYɔ-=+:e<-0!ijqZ!ijqݽ;k+64U; MivHAAjT퐂ڃ4!i=HSC
+jwii˗qo>$$7'!amHjM\\{zx|ڍ"jMVve,2RP3-ZEzz[oRP3rk!rZ4:98~!5C>NynQk1-ARP3\|Yh.lCB]0=AT퐂Z3;wk[嵡eʤBeP?U; MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=HSARP{ڃ4U;ЏV_6oC?R?GSUWK䴄ZЏڃPєV{jA?jrZB-GSrZANKhJN=i	Mi9-)9 %Ԃ~45i߻7}.]}z?wkRTXtsc^u^OҪ<sDNKhjVVVkξ_#surF96lPΘ5ɖ/4&f3s	̫LiUFzҬ	^-y&%Ԃ~45iO<\0ϟYL~~!Cy?i˼*̠I\܇(;LNKhZ[[VdggQnEE&˿͛?qի߼yIY%<j}H6ù99|Eh>͑o(dмM,Ĥ T'o=fO>!=?(DbD^vfq@i"ϝG*+x=?ӧc{-:ZEEh,XxILjPѴN9̟;PQal~H6w1WgxF:d߰QK7A;42xy/((f|O]|`:|ՍqYcׁ5ui֤鳧ό[>ώ@{.PȚ5\QVك0iנ{gsVn-Юv>{V/|rur1g4.:rZB-G:3geۖ
+iJKK1*cҐ%8hД>gdvƏ7_,8\8O-#{6nQb8VdQ(oqQ0\w0Ne#aa gX|EZ	đA?iY0xSH'ysaXb4c0Ob֌{X-a/^`ʕ/Jc;BC!SE|߿orL?//C͛6)ŷݾr2_aÅN3cXH\WKJJP8ZANKhZ[=`Nm|V)3BbW䴘#'Q!&=,_~ݒ˷>&q_}{	n\޺;
+|v[}붪Oeb-tZ~mFC;:!C#è#nݼYq9-imވ,%؂0>%%LG~Ç EBNl1"KHMMEJc]rqǞ=a
+7wy$CvĔh;w([eeBQ|۷neΛ=Gg$q8 r=@9-OyC.ם;k6"1kP}uwﰋ)9\sssEN+W>+<v	fn|Rq#qSƾaؑ؅ױ[CPqEEVNqcv,Zt4rE<Xq %Ԃ~45i1lѴF-8~(,wĉ(tsgLGF;edsm۵rkq4ʆH֤iׯ]1tV|v/b/&ҬkġCك)/S$O
+޿g
+K(o|p_Y	5:-` wܹyG-/k+9-NU?ܕmuKKKS!8[fN)/86{ ke@n'O0|PʕƓ'/_zmO˓;)6,sja#>\QB-.*?f,KжUkn>O%tZ/0lfits{
+rZB-GSżX!ab[XXU9233_zȒ{Jm$"ׯ_:PfϞ>xUrreeQ66-Wi	MⴄpHx>UAA?%䴄ZЏ=ll 7Pєֲo{m-9-)9 %Ԃ~4%䴄ZЏڃPєV{jA?jrZB-GS%hSFNKT{j M)=HSARP{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=5Mx|M&[-,))iZ՞E=x32*׮|
+wnYhqVVVÌ(	SC
+jM/DE9;mʤm[nGɔgOiޒU'O_Z+H}{2#r
+PTX1|Ќ:+Çy2͸P?U;Ӵֺ8 wϹfeeep]5:(=k|E9#9mee%/2?g6\;WV"\Dk;ϟϔ^Q^5??_46P,
+.YHBT퐂CNS'O:·c߾um8v({Oyӊ1.>d:xv7l4z(i\֣en:hN`(!`B fSҶ[cz.Y;;\8-+͛7e|}%z`7kDb.^^և"l(|YYY4._IՔP44d]߼~~1ƌA//_r-:G0:uw܁\p!̦)YG711q	bcbbf
+0(޻!ϙ9KviEpyŘο~j`srNǌdyqYcW/hի;mdƍŊo\dj)HA!e7B7nh6e2w7k9{GD`{`'և0[4j	AdE<Xn˗aM x`JJJ=vCjPsyI;(>d(Ku>dN
+bdfW5){j,_IՔPt_x8z7͞MsqQi7ڹcǼ9.7VסӦS'O"8#ci{fG\ݭ]ÄyŤ%Cc2iq<»\iQϞ>C߾}G{i?}$jJ/٤jJRP{i><董WUXj4N1,f3۰>#@y`o?zSrQl^^b0睖RfPA˗;('pZ,sk֮5i%˗lO)=4ׯ^m۲աݻ11Nvo)H)ާ5NSrw&pKf Í߿{EdE<>S1J9l8Λ;pPVV`aiiAIcw!2|}1~ܧiɜZt4>T䴺
+~el掩sX[6Bg{Wӳ6n"fa`UݷnӱdF$FFTܜ		h$vulo%Y;E8|TPsSָ|}DON+HAQg81dښqᣳG!rKX<Д/Aqq1{5^pj7\wM֚]>GTF4MJJrhdyۖnM9u-R16)a6M/]8|Ȑ}#v[ԍhJ)=HSARP{ڃ4U; Mi^͙س{wWO"TJU3cڴw"ISR\\MukZQe^jڶjǻgH91T8~\tkvzaN˶={1%MUʦDNKmh;~9JaKh
+.ʬ.PT5y}HiR*++
+ЁnaW8mƮ[¾~Gꥴ4|7[na1Wm[/@RP{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=HSARP{GS/J@ŷ-aa+~4EǴvCNKhjN~!2}ܾSMEEOkUyT9-9mEyM4=vKJJR3$'ת"SrmxZkjA?ښ%Ф>|=~վg{AԟӺ:lPbmrZB-GSrƎNS&MFF_FF;p^^ގۧO_b0gVTT;rtܹ/Ix132|i;w,vmgϜ{E,Xh\rZB-GSrڋ.=W._FVVVb@[VV! <aw#CQ3ᇓ'LW=m6NvIII7Xi˗qo)%W,
+k#4dݪ 2h0=ӯM- %Ԃ~4)I~,y411'qqT{;k6'LX4?L-..vkVX݃I/ɓ,2x*0xkQi	MmiܷI|B.A~~?a}3vs\[eަrr?6|ϞT7ܱsݻzuPԦDF~۾{0f]ǌ|GV"j:t)rZi~8իrȠCF~9̅PԦ6//Ef~#F
+Wt1moTPP19U.߾}L;.dv4Uk"+!eVVD!!ϸ"fANKhjSN;&ϟ;1{vE` á{wu8`μgJNvhdX\̜t8"VXA>tkׇGajA?ښN<ެ9BSfk_|ݓų>;wq:	W.,2ڱ`@dV' rZbfMpN496&Ã%EzzU/RjA?ښ2*+޼~1mqq+*RSS3ҫ{Ō)y99oSVVVJW'_lAA90ߥc
+i	Mmi@NKhJN=i	M-YuY,+33yܜCuo)}1rZB-GS;-My0#ª25r!2
+%M3hɵr䴄ZЏ?U"$
+FE>}2XrZB-GSx,xjtZu߾u;xO+++߳gƴiJKKk\\9[Vٗ.^GO25AV/VamVd9~({LµP
+y􏝻.Z05BNKhjJxjtZ\pax/NPX??1Fuԉ=bN6 wnV]c"e/*B*aE,/ /Cv}{1a)
+-P*,Mf䴄ZЏ8Yr+\);\ >cD~Gn޸׹ǒոs͛6`+w1I0]! *aE¼(^=zxw>ii&Q,P\#Kn+c=~Fel[vd1pd"iXԸsZ OpR+w10\½Wd:;^ǍR`"ݷw/WdhJNKhjJ%:p öyHZ~$`^
+O]Ż[Vq%5.Ŝl+rskW3k"Q^ZR`"=մ4)jA?ⴒkdɭp|@.,Ծa\i= E<[`?$VĜ6{C#ׯ_%WsZV	+iSvZ^X9-)N+FAr+e˕eY/a+i%%%[O8飯Fc,Z5Rŵgm͚>YiZ%F;eZa)))N+yMєPħ$Ȓ\gŊiۺMU>"!˳=j\\9-{  X??6\(
+iN_+Li.{jA?贜Yp%yyy gU#͇c' r@ZarH^vei	MMwZ pn9󀫓k7!%Ԃ~4qWxyG\²hrZB-GSv6-m䴄Z MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=HSARP{ڃ4U; MivHAAjT퐂ڃ4!~4iFjA?l~-/jA?ڂ~I\M}k,NQao-9--8mEyhެa7޺yӂ-{# %Ԃ~4e
+i+WgL}{*g-k)U)䴄ZЏK-c07ڭISnF\pa vm-gϜKS\T+{s~*(hTo۲uGsFҤM#/^6ej]c䴄ZЏgymv{ !r1{zxK9ɹ{.c<wڶ۳{#G9&.Uǌpƍr䴄ZЏ6봏Vy?Lz'Y|U^;TTT0ri0'HPXXp=X9ݺO?3rZl{tPf;<yD=ψn޹csbwi0e{y^xlzU0O7~PWXM%69-:իl}`_~KLLN+9>MÀVikWiZbSjA?ڦa#Ѭ,vf>$}S;\:BKl
+rZB-GSqaDl[7oٽ}F7_窿rktT'qqa
+qo9?%%E.eV%69-8-a:|	bcb==<QuY<1S&MKcYUhMANKhjNk
+:KKUVV
+
+
+ʔ䴄ZЏjqZti	Mi9-M9-VD 7'%|U&BNKhjSN!U5#;\B	io.>Ze"䴄ZЏ䴒 A?Ŕؑ]xI,x],SVn5⢢۷O߾u;xO+++߳gƴia7lPZZZ\ioߺWUT+Vܽ-ЪzP'8-lm	ƍӶu';$Nj],SVr5-8~\]əyZ~.cFکk\9-<tڻ{7jAc;Od܏'ukU}_prZB-GӟW._mحIS&%ŊDiV:{?Fozt<ߚ1cj\9Mne0R8*lI\WޣYN+ZVYANKh6pVn-_KKK{&.V"=~FlΖ[Mk@\,Yy<;_v-vnR\ial7|$[&??ް>tS9U_ȵ~/79-OpZ\N:"%:~i80 effʭ8 {Kpuxs~/[%~x%l	GҬ+FA˗{l%tZʵrZB-GӟഫWchǞMM;.du)=[Mj߰Qnn.m4`lݻqI.1ރ͙ѩEzrEUP'8dx7ؾꋤ(u?UvZմrsr̙9+e2LXi%%%[O8飯Fc8Z5R%gm͚>#4d"ݽac9\jA?GP,~lx],S=[M+6&m6UUTƑ		^Yw`t]\i+ưP˗/}{v;v9BrZB-Gӟ˅ybb*0|=y >dU#͇1EFz;?:Zщ+䴄ZЏ61':{<>$ڍwi	M jt//[+W1	9-Aڴj4!i=HSC
+jT{j M)=HSARP{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jeM?_z	ggg%KJJnV'xgO0?zt8"ʵ+w.Z/mq̸P?U;PBTՒ=v2irV[}Q2gڸdkU'ڵ]#ˌʵ+BQa!CBÇy2͸P?U;Ӵֺ8 JwOTPVVWiEׯ_s戼.7'˗/i+++qT*!vBB4r_^Uh?)*oii)逰Hf~9vODjr:y`1o}69	 c촢0FՋ2ytMj6=r4NѲUNqkN0@`![i)xim-1=q.bol͛}{a=}h5}"1@/CQ6NSHج,/٤jJRP{i5ǏC`̨QrNkK.ע?zc^wx<liqM0!6&Kjj*Fp` bkKK2h𜙳$kVPο~j`sr?^e8~X\OG5vl^աm;0F^bbj7._IՔPt@C7h2ݻݛ5猜{#"HH0NAYiCB׭
+
+5| R"x{s7vW˰&X<0%%%]\Aa^˂'Y;ﴢ\܏"0p,}H9-*̋mȚ5\t"+j]|&VSB-CN}7oܘ7{6jEE"m|vhcX`^bgL"O<HTUݧ՛=r9wvb(杖ӿϔIk=Ne[۷o¼b<9OD4vZ%T[M	@
+j9Mccb1c0C=rTUJsWm1fwuևb"񍁃ubGbJ#Cf^*hryxNEcryvڵF;dM!~1իm[:42ܻ{76&ۙ?2i8aJ$n$11`qw`ݧ=s4F# y|B],,--56(yLqZ|.DFyz/܏5:q#^ݧ*VWCA/_L71=ߺy}Fljz8}ƍUČ:7m:ȃȈp"!nN-^ MҠ$kgÚ*{sNkHxO>g'Qx3|GmM8}AAYXG%,hJExSr.񃻦`|Qk.~~HAa#&%%942l	ۼmV&MϜ:mє0RP{؎.^>dY-v4%̃ M)=HSAI
+
+~~KKARKTVV=!ꄨW?ybtB]jGzygO6Gxx,ӔVՐjl.2D97Az,9 ǎ--mEÔmnXShֶϭ9OqQ}쇐Ӫj*2n^VVfv E[rZUCN0ߴkАl׮YE[1E O~߶|WjT{j M)=HSARP{ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jhjUh%,V~z~Џnaai	Mi9-)9 %Ԃ~4%䴄ZЏڃPєV{jA?贻v\h1-_~8""??ߌ4Y*ׅȨ:s1S^^icjA?贃@W'gWgle1m[yV,X||ř^˓V#̛=|M!MY,ԱRIi	MMtڊ
+ o16-ie}b7rZB-G:-{ZcRRRл>$͛7,򏝻0%{xn6] %{x!Mm|iW"}lL쩓'Ou<{?$]\To^d@y+++C8dě6lsy3sֵhaQgǸ`@iG_B}9#{YAA;ǳg7fLy<H)BrZB-GS3F`0ҕ޸~٥Ycׁ5ui֤鳧ܭ]gN۫C#Cv1?wpa.[/f3|͊V:9|mR2|Bb#Jf"oxyU}|L {=@Sq
+i_.Z̷mы{dك0jU9-Nc83|cF=QzO \tqh0l>Pl~)c`_vsFևѲ(#s!xׯog8Kaϰ%KPl{+!)tRX+,Z^zǞ9}:y2[sl1??@k4z(ZGNKh	hj
+7GU_|1c66҃0{t&*9-fH}*hP$L檝\3w)6vwlv9ZUL{?rp*,,,))A{?vB<dn	|#g|vlC>.N˟#߀'O!|<ΈDŀ
+fl/^G-g`ld(,9H!BTգV̅V݇{lVI	GFqM/ZXçOEU 1W>UAA2ir]ָ۷nC|'|<{xԌB0ǯop%ᖝWTsZJ_`hSQ`Nˀ?wnq@ e c>L
+gNƍ#ݺ`#۷n<A?ic<];v1CB|z(8-˅1h	Nyyy%6lFTTTXvEG#Y>,;X(
+gCv3ڸd6z;k6;dgoӾySU,{.䴄ЏutZӇҬkġC=
+߳uvQik&1ۊ*=duwZ ~wܹyڃV%L...ж]+OyȠ@V*!<q"6&fڔ7b8
+_uk4׮/pZ#>#V 9-i|e=I'MrՏ͚>},FnZuwZ <ݧcSSSs_`
+Fpv\`^==<f1fkap}9mqQ1cY9m[]Y9-iNk"Ͽ~Z\dyF0LߦPV#33WH`bQrgKGEHH`>=}W$3j{(BrZB-GSK9-aq
+
+
+\ߎUAA5f$%Ԃ~4%e9;;!||019-)9ݷw[MANKhJN=i	Mi9-)9 %Ԃ~4%䴄ZЏڃPєV{jA?J
+H7rZB-ڃ4U; MivHAAjT퐂ڃ4!i=HSC
+jT{j M)=HSARP{ڃ4U; MivHAaEEO>o,ۼkJ	wܹٵĞ!o5۫0gsH6nu|2Yg ͈̮D,x^
+P?U;0]S}زzrZWg'2f],,//7y)@T퐂DM`oۆCBxI<usWXC3cG"r%	ϟȼ۷Oꏔ[9C=ssF)m\?~D/VN25/A.%wGR\TOs<		o۲u?JܩY)aDM1?⍝V3o&oDbӸcڶndguޅ;_BHcנ!j	Y\,?}M\\5
+aЅ-KKɪkcE`\-9_ss]@9h?ڶ۳߈%OͲUwM	hiu+͛p=et"KZp{#b&M-\zHN{sgfYr(9Jc0]	/rZɔjaN;x"a9у5ۻ[I'  wj</RP{˗냖/?{;!CNv.p?oj~f.-M1	oX:{LG,#I1s$ީ0wo&li%SN+Ws}{r?F|9Wq1gaSy)@T퐂ML,ZPRRI9-m[>VԡXmbhJi%,~MjeL;\-iGDp?/N˚
+0eN+wj</RP{Ԩ/_gg-Aᤜ?YǏ#).߾}gƎY&xƎN,W
+N+Y-riN͂ SC
+j5.mbI9m^^^ƍ)phPūdF;o(**4dHL?f,X(^V:ܩY)a㐂ڣFMգKW+#48'OyHH֩3v1Ze$KnM"aD(xd#,;vpƂIk,ֲN+WKmV,x^uєqHAQf~OEEBVV(򖕕Rl}PZN'SC
+jT{j M)=HSARP{ڃ4U;0ִH21a@'OFtFrZ!ެYB-ܺyuwhY>}ߥYEj)ﱬӪf]G4iǤKNR:|X6k0rZ1y~Jڷ$k@N=+Whz(iUǛ7ovBj߁S)C/_և:9-Jјbb5EPlXcbE!b~XMX1UivA@wqRe]Vݝ{3sy=3;#مl=ҵӊo+5Nt:ݙ$c|s1ӊi*)Ai;xA)(xC
+i*)Ai;xVӜYYWGRS]y`NMb	)a[M{uPC~*b-+W_{4|mLFl?C
+m5H23UT}6A!t*OU_MM#S!N^󩯯g55;wmن;Bg]G!kg:xܒ∵m˟+7ׅٳϞ=ë!!Ǐe1Evl4?iua/[d%}9c
+Gx6wHAp˽3l:f|tDr>/]<<&~9865fFYp@CQ+"Bݾ>O?Cؑ&Ճ):lڠnåў<)`8?46v(6wZ1UUU`o>)H3Y͛7aS׳Faߧyydl~0Ԩg,Xivv:eI<dzTӫiͯܾu<quff?~x423щ}ss-##v6)OyG:{ IJڼq9sݜq6X NQʚ@t.M	Blz՘8ǂ%ŘXi[1?(<RP<EE}z5|jz
+:"9EM0b0a`8be(hiGF&+jKb @m1wZ1#v6z)⡉TlV#2SvzZKN[i&$ղ2։QQUUUۏ!***Xү;دAGlVCy;xhⴛ6`deP?liw)%9ٳIJLlӢ	abk]nݺu=+2{aEyysݹ}'|2lcքTeeztbl)⡉>yaٗy4pHN[[S3\**IxN<}
+ǇMcz=CzZZ}βxyLIqA팍UhY<RP<Ҵ	5j|Y gݳwn{Zsm]\TU>b~X9(eĶ[@y;xA)(xC
+i*)Ai;xkZQQQUUdvRQ^/LA9x55k׬rᔈ#|r7O/vݽsGo	9x0MeyJNKJ2|@N+AKN)0BN+AkIilsKiŃiZ<&:ZG5-w;mvЀHmV<Ԛo7FE'br1W7fdh=#-!sMz}Ey&!ډN;7zl;Nh9xA)(xC
+i*)Ai;xA)(xC
+i*)ȣߣ<y**((OVʃ<ʓ"d<ȣ<y**((OVʃ<ʓ"d<ȣ<y**((OVʃ<ʓ"d<ȣ<y**((OVʃ<ʓ"d<ȣ<y**(耬[lZ"&zkzZhX5536߳F{܆ O'L(^:{`tsgcb?<i9zUmwz+1Λ1u=Fsi	^GA9mUUc0>	:wێzVÒ&N;㑃o9-(ӂCsWN &::dfƨ+pN@o6oV?b|mm-:/ZwRF}ևkAJrE_ziR'ŢiS"E=`zӵ\VVZ!%xArZ&:O8VtɫG7OFu57Sk&$t{ܨѮxՃӦ}=6D~^VVy6Em&=u>ds8-lSa[vvpsr<wnkav{9-(0C%GFz6._g%+wL𸴴kPd!TO=ś^uZhA
+GX%L~nh(sftY\TWX	+/ȣÜ|v~?aMMlad_˗YXCCCL))3NKD:fHpWxhz22TiAFzFYYAǏWJ]!%xA洷nzJԋ{#`=x䈏Wӵaky-==`ile]x8:1['xoX;0BNK<
+juvM}hy?^BfՠUaaNy+Vrsr~᰹z;v ,?/OȜm~2~
+EfWi	^GA6nsh]>QQ(hуSYgIq1VqZ<hF7߿;BX3-Ul=nX峭ܜ\Nk%̮ Z9#Gy!S~2~|7O		\;9}o?'\<~JMmk8p)5X\&#ߧ|"va4.^|<gt:;y왕0/ȣVN{t=>ydڔ Ygn/xs}XRz756)mނ
+;	s洍Y| lڌ
+	7nX	{
+/ȣ*+lyyjpݦ7opjP>(|`qtؼ^̼Cka_]'OEEJyGSyTTQPy4'OEEJyGSyTTQPy4'OEEJyGSyTTQPy4'OEEJyGSyTTQPy4'OEE--/Zr䩨Ai;xA)(xC
+i*)Ai;xA)(xC
+i*)Ai;xA)(xy-کEi=/ٺ=|DIoO^23X-(Vu`w¶j/h=)]:	Oi|\3",E/XT__UcZOh/eYJA*WmemDZ&bJr!l@?e١TЊRC-defQA+=~
+ZA`e-\Z*hEe-/>~=ZςhyyZς%ZO%zÇZς          ^io
+endstream
+endobj
+10 0 obj
+   28510
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000029525 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000029500 00000 n 
+0000029590 00000 n 
+0000029718 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+29771
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/ffr-distributed-scheme.png ns-3.21/src/lte/doc/source/figures/ffr-distributed-scheme.png
--- ns-3.20/src/lte/doc/source/figures/ffr-distributed-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/ffr-distributed-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,142 @@
+PNG
+
+   IHDR       <1   zTXtRaw profile type exif  xU	0C#)!nk a|V{ԤkB"!A4@91ݸ1mr_:21ӮCe;MF*VqK<E{Tz,0%K  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="462"
+   exif:PixelYDimension="498"
+   tiff:ImageWidth="462"
+   tiff:ImageHeight="498"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>;   sBITO    IDATxwTI{YrRPA` (Y9tSSE,0
+
+JD$g7U=ok!`      Z   H    Z   H   j   H   j   H   j  z \K}
+~h1ݻ#Sr([6mr?}#r)oO 4LMIdcc#| QVV4k1T*UXf&
+!5޽jJ^O?vqrnok勋sjǩS_x~A4&kW>|yl233c5R-w߻);+ =Q\t91!9}挧<Q1?>޾r鲖ߘ_!E233?o޺I؁\z5==][[(JO.AELW<aDSӿd⥥gΞ5LW!aXׯ_a3())	}&&f!Ϟh
+:TVV^<aIKFoKFEF93~ѼW9`lȵDwniJIK/ZX 8(`bΞ}칦Ʀ^g(T...Ͽ[N^>SyaOCq/ZЁ_89}>~Ғ/99,	.+-;=Ç{D%%&2茒Y{/Eʻwmmm.3\YǍJKOdcaض-[P_>mYBBxr5l"D!L`ؼq#֥PT#mނae__
+&6ð)$dڬOMi($rO>j뤼{a03i^<`2Bo;232)${F?t<>.B"ڱ/t;zDXW[I@!DwG1>=M!?g~zMl,D~غhׯ^qĄD\1,43lY#k-+QC	ȚY9AT*B(aX			}/_V~QTXXUUсzJQQ!$%%(PDPqQyPmmMqQQIq	BhP]C#= 22!:jtT̄iN3>e#ؘלx6gزµViIIj@Ѝk>}z!*CNNNDyel
+fLwikk7Ч+((0'dde	~J"ׯFnnnBAui.nܷoܒ.''kRkh utŎSYAFFHk>:>qY58ÖmVSssR-B}529s֬[Dؿw_C!TZRV捛MMMqI/%$$0[hP}!,送 ~Б̝5LLv_
+]=^zߺe=نR߮561A^OA,8\kMHp0[صv(?c`:>s*Ӝ$$$<8MRJYՕokkѣEE---3\i4ڡ222Ο;o``gg///pԔ۷򹵑}\~N`@kЍ[~IDW^;~ͲK<~||/pvvq۶yKʻw/#^:qr	hΰeD^!iZzxBpdeeƏ9|uE#X.Z$*2r!S3Sn\~U^^{v
+}H$\fdpҥM;LEQ/]ree__v"w0bHGw=			뒝֖s>'M{6//_~m'?k.3f?>+x*J=rh̺m؀'6]<]DDj?O~M8QEE3l"@譠?Q
+0'O}|RIrssJpJX+2Nnll耧?($r[[d:OW'aVB"1BWK{x
+3q
+l>as($r;1ttf͝K!OcFL01ݹ}3)$r蓧ZNQi9[ZZ8V766xh#װeD^!̙(`·A X'so޸"BD"QMM)O^⥍?0е||?O:O:rS'$ߧOfN:477ӕzH$Ndfu2sġOC7nޜ-?#001}٢%KB%Ry]URV+)	o%77]rk Z#++w%EB222f#Ap\Qk-  T[W[Ünml,?	XdOLI"!Zlp(V Ľsqr./+O!@Lg۰_撝{۷o_߾X8 qڃF2g^kB=8HxƍںZI ^q
+o\QVZ=w<Ec5Qmg ͱ3|#Ї״u-4[k8ge#A8^ORHaCfLkΥy-0li[6m45d5_uwS'8Xeu4.[Ys%$8׺"X%}>kaqڵAi;r.NN~۫kkwPH䚯50655׾>VbWs2L/~Fjj41!8 miiᵣد?066ufNv8ON?qB"""W.]B	Yxb5V|F `S11.Nǃ43#?8Tۿ_k{ButPy-1rdȓǗ.>֭ZC_kS?Z>?߱  4''ge]i]]piR|[\"HQ=ukw*++Oyz`4wׇ֬k73xMM 8}ۅAixjhhWטwbG}!>.ɶ{{yWVV0!JB,;YùW` B[W 4NK Zi)SBffG8xo͵`OV0LDDm)SDDD/6bxƔan%;]鈑#~$Hrлvg/QTX?yd9NkkkvVVCC7-Z3x;
+X Dpi)8!ЖMO??:Y-'?O0  @(jɰE@ޭ7O{$'?xד O{00       R-       R-   Z    R-   Z   w\t)/;51m87ן>93cm][[92f1Ph.T+OBBc0ڼ<<9:868z,0 @oAƾ'vy<j8yyyrAANӧs߾}i=|cIEVQRR#CB232Ն9P(۽<<9:$>ޝ2uXMMMW.]kbZZZs11ӬƏg/C5-^/qm֖;o''%::9PW׿~`kk'+'fֶV^ϞB̜=kֳ\GOpru.Ws йYs"4\[og-<u$D~p>aQ:tN3li9ikhXe0b:Y$J($cmNF#GQH $75Ԇ1y4!KS3|Gd^䬫=oiSooZC!݇]tm&FPH䶶6>9;Dp:4>гFOpr:w8W
+,/vgۧ=_.^wǎjgcfjllo33X0o>^y)~Gr
+|򕶶6>^WK;';ðaf0L[Cs*aXÇE1IAF!JXæLGs9s&R޽ӤPXӰv-uwj)$uT˳]&gٜG[uF
+,ak&~dYR/7o*''O*(˓c^%/\E]!$''72$//!ѱ|
+QQQ}A~`|e5N#ˏ1=7oklhdʼ}pބG180즿?L(+-KLL@	g;u \>^c˹~:uwx^sP:˗/{9rm~~Bh۷le/))fg	,AYLL7J"].~e__Aclj͚//_H$XJii)B4*IHH|ZѣSS1tU򬒲2	Y|#ٷoorĹYùj0SHN}Ξ"EBk֭cﯢ¦$'d!"?!jY'-%%ya˶,y&Ml쳰g{D"3ejl>U	a׮Z=ZZZ}15+,URVp:c:$J&VWWԹYaqnWX^B:tB2))g<٪t/{ӢIVo^!`NYIHH;89vIPǏ2cB		̯Rܳyta*+ȳg|:unRb:uwxVHw~TPokoghdsvjJʥ&Nd(62rI&NN>g>`0T:.&&:s*IUU޹sƬ4-0.H44*CP&NtWYYiv`@@nn.QRU%!&OPUUUiiT7϶4|sOڱ]F;uwxsK ?B2Ξ3gmۋ_?؟9lmie[~oضeBwg}|p#ijն;xz>~!I͡lN{zYz}#=-W\fƼ~ !!r䤤/4]xq.q7sjdU	o,]K@jkk?~DIEEEvVFU4-/7svΫMiӪ
+>nswjRII&JKKiTP[S=˹s.,u{uJ޽{_I2QRRb]MD"Y*crum81ed|\<<w0` 	6=ƹ?ճ+*>nнݱkסtDDD]F<@,c^iCǚ%r[gH1dȐ!C8g\WŧO&6\(ļDKH]|ۻFC(ScV.[^R\ro.;L}\YY	%txyx:O?u=+Q0&Bj.]eb~Dn͚)v	Ons%'%	#?z{y1ܲc6*=Elr =1c0;IGtub9jiiYaЖMc(uƌW~Ќ3+**2>}bJ=
+aۇܿwoml}1L v7	oa(J5gvDTG4@ 8!񣋗.i)1_[!
+◮^geE }%*}ld$d)"'3gXE߾}/^dul+dsLV.[sm:UW\ZBh4$0Wn\@ yVL	EDTT,.VSS?B:       T      R-      [+i;d5l#'?>ېjK  ]	L    @  T   @  T      T   	|CڇԔ妦Ԕ6> (*,rqrv2YX\\4us|U{Ǐ.N%%%} R-o==%{ӧ8RJ޽_>ݻw]]~`0wy$2	/~Z^nt<;+cf͞M$KJJnq[o߾+.QF{铧:::66S__*lkoդ[))X|Wi4jmM-J<}Z[G!aי-,XcDx7gϙ|2F}?9)F9{s(ꓬ;::Ό5rN?i5~q> &Y['&$"'Lȼm77D|9ct|}YaaS44489?r0B윷w\M7oy{͛WS[õ	&l\M?Y__߼94:WɒsOěH{i"ߒL/%UWWEGENw3+N<IR89&%&?'sޗ}/!>:#"½!Ξ 0dدDf+B"ji޽a[#޽K!R޽qobFR,,Oyðwɺ:eeQH7]֡hݽsðĄD
+93ޢߏQH+VҨ4^M0a0|Hp:Y-';ðD
+:d۷9''n@ D0ؑ#ƣqSXr/0B"0z7bA!SSS1kiignw^<B"jiSԫ1"9)kCl=>T~8@V$%%-=squ}6~1Q1RlLXJJJJJ
+BHVV6!>!4bW119>5[[Zl&[2uj۝2u*Qȫ	¼LIQWG5'***nqJ
+m&O޷緗/{0uj|\ 51A맦 bc^+(*>!$%%e<vlll̂E?D4		ffo߼  s=k۶y{֖V
+ðȈBKNΌ.D"`!JlL,^xSM;y[Cty,.!	6pa^_deөfyyyq"#F6,..vtroW;DIB^T*BAQA@ 劊
+C(*NrO}s>i(    IDATS TӰ?`߷WLTy_$**zmQQQPpPPss3B捛RRŋ
+o^uEvǎZڂE5ͫ	^p9a|т{TiS7ox7B6l۷XR^V6h`PA~B&))TWs{uu#G38ښZsso2 ń999SӈRRRr{)9|KNvnnjƿ>ege%%&>x<uWuu<xBn@'Nb4&xUyKyYӟӏLgذN50A\\mGg' %zիh!WWqq{|͛_`Bܼ @KKK^^~qnnPJe ?`]H=ð;)$0z,?9\B"SH6O&jC7щB".[4{1ʉ($<6X)KaC($0]>pM70{ک%cYK]'~)۱Fc($ZgϜkkjj0B";rOC=bXHjF|Jdg|WsX+**JKKoͥR]5655]e0EEE?ZHW(JP(sXQQ?Q75bbbjjj?C3+D8p raРA] \-+"#-3p  Z 	L    @      @  T   @  j'B:Y  ?_x<H`   R-   Z    R-   Z   H    Z   H    ZSYQqח{Wż~xyx444R- ,***<<9,|nj]{ꧥڂ|/OHj'?yvð6֖|:ZXSSSVVa 666666VTX`0[(*,SSjf6⢢f?bT7::O?Ə%'e^5clijfw<^xH}VVÇ=h7l49|D+l:Y  5~/_vlf4rT蓧\^hgea<SAA,,G0pJ6hkqϙj/^p mEnn-F?~7&QǙ[wBh-6!>}P'yyx ޾U'p5)T=6'ggeege!>ׯQ#KUUU+.lg"'O?>55';Yk֭=^YYŋϞEC9C8'%&?vlݡϟ~-7Xglwȵ/*(qcTdd{{;BQHH>}gBRٳrg
+֬\5wWѻ>7oYKJHD%!Bo߼2d*0f)T=z<~x-H/a:c|^}/><3#	!TQ^ZUY~ootڵNӝ8>}2pihjع;4ܽsF^rPm۷ws6GgؘX?z4|lںEsn蓧RRR6m:g\-m㬬JJJJKKuRSR߾ykiekYg~M!@ 9?yeƌ;w~_*,(loobg&bb}/%&$VPPRꇗΜYYYy5/Ui`:KPx闕JHVPj6)));xI3<,LQQ͛|Q鯂+)+WUUb""fQ+.*23FBB"m\RB	wիV}67# !_<ɓJJJFb>}VPH|HYY9["_E<89)y+~I_`æMyݸaՄ@q>?:**;No'Nhxyں}Wɖ;Mw9#)%7\Os&WyFKkBRsPEEHgۼ<YRRrߍf#y042L;XU5a!dkgpҥW+.+)."D>>wɿ93SIYyrrU#<~\VVv/g\;Mw.--yFuuOO%hPVVxnQa&%%)UUՔinpqu奙 '<}댙g<=Ș=gBhո!))ibj.9L\\\ ~`e1gէi($rtTa'8N!1;|(LÇuQHdu3|KS3
+sfctj̟3B"SHd"#1c0.7oP׮PH丷oy0t)$X#~lA4?磥K2:*B"hkh$
+lo3B"ji_˟7_PHdӧ1Kwo3Uq6GS@zOiTZ^n^cc#JӨ4ƼܼUUUߤ/,,(hg!ammmt:So̚jFqq1[tzQa!JA8zDQ"YH8E!$+++++V]g\~!			%U3CŁr>.4x2 s  `pW =&&cML`   R-       R- DaA}Sޥ8~-@7JH@7%##ƍ>jjj`X[7oZnݼtTt/=<-/+9{EhAZO	X|JOg+z˗ad:> Z0`@'ad1̹Z}}۶F	[v:S		+W°)h@'Mr8=dw5`8$Y@ 99:Z!E  T      T      R-      @u oNV0oܰ~FH нσAIxyx	  Z   H   j   H   j      j"۵VL8aIIViinٻ{GĪ=T 0?gnDxа.;{e{{mĤkWoXdɿ6Xz?%%;b  ?:c4f2Bqgx=5///_kNN^}!~qii"'')vTK_<{2"f2s,
+©-5%_r5j.ZB{{]'enoo_h!kE^/PYQ1{~>	TՌ/錥˗!JKKݽ9t-BsgaS2***:zB544ɦYk?z4TLLl49svrRH݇	 dgWVVZذikk?q?=~쏵WSM-?]TVT?8ejSSS{{gdDSׯ]cKꢣ9LrryyߍN>pv*99GB/½<<O<_
+zS^^6/Ϩ(ЕK/X/֭ۼa'NU=eee			/		f3mS'3>}ھeow'BnjsrBdn[dIHKII!:::n^:s7?	nmiy*\Q^~a3s		t?Y\\| 6-m큃EVUݳkIU5Q_?B%%$"BoדTUEy&I)Boljdhmm}~×QRҁwnjjJyGo
+z2w޼w!/G}]=BHZZa77oQ_jkkc	
+Xr(B~ƍUb B1^/^TNNNǼ~][S&Oz$$cgބYY	Mv1z!k+V9			\63t:Bn@ˈͻ~ۓ]~}܉0W ݝ>} 8/=@(2QBB?}a@CHB< D?[n߲XAQDIIinb|BnnnuunIHH`6n^"ǼJ"1OU011ƫ֬z%KDъU+-, /ǈ#;8m˖	&Nst|vцOӧXh'"TfI^^4$ BD(BhͺzzUT!;}6(hI|\^JNU!ϤAG{}m'-@زm%K޼},">01& bff?>}BytPܳyta*+kAԴpo)/+g+~0$kk_jJO/qqqn
+ðsÇKHX'"""*1Flo[S,M$$$;v$B(G_8:m\>둣FJdmmmcRU%!&O|ΡÇ S'\gΔV%"#_GE.@R୿t9O?107429{VVNV[[;5%E	'svj~޽ǎE jk%YFFT1k)I.*++d<RRR{fhD"hL׻NV.[=_ǧ;j-[B"F8g{{;~JY
+9s])$piS"^qqF#G/:ð5xu^O0,CM
+B"JO^pΥԦ($r\CmS*U47/r[548B"Ө2
+|#̶fLw1c3N9aCpGz;y4H T8R-N]]]B|»dfeMMMhR)VQQEߥkkjGkkk]]Okkk?~.>ާUUUf}L556D-4-/7sg%& @ի!YaBHIIIII;ΰa/)))))<ݻw޽|T10,Wц}\!^Fs/?D:R-  ]8`'""֦7\oTH  1nYǼzM445KlZ  ofȐ!CFºZ   H   j   H   =X Թm>/ijt>/L    @  T   @  T      T      T    xKDuu5/K}IƧOW.]%'ߺlbcbSUUF;T=aӣ"#EDݳ.))*9#ŋħO._]mMBKs˲ŋsrr4zrqqYyY9H@Ϥy=Nӝ>;{he%e?OWTjII	aj㔯e+0,(/gmmm[GOq|͵VMmMGGǟ'OWjkkԀN:::Bl_X%%%4:u9;@gaa۶o%))suu;#[M3M`ݽh(c#{w2;rp䨱Fnsj	-Mͬ'L(*,0l׎#Gu:S3c8eq,M233ɣVB' ,,|rMruE%%&iklXxјƍv?qrûf5BhyUU:BS?W HГe%ff׮{>G;=AAAW.(,,޾ysuossȦjُB4IO?z2:6^` .VYQ1z(|9a>:w?;yT؋~?|B'Y[WVVLꯏ=Zx!N#Oyzjo=W&jYVF<8(XEEE_߀NgXXZ>㔉{-[>sʿx9d#Grtrī9j3g
+
+K-֞|>gd=]v*d<vlAA>9aAȑ54.Z8sv'u54hkomfn^ZZJf_jp%Api)_-!IaObF WBeeev66L֖p>Bh%%l%**cVA;**!Ί--RS6:Դ﷽_rrSӇ(JDIH3XmM"[뜰bTVZ<FUWW1Ç4f]H>}B4J )~>&pW+zi3KnܨR4'?/'?/[ӧ%眜99WPTdBuԄ80˗
+BjiikiG!!I)csV**qqQh}wW#G- VF637_juXhhNvיUkV[X''ļ8t8S H$DNy{)?|{6777Sv999QQEwn#:m  ҠAvutt&&$ ذwlprvJy.i藜׮Oq{jUUxyvVsG0 ֮Zꭠpc	Bhڵ,`0_\`|:n4fLAABH[[{+-RJb4+ѣպzz.--u7[\bGl70ؾsǦTQ~ۻO/f3r4aÖ-^61`e1gѩO+**RSS[[[Y
+
+h4pM?޽s3f
+F++-clFmMe[AkkkyYwT4N744Y!NYZ@hPRRRRRb+>򲲲̩SVV.""r}HP#%%%|.25NZ$%%%F99 DKK̹W/_f0-۷9:; j뱶fY ?@   T   ߧj˦M^EZ\eK	 ukּq!uΌڳ9z?,'    IDAT 📜6wd'ORm7yyy%/]jmmG@w 33sݚ5S!!d+E6:`z 6lhjnToǊLRj
+s"@xY|0BјJ.ӧL66G'%&1Ky .榨!ܩVDDƭ[~7n^50hfn^9pUT_tibB^p `&   @  T   @  T      T  0 //7߸R- t/r`z^pW @甕OIP0ck斬uu7vyF<}tՇ\0o]ff&*_|qqrN{M	Rԩׯ^A qOynb^	|p}e--1/]NLHy KSYYy&?x/1r/]i`___1]MLMo⥥gΞ5LW-jjjYY+WbU3qqAASM{+CvvpW ][[Wq'Xi-'/)mZЁ_89gffVVVf3իW._a6)1Agg:rkKKJ,^0$8j Vr|ALDDZF!-?#001}d;[dDxˈLL[[[M߸vmz:Ü;8OIBG~ꤻHT !--i\jkk(*,`xJQQ!$%%(PCCF;U!T\T|!T[[S\TTZR2XUR-  B(?/}ŎSYfĉ3SتWVVTDB}H[N"b^fj5ztSs3L    -6̯woܼq).)QVV!2%[%$$0[hPM;{םrQQ[-A"ΞׯB8Px/M^v͛e<y8;ӧ/_ভ-!.!--##㏣GZZZ]ghCddd?w.:*J``УL[8Q+#-EKKK^^));o>]- 길E>*:!$##nu6 -]9\7]ojjڳkW;D"qU6'm;vr?($DIIiՇ/+WtחF]tiӆmBuKW/0'ah+|.^ I:>U'u=4z~~^CC?tzaaTUWW+*(Eo% ._YYJZYXW[[WWJR홏ڦ&			111Ê
+ŕ*>xyxv3  tQHQWRN$D@|
+
+9w	l=   T @g44662CIeeejJ
+Nn3jkSSRۻk?n7 Z  x16ys{'ʸq.Ne]ص;ȸA  `a*T۫6'0@7s,a߱Z--׮^MOOa]T@Ro^BPL^zv:111A.**q/ǫ$[;̚=ULm'?k.3f]f9I޾-*,TPTvPy;@τYk-:>wsg556:lz'N6?~hޜ9缽iTM\<--KN+/"xCZSSxy򱊕CIIm&?ߵcg`]^]f9Exz...5]Qadгu|J!;y9DyaXKKvȤe~?t̜FOÅx
+zB"KN0z
+E!"#1QiNSb\6)D8u
+?^=O>j뤼{a03iĄD
+k\m\	1ekCu($5nIK-etuO0kD7.O=O/  cVDm+w>}?Z+%%EBBB !$!!a8˗/Ԕј1!(xشi1c`[mƷn70൏8++@]C#=BUuedd-TSS#`v|ju,jokcdXQ^!''r*...))Z^%p+zիW2ܭY!Ĵ7O"aT =;f <7ynn-? ZC!ļ;QVV6` Pii)JKK%usbU:z6:;vqc1 p1;Uk4I)Ƀg}
+{[}/#^ܾG}!>.ɶ\j`^V}|
+9,77WaZ 1;RPTZW7[($(J40z+&EjjCr'`22S"͎qǋ׫kxYM2Bsر(<pFmi ?N(Zx9kEEEꊊZ8ztf0E5_k8;RVZTVVҨNeƎovX  =;f}~WjqKHHޱMLȈ~7}5m !&T(RD@ҥ
+ZX׵?ZXT"(V`EPIHǸy< }~~3q95^כ&\-[Jx+}a	 @wRRR
+>qb7͘.x%V J%lhh=zN`kVCg遏`Ni)<p  @  H      Z  T   R-  @       @o _G`]fEy : "U- =RSy/Idg=0(::}rL   ÝٶDAAa݆gpMLMGtWO
+
+
+xx[Y[A BvV0kgs3{
+rnLjjlSjuo谡9txԩ܍~4Ð[	lmmyx#*ݽӘf#8(xĉ/^*))98:\z6,LNNiͮe"/\ttrv*F1sQi+Bn  @2!=-!kNߕ+ie|yo޸JNJreeyr0-A9tuRRP`fd^^tt}]F?.G^BUVVʃON7nݼCZ>tU >1a-LNJgτdPHWٱz40PXC!'{4ћ^%QH~~t
+hgc?aBo)$c5{	zңs ]҂Nx!TZRz,8!T[[SZRB++#++rvq#ǌmC$B555#ttu33 jABHGG']гOyw#қWVVvZ	II^d>}xےρ,**&;j !`;{No0#o"VRRBegD0`@xc^kE/|,+//7:QHmH oٚǆ	HKST*U@L71U- ;JNJNNJFIIK=n1jBHS~[
+=#I6}	~1H@O0a>9!k	t:]BBBLLL@̏Iq8   |ՅI"u,l̏Z  T MԔFSYY|u)){ y_Wϝ۷xx0>Q&HYQ^э^A  ;q8zRZJzCB_J3DQ"/bKIIP(VO㟮]%&&֕KJϞGGgTQU?aB2`zW naزŋwlÇxx䠯]%ӽ8l3##>kzoߺ5g֬@6Ŧ.Z^|Ґ'9ls/F\='n4B2`z#N	ܿ/a>tF?NWJMI#y+lZQ׮SH7_cd2ƍM'O($X|0WW<tE߹K![< UAʛ7q\kQ0e0+X !$%%u&GdKwo䷶VJJ1BHBBlyAAB(5%!d>r$B(J5*=-gktYY7,,,Ο;'&&eGWUU-+ tJYYX;]%n&rbZxRQQ7Z[Y./Хo_p426(**nB_  @M			zt,5˫mU]TWW}:Z^^hKh"RD:EǂίW?|,@/4uT6c۶cAAqO*Yrswܾekܘ7x;{~m۲%''Ǒ. ߻xx<HO޻{wiI	[~Z @8|xƍ.ĥ˖;8dUWUZ
+!W޺y(J46:9!$))z6l.DQv~^R蒖qmk'sgFYY[y͟wL؅SSN{˯W?|Zgl*h߹\n4t*~{m())rr]]]II	iݣGvi.[R\\(il+m7p ]D--v_J:KHHg	SM}894@j;@g{0  %OصsǍ(yyi3^@+!,LX^?R5!г#<-n  H      Z  T  j  @  H      Z >|vϮ݋,8ou5urrrN8Egge>u+:qt[<g	TUUW@ 詞Ɗ]hgWguw9N&BN|U}s![SmX㓟as ZYWWn@SSSM<&{޽sq**eXeeeu5555jk?~(xǶ\nYY~hp1L#'uWMmMkkUTBL&Ç5s؜Em'9lNYYnzwT۽6D6 .]>tYv\.wGX]t	0lϮf#LF{͞ce1UWWۏ`kem7~|Iq1a01b+^b9}1clsrr:mέcml;7!4ƶ 4$d0#ˑ3NE%'%]r(K.ǌq;VW\ٮvv1֣BK R-zu
+mj=zʕ=|з_\OGFEE<r!2{׮j>s;oONJsփq	+/a>L8	L>i!t(B({9>܉f'UVV;8<7n9Bc'@DuZ.H@ћded:߈fddpmlmEtI|"23;?~x娱ƍ01qpwy{#c3gt!E򊋋SQQ9u4asDO^XJD5}wn/B`ȐwG0qrq՝}-9n" N֣Gh4>`@NVLӃ]]ՂD&ܽaqq7G!˝yF}]zU:eeiejjQ[SB4讀7EEECӷ ?_cF^X~D4UۮrZ&1p ͮt޾"~#xi@ tɮ/K j24Z]]+	?{o~VV>{?HJIwϾ_dI߾)*ڙN7|*l#:خ!\GA7SSbkX[%(..ƷKKJDEE}Ϟ]_@ R-Vf֣G\<&::?//'qV,{ճ*?|رmk: "H%E"""]&H|J^)''OJ#/^@}EQ׮hQNDG'z҂ ЎKֿGʛ71w΄:OrSu/B|K &![~!EEC,-BW7jhhD\\yxuuK̛;昏YTT_o,KYEELTjVQUݻ{wuuС7IѼefq|Sf["Fmj5[ONgW^?hNK-@sÇ涅t:fwݦo^xT]]}fNޕlv9`rښ.˯?Z
+_cNr8v-BCYYYYY]Lg'1^VVVVVsjD_n*/9s:t˶m]iH$_(IIII;6ڵ$%%%UUbǎ$rrrU?	 <x𑠣!!\.vzwO8& R- ޮͭ] |;   ~	7' ~$.[XXT:oΜ=v{<vqgZ!Lii̙,N' ?]uuEKKK/v}J?KKK߿2, =㇏y^%$Hrb-p1EY^:d-8WB "fŋ"/F
+Wk>sƮ={ZH-[$q8.[WׯޠAaZ)i>ޏڲi )#-#VIHvx ]yB۷O<1p m1pF	7><#=lo@   H      Z  T   R-  @ _<Zվk@g_79 8 &  ໃT  j  R-   H   8ǃ      IDAT^NruҪ}aFz [|RzjEE2FcϮ]#GY7p4	R-  ݿw/-5UJJ
+&>rR&wˑCr9=g͌22ߘj-RmKK˅5 ?DQ"B\vu=vr߽߿7x]~g=R- =Q8eԽvNNR7odhikyNBPB'TQU|$W׌􌊊n$2);w<YMM&N|1ҪGRR󽽵χ-Vٵ*_˛{x|4(5% =o.o݊-&&6v8DG>zd2==^6:lO\2{>/b328N>ujVv$+'b*	cwu)DN!,6ޤG؍|ko`4uCcfb<|Yk.Nut)6V/oߺ5XGw0S2a6#gBB)$(3s}]=O7wÇsqt2>}$
+pu`93gLϝ6>MObkeO!͆iA!oDE	aM!M&鐵GPHd&Y__O!'?n.bVB"oݼaX9B"[՛׃w I
+l4Aebd7!jjoߺ}w.EFΜ6B"<~0&iealP[S1m͙gL
+r<m,05b8mQf枮n\.ݎx2aإH
+0Ѯð-m[mzB"G]ܲ/
+\N+(/b0~B"?||Dsf<\]-U+VIl,DTcCC93gU;k6۔7o(nI0 @z,\8!,iEysyyyggc5!Nh:dR			Sq66rusE2!TTTpB"#GZצ5.'/wTHkkKO lǎg$$$tuu
+Gr͟K؎G7F999mva!ynjj21j赮\F$"ŵB֮۰v]Rr"[gKK[!D੶ݎ7BHV}fxhŲ+BCB/X@$͗,[:-	1115++Bjj13h!%%%^!DT#$ Л:ӏbbJáCۖ2cG
+
+}B&^I	!6S v:?Oxp/枷׼+ׯEBVVۤHׄ!0~a2stl_-1bhgIMI9r0ﲷS&'qqRRRҫ [+k			g]{?x !PjJ
+VR\<q츫|GD%J쬬O׌DQPӿ0izoV$#=[\ d͂OMI9u	e=ȡCC<z+}Wӧ[z58?cڌl6r%"hf>rvrjj9N:w엎niӡ^2Қ$ғEN;bb
+eĉ!'O(92JBWD ֭fdq{ٽ ͑Zr|Ʈ;r[B}<wk_1:p[RUSz+/\7~b 
+Xl[B:yyU756/ү 8=Y[PWWWVZ޷o߮L++#p8V݄FeeeC}6kFaX"6ձ*&I-(PWWWPT3jjfWAA/x8  x@鸞P뤤ݧՍD"Y[~MHJJ-bS<}(B|8e9^sa  ƍ;m36*""d2R-  t'mF?uE$vLZ  ?['W  Z  T  j  @ @ '!kAM|׬T@-
+z@   H      Z  T  j  @  H      Z :hbt,lllm|Fڮp'$$~=j\ R-._4sْm
+
+xx6 mꪺRx͞s8>8. NW\Aege~BN$JBmڲYK뗉JqOL>p!
+Xn׭?p0~~\nlbj'+^>sCCP}}}DxxLU&XZY!	lmmyx#*¢WmYYY䅋N׮\hV3f"	6_#WN>V	'&xQXXpՊ
+Gg'[۰399ٶSM#{KK}|oDEq\~_vgMqMÖ-^c۶>|83''̟;b9ylsbF#nYYi޻ʪNEʃON7nݼ/oFeeekl	
+\=ȡCO6#tU7q9Bӡu@`i]rNY,_aXɓyBVzZ:D~oyBD[o>1Cm27Hy0.km17^h[2WIy^5{	m;ϫA@{1J
+<ݣԶ:N!l6a&.0кq\{pUɓؚY9ףZY,ЍQ=eddOtpckieuse_&7UUU_TmNv6rرǏEpV]e####..n=چH$"444jjjB]Zw\-zW.]F=P^};$%%;7!$''USW'1B$Bh)L&؈(V[WW'''ӧϧ_-Q1cɯDAo]Zw\-n?~}<s֬g/^Nt999qW~҂Ϟ-=Ξ_oٶM-Z]]lwqAy͙>s*CBB"N=L[ڔ7o?zD;fwlۖ},((#cc	qq&wҒQ__RTj5vW++
+7'++;vܸ\Ғ.Z4hؾtswS?K-wp^`sg͞蔝5^|\܅G}{
+]/a0|sZჴ,HIK-RUS0b_Q:.!!!&&jLq)|,z?ev%D"QKK_	@PRRj{jLq   H     @;0Wzf{G9kpU@p8 `(K* y?zdwϟ{1ZӧϞ	}	UWte۷+W]y]aH Ll6p@ $Yagqo32
+!X%%%{ȕ$W82 CIII?xuN8y"DEݺi8t(!RPPlfy%²5Y6olɲRRRp@Bٴy3 ܄ W'ׯz?9^^R3=y^'NxvL0|[^*\X\] B  H      Z  T  Ni\.ca41rsQttJZYaܣڕ W tysL{?3S<<BO۟u)-̖o\p8\S߻w|BH;if-m-Pȩ.mcn-H7>bq-B?ppĉ/^]U__6SEUe	VVeee.::9^rFYZYΘ9znIqٰ4`}s(Uă]ZQ^dckz&''vʴifԲZYGLLUZRvusi<!'g'^*lf0΄fffӘBmݽ nd^8lfr؜s|=_I)(0Li		TUUn$IK[ʥK7܋)>=dAKKꕫ飠CfL
+
+iapJfffwzښ`̛0W773{̼|ˑ?~8NcvA989mӁ;89O	cwNt-d/k>PHM&òR޼0Z[wuҫ$
+kl0t"DXaX۷.mt:DvcOðt
+3?׌odPHWٱz4͎vB"y0&i7n<DƻiLrRRAmZ+rvqYeGWUUVV3v,o <\]mlmMmd^h v&SPiI`PmmMiI	,%%EBB!$!!a6Ҽ:77(0 @w⢢i0L#c#bmDT7{S'N޿w/A;q]0BHʻJгOy&&UNNNDmB**4{W0p nv9:$++z豀+++`<{ƌWXOjj"VRRBegD0`ޠˑBv~gE學8HO޻{wiI	h4>WV~rʗ(#-MPToٚǆ	$$oٚ.7n􍨨u#٠۶.?U- {'sgFYY[y͟wLZj
+DDDs47_ԢGɓlN!D9z@ ((*^{M(xvu`AWu!"bewqxT|i5)ͦRrJ6- 9/7[llllmmmr޿hm0^hjPaSG$mO
+ ))m%ħGmMc0r1kK`     Z   ՂNDDD^^ں|ǩܹ}QEEp4N1m|ONzjAKǃ/]lnn!JKJ֯];}+W݉}{R- ?SKK!
+'Oڝ܂|]==H  r9{ $W80 =}W9w6:upP88BJ:;X,^&Dѡ>=b_E5kb,[*%%Dhkk]*|ЄoԿk!2u4+kaτGU- ߝ,Y-'*)+AT  j  R-   H        .p_mOCւ>gR-_K         T  j  R-   H   ZN:UH߭(KKS3Sнm1{v9eҤnKSӶ.*
+? R-a>xK)))D  0.dpsw{)r!"(*=Rm7ںE@wuSDHw 	/|W߈<zu7"'/wa644jϧ<ebb۷TKRo߼9e
+))ߧPyQi<Ŋfd>` QQK?vLBBG@sDG>zd2==ږs8?~FB>sB9qx---fΞi n}s.27IOTT=73#=!t><|)"#+?|8>8xf3p'ODDDRSS[7y}海voV.[>{{\\|}kZZڭ7kjjtWNK-~{71st
+re7ޞԄaɴpw0c͘6̭(/b0~B"<~_<M!nނaX9(0ƞ]($rzZ^b0Il,DL&eȢ)$0eX[\@S=i`|?ڕL>CJZ!,iEysyyyggcgBC[[[/]\h@~5m;~{Xroߺ5h á>ⷻb=@7>.Λ?v]=\\DLjmm-'%B1̎]	 jA-++r87mڵskmX.	B$RLLwjPɓƗ{)!!r!"Fh-"+++mji4BHIIWB"T+!!cݻRS1wZ T:Msrѣ**D(BhŪCkYVPZJ_ZF=&{^xp>JuswGuq~!y%---ƛׯW.[njfׯŨCb jҧOPC}B`BHZZf~{))$2	!TR\<q츥˖ٌ4>Bi#4Iw	'W@s"k>r$B(UCC<fgeo=| ð?6idd# |/n}C=B,QY9Y}}ԔS'N0kڹ媩8(&&6utMfk	AM6/74_N^NSSOW$ňD!h4D~އ?;'p~B}}}/($;z|o#~
+ۧ0*2	/412~w J)$(3s6+{;S='1Vsg@`X+.84o\
+|pk(
+) @E0LXxI¿:dlR5uu<ZD"+\kEl6c4%##p*++Dn0yyys0~a9S@ =Breeeޗt  IDAT͵ k;}K]]7@$TMRRRRRa t#  @  H      Z  T   R-  V萵   |G׊|j0   j  R-   H        T  j  @  H  c߼~s}wSFF?{v}T.i[2f3gR;moX_[.dWG'HmK&Ajnm_;:;a^jj#G-153Z{)+'7fXjZ65ggﬓ3᛫526O/!!gQعN7;%ee3ss|T.@ 8cǍSh{a;.i{Ӆ-@pvKZtZ&fpIۛ.lᒶ\ؚq9t(\w d}MHII)5L8\g}j18
+  ]W   R-  @        Z   "    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf ns-3.21/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,339 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+
+T(2P0230Q055PR
+DYZU%r'(+W*s! @
+endstream
+endobj
+4 0 obj
+   74
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 550.801102 248.040496 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 551 249 ]
+   /Resources 7 0 R
+>>
+stream
+x-1
+0{~d~ XDo20S$#]b.hrK ͵+Ʀ΢E*CBk.ɕ
+endstream
+endobj
+8 0 obj
+   88
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 1530
+   /Height 689
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+x	xeq\eE.VerI"PD", +DT E)M-4-F]# bWq4JA:4iIy>̼o	x}                                                                                                                                                                                                                                                                                                                                    ]r믿ܲeKaa     @ݻgϞ7|sv      ]|_믻K.(      o֭՚7o޿hXn      ٳgp7o۶mVbbbn      ꦤ$--n޼y@@O>ٺu}fggWVV@      ԖbotM7ׯe˖&LӧO-̙s9     ϟ;wn6mzx;300p111Z
+۱cGEE     m޼k׮
+bʕ[l;5ke4غuYfR      \[^^ȑ#[n=zha9##C۳x¸m#++     3<@XXضmʲĴ'::sˋ^      8s񄄄O>@x)ɵx+Wl۶-""b֭%n/      (***--X,U=QQQW\\p!//ܹsjr      u`TUO.o      if       =Ҹ=r7      "M     %ws      P/=      ^I5ҝ\=      @L{Fk;      rVR      oV4iZø=      ^E=|
+R8R>     UÛԂFq{VVط;      Zb      _"ŝ\      >q{2VV     .3LzWD8=T*]~qhM4dM-k    {KxdaҷOfZdo鮴GRmp!&    L&iviBp2'}{l		lQTZPM81ĨЅ?fT     Pe/BX0}aRt;sr)N3NW     x,xbkjʢoo1đ]N{zt=|H{     N{
+>:q{|mF8Iԫh4*J+ Iesɥ&,      ĥi؃yߞf͚$|p2pCFQJPH!!!֛qN.     $╸t-oH4n466&e'3I%N'q4<P=     tVtGXFAۤǅ]{$nַ     	֓kڈ⵹p61x?gCI     !շxyQ]'WJRVF!4$6.Je-P]=     xhJex5aAx(tWzzilj35BsaܞbC	i     e44Z->R0'%LS)8"    dRj]}'**崧.=;GW*[     	6#5qmGP82nMStͳ     O0L%\u}Ĵ'000::څG]:Mj&"    L&VU*u}ӷZ-@FQ?K촣Vz8ӖpnaJ'80^    "\>5[Q*՘~	}hzcti     rbiA T*íu#>baK̈́ɦɚZvqmG     |ԫǦcBw\      pÆ\bȣVF};5k(h>      v-QHHFX:bߞ 7%FO}      "u	
+
+}#qmq%AQN      .ۓFiӝ\NL&@     2q-kGJ{4JsB=      '>
+dff      x3ѨVcFpˌ@wUE     n&I*ڤ=(     6FQфn0"\zw
+     zj3bHӬY3=      pusr     eRSG"	p(      pVuy$bߞ&q     3IĮ>AAAJipfi     h?DT:#5h5_]Ր     l
+
+pZRaeMK4      xZ-f&ƦdR*z     *
+Bzj@GR9|V     Kyzľ==      <Fk(      ٹoOfH{      8nOMfqr.p'     h44F) .,;ܝ     {GP(«I+kSŝ\      l6Ӭ;dr*      x+ѨhT*&^=      =      D+00q{      dd6j}[5ͺط     @FFz-V롤;      "M.ͷ.>uC      /h?GRhb\      h4M4			q^Ph      /1Q6ቔз     @bc}崇q{      B     KĴC,     {ӞҬ&     hxASw^!(      >@J{     N.     OJ{     iO@@ }{      | }{      |	i     /af      _"=     =      $##CL{     dff3J3     o`N.      _\      $++     gp'     /!     %Ҹ==      >@ø=      >     p'     /af      _"=          Oߞ_)JZm2^     '}{fPQxxZ~U3P5     @CGV4@      Of`I{o
+
+
+j     REUڣP(BBBj     $=~ҷGX0*&     ~XSTP/     @QJӯ     _      $19      |8C     |ԷO{jZZ     QǧfF?      9^O     |\¨>     HioR		      n iFQ(C      4Fbߞ KP*j     ;?c2Vdl	     [Hsrg     cľ=          xø=~B     N.ҞܯA5;    B=Ueq\Te*zR    dǣ'J    .N.R*    @KI{<J}^    N.*m,O     HwrPic*    wrI{H{Q?    \ N.*mDO     s'i6zR    CC^    )8>JES)    EC^    )oi6zR    J]S)    ΀ "RT
+    pAFFзJKS)    EC^    )N.*m,O     Pi*    @'00JKS)    ==TڈJ    .N.*mtO     p'i6zR    CC^    1	8>JES)    R*m,O     p'i6zR    CC^    Pi*    @JQS)    RÝ\=TXJ    .f`oi6zR,Keeܭ     ø==TJ8~xzzz^^^YY    /L*mDON%$$<#Gܼys~~bQ    q{H{H{?:QZZ'nݺk׮soKJJn    /++QI{q?:aX
+
+
+m6zhBѦMA={V   ̲JWS5\gϞ7tӃ>8{or7    dgvmURc'Do5&æLԤ?V
+d
+f3mgmӷMU'PXyV@\)6²t@Rg7mj[XJ1tazY~ez5cWa.WXW|h^ʬf g@V]JmW=>'"=et^lutT-Sz׺:$Ǘ[+pִ_9i|o_͛?K.ӦM3LW\X    ~xuzTk۶S+qPxV\{~նzi;6~u4fOl`fGXĆtdEl겯zt4SW6O⷟}lL'~96.|XNhN!oOro*}5OfY{65ڜ6Mr;N>6+mNB;þFooooFR_WTT,    4]v]wu7tS+r^\&.OI-7~JGYcSz񡸗`k:JllspĦ
+Ĵ~wifF7V'u˯?1_zFhSj3GZo7Sֵ/ ڦ-~{Z7̦|_U4ClQwhow=A=[p_Kl*up_xQe   ޽;z"~%=Y6l,^Z7(J#H륧Ç[Wd--VMZ#4b}d]eiqAz6T-/I5nx4oZ~
+{/ӗ6oyIg0w b^'%}Oc~-֯T9m9Oi7ܾ7'/MZie4;ͬ6Ҏ֟(||v	Tر͛KKKW    Z~~L&ӏ?xٓ'O#G?EÇei5f+;vLP5bC8}˭[_@:qħliߞkn`XmjQPncXoi-/pHm9BM/5m_$t/+?[ScwiCMls'oM73u-vr%۷oWݻw;Zl٧O~{ΝEe     P+%%%8p`VZhѷoߘx%[     :p¶m"""ڶmۺu배9sdggџ     qX,yyysO=f͚cǎsUVV4      ܹs[n]|yVVV~~>3     4j                                            sʕ:22r˖-r7      b2Fռyݻw      -[o%K\tIF     E|Mnݮw͛7߿hX,r      uvٳg7oj
+UV111EEEr7      uSRR7o<  'lݺu߾}+++n       jb|馛?Yf*O>-Z3gιsn#      j+??ܹmڴٳgTTԝwӪU;vTTTL      \[YY͛vP(V\e1Yhh8p`֭g͚/wK     pmyyy#Glݺѣ;ＳYf/.,,k۶m=*^      8m۶,##C۳xDDDs=˗//&w{     >䓂aVVDGG_rd۶m[n-&w{ὴZmxxZv     xZEEEQQQiibZuaͅΝ;g&w{N&IѨTp+^ф4i"z5VZlv%     @"=QQQbSU=EۙfZݤf.>i^
+
+oB0.4     H{l		㔠 Jj4Mxxxç=R)vn!=|     p4Ju#)JҍAJ}(ll2W
+۩jH     `0X#QT8r}a4Ŧ
+qS    h|īc:roq
+EzgFJip|     y\%h4JC(+
+i9$$z3=iL    8ђp=ZCۤ۸lFql6SCPR0nO{
+E][    aH3٨i`N.$=.׋QfKw=_     /gs.N}M5Ü\ͅG<lnڲ>4z1_    !+wZ^5%!I.=bR%J'殴l6Kst(     uŸ=ͅq{Oi?MViG     `q{|srۇ; J GnI{Je    zľ=;GW*i0\     d3V41l0nϫ\WTђhZ     L&ivi8q5N._e=JeSt>i0	     6{a(bӷɠ(tEVzq-V+BfYX8m}5^z]N{cJɤPс&     Xip	٬T*keINnpK#]     Wv ^Gܦp$J2܊Zl6[ZoRZ]W^6Rpf8W    @"ޛ#=O{z=}{      )ޱI{z9nsr     xifZ-+=²4SM7deeѷ     {Xϯ-լWִ;      x^FS#4k֌     F閄ᡰ^     UF;D     U{JVu!!N!>YZm2n     h 6#5Gif"||KjZT7     `24\u}I{j`y[     djJNwry!Ʈ      dd6cFpc)퉊"iB		I     @vz^R]3a/$=`?G     	WOPPuB"=Ѥ=^BL{T*     8P\bȣVD/$=JR_    +ַkBBB4M-#FiB      !u	
+
+}#o"    |u{Ҹ==H{     s[6#3צx'Wf{8O{1I     @bP(j?ط'  ;JM3Z7	     h4jG8ܒQd0H{     7&I*k=(X.i     ~h4j49]Q     |^o6#233I{     |u=###88800;     |)H4ӷr7     xVHq{  ;ݻ+;_J7s!_~u۷/11 8'N%v	
+
+T*UM3Kľ=͚5#  gϞ9sw݌$|$Bb}(>VJEZ#mc8#k]W6GU8lMl',}"56K]ܹsg#0`ɓ'>  ^h4e=?  U;6p^zdJʱj>_}]t5j?,fEV @ce6l'<<\VT*GXYbߞ Fi K  R^^}ёƦ^=4X>MС_VV& 
+jZh46}xL&R`oiȗo   p3fӟbt˒mICEDD?~\S  ?BѤ:iq$JYj b|$i  ^|߾}C޽n{(Mec_إKbP y'#&5Ŝ\  X.{o}TuZnI<9ײvOUJ桻{ذaT ISm==C  D'O|s΢;Iۑ݈oZxm~f1g*{k]IW>a!!!IIIr  з  ***CΝ;vsCAb%-TSg3e}I3-Zn/Ώ_tCf߰neϹC+SsiS?l?YYY)Y hP=5c6ɹj@ǣH{  [VСz
+I̶$m3/_|k	B+jZdSBllx|٘ꢢտv8o͂tqYz56ލuM6M6c_薏;u_:v옔tyOg @h4h4Z?e0y؅e}{H{<  #YQFz-_&ylU;&gϺK,eIUeZKYʱñg._bҁOVc+$m|kG;Ąi3,TTIN=s&[ꖏ8%w1tЯ HPW
+
+VԱN.  GYY`2d.fZcI<q~'W5@˗ZXط7|^'k튓V_7w׽{lzImZ,MQN^7|s9g#<d /YwU H{  gΜjժՌ7SGM%%ber? 2Ν:5\YZ㗚oOӲO[Z~)eQ(>gOҘq³Ӧ%nk0\N<xor'f[3*>77|  ^h4j4_)Jdr8nwryi  ѣC֭%zrߜx/5||鶹T|>6cc'ZuptG}n\jRyGSbQiѺ	!bg&{tC'=Ur			L 	37   |RYYNԩ3<k\ȳ1nweB)U4}[e[O4hS}/mևS̱݊Ǐ[3G|g>_ӭk;ٳʹ_t/1)BtI<C2$''B p'W  ǜ;wnΜ9?pԚ4δ˹""~8UԢ3\7bx_i6GX)աC5sĸ>7v̳篞veK&~sWw=_֒գGXNt ۔[E=P\\ŋN  l6jju94   |CeeݻߡC䌃lO<W?^"Y+K˝T{$I;b=w\[WӞ>킃ǏP^w`?*nkSΟY?󙫝|`}g+ h=DP/e" tRJJJNz-#:)&L~sk(һ7L-+US'V}nXK)m<sƨS;ޖҸSku0݅/oX]xf]wP*K7|_3O.j߾e 5iuiu)k4   )rС	&Ŀ﹛z;NKҪd%Ǿ.,4%UYQlدrE.x<H>vF}u~eI'~ıwr1%?:t \ܹS8o  h4O.QTu:8'W`` xi  NIIpܯ_^z}SgSϱ:5K?Ql)K=pR.>Q5$.eôW'^޵GdzKu)odˊc^U,?Zݻw5i;ӠRJn4ud?Ϝ9#w P7F~		q^Phb" X,˲eڴis"<BIέ\ߛM#yejS2&#ϬpnDՠOVrkf5Erqڋk,q+Mnɼ͙5\{a9{Z9j[F;tԩwޟ}Y#RMV @CSZm`0pi/=9=  x?ïZcu9yrK.Z2~;gt/׍O]˜EM3>];k.]]9G'Y,?x?29-|RsӱcG¡@ VĴ6.	iw" 	wINqs3m%e[t_sΒ1?Vvi9+UO]QrA+2?f,euزysGM[ _/N>ٖۿڵkϞ=w- pmH{sH{  NK,С^hgoxcasڗ~ɂʒxiͅs:W1ˊVmZeIb)KܾmE=4ﻥp͘i߾ŋ ^NL{a:TŜ\  bXkn{{v5OSY,{rʲßOj΀vy~ϝ^4L\57tcǎ<xpУ,ǲwcرr  y(o  %JJJsСyy96~_tG˿]{.bkzv9q!zU,ӷ[ݜN>rK-رcdd'" 0rx4i =  ԩSo?M[⹐g}%Vg:t,Ӻ2A]>9Չ/{_Գ^z)guK2cI8ڻw?N> H{ i  2_rjz0\\>f옯%V\N*[4{GS0ݱ5UeooKՏ?ĭɹn05|!!!?N dee1n  .^?3]=י'%"%iS?xO' ^XV.Чv]wh^^0o4; _1l/~vCBBzm6. 'IDGGO  `,gΜy}E.MtF5]U,mZ\}Ӗ,Jqܬg([㑃Kf|ٝR#kM>}zcr*ՑKy |OFFx'4{i  |׮]aaaݻw_Dwm[cΓsQ`ɻwOd,̝=#+&Mbo?|pb>suC6jӧO׮] FJ{sH{  /?C#^5{.IɭH5WMT[8:ifNߦ/[2no1`fKYbV{lᄬY[27jBPǏ pN.! *++Fѹsu;9NwqG`{ƿ2x;cwE.zg~mސa>\uF<x&Ï?- |p'  ^.\غukXXX޽3h=%9uE>,I2ˡK[nN˅gWOTi}ybRY=z[:ύZ#L4r "=  b>}z塡IS=zVReuj7fqHpe-սז}ً6mw>?$4Ԋ;ux9V7y+ّWᩧzg>c oO  rssǌ#CdpXUi6l;._L*[+SZqa/^j\?tiO{5{r7tWƬZz7***  Pg=  > ,,_~iSyRr+6~vd}Z)v,QKQ,qKcz-3e[;}>K5[]X({	s=_ዖO?t޽?/ n  'N̞=;00p喬N͊K\0ıM_7RVՉ;_θ~?:뮻.e[7ϯ,1}޽{[WN>7.-tᲤ͛7~ @iw}{< ګܹs!Cu9
+y>?j,kuY'zc,ί#?_]r}[C|8;")R~I[pj'䌃\|>?տ=z$''/ VH{ i  QPP߽{A}qJ뱛r,;LU2~űéũ_7Rx&nxD;/_:RwNdܙ_2WY[R'xB`I>7i_ق%	>J:p W 222Ĵ;<  ~iӦo~yiiK[ýyd0oԉ},Ԋtӿf֏ޚ֋|n[%{\,'<<<%P:]W>}RSSϝ;'?  g233٣H{  plǎ<L׮]?6z3Pqrqw> rW>SZ0<≲KmH#s;ө=-b)]sGlxxwV{[zWѣGGӯ[Y#=~~֤UojյZo\ks~:yamطqB+vZWw	Ѹ{naA_5bN@ rVۺu;))i:$X~7bKdfr{ь)[J%!=OTpvW^7ER._=>AJ̶,ZUVv.ӟdlmjj﮻r~Y7zk@|i9oٴiS<j =  (++۾}ث'555)⡴gCN[l<RV.9_|o2yOc1U\~^~8m۶Bϱ,K*\>\wu//)yk7ZGH>!^'?./deexi  9"߹sgJ>={Rwz=qBfr7J&1p@ץ1S&޽]qaRQ$F}M7u!U#Gl2j"r^o)_oXT*UV:uJ`X*++Ep'W  ^aam{ݻ'%%T܊iHjUbUZ/}TMP=fz7R9j}x/6GVN,3}6mqrK%J̶dԩᆆ86ѕ_1bB>yܿ G H{  p(??֬Y:t?~.sSqmy"$$dEdRd^=rDQ5/3pm7;w|JBބ֭[7o|ujVbL-_j-"MR| {h@ie>믿.<}GVTTMҸ==C C.]ڲe?ުU9J{6^y뭷y䑜=uݍC=H|k7|w،jJvUryciM6Mu^!C'?y7u?Q=%嫄?'O>t:n'a! &Ǐ_paΝ_yCi=U޽#rಧ»|r;wƎOK׼92  W_)~RgtzzmSnY=5Iیڵ|֥Vc%~)F=  ,ŋz}xxx޽[-'NJJn/#$cǜ!Cxts*g>#\\f옧zx>Mw-[z뭱|CNe-Z4mtرn<LCHNQKu]߿ܿ \  'N<9iҤVZk	{=ֽp:th4/}lѿ!c_-ŕnhq9g=w?Rv)-ڤ9IB9틟M-0`p{I&%%1;w߿zz: (  '
+7ovmƍIkc3w}UeZٯ}`ŋƬ^9RߕމR+kǖ5o/vFT.?[׽{wO>դrK}>I	 Kx|K}rGr'  DEEő#GfΜٶmaÆr.z(|v$$$DTdHoRΨgN(^Zqz_\xv'.>Y,eY[h!=ýK˽E6m:n8ν?裃z饗F֝\;{1B\oh¿{/U͑T*˘1cj냻>p'xbԨQ	<uL}oBѣNpܿƇq{ i  ]|ׯ_߾}?6n\&Lh׮ݗ9ڪ_7RY'{Xp72GNooҢMw={ίWC8³>۴i6m,]_<-m۶ܐΩi1iPNZex78vԼSkj_jڷz+cKux໔3^ڈJ3jm6^g]XXXHHe=
+G^yKNNtܿƄ=Ӟ_)JZm2<Z W:th
+£sJk׮/{Y.|*ѯrbl|Q\p;v(7i:%>_ڿzўzKSl>aڴi7tS~߇:&v,j׸ʒ8*.Ǖ\~JkcˋcG}w"\Խ=nW?\2y>4h<?{wbax4 N{fppZ-f4=W# '	f?~˖-ݺu		IFI-7n\sc_~Z1qS'lG`5{>~X#{}XJ׿Emڴ`W}Si_r-*j1!4ݝзoߦMNrIG=-=GW	/׷gOWo<2>hުw/*ڛnvz̅ҐYr\|NUJY;Oe>)yk?:th׮]Gq.++|>QC ? Î92gΜ.];Vs1~SH;ޓyH^(-$E_-%Ӕ^YoaQL³k^#(m]w]XXn|V}~%{,I!~e[n޼yVjKY%woԟJLaڤ)	k_/8J5ꜧ:9nzʒꈾOt'=[|vDİe6z=?Çx/f`o TU >ܹs;wҥK||z޳)W^y^WU URr_)7Es+[2%իW#{+u¤I6mz'#'\Os~4Eß_oagudreiωY'}uuߟ>l_Tgt뢇ds$~F<eʔFҝ\Ѥ=WiB		\  vɩSo~񺜋	cI~ץK#F\'Kez
+Z;&6bQA)
+RA,
+"AbRDrz;łlZ&˗Ep?y6ygwg)oIPOɩqٳ'x{{oR0l^&O6ZzU]7vO COFOmme]
+Fwo=޿f{{~O;G9ܽA}?eEEq\]i՜jS!cK^'o޼Y]] =|    WosURRb0X{{2/`PgVE15W>u03.xPlXE}LB>|x";~ӼHtz1TYL"Zv̋[i]Y[QSYk5=۸8;;z̋ATs5[`ۨ9:i7((KZ*++ : Ë3v   nj߽{wrrr˗/gdc:瞦mM9lz6a!![C:=>_RR5͛<{n)SsZag<xJ縊bj7 K>Ɩ\-e5fvԶC}	ٸœhsPZݛ!d#v;~Sj({{ww?uweeeP'
+ pԩSJ3t{oEW`u   Ԥ&==l,;GTTtȑ\]䶦o߾ׯp޳ڨv3,ޢv6r2~p7+1x=^l!\<b^'-TvN>vϢlpr('G;LG5e##ӧO] n={{`   ill]vQYy{HWM|rXԩTU066F,FfI:Gb;vl81v̑lCcǎƕfdVw/l`}:{S'YZ|7gBT|~-)nMC51Jn-svZ5	jksZYYZ[['!QVO>}xl oɅ)   EEEjV&%0mll2/ǳq
+@YYYY߀Ȏ"^.L6lj$_$Srd-,,[fG1cd_ޅBm]Vݻiò'+\޺rŜk{8U/<qgyYQL(/bZIII~Sc{ޕ+;;;=H6mԩS>~w ;ۃ)   ˭[<<<&Mr旄c7UTT,--kaxg5R##|{5v؄7:'#ֶ_~[J rnnro$;ƌ{	:S_u7v{{Y?nu,+;VBb~:{j㜢ϢM=rذaԿCe"Fb5L8m``0yd|X;~Bo:?gP(    tWRRRPQCCtrrNS-i}xO	{[i<És'Ou]2?Dn
+#n_Uta*GmEzS8M*.d̝;WHHАq#:1E9rMAAAXX5"#yXAA;8f̘Kw!Q5jTŭ`*	
+zN^gXz&&&Fkf_qoz"uN`~SM(<~Hv(b>&bgϞ=nܸ|k9 =nA8sIIIhh(:>b   [r]wwwEEŕ+Wbd~!FV.]-4Tfs528ZjX/$K-WYd<slC'6+>G(N566o4:vl%ő9cyn2ɒ#
+˷l6D%r%҈#%({o%4F&42	+WM
+		M>jn^ElWżzFN:yuk%qcƌ	eٖ=XCȺ`hs-f!C~S;fccc8{|NgϞ] pgr;mRSS   7
+tԩSg͚uxO	i]٦ڸ5F)ܿRkއVD6TǢ_bѥv=8iOY2=sX̸NGdÇG׎?P0jӧtEUv%mС[)عz1
+
+
+VPwC'م$%%u t<XY*q}CS-𯨬[-2Xj9WzvrͫMMf~US8ԏ3sa1!\ϐ,--'Lm۶<; fraЀU}   Fcc_eggzqs6-e+++U0 E65zZUp-ʾeyZ}sCLؿ{&v:2jrPɫW		7c{l5T&QL\9+O/Wi(Bݩ2Onb/һW)3f@ljjH2Ǐb8qbd~#p/"!!y9;HғS9+6݋%m|[qk<b>
+J
+)V2iMU)˲ xBTE1#2wѢEhW1\o*"{iQF988455]UXXXhhhe   QTIHHrxOeԒA׵(L$FK^={jR޽{ j8w**PT={
+̟,o7ͫBRmc9'3gȾ~5odo-5HXXh95eQ?FE'QBBBDDr$8fffVE611AoY__S/2bRSǬ n߶}cj7w;;H6j8>ʮoѽ=O˹v޺[J=N?|EĀŋoܸχCYn ]=sz{BCCedd/    Ν;&MrqqadWQ:KQkJbVVV.=0lX?besրZ5p?l*:ٻw8os6NNS:Xz!! Sj,<p?CLUW׳gϞrrr#:2hYh"sOBۛ'#q&L`]ka]AZ^=ew?f?؅PSFhDW͒9W*5e]{D:f7v~S	ANK_`{f"y;9兲ϟ?___w 3o߾0;~BoOjj*_u{   ϟI$z\\\mCWQQE
+z #=U+lnOB}7FI<rȑi8mvr1ƒs@%ődեH㗡3cF׿Mv륓嚓<ǈ^HBwjieȩHeUwҸqPl1Hv׭['**:rLr"BcZ±>Cc"򹞫M
+^Grhv{"ZG{v[fE75nnn{Scdddϟq&w # ~Bo)<>   @Ν;NNN***zmΕ"H=U]uxYGb jM;BWK9](/7Rc":g81C8s	=VHHhЬ/_砐(͔a6(mfwݍ{T̈#z%8}WCCYdIXmcDJ166FoSW-G5ĘHWz޲}qٗ>$? %5o_Q7ů}sUߏx=l?Hœn?񛚘I-X=o~+2X]]:v	ݓ=z{    '"3e
+NZFvŲe˔w=Q߷oχzpr-!!X7m[lsVrA)!++3g_:_^=i{mS,f1ƲO$z-}TUpQRRyґе˅ȑ#7l@!++RǷfo$O$}:"`<*Ǐ|TKhb~;gRsIXK|doo|rXǳݢFRSS1cFrrree%ޕ! ;8c{`O.Lo    t& ''gcc*da2ud*Dt=ECYC#~tZ*E{}0@o-QSud[wJ2Mtq?ZW>#{R+FveGr)-!4mʔ)v޽z;v썫	_x?nQdgXVlC#jQ*ɇnpzz͒%KQET?}b]\ =    AH$ԩSg͚ER1CUrrr/F qq1M--u0+>"gm	 xޟ3W+1~? n}&
+<G_9U$Itrft-sNUWQ3pA_	L4t$lg&""baa|[ɗs244,%_FzXC=XCxc\UiǷUn].}5*(}'Ơ
+hʔ)QQQ?ځ# p<   tpp?~#=,ҡL+V|ݜ}Z>4<t1g	eU%9pL9e:9L8=͸n˵8_-7o4X9RCyPU2uߖٗlǹ\,h>}DHKѸ?+I&QO?ȒS/);w.z#FX~=VQ$#+}{oa*7Lz˗GF,7cݧ\` ҫg,,͗D&Fb'SRRھ}WU3p<C  \ӦM<y2:6ȩFXV]"޽ʘgy;63f͔>q_dF)D~>ٕRC]Mj$I*ʒ+(˹ yn*>zCu,`e`!Ʋÿ	sľd;%j~>(eʽɓ&MBr[FvUG$j}dR:gۓ{>} sa\cpj\GH2#wr?Po_v577	ʞ;y<o<99;v<zq:''O#`o-
+Oe  P͵QQQnxOB+~ZVVήqqy]7C51_M۱5QsO>˗/^ƬOJ8M1cMMM?w=]}cs-}AmuJn9sI8Ǥ?mmmUUU׮]{=t6ݓ'鴂G`͌  b޿H":u[ҥKN<jK+ammML>#{oQ2=C>|ӦM#EwKHHjq?n
+qλ;dzNݵ$uJ>1PN600vCҫV̬ǻo>Kq1
+oO73
+  Guu5jK#ҁtڛ"sܸqK.,vr;w[9ɄpJg8)...={Mwe]
+^H/}I|6Y=m]NŌ_###LW5RV^-%%t%&w	 ߓN+x{f=(  @s	)Sf͚JsssuuK8}4(2)0Ppv_ۻwoqqq;;;j&VCzNkt[[[~]+9Kgk		F\8m{vu*/ްaC}>kd___MM%K8q:o#fF  SYYy%{{1cƘ3:2S%e7;`mm]`P*+bRQQvIǕ%zbCtmMB?$ń1wޱVPc!&uFWAـBr"rŧO㞼.-feJZj+ϐ0lڴIZZYHMMƻ~R3ۃE4x{Q  )((קP(,111QVV~5ZDyy={;1+;WCǌ]]]]RZ,->)*yEDD`Nڊo,)XufP?{jV_K>Z")ꪯ_˦̝;glaMI	4adСC,
+		ov#fF  Zƍ***nnn͚i}ESɓQݜԆjh!-!!NI-rFVJ^z6e+X>!&dPnee	+Su*FoYΠ{]zy1[b<KI{tjkkkbjA<Vn۔pbABB§O`.@`pL.-G0͌  cbbNSSSyy?/^{(Σ7/S8eijj;xg&ʑk(6ii݁0BA|`H$l$Az8o՞UI	k<bw	v3{VF$W=rҥKcS0EQ
+Dz%| pI% it3   Q]]`YYYOOOFf	%ol֞c+W! IW(ݲV9[{b:u*15uȤI?~iANwr}6-wq2<faz`0l/ŪKr=|3Rc{c=1ޞnf  ^zz3f̠P(=U͓%!%% %AgxypB6?==naZYi1_bH[kl1>s>w}?qg:t(ȵM9k}UjcgߧO&_$S`:1p0fҤIBVWtǍ9zxs瘍͒_>9CyԨ_ra%sg֮uFuJy7}>ƨB}Ǐ]'88=Yo`L  h?sٲeȸ\HǏ5jWF}{МւvWg[{9ybwܢﺵKRۉonѶk#ѣGӇ𰱦'NDQ3&0$v?+Wm۷:5$vfݼ{РcJݽˮ*n/ŭ_~'[uAXL6n5D9I4660`ݻk8?ؓK0#fF  ڦ &&uL@i$u`S樲MU}kkT~ܚQޟy{ykVs-K~5SROfwvfS͸y%%}Q1E@ꃿaN{}qXiFtpNC*pOϠoS,lB'phkk|wɁnc{0oO73
+  6L&WZ>qGV ҕ/)-X@LLL\\ȴ|L=&2dee9`VgIrBy[|X[K{YΟGEk:ϟ?ח	1^EEիxW@w fr	"x{c=(  wyIXXi8{Jb^ޒb޺ M6wРA#Y0{+<.(`jwG7DWb0KK+KH04tl,a$%z{{Ss0<&&_${zz9ٺrJUUu,е9s̯*ɅE4x{Q  aX555.\D:9>w1U3f̈?G{?L2$X2*sI޽Ym\f!C1^WhM=z!TuЁ0{{dsK{LJ"*++ɓxW@WԩSo"x{c=(  waXϞ=344LJJ4ޯ+cch7(-Þ/J^^gϞNv%0{+%fzk~̷(]xNKq3Agj_
+=#!Hd&1~uV##G]]%it3   ܹs...Rj*((pFlgdoo~IHH.wMLSSSLJ\[U>Fû!WM2` BG]%IPC;ejj@:KjeG--3g*Jp=0Sit3   5`^|/{Bbd;A-mTΝ;NWpijj|K1*ʎ%fzI	k#v;99i*ٗ.m֤n
+bpO*y9DaKSFFFGG'::۷MMMx׽@ =oO73
+  NL&j,YDCCÃYBĿwyP:h wwwfG%G z*{5o^<ݡ屷Н~Xo\&t_>oO'Rc-v^[[kSSӸ0">{l--B mY_~"x{c=(  @;Amׯ_+**jjjnڴi%z|[zy`'~'%c3h }-o0㶿~7$oa	hմv}&~YTIccc)))T{jhh#Q7СCeS`VWֱ4iO~m_B<X0_;jy,;0~TX	%/Zh{#1[.9^m	x{@WԩS"x{c=(  @)++;zرc߫>}}E+b:x폺YN$ߍ m\Ս?<~7ׯǴr;ǐܥXbxѴ=Qץ=}pv̋C|qO-EWӭzmooOEIǪP$%%#+a33c=1ޞnf  =Xz{{KHH1bٲek֬|r_^w	WknW~Eɚ<'q~M-^Η~[q~妹#m~yq{yxomxלpϞ=	'#dqȢl7Ux3sXeT!
+}w;$$hgw[-45wdGFGn?f"֔(**+400?~<xm&wmt:`&`,G0͌  ۽{jW=DB ?ۯvG8WgqgLmGn_D#;c.\8h ^rer&NH|b8)LJJgϞW*>]R?Dٯ4kUS^@Kbyѣyt/0rbXS:sYfOa9;PPݧP\\wtF`l`,G0͌  'ObccԢw@8D}ĢEקO%K$!aMs)Pˊv#Y0zPMSmӼ=k=kˋ,*g|d	񩱖$--miiIjUvvyLt钣թSۃ``g=1ޞnf  E^|I QC5`JOB&߻)VRң}Ջ=(?&ˣ*Ȩ9|~vݿ<gT2љ{$ВעީT
+qdѣw;TUx`BCCZH{~'EBB֭[,pSit3   |JΟ?_CCϯ:ӝ'**$LJUTTDBu=dE߿
+}|WYQ3J![r[|ݽ*.> ?A<"?˧M6XsvIϥjjjΜ9311իWxW@'fr	"x{c=(   }ꢶ͛Q_Hnnn1c15[O	DTRPōzRG»j.^3W99)LMLZ:lΘ1#ԜpNjaÆDq)= j9.)k֬QUU]xÇal"0G0#fF  'YT*]x}FǠAP}:eʔZ$>Vk %#͙3RQQy{G]5楮>qBU+l\1q,z}gPH5q4m>d*e888ahII6]Q#it3  ֞8qB^^EFu]5C	l]&"[7'~j!s嬇wˊ"?F֔ܿj0VsldZDׇ7n.5'+~{A!kmmmXcGߦO>]WWpv`o#fF 9aX555b
+---GG'N|ILĽuPǎܹSAAAXXX^^>,&1 ԫTKII]܋wԪjI;;YZL+9SVlEKqQS;{jӼIKK޼{AWCBB&L`eeEn\ədwwwss+mL.L-G0͌ b._}{<{?"RSƏ/$$4rm۷P0\ɩW^>6~1E_imaEqZSvW3JKKb{/0~Ps3c***tcD?hk׮vZuu5U7yc{0oO736WԄw*  a?NIILZjd0qFz.պʹ[WWWT%&le|:hrd1	MLB<qޔ7nlלÊY~|`o(,,LqeVB͝AL<yʔ)1<7ݣݠDEEˏ;H$|=oO73/^8yd^^^]] C_~}ժ-:y0y@[FC}Þ={JJJzzz&gb8~%***&&F$7uFt|dF>Xv<;WoUNܫCV-.)=Zjppʒ%KX'^pe˗/GJ+pSs)			ۃE4x{6@LG]ZZZaa!l=	 ]\'''%%%N>t@ÁA aϝ;հ@ "+E
+fVG*Zٗ5k+ꪾEߖ)xg߼mp=KQQ100~Co*ũ_؈w5tj8kit3md2O81}tIIIMM-[ܹst ^jjjrssQSFF5\Tj]j*.n)))kkm_Ag'c3srGm1|kVs̗6Z:[\;sy)Eqj7@@@^~!}}}Tä?⩏1r?>`W{`[]YpF,v\eR?cx泼 ΙʒX[ٿ˭pOO/RRRh0nP+W^	t-N>4"x{c=hXǏ١1cLMMQ%[TTw  ޾}OCCcܹT*Q;yXT6Ǐ5jWF}{МւvWg[{9ybwܢﺵKRۉonѶk#ѣGӇӖPRR!H&y䈱h^,,,?jVꊆń9ݦMe	8|:kH'ޟ*c\(=}9PpStҤ?O0[Q|ի'N8{촴rs"x{c=wˋEd__ܚ @ˠ2=mڴJ<<_oZJ__֭O,,(,HG>hHxOf'n̜3vYiϽx/m\w[}m_h滼5_>?z5zh11+V	I"e;fjjگ_޽{/\0Å^&;/.-bevAoDvUk9i˧q">lUqVMyΝ;iw\}Njjj_͛ٳgzI+WLOO?Ռ'O6=~
+_00Wk?iQ5cy䜓m'k#|NFΛ'9^un|.}1'dq~=f?㮧N!9s9pNr6O"!nk+oxcঊ#%8ϙ}37ps?y3Ol|ٻ|bBr.3͛m^0ym2Wָ'Jkۅů|gZ7m$?=--4TIHH֭{9nNӧOQQUSS-=q,h?|/#fԩv*+>{OD&|׳gO;;BAaQ7ӗ.]{={6`KO4uQ>swaPTr[[T=8^Nv`ܓ
+(&
+EEE%993oO>v*PUUǏ]]~			<X+ƍC29~圔'3+g8W]q=k/a|y?4OskyW[|2Yul5{{;Ͻ6 x-4{mD{	4:j	pco-3yȶoV<37OoޓiJL5/;m֊'I,͛z4{-=zСCPO>7n܀  wX,˗/f̘1qDoo/<prr+wIbRQMkbOɓ666
+C-s}QحB'ScPݦ)_H?V%{,veu $ѿqvI񪡆ʑUdq{%{{{566>xϟ6Bu@yp8?qɍ-󜯜xcMoH[U\m拜/'m\/$o{ob˽7%7!Gg7ȗH>|Ŝ=7O^?Z2OhgM_Zk[4͗/q`+e/mk%,4OϠTxmȹyl|F[|D+""",,mVQQ_Y yAђ4cMMMT$OC NWay@U⑴=z022z/5|H'O25ٳ鑴O?&ɓ'?~H^z8l\HצږEۋOY{RA<"VwRPPرc6qw233SWWwuu|2Ļ (ʎ1U(Ko_,--1=	9caa<'ckkk^C|i1nWqrc
+o̼τ)q ᦁ4<z,_yo/IM'6a?}~7ρ}n`h~|[8	}ps?7{/w<a0|v}͓skָ'
+#Kl֚'7	[/ND={k+***iiiP .455}F͛7̵k׾@eI~OߴiϺ=k B"gd***C__?OUF'gpFTRVc%0uTdKNNՄ/uϨwi6ܾ4.\ꨞJ= Xu	*>{=p7.G ((EӋze]]U=(,,|Q)**zv'q~~>7<
+dxM3=gϞq/lUkV@4O9oJZLv'8xj#Lkr_JaG#mg7<qhڭEZH3mdֲ[(4^ȗof拡Gʗ濾6Jqexo޽{>>>#F>|8nz2_Y (((ؿ̙3%%%]]]JOg%%	Sv8S...f;]PWc=z6mڕc>#[BB	p|񆆆eĳ~ PPC-88XEE299=ygHNNNƍC\Yz    #G8P__?,,͛UUUx ~F
+=jffZV>~E
+SzĎ;Q8/uu@I3gN=PHMP6&+۲egѣGo۾;t1~ѢE6Gu2=:[[	&nb6 	 >%%hW\ƻ    (//?~ոq$%%O痕UYY	y @TUU={TQQMٽ{aыg/t:]`cժ,$++m6I"#[)j:Ob%8p@GGGMMm޽
+~DD̙3g̘Ch   TYYYԩS7o|9؛  p2##cŊ
+
+
+-ȑCMK={GXu02#UXnaaѣG)))`&cW;g%%%M6QaةD_~!ooAΩZj@@
+˰|<5ݸhIʪUFdɒoCCޕ?    `=O.,,@XZT ƌcddZ&x?355""%*&>{nONNNz<x]L>z466vҤI=z4hse21	%=!**ڿ]aԢ*+V0a/&q%%%^t&     `Y]]~ <]r]EEe)))u
+~-fj*jϙ3G[[N7Ǳ$qv_7C:bqȀZTeQWW=zmٲI)V>}Ii9|hwk֬Azz?ySUxn2zTUUiڍORvܩ?z      d>x`ݺu'N\`ARR+x`PTccc:^_s ߖ?:y~LG(&ϙ5X]PH=|X`y>%%e֬Yz2du9=>(.,,xp@Wcu۶mJJJ$bz']tSMMmѢE|=      [QUUu͵k***N:5**1iJIhFFF̪TܛĠ R'd1;[0_~¿GjQi~~~bbbǏ&<xYfѣ	Mݏ8tPd|I'p@Taoon\kZZks9v      Q444ܺuiS.`'J=dc7KvGC7$Ԕy~꫈1`?Ė[ws&xoԢk8e˖	D4ۇJ+,,<o<X=:$3g||ߗ:"W,۹6TUU%HXM>&Qoߎj=555      @w޽{!!!ӦMX"8aii9k֬㸷ʾ[5|Bt=g7'r\5M}TK^N~ĤGEE9)kk*5778p@4v?#m틧/u$>[lQTT433K<Gp|cŋ,X;      @˗3wAAA騛)`?+)+V>}ot*+"Θ"%5;2LM9gn:qt'%xw F;ϙ?'(O._QL6A/66vر=zXx+A9|Pacc3` 111Z$=DX.JR	&oc׃-ʮ.]i\      ŋAAA[>#N(nnndo.}u|m%n3[,&{Va~`xs/-'q'vW,_bǬ6{s&澤s:>qB0ɧvvvȴZLL.VOcP5nܸ,^OX$WW_X	NM̤PYPWWP(XMb;ZQE*;wn\ƍ;v8rHYY     P3ݻwӧO0a5k^!^<2{l//sHeIl}_ɷL\5d;埣Rh_=9pߟoOW~xC<,/z_jV8N.cz衫}v#zDLO4)`W -+5H9I9s&%%%utLSm2Os&2:*	?fs=T'7ComyQ1mfbw/p?UdeeMLLp׃s+WxܹwKb<vSL|2     ޼yC32:ҫ6888<љ'ܼvFDV'n^d;꫈z1+<A_Ǎ'z.4VQ-LtOWw'
+}OӿDYb'Xy{򤏏ѣcᓏ`dSSSdKRRhZ8|*>G\a=<fX:e e77֔uF_aPɦ8sŐ!fEt;ck*|"tz-GDcUD"~*`M4i˖-;XNzϩUTT/]TRRwKbԄ>\LL@v   ৢƊ'N)LOߴi)[[[߼bRnշRpd>8ZS\Lm*t_x㩭_0_7.ڝ󫧱Ç>Y`i +SNELNNJ
+eǏJJJ
+		IKKo۶vCOE0;$%W~򸩪$eV'(HHЧHfkiaVTFvVlin]kРN~U|عm1CEH;qƑC?&s/FC\[[;11ݸޞkpa>» t1rss8{80`޼y7oބ    ??~LJJ3g㭭/=ڰ<vvvYYuI7鿫b-ž}ŞvįZiP]<i~i^wr#a2BڡKف8KFzT;v߭hh0e*hObDEE]B{w3Q[FF&!!A`!ƌu|	])"""ٵY'
+߅D18AA)yVDF_IO[i}=a{xG-ؐCQU%|Gu1K׍q̕j[5[}8)4/Jn.Gpϣwna2errr	Nzphkk+--hTS455j EEET+92,,    X^^?#Gر]v͜9Ý|<݋ݻl}M[
+kd3'&L.^oL-vWvyѨ<ufY;pe	Y[{R
+ۘ%$}TOS2dg2zh"Y5jTDD<4)**"ӃvppHOǪ7JJE]ܟ U9"&|ǈ_)DWO\P[^U炰ύʺ=lX?dvg\C$[ +]_:$*x$[ד{h;sXb
+yy͛71[#~0{ldG6m+Q[[ !!Je'III}},   @ԩS˖-Cmd0<z444tڴi,鍵NGR}Q?h_965'3{%yk<pv0h@Ur2#eG>~@bO2-gjbn͙s%PHH.}g j޿077GoY\\|ǎ5ii)VT4ydaa~۳>yL6>!R>}KUi+Y,f\%oaa!e?ή-+?"糼OmxW-JN@FG9[w/TUFSljձ5eQ-:T=Q~pA=WDRmۆʲvpp'On> ]uSSSQQQCCaÆ/(8x    IQQٳgޙCսqO*iվi!D-"RH,mZ^
+P%;c4AѾh;W|?̝{=w{y~X4>-%%$$u?P?$::&>|j(cVH˧8
+dS\=?ϙ3kFCeg_|(z`KzgڊxeeEJ?1=BxC3cFHP-9>&S2}enn>h vvvi;|0/zĈ&&&&Oz(,akkN4`+J?ç!_ɓF/y̘uג07B^=uܧ8g*\ÆlInN C)ܾQdTYX[ph)P=wUո/^M~S%X[[		ikk'&&}Л(**rqq>}I=y9sj    RUV	
+
+jhh`by"""4[ HD{]zm=sœqݳvҤq%Eq>w̚5aZui\9!zweeg?劎ݴK΃t󪧨 :nщ94aHɌD<,qdϪs-[899nggWƲ-22r3p@---BJ0QOEw{7n:ҥK}ç䣏z!CK5^sypQr0oer36tk[FO4yxn&y뉿(AW;Ɍ@}X_>Ϛ5!:1YDts8q2NbnG~~)S):jjjl   uQ666Өxȑt<X
+%%%(lllwRK?3\>oʔ/|dQ]XK~Qć"!! +#(g5_חp{ƌgN843rYmXRUʈҒΎ;LpdP~vvv=hРuֽRYs5;vq+&F1 й6Ӊ=[fj-{p{W
+u1CQ9'pڡqco;c&263oIsԔ9᫶"h#=̱V_=}y&Osp3/tTS푻 :<<<qO]u-bbb>Dr;@`ըA655EO81iҤC8p,44o޼y'Olh˗/ZP(.D TB[:LDDAP   sxm۶IJJjhhEIIzzz(.OŽ-$u#yw~*rrF{)mC*3JNNl3gΜ<ϖFי\L>D#QsUiZ'ƼٮTqdPDݻwQ__#f"\jeF5x`ee([0Ã~(h3=/D\'~}ƽjk+︴wP|n;Kl&巯=4m7_/ƆQ]*V   'â
+zl5
+ϭEDDaSdgg
+
+Ο??##N?~s_uxJJJ>](WlC   ~<{{{aL!!Yd''Xͭ$zwJyϞf>`2"\W/W"T]MfNybNNN7nD 5_;y^ys/mf=jU3>=u\KtpdPU_=cǎEXe4YYƜ%>GĀC)sܽT{/t3w	#ЕJO1c&Li!c3<uM\/1` رvګ1BZj:P\lʅzbg^gԑc=sT2~)ٳ|||vvv{p5[:::aqtW^bɓszabbFk@II4bsss[YYEDD䴀jjjw{(
+c)/#65LB}   9555yyy222nnnE($XJܹ}V3w_<_Eׯ0ʪ,	]1mڤό|[Hʅ +CD6|.koooaatvL'".&cO[҈#\WW3>fF;X~ɠ_f`sTTTrY 16zFʕ+Gf${AW[9:	!8.@TTKLLznD0_~O쓯BƔ̱cX:ar'u7t\NN(KDɑk	aAF-"-LdDS^<vϮhС}i!ن<m矪
+Iv̌:iWjН+//=u5ݪ!wݹ zggr7`AA/_Z@7zKJJ_q{P5lD[1K*	  Craa32|f)/3DQQqǎRq3vgL9i6x৏y-蕄ez*>^V؞0|VpX]]}9sbi-qDmUVc+]`cc#E^7BK{3AZܑ#GfϞAγlp;3sݺu&0VwFΏ衅@p.q߫8}|A˦Lf,z5` \#Fp:aͅ><iEE_=綣@]т{e޸uѲbR^褨.AƆRw뫃qq*]JJJOO/33q=Zf """/ǁ_s{鉹=-yЍ0LYYYD]A]k  ihhx䉟+*)2>:ì,KKKT[[>`rczTQ3}g^uũJեAE+҄HpԐ?&"[J**O3#O36*Ku)"""TZZ:%!5CYHn޼y񜜜(ܷoE%]iy5Т_7P?{cLύi'[H3^8zRA+1!PUxybV32^Ԥ̜5e%L;?=e1t.{ЋT~n%KL8qӦMQO{!ߍ :::/^,--Żn`exyyjTO~~~U//6%  #͛HJJ>RX455C}{9LG"Уe]mѣG|vǩZR9\~͌ek+R}uw9biY)%5Յ1\v\&jG$~"""ccYsRPZDDdQW{pJa\Ǐ%{UqWեiS5iIM]-a6(T_:O21-cd3̀B+4(%ɃuǌYuS
+~SΏ>XFIIIQQ͛t:лafin }.daΨl"kiiֻuSRRNk%   _x"  `ffzH|i&YYYSSӇ${Qu66-ӫMj		ͬg<ϛW~[?gR1PA^x.!{lʿ|}uCXcu}|6q'WSN"^NG7/>!5gTA۶m;zGF E%.]tРAF?\[7j[ͫtv{GU*(a7i֩ns<'~1QFz(iN>Ks,9rȖ*,x+"KO{i_rfXXXaaa]]=w= }	Pίl^RRLlշQ=
+_(""%   P/**J^^~ڴi֗cbXl{{{EEEKK{wσ(|0I5Ⱥv{gN2)D|߸(Hq&̍O*K5|&O.=LjpdP}ҥKѿ)SPE9+kϞ=|||-7Ơ64|Pvܹ$ϸݨb3aXvh]yWw~|sX"n
+=sjCz,VTggg0SuݱMJ䒏>r?ߙYuUA6VJ KzvB99zyu2}4.dl뫃щP}ZUWmbk|9sl۶-jO<4|" Yfdgga»:@7ӅQC(Jߎu팕̜2V  wy}LLH&AzGϝ;&z$޽qH;c[}+PNJJ[SS}V/`o^oz	W`g}ٓl]]]vvѣG޽:55pUz:aƍgjjJ:E>O	QW"P[ɹv/{urɩSFa	+ϟeA)80>,!<1q*"hPmcJ>5;g*FV.ٟ9ec$-5M~S6bl(kCWo9pEwn:u&W3D&q)inYᮻQsS;Pn]<j;vLRRrƌzj5.777QQQ)))OOϼ<:߮%`պ(f_w{s  444|%&&F___BBb艉yP_{2ғkcp#G`^uBmj;*B5et7Դ0ۘѳGƎV/^Uޅz^ƜaÆU^LK		9rժUS[Wj!ClJ?AçfLM`k!qqbcc>9ca+7BNeo6X&u'>z4:2v0? >Z#q)6AuUAf
+hI#cj:x'nC>:^K4_kU?ٳgҥKҢTҞFO؅h= p{6]p{i\VVV9Yszׯ=X
+ё Ͱ"  ~˛7oPlٲ3gc꒒X gѢE111x;ḫ6,,Bn;SuwLtcq(SR.`~Tn	nPfyC~U,sssNN#Fٕgd&PKBKFg_dIhb
+9{*akk;zhvvv]]ob鄞nY/Zy/gg\be~ ikYvnWOݙCq,v`"UAe~WUE n^qu's!]9^n.gkמ]w9jnbޱб4-ܧuݭv;k!E<y!|xgbb",,~QG{&iOBbpp3g|w0gr'Bޞnt{Y  >|@PPXDmmÇR(D"}TMM͈zu"HšT*+[>W'3ISm33g;Ko!V@9\\Cb5E1bEQVknZJ
+HE4HYY90ʯ':;;3r0_~O"ˡ>y}yTiou&	2/;EBGՔ4ޢU%6@eQ	+BWNɒ{iG%%%eddqoO®^k.~~~AA{޸q~XoӅ5Լځi
+쎎?;	  /:xiӦYf+%!<(7oޢESq{򁠶H0qk=mT%\LL9w_/dEIMNU}ekk;bĈRNppp/\0}Vf'ߏ[^NN񃨦~{D)ݳg//ӧ=e'8qTLL݌o߾ׁn9ܞώa=ta  @ٳ[nUPP-dCOLEH[]a~޵zċgBeY}wWڒxlG> Ze2
+-Ǎcd]tCViJJH=z#|Pf'Ofcc'N=WZ%++}7oF=LGE\aaaSSs4.I5?08dNffcu{ RQQqP
+
+df6EFKH8r䈎68vAgx4|?~cFd<l-hi*V~gڊ'j(ޟ21O]]=/3Db_MNNN̝;7$$|FD'8Ϗ.S\\ƵMGpAjVTT:tNO%A޺uP***Η.]i\ sᐷSRR"--4|:tvy_   z555.\ؾ}ݻ?P	y/^{-.ĽݻD
+i~888L3P=]a4 P-ۛudeeX'$䤤qrrS=f>IйSjpAD.۶m///cjUjH ӺǏGPHH˗/i4}whɓ'=0~qttP(bXceez,MII	sgCCCt,ڂj=njİeLtӒBg{	  Ћhhh~Ӝ9s$%%^gg>scLBYxC,}Mb)>wf{8pv'hq$IX6j;nR4M֭)Ϛ5kQOzdKBȱss`$)!5INZz5V6lu3?CD̘1cٲeT*ǏxwO,-
+f@ޞ~BII	swiskw0sGjT SYYy=wwweeeiii{{wT*>;ssnݺl}R!Ak-]<롷t}[-,VMƓ~WbccEEEa6MQQ1|P7o;v,
+4^P@Hegg:ujQZtE'z.oѧ׮]۳gܹsۇF;)o9QDuK\fr^|~G
+QRRlUDDD`ؘ6[5ehOtjpwKPJ  ~Ojkkܹ{y)**fH&Ac~Vݳ'MH;}R5af7ؼxق;$8mfyjX`}5֒$$$P_HH@ 4ű}xuV,ԩSmmm^ F?ȏaI*ƍ;Fs*c-Ǧqenntt
+!-y{    ijj{شiP00+y23MMMV^3V@IՔɉ%seԜ<T]mnp{@nUԓG뒒XPmaa'bި'aP]СCn]%/EzN՝>}:H<3ȷ#Џ_RR<;;ÇxwX舎io   F=ywfffRSYH|mkk+--f͚Mt4**,,崪%l`o<eX_^C-k2~x77TVQQ|cǎ]jUDvXTόA<nbb2h k̓hQ(pVUUDn4,??}ԩ'Ovqq~zmm-    =DCCBBBk֬APXTʺurΤ2>Fv9,̗HmԨQK'O{ 5*xD]tA/?(`MJE?0I,,bѐ!Cvʲ0jcw)**]SgSNY[[,\իWн    	P-..nŊ+WLgC$cAAA}}'k!'KuQ#F.?c-Qٮ
+0al|5
+={mll1x6|R	"""(^X|yxzOF4,rСC/^BͿq8RL=gدS vjNM~|`+ܩگ|>mNF{3QC3?N+!!1` ]]=91,,LKKnݺu߿ǻ|Bt[`M.    F>|@"ϟϿf͚xzb"+B4o޼K=z&u/7#v
+\״shj+	")622\v-YӒTˣ_/:zȱ=PPT$:R ؂{hiLЖiÿur٭`V۝;8|rګw^KcWY~Xvڻ?	n"""=` ٳ3G=	V㒕ڹs˗Q0xbߎ/_:'3}{ɓ'al    :uuuo߾=v؊+ƎPb"=guIxW~z^o5iB6,^AׇTKK!CpqqYUOujjxx";;;ϟ?ߟtsR?	"p[en-sKol]lJm}mtP~+mSӦGZhS~	~9:^0mQk ɮ;v숾ރt}}Yf-^888E뵵xwd`]   FFFzzzH<e{Y`ҥKDbME
+i?+k+B#8mڴV/4ȒgB""ʲ=z4;;f">>ѣm0`w;Ĩ'a=#BɝP(ʪv];{GXNrtא#^^lٳg?}wG"???''۱=hw:    YTfXXXuZZ3b"==((HNNNLL,88<PfnXSc2te;Du3zz*Jҝǌz***9))MQQ,hd艉IIڃ⒗'O*pݻwWYYy׮]/^h0a.ۃmQSSᐥ     UUU>}VVV=gX:'  @__ܣQO7o!pB3'\mPEwKƍE>{=AN*+ãN\FRR#֦̂>!!1>^GG$%%{Fߎzփ#|@>'O\fvPPϫ #e    ˗/QԦH<(򊎎UVVvww/{
+j燤f[9kW~AE>	0[ncm4yݻV@O^XelllJg͐̤$...tj77ģOA_Q¢"õb
+
+5o?nnno    R?̙9+5(GFF.ZHYYj3{	jOf&;mjs2Ϻ3yt*{رc999M.(ѫQW_\\ѣ111|gdZjȑ3gܺu`@?Vׯo۶M@@ ݶ.\=@{`)NDZZ=Xf7-Z  TYY۷oSVV޿?cAG-[kccL4n^3f̚'Mx~%:nn.F=4aYEo_EGDD		w-aV:ĉ7my>V)))o޼ihh04ۃ^cVO>mo;| oJyy{\\\PlܹxN~<OC\\b˲_JJJ;vx$JOqB]ѣG..z\sQ#r/Eأѐ!C	ƽ,R\\j	=<<{EBm*tРA3f@Q	!)Ubxxg-,,޿w7}a^zc{L.=(^v Lmmm^^̦MX*7#cݺuncc~Jszb<,i-ŕ_~;;{|#)55#33deeiԩ{'&u"fe'L`eey.{L* DߌصkӅJKK 5(tE}vhXۃ 6nOsĮ   3Ν;ᱶ>%0q湗kcq-AQ}Mq3f+u{{c-sy]5j5֒SSUTT/jܸq(,dJ?MN=rH
+Ԕ_^^uuuxwy^@~~!+zpr
+!ߺ= _QYYz_TUUE~NJJ}|<+M繝a!!ŋIA%*	jgȝB\܋.綮4|,zM9HW2444Џ
+-,,P0Ģ]vaЩ555CF߇> пzzAAA3f022$: ??;?s{ ۃ_6  蟠׽{:.--$<(tqy[.''w	i}dbza~%˿ή1qѣvU6
+?4cڵ/Ypge<x1 o"#bnn
+䫪 5.CCÈ.>0`nOkPLw  ,,,TWW655MMLOH`[B!sNii˗gf$5pA]ӧwD	qPɓ',Q4WY\UB|62` AATn0~[WWDx"hȐ!oll̢DIIG'''77"߇A )))K,	{acc#= ෦Mƞ} K3tPZ?CCCCdrEz:KMy[ZVVUU%H*
+1# khMҝ+6Z/ %%R z={A}HĿ^e:s,kʊQkF ^"F%oGD|"C[H-{~;.\ػwȑ#%%% zyy^lC @=CI$zGa1kWɨԼw'PzA&КssUSS.ZE-vm %B\\(ѯE@KNCԦ*++/[LOOoi+ZhB?؟3'b)t3LQ)[V5\׳M}Zni]B{);M}ݧŶaZZZn
+tW_FzahhS3o  QXXxQvwwHAQ}||ddٳ]\\J?gHPLsagg#,hL߾(Y9S??!C Q3[E $$$))immb:..NSSuPZ6qqq			$Z`ngcYOgj>~iuuwȲ~6O;s6E>mDݻ߼yw?蕠H[;c3
+Y=  }!::=."#Yo4eddhkk={?~nOoW#-43\݈m/hl2u|^"a @`ܫ(IwwwGbcci,kR۶mCgDjPKKPI_`/^!m>v{}{HXwOG.>m֤ڔr-*5&^:յo2mNͬ[g^uRSS'''t{x-a+u`c{`&A7X\%  XϻwN<vٳgkjj?yi
+'SRRŷlrmp{zBy[0{)~~0sJ?[hĈ(84WNcCoڠ>Ҵ}ɩY֔5EFvuu7oٳg_|YVV^%]g,mE-*WѽW륱....***//ǻ>JՃdKP{di'v3{yy* JQ5RRR>9uԲeƏz˗/7Iǌ_QmEe&)zTS2OA<⌶W>|˧AozΞNevjz*JQG\\ВBuMJ=xedd333QHK  
+X6sa&c~~~24L. hnrrrǏ?Blf[XgժUBBB֭pBSma#WT9L^^RLL7zKўW9&7Nڃ;_9(#3kh}p9"%00PIIIZZӳ:-@`Y#JurrD?{6dff6f  wzjὼ:4, p{ ?P\\cmm.../^d="#\bii9gSSs5!ao֗!ӦM2\S z@9κq1Qo-l&lll+19@?Zv^LLkH}}}ƌchh[x  ^sH77wM&'N8q"=  466lݺU^^~޼y,z"]fcc#))%*XK=x>:k!*wJ4gmKIjd!2Ç|5FcbbQX"#DGG{  uLxo9~ĉ3   '_vI7HۃN})S̟??99{]>绞}ٳg<zpǋ-!vFkM+-QgO<x넚$)));vRY:-ǎ{  .dfVSSPff  @.77IAAAVVv֭ϟOH`|Rl2sL---Xd+Wy;sK#-n˲+><0a]N裊@v"zkϥO>}ʕ"#YvU;vHLLL[[;44իW`   Χ\ Кְ /QZZz-wwPe͚5)))\x,U&##U_{	jB![Pܙݭ߻奤(z㢅cƌ9r$)aѫm7>^˺*HHׯeZ[[?eB"tuuٗ,Y\PPP]]w  wttlmxyy}wOllСC   7oAz&tb77799955Ç*S"A]WmE6;nnNXEYZk9g.YP]	AR=}*87=1UVMJJff>
+"$$$nݺEa`  @OˈCC=&   ?|葻Err2=1Hu)))qq񠠠*
+$˪&P8q|tNNĉΞvLI2ebMa8OM^^z֬YII0_p.5K,/##tΝ
+u  L~~k|lldi   MMM=
+766IIir>>>tNËƯG6K٤Ic)JKM^")vpp@}x99̤85VlllP|o߾7n
+\   =Bi3o3{0c{z5/ .RWWWXXdQQQ2\KZr2<==?eN%%NR_ޝ{ӕ7ط=>eautHYa1;kz7INNN[[;**뒒feܹ555x7   }6+'a\@ Gsq%0| B߿+!!O$+r{>h"IIIWW׊t#JP螗Lt5jƎi4cF3q¸k`T8{j Q3]U۷OLLLUU5<<N4h;YYNNNrrr6mBq۷on  ,LL&&GgH @F=}ȑ#˖-7n@`=x4&(d#H-޾}f:dxv	5tLF+T֙jq<8887r萦@]UU}WϙҲbe{H&߾}{Ν3f̘9sMӋn  ,
+gM&̱= p{  ޽UUU<yŋ>ge5EE1KJJLL\`i$CKPJq6lXzʮ LeA5!Ԍ=G4|tg̘v
+#35cz̞=m0 U]($$$  pVZ=Q==O>݄  E>腕U{ə n  ]͛7sq+W1f!..!!ASSSLLl۶mׯ_oG]𭜜/feefP/uG_qcGvv 2D"aM,M
+m|ITZXXf5	Ż  W4>Հ @{mrr%z*))۷ 6oLcbyfff.\=T.zݭyuh6FZHf#zvk+Ck+L<SZ9! VjőH$UUU999,֙$Rujj@@E$$$VZ]XXp  nnnheeA;n{ ۴4333aaaww+Wfgg͚5k͚5gϞm=uAakV<w<dic2Foccc3\3c*-gF$j}U}M|Fzߖ-[S$O |":::Ç=z7  @tڌy򥡡!)B̙\&{ .ӧtqqq111I]tǏ7111c^fffc-0~
+ԐU--~&!Cri1ɩ!]9 ۇ^rǜ=SLjTAfCԔDuuu>>>SS;,L,Y&  _PPPUUw  _Ŭv2XYY}SX @xs6n#,,k.LfYBցՕ+W֮];k,x#MP,-͹U%d>o;[~1ݻ{zo_CfPhcm칳	b
+òBUzzBBĉedd޽[SSw  ЏtBt03^=  t'OؠXFQQuxAAŋ7o,++k``X{	򮹏7v1>qw?U>3fL4.{2xСwp"ݻ~ziiiqq,kjRRPaaaF%%ݻwUWWl  /:N}`v n  ]8772,ݰaCzzzcl,4wٹsJBBB-`ݺg%z `ڴ)|X7ӧO~x׻'Μ+Ԍ_W޽LNfKikJKK{xx啗`  ;~ql   /_榨(((haaqiZJ
+	x-;;3f̟?D"TotW\8\QHf	靟0Wf+KBT%3X`~@RgOmmmd2+R(fϞw.TUU6  ߁i/-OII	8n  ]˗/;w3gi||<#bْ7LHrrrxVSmA	;Vprr^pjʂW,kz{CMՌt,i׫[BHHHuZZ!1&Rz-[$$$DEEO>;j  ~suQlQNNsv8qbĉ p{  5557o;VC{B <{=+JQ܇w	9Wegg;v,ޞ[muؒl#ouw[_PS-bH?fٳGFFFAA
+Z?sͳgڸqcFFƗ/_`T   ^0G`f	 kTUU<xV(YjUdddeZi<~[YYYQQ׷<*dc}8W.'#OH]#:TQ:JJJ***>>>%,!w/+ֺf͚ǏH  wJJJeֿK7&װa o{ .X[[dYYٕ+WĔedОAAA(ڿYquo蹰TWӻbAxYA~PisZ8x`qVˬИ;wY\\ׯaT  oB~~?/_(ll=@  FuugWX!**,ͬC TJHH;::޺uN;zS=[œ>h\WÌ-RUY¬Y6oJe]+D"ff۷]RRرc7Nǻ   ~	3=  t&ӧ:::ihѢ#G<x ?oOCCClmmo޼	c{z^>3z왖-+Kq6_U'+++o޼Yv6&HT"2yd==ϟ3[H   n  QUUٳ@>>>xxxܽ{16I]BBTT֭[^D=<M]<jp#**q,H&gfp^^^=m  ה8::ު[=\\\0轀 @hjjjhh@ѣGfΜqU\R(d2YWW}6660u{0ϙLm ZrFzY~VVcLڜYY/1cʡCnܸA`T   ^rIDDkr} p{  ӧx111UUUWWWǳ=OHHJJYv3gP${4
+)ׄT4tS^_A&>''U__uōsdִ6MQQ$	W\\\EE4V  \r:>L p{  M-|2))RNN=OV`OLL[revvvcm)	5^N711AƱcXi2Wv{|2L  oVg o  A?|yf)))QQ۷G*ccRSS7ͮKOLdYSSAA^x&p  .J @y3g֯_?}9s899>}>!@`q{jbff&**bŊZa)n^޾}#Gh)),jgDZrrNjM/][b   8::ٞN<	y{=  t:ǔ|mذ!;;Ba}{ZZZΙ3G[[1&uH۷oPUU		IIa"\eCjP[Z<֯x7    i=IfޞR ˼{ԩSsֻ=/^>}:
+I$2N;8@%қB??wYFZF297=NBBBXX<==-In   ?~Y=  tƪ/:::Λ7Afff)))ii,ݞ.lذaʡix D(zOuuuDM*DbMBOL|Lر5t_|?  o,u[=0轀 @ŋwޭ,++a
+º4E"9::XLAA߿"u===Ν+%%:@h|JY&!!ٳgx7   ^9n  ]ҥK***qqqL,ҌB;w޽[RRr޼y@}B^>rĜ_ggl`#|=wwwyyy!!!ccÇxF    myQ-L.n  ],//CFFfڴi+V H>dE <~x޽sEU1N=P@wPQc"M(JV@,ذ`΂ "RġuյP+(Ȍ旝)sd{o2;̨;w())M>	g7nhddԹsgSS={~e lO&Mpn^ @/\R___AAaذa>>>w!$_߫W.[L /r=VE H##N:;LL (.TtM///333ҹ_v-;;  ؀s{@ *-///99yƍ={زe/Y&2VRR;wŋWD 'rfff=z=zOR6>~C!=˗srrt %@l TZAAݻww1b555sss//TAHٞoooCCCs&%% ϏVPP':sX;0  366  `ԨQ[333믿Hu  ]@ *v$âCn۶-%%s{vLMMfϞ}EܷQt)nĉ
+
+
+QzHFGkhh/_޽㺻  VQٞMJ+((x𡯯/)))lD=&&&***ӧO[w9l_wtt$]ݛ K݈onTTDX-_~-:~xfffqq1-  
+Jw	
+
+6lX׮]uttV\yĉ+X?	Ǝ_@T<)q(۷-[KDGGFFN2Eӑ#G^|uG  8t\P{! +++%%%9s(<.'ۻwM||0GsO}Wo}~J֩9i7ܲ>l{s`Dͅ03f(((hii[.=>q>Nfgg/_s  ;.P! U#gooOGd6{l2b*eKgcc#//?f̘(d{*|Ϲۋr1)NHKeJ=;Y׈iٞ+&V0x=<bud+w>4</[L]]O>7oZGx3gjjj8::>~  8grAl TZ~~W"##@igΜ$C*?~MI'/^x^z*qξ=WbŚC׮c}q՞!%whߌHuksh-AMVڈ۷O^g=衙$$$/O}3ei͜;|œNOGGǇC_xq߾}544BBB={p g d{ *Ș(!!ɉ:\U:d#-?o߾ǰ?h}rҠm2PTy-ZFLthLAf7?uC_>qr26O۠AC`jx사eh Gjذ^<Ssoqk<j %al@6 3{98՜.6>[n]~H7`'|0 ~Cx0`1c]Pu
+  \"Ej;d{ Ҋ322:䤩1yܨ(kٞ=zfFq>"Ӗ]W,PٱYƿSÆ%ƍ&A&~"a{r=ڑ*6ubV3Im6%vjf/<*qf ΝZ!b&7jԐHwod+';}͛Mv5>^NQ~wss#=}||?~\PPu
+  Õ\P  &
+>};}tEEEYYى'FDDf'$رcrrr^^^Y1_
+}9 A:-Z_ѡ+^b2eLxؙ^YrHF%9%m-ᓳӽ|N~sӞ'&sO6Μn@m/$/hKaCTXJ5kLHݶٺ*׋!??FCUOO&MJc]t122"-xbnn.N  d{@ *M ȑ#3gTWWWPPϊa	
+:sܹs{쩫}|)z<CǷC'ܼOqtd왆;lI mջo_x<*¢7cEfGxz:=]YҌFNw3eiQ6ݔKjɻ&1߭`<}v`s%d+q>SsDx=iߣU&TZ駟9Q
+
+255?-HE/u8GWNII[ }d{B "==ԩSk֬ٳu@@@jj*kwX_'%%͟?_]]hӦMù=$n-ֵi~:;wkeާ-ө%ӟsfo؜U&Llݺ'@Vm߿dֲsd&wUU:J\so][N
+zlݗ'ۿ!-0NTJGD8neeLQQ |!C̨zP GAۃ@l TEzz/_nhh2j(2zXRddɒ>}꒟7n s<ScŦMR=*6y3ei^]a1ZMXg>3ǰ!i?5\\\z|eOK]P֭k+ד,缰ؘcǎ:xzx<M9N:.}Nte\  A d{ *.\qFEEÇaTIח^?99yٲeJJJ.r劰0-WQc#5?Z|7n__~⢦O{J3͏=TҤv횮r:fZ&cv%ec#^=g1lK5*ԷOw]^?缰'H_!--=hР={<ـ>>qq7n%VZu)\  "p% @U|!))i͚5TUU%#۷<Օ,Xpzvc,oqT5swļj9GX}+ءyVM7oLyIfr|K	m\L[іLg9Ӗ9nc(7kT8̟!#ݖz.Gf.5ӧeeekeƲ!]DaddDDF>}f͚uȑ/_sݕ wi:  4@yOOO##ݻ.BBU|}oݺa===EEEgggϒ%[CX}YÆhuIuRU;0W
+״
+.6umi9דhkI~Sn1|b^]ȻM2cn5t)fR~;b|6?ԃuOlzHd8p`	SNx^"])  plOӦMq%^ @Uddd\zcnnnoɳuX7+&f۶m}%C9gs{t믍TPia}qZm6;5u4UviE%O4h0@.$pRM>Pɑ:o|e]yë5r26EM#3Gi-ETUUսJa_|@xǍwǏr݉ :  ۷>tuu׮]{%֞̌ܨm۶kii9;;?~8?.Qm~*əhPGgW^=^lnړ*Ydzn_zx&MK=ߪA[7t?7X~ĝ3Y`Y k+ԨiSV"{5B=h4&)KwlW_~Uź,
+>JXbNKY
+"#I@]iggt޽;Q  A(,,|qHH!?~\=>>>&-ٞ.!ێcTo
+6*zXywn1ys`YTmۦ^F}xhFNӦ,_<^|0Fͨ$)õNR_o8%x!v]j>i$sӞPwf&[4M?3^I444-Z !AN9,\LTOOOYYy|9  IG+ŋ?|zݻw7Ο?9<^ѣG{111رeTTTAN$\V#ӖYN|\UnZYb$T@#խB։,=MOW]MV/gd}4m/"sbƙL5֒:X&s26=4jzvdvhߌ:%F^vjհs5k̙]?]ti$Ԙ1cvu-q	BO  q>|C'##TD/&[JNNfj:ݽ{744tܸqjjj?CJbt'ۻwWZYYF|)z^<6z2R-.jZև*݋F}=yhM*I"ףFϑ}Ss'sӞav̌M%W:y=M7=Z҉:f}?R)ylݺI~B\U.~={tppHc2Oa``*j*###eeeKK˝;w^~=''  ~tx;'۳xbebb"aj:/??ٳgAAA&MRSSSWW6m}$3Qy1cƐq%مԫs{r?nvtOe3:]5nꊪܱ8Uo׌zؖR7=3L";݋JdmeM%X5k<l#kQwq	70s,Y?-6o_x?ϫ~jrtM{<P^USͩGғ2{CxzFVFNz16VNo9<˫W600PTTذaÕ+Wrrr.  &J.d{ٞ/vjՊⴴ;VNNNEE"##?~844..n={>|xpppiǗ1/;ޥsK*2jzB*湇1}t2H=;?}|nt^#Qλ}ƚl*/4ib_Ed54Nݱ-rGjdts͕S	3l٤θ91/2lHT;QIFi&gW×}C%1cBB
+||6l`bb"--ݿUV>}Ç\w  P;WhjjP5@WPP)S+))7.$$$;:27qDÇٳ&]J/=Ǐզ)2m/0*
+ϝ?QU&֕P ݽt[:Hu=dۑw{P0o0:s,_>qg^xؙsr˖-r1y(g[_B= kko{}| Eԓ	.[X⑗=zUpppšW^411700X|ٳg?}z  :^e{DbbԩSE? P9B<y0gΜ^z)))M<eGGݫ|rrrdw޽/|YXn][Q7R!cǷR~uPFhMm֬1KBo׬sۨ(w{-jQc##	3s2wX0ϘlGZ^˸$GQζfƏ>zhȓU܈JII><   c!}>>gccC+V<y͛7-3  TܡC:v숻4CV=LSNe^@ PyTgggmmmI&VnT|;z]vzqp%WG*3##~(,tv\g# ,H-.4%̖/]l|ɠI<߳l\W2ϥumnj\r硓xa}?jGuj`!Ey-Z͌eNa``vtt@@ĉ{ݧOy:uǏH  w}{?Rx:@5o߾%?dZfgW!cӧOϜ9S]]}k׮MIIr>x_KZ2cTԹ=eN[L` GXG;uosMBܾޭ"ׅfTHESIos>c[k=^=uדvTm[lvq!֙(OLի͛KNc_ߌ8+訥;wϟ.  ^TZd{p@M
+^:~JIIiذa۶ms/^ڧO\299_UT_~26R\yo\Y՜NF'Mʕv-iI?iԝ+3Oj}\a~BV,oj.[U98BT%.999nݺ5#.x'NTSSttt<xǏ
+
+& @l TEqqO/%%ebbBFyW\)ecONNvuu&Y|˗uAkmGkR9K۳iȏo7VV7_:~ￗ<`}f.so,-[6zV?Zl~/=yq.Նʽ̙ex7uE0Oi5C/q-%!$̛7OSSSGGgYJ^,cgg'//߳gO2#  *> W^:ujɒ%'C-7&%%CI/^\l.o.Xӂ 5I֬Yc*ӶmSG$\θ4.wjJ䎞=\KFL*8:y?-+YPmkojhƧp[6XV-Uc>we\ճ{o]]]uJ^B00TOQxɝٓu  }d{2D-{ϟ?iaa```nݺ˗/gW!+WӧK.vvvNs>(ٖruhA#/o,4AjA7Y0{""ףUZdɜt/HidYzܹx:(>zuكUnQg&9.Tk/PPdEzCHPKo2yڶmJݟysDя0s׮]UTT-ZtsxG5kV޽IǏsN~~>׽#  b\@U=D7g S2mժyNc m۶Șm޼߷狿۷eee;v8}P·5/{nCiݺ@CE.&{'qΝno_xd'%L\dV/sgDa[^]~UZw6Su㣧ue>m!\80}Ͱ#.]("̜nРA!;Q#lۚC>Xe{Jn)uɶD:<6ZҒGwW?:2i͍7o}"e5R4Ng|/aee-Z888,ճc $f}}}XZZݻ͛YYY\  PQ\Z=Hl@mذTEEܜ.\=T@SSs			Ey\k<>Z?jz-!}O?Z4w>w1K6~vN-[n2a#{|zP)i_Qv3Dp<0n*+ӶyƖCUS.=;uI&M|a7HT.oǬwIclGkRо@?'u]hF6psfXVUDHuݥ̜ny")Dx///rkĉ'龜y@z琞B/m l=> c+++r4^Eݱ޻wwС{0a?׃lOaGwWGGNgEBҦhѥsK[ln/^F={. *"U~c2mKukM
+FMG#sus[_=ugsɺג|ݒs?n޲ɪ[5a͚5n۶inҤ/v}h]_qTG]]}Ƭ|1dȐן={g  @ۃl^ؐ)׭ >}t۷[YY)++q,9חlϣG|||,,,ƌ
+s#8|'LSG_OVYn][1OajԨaVMml}J\<:8}T.eC
+HaawSW}[TR.ݾV{m+jf`޾ ;FCS[vd{E2]MG^jLz.^`z$a&^M1̌kaaܘ]4!aʕ
+
+
+&&&nnngΜy!  Թ=M4\P{l-} AaacmmݥK999''#gr߿kaaleeRИ(۞%[IkM7x~r$d,̕&^dбg}|[vCzod`oY.?tȻ3>XK)!2ux?yl6)S|)$pҜY"BYwxJ<804Եv"ia?i3,t،Sz)|r3---wޜvG|-[СCmm+V;vÇ;G :@P=666SK= y-??#F(((hii͚5+**͛7_YX|}ɐs߾}VVV]v500ؽ{7֓lNDveСϊa'+xo߾}ԨQ{&Ç={T  T#\@U=>c% ZQQѣGBCC555544"##3cc>gǎȨ(ssVZr)1Qg(/<oݻoIk6AAo|RQTTT.\߿ @3V ߏvppPUU%iӦ<x0ccvj0hii.K/cdDanD1[vmz\kIݜ۫QKHHx  :  <xjii988gGGXX
+#"Nmll陚+ 8&&&6mzs0007**)SC4>""۷ ::  
+PX\\|899_GG144֭[l?ǧ84СCӦMSSS#-(iF?#eV v*YJJJ0_bK>_q3w\}}}mm'ݻڵk :8\ 5?;gΜ~˛{yyݾ}s{>_ɓ'SGGgժU.]p>XF joSo/XW^***KpD8qq|}}233  JHH0ȕU,a'd%
+//|>ٳyFFF>>>)))d{=:sLR?<r>^F ji
+K7o*9f͚u).84#:7*ȑ#䈖jӦ͐!Cvڕ[\\u  udX*^+?N=,dred{
+/^8~7o|l;wEVVVQQqgΜ!U·Dmaa	VRSSڵӯcp-
+?d]]nݺxzz^z5==n  8n'*^d{j4	0++YzСC=<<.\Pt 0 ҥKs!>},\4LPu!,x*sG>%	aXN8tRcccMM͑#GR9似<  5~&'O`'*^d{j4!޽;uLMMUTT,,,ٳC$sիW >o_񽼼eggwT>ܜt)/Rȡ{{;  +{rU/=5 P{24333իZܹs%{%$xxx)))?~Wr!<r?>444cp:t(OHV\yl@u  }%=uREFy)k8h *۳v[^~}\Z>Y1<xp׮]vR='|Ν;,X@/_~)-s @@_lOz@lڴiȑjjj}uvv/ٱn޼ӣG++d 1BFFf[n͌_ǯ 8yBwATTTH.../  \uREF@FaYYY/^:th۶mfΜy|?55O8[nÆ۷oߓ'OA *yYrtYOO-חW`bbҢEEE9sxǏ.  `SBB䪫rU/=5 Ԑ۷o0UVjjj...%7`ᔀf{<yk.CCCyyykk̨/;|r$$tppPRRpwwOg<R{RRR;v3fLLL9  ܞ:\)W"Sl@M
+7oܺuQ qs̉-9lϣGv5b---={dep=F ~Fe쬫KKg߿ڴi'Gqv{8  l;=uREFB~oݺEk'O۷cHHHZZ"=yd߾}#FPRR233пb.	AGqQx7eEEEUU+VșǓt FHgBu  @3p\Ջl= QffDhhYK39xv8p`6mcǎ/^~ƍW^M)u)_,o*2'Ia(%)e)KBJx)axW*o_/H!TiXy[͜#2!>_-z&0	ϩ,aW$/IM_v---ҥK{ܹsfFQrV;aDDLĽ3ttt444lmm}||nݺG;6  l{rU/= :BP <x $$wjjjǏy&ٞ;
+##´A`mm=aI&M	bW*^P*Rݞo]-fr*QV^2_kUf"MeN^["oVV({{{rhii䐱MY;'+&&!!aܹ:::#Fضm[RRRaa!  \uRE(//wpp ޽{7n׮]?\._ݻwKIIn}%2]	UYZ*˔*0WS+R8-%C._}dfiUaҽ{֭[_F+%.C׷(</Zhٳg_~u  ݑ#G&MJW)W"ۃl@mɓ9shkkQ-[n޼)foɉYbȑ#'MdoooW+z\*x	K|fEJY̵ė,%|Ɩ!JPxy/aOڗETJBJܒޒDV/utt2e
+9Z555,Xg'O$==<<N:   :De{pnOݫzA
+ŏ=:zܹseee[n=d??+WtIdxR113dy뻊*oI	e/&(	~IՒ&2q)꨷?^f#z	eDr\^Ben;syB]>qBBсR|OOO͛kjj_Ν{׽  wWU PSLQRRRTTJJJ*ec*jޕZXڽj,ZRzS̒X۟ؾrGɵ޻|ɓ'Ӌ   J\U*^d{			˖-377ӧψ#<==ߢp6d*,@ $yvܹ75tqqq/_D  ~Jd{ j/^:ujʕRWW711Yb?Sr%Jc7nݻ?~{  oOӦM{rU/= FϚ5kd``bŊFD ۃ@ CCo߾;rHee~9;;GFF><//>  ?:ԱcGd{d\Ջl= O<zj###999˗>|8|@ a@K>Ϟ=ƍSVVVUU?CBBnݺ  +p\Ջl= P(|s֬YcaaAٳcbby;p=D \ $$#.oرzRWW?~<yy֭O>q{  WrJd{ j##HFmO:thݕ|~vt4MYǇ7Grrr~~~9998  ~L8WU PKeddܼysΝfff;wИ7osbbp!'`9Jo˜쬮ޥK  ?>*ӴiSwwwd{X\Ջl= P(ͽqƦMGw|Qc8x"vCӸ3'''ggg-  r S*^d{SRRcgg׿ӧ߿?55/Oj-ZԴo߾VVV^^^oFF  7J:\)W"ۃl@-y{:88hhh7|)B W
+;`==޽{>|ݺugϞ}P(亻  S+^d{nݺ<m42w ('`+
+#".]f===z]ѣ޽+,,亻  6S+^d{
+
+
+nݺ	&(***((3f׮]III%|@ j<||>]www755Ԝ7oÇ?~z  lOzA~aPP]^陔9<A(-8sʕ+嵵x<޳grss   *JW)W"ۃl@m$޽{2SWW255ݸqs>q?E 5H';9ɱOz  ""C  s{^\Ջl=
+7TO9rٙ---7lp̙Pܨ+	y{{{*x>  >oOzAŏ=JHHHKK3{.&&YWWWCCcĈEp?E 5ݻw׏Ç+  ѡC:vs{d\Ջl=,UPP?~<{-	UD-c˸lٲAEoQ-4e}}}===;;={$''   S'+^d{aAAAA\\7yΝի\jׯ_8qbѢE%''G}TG,%W/s廒
+fSEHHDP7zUbgJn|?w	YE
+`iCu]szrP8߹s	ϊŞ={^xu  PI]j\Ջl=,
+鱱eHHnbEEE>|={z555-[vر˗/߸q͛׮]529_P2K^-%/=j<U^)_%KfΤ+xkO2w2Ƌ7P$X"*
+sNZZ?7mD~Dw޼ysyyyWWW  @={rU/=|˖-7VTT\dIRR7*իW'O\`A=&L0{lEYP9M*,Ҿ̅+X|jX7;Pr\[Tfɒ["^E7[|ZB>|UY7KK|a1o޼cC^MMmʕ/^7  GiӆIHHI$YyWd]-,J|aK"©@WJI" Nzs3#-,o&UzyE)sV1w)ƖA+u3W-Q2̏Os,o0xfz)at/55M/@s1_-Js";w9 sŘKRS$/K>ӯ3EJW-R&U,]>=,H8$i̤߇2ˤ<ܼcǎ͚5Қ;wÇ`CmWXX''͛/|.]dee{0ȕ*o~YEXX{˗W)To.\-5W/;jnȖ*oEٯ*]]iii/4?ׯ   oڴ)ukݺt);H|Eͤ_w2%KʜOϡbK~XE|3i|_R)s6	̗"+g2A,S>kgΤJca	[$"oQM濟X67d>|?ذAٶmɿب2mے0_|}I͑)Ig+2A-&R`I2meKކ(3w_<
+5G2
+Jve5i"Mi.fsăȔuxJEO_<Ŀ̯JnڶmoO˗e9tШQwﮦֻwouޥ"/իC5+o2w>ARY֫T+*'r5myWKKKQQEZRRRrrr:q=  @8ukРAƍ[2P?|tR=-^.AdH]"Z̒m`.)RxyW']E
+Yjՙ,\Fd%(cuZ|\RX2%oH#Eju"͡MR\3`~\Q-եzſe&nhU4&+WHiXE^yT̺-E#-/!Dvz&M5j԰aC2bŊ,{Ye<y{3gΝ;wҥ|Y4"7)Y2gVj*Z*lZ$U,PN(kH^xie>|4<syvx'k׮?,YrQ; @qi99:+ѣ4\ޥ0KoѫScǎeV$Ȝ2[HMKE3=4ka'"{	zmOv%sDTLf3(̝0濨z5]_~tcS{@|E>/B-F7癅P/5o"p0T"YF@fpf$l=S`4KŘIw ;j(cccқ5)իW/WPPu/IQQQZZڑ#G:tBR_Vp~y/V߬-oR^en~y嗹u}sTd	K˫w}+a_Ud}W$ɥI.z̙3III)))/_  y-{Ǐ߿p=/{.5M/\C)
+xxQ""rfKlvLХC%Rx{ -.	˔"xe
+6po"RBy&RxyH!s$|	:QA!Ẹ@\Q}"/H	vH.J8%S07ƍ/СC/_~O>idggzxezUKJ!x%jkW~~QJrջϹɿ{sssK    OMMݱcǰa:uԲeˁ_>999''AC}yyy95 TWb!SsDɵs5Q"9ؑ    dffvY__ҥgϞ%Cu       v
+iiiwuu=v؇M       CttÇ߾}'     ̳|\7G!
+lr      oq4        nTb        T              "R/}.YWFFy+11QlllɄH]9ŋNIO:UVԒd$^$i$A Qm kB'oI؍        ,HN0*[SNgjjjӑot
+hbf*^Hu"Ϗ~B'>|\%99l       p*7\Ky5|$2Ji3bdu*OB޲\n )bhyfʈ,CD-swY2       `1/5StD*"rz}nE+`_0@vDDB$R)VWx       ̫Ч0WLLL\6kʢTЙJd{*X;LI_%L'":E%        љbRf{$N(2QTvf(NaaZ*w       g|)'CF$Dg{8eɵWL{Lb.T"\       ?g{<A9=k\}Ç:2.       AT=#rftGo\wY}w""me\       tNH^K97y{HnOFFu]Y{yR]yYxMMM;B       pٞ/_oY#y*71)z9;_y!'v	;53賀ķ       [UIVZedd$''	Rb93bTVGd(7df[%_<C7'%)H3SUdC       RlFrFHEd
+p+322 E`t&I.j\       ?	VKL-SɺSN5aΊYݱHd>y^XJI[,STDEY˸        hQ2.        ZS'       4Cߴ        ڕy!8       @urcN1^222H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               @y<
+endstream
+endobj
+10 0 obj
+   79590
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000080712 00000 n 
+0000000187 00000 n 
+0000000015 00000 n 
+0000000166 00000 n 
+0000000515 00000 n 
+0000000287 00000 n 
+0000000782 00000 n 
+0000000761 00000 n 
+0000000882 00000 n 
+0000080687 00000 n 
+0000080777 00000 n 
+0000080905 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+80958
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png ns-3.21/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png
--- ns-3.20/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,272 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F WIDATxw|SsGJ;^aʆD)"8 UPQQnmVAT.¦,ʞmW{ܯe)ᣤ77{#)"      Xhh     Ƅ     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hT{           F     Q!     hTt4   r8;vXjU^ƍD "   PS6mݾ}{XXXHHѣi pCt   P#EEEIII6m*..زeKAA n   @۷oBFh~(B !   .\lٲt:V۴i]vO "   7׬Y|r???///NסCI~]vɲL[!   PEQ8ѧOoooFөSΝ;o߾}ժU6V B   :ϟwe6Gj͛78qot:i( p=    TZZ~kjiӦ!E7nlZ?sff&m    @VO:5|/[!I$I:u0auj| M    RzzmL&ԩSM&F;I|}}G=pӧOb t4   t{mٲ(BEQE$),,lƌB;     @ڵk7k,^o0\J>cƌ	oڴ n   @Z5HD[   @ME=  7G   Ii     5&;D -    Gv  E     Ш    D퇕z+%    h4>\t wF   xR'R q   A-Z$MLLJM p7:    Fh4lxl6+.f6#""Z	Y 9   l6gjZ+.Wiܣ=L n    TTXjCu 9   ]]E=$>    @M###cccy@]   DVbXVw3Ő=v$''c<0LQQQ6͖Z#5nh0"   <>&&mvفQQQ&s6->>^=QϜ1ILLBDDD U!   <j0`krREU-=fEFFZ,!h2jgXRSSkWS'6}Ձ    jؗ] :::66VկUCӈӴEDDT,KLL+&    (j/J'eW^ЫW#褤YϿKmJ={+=uE   xT͈'ՏLQOc2j,2}t/!!!:x=@MЙ   ,߄'''W[ЧJMMuy]bTh2l6fMNN޶m[n^-<=   Q=t%|Lb. ˲'W:f3)))YYYjbLP߈{    Ɩ+IMMu[}.4z<\5H			&!!A]:Vq   AanCBBbcc{0Wc65Nn6je
+-_=   Q{L>]KWZ """))z?L&u׏"Btŀq   YbZ,h4戈꧸VX6M7%111111%%ݖja?1 A   xb2piZSf::HPlllJJ
+GĭNEUP+{    Uɶ˹]e>wݖXøG]d2]T<1T3   qcbbBBBOY&\c\\j@pCjjcZcbbjZ̐̀[!   <HBBkr.QG=6-555&&j2|{VOĘ=%hY 	   nmۖ<rEQjљK=222111::Zh4&$$bccSSSSSSlZxߩ!!!UM1v   Уm6z3,HNNV;T:Ԯ'**JMf3=ܙlNOOQτjV'zTO$,#   <hT4FΥ/d2\Dp"))j&'';_rx(11l-d*7:5[+>RCXh=   r7LWHt)3s|[FqѢE/\qjo^tt4Gq   YԒ5)wo*[Q(0( /   Ĕe6Ք&:sauO|||jjjJJ
+G 
+q   AV)\li:LEC;` b    fZ,zɹY;:D[   $%%Sq	!cbbBBB"##]?K:ٞ P=   gJHHRs5mIMM0`@sr3   %99999jZ,"tRm5$    x:h2,uԞ T    b&''<.f5B\ :D   x5Qn}l6ݻ;YUT5o v{    Z*af pg=   'UP $Ry   s$&&ƈJy\V^}->}~_ &   <HttCbbbjjfKMM5fd2%?7 POK>+   bXbbbPUZݓ7#@G?s$(    6-22f06bPrrfKIIf%. {    f=qqqexVklllrrrjjjrrr5 '   <Hrr"..nѢEzlL$urP q   AV(3`sE*RzdY%    YثF "   <:zUU{{U.] {    b2fǻHzE5"   <:4Obbbdd:Kjjtc03 9&b   <HtttrrbIMM0`dRy,Wtt:?W5 q   AFcJJթ֭VkI9v=t wF   x5Q|G}l6GEEU5j4#   <l65)){ 1T3   RK{$Ib pgT    :úk*.X+    X,T			P    4r111jc2"""\E=111 	q   ИY,W\\\zzzJJJJJʶmیF"99e{     ZSn.?kW#I     _QfjnT ;#   ?VY˅ ps=      
+q   J*_zg)
+=     = }h   3qqqxVq$I"Ӷ ඈ{   ,""RFe
+C5;3   b h{    \4E "   pqE3 3    G${       4*=    .     8t 7G     Ш    )EoQ     )I     D] ;    5v$\ Έ{    A 4k    @= n     Q!   PS{h
+ pg=    jJzEaf pg=      
+q   rubf pg=    jՙ  wF   H= Έ{    \{ h    &b0`d2L&C   i=6bƈ͖8` ¡P    )Oq1qqq)))III6-66 @CA   dY7{DDl@B   \KgJl6Ѐ    h"{nlԘqP03    T">>>>>^9:::..6P    )EQi$lBfzrhX{    Ԕ$I2Lj c    8$y= @    )' "   PSjO.I<a잊l6[dddXXXXXXbb" E   4ј]W)))ѱ6{bf    59ݸ*h4.ZHD] =    .$IF{"   pṣ5O>]i mљ   @Mu=<3W||bIIId Ψ   PS=sfXP =    j5gv2			2v E   <d2U:;; :s   )Wugv   @M{<yf. pt   PS03p{    \	\F:JFC   dYo KϽW^sn=-آ`    wǗ {    Ԕkf. q   r0; 3    \ {     A    PS! 7F   73     )Y     F# &    pA    ő$I E   Q    a ps=    j|Pt 	    ԐT3 3    5%I  E   љ q     @B   9 n   E`v p=    jJ$IH|     ):s@@   Ԡ ps=    .$I  E   P n   E "   p    E q   b h{    \4:s;#   PS$3EQY=gur    {D# h@NcL&`hL   EQEhڵL2bĈM62    @[l٬Y_СC;v6mZ׮].    )F#jpÇ+lٲ6|g{쉊CCC.     jЀH2q5k|k׮=tPZZԩS{v   @M:s'ۼZі[>?]*ɲ\Skuez\׵*I-\Br+U@TvuuBUk݅r۩.ZX]ת2\;TjժrWXne_mvuYreb[{,VJo]{Zv\Yv*r[rRUj@E˝c6t-qJҲVuݯN e_ڵJ_\C`{O{{/ݺre@Zhe,!_v۶m{Wڵ뭷JII>|]wծ];$   ~/((0AAAexݚV;1+{Yһ߲yex_].
+)wg[n*9xs[suނUlu%VUѱcǲF{Ôr)CITZUz^}Ru\DUq5fCGQ(w.Ue**mJ5U\'yų@Ҝ)ݰrcӸZ9SޕL+=*|+]yw\<ѯvbxZpN<y<пV8>   PSz^QXX誛/{W^rYCt\RPiOXu_VzX_cŰ|bZ\]/Abj^QT)T<Re#גzjvC%BZfT+UKzVUX܆;+n깕f67]JSwe8kH\嶤q,yRDeujVÕ;v}ʕݺuڵ*q    O!IRhh`ܹs֭+s*PTN#ݣ2JKoWJ9UmTw*x\vJj)Mdʕ9[vjrY4smF*%buz˔T(*&*Mʝ3iPiG:[\mnXٖ/Y8쉧>lUUUK,Ij*ʽFCRp˕mq._ծ=ʾJwz]gVuoU\'aWT_ZZs	!:wܻwox>   Ν;wyF_XXXZZϪcT
+gVUkPUO5#*SnU?TU
+F*\T>
+f5,թt3WLUO,U\j+mn|nGJsQuASOS5_}+UpUkUl:9V`U|UlY/]Vr`FbjZoGf3226no9rDQݻ>|      P\\믿&L7n\׮]ҙ     4fҥKnZ\\6bĈ+O>~~~,     h)rԩKn޼e˖#G;vlFcU:s    ,33sݺuG޽{4ih&\
+q     hE)))e˫=*     FEC      4&=      
+q     @B     Ш      4*:    @9;vZW^ƍ
+
+M     cǎ+V֭[hhȑ#i pCt   P#EEEIII?n?|͛
+
+h pC=    jd߾}˗/,))q8ˁEe     {.\Xlفt:^ݵkO?D !    x͚5˗/j;v$ܵk,4     Q}$),,s۷o_jf     ]v#Gt:IZj5qD__o߾tP >{    Ttk׮jӦMڵN7nlZ?sff&m    @VO:5|/G(Fԩӄ	׭[P n   @ӷmf2Nj2i%IB=zONKK+))))) h    U޽۲eÇ_K<c!Dǎ]*l6z@]!   Pv͚5K!Zݣ(1cÛ6mEs52V599jZV׃&)**bfRSSzƸi4F#G
+   @Z%IR!D```@@ڽf+5q 䘘V$!!    fX,
+l2%55JrjUucjFFFSC   *頴qe=QQQ			eENBEM>=99f%''GGGsM    ˗X(
+Ocf=IIInR5c6-ZzTb'/ =   ǩ=(L-bL>]KHHH|||}0 e    G-ߨ5\hdRSSՌ&::晠bLNNBL&hbcc###ukWP)   _bccik>Ϻ:f3)))YYYH:ҹk嵘h    FQ-7͕Nbm6#""Z	=JLLT\LBBBjjjMLLV"::^]@E=   @c&IRَW:BjZ+WiZ:f\Mtttll:z259{    Ri-OEUݟS׃r_f,K5b֦Jd0    Y2:)`"Fjְ$&&cAM>]͘-ZĨ=@U{    \U|QcDDDTUSĨeDQQQtA   x"jXn,5a"*""BɻC,˛Lzl6'$$pj0;   YVkdddXXcccccc]o!]sU<T4bjjcZcbbjZ攔G   x:`FUoccc+K	ħVD׈Pl6[lllm1BH    GGGGGGlrw}"iFcBBBddڥ+99YԄE
+Փ*11f-Zd2Y,ĤKbJ"""*J4,=   Qo|ʎj:V|||56j<\U]إ({6V=@9=   g1LjSk1F1))j&''[,KŁx(11lzh2fk/u*>R$\"   <KT_AuG|[FqѢE/\qjof paf   fW=
+.\=> Έ{    %P_/W據\Uͅ+W 3   ũéǇg'&&\> @@   xu%WXVժ>RբB ps   x5X,IF:R٩*eYГ q   A,dRÝ @E   xԨfB2` d2M&x2   <NrrrLLLHHMUqC6bƈ͖8` uT&     			ɹ>=pCf9...%%%))fsX=   1L-ڶm[zzzBBBTTxsݙ:6=#   <:KRRRVVV'11ӟ˝l6<C5   h4FGGF)k
+|ܐ:Orrj]hx2   ClԲٝy$I=&>>>>>^9:::..6<q   YV+)dr\EQnc'0@   xf5)IF<!5 {    bZFEj%    fZ,(XJD    N%v=$$$222>>US5QEVa Og4   YG̕6`jrWg.{܇hTe_'&&m3   \s9Y,djX,bѢE<ᡬqCi   F2=L L&&e<=   X,j9lGe q   Y|GUq٬v諭Q{     $22255#QQQ5]z$Ib pg=   ',u:s5&)..v <q   A#"".6QFhfui ++++--`0TI.Vkz3%={ TjRSSFl6LjO #<΅^|^xGoڦ(3ȒQrYv˔}ՍB:)eeP*N[r[s;RW\K55h#h=v0϶wo>iҤ~]v ,KLLLٸGPUO?$ -{6햇߻:Av%g˧7wף>߲eƴ,KD' iFDDffX (99fTtWuC5׫A84~v=99O<􇾚nd=[C7u:///,--m<4 x5뉋JIIKHHضm[zz855599ҧ|׫y9@@uИ9sW^ꫯyoYRV 9vrw=s;vY é9N\\ܢEd2%%%3V?3sշϿ.w@@uM6M2eʔ)}/NWSJRivzO>?.,,Y YVQf_UN ovgr_:!rA73*1V^уf U,5ؑ] Q4ǎ[ȳ]vYoucnWbe(
+NXNl_qUD_gҍ|~NN IV5jOY h؜N/h"	!Ju*)(]z!j*.Rd?~ԪmP"!YhІ6	nG*Ik?}u|]_Ly褃4rՏ>h>}Z <dZ			k*cM] 4=@Cdɒ?pzkK]]?W_"]['Nty3*R=ꅠkrd,s'Ovmhۓt:BQb///'gΜYvz*nO[XVU+zŝUeEq\t._|LQU`ʊ	q	7Oϙ3;6mZpp0) ѱV5..l'tUuR1N3 9q8iii/ʕ+o]]
+a-Fk[I|=wooK$!+%ni|wGWqD}k:w2:BHbWG7wFmazMqόiP{1n3˱{]
+Jݯ~cYjUlll~z}nvU! _lXRSS`2BQJ`hL p[Fiiijjßx	1o<m=tpI=̷S
+7Oݢ>Nx`A+!(dO>m1ol6G7[Nh5~~Z/D遃N\7=[r5osli=m']%[|͔B?y|KwȢ[ΝV3C0o !јJsV:@\\\" 7Gu ?{gͽkڽB~zg5>|CZ]3Фݧ8VّmY?y+-;r2(4/ߠh$Ic+g_	}{|1<dY;/liOe}/ev]+9l3w]vu^ p+j4QQQUڣRr pk>xGPSʵ۾O˖WoѾOtڦ{lu!;jOd̾kځ;2uk~`GԵK禛hg[MK>9qEe_M^6{tO(%P}?>{oƌAAAq3fyѢE,5! 7Gg.~뮻^\ԧYUzG85/gQEw޵7umRӻW#G}}͚aϺ;>mBH-v>(#:eD#]9Ar]|ł`%s"r톰z_}ٿ o hdff>#;,XmCec}P.'wW/Ϧy;Z=tW@HpFSo}ݻq-2h/h*={h*TA:7>~֬-cO&%9Pd^ҕwS*;z[}ݼ<ޕ 8lȿL>Սv( wFg.-ȲaÆ'Oxo+4c};
+ʟF
+߿/((EESJK%uroG;ԅ&)ɊͲks:ntyw~~[~xaݫGzC֬Y6	 nbDFF?999!!!::bF] ?.߁YAAl6?<ic_Gп~ۓ߱u5/jbwiE^t8}|DQCQR"Ojشiwӊ"elF$D2e~䬙}tx%؝0>Cϟꫯ pĨYdpMSz  EQlׂzXM. ]{v&5>ѵP%n AA yykO=R%2")}JJJCQJ ^^RcaCs(!F*vW^?/)Xu++ՇMx޸/?iӦO| bX,Bm۶F!Drr^!$I M Ê駉'FGG%G{^_`y L2]}S>9Bc-̀9*blMCiwܬԷwaA=wiVc9{$#I+WϹq`#Sc)޺KQw4{ а;&rb{((rٗ_~k׮_$-g<>GQe㕞
+[<WBIs\1yԫlݖ~}ডZ!,ˊ1zxKF2Una0(V3''/?VWV$`ͥ\V`v{LNN6mڵkeYnoC\\fj /ɲ|С+22ҫEǿV^
+Rŧ׿!Zt_ΦJqg7S1
+!V~㉒#k.ikHӎu0YE!IM>{N2[YYYM$IRnU1  4=@=r8+W4уwvKm#u*+9g̻9t݀W<|hKueE?_||pv.-ﾷeڷeIR+%ݶ{ҵoκ2<>|w=7|3yu dY^ qP/rrr^|EſG=kWX}̷/ߗbazS?yAmZ:omoʲԾ[!S_zR!1jzp#dՑz!;/K,)uJA}~}ec;X (66V@TjF$ 9.)k׮ɓ'>ܫE6O}Vxсon{;Ca~9s׷Oǂ[5p@gly_M-ڴͼ.\ZI;u/L	O^
+s].>&MRTTD;] ԍ+V͚5E3!Dqd/~lX֣G=5R%[a33KΎ\|s~$D#$$Ȭ/J`@Y6/'߰ gò${{ÿL2e۷ݘ游Z<R nT'O|W\yŔcή)EG~7F_]BC
+ao͛[2f3g~}y9jM:8f¯V|8sGj4Ykvv-3&᩹?;a GDD2qnzsMeԅt9v:o˳\ޜaG?<eАFNɟtE6nǦ{Ļt!ٟq	=>r_%ͪ^
+{uy^xĉ42 4VjQ= Q\Kkڵ!lS\/w?mٺ.g !J(>q"{_E9{ffQI4#6ҢDN%/c1%%+u: @c
+z ".n9h"|*GIΖZkrv|5eWGbn]
+q\΢&^t+))͓9JHpDο}Oμ=%7%+ۼ7|ꩧ(FyE$$I {v~5j̙3GCV쨗ouy~Ⱥ'~cYd{l˗Zc<,kX}`زK(YtkƾV8=H9s+,rhL?wׯ:u5k
+ig hA 7F=P%K[}c[-κ!?SSpl7q[6_$D#	Qퟓ[j۷m?e25%_8q2K'FkcƠFZCSO[Zv[[}ϟӱcG ,8p`֬YGׄ.`%rDV?wů}*y& Jl.&0P{ِkSg͢e]^M]=ߺo,͸ؽۏݻw_K.-*ƃ q._|111y}z^|mzؖ;|k$ɰjVYz08ս[ȸ1=6~mꋯO'wwunӻ~K*f+uJy3[1y3<s (Bg. pg=/YΜ9+?~Mo1ϭo=oK83a7O+4b0I%rΝ=9w.Ks8i#c+W:/>|+̳[9|[ 4?Du 3x?cΜ9wՍ{>m"H_˔gjg\gj'BU:ӺuN~EUG}󹹴M~A7 R&+7Vv;t-:pIl   x.Ͷt҈'|2gH:}O[?ӿ{[.rX%cF!:"Ο/{<oVӹS;Iͦ}QÔ^?)%K,+Շ_x?7dgs(3 3xG>ڵ۴}LɏѶqC/vf)N#zb^݋$Q!	]9צugu}~};i_ɠڋ9g6}e>YMn{<H#@Cg. ps= ,OSL>}z^1'q^xS$E={Jr^M{l+",,lǎE/9k#|/ieE9vAmɓ'ΝGЫ   3:  ++kҥK,i֬YԽu(bto_ҫOأmFuyBdsja8rC~]wW`cϙsE:a5CO =
+~Ł6};{JkEh[_?z77mtwta *3 3{<x{=z#gWhZVPsf%!OZ~-5Uˠy]:qBfވmN<(5LY-EK¯`Z/:tw|3 IRBk KT4N+ytU,rOY^_PS'd4m}F6Ɠ'NkZRR|x^'VWg{#1/Uea;{zӦMSNСNeukZ^p=($*O)x[rOsU/]6jnU{Wմm/~[nrS^WsX!4ͅ
+
+
+ڷo߾}{ޏ @vG}SOi4~kR/S`yV$tkwzvk!R!
+8u¦zԾ)?q젠-|{qϾaβ5˗mv<>όY/~w4i[;rbR:+}EmU-֣>h\?}`n,I[UU=$>}nt~:66$OrU	} ^lٲW^Ahg\h#ӟS.^
+i:wXV`$	N|cǟwͳݛpvjiӱ]v={׶_⪼uJo~3g̙3gT%))HyI5J%|lٲsvؑj ps=hlC׮]jժ7lzZ^=x6M׭&M՟L84)m.[eJ>p~q'^ҥ;ϹIjW.b7?zRYgBptQ}joX<yLc&L?iZn'	psu ඈ{5kl?ݻbG(:WS/}<7Mo8SP\Tu!DAc}Ν+^fϩ%Lg	6p-c羚cZE{ेgܹsco.ɒFF>%E9Q{xnm̙ڵݧ+  
+
+
+:tQ
+l-p]?r^ߕuș_Ҿ]"YH|e՚.p$#u@C韧}WE۶m{^|)YO~nۧ\?jFGGOjeԩSSN}Oq !4N~~~4+WtK[_u7oѣG9rĲr:TZ+,t<g<+.|Qkvm<Or8|wij;\^z	ckl_=?0l~蠑qIM
+sm999&M{@]8e qׯرc[hn:o9^С=]_RKוE~~Bm۳>^Ǣ	!/\߲=}mÇ:)17o=u9RᑄwovԨQTk8}81>'?cƌo}Ν>,  !A#Wnݺ>|!^F!t֭ۮ]PSWN8V=y3'.h3xz԰]3mؤ󾴴>qok?dN>fG<xps^k(/Pǜގs-t~ɓ'޽f*K!IC5;#A$IR@@ty^ЎX``ϭ*.DvvIR%5ѷ4䕟'!|}4ͽԩL[1A*)}lQwtoJmz;$5Y˟?D<ӣAD%koyM;i9s⊕+W2pWY ඈ{И;o߾[nu\ůGٽH=-Ν/
+{mzՕ><pB6.d=C[՟gGG.aq_-GӲ֫)^9{zѣG?փ-A=R/8M"(:biӦ}v.p x߿w={oVZ5yP/oa+_z%ɦ/"DVfޫ=ʅIsB7m>(!DP6YSNUOcjYzmṗpk/ڹ7_|JQ9sm@CGi۶m```-yo;\pZqcjٗ$fgg|Q)6mv{70uجܝsO-͛wUWjqD# ;#Acj۴iӧO]v]p!fSq7nܳ/b -\~WϰE/3w5i4e
+ivړ%c}睏zs˲EK(X9)))ZsѼ#ezJ(v:{L(+B!zKRݗВȊ$PU0u[GYUUϪ+IBQ_(;u奩rr~趹c.z3j$("đGH{:ׇwlq~uO|`%-yoӧ!Diji&d2EGGL&s=h|||cǎe˖m1_,xn5n߾WS>y
+|.1'Nf̐m|
+
+Khzrx׾k׮yl֫)xjaS4źxwt;mZs~B5$Ę'B?N;NuleY(zhZ|{o\K|fSFw38>k9sx-[=REQhlAl6a6-KbbbbbbJJlq:B	EZl9tН;w?S煄&ԧOܝ>P	kӺu4Fܨ7_pwvv_7f=$i?P3gDGGzZMR?gӺOIzgϾ~ڴv郏w}4q!F%/OI;Pb_3k=V\x:ܰ|~c{-7^nM|[]lX)/dM޴iW_Q"IYzpfs\\\JJJRRfM:Ippp^"""$Iw|D~=];æ?[xϰАww-[zؐ_Εܹn%۔VJ|4"qotӦMy!{ˁQ;Ir?6m۶}K_mѻ~kءDׇ7-3gym3"dEHo)	}_Yh/{4vuaMϧ}he]rU;^e'N|':PY|h
+#˲wޜKg> E`S>}Ҷn/dy{k:j:?x@>C~}>钯}[VBk*_\ʇno2W1ht[iྷ/JeQɒ{1umO!!'
+mي$Y3ooBSӎ͵7]{
+5写'έxv*4$;[/~crOxlMQ|tyt,5jԂvPk"v*P'l6c hx&M=zĈ%%%;w9^]s;	JNVL8ז_H7A_<pW;n4t\,!!!:u?o,)8p`Q6KG>b3/k{מk!F#NB#)Yߥ=':vl[NaG^<1(?کyKN.i
+tR]GPяz~|}}̙s뭷nٲE}o\͖cZ#""hS4E8V|Mw|MԊ7<4xv;_0+&遧X/,I&ب~\[0s9_~Kwm#X +5oLBZPR*;:sWp:۞=Ւe+"{m=mLAS~MK{׏p҅zU.snLPP7pmmܸng0 !!!qqq	P{)|}}{ѥKիW(v^}w@@@S7uOßxY4=_.a?<qE-g\/;vwFIBsK͚/\6mMo;U^sӖc';wn#;o.F+]97kƲSa@[3p7uSY:}ٸ^KSKly鑤۴3gΌ3V^ϙ7' ***))))))===!!咉&]t2d32226.}(BߤK׮]nj1tP8eW8K(Y?y_/\.r@}U@GO|iӦeWytE?i3gszlVZ*tOvFfwѣGnm4ersG\ۥs`Pj՚ϗhnk{	!WNGK/h}'Z;st#)'4,=z7<$IjC܃Z3LQQQP1]vիѣG7Aoh^)(|mGW{.iU
+y_{ѬYG{NhGuk/tĹs][j4In}BIvvABIR|}``SBj,@QzEsGmԬOffAf͂<eȽr7:pm)OltZ5gގW{oΨ	#yYYYuX$1v 3xV>x;ڵ+_}\Ȋ
+ڭ[]vYv+ǿNM[=vڇzʖ~zу7ڼyUW]Gd<t#=zعCe!BH[!Νo4Oe!k$oac5?ZYjBhMB;UPhķ43KjtÈ3~$r6.;J({݇>NoG+k^x⫮?<{,<Fq ඈ{YS\\|o5{ZoR\L?eN7sn_{1\p6w?~wii==Iv(z	OWoyO?}KYh6Gz/Eq|NPNq84Εc/Vo{ZCB|u:Iٲvt:sJ$Iy7(ӳ[0Բjgg+ߺyݖx̻W&MOp3fKLLAK=8ڵ<xnv^TY5ѧOݻw(߷1smǎێdd;%ˊF#ڦM[uE},OFqL΀!/:R;u`Y6vWNA첲gIjjo|l%֣{ig}С:<p_^jmv]򳯾jPPЯ?=r^|Ut	NYEUP!	!󋽼|n{pݻm:"(AAz^+jN6ީ qCX~M.wxXk]ꢽ%,ygϞ=}.]p*P݃1IIIf"""cccF#\
+x^z6~۲}8:/*b~>JC^6w֥?}B{B
+lEvK׹S.vyy|}wk>NjԈ5zEu?u>##|oCv¼~ٗP㫗On'-,,4iдu*316Wu_|×%ńd<I||!!~e;5IlB轼ڵkѻWz$Wtj3;ݗ#hWSpDix'~omJ]n: w>Fᝩt_.]:cƌ믿>,,A.Q4E	!L&M͝ M Բeܹѣ{1t18.o߾EF3,+kS?v<k=6ci4)˲RTdeK1eCg676\Mv/
+!FgW>,:VNW:cjw\IjrW/޳EN盏uȑw:m6Z5_B4Y!m|:=t8/ se;~L9(Cw1ш"##zj^C˖Ey͛7oV-f?d!/֑ㇷ,TǟƊPtagGO826_⋨믿k׮hɅzMip{4iҷoN:__i)ħH1]n{.~'O![ڛ<J7~?Z*hB8;[v?u*ԡk}:o2bx:_99kޭY!wܘtr:B#[MЩSӮ-<ל<0֭[7y.vֺ
+G'??w~}s}Tq/}m|d՜,1<WI={fƍy3D{W31]1!y CS{tp:;ujޢ!'W>y2sa䠀g?-vsAۍi.7XZ|3#/?9׏~0a-2x`Q:7}t!D\\M\:x"V۪U1cddd>|xeR[JRP={ܿsfzOnn-1lG<y-skSWp$#sZ{ҵaPuɝN!A9kp`;Eݫu~mk̝=kێZO5iOpo3f>pǞ{;;+O/ϟ:u#z%龉_ߏ;vgs6Eҹ͇ػgˆM?<k4?):Fq86 ˗B47,9pË&E{fs$7ERB {j=˾xaMNzL$rkG}خs3f̜9s)A!AX,)))4P'	߿o߾]tϷX,>R~Ų׈)Nիz}馯h/y֓W|D]W>ꗵ0Ym|uk:)i)'}A;,L!N]$]>[Qܫjyǎho'v=yw``_mh;r^amVkl߾[MWRGy{`6cfsv//1}ZtM!vmZvj%AWTC%h/*!m(UƌfXso
+klsK8ͩ%{^E3{n!55nssMN.!ufchCy{{m۶a֭r[ZիסCv-P6cYo{LOu|/}_߯,+Nlx˲sm՚4![Uddkk64L,[mǄ;5ֵ1:v2hط{k?{ZwQˎ=1{~۷o߇I\ź݋w999ֽV\4ǅ]:鮽歧ϝwtGo??;>S*BW!bמ\Ir̼r˥g4{WV>^<iڨ?YWG\]rOX)SXk"v
+|PfsBBBDDl6͌\::ss:tǎ[lIKKf.$n)gϞW^O(j?9(,l=rE#;7oXgYg[~~^M!w9%ڵ}iLcG8۝BQ#;f骹Çoٚ!<EU5OoyNc]\ÿsrr+EJmrt2IOXj~v1(K01WױE34hCIՒۺ].j0g^ףEs.>rWp7jr:mUW^>u]v}a$R@{Y͞z_/<S-rW[4Kud2EGG@]^Xu}ݻw̧׭/yRPzܰw]{6HpJ3gs7oB|?/tV-G_Z**ICtTѹSӡ;
+!=#Gt
+Lp֌czv.5%'N߫t5~k=N#s_<=gժUZ{zDuRlSk`9r䕗.ZfઃBafܒV43[4 TE].vΎ}d&|;!{-:[#	Yl}4nh(ik7n*KK&룓5u[L
+{T̙O=ԫ:{쨨(^4 :s[_dھ}ׯ_yvm;u)ȗF8aC^b^B8cS[Ue=8oӖ]Oۡ@wwҼj;/j<V{qWl>RRӻu^݅txw1~/_*#PJ92x޿AK֣-Лoٺu/_\u#Ĩ:w?XZNwobXhR2f\FΝ+eΠÛ{Zi5#/Æ۹r"n]Hu\ ؛]`\t7^~#!!a^{mhh(7h\= ;#Gܹl޿ɓ'퇿u^cZɊy}XX֭[w>lH+	=wvts!AAޮ6VӲE^t6[bK,3]O~~ɹyZ][k/n+,,>NWBչMJ^P<CM++>˾ˌyT+rcA?yyyQQQ8oRSSǏ7dYTZ_3T\Ȳf}tвz|A󿷕F4Ci5wG8{_8F\}Y`٫O?Xϒ$%$}3f̸F#13eOFzխ[~_~eZ/Ǿ")`{22yMDdҔd}^LYΝn$qҹF2L}Jn-Gv[O<23gs/yщ7G22jN׵Mw9٪eЈ|}/nݹr4hF#ݦ1UT=ҥ_w/_O%%%y,u]9^FedMֺ{)//WIS>4oW!`WT,u˺w޾Ν֢emurm $QҭKɧ8zSU.04d[硏÷7+|^;gΜ6mhZ<9?vFÉGäi.M ׭[7|!-^oܶ_.],D%4\g?Zr?&̾l5}˴l׌_:|nS--uxy,{=5rxͯ`PK'O5>@sR\l
+<WNGvSϺ={\?+罓ur`gf#GF1뼻K~f*ŋ[jݷOW_MV*vl];=?h*mۆ&}6ĩ0t&9nŗ_~9sӧ13!7(%o;u?e_sB0" Ν;_={1b:Ga*E?C]x?llm3OEQ7W؊g_wsB]|ŎwlYữiӦEDTZOУhJgnݺɓ'/pz`@6Gn-ӽz?3;Bg&_ْC5;y˯2b̈W4gsY<){5j-ҽ{w*}VVZu뭷>>NF]|x_AvzNCZUVf_~ݵG笏*uJM?--mϾ!LASxG:wf&j5"$'Ӿ,\P_Y\%9Oo!dA^3wd8~:]TqjѺE'}1IEˎ}uA[wF:=2cN<yWGGGoذns> $0gϞZb|}9Wl9Gw6y/u7pԶ>@oM#Fx*ns`=|v-P``ޞV)p[JK?6ڰzdb˖c/زrddcP_ySOG=qq^BM{ύ~")g̙JJJ8׹' wF!o޽cZK~c)~>|ز3Gʀawxb/\ߍIݷkmGyM7}CwhqXzOvǖ7	[vaZZϿKK;!IҭsǽbǅLsｫw\߱,rݼSɏ>f9G qכAٳgݭVիr~%w
+PTKˣ9λر_n6tQ˯Ruo&Mܽw_4>s7^{dɇ}}9.SXd^s矽rnxyi;8y*./fn/?:dPV^r(!sZ{󖰰{gʔ)ɅAg. hw4ҥK=7oU+))rhtعs}_H<锔P|ε^W~~']67
+X?f~G>ִiӽﺣV\>C+6?{g3Je۶2\{f}Y{v|DK	qtcGO\s5IIIYFg. h{1#Gܹs^.0hX4a)AyofwoNNNFޚݪtIM7|ͷ<woZ$!9J{O>6mb;򅠣[(*rv޴l!4_ 8)$Mffaq1lJ<o\_ө)/D;SLyϟ?t26!jʣ(
+Q# 3M x{{nz7ow:bء1ߪUM6m5[#1|믿8:60[_z;wv;涝S?E=ߟW3Ma8γrJJ,(,ѽYa}#0__.	 /l/wؤ!eCg1I3oƼy&Nضm[fmG}eYP YB e搐<ժw粹X<9^^^~ЛBV|6mՏį:7z5tWz?>~;w&H6ݪ~yڴiǆWs@Jn^S:tPwk%C-[uPUWWR!_O^tDچ])oXR>#p_Ώy֤)Sj WyۦMqeeeڵgdm*vHͻGnO?ݽ1jDW!.h$YVEq=R粏KV|CU|;WW>+>?}zVvjG*]Rm!ڰt5Tz}|'Oe]v%|Ib`N#5ޗ~~~7x㘹äNE}.iOx6aϞ=7x;o\'r84;wf~zݻ/$/hSl=uEV\1I->	ëonс3'5X穫%?_bŊI&M:5<<zE =@CҧO[ٳg֭Mqj6Yd;>[Jʯ&,5b6ǩIQiRTB"?UmC(s}ʾD	TMr{Qեm]qSʭGќ={DBzdM=q[ZZZo*^NEEDk/,goF"qAoٺ'((-))p!UKggC/іa#bDӿœNJӕWEGGtM={ܖ8 hHv:x6ٳgЁo=:\``)S5@VK-sJϪt{vʾR}t_y*Vf-\J/n$٢%}kdoڳ#FytY\VSrrr߾}?]K`*u\^nnǵo#(-)βAu:sv{;co"^g_ֹvr:}"^?\t70dȐnaС:W}cT ;?P~EDDرcӦMv#Fke+M&hHq'0wܡsKFYW7|7xo^s[2g0rxXpFQD/ή[w0;;b`]f9<huݻw+:(:]g1!kРAs5z:`! FT˫E۷o?tЁ|{^Vra7=c矺#--m۶nk{e3Q'Pzo_tyD.W\*nAooQT${f˖CNYoѢɱK{!!ٯ;`d7֥,ѣGiJh]>B9F.0]{zzGQ@j3 5M Tr(mڴ1]tIOOX,b/3'LOKK9rï=vrSٻ~f:2v/бcͿzD$с(*RΝϗeٖUy˱Mӏ8kw8&_#!5ۼ@fV	˞{SȲn<y?ou\ϊFݞIzcǎwyܹsW\!@8N n{ZIСÐ!CΝ;~ne^G;o}~J>Ț-%o?yۭ7xlڿ+9y2S͸nJJM?[_ֲđ_|ę,WdOwUw$s<饕۷=h'E3y=ǟx≦MFGG3&88L5= Rm۶={l۶Cl٢5\m/yUZnSlWzP;χ=՗q	o$iX
+KKK_(4͚hDA37O64?xLi)M0#hW^>>~xqjUnjqWbaC⮹w}̙3bF  ETh:wܽ{͛7gm_⯣B&k㒅nw=G!otr>g+ҭ[?6pվtjpr;"lBgAҧW]?p<7N_^;OBCvׅK;v_|qԩ'dY(  H+hʷNײe>}l۶-##СCC4^.)^G?eիF7<>r]ЁTkR3Vs_xv,3p5P%>Cv>3jx&M|dٙUt:{yy!@6}z]!bw3wuO9_D^76㷹hIfY/bʔ)sU*Ci ,M TCѣ{ؼyo\a3ފ"EB$R+zk]+)6IҼ2ɖkPnYVl7ҭFPbTnkJoۤҳE=uY'z={?n6o{Vp__wod׮]~~~6&4k5`KJJn?>6m}h.w)[|޸5<񝒤jDnl:}Aýop}W_}i:wq*H2H3 =վCt~-Yd߾}wּǿ׺ėR]sfT@5P^T3Vp-mR5k+voѣG58κ;z-,))BGp9ʡ'674	v
+k{!ڶjreː:xNpd=E#w*>r-c=<k֬QwQȾs\|wy_[onݺqP$Ie f& K߿|_(2s`NW65S\=?+ReҕTpk(+66lQqc*&k+_ev-h6Wsmse*}˩RRt=ѵpٕ;pN#Xhvvf.Zv˖-۷o/))$i޽:zuQ/yy;|MzzCJH.D>{6'$ 	!irՁc-Zܱ`хC73>poMPPPΝ;v($_˝:uѣj....))ҫ {ws~ժU'ys3g,Π˻ʍYU#;bZc6;~/|u6nزeˑMhBeY[/JSxwXQgf˶V-}|5B[Z-w:Z4رYZک.M4]ׁ5k֬QH$5ǎ+((5۷'A%J/{  xA >|x͚5VomIqXs]nuD,'}JRSS˼oou?T")M,獧~OuW"ߐ?f
+2hvYoذ1ԩ3^^]9o_ݡwl8tбcjP5\Hs,??[n[Q	C. poL OFFo=cƌ>?Yw$-7"}/\x[Vw%m~䬗sY+Y=+Vqgyrq3Fߞakqpڟi,#D^>-v$ҩS;vYآEHʏW po=B:u?;?/IǅAHEEΜyyYfyyy[7.NsjzHW4__݂gc͚5D}x>3Xlh0JK5y%.:Dnn^iV-_8v0nSq4;87;siX:tꫬR(;vf߿I&΂{ |AX"!!p	4=^:}[+)ivS't?|ݺu,_w絾uoeI]7/~K?8}|!dE+<sac??Ci#/@h^ާWpQ`Ч[/7]ȲoQz|)ԩSv=$$$88iӦ2#<> Έ{๲WZt5ki{t-rGBժOII;2^0Ptb|^IMMڼ'SOql~&mǦCG
+f9֭kcH]:۳gOp[)e7nx֭[g 3׮]g޽{ѯGGw8wNȠe:zFG}yf!Ӛ	}<iZ8B9nKŅLGNxl~NѦ[:aOry/NqN,E|]>'Nk0B}=HvM~zo7o޾}{DT hCϺ:).._߻w/_x߹sQWc˭[fggϝ7Řw0-33500099yʴ|;2oT́pOv&3XQZ9ܿ߄GW]u;_p!3vm4{>ߝӧo/grȑΝ;++ C5S.G
+
+
+֯_?w믿GI:ɓACptlns1Lz=oNj5xsDvmgΜ:eeɲ/G=f=4VB9\z4;;\8"3+{͙'Oq"Zӯ_?ɯ>CҤ{gddh֭[7kˋ*OMIROg. P=hI4~?Ӽyϟ/HǏwTT$dE ˆsn`ӧOλ{SJJ\a[nw~w +:y|۶M">|ϿuTV$0˖WR"jf_pxVVh<[\E#
+56-===++K.͛7%5 әzz.Qnٲ~rssx	&9#0,!mvFcllA233mUi {ｊܽ .Qp7y܂ޒ$6~ᥗ̻}vBwѷX*BGo̸BT6XVަMފ`ovaÆo>44Gu猢0khڵ.|gs5ؚSAAm[n̙3-Z|uW=KЃM=`wcǞ<yO>Sr`0K/.)(9 kxSyo7yR[VBxyIyB^IrkʷWv{/_'G߾}5y-X(**jѢEӦM}||8 @C[l٬Y_5>>7صkWqqc۷oK.gΝ緤]|;w,P$I*XoG%+>?]Tu)VW>+>?.f۪JSAj/\ W{:`lǮ]
+_|Xʊ
+V?'ԴVM;Z ~mtر]h:z51IGD`L؄@	>193sy{tW%~dH EDMY$7^y~X,()nԙy!Vm|'ֻ7nx`gpޖ8+vҥ"Rt@pG@k  
+qܦM9jժK.%''7Btǝ?~Æ{UTr6#t#G>|mb2s;э6c.ڟ6߰iM!l>4߁nYn-BN#Pj)|Ed*T}pZCoSfs	64=QT ɐ@;gxCԯ~q%r_~2N"Oכ/]*xr}+QO	)?~ 	؈a*
+d_XXhm~tZ`t\}}=UؕJ%,'J 	0J5~={lذa߾}999ӦM~ɭsk׮رcƍ$IΝ; =v˖3g}x\!H!?GyajΎGn6/?Q䦿Yy;q\kl^{QM-Y7n[a÷'*/wH#O=EdVV֭[m6Ĕ1wFd//~w?St">w!ٚ_giZTRFR%pl= slM&Stt4X
+ad͛bw:KFf1{niI[M eouϩ&M7uvfL'7ϦD$Vo;70kJv<k׮w˚47mu8ޢ8p]i=^Xa?KLk rܔr{}͎hVMpoy[6ޛӢǛ7&jVeM{|o+ii_?Qwg7lϷ[%ݵkW{jڽlwM7gmPҷ8bQ[Mgk@;wR[?DC"7ovU&LH$.\322^xt$Lݼys˖-H$>༨(EEiI^[n]~~I-B׀7өg(99>!N,>[neYvСS"EΩۉS_rÇ^w#]D\KWX^qPtS.]~8|b!\KU_~=qgϞ<yrDDt hߎ;f͚e4J\.o>m14m>T5zH0Zo5#`Mm6_b"x|ֺe,Kyy9BHVnLi3 yTeق6Vn5n,hߴ֍~i-|PhhhA6[y_d˟7%qZDvLo֑66?]iU6߼"fyu94ML&G$)S}m#]qEEE[lټysmmɓ1BUUJJ\ٶm-5jg?,Fb='"{+VhllUh̡(*===++d2zY%K1?x:t5+#u~3jƌaÇ4ekT-Vk]}#BL*XqW-r3  ݽitHRGdjʛ@7ݪ"aeљ[Mn¦EM9Vl	7b:Xf|uPS0LP Zm뗷i,lgW*-Y#Mao[kcS6P[u 8#E6-)J@BV/-vz[͘fnk\k3*Ź֢[-xn--U͵y(an߹sgTTTdddӔU j,666]vڵfy5Uu5*.vj6l[1BAaf|l6_.ͷuVs:?3gΔd֭;qA4y_|ĽiъGNj=L+ZZgBU~7XSPUKvoxltL.+Q]]#H nswwxaaa~~~ǜi͓n"i18[B?68Li1ns_Jjp<޴ۨ6bbJ-rZ$)4[i|fi>k5F5`4`|0#Dǌ0h3ˣy5-Mmر-MXuxW5r*r(]d<8$Z}ZZGZlyh'cNl^ @pӑID	j_AzlUUU555z!5{@ڵkݺu%%%GRRʃ8||B"`6pٳg/G u_X	ظq#GfR0'TnXA;PcǎM!d#$jޓ![}zG8bNCԖXAA@ G|'8Bׯ_ʻvDFFn޼Y(8.HL&fcQ-Ji1m_EF@;qj;
+Z865NN;+T43[ysZmMz;bQ@^qt넦;朦gmy޹uu[5?l3gV!6gmnVC^5Xr[5{GX,G=tPMMqOHH1bD|||w
+@eTTT<xpҥ7oޜ<y3&`fw3gbcc{fRlTB4>oѣG>xաUU68f͚9	U-&?޲w^ZrB>,lcSFa4rNg{wj㹬'|rԨQ>>>   +Œw{fggL};vёb}^]@uuѣGWZh>xAZ-[_;wj.??/>[߻"pء˾z^[oMvfY߲*
+WX?j~T}/+rxCxB-[|}u 3l&]f"""b$`y^   1Nwkמ>}b:t	z2:-xwygƍ7iY!_UV}''$ލ1Aoh:lG=qr8ò|~`DZ\\_^^O)0+	N8s׉^Qn 6qy`$"gMdMN+WRz   t_X+,,oN<=eʔG}tڴiaaa|>AtRa߾}?/Lpp`Efud55^O@SL@)o3&>zhvvpРr9n8{^+$S˯]My!sFb6Oq{yzE!@[XVu{ŋzfr82g?{lXXؠA)N3  nQI"Ϙ1cڴi1115	{@qjLMM]dP(|WիWXe%a2rO_}aV}dCo/\AСĢѣi$G9z(3חp~E*^+0+--qFNN̦aNf
+Yu\?A 9> f4W=S\\<x`JV%حs:q^		6lH$.   ]	F.J;b9qħ~?=&]VO,ϟftϨz;%fY8Ts^^&V KG[[/?|cl	!!.nRFFz.--Y=	9!	X޾Ds?VUY  se!FM9tJ2)	/.pP(LHH   a$IRuAt
+V}_|>}\xP [wʕzC5],kaKgR*L&L8cێˉcbt:<J?zTw'NI#K7{dkkk
+
+2H+rq</;BsC]e'˃ c/\B3b!aQمÆ:   @7pK.}'/3g·Fhh FĲ.V._AQٰŋcƌá^ZKY'yW<;VOfy=>r%	pu:i>,={رc*UB|-HT_YSSTTdaԁ
+wƬ.d"Q^<{<,)P  BHopxȐ!'­$]vUUUhz   =஡iK.+++̙F<ޕ=XۗIxwa?\y}kV2q#0jHOvLo 0#?.kYf|!M_
+Ɇ!p6鐄a`>yѣG1l!FL$3dHNw\Z˪B
+#;>ʑ<Dw='ɓ'NՍ9H.:>^q?/ۃaبQPIaq΀ͻtիװa
+EQ   @wpw\ti~iii>xF#?S~~nڴÇٴ6>Oi̇>z_x7s![ay~>Tpω/;T-=].I;%!/O-w~:t`h\pرc%*qyY=Cu4]VVvcG`@s$	]/>v,11A)a;p/.]1F+S7!ÂG-))	>|xxxJ.    =
+-[N4)uڴ$׻r8vݻ%'4xND:y]c2	2[{h~~EH៧bPcvo>TM3&J!uތY/?4s	a/z#G,#G*\	e@2n/,,,..).#'q+F_+9wܑc%Ctܣtz#F(X<3gZmLL̐!Cj5    l~SN5sx0nVk٣ObENV7~|hhOb8yo*B"GEkU;w]>0I"G}{{4\})$EC׳g	ì4r2!''رc{:>M{l~Yʕ+UEՑXߋѧ̙3{3.cǀ4˲6r4"Z<WV bԨQuL.j$JΖ<x A\:~W E Spp:a***VX<yrĈ_Λ,˪1Kv/_v
+H93RICgk.X&dL!׽OkW?O!tzMJxbÿtDD="$!ReLN
+ì}PPy'N\R9~|ͦ24eee~ 8aV^ese3_Hp4
+ei80,r0aXb8۶7sM%VĎVXtyyT&hw?VQz`
+Y3l]˝?tGh4HpG
+/^lٲܸ h  HhT%%%YYYk֬)//OJJzzԨ2TT(
+
+СWGGGK1eukܟ=wθ ?!`ğ%D۱{0àii/$I6xyҧ_燤Ý}X1rؿr.(?jD+ț9;3	Z>wѣ,X0NN~ȢwLQ*˥KzccutqT8,\m۶ǟ\/7Q{z˕*}~AmAAqB,	C+ίgPbfqkh0Hww	BH"h^rH"瓷wV+m0]\^Y#%a=<By<]ᥥ ..riOQr%H0ׯ߻wnqɓ'5X, ~TTT:thʕEEEz4=Ձ9lYXXW_7Ê:m17*BhփCAU+1!7*;(
+ݎ19;w]sOGcr=k	45?:" 8ngF ƛ;v앷ުyG(
+3a7q|ŊEEE~X6:G=ɏw|!<㸝;w>69QuvTOˎ;_՚&e$}^|nzDa3Ňޜ>J%qǱIzxT5e=*"$Ͼ<g_NEވrD(o/Y\_>vsߵyX,(gtxMM^'I2$$MP@;rʕ͛7qGQԁFշo:  Ё`2xUUUׯyfZ& 
+]ZÛ7?[ߚ79_N>Ih"~wVkxkX70Gd9AG.״A
+&يʷ,c
+	
+wЛo5sXI$C׮_IpBh<1FN	
+001ԩS.]G$rDHt}z4޼ySjQ s&(Qx'I^P@k]]_{:[[k0[&=:w796aHh^E\Q(9DWsxdvdx{Ϟ+zܿ_PPȑ$u w3f8:r`=}kjWU]RZQqʇfo|5;;;(((|d5hVɜ8p`\\X,Q:}?ݻ9#ۻӳwP  :8<dΝ;׭[wʕ]'z?^g
+Wh.цesoMG7PY^zqHBGWif`z-zCL].*GX5&Pxr_fóBI{aoSuET'64"9¹UϿ@e˖^K:=;UqJ$իW_reڵVu/bN(chX/|h)B^~!kwzZ]aުj=B(&F%(Q88L&hH?.3eR+N76Z(p)b7n>_QxXy^#yCE"M3zkx<cώK˗,=|zog!d***0{ΛɅpTB8frbnbٳg͛E"B鐐k׮ݻwȐ!	  :RaϞ=<XMYQAԸr7ÄO>9v?qmĤ*3vfzfpй X_~<it_AżʪzÅBL&y!(Pa!N{΋!"eUUy:Ip=*z}3f(--~nUңs=аnݺ#+N18=fͲZ.ZG&=9B!Uzz}Y܇|i,H>r77JX,*]Aa]^~ͼFec}@;_zZ%=*w/f-,7Jk/'M!(%Mdg]!Q{EEEa쨴QTFDDC(BvZzzzaaa^|>aaaagϞݵkVV N=ݷo,X;;vDe%ݰx{q3.=vؓO>i3е2P\ b9ި$IS\)64 BH$$|}|D,,6EQ|C1U:!%'I2!alDD qeF8_%_}fG}lK">,%%E7f,=dg1'pySRRB_|Snk)5'OtR)zd΀AB;̲\Aaݧ_d͘џOEk6uY4B!8'IsN*4~'竘0.!t=Bv$Hja	=!~Yw&j%4ͿtRYYL&FqȷA]UUe4U*UhhH$((nWMM͆.\hF$aǏD>{,0P  y@};v?/XYY/nxчqE7gN~ǎ3fHGf(+6iII-BOEnjkJDUX=hòij-BH"`Be!&qS)rsiQ/Caܵ+?]|JJ
+0__5`DC駟1bN۸q㦯/1)3Y]DU*/յ{`^^m0!TJoխy5g|icU:R70<3o͚/8Y%"|v;sDAQ<O443;C|>),V!_Pk׫D^^q1115,2f sssvL&STf;|}1cFddW#ѣ5M~~~VVV]]h_ZZZRRy QvcY,Ço޼933_&.+CUU.T?,ZSLyi_PZ\RaJ)@LYYJΣB`fDT*M^-zwWR$e;h
+IPSS zj"C4B{d#p駟fuwG
+SOq={liOMXAWagEtlɶmf1"DwמBe61i3;/֬=aӹѹ	rLՊE3e^]d>O9<#G/[qԙ"#~+7rxg/\,tOq+J]f^#Kql'(-)PLƱ9Ec7nܨށ!(nS~~͛G=nܸ!=z;vlNNί:|$AhݩLLLTwnZ633Gߙ3j5 l޸qC<<<^ٞ2TV`5z~ϦE
+*~ZB؈ku" pXvEpYmፍvՊrS1췛qGӎd)Yv!L(8~3
+HȯBw߭\R-yq/G|HgJ<xQ=vu|J+ƹ=>WK322&73QBn٭V+a`eYN>E>STWgtCb}򔆪=K]ɩX8"!!'Y]_o:qpp?_B'LݲBaQݡ_o)'ќ}l#X{LfWP\\C/6,˲}=9sFVO6MV;pH$1bđ#GN<3l0ǃh݀VMMMMMMm'Gm&-\p-. =otk׮=tP(5ks=z]/[jѯK*.C\c Gp8Lqa<lN8&466.Y "!vV(e0X| HjQ,^7oތaǏ=|֭[O<iْmJr|xDWOO5۴z+qYeFEz+"G:M@;,UV	85x:(P	;9v˶gϗly)$40$:'lcy7o8D/lӅyy5*M{9덦bCT/\;[Ta d	}'R 
+D"8{m~}||x<^
+\9
+6Ϝ9!suXORRRvv6BHT&''k4GMvvvfftYEJұ'HR\`t wl6_reݺu$IN4ƳvuV*%\YYY9roVPYjlnb@@>sn|DXYi	8='
+H̷[_^qF#VYS
+Hq]뛨@^ꫯ6mTWWK/pv,\/Ϛ޽{O8a6g;~PbiSߧtҥ~<ٺ_yҕ5כL6/pZiT PM[6ۯ$O$^[kXL\Y̫9{o ^cϝ/|ɂ؞;ܓsrGx^CxEEEuuGϞ=Yg.ݼq(///  n_``ٳ)xE 92""ÃCsuMK:+w%xF줤$G"{ pvk֬aYv֬Y[R\D_~)))<xpڒo"_{y*,@ G	"BN"IlXBM!91b<a!PqI^!IİHo`B*8Ȼz:te9uՈvnq^̙<oϞ=.\0}c2އ
+R>GΟ?ؓ/x˅Czdf]5lvo1Qw޲h7a+G4۴:VHy,˝;_:q|OBCZDF!cXeѼcc"FθiixLCtuIgݽLU볿bA;  D°<2L*BHMMuzRRR.]IJT 4͂.\آ  =yΝ;waX&O՘k=P֭999}<ۣAA^$Y֚Sx>#184CqYшausQWUN\BE㢣Bv{zB{%8RϿީS^{7^{mNYβkkoD^RR˪_fs&x2r,HzS={v>|i^ʍ
+O*\сCd2]#++oq,yzABu1q8Q$acrl)!/>hM[_Xs"$1/,ЄN,<4ǝ&h[/o<`F/&ڇ$Id?}tyy+19FZVղ,)`X h?܃RwT';;;551Y`AJJJ   {Dteenؘ1!=ݿٸڵk}7ʺq!2!S2v;E޽U*y!Qv=xfBH$buVXut
+x4}iT!1,m}#Bq)0,2=䬝:و۩?=uԂ߮׿Fn3GDzzׯ_	Ƚgu$#E>'6|o߾^?8ß"ݩ/{̬ko{-%zJb'	<yzeGy4OIܴ|E^2PH?׶*tǎ#O0K_VrsOڻ{;փXھj0|}}1bΙ!Ό*+*===}||B!j@/(R4
+!VQ9sy{j}  2& \}l^^޷~/Y$88z|vｇ釷2>*/ܤW/Ο/p:D0ivMB^RPPWSK4JY15,)8O#d:8Pe%uۑfwS!PC#s@/?_Xy>ycyyyWuuy_TBRRrr˗믢jc;Y2{p)S4440\ݩ+E"SI&,_}{荷>Gӷ=H-]eGe$7/8:2&ngN.,*ohЈp/y׮ي~eS˅t@G ^>e6^~~V
+
+qv]1A}D	r1PrLB:뎺ZVTfddקS~IIIp m\@ +V<ß|Idd?5ܥ_q?Z?1Y^FG^O#xLc[cߏ?{fGa8[,;m,yO=#}__JEsgq!t-fn=7_6eʔ>蓢"D|B=*+IL|BCC+**V\yr9pF!<aԩ፷>
+ϐðfYcO^<]\U7[֨nh0זW4Z4BC{<:wPHUT6~wos%ϗ¢RG!0@94!!t=⦗(LEި>}|Cnqٱo}/.(Pe3Vng<zڵk4M5ffQ*AAAӯ){Z|4G^ҥK.]웎p¤PxlRtRGt	 hPQQ}WFEE}`@/sWAA<xdʠzih1O.c{tkF[꧑^ۿ|E)\G19VXG8᎚F.aߊpgB4oڒ`㿛(xq
+q;w\xgGTQܭZūV|MfЇj9 	ˎ{aq6m˟+~1V"n6(g=-[ec^Q1>nb@`Pz@ռ&qðyO&P#7nxFI{Ib홳ESw&M 4EOj:#7$FCG$p]1#ؤ^q~3̻x|5MW}ǥ'M&M3Cِa	=b{v97AAAcTCd^^^*u$sm ǢEBPJJɌUǱ|G6 -1аk׮͛7|x.T.9{v?8Vuov
+s3U7[ʀ/>xR*Y|>.^-.`=qTk갯ϻۂ_~90lhA1p"t?a!_~6O(nڴ?={#GJ^ʞϛrSNmݺsxCuLLc';Rt͚57nKTSWާWמ޻jEe㯇oz&E<oh,g693FձR)zQ=c|~8zx~Iv+WxvZiGJNňaa~{\^{*_orOˎ_VyZeDP"E{=JJf$:OO4Cl1Cv;%kx%Slv޵kH
+
+Qm]TTT$P(j5Cf7 9i4Oh-Z$jiiiS*? k֬pBll믿LTywCݍ{B.˳Iǻ&  G_zG~׍bEee3g2y}EB{6cZܸ$oȊa=hZ?Y<[,XOP_~eٲe%+-uv%<=ќ9vݑ=$sFi>t^HzWץ}!tB!/>pRYZ&Ie9@@yxH	Hټ*3ccR_R~DA*=Ͱ$,GZ?>w?T+O$I%9(x酑~
+aJJe!Ql#gYZ'9+͞nk7n8R{j8)#;fεsqA%	:\]~~mr_:vVŞ(pB  {]eeÇW\yʕ7xcBGK!||ms@<GB pPDց{sx<!$Wkp@9;xyKJKkBG^8vxn;|T{Ӿ{oo1Bݝy~~К5k-[f0>~b'OdYIj޼_~СCtO/b?ev#1ɼ۷~\:Ċ![wM
+W+GElβ,|E8GT(D8 o@FӬ#vAOxDWҷO#$DQDӆb{yAENVv8e[_.BCC119r;
+q
+8~xJzz?NLLU
+h4)))  s`h49rdΝ]SpAծ?D(N2'E
+ -|'s\x ހڊfZnu8K0	\\ŧ͜vlR,pD"Y|zGs9=6QY[/H${9r$IX1+q2:rVsOСC5/p%|ivW0V;cy{nQQQQ<'m	B0  ϏaptAİ[KLLT*o3xZ+cA nyMp/tzw{^zi˫Nj\:sL,~`M6M:ug^y/T@bps[=QmhJhظ+/{hԿw+0l**==￿uuc?P(=F`NXBC=򳾾O~%sp:g|T*9qGj4MEDD] jݪmLnqĹ;\ix @hMן:u_g/^8uU=+*KJ\v7i+WZjĈw,xE_	_7Fvi;<òhiq閝}fmf|ؐS	81^[b_u??m۶Wg8g{lȐ!;wи)QF`ԩSsYp N%%%EEE]qΙW"6֯Zd2???$%	LÜtc)))NZZڼy2(]MMMMOOo @sp2͎q222pONN~n J@
+q'NF(A:vrolU5j<q,´gOihD-:|="MzoSկq/~J2cfs`&y{<yl6Oo4ƛU8aVIT>#?^pᡇS?^*01 :b?"**J,rxGzj\\bW}	bƔJҥK% G0??߱$VਞxV]`Zv~UJRdgg;R{JE hy5M0s̙-[l߾͘1RzdofҤIϤt+F:(V5Ki~Ѥ՟}9vLܒUט}}t9oxE?>}=7gR97nP(zQBcǎ/L'q2ç|F9Thު/9ylS)R 8D>^SSQ,E0C4VPPH$H$bX |7:1RRR`8=ݝF˛7ocVjjj;OV*Pzz#ݦc9*1Z~{pOb0lٲ~8nܸWF-+CV*=!m[QQQll_=PP1tPǪdrAqmG	>>޹7 Z"'7/^|ҥTŘѹ/<>pDnݺիVϰ̈;~ᬤ/fW_l~Y~9>.8"00gϞsR^HK]ejkk}||] u͛h*k462r: 폓;hOj}l8CiiikBGFYhQ󉄭iSbb3g233ZmSFFq@gu8$avVի7n0,!!a^BBP}=w=mN,>yyy~1=B0dp=NPqhnAAD"׫O٬"I8AXN?>|TT/".tapvqㆿԩSLY	&lx!{nάP pYl~aÆ'x]R36[HsyzzӦMsww5@۩ӼhѢ6Zڽ{O<|_$1  tFܵqGtNNNVVֲeN55knqBaW7^|9**oBIlv.j'q HɍH&Fm1R`,>{EzjAx.,|%)M6Zh:^Ez۷W>vw*6"PpWP˗m6޳Ή8Fcׯ_/++0/008ns˭.n1  t	,KQQw]SShN<l&];m$ػرcQQQ?wl=SlFE$$czeB̲U~Yǳ.n1&}۷﫯b}XQE7PS`0$W^]RRm62!89>ΑaSU*զMǚZU) ǰ,`PTQQQc3	øfngNN˲JeYoaQ[  ]U#Ô޽{֭_c?Z$#//cv	YoDde$ɒ~;4!.;zI)_n:o={>s{0YsWÌFw!C$ɚ5krrr233ILxp ?d/cɲ7mڄէ2fyyWkkk%B9ӸB-//d
+ӓ8=  %@)((8vؖ-[
+
+
+;"K]9I}ж/^1,8V	25f]whXӳb}_Tl< =/D(xqP(ܸq7|7eWI	bYn׫䅞=ٳ嗛7onڴh4&><BA=CMa@ ظqczچ'$Zm!jc9έߟ;{r[o[?^9>nvުh¿xV-к/?fOt͵)zfߴ-B.طo_NNNppПb	sFX^^^QQMQQQ XQ۱ѭ
+3uvC  :3tUUUرcŊxW8c*8z+,XL!ETAXm/>;&1ۥX?_7t|ތ>௄~:M6\b,~ogWbYYih㏯_ĉ;wtS(0y{ҥsedd\|Y,784Յe٦Lņ[j0s<ζ-ViV7ZzOh8œ[|񗃷?ogwb;wGh;s.˾ks	0hjpVk~~P(ݻ7;WS]p̛7yE5{k]'''vNa8   =Շڼy###'S4z?ng$I>sfJ(!]ϭpON&PMMݶ97f=7h/>#J׬YqF{ z
+>AǏȰX,S禑2N|º'zƆ(nMAKEw[ZډK
+->_wF;k[7i;[s[?VG8ms?ZZTߪy<^~~d
+Rv'V|VeNc=n!--͑\  [l~zpp~J%rqFO'ه7ld<܇܅J+=ee5n
+ȹf؟u%00jgFGn߹[o dR
+o'V^f͚z*=DUUO*'(ĉǎ3s{UrB;~8º'B8C h	JpXy/öf^xUǜC{!CӪfêC}}=ϏJ|>@XOJJJJJVMJJjfgg}F  ]N8V{رM6;w+%%QQ]rm=fū?b<O<'T ez&2Ю9{G)v8tpɀUV?Xv.%HҶo߮~z=f4:q,Kvww{晥"QfffNN5nCŌY ~+sX-vW.ֳgh$R)!.]j>ROz  iA8d2=ztǎ'Ns̙UR]'z?w~B(9990
+裻No`
+}zϾMΝwæokR!|o`h+pՇ{>--СCf꫓q띺]^m77cvĉ'NXd4w;'9XBۃqXcccaaa]]]``/˲0&mRՎXOnf3  =VrҥK<}911>՘h4GZ7Sccѣ_|BVP)tP'hkzx=_m63QK,C^x}OpfPU1B/|套ܟ
+p\>gϞƇtFJX!Z&|||H$lD  Ahhh8sݻk6Ν`0:WzTf~C}遾%@u*43\:4Ӄg2%:;LifGP)Uw}wԩSSM?":SK44LT(;w]|^G!_ 0dzֱWXXJmR*Z655J̎?9{=)>>Zȏks: :8`0dff}뭷Μ93s̬/GbV3z7+^ _"XΦyccc#x<M^[7MQxZ,37fY3>ZTTԅ+*.0͙3|u֝Iȕf n}1zx<Whh(iZp[dff&%%94jJ!hlRjoUN{&NWXX~}8>r'Bkk](p|Zɰb:jŲk^q!= A`E$a9e56O邿@ԧ<ꫯN<۟{h+Eս3y2߰aC]]ݮ]h77qI7bfVPA'm[hQvvvvvvjjjjj0sZZZ!Fs>(AfѢE322Y@罤&+VKۗqqF#@'W*6o|r~}ᘈr
+:93F1)qiF=oS_RC/q8;;ﾳ=[ѼZn3iz^R0{ۺu+Bh>7Ɛ4t -0P(:q	Bhp+J2##pPh
+ ׯ_W0ܫ5dN=F˗wرf0ac5RXG5k
+
+
+zogb.p1!5"a8EyyL?qjAA5B1$2OG_~СCK,z%NeTU<~@ ذaCqqut:!H`u #Dң&I(bhG';;;333;;1KTj48_k@iZ:9`(,,ܱcǾ}z#l6ҵ˫sbyjɎG	q:Z:ШnJ$KJ&B/ 
+!?cim//*|N/)qnjQV`@yWn߾]N;^+`pT[%dUd@???wwwֲj#~dc=(ⓞfs :0W\ػwo}}FylTek{<뛶{¾	VZ,VTUC{Xv#Hf3sX̤}n#P m!~SmڴiŊv>ZXҴgq*_x1++Iǉ: n't:]ee%BH*z{{KR(ڱp[>`28]9@gV貲],>>'qdU]xwǋ=|x/c^,ڵ25YWx$7oV,{ͪoTk+̞<h4E|,n߾}ӦM6mС.خ깐b,e\ri'?<A/a@;aXfEDD(nGzzzzzy4@j%'';h40t~qVQQcǎ]v/X`L&-s)N,.twl߾_Oϝ%QA]WZT\Q}<܅<w+7V/2ٗezͺ^=}@G`J?Z4W lܸq֭t]':}V=GYf͉'<q\%YГec1|8ZIg|?9aY/_ͥiZT	ڷtRGQhN>M{%FV;= t	q˗;wNVϙ3g^L.EǏOLL\蹸b ӵF#˲#E}F^TԸvJ@l
+v{j :
+W<f̘K.;w.###bZW>c>d2]v_-**WT-f( ;F2紿ogon|;v`bm7'6~Nb)270hcXbȺ`gfffffiܧ   {CZAAA3fx<6VBY8bvHtLtGO!!a6[v1v---pl-ZY,>}XmeyOIIV5Ս-B'mT׺q};{9B:d:]23޶wl'aAEjoooDpjuJJJJJVMOOojmVuAEp   v;q300W&Q	]aYerhq&L!6Eu<f,uW~*!$c{=vn0((1bC]+ z߿'!*lvs.ٿsРA&44T$aƲ:ZĀn3B_ۏ>Z-Z|;t%Dn?˼ی˴6{v3բmpOqU5tO[l󵷊%9!Iag
+{ߠT*SRRJRLKK˳Af IMMȀ (bYK ,KA5*׮ۏ149j:cN[o}䲑oyƴ(w7L#Ќl:E]_/L]%(@M!/ܹSP<PUN(,JO>u0cƌrG/Hso#7ްډqM=iCS^OffVmz\VߪxpOqhZ)55/ `,
+^aH$r<Bwm*D"8BF(M] #QN\x_TLϏG2XM:s?VjBwW{J裏>X+<=/]:|f4hPbbb||D"  mMQ;*&''9uh?cVE˼y@g樏+B!0%%%V1}0%B$990taV+{Jl?tO%|P&#üzdpP"#BgFn&Ev6m#ނJlݿ:zt޽0`	d/  ͛7E2FqDyhmi  Xt4A(!M&@ 0!,+
+B!Ǳ,N>
+9!4zD@QQ幋ZP$@ި>[TGaŋFzİt7otӧO!:ZT^\s}xxvm߾}&Lh4^^^/  O;T*-Zw̙  @Ʋc~@ 
+
+Z$I2|>rn'~2FG]Z]1$C("B>郖~T"@qN.JH׮LrY՚tvÆ:nOJ\T
+뽼6ݸq㒒&Nؿ777  (Zv.LKKk^/j 3nPgYV"Bm6BfF]!Bauuueeb8K1%Q͖`Fܹy79av[Y x<K癛[;ư{?ҥK/&$xni?R"++088x			P  ;Bϛ7OR%%%6Q&s @N@t,RǏ(v;BHE<O,Cm7`0r8{yJI3<TZ{ȱRJRVMIvS]]]BB³ÇTW#W 3n1_TT<zAmd  (K.w}Ӹ233.\NܧB3jAV/Zt6p03Q4j!Cc[<uwww,Wl4!Kcq_0xl׋{8]\\ Bԩ|.>'_>''gܸqyRlvɖouuk׮zj``qF  pGܧED@S	t6prƱ&c
+U~~f
+4E!/ǎ8ǡߧv.roS0:"	C_YR`X"!tpm'Bg4Dmu~ҥƅWVˬT]veee1z!Cj  ΦT*ju;7iJꁈ  tf{#l6b,HjD"1L8܅q;x<kjjf3.':>rjc[v;0*/O翺>VxNo	!QVXaړ'O=4mZY]vv]XX8bĈPZ   !;;;333===;;VȻ =O,#<==afF$Bb$FGMS|
+G>]F՛U~-Gm!c^k^^W?1x砡U׳ޞ/YYY<DhhpͶY~߾ӧOKıcFFFB^  8#ޢ@FINNNNNngQvGv]]<!3{:MbeYS8cpsa'l6lb=]UCNv|RA1oR0㸆['j(굜[AaUAQct
+}INNϲ.=<rgΜ(j#GX  8CRRRfffGku&Xt]߷xt:0#8dwkFFtPըtNN9R$#,cvB.̞GGᱧ>]0.э wdqٹ]vM<!uņq
+qo߾#F		
+/  T/4^-^_5 X 2$R%Z:QGI$B4tSWT[k3DGZvǃ	E|ݱq$IwŬP(Bl4I=Ѡ۶m'N++sX|!6vڵׯ0lIIIo<   ܦ䔔e	  A	D)VŘ8N*2c0pOU[g6o-o8ok,C|{_u,˲,Q&LU'	V!**j,=5{ꂵk2c=٣5fb7={8qjܸq~  IIIq#---33Sfff*JFV)?}	=  йAqǲ,EQ&8՚^Uv |BqaE֙hڮR")/]^hag6mwlfYlk޽	&<#wU
+_믿ZǏ3O>/  lk#JKKKNN^tr   X=4ڃ8Mbd2nUL&sww0b`,WrDqqEk%r^>_'^}i"0ȧp%4ǰUkk֬j'OUU5u7|Bƍ}UVV6l/+  p*VILL\`AJJJ<-//1Af   Q"a8;{avH40Gb˱آr,;PYYqLb0dg_jq#BfT;7*..?~zzym,/,))	1bD~_  RSSZ-BhѢE)))ͳx.\|r|  3잎00L Pe4kjjXeR,a#H:k2[ؚ/O'}͙տd}nbtbB<
+{e~0kK,VBav|Í7Ę1pB6ܸqGG:thPP,  ZhтZRׯwiX{s  @#GMrðze2MӸ͆\>i\NQIAvZKYV.9,orMqY^^bDh1~;x<ls7Dipe=&L߰ƍ}yyƌ^55.*$&j|ȑ˗/dQFb  p|Ԭ`sk?9֚#+  	=aXlZ9R*V0Cwc302q8eFSUU;BYu/3|4 ~{P@H$f!I4~lPȿt/_e7ătm==w=z7n\BBBXXP(  Wjvpk@  :9t<Gv@D"l:黐cd2Xl0hnQtsj~~2SI%4#(b
+P3*ϤT>nFL-yoW{ŦGOc9ijݾ}.(qw}ᢻ2  moWl  S!	:0eY$vNcF$ل»òb1,] }i7_miK溩t
+c8.	jj$ !t%Ѹo,ZÞ'NMxckmuw?陙ui7hР(  VB.lZ655i   08L&J$MuuuݎH{qEQ<j殇e<އj$bfM
+ wMc6;܈G|YsNOOٳgϐJ)׬Lvlri&	  sIKKkCfffӃL邼  `!ǲcnT*x555YB˱2L"HR@qAGW0d4W-אAO
+q?_0	@c>5σx=_GJNN~ˋ_^/!W͛7߿ð#F;V(
+  +RRRӳ333j#';;iWJJc}6A^  t~x8,RH8N$bł	P貒Mhv0.hb**Y}ӧb*#!ٕaЌ,.8p@,O8P~Yk6(W?I&ǻA  ݢT*322xR-r~;R{0   U{sssi1qzB"H F`X4dt=4Mu:Д??G*
+!d6[x7Y*Yz5B~"2RYZ:bPXPx4M4(111::b=  p9">GFINNnj  @ 'pa\X,NI"렻=k!`0Y	ឮf
++##ԟ~4ýk,aB BhI ==j;vnϞ2ՌW={nҫWCzyyA  $4Fi'} N&p	\	B\[[q@ \?aYÄBD"8d21.l_>m`P_a=<B%Fv+ܲeKmmرcS]3_bEEE(
+      g잎ah0nD"+++aju,X,z=4Ms!3TRPd9G^$dBe:&	~=fvءj7.5V*mP(V^o߾A`  {+7-ťT*ۯ,{  3`svL&
+Yl!Ʉ[, px,ZV0dnZ
+946@ !r5KKK5Gh.IZTn(+ʺqFPPФIV|>t  -IIIMo9/]Ա.0"  ЙA9)Bбn'Ig؁h4YNcz.$.VgDB||*{Q4:x|Ū'N6zWXlP(TU<x<((h̘1&L		5  p͛7iZvQy޼yj@v  tfqAb@@Iv+s!8ΑCӴfމJ`Rmor%Y,'?-u/^2eJ5Y.m?~sСÆX  ]َ9\WXoIOO NJ5w<%{4MWUU5aD"T*xV" kpHx]p!""bΜ93wimڴѣ"hÇٳD" ˑblZ  @wxd2ZWWǲ,ϯcy<1vL+#Iq8_TفӦM!jk]exy7e5ѣcbb
+ Nu
+FAٵ%!  Lr
+͆NcYV*8^WWg ٻ:A,k2f3G t/2/77I&=P\AȪR
+nzIPؿAEDDHR  <JeGa @gYNH$b aX,܅aYBl6L&!FߥݱcMƍ tٲo߾ӧO4ݯ_ɓ'k4OOO7  n0w1  &;gòr\(D"XLQ#חqGfP0jeY!y|Wy{I&͍Ըf6w*ՖcΜ9a'L0tPw} Yp!֊OX[RSSC &s9gf!DQIE9">8B_b*J(v͆a0}~={00azWV"Tdq/7_xyԫW/Rp/  -  ]{8aA566l6N @8\99~az ݆vCݞ={fĉ4ȻEs˽{oٲeݍqqqÆׯz  h4-+^h[   q'
+)2 ٜ߻wV\0a !@ׅ,^VUn޼nذapE90_ڷoKJJo  ILL{UqL N=`&peqgnBPhZv;IݨcZU{zl.@n׬߰aCNNN^;65dV,-77##<22rȑ {&  tZqN8I$IJ$@8MVb`V԰P(b!d4V+`J ]q===$!!Ӈ^mdRy=zH$      :	8eq\*:,:,˒$ɊŮ߫WRX,vL"Cv# "f@7o.**ӧ33gpBѣG=gϞ  \  ЙAǉ%{K;l!K2k:1@ðotRll,5[7+#G2$((H(B  &s @''H$x<kkkie?8nv;Uj8$rM~~~&L@.gŲu֓'OA1w*
+     =BQN@x^Z3q!az}ccVeY@W!Kٖ!J'OP\m4yzd={޽{5***J&
+ ={RL R<b$i4y<T*EF]Rrs8aEQ< BD:7jhU)EJBHMu%ZǼd~rp}/㇟v>|csCC%.6swϢ={N>-훐y=  porLr  N="pd$I4mq+,e9q4Qq,0;|oyR4eR?ʣݧwhT	\v;vL.Ϝ9qZ^^\8UCٳ';;!ԿI&:  Yp   {bewl娱.$,˲<ϱK!_1746ꋊ%Ir$+"\RT*?tZy2)e]{o<g
+P*E}Iq$qG1]q[k/ARRCaa8ʤG9s㸾}>o߾1  pr\-`^   :@IM"!dZcFnX(L.ɤYN }&~3JJZf^mM p5qBPR~߱IQrP(:hmzƀ
+mVǱp/uPxǕ/^\^TT_PX՚tFPH)2X]ѠYvqΝFq̘1OY]X'T*7]|ĉ^z=:>> ^P    80Bz#Bl+{eL&ji):fܪ[/ltj4˲a3bYa8RUq$1ulݜr'C( Ss*B~
+M __WƖZ=Bfk90p(bǮ3< %K5~^uƑ#G6,5v7"dթSG>|}||   sv  tj0xs:\v8hm6˲,IޅXx<$1la<"7l:.=;j[C.vSli:RwtðPwi̞}9uH>$Mkžc:#B(:ʻgL*wcGy*rp,U]-!)0֭K?-{Aq!ӊ7onhh<xS'54`F+"d+,((6lX߾}===y<     @ 78N$	 qfYsX1XV 8J5#(+B.̑cy:!%௔IVk2m7{e4}H#S+t24Kx\odO6t^:u8L78HT5,cE"^xglO_OOO4C3lM⥲/].oh0sWT\= `/0[SVV6bĈ'ﻯNt.4PT.\ʪP#F9rdhhcv*   EP  :=88///TjZwf
+8|3BGǻ5k,_yD>g7&1O!,9T r3PAQD?g]ϹZ
+
+T%kͼ_{W)#$O!x<q"HlɳJ,TEE^2m۶k49&llzWlϯ˷?~LV;vȐ!aaa   =x  N=刭A˲,rDQjunp80LSfY,G'+B(#sMnB[Un[͸Z_oq,2»WDo(UU=|d$-wzqJ&n'-HMtvӅ!T)S*E0hFk/e˖ׯGDDL:uǹ,cV*TVfeeРA     ˁ	Br9I4M3j=X$I{Znݫ{v&lk!Ƹqc}*͕Uli)kF"}eZĩ'
+Bnn~AAE;y!.xw^p0HOiqG)xF3?/[qň	&Lծ6k==w~J1bĈ#bbbd2t  &MT3  tfq"DlfY(l.p8~_5l~ih0:|>z!!4sǝPcV[m46cN$䅇{>&1W_눏dVT\
+	vTȅM98f7k!ڭw/TJ:'O^Txʀ ḊکXNz`/_0aBˮsB]*g6߿ڵkw5   kM  {6rcYXly<qz^՚Lz/+:Wn
+RT"ZVa8s58;]Ǐ˳ēy덱>u{u؉ƖtZU\"XsZC78
+}zz4<uZ7B"W`Ei
+B2 $[&@Ǚ594eʔ2zBz7=V;N:EQT||#⼼ab   %A/  tfqfP(8eYGNhi0Dȵ	>|>nXJř\7~d_U&I|¸Ձ}jk!IGD{bYYy`ͽQ}x~TB&4qG;_yzHfrqwT+县jI:vE0ѶN:|e9PAnpR;TjӧO'>,qM^U.c68wBW^Gh4nnn  p_ =(0X,V(,x<GűD"$	0R,'p=)v;v}m˅ÇHu?d̬JC2X&҆%iץXKAUTv͡ið>c}b^͸J,Bȱ:?̵8a8p8d3f᛫֜>y8pCàH/kيSX,5jpYQknJGm;{,Bh#Gӧo_V   @[   :99A$I)JH(nze]C4APM&SMMh;칒UkN343/Vl6f]zg_pP|ljz"C|u8NQdk֙'B*h@`E.^*;q !$	P8jsn`f2يK-F1FuAacjiNX3*`VVFz|`Ϫ*}-dq9޻w'8Ǉ    _Q@# ;VjuJJZfw(ΉXX,f	H$b)
+wqvjkm6[}}difxĽ4QlZs:/!0$4^<9p(o9B'Y?0?E8jdf]/C	7mnoEpzˮ=W"b
+QS$de^]c@ym;23gp<o4ZkMBʧ'ٙ?8}vrMHP`fW2={Μ9c2z왐s   z ZmvvvbbFNKKKKKh488qIqHijFV1qT`m},ErV+Hw8UkbwgM	-}ld'Ff1CdveW)]w;sC?ۼsL9܁[YUյ@` f3$nl6^%kbTJ=p勐_߲qêƆUWY(Jw^y40IY[Z>I}BC1Y7>{H6!jKCE˩ig}_t?;^mTP,z|ᛷ]8ytի+xg+կwuu4ozA;Gfٳg/^855U]]ںsΪ*9  H}$LLcǎBۏ=ՅbY)A<APfaPV>e(fB4q\+'	_zc!Rį?q !db~v~jE HF&|;6BFժJ#s=#.l//t63tCpo._ʲ_DQFyF[:Ft riAq&ʒ@׿Ϧ_{~nrdߪ>{秦֬YҲcǎj^S  )5(24AQ{HфB!ZͲl$aF덴Ul_cԄ|~>!lmPP^
+	!df6tK2UG&g=!yB+BEfݓ'3ap(juu?F9ު+ٸaѨU	w}0BoܰddE9솶}4VhZUq81x<xph{os/è7o*CܓΝ;755lrд0#fsOO˗={VRR}۷WUUF  Ȝ((eb잕U@d6MјL&Ȳl0b%k41#zϲ.Wp"ff>6GTQfmaEl^|Q㩿lb6y^dY>>E?q&ʲ~31BH*<s7ysb7o*]]UѨT4e7|4b(Ķ^;9?[S</Ά_=8	+Ĝ8͞={vtttƍV}lZX՝;w{tt285    GԩSGA{E$y`04z^N[rD1	Ϟ=!?__j"I(M_YxΆ>w!4
+AL.s4-Zhdv6imYk0eh?z&-nlZ4M)/?g^BꪂQj#l4?JEo9}o{<852D89΅y^Dߊ,8jhhx~j0ffr9Xn߾?22RPPw޽{]b`M  .Wi0 X:;;;;;;::q|`@ܓ-rb0#VUT<Al&>H$I<?77g0T*˲y"ffy)QDQrqlD'OgmYgZ"4MIia[j~?O]!ljS΃}WѨ6]ө05HCdȲ!'ϜϿﯩ9pO
+9]2CV럦{zzv{ss}V+ `Aw> <xvѓkAܓqg4z}0EQV?b1Ng4ʬVk4eYV"cH46
+h4*Q(*)*623'n~Bjmm$OgL%ZUThRx4!P^0wBsbsPq**2UV:WmLOz-[~41I9;{`غu={Ѯ  }瀱{ >%=! ZVAZB#-afV8yQ|eHya!h4ь5qr2xpjtòZMlv^[Vj[{qcBF\a*^ԽggCYSRy"׵#Oz!fUn2bC"[׬1"a~}Fٰaî]1
+  ,KM~R  XpE(ʣt:yNH$"!2ES<VfADQ<4ŢrhȨgo(p/|\Y`
+b,nq$};t焐BikSUiU|_BFµ)%s]^L!V̶ج4DW(O
+?=s5o&QTϟz*q6mڻw.//gy  zr}( R'T*U8h4<Bh4ǉHb$?K4Jj(FH$"@T8*4<|4ͷan+4(xB!(A=̆4/}UrW4]<tdRVjklpԓK&㗾z"!X_^Qa ͯxѠ4o]0;Z߽{7444/  P ˑmoo>q
+$(A<eZPCP,$I0H{;ӴF1=|ffF$B7T*4Ҋ	]<wɋ	<&2D](J'<wH?{x/&|^o8bEE8NH%_BzMҡigxHbƒu5EFHqB,+"B^eמo~YBŢk޾fOkw
+?'|[[[ΝճT(Gh4v}ݖj  vC'Ovtt$?qQ׋Wu7ٯt:^gY8Ng0AP99gggytI߁F*.6nP(|87~^b4j<~s4MOo}|ph4muWUWjѩ0:%Izl/tj@D9_xd3x؜Fڳ]9!Ԭ-\,0Ͽ~ֳoB,]cCyYm3d_zoՕvŢ(
+>_}WQ_hZWS+c^L_9ooo/w&Az۷}>[o[t:  x{KXn9rb4M !D0Թ;4MB!BH,%Ua
+ǖ
+^LAx=?|4a$I΅?8e{F7(UTث]iqӑㄒUV?w^Lִ[06=$Tt沚EΞ!7n(sw:`0V\dViij63(_>x<%EQU쐻]7_z3OO\pAVd=|A7k[]]ܼf   ,kvEd[0xN4PHl8Vvb	`0ef]5zaԧ?+aEio}gѪiE)A"Qvn.B\PHF$EZv96BNgShT8ʃC^Rų7?_}=,A7.畉pzio߰SQQDHS:ڭMU;PWVju/OMMM}QK0H9شh<6N߿骪֝;w! W'' X:D9v"!ɮX,DQ$Dѩ	e)Q$j5s:ZEQX,qEQzVUUi*ji'D=p0hݰySG?ݺݰ}j Ą;cJ·ݙ<2vmTe;w)85e0(Pa74XSXh","~4Ȣө-]qvl[m}Z0\tΝۼy󁶶w|>\-Z\~-[477[l6  SF C TgggWW"ϫ%(,ֻDQӱSsDQݶu\F؂P($F	D4U^f;-۶9:2y;:49DEQTѴ^)(0*hݽvf'(t+.Ԯ+sw||r	Vzc7Zl+/mZU8~p5j^m/Ti6t;%IRw6[<F97<;;b9eyIWYiw:f}mƊ2MkѢO;{̙ѵk׾;t걱l[F?>~300PYYsΖ7.  .Dh:uѣ$;v7
+qOVS:jAx7fYRb1H4roJޕǊӱXLVʯ*RkrARaN׮۬ncIƒTZ,7[_&L?jx'RsOO>dpp?Ov9شZ<|diiۛׯ_oi0 kAǏ+E֓d^FtL&Q +WtWx^qf9Aaj$Qyߴ g8r/߾}{WqQyrYf1]lnnnmmmjjlz  5RZ]0rr杝 %I AEe%Ih4Eiy>5jZr#2^
+b
+k΋_i~s}GKJ/^fAZiӦ={l6q  x	  '(l9ZVRq<ObMEz锳P(bʅ= %Y.}O?ynO~SS9Hu%1\RͲ===wUՍ{ٺukyy9  -A &j$4xDQh4ÈHӴ /_дU*EQX,
+}7NѠ;}ͶsΏkkr18MnCBH]]ݻׯ_oZ  @' AVqTy`00j%Ix<Ϟ=(JieZ\TIE]8łDh|W+Wh޾}*reϜ9sM7mڴk׮Rapv   ;7omH=A+
+ϛ'rkJh&&&qs%J4M8 &HXd~2Z_vwwSwޟݻBl=b]6/ϗ.]
+;vؽ{D  َ`-~#7~eNsM3=QT^hv:%譹.ɤB˲*y	 ⾧~y~}/۹s{-jn.V~x7|#I܇kǎ.`0ȟ<   ٫' =%bQTN|zzZX,&3!˪jyr.N'A~z7{%e>_q:/ڵkhv޽V  @vk `)CܓU(0*J]APopDsplѯmرqz$qa\?99YVV};wYF  @*Q  K➬Fa(vF)M$Br9MkZ5!XfuN>===]__>Ei=l/(3N߻711QXXcǎֺ:s  9\  m!@(zT*˲(k@p8JDAgf TO>=88XYYѨY2L37nxjuMMMUUU&	   ,uO<oXZ^$innnjj*%9fC@ 077':	q ^G\wy#<=Ei;w.^󂂂}m޼  3\ uOvqhXe	QM&V2!PHQܹeYy ٭8M Ĝ8:s̷~[ZZ|\]m X7-[~19_<ܼaӉy   DQ$ `C쒳yr@  jtsss!arPQg2䁄t:0$	Z /I.\*..>pOMia
+.^c^___wƊ
+(  @i`f q"* ,Yn<OTSS_cl6b'g
+ ^u_4;wѣG͛9h'C݁իW۷M69Nd=  fotQ  KZd܎B>66BP D"r?4MS5aD(J"!#&]B q,K˗5͇~MM33YoCioA+W.^x]IPUUV  ].s ,e-d]8j<ϋ(؇($1L)q#IJQԽGz}G&70y$I/	HX?ST4ʓW5Χ_ay$yʒɭ6ҟr3.e%צٱs?ɏ:ܥ_R_a޽g֭Α\]5/	B__ݻwY]nnhh(--E  oZ   Y߂&izziyRvc(ssse9QTjʕ+*Ja񻉇2'}[JERmeAs%M*^zPi?.e輴lHCoB1ﱧH,U:#yw|\2_&
+JVO޹s'g?_ꙙ\[i:t^h.vw߼y3477oݺuڵ  rQ  K(*,+u	t$I
+BJ.S8U OFc$vZ|6=q+o-E]/hWT\dXoLoB$fP&cAh~QMZ/՗/]uV(ܶm.//jh 7H  2=YGQ`PTfh4J4vPI[lbXhNn@#!`L	ɼ2ϧ5J"{ҧ+Q	RILXYC=I/Mj/WEͽgODnީ1ϟ?7lذ{7f| 
+G  =+$IFENQ	B:`0,KU϶ڧVo۶M=Md0o*I^2K2	htdLC%dyysF$WNI~vޮv#)d2K>_XU
+irӮ]vՑVe
+  or  @ܳEQ4͢(B!az}0EQhr90]W_\7"~zVLuRArPڎ/TE"T,mawy<իWܹsǎׯVǇ*  , '58Z<q\4_1wY~Q\u\N 5A!fVU{*\[[kZsi     ➬2LP ,p8:P͢I S4M4	Ϟ=Z6mjii+**B  KGs deY I\acYeYB0^ bykיޡ!NiӦ;v `i   K➬j ȃb1!(|>QF*~ǬOZ.]if۶muuu%%%z  3o" Xqr$"0Et:Vq\z=XXXNܿ_ڵk˖-eee  K斠3 'A`yѨRB!8ZKY0sVŋ_NQnmmuUUU:%  KPMH
+ Й+j(Cӱ,q0:.REE>zi0+~4]voҲvZ9F9 \  K΁"6I$)h4a0x'LK`~,0;\k׮ݹs7Jٌ" B  Xʐ5dEQ4M<o
+^/MǱ,XEto;wD"ڝ;wn۶rL&  ,\ ҭvreYNG4MӢ(Af3AEM^˽333Vjllܾ}{MMfC	 r>  K➬AHV5M,(tX,&j("n^rʕ+MMM[n]nnϤ  k `)CgST4MBH$"l|>%( M6}ccciݺuN7  ,Q r8NZf}>!D ?u8ӹm۶]v! e R'DQdyN)F,˪T*e	&V bQQqAԴgϞM6ZJӡ  `(
+U "I[3W4-lZj5!a^/I (! o?eբ8f6߼yllh4666߿XѠ  `9֚P 0::zj˥]"J#!h4St}DF57"W^͛###:nݺu͍Z  ˍ$I$i ,/H/Ǧ?p݅Q'߈ ZbfDQ$)c|V8ׯ_TT7oniiihh(..F   Xv4MIIIQQQOO[~ӟ_>U@ܓCyNq\(zZ6q	!MBe@bY_ cwOwtWdW.%<Qtn72C3gx?	߱O%fe$yK4͛LFGn޼wu8z  sm|P \hږI~Wկܹsw}t"h4`0gXT*(TWt:AP2`K_./1[yyA!KinJלꑗWgaA'(U鸐B,~U/TAgӜeO.K>>B/L^80,ˎ߻wҥK~YjU}}]  ˗lF `I(p8p?o_ܿ>˿c(aYl6k`0855eFFFN>hT* T/EYZ>̛qzyK#4_D_"brDiҍL4'%ȏ,I$=_Qdqj|Z6NLL<yΝ;Ph~  Z(bYVgϪT/ӄ K_E1e/2oe3g(R()a$D(?ɏ|g񇐰	?h)J.AyPh}|
+V䛖"U֩<pB&UkEQi:x0͕|5o'`©$8'ݻp%Ѽe,&3(oޫ/^N+3gOrAeRKxO%/TH~?y%7+**{=t_]]]---_YY)O'	a ˲(޿>_^^0Lr;MmYzOShZM];LEGn1aE~qEQ_bժU< q(V5ƛ1U_	W_LWWW/PMU	L&XrXwxxr
+}mB;!<JH(&uaJ|iODQ|Ri֟]'	!5oa=#g!ZD"/^)jMA(I4EJ9"?"oXn#	jmke~pǭ53E?%[TR$+_yՓ5Ny-4%$$~2CQs`Yd	akrx,|8#lZزeKrLuO.NLLLNN:իWT.yi,,)©nS}
+^oO[T-4|ɰ$T`0d*))ٳgￏ  lh4p8,Ə_k"2録rxm(7	۝nztcojyC%e1%^l^7/@b±<+!Sr:I0|V7J848	CG͛$%q!D"#Rr  $\lń/?N,|J*>阷yWr^Ku?N{-+'y[sBCQ[Ubr-Ukqܙ3g6lذ~z*XIIO~7kl操VBi$'#K2oe/I3+k	zOӯ*qZ
+n^zȩ>F\/]a&+d6SGɷ NNNVVVݻd2c  EQNS(%#PrDAs"?PGU6?UL~H<휞PMN%TwRJhH!JB3ڲR,	Yq)!	Fr:y+܀"9 Itv)Wȼ<ϗr(e%X|ǯDE9NWŇ\:%\?	\}	Jɝ?0aWGYK:WIOuhA1${h	I+W<-AC':}G?"Lޢ/˲>orrrzzZFf4y.:sqCCC### $O|&f|L 1<Yls4m}|o_HQaqZ39BV^hzJjvnc.  'SSSziY>mޖ	yjjfHh8	7qͼQHF+2iUB92^%/y4ÝO'mnДc	D\ZRS99K.w.XOtLlB[0~Ӽ^ZU->}믿x'O$IڸqcKK޽{,KތC'` 8NRKJYX_H:GZ+G6ZFG7{Z``F)	     ޸h4:44sܹp8e˖G_~h̷lA W. a!qr\o$4j     ,)~~ףѨڽ{{W__o4cdJBW      7BO?ի%%%۲enO-1u       K.=ydƍ[l)((ț	SA     uvvzȑ#( B$IXLEa>!     XΕÎba     e  2=      ^[[nF        =      yԩSEQޮ<Y]]M};a^7aCkOV#G=z4L.C^p>|&owwC%)/9tP{{'p@      `ْkvǎ{2v]	Outt(n'OƯ!)oe]]]	ۊD&-lwA[O\$lʳv]ȑ#JܸqC~㸢 ?u     znɓ'oܸq1BHggܞܸqƍrpSnvnܸx<8o˚eWv@:uJncO<xmmmJtԩ5+=x      `9W(r\.Wn[tHdCCC99CQBN8!'&Ǐa>44DH~ե4Lյ+Lp8!GQTծF@ʯou     7<<Cɣtttg=r):::HEr^Up>%S:j)G/ȑ#f=;ʒc&{'     `H舔B()nOr(%(dx4;vAySNIn'=      ˞zi*.+G݁n_{{@A     )$<^Y^[8|܇_S\g      h̤N`:L(	<&t-ʣA:uJ>(     V"S¬	$9Is'^^7#RSNK*S=      +Q[[3};99qDb^3yaNBt	"9-S'N`Ns'@A     Bc{v9?qD{{{\bNjjjJHpdr}Ny2m}A>,I^3>:xK=      +ԑ#G~L^	msn;t)ɱc>'N3'OQѣGG{{ѣG{xփ=0T3     2&gI>E^f?~AebY[[[P.+~ÑB~ƍ'N(#2z?x), MTq%J$      ,JIQe7ÇO8rp!3      ,CsrAB      +ѣG1'7      +puu_eTi      I'a%uww\ey       
+       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                &ԥ*    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf ns-3.21/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,287 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 550.8 248.04]
+/CropBox [0 0 550.8 248.04]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+550.8 0 0 248.04 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+36
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1530
+/Height 689
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x	\q@Ҩ,ZSӼoL#ZE+u5{o`Q\]@VZf[i䱤f*++50w/y                                                                                                                                                                                                                                                                                                                                    (VNNαc-ZcǎD     }m۶}6l       +==}	*TxSSSi      u-ZT(Trnݺ|Z     ͞=G~ڵkWV-000%%     p,[n}=<<*WکSիwyyy4     _{裏vgqss=ztx9sJ      "66vܹjj۶s=`jժy{{߿?77     ۷7o\Pر瞫Thٳgg͚K[     _ttAW>da;""Bjk׮ݦMB     ݻ^z޻vʊӞSN+WL+D     YLLڵkwޝ |)صkΝ;3
+b      rߴ/''Gؓ_     p i%i      G$L     ĴG     phH       Gg&     H{      dť`(H.      9XӋ\      t.!     Z^y{      dEѸ=|
+R}     @V|||\J@yzTTط\      rV}Jq^     L5          @L&^?'-      ȍdrNf1)\      ȊdV`/2Q(vo     T*16F`#Q*EΚ\      "F=iǧӣ      ...
+B6).a      YqqqqwwM{z-TT     @)x*1^^^vaf      YfiVf2Ũrb+=      "ۊB;;     @nfK1o	w8K3      ȍhh4Jҧ!|)޽{I{      h4sK     qRte}Ϗ     ླ      Ȋdh4r*77       0L:NT*o     ̙fGy04     8^Rnз     @^={
+^/i     	qfŹĐGVF;#*U,      r`9\KhL&SIN2     @.=%y$      +V쯷nK\      2!.e53OIHi4     ȍ(OA      gFQV[>##""<<<      [&I)ʒ=,     Ѩhld7E"Ú\      mdطRJ=      r`{iagM.      YҞR<o+4     ȁNy$R      Y*ə%     h4>vz&     fwww)Q*2vwԷ     @jh4><&ITEN      YQ(bSL>*kr      Ȅu<z`.o+i     ؟H#X     @HV`     	qޞ1\a$     Lh4iuh- .ly:+     Ȋ{GP(|
+K;s\      c6e֋dgq     +Ѩh|T*/M&"##=<<H{      }{      &      GfYV[*n-ľ==      h\rKJ{))a$     "-..>C     pFۥե>*TWWWWFr     ˫
+TWcM.     KLuj~ )դ=      X㒔9a          iOi	     >i4oO@@ i     g04'U"""đ\     \      N@Eڃt>>>j     pHi#dh4*ǂGחjQ)!t:#     1quuoS2jeJ{T*x    зǉf///1QqwwWT:PHܯGaO'    +a/RVM&M'R#kfN]6hA     pgdf,~$W¿촞	@Rݍ+9v&    777;}{ĴGZq`0	]n3
+TzFRX	h4VW\Bi     w\ҞCi=9F)YFQ̈ĘHn\=     qbsˑ\iBJ  +0ϰ$b#k0ĝҲYi     raf)6 X?)))+BXI    <dM.1t'ŝUG^llIf!    @J>KT!qT*.%"    @΢0od
+i     #H{HC
+H{     3g%̲]$ǗdF&     LiIO2$*b.lʤ=     ȓԷμ=&g>+
+ђrc6NI!     䬄iOqL&` '(;j^/T*]fY:XT
+
+{#7I{     d2ȖlV*vVڲ<2*nA=     [IfiGH(Jj2fq"&JtcvpJN     77I      '9oM      9=7W%           @>\     ᓗ#~Kz椅RE"   *22RUzPE    Nз(     ("    YTa(    PE    Η&EQ=    \=E    0oEQ=    4i4SE    ΁5("    K{EQi    8Y,E    !(    طՕy{("    g@H{    HkrPE    N@Ú\E    s`M.H{    0oEQ=    |i}{("    w^H{    i&EQ=    LEQi    8iM.V`(    &TaH{    	H#H{("    ' 
+XFCQi    8<o#("    w^FrQE    N=E    S=~KzPE    Α0(    p=E    Ӥ=(    W_}%|ruefH{    DDDi}{("    'H.H{    )FrQE    =EQ=     +=nnPE    =EQ=     +(    	}{("    gBH{    7G$(    #TaH{    FrQE    Δз(    p=E    W`'(    ,a$EQ=    CQc=yyy   @i#(r'777&&f޽YYY   DE+IIIYvmz}|^   (M{233w]z͛ϝ;_U    (K{v5dBQV^zmݺ5..v    Ç(]++++:::88m۶>/<{Ǐ   ڷoG+j߷~)6"0cZkylRAwڿnϵY1=VW%)Ս)Y,omYezV?\[<;Mǋ_X/huWZ=.h{wiC#ۇeo"oim(Ê,sd1PdGwވBvĿ"axB۷oҥ?ެYɓ'L^   C_~ [
+/bڵK)m1ҷĝ駟~*T#(cǎ:   9x𠻻<裏>aJ*~q۽!~Kڶ%iyt=V?jx-oV/ guCluqějt<wmV:{ʿ,5V7'Z'|"9~ۖXӥcX }^E"öm>߭V_z.yZGsm/./E>;l[Ϫ]]]z|PX`Arr2    ʛCթSgm׮]Kj_~¶Ҷ]0qR_t=` d]=EBqC:,K+$~5+[U+Ҷt!t~_h/-TN˛!^Mds-knmZt}{_:Xl_-alyˋ7'%E>mnXVǰ1V_iE_Midlo{P<	nZ]S:m@߾}vԩaÆ«k&Ml߾=33y    MllSL&_ws%pY_}q[:xipN۳,D	o҉*X.b{-oI7_Y ]:ⷬi{{nyğeN"lMZ/ⶏ";F+-om	Z%i%;8ғ7|Y=e>"`IK[O<??oٳGVjg}g:t0o޼$&&:     222N:j{YZ'xcǎF155     p IIIv]vս̙sᔔ      8h___|M6fڿ|||^^     wܹrʨXVZ     phiii<                                            8cǎ-Zhǎ4     C3L\r˖-:D      8􀀀gy{'/_J      8ǏhѢB
+>`ʕuf4i      7{ʕ+?RHPTV-000%%     p,[n}=<<*WکSիwyyy4     _{裏vҥjժ*URT:tx'̙O+     8عs֪Um۶~~~=ۢEU\
+     @o޼ysBc1Ylhٳgg͚K[     _ttAW>da;22瞫TbbV]v6mrb      rwzy{{ڵ++++""B})___|qʕih1      9Yvݻ/Ĵ'   '''##c׮];w(D     YnnnJJJfff~~HaORRRttt|||~!Z     i,\     pD=      D2     R`0t1      Ʋ.=     /1te;vM.      Gjݽli     h4wwwBP*74     @|||\J@y:kr     ȊZ)yI}{H{             8     'ɤl+**JH.      0LVs5[,?1E˼=      b2؋L{
+EIb$     T*16F`#Q*Eμ=      "F=iǧ      +...
+B6).o     K_ڦ=z=      BYwUy{X     @YjlL{m1걜JTT}{      C#,ww:      ȍlq)-TT     @VFFQ*>Ka     @VF;D      +.R      ȊՌ=}Y     @&L&F\T޽{I{      dd2t:RY؇\      2g6mcFSRG      [z^R2a      ْz[vQ(zSĴ-       @ĉCZm4K      Y%h4&$3K3     H]zKH      +V쯷nK5      dB\~jfftGrUTY     F}
+Eɧ2     @FZ}4MG2K3     L&NT*oH43     @nFF]`0y0K3     Lzq[%GA      V+v777Fr     ȁ*H4ӷ     @t:^/m#aM.   yJHH8v(aevO׭['%σ `?Q*bWwwwaCR79DSR%   9sw#tkfS|?qչkJvgYkY)k1k5[]F;[}i{zz
+wq=.^c `h4ڮe9?   +ϟۧ{vٿ$3Y{3r];5klW\qGr^^^~~>h (.e;>>>jZRY?N2K3  }_}޹jS\߸q?8++ @VHGX1LJRnq#==   իWg̘opzڍ0ҏrXY)a{w/_oLLO
+ BgQTFr  K?c޽[juy彮_Q׬YM6Lcgf^og0kr  c>駟2y𕋫3	:V^Kj֬ٯ_SNdؙH}{H{   /Ι=I&HrA[i7Bw혙wGw~>%tA^^^ׯOLL 3o  OO&Mqrgiڠ#>/VBG8ese<L߾}嗼<G P7-l* qM.  !!!aՍ7^`!Dl0y$e~6=Q{b8-=I7BcR~	6sVW/C4i~7nCHˬFoivaž==   wgɓ'O9?3yәV-_q}MvիF:_2ֵՙ?tmnv__;a7eo/ygsl_ PHwD
+§=7-Fr&  2-[ׯANVnz9W%lmƏ/Jv/wnw\_W]<?wKa	״Z5"M|-t᯼ڵk  pG\fHvg
+   wׅ?U6!N9Y|#랕fSo];+S.[^VJ)|wķmnR¾޷DPȑ#trh4j4)JKd,qFr  ٹsբE"	ɝ8pr7Mgᇺcb/d-aQ)?U̔Fz''7mV~吅F֭[wڵ, (+  MVVֶmۚ6mڣ{3C0cZ߉gjL{Ȳs+B&
+5~GY}<-Ra1g!r̘{pE5w7ԯ_w?Cnn.OF @qi#   J(>>~Μ94]=1)>ݺz8㥘`W>t?Y3|o'joĆVKZ>/f_SE;X^=w{j<+9fZm9nUJз  Cѵq_[Zޯ׍MNXݿ_vҞ?
+/φFN&'Nq[6Nq=j%5ѣw}'<>yC3KnIt:]M  M65m1gx}7LJ	S1,ܶe3gԱcgjc/.?8=1l{P'^Q:ݨ+sרQ f &-..>C  >}z/BxCm#V&%	^Qe^;z$hy53<{炼 NXquu*7=ō7>8p@x c4mVzTR]M\͍y{   $§n:k&'-HAQn0yú\穐©3<|p^zRX-%s1lo笔o,iݺxW+1.T=sXF?_γ Fqqq*rB(ľ==   7;\v-((VZp.w汪?lʍIkƨz],LV𭌤>LNK\]4ż͙5ە=oqӦM۷oo>f K{j~ )[H.  P	Ϝ93nܸF}uVL`{=U03O?,9i>|XWݚ1m[
+Fusau6M._MޛJV0O&M			<a\  ڻwoӦM_{ÇJ[FJIX#l_8*#`g~6EUTrsdCHvjXVv܁g*Mw/++%쫈E͛7o۶Cx@L{\]]  ʛ˗7nxz?JXܻ{a^F')~uF/-+>ub2+ulԨ?| !Ҟ*2ɚ\  ?qD>6lm:ADଔ5җW.U9WG7{kVWCPZZܪU֭[߿?==W  (Wi}{  O۶mۿYAp_7l⅃Wk׶مsL#lL&M-Zt^
+ @=  ˗LRn]aW/E:|pyKK}KZlپ}/N> H{  s;vjj~.30ߥS~K=^n-CWMYWChѢ pVQQQ  Orru4hУ{?/c]]:F5_8;%K~kXնm]v  4oO@@ /  ̜9N:+2=4g(Uzf33˺Ra[ '""B,  egg<xۻUV_E,J!Gv#tA]5vLUApZF敝=:4o<***-- p\  A%''ׯ_萾gN)וA3AGΜ`ސz?5;ݷoBVcbbx=  "  %///::zO12t'Fxkْa.ZdW{>SOeR|߳Gז-[~', Δ0%|||j=  UIII;wn߾}Yi+Wdĸ1nL++ۿ7GNHp-oW^yeر3 i+}{dh4*ǂGחj...O:l6s7 n)??ի+Wlٲq%ŊviNZX-c/ji73uUnzK;wڵ_| p=l6jG׻Ba4  :rСC[>2'BؿW%{&Fv=YWBgWVmԩѹ idxyyqJtBާ=R)v챼 v'x{{w&'G^]8'̜ig}O+4>ZMΝ۷ogݸq" pд\G
+RJRn'1&rp۩  .̞=M=cX̙Uy<71o5nT_Nv{̣?,z6mF8n	ϸV-Wr#G矼(å=QxK`V>C^4*n\vě*\; w޽{hbsS̬%J:th3ٌ/z饗&	 gmڴٸqcff&Q 4il?˫j_B̲"s8
+TzUi#h4VWi # $$$jꝷ{0	
+k|{`S{ܙ~]bMuJ:u# @"""ĴH.ø`hPV(Ҷ]M{t:i sɓ5j4sЫV3hˁm7[^^ɶ'|i7i-[?&rN<C[l ,22,Vi]lIøJ>NxG`0;U*msBQ[ pYYYڵk^@gG.zVj?ҁi޿&rM_/xܹV{/?"J{3~[vEoyN)1.\ph4:tH_i-M{V= ϴz(F.=wo~! eggtի׬Ysy|vi}0vú۴i4F3)nըh'DNVɡ˖-VSO=ULym/;^:_ۿBըQujI
+%l+iu?YbEqCc%le'H{mC<R=w0Ǝ: 7YYY{{lٲ%#[Z+G̛+n^5=	lݲsoOڍǇx`ߜ&#I'Uz:,W%?*ťY/<6>ņN:	/͋gJX=b"ܳ%]Juq%oա P={VSx9{:=ZrYw=8GVi%gX+]{\o>3z*I妇qRSի/_\xǽW\S_U()r+w<{O ʭ]vnݺUVׯOO{~ЎVuZEfZH9x{_I^u.z蕕%M6ܖ-[~)/fJ7/[P(.^  krh!Gw$V*_ PnΚ5qƣFdZ"sȠ>Cg=k3SO=ColyIឞu#̥^5J*+W`DPS1gL0kΝy{H{82rv_1zHQ"t= Pر^Vږ-[nнr>;;LS&ն+?t=zn*u揠~z
+UZ5   ڄ#uiԨQ?~ӧqRߞLs9Үu%*lɷt: $&&fŞ#F>W	ᢀ7|Z]Xpqɰ^m6==1tɢA+'rȉz",lذgkv9ikhVb܇R_ K#|/۸,@VT%pJN#E=, Y8werr^Dڷo{P>8P}NӴ[6GX(^WqaCh׶ɍ腮OTXqذab6ePw'WXuc```5uvI;$#M,|W%eHZ\LWjp?+mt:q8e:$T*s=Y~iI{kJs>?ف xرcU6nܸIc<)z߯ŝӧtqC/ֈ9L[9Iaԧϛl5k		J%Ήqyzzvm޽ܦld2=e6JK[vi @9}7|E7oL惏clhHXieK|1'A+?ECA*TС}4u/ڵk{gϞl%I{eC#s}hJZmH84ORt:+,a=vn}Y P={v̙kׯJ>8gi\mY)&;U#1έ_\;罇~bŊ#Gd{SW/bֲ?_ӿ:qX٧
+3۴im۶$+=!  wUzzG}ԥK;ݽ =1Fڶipٻ{n6MX/{VbZjiڤ=3k6HK,ZxڅΘ?N>F2/lZnqT.Ҧ=  ӧO.Q!.WrB>w,kkr[:Wx깸?Mݸ6zTѣz&\/Ok3Ä-UmZbXvf1gWt|%';}CeݿoS^իx1=  Q~~7vѢE//=_̧g߫ƌyuyfM$yq	^JWWWJuҦZ^TvjxZ64>_W^5s|ӟA׹_PЛ6/r4eg>k>O>͛7믿x싊ʹf]$  MgϞ3gNf͆f:2/=sњdqǓu夅|Tk=C/:r{YG{jOf<׬_;q		WWKf{೏ǋ9O^asR~mznzx^Floכ];\5'2_^`3gxS  -[xzz6k,<<<iEݕJIۼqF5\\\ڵkgط9?3fg>ZսGذLetdZ.,jׄ]Z9`Wf.dA1gVGf>䊺u[Z_
+2'<y7PVdd [(ŋ'MԨQQFάI#;>3UP瞛:u?7&~9~}ŖSs+A?a\,x݋3}SNp폷Μ:EcOR%/6͚5sĈGmJ{*UzoIϜ4:Ru׋}oѰam۶e$Pԝ_vQx/SNK1}+Fysѫժ	d&IIXp}7̔䄐PM
+p];l__,C?}ܞb6M:UxH{ (8qbܸqu4hП8EݙTzu፸[n~K}Cfˤqd[A'o-[2_Mem>ib߯-೏g%kz3×.~oF=ah԰Njܕ,SN߾})))H{("pߥoݺcǎm۶س09O(7vk*UMv}-/Y48/C{%ot&+El䗻3G^ʷ;ܸ^0nK8FxUٵcjT𧻓V]{e﷼Jʕ+[lٵkרUAߞe=E rss?>iҤ5j9+y夨ۘ6K/\/+~=9}G&j=ӏ
+9⭱s'	~;v0ը-Z4Um3OOOoo?8!!V۴FrQE@&υқ7odNJB(9UAV*ן䤭e{ժUCo1oQ0שgwMyiӺ˖J1{Z=ĸ3ap/ϝ[fuZն2?ؼy]vڴiaÆk׮rEECQi ǏߨQ	&нХ¹2zKFi
+:l_-:eyeI7[Wd:/xx<CNH/bjOܕUϯ~[/v/VjUZH}s͚5ۼy3|P0oEQ= #..n֭M4ӹ{x	x~{kvݺ4F}^=z쮇LJ	)eW+\_w+=WE'3yuv<S&vh˰+6)l/>P(t:]V*]zdT5jy}gL=s)碃?~7o+MڳgZj-Vp◻̘71.U]]OҪ+'m͗{6vԩvK.=s('i4SE@nN81vW^yeذaǏ`0W>~Ř<_*
+|{Zuѧv۲apZ89>	/ft4|#3K3āͪW{N;pq2TJBتUTXb^~>%?3fUլY`$Lpnǎ;9x?2O>j
+W\}k&k\ҥK<gSO=E&wyeҥϟN5(" O[liӦ믿qƌ$ҞU^FXԗcy=_?hOOGj^%'|7;5$3y	Wc矌xVu3DM¥N^]9a&mx䑇|>{v,m妇sa<#O?iӮ]D#ϴ˄Tl{>ZxiCo2=/CvCÇV̟ݻs~o Չ3k2z|)8=)lDQw[W~DGG'N{EQi =y!C^|E'D/.>X_ippjhr֌S'uTO#`YOײB+=1зY?qM{]:]6u`׿fU;m(;t]z̡?K/	ؠAuL,zl*l;K6ѿm0㟋GDM<H{vkrçO7uJW^޴jןo.5j1bđ#GxS=LQi ۴iS[nn:<yǳ?\;T_*W~դi¥*TxgFIGnֿ+9ebG׉94R
+N?Ìk?3's?̱+W{'z衾}|lm"z[GLO
+L.^8|Yu?B2
+c]2-WKNwW/</NGvG+X>fVEEo<yrzƌsQy4y{󀧺}xTHQ$*gF(#2"Y{BVCi(#{ͷs4z>;}_7D{@ D{  n<33ŋ[XXiolOg$<;mкlU<tu]-fЌookr4S^nN'oTTT^ w>31M:sb+\!
+=^_cc۽{wiqeLJraqA\/6ݺD6Du)+ܱ]71kkhml4'6ẉQas?} VI{k׮n޼9++``t= =  Gjjj"##]<xtv*sګ֚)3,EĂ6^{	q9=L7-|}Mh.7v}aWn V*tO8ϛ7MDD$%%%2y0]Xg+K;gYfv,E3;_><t%de ;ӯQ٧d777--.D(h@ w֖m6aaa++υ!08 &Fbzf2&Vh#FLhE~Wj
+jj ꋰai`HEE5gݛX$Z@{mmj)5 ]Y++	@V\x/%"*xLZ،˺9rͧ_AmQo_|uzА=bU&\m{   
+JKK6Հ2?ykj`-k7RTTT쳦:;{tu^AnZhقAZ+^LeHe6aɇ׫&FN@JI0G{ExJ{Ņ{knk"4Ev螷xOtNs[7\Ik~sRHHbbbbss3Hlcr@   0l!999[n300x&2M=hi'\V_8nf-]-\ܶad;uܔ@SG[X"˓{56IՅ88*#Rpss#sIKK9}zol!Mˈn"e?Эjm3T{IWajO=~XDD=n111UUUP.#m  p!::zɒ%IIIu荓'Ӡԩ=u$
+޸}|w63gLjl"·-	h*觯.s.ԇ/;|=&s3!FhRPf&LXn]5{l&5=w̙,6kk(	ko7ʑU{T IKKpHi=@ D{  δܹsg֭FFFEC:[πd`)fs0)/3$ifdV9#i)9f2埼7KaKYSׯ۷Gmzq<{Wuge<aN[t"GumJ-ahi'PSSEGl 6EV_5qfΜioo02*rmEQtjݡ=wM*!AW(*}.bX9W[qqqgg'0@  9\h!=)RQy)	,>%Ĺ46V7'>fzq1Q΅؄s,),ab,kktq'q(JQk|HM5AG:;Æ=}USx뽥~%f;pޖVV4r`RVXHO   𧣣#''@XXxǎм77(ј?OB:3 vͯn}tv2v;l뚹st7;nriv0<ybhh(""bggh7`L.  FeeeRRRэ5v d[JJJ1c޽{X>/C|Mѥ7۪ZGǴ.3c>]Ν;P^  H#_yBBB[n-xsFmؘ<<<X̌d5Ft7{jC66;tZ+&qO`a۷srrn۶-;;H$B=0;h  #ƨ(iiiee億h.dM444SN522zzo!]7we*TTT3ٮ{**Hvrrӻx"@Rϣ='@A Osssvvɜ9s֮]!?Qkc̃5kց?'YƎ:[C-YW!bK>ٮHs޽{544N>H=   <((HJJJEE%66Fj#"̙J99˗M1{LTꞺʈ000,U˼i#]hSUUUO:㻻|Z_/@   0 ?6446à|`&N8}tcc/R,cPua.}cv=+EC,;뇇!wSeYBddZ\\\UU=ГA DYYYxx%KBCCyhD69WTDrssV$YƦ
+;4MMfy{e{Ffprr`/EEE iiiГA {ʕ+ϟoccU.>cT>.Y{k,+/qfmbm9	u(Ag&JJJ""">|= =   ڱblllk#4[eaa144{M,cZ99wf_cM{݄8뢂Bgz&FbO</oBh6D{@ D{  )455ߛ6mZx٫gм4<weѢEX3g5C0q\g>Fm-cΜt&FÇ%dMMMFFF/^@g7E{'h  #p...ii鸸ƚȮVx͂F@/M:u	
+
+
+W;[!Q%o^S_S5ܦgx4ҏ&$CCC!!!ss۷owtt@h@ `dA$oljj***>4'V\9iҤS]QAr&Qнq*⤷QYek}C5j]w\Σaam۶=x𠽽xWE{'h  #c{ }7gN~P},"1Øns'^-6sj[X׭U).CVyORlllo߾<3\z7A Fwwwkkׯ_?k,C4<U1̙3Q9v9	f"Ff;muDEyYYzpSZj!G`Qwo---PіV[[=c\r@  FbÇ!!!JJJ			uπ]w}Wi`bbb``@OɐWEzJ;5TVz\T +EYWPcO٧khh;wJ|{\ =  hڮ]fhhmaaMjUF<`T	T@-Pz筽R^TT !ޮ>9sVEY3ߜ^ҌQ;ښVc%P\9CJJjҥ111_|Bh@ `$QTT+,,,""QY/[pۗAۭ7N<}Ym͇,tRB]P+.hεtGy{oxn %xNu9Ɩj*{yyʆtuuA@A QHD.;޽ ŠRĦw|WjR0hpLE2~fƈ'^:zSd:+
+ 36:%$&-[LJJ׷b>`y{h!  m'WWWIIɽ{fy0+	Mt#ӣ_gU(~"B&w~wM.bӃֆrgFs']Y4i~܇bAnwR*?z4U }SϺ	W%~O|?Ԓ	9vw\VynC1'%%^II	[<<<޼yJ@p @   0Zihh8wܹsKvR/tLS~r_uF~doNd }8ώ	=5djO=cIy4yg`s3MKsntJsIN8Ƹ888XYY߼yn   ׻wfcc9sMmmmmllO;v|VX _|wPh#@Τ+iAFS?KZ\_Iפ}O:H?Q\MҊO
+k޾ǉAݮ]&MDMM=~xuǔn"wn5ըxe|#U_G[vvC<xBwbcZu'OTSS嵰x)H = =  8O~~~@@rzcbb>&F_P&ߣ!/9^o!zx+;_jup:::[lLl 4X/&[4][{5G%'9⚭Ϻʐe*"fk Qn*KDeL\\\mm- @ `t!!!QQѰX0QwիW300ݿr}wA뫬 ?f	6mT)+uݑm&d`ؘU{KLvv+W A6D{@ D{  EEE!Gۻr*ѠaX#;|5zz'_Ijkˀ<˖|F8iXlFGq-qfeeɓnA@A aNYYYRRҿ h{&m۶mtttJJJi'|CT}.i~IPNbb|.Nz%[Nxk76FUZ'))tbp=ГA aKcc#GDEEۇj-
+	GyneeHMMx|B> Jݼ:g,>>ukV^)AAw93$)ɣhwNl }WhWϏڊY̙3x< жA G}}ǵϟoffif[s"KA#K^fر))͵`Yw-Z#gEPu63-A螙:^EY86zkkcdeifժ0zu_Ippp~kk+
+ @ `A .^n:~~~ܜ̶ F
+ޥΞ=UB4?QQ6+~PR[2rՂs%%me>>vחVZ>Ơ*JDYYY{{;8@`#CA aBwwwkk+rQ̮_ށ'h,X@MMZ_ f!6Ft۶~|}U6:[?:p(_Av6|*qss>5J^vKm 큞\ =  q[n322nܸ-4:zj+ORQQU%BfPeiV:M=pσ:j>3*|_Vh[oҤIS.sDcM-qɚbbbvvv>< A@A®.x1++HPPP__4Ml?`**3fٳ(}d|̺Q]Ĩt=$%<M=&QfH<џ
+CCCΝኊy 큞\ hdE{:;;?~/s qGm߾]DDdFGǏacc*52v[}cgk-!WUUy~SM8pO66Vk*6ŝׯ[XXHHHl޼B 䂶= hdE{Pv!~~~T؝={HKKKNNζmN8X
+IXPSTUUUT,222Yݹ鮦*u[Yqq[?>m3Ӫ.ҧSrQEaX1ڊӧO?z	 = hE{Dŋ888$%%]\\`ښÃפS)6&9sFEE4447n|89|ƢΝq\xN5fڵdu/khK~4E,<yG>`Ӷ$WWwtt;BFFdi@#.][[{###TU3gΪU=Z]]/v ӧ⪪III8]tISSnĉ֭{p/kJI;Tsa8OmV+decs:Z#w+*Ӎcsl߾}ѢE˖-;{lcc#xܽ{@hkkC~rrrZ[[ ˇ}8>UV100ܺ-|Trr3ŋ
+"IWUtXiChMIIQWWw&BG7q̥sW.ZQ(e߯h"5bˠ_)%_|S}&Ʊ iC/Hːox(@~CIkc&%Z}G;u'?A΅P^~{:AKIqQlĆ{EoeI4)[m=X_Q<SZi{_4ms\<۴++W[7gz{{⏍mʔ);w,,,֭ 0(((@EEE/wƀ6HڰaͲe@ld谊-~U4?Y7jƄ>$TDD$00۷W ˨EEEB=i4=6$!_[[44[b])>Ŷ!}80=+ŊZ	I]}Mw򙤭@' @f7(9"Cq/BtQ}﮾3%980{mL5{gbxR̤		sx7oϿA3I4iOL|..iӦM4i񴴴֭{1$PEEE޽cAZ>w"A*g.++{aB#t[#mg߀w\\nd[MuⲳMLLyɚ.1A4S'13ch>O"-I铴9}"21/I;H;daS, /@$2>nW
+8iɾ'Hq{;{RߋN:7ŉP ŭK~`}o[|~w=:X[nJ'Y_#Xs	}N:D0}e"0'i#luzz	&PSS455{ +#ZWW())!ҥ֬9?z40Xfԫ𭿪TXe"L&Mzt;jlӧuuu,--oݺE$ 	U  Y6~zS__|~/7n`_	OT-[LPPp̙={B <UUU+V@]nN&ɂ}SyOذR\\8TnU=wݸRX.rl56RhhhQQQ[[87|Uaa!g?}T0޿}b`޽æI/O;Z >|@Zh#}H=~OAv(x OؾYfIen_I'.m oXiiCAqFOwݜ^)
+% &	) O<^xq%GGG3gΘ1~zCCCww7S^^tRKK˛7F*x jvѯ^f޽mܸq|||	`hv<tnm͛cǎr   `C ^zĤ/s
+fdd5'}...Ǐrss.O_\K}ѣG544xyyo߾    F+.\ן7oݻw= yZZZ233WZ%  m64oH/U{|fƚ>&-]TQQ   Tsss/Yd߾}׮]	 ?,XzKOs7n''޽{
+, Q{K̇)\\\zzz'N@oGG   htΝC>pFFFee% >J hdd4ggT-|"""/^hinnYJ>,Ѹϟohh N   0kx<< AO۷utt=ZWu8]ĨF0
+T{,66VJJӔ04蒢JJJ77o      ~9D"իW;w\hʕ+Ntq،YX.gT{h2)-MR/59zĉYYY7n>tFw~.BtvvիO<YVV      iii͵XdIhhhy1ޞ	aBCC}ó[{ڟ{l}Tv@R]ՉSN)++7nʔ)VL.] (V}UٳgUTTxxxvq5v      Uttt<yIHHHJJ*88cAZ7`#e"¬QTQ\}U￷Q5_"k(ɣۻ]u@!^bՇ2 S>0M\\\TTݻw       ?ϋ/|}}edd僂
+B_wջ;ZIM}}t?"sl}7Q^M%CHyZ"¶7Z'XDѳ5.--mڵLLLTTTJJJgNǃq@7͛7̄V\yRpK      (44TJJJFF4TC99gV~\gv+.s@ux\DeR%_3WE	-'&T{P[K|vFFI&ʦb804jBu񩩩k֬Άn\      G///qqqݻwzAhJ߻87.oMeRՑ^Z_>wƆıKMYOW.yωcΠE%=~tȈ'5_2SOR"[;[aѩdoooTB9//FǏ_`     74,,LAAa9pe*fMk7}XY¾6քM/5sԩSS/S9ۖ/Iy9Νuž~⚥*Eh=~f>t^9++q/^*Y"ښ;-HhW{E9wzB]ma4>fSi\ѤlقcUU՘rTs_.
+oݺ   1ϟwH3r*FPo'Zh|z{ӴvԵ%6}s5˱q18UM_	?
+W~TTT/BڠUGGG...t7Ν;˫Kb,T3;Z[*nTPe=?Oق.155zum*4	6B-u!%/Y'$bJ7|K׶pm7.|C,V(gggՁ|3f̘4i@3     )O8)  `ffvڵG{{nE4O,Yț"Ef._8 "5WLrȮǉY%ft..1X/\.m:[!h[1NNNTTT1	>E]6%.`cHK;a\&Ls,_3*-!S#yϝw13ӣ7H||wpdea2id$:,,\0S!900PVVV\\U_|]HIIac8222X"77n$    TTT$$$,_wƍiiiuR] =`mEC\|5Vh1o1G,hSX1,/'q3QgO9}_߳k><ܳ+K{n8u5i=]>߇ii6TC^`X<gTశ~w[UYvB6,S|3MȆ=%%0^*J|ӧ3P*|{D[C;6!k쨭9\o9yKR蛝;i`GLRqkcH_$j{;АѨ.//:NNN𰳳777q    `<T^^^]]K.W{z"f$6VUa.Y!Aدir7[Ty<2
+߅100,Y"P9$#h6?EmVaee* з>>>>²uOS`{+<dSYĦ0Rفh*+)Qwo>pԧ$bQ#uQxpβkio	ǒ-\8kX;5%7npj$-[(== C@ =ztlllvPQQ{.D   `TR__ʕM6˗/{i'Tr@M˓~ }Ƿ7F
+zh\_>G133m5]yN {!o_EtW#4zDw1\n#mO**=U6bR}'ͮ%$$LLL?Mik,߿wcm`8ndCG>^ƭ{Yw@uՅhWӶ|]KDx6/-57ޡ[G6Z%<Sͺ:ggJ8eoo߷UVѩO>}JJJLLL555`%    MTWWgff	
+
+jii=z1JБ$NBO_p	&<DJrS.# J(	>MElT`}UOmdĉzhDڠSBg
+АG$%%mȨf}{BugMEFfe,	s!㻃rKx8g33023/d^z%*&L8qZUΎXf\?GbSXhl&Yy_?=謬,jjj<y|`TVV̙3GNN{֬Y
+
+
+׮]C   (˛6mWSSC/jJЍk>XLp֬u=^9Ϟ|#oˍXxKnh]kXr/C+۞6s;Z{HIlj3			JJJΙ8qKx̯R]EܤINcy6y&Ih;44yMWR/-5wd4@m!}UCm/{{N^kt?<|hiX@5CyNB2//Izzzkk+dH[[ٳg%%%yxxBCC/,啛o߾J    \s\LKKK4>|<?/5Ui**DUafڂ-u=ћ;7=88>BCf+0$>I	~Trڷkys_KwXp-=usg{校Ǘ-[FGGדzEE0ޯha'^W	|*sۯ:mm&=jO:~	(򅤌@+y߫-F2$:|֯Cy?c>C;Ϛ໚[|]2			;99z
+ C$??FFFh:==}֬Y'Oihh7oޒ%K222:{   9wٹsZll,y~f$/*]TJr1'zsKO'?쟤QXYLޓ4(`GkW̙~iWo'&Ưay}UDog7jjj=]e9:t\tiLLLq-q`_Cl5:n@@M,2xB{v/ǚ-_x]Μ؊ͷT,-"?lLC3jrEO|we`TKhgDlAsAAAMM3g@HKKWPPpB[[ە+W=>>>^GHpp0     srr%$$PqPQzURT2eʍ̞t:zʢ=FǃsևaQ%rE-ڷo@olZ{[sցhOߜ-FM#wTZ%6}wߦ6V$=/h =m&#zEgBJ<=/\c=jMFdxi/'vЄZQX#;ˎ|-l{HN7־Ƌ'p$&''kii	=¨>ݸC]x}=Ν#   AkkkNN+x7wD{DP]!#lmrqj<wi%+|NXUUI{{{SSST%E{:",_Uԧ4ic-uPk㑫Wnܸ'?%e~RUUzdN뵊<a,@ΪS#6GP>I_kA4X1i]Wh4!L]NTSm	X0s8n\-...QE^xA$Ngggss3m !yO?^b    0iooAEE<==_"Oߤuz=Y;Ff҈BKKuHox'z ?`8=wm|*3zα#N]nM6b#<𢢢ݓzgw/9Ǻt;3g>|O0Pw@k"-57]g5{ϠWS32MLC)t'YSw.S.48+i~mqzg_Se)==͆ubr:pZ.]d``Ͽ|O>A}h7޼`    tvv}688XYYYVV)7'ұ^9^B/~1{n׮Wx	,(M2۪(A]MὯ}z>{zsDnA_栟s8۷Ϙ1U$`ݣ]-X}miϘKs6b|a0Ȱucqc6NZɛ)3RNֆuzX)[~3W]E l={ſ, b5_SRRϟoaaq֭zs     X%%%JJJ666]k?>X[T5e(Tclu\W׏iAmxE޹ɰۘgY]Ll֫-NO_9z?akk~t
+
+
+߿ t!NoHgc"7򩳙3vKE~# :yEca]*_>Oقˊw+D96K;io[E>O^^^NNmmm ?)K3y    aKWWׇ×.]Ƿe˖-1<ڸAw#C[iS18*®ɱk+dew6"zdXO)S&X`uUئϙ0lf=]='@;w{܁UcqQԱ~UozKYv|==fM%O<1<@B9|y#Nc,,:uh/p`7󫫫pvy    `؂ܿ$...TRP_X3kO_+Y?ZFX:TZA6rA]\U@svQT26hm7_ָim!yOR jN=eB6,B쨞soEoK]HQ?仗{^u#}Va#SSSn}Б"%r]E@=ۚ#EXCzw@&y1}4:"/t3ONd26#t<B3~jS[˫VQQ>zracrA    `xR^^~ȑu	
+
+OTI<s\P%Nbb\ԡ{rE(*9ohO͟{=kUmm.^ ~KOnddt.)}vl&,T2sE^mRl9q1Ç6ZX}6~uAkNlepw,Ÿd+4@VٰNk֯{ٻF˔JfL%ka!q0nAmgGIڳ{.[t^rț)~7)/Ɂ=@    tvv9rd͚5"""7o|r]	p[DM:e֕m͸RFo>趥	MQjZVLMVI
+6}pK]XkU\ddTo6mw;_aW޾b9Xg(,6==UOcqGH"D^MۮZQ|),,hulδiFA=Ch-B?	q]$jo	7"ϚzdKkÐO/| qҤS>4:	}Ų@{iAJ_H.dQQQZT@    F+%%%O^z577U?^_}U{8\=>UQ.rҿQuO^N8KIVSLy M[r广P3"4~.L`tJ(!ijJ )yt7K,S_8}*/C>9^\HwovtP=x@R≳
+gG֤qۿٶmgJom$Y更o+45],	"""[nvZMM@000@    _|9}6f\\\m.!pjtҖok&D4]ݸ^OG{Mr3ˋ~ұ#t PMřC-]ݓ444q͵OyjjTՔT_$HPVDHhֆK-u!P:`k>bn_҇}}gg8pѣG0L6\    0|@^cc#*yyyQɓ'%/˗I#OCƚ!!q&ؾV!LJrq!@_ƚkiiM0ZEEʲP}8==HHH=1110:K h    466޸qNVVVSS3**%{
+p59+'LhV\McBv<N8BKK+//\yA??pbbEo|@    ijjz葹9??r@@@чKm-Ccd(5)2EC]__ط/I@ϙ3gPeU
+###k$e@n"D=yoҥ222NNNo&Ѝ L    Bkkkvv]Uz>ȁB0aN3RMU8>.ѡzyzz~*Lˀ@w4Lmm3f,_<22@ wG{bcclm   ?IggÇ'   **$Ze:~j.檽R 3S'q@çA[K|zz1+++cyyy>LG}@ߡV\uy¡CΝz˗/WTTptq!,y{    ***ۿz1P? HWd##έ^:<=LM7qqqJu〆Y2o>m4**y桊)~S7JKKzxxvuucffZ[ί?JCzr   H$߿ɒ%rrr&1F_[5,xm_Bu~		'ڹn^ႆ^?>\̞=EޑG@e4.55芊Np ˗/7]    僚ٳg!!!BBB\\\2uVV[K<i>%%%tӧq1'p4R].Xplri55533iΣ|C,Ujo(M
+USS511IKKL 9ˇ@m    V۷oUTT/^e˖K.5_w,"j"i}ƍ`cĢυa`"p՜X6m߾}覝6mڦMnHGC%1V\nngϞC"=_   Dggϟccc555.\h``pSD GvCUwS&Lbbb^>k>`"аZhѸqf̘addtf>kK`aa!!!G@     رck׮߸qcjjjS1[|}&&FF)|N[kV)ti\Da.sEoooAAA:::T_ӻDh.] O>\Quq8qZZZyy9N@>}z}1    ˗xU&(cQ033%-+uq27n/T8Ja!!!222SUU=upSaGcqIJJݻΝ;2\𣀾q\9Zu322m    <Ǐ_viO8QU~ڱ`+sѴ.yylio\ZG5#''GMMn`؊$ãq?~͚5+V@u"7Ch    ǣ9^+++LlzOPwWqApTVNNC`%\w<11QIInaaa	xxˁ@ݰSrll*իoܸQUUsss,&rssAs֭[X۞ɓ'C    ˗/ps8phA8-+Ֆ5Gl^wbDJΜ>&Lx8:qMMMzzzd]jk.]|- ݸ` }=؜˗:di   󴴴dffHJJr6888uT_$ZK2kn'RS]C{>ӧ1$:@#gT+++_U%tC"4Tc322555
+
+x<xV@E-    /Ν;U1c*v_ho HLlAXkKdEK>G**Vn1VXζـ5eЈQK3gSQQ񹻻$w8 зMĕ'hhhgڵO.))
+(<H?   _B}}=*jw-  P69<XP_}x}2u.;]ǽm͑A\%EWӜMFGGgd=#W^ݴiԩSQ-.I
+|@4yΝ;a0XfRx"SWW'..>H,K3   AnnnF]===\"@]Ѐz|?`ެYl7y9	SLy)%yhV]yu+ܜlllϟb2 	ϣ={v֭aaa%%%hBXWWGAX<iii   Ahll|r̤Q5hΟ݇\,e%4'&&{G쑇6iҤy`+Ј9T;w.ܿي&F}@qEtAsz|@CO.    ",!!ammPs\VPt#xm:\ıh$DFz!55u1Gݺ^C̙3rSM4O222ήw<|q~B|3ڃ\Y     *<==.\iaa	XM[ǯ9ɐrM%44P$Q$s!STR(qeHW	2eL2%44SM|}{}[.]TRp!VU,'_b>y5ҪgϞ~vZHVp޵gjϓ6n8rHr382tAPn\J/ZHPPPQQ=>>]Źi~Ld&   `|}\x$y&]no5KWmݺusܹVu+z9Z"ګ޾غuرcL:::`BѸׅ
+??9sN>=æY   'C^|w^---999sss,9oT2Mr3<3عsgm퉶6߻woC8cP֧
+
+
+=z֭vੀ7l٢"!!vZRhlp5A   ?|Q---QQE;w(4܂Rߚ::x,5R"dN.]Gsmxtλ.g۷ONNwǎPaj} 3E5)=jjj0mڴ~`n>  N:v3f8q"E)PHsLٸ`&CӺv"++T1%oݺu=g-|ɍMn~uuu__߄W'r32SH9zE12J%AMNي1E#}jqZ1ynEN>t>xnsҏfٱcǸq+##si|<,Wl  #GL0%$$ȫ0%נVу;wN>Ɏ//~z/o/MMfF}Ю8cPL⛓.))I.]Μ9sƌL7ƶM1;b~m7T45!}'K~'MÜB۲:,˲ٳLB4CA|33Ĳ2|5a\   8ϟ?;vLMMEEEPYZKuYLTHc|ag&WQ).\DOPPgϞuыNhHIIIKK|G;iM%۶=muꞴ=]rBH}us>󌥍5KR̛#F"SRR%A~~~]յޕ\zBf   CeeeFFRTTTSSӇJZgݣGV3':`A/?wCrҽr3'),_n*$$(%)7U{Νׯ'u[aaSّ6888$$ܹsa4ҺY֩wNfCcY0'mŒf#өԛƬ\CPs\;	Fm5jϟ'_~ŗh	^277CFO.   EZZZTTEDDttt߾}[MHP+wϲy>{\ߡ$)XPO><?&?N%ٳzԞpTbD+++KJJZZZ޸q#))0?? Y4u&Kk%a>=6g8///++a0ZP-'׻	4  @jjjy9.ZHVVVGGgF \Pke3E/QV:7[;׳'""ϝ7$_kqޠv<&WWQ...'O_bExx8b!  h	Tf(&..Ͷ(  ̌$UgӧOKB2?!?Oқ\E i>"//qj2gYUA:=؛חmmmedm/|pRE  -kRRRc6g=  ˋ^by
+
+
+n۶%Gk}QwZ#22TL_\L N2xrZ;J-M܌}W"6wPQ*gWeee`dd  F^^ƛ<nϐ!C   (jjj
+
+
+׭[iӦ\mɨCٹc<cͪ϶skO(ztϺw_p֪vӇOOϩS?~<--CK @+=o.CAO.   E^^Çmmm忳iӦ[nUѶjnƘQ];ut*:+ͧE?ͫ8uPjؓzT=O.**j``G ւ~%2fc04m   ΡJJJ
+
+
+֭uVQiࠖ+*;1׮i݃iKHmKퟡB>.G8AHi_/͙3GRRrԩ  y@Pq{0&   Nӧ'O&UbX.!W7mgkm4&0o߾G6|mz:f۹cY%1Wnfȑ#GO.!!1m4ooR\  gcclֻ&նW^p{   pO<qss'9swbNF0qP_^v//ot*'$8K.=z8}ʒ̿e=b 6}ڤBP;PVZHxxDHKK{zz>}{  ggddCcr  LJJJ%%%MMMCBBԖ*DsՆcEϟҥ62dЍ6g-#7,#(?rJyyy[[ϟ  ?8WWW99cGGG׻	նQ  p			ӓ;wɓ'CQZ(Zq
+"),ʊ-VSg5`Ę![3Sܭ[^8,zɈ+WǏ1  $Ym5&bm   Eeeϟ<8m4		Yf8q"j!T蠖(5yP%Gw߿ҽ[[߳sr\ܩS'ֳg59M2}ËqV9goߎ^vݻwt:^(  3`'   ΤիW>}ÇS>Z'Y~7p@_Jy{ЇLPnϐMmRZj.io@o8غoy7nڪ7nժU	  lI&ۃ1   peee޽9sA}}}S>!nBݾ8d0-Ԛ;g9ji1&m]vsPo^^>%P;TVgϬGjժJM  'T\   8SN:TWWۈcA--<<<a[+i޴/J^tKս{VmX7{߂9_?J9~7i5RYPUU%3f?x  @>FFFTS^^^2annPpfm{   p)))gϞ]tLRT:.ole.y=:\D|(]m1O>=>4o_W<ph9ZӸk{!$)*MMMII
+OR=  ?p1an   N2555$$dٲe5:aGGDRAjjm۲w^1׷3OwV5k|ې/4%Kv	LF7Q?#?A  ex;666Tnnn=   8.,YDTTTII޽{#5[4𺏙Yߢ:SNFruڪ8-ٶiYM5C<,Om"j7  llll(KՕORR488Ã1   paaa+W\f͝;wrO5lm%Eߩ^ܳgՔ}KG[0ǓZgҮ]oEK7BX#_ý555No߾D  
+T$sss6nF`  ߼ybĈ[n%?Ej}Q׃oLOԔ8൬s^tF yǋ.3vl_@dj~iĲ)agΜ3gΐ!C===_xA  6j&2Opp0\T  iTWWEEE\eTTTnݺUl>t4h^[+]vݸaNi#w}xשgzz3	Be))'L}R8  6ay~F`  ݿTd&M|0zI큚ݺvjo7LL9r$܌i.-%7=߾v5|]gEz|KΜ9pB999---''آ"2  ݞAO.   Iuuuiiݻwwܩ",,ljjzf0{8_CHbY';CII;f%>jz6"@P+/ח/_.""cǎF
+L5  4'??q{ж   {}kkkyyy11E>}070*}PEpw5޽a_+M\\\b\F/6=k׮Oe_M?ppNʊjX='"##׬Y#---!!bŊWe  WWW0qqq̋㰓ܞ!C  iڵKYYoƌAAA)P;w<p@)ۆ\gשS[XX,1~om9'Ԧ*~իEDDƎkaaq\ _wxyy3j  hD%%%R1119zh#Aͩ/x\O}}m2[mu|Ձ~}4n]߶mխuYYYxM  /7|awL.  QԔzxxL6MAAa޼y'O"jP1$?]-;]Wn+jnrUЎ<{nmm/Y$00099z  7!..U_Ϥ$[Qm{   @JKK߿!CCC			<p@nfH5*P3yǷb8G-w?N訤$##dɒ_VTT  ۃ\   8ZݻwǏ#oCxR-G\Jz>m[LJ慐m񇙩VI~7Wu*OL:|СCg̘F		   n   h߿߿ѣI}ŋ	Bv:uڷwe%k^N5%*+;%www---R N45!!o  0jhԭƸ=  &Ucǎ͘1cԨQJJJNNN<&5CO;/^u\lTJyھUчWSSۻwǏЪ  ~!qqqCn1kۃ1   p ŗ}icccIIIuuu{{{R)B}jV<jd73PEy<,sɱaG;w7o^  _cuxç-|n   (jtܹe˖7Owu޽JZ uTe^ 垩))޽\  ˉ;:y3  TTTddd^ZVVVBBbÆZV7uHϝ;WXXxҤIo.((@.  帺rrr   4k׮񉉉^z(tMA
+!H);jժѣG
+
+ZYYݹs'77  }T&=   8PSSSqqqII˗GDDeC&Rr#%)H闕EJB  q{q1hÈ   vKKK)))111S{uC: \cڵҢK.KNN fx  @s{"##\  Өho߶QVV&%Kf^);"ACgݻyfRȘ  ~C1=  ɹ}UUU/_=uV=9;;kii.X̙3߿+   :4???MMMQu  @Ν;jjjBBBYi!AP˗/ǎ;w\?   ѮMlAOLRR5 s7a???e 
+cccGihhxȑׯ_WyAy%G<>l0--7o ,3  p͍=|6a2M  mOMMMqqG'N(,,<}t__߷oVCmvݪ'>>C[[nkŋ%%%( sV򚛛EUSSݞ`ժ AݵƎI*DChAP;7zzzd _YO<h(  nh0##J%nU$sxyy)K
+W Ɣ{3gΔx5$GUЎ|M?zYH{X:2  8aߓK_lllegg=s h{˗'բiӦyyy={0@d^8sҥKeee'N}۷oggg  t{xxxشϧ666/w Tk&!kIՕ%= $%%>|PTTTYYɓ'%A6B"3H=icccR)))Y[[_~>  aэnalkH8UMĘn ژoߞ8qb#FPTTq$7AP{Q5Pf˗}ʕ+iii( 6=Xܞ|؅+32sG2#xNtt45ܼkԺn&aõ 1?~={MܹS=P7}67}O5ݛ}=Y.]qޚ2t~r3C.]D>ޤ%%%,YVVV  8˗/2}n K{{=$88y~V7-w{.Tʌ.cz  O>.]ԏ׮]KjL%'a*y1̩{E?j椹n;DEY`w2=^X` ,4x3S\Z^#VOq^`XXի'ŋQ  '=?h:C^c$ňr3p{  `R]Ν;%}(;ۘu:۱M^Lok^s/Ϫ7/1BRgo"fs=?gVe=5W#W]XM~޼6҂}8V'?B>Ǐ/++kjjzԩ_b.  dߓV	rElHѽnO\\8^/F fE  6:QDDն***
+=~s=_=z&͖ќ,7W}pۓL`yK)94sv[LSN!r_wOR$:whOl4R1=k̚)&4y7iC&-j0CrکzU^rk...jjj"""s
+
+z]mm-w  dm###`v4b#Zk0Fõ 15iaa!'''++l2H=_I@Ey?ݱMWt޽wҹ7SNdҥ3"KǏ:|8s͂c]jށMj>p Y:b8>ìTf,
+:d~p꾚!wڙ,ի([?gvܠ'٩Ϙ1799;  p8MɅ^hƘ\0~ _Bmm/_.^rJѣG/\ٳi_/ "&*]Rúuoߞ*f6O\Le1\\ȚFe,歛G{]yJ
+|!gy0n"OُWג9hسz*uݻwS]Mht=	=]q޽[^[_j_z*hG<F>&N8|puuuGa   =a?iF3  hjjjrrr\zjiiiaaaCC#G~XQr5GY^<uX>89YxIߊ^1qgvkVK۝qo__ɪ[Ftk|r2dk˖*?ZIb,}VRbYJriF];6&GqW,L9T8tLQE+8Uɓǌٳ"   nO429-###= _E^^^LLĉǎkhhxׯ_הD۞D8o\\ݔG>^I.S5ݛjUSmԻċ$ϣxp?,ߟdf^sr\jݝ,x|qA{3'7'N/-G8F%GG;OYI~z.0Q^׌vDPjSE"GOOOXXX[[jSRR"   m4~K'AiwƮq# ~۷O4I\\|֬YGIII*GwН4DxxzP/	{?ں=ܽSAtldLד1}Ȧ˷&K|
+աl^/]CI1e``@,Rpb(Cy  In̤.Fcю`X~~~mi+m&5f#DsKrQHdj/%EBv h{tÇI9&""2cRzU5ꕿV4w4ԅk.U܌2L7/߾>ҪKa+"
+2}憏;ٌi~~$K촛ɉٖ9A߆ekH_7_^*r3%)i8#L2Ɲӡ&'((DTTt	;wA.   ,4';mgtܡjÈ]r *rssccc'O,!!1coow!n/s1\OWAM(ݹUԖ<}dCOu!rE$3wM}p۪^çemIw)l%s`dz5kh~YJ`@j\0Y2W"V#Js?Ν={TVVvܸqk֬rJZZZuu5
+s   4&J=9i2acc0!ksss???`T2͜#k]S,F _EMMMYYكHqϯJ>|H/:/Lrz}D^*C?&<5GWGJ.<<=oIxnq[j={v[i>!s槏lWT}ozdm5]D@?7js-X@HHHLL|r9  z=   ?EMMmԨQ'N{.TMa16ѣ+eOUzo=X~@4GVfCYM12O:uꤦ*xE9{Yjܾs89|#VR~din2S+)bثYruUЎf9sTLLLHHܹs(  40n   Ҹ8oo3f:ʮ]?~L+8:
+׳nj.<}{Oqumc	>LGk,r\d:Wv9iNnZp<5UNvuA/ iddKgL16spQe?zkQToݻP#p_לּsіbbbK,9qQ  `m   "99ԩS&MڱcKOm/ѣƌDO\7%^PRoڠ6ގyTםvSG\y<fa6ϯI?5ىyiԥUMT$ImR2ܶ:ylѩVgŊ:ZcG"3#X11:wTR$?|[[[O0ALLl!!!)))  nOK]8   )eee&&&&M{AQi4^B5j"$N[안B69|#nNĲNI?VLPM]Rb~ïI^_|"-8iԶ
+|ϙ5;`rm-ճ[`$1 ?G൶MVq^Ǐ&OL
+s:t(!!\(  4DTTT   B^޽411TRRڸqcdddIɚln^[K2իWWmYq[Q&AIo{]tƞ>ٱyؖlNveIoc8OJ5YTyX=N.Ns74%9?ǐWl؝;wܩ.&&/_h4     NYYׯ_O8xbIIIii+V#	UZTr3D9-SM6p&?۲۪RVIDGTAY:{RK\$_dUS83Vd1yny;8lEg4Ju;W1q=TGh:El$!	C'9vuc('OTUUEDDtuuܞ>}J0  r?  mA~+͛'(((..nnnR[*g[RQfˬWaOfgȐ~o__!xyY3JϙQ5rsw|3w"k thK|7Y2^h^bYZ>UMO~ۋ-7%}x΍99L'JN]v0捚_w`z*iO455Gs۷o  xWΎ y~7322/_.---**jbbrԩ*hG̶r\Sm6i>\c6r3[KXh(2Dv7f jхTaC8}vfeIENׯĝ4fċ$BU^?/-3Ņ[F'TRp箮BBB۷ow^aa!Z   A ~Hmm-=}9""bݺuRRR˖-MzǶmt1|^*у\[`vQ*1ҵk}{ݛe|9=lhQņ(g<h_XM;db)~fw7k$۳g7y
+W#WA~xqq###AAAEE;vܼy333a  4HٽKnAp{ RSSmii ++xbRH==mٰaпRΌL[-թ!	j;钽lҲݬ͢-lul2eiW"V37vy5z{~=k|xcܖ&ve*zy
+qg-[D(~6hm~DhREɱ=pBqmذ!&& V  &h =Cݞ,BUUU%ׯ_W̶I[VTٟjۣ,p8Y.
+R1"?S>oFo^n`_3v6e<8?3۷'e&K'VWFS'j9.EU˫_ŋ)))  ynO nLjkkӯ_yfR>}۷o+ixf@ޱ27S<ݻhS=ի[PtvxOڋ-JMw>angq4AetԥU?{#Rӟ&bMATUt̐'O.\PRRRNN,$$$995   =3.,,SVVܿNm&>	/ϑ<ΝٻǠ ˽yqJ=ybECsPo϶V491A9XC0n<ׯX֭09;bĮ];S!X!Dsh59<,,lɒ%BBBcǎ%>}B)  0 nAp{ ǒeeeeRuww m3KE>*ߊ^G<ɓNc(KRkw5iAiNqu-s<"t<	y<`a^n=;ݸ:StKKKyyyٳg~3  =ATWW<xUWWWXXXUUɓ'E̶*i^n\7y_}{$'ؗ識ʫavlj|ȶ%^eRԩ	ɜ<Hjdٜυcvĝ)$3̐zpۊmSmk!@e2YղJPZofVe^zu͚5222?r۷oP>  h6 = ={KCCC@@@[[{߾}>޶#>;8Sav(<IJE׽JutIs%ӿ8r<`-S{ޏXZqѕJo?Vmu腞$wN]8e{Y ꕪ:uV?sj)sroXBGׯޗzÔyDsr|
+97};o#FFG]MO}"5@dwN{zE'cbn8::N8>ǎ/..F  nzrAp2剉nnnZZZ:::Ci3	:dath3'	Y<c_﹇|uv>°^`p%slpaGcF\vكVQVi7uh}pOxؖ%WOٌB%YZp|Ckg]S^qg͊s6IfQgoݬMpiL2-#!>a[XR,DJ'Ѥ!e)yHCJ!R!,3  Vt{ =c)++=pٳ䴵_^sm{F%^9\^nb,hh2`@>!}I-6k.Tk+Mj*=g@!?F'PC=,1wnݾNař~wk#K˗hɥ<93ٹs޽goWT-
+nj~|r[weees=  *0 nX
+㽽gϞ-&&&--maaA^EkmX>?88p"ŉF5r/sfv˭*\2S\Ο3[i>AAo!쯡.0u;-^8oߞ|H:n[1N0p HЉ%{dk$+';rAxY.nK"%9L[s&+1zgW'N(,,iggwΝl   Zm@O. Τ˗ÇHJJ);FmjwYg+㋝40uѪǨ
+M0z[\ ˽!(/ޭ{g.Q-J6g$&t"Yui՗ȮYRx|5W7%1{JE9{OxݚI&}Evr%b5ٗ9-C%QښcLtO\6ގwcT\UOOO55+((رڵk8B  U@ PTT7sLaaayy5k֜?>33VH;.1{֬Y"""222+   cL.=KeeOdeeMMM&הcAPĄÇϚ5K\\|	7otRNNNUUb   նcrAp2>|pႩ̊+BBBr3CB*aS.]*))I    n 999!!!TyyySS3gΤ}PV7[Z烃/_ ++tҳgfee0  Vq{ 8wޝ;wBYYYQQ,000!!0BԲV=i_/_~ĉ
+
+
+.<v؋/Ir  Or{ж =!/[NIIIHHHGG͛7cxl!j*i9gϞ]pÇP  IDDD ndjkkRSS/]iӦcG]]ٳgAPKdrիwСj   ~ = ֦^~RLLL@@`ƌ{IYߵxr!j
+s-[TTTF<   ~*A oݺࠣ#++;m4cAP3zƍ[jhhP2NG   ?Ƙ\ =~{*J!J3AMU^rΝ:::H!Iѣ   ի; ӧj-%%Ef;w~AY I*=WWiӦD]]%%%555(r  \p{ 8ݻwO2r{vu-RkcAPU^r+444VUUݴiӥK(o-  6ѓ	nAp{ 璗ٳ{HJJ?>SIAP#:px򊋋˔)SԬ._ZYY  @AAO. N=z3mڴ^͛!xl!j*J%&&=zTSSo߾"""֭MNN.//G.   mIDDzrA ___555^^^III++.dTBľUO7ǎ[hߐ!CΝg<    n %%%5kںu.^HjjUp{ A>XBYYY^^Ǐ4e,  _8;NATUU%$$ڲeƏhffvԩĚZ"ӇR\B !)LHB
+   ~ۃ\NQQчN8tRyyy2(5R3aaaVRTT566MHH(((@
+  =hA|ԩS222?yd|||\דbDDfΜ[QQ  r= 8:͛ SSSyyyCQnOMA<1~07ҥKjjjww^FF
+U   +W774Cp4eee?>{uF_ZxO.A,zݼyF:uKLLL~~>   DFFRn@p,՟>}zGݿ===??OVCf>QI~Н;]]]#''{gdd~*  _zrA BeeeNNNTTEEEEDD=<<bcciBD`q^\\\$%%---o޼W]]  o'Ap{ 'Ch۶m7n̙3]]]޽[' Jywww5k)(lmm`   A ~7RSScbbL"--cǎ[nEfj}J_rwwח4iƍ#""  o N"??֭[SLUUUݱcǃϐZ^p
+NybbbJJJ)))t:(   =7$''͛ꂂ۷o \Ix`bb"&&&!!hѢSN%$$   n >,WVVuuuܯ]6,,,73v/qE'?7o<)))ii瓟			(?  mAp{  TUUZ۷=<<M/&&faaqҥа8VUtO"Μ9cbb2fAAAccc??8=   ~Oж = P<xP[[{ذa6l		IO	*A9ųgZZZJKK>\WWz   t=KmmmiiWݫ'!!1aR		SE1<i|%<<|ƍ&Mvvv+))A	  7w{z =)++{Y@@%KUUUW\j! 
+\[nmm5~ٳg{xxܽ{7??&  'Ap{ STT͛cǎ***ʚ_| QM׮]۴iӄ	dddf̘t޽Z   ڋۃ=Luu5NOHH8y+HNHH߿'q<~q	cƌ޵kիW+**P`  hGn@p8			AAA,;wCbcc+JՔAЪ`I~Ѝ7F%''aÆd  ^F`A JJJN8d)))aaa===WWآӈAЁ+?̝;w544,,,BCC~ZZZr  @s{Г =|ݹsHNZZOKKyTV<Q2I';yɳOJ Rٳd   Ў`=/ޠu)++˕+W,--I-OHHH__Ν;%':E'?cll,K&%%h4   ڣۃ\/ӧO	Z찰0KKKYYٙ3g޽9gBPׯ.]Dccc3))	o   '@ԾܞÇϟ??444++3AZ%''7mۦL2n8}}}ggׯ'u=#O8|'N0aɒ%qqqh   nAP=|ذa
+
+
+n2%TVVfddܸqښ]gkkK='*i%KMD&؋Z7w&gC%ìܘO1YbY~ZSԌ>_w61	6rCkI9cNU?yrξ:xDEEkEWW7   55N`  NBfڝS[[wE	:u*'';hۓvZii?SNNn۶m׮]{ɫW_x_^9gQw/MIY} l>}as~x\ٿ4tteQ3Ei&#u37jMҘM$&&||ݻD#$$dkkKH  Юw@N䪨 䞞***\\\"""[lcAIOOyMƌCUR[`ڵk;ύb,j6MʍF&qtR^3NO=zSfFu]w~Z|?0-Mꇩpͺ䕱aÆy)**Ջ<򒒒=*))Ay  ]sUjd?VD[(ʺ?3VƼYʲ-I]'S3gSFVY˼/:̉3%6f&C,0nuO)X{Xvǲ-y9ֽί:6t,cIfs{Eoe7=L9ͺ{XVW,˳Vvbs{VCR eNdd˗#"""C#D6;:::Cݻ듒PȃeeeO>ӧW>z1L~iҊI{o|lj'B#ۊ[]9І{dٜ,5jԀuFN:mܸ1##!  K[ܣH
+HIR3sW6ag̡bٖeeKt9X22/
+u\w[ezLd>yCIջw晌ԘG&,r]dI+|8,&\,6gc~CM^g0%c^ۘi{=2&d<)s _[!34c"j&cȑ#سg.]ɓ'(AS5k??42af)bR!M:V%hݽ];?gy5iY*///"";+Wq@   ֯_OMM	jK1늱&jXe>ڊ9e<0ɒxC+VY%qըٜy5a9v6{{b{ĩukM%MȒI=ּ{0=梁quoa ˭˜\o[뽇^Ǻg-	ey꽾׈9W,ے2_GۗKg?&+3e$B6ڵkΝĎ;Q΃&gիW_~֭ۘ/?fl-i\wlLҌS~_-Lٟ&̼tw~x?03C~x4a,"+V`xG   ۷o  m̙3kll<y;ͣP?	濳f<x0wBCCQ΃SYYxʕuu6r~C]~u;F`FJޓܤ<7tٜMM_FnTN6iew>'B-!{@   ׯ_'%%%_{梠'#" ҫB P@޼r"ǜD(3zZA285PMBۙ7o>|~˗/(x"yt&ʻh9իWbYB#Ց#vKRkE;Rfu</ž̪ޔ2fkoi^obMuѶhK?N8})W}SHԶpKۼ|$/ӆoqw+ٳG_|ܹsgϞv۷dǏJˡlmm_~oaFNVo_u73hobo߾  X{{{ϟ?7Ο?̙ׯ߽{w8~᰾}˗`wjs6rbv+v?[q,3W  ӧO>\[[t҅^z֭O;   鲿v+Wܼyɓ'߿ws    Nܻw߿u   ٝvww<   ,V9    NvVVV   ĴG   g    Iڤ=+S~?L+Pwii).x\[]]pP8ߦf8v;N,?7K%E(!ԪV	å^   ^mҞJvtK8533Q}Ew`z^k}*Fp8=   o>HNMj4I&JͤbzI¥ҞOHIQфWr<2
+eBەRڙB    ')TZYf*%ŜcܘĕVE9i$ۓ I;ŐBR(*:jWx   fs4&8jMM~01EU!i{fu EiAVL4(_Vu$    '/%9[j3{*42iaҞmV0Y{1Wu:%   `߷H`R6<;(= æ=&oT"˸   1sgsq=ͽ;Fe\   ?)n.t<iOsjvQe\   9rړb溓<O~{y<8.|`iOJ\\   :r3eMʣ h9><ugB'0Ougjg",wu   8a=)t:^o<p293XߏN6*NM2Ͷ}r'5ޓlyT^O   8I{&Y8HIe2LnU< (\4۲iOS+w-   J|Uı̬Cnb2ip>\M%CThb qS"˸    6ZLqne\    S}{<   qJӞiϬm    ӕF|f{    
+qӲqg|Ғ                                                                                                                                                                                                                                                                               ?x-
+endstream
+endobj
+9 0 obj
+60095
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 48
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x[WYizÜ93DIT6A@cnMh\YkUνU[49;\n}UR"Tk$N 5"e'LZ< 8\!`/Nwtt;{LF9#EerFFFnwS'ݎE`8uaOF#÷%vc~[ťWLvsW"3ރ"@ϼojx;4b{G1
+HˊB&s؞g[=tm&-g5-./gC㨧<(*|ܠcr;\s9'g=tt|RD"B~qjSH>_^^̄|8/_9_ﳅ.ׯNcNE:::l6ם5d44ECC`8(C1Lbr+gٮ#+JLzk'>O!&ɒ?,^CP&Ĉ"1U. xVO:͎a7d2P#F[߿w""CV\b@o&ʁ+)ǦRTO^(ZZZrݩTMSV.DBE:-~d2BW-3jVM>r}?G *Sju,4琤,5L熘0CF2FYj燩`<60\y|.l,uxdmmݻ!t!pDҚrr|3Q2$2L&G	HIwq)q`e<4k[E)mJƞcn.UnGMlo؀~ȍ#0?IewǄ].ՏWze19>_q9h ~No-ǛBlDGƿ&Yp0N-Y͜	ڂA@rM;"!{b.Rw#+rH >2 '+QT!Zgx +Kʱ#wN+ńlunk.5UkQYߛ	Tc1s܏g2q1VĠɈaj!g$ɏNҼʜQ޹+_,k uBHTaXӵۯ&r]4xg2̑,SXq+E;ǝR#/v;;i`*&@A-pXHtZ7VGB̠6jce(^W̺w	f]zӴj~`1[M_lzt:;;౻&H*Hď:W NՕzMӪ bNHrje[pg
+Tk˷#[F!<n$N~ kA/BףYϰySupG=%Y
+^H[k0M]p*a1ՄNX_Y9=џ<ewX.O<]W#0FS՟>y<amq2fi$7!^[	lKfG?@NE=Dm&F2N8Qټgd5YC%hy^f6"Th4~7Z_Em Hxc5%Fnɩd"F.m4m4m[֤8(y-^lN|~~\5X V/'j{7NkQi3X<( v {FKjPG@-N^U"xfM͕:LKu ٩ica:SNo{%y?hx:!
+D\ZN)y%EKudÔ?U1o}}}^.A>2T(<]llĺ8zvӥXn:!ɿQMb~*9YL<O+yy n=%YN)k $~sOe7ߩ֨WƇ~x{s꠭"a)0f.SúNll;fmDZA{;5I#*-|9{??-\ܠ2hlc>LXѠR.%w	Q-J\^!<9\+Z}
+2l@_=)/*BT+B)%dz-<収<cr|懶xʀWJ}rL] =#qu^4@R@qwv E'7552-ny8o]ZZX
+|slAwj\z~=jL
+L,3Cx=Vا?9v{zJ]X|1K&T(ֶ_w ll2YFm{ӧzw<|w:ٽgarDb8W% yxxd2&\ȚGP,|w5ɩ
+endstream
+endobj
+12 0 obj
+2610
+endobj
+13 0 obj
+endobj
+14 0 obj
+2610
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+2610
+endobj
+17 0 obj
+<<
+/Title (fr-full-frequency-reuse-scheme)
+/CreationDate (D:20140609013142)
+/ModDate (D:20140609013142)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000310 00000 n 
+0000000398 00000 n 
+0000000416 00000 n 
+0000000454 00000 n 
+0000000475 00000 n 
+0000060753 00000 n 
+0000060774 00000 n 
+0000060801 00000 n 
+0000063552 00000 n 
+0000063573 00000 n 
+0000063589 00000 n 
+0000063610 00000 n 
+0000063632 00000 n 
+0000063653 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+63851
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png ns-3.21/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png
--- ns-3.20/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,162 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F 	IDATxw|SnI٤@+EٴP[Jw뺭'"Eq1[6(+Yh({ti8e+M^?x44=dY      *J      M{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x%    Bv}ǎK,߿CCC	 x     -iӦ۷Ņ3 b0   ^`Ml6[~~-[*++) x     -o߾͛7!T*JZfeY2 i{    ¯FVGEEڵkʕ4 "   l6۲e-Z5M׮]%IZ|]N'% B   9,<x0+++??~~~*{=zؾ}%KV+U B   9.ܵkd=zZBL4)  `۷ow8
+ <q   &֮_~ŊjzڴiBYzM&bYjUQQ A   IeѢEO1bĉ$IԽ{	&[Ni <q   &m۶h4N:h4T?]AH0f̘C9sf555555T <    hJ>}~#Ft:Y,˲,IR\\_/֭+	 {    4s7tVt%IRr??cGEEz    @juPPP3KD so	    #   :=    @K)Ɏ;  E   u x,      B   eVNNί	 OF   pawtb0 x2   #}= &    >dBI FC	    a0jMMMMOO7L&f&)11 #   |HNNjUX,%++fsi4Qb G   F{yjj.g%塻 <q   C̙kj! OT    Z {    _dXfb41;6   -%555''uBdt @@   ŒZLgKw 	   t%IIIٶm[vvvRRRfѻ{}     >$33SʍMFu'#   |hTZx4 @@   f&Bdee5] <q   CjUj-NS0 <q   Ciiiiii|rrrI p=   3g2szzzxxxZZ"333..ΕLf& x>   lWX,Ţܒpuv6AC	    $>f9''l6+CdJLLltuve #   |l6J|(1   !iiiӧOl~E1 <q   sRSS/ qC x2   dddHD    !Fq۶mHNNVnoU#2     h4,Xa轔 p   4b0CS)k    QV5+++'''''}h4Q$ d=   oX,vјȹ!%eYb^ \=   i8/dRR;z\t '#   |bQ0gna㢤< #   |jMKK3͉%ru8 x2Ry   dgg/X@YKzxxxRRRzz9N	    -JIKKKHHh>a |   |2Cl6geeeeeY,l6gnx%${    :`4Yݝ2k    (ٜLL    -Jrd2)ûY]= {    ~Krrrbw5 '#   |QRWwS5'#   |HrrrJJJbbbR{     >$%%E"333''jd4쇕     l6ƥ>B䌌{$I <q   CVkRRjUh2VlV,՚N <q   CӕgΜ9)))]<%---+++'''+++99    %3gٳ2,PX}= &    >b	Rl֐< {    *͌UJE x2   (7]eWz     >h4
+!jMOOwm֐Ȳl Ɉ{    L͓㺱!]JC    e6srrFc6]#RRRx. d=   1ӧOWZX,Rh    -J4(rdJNNnjz     d2L4C_ x>j   RJk$I '   ~
+뮥CKcn h{    /g6\o)222u/  x2s   ^.55UzFcbb'555U3     l6+c̙m6 ʺ}:N OF   x3"\^Xw$I OF   x2L&!b    ~-w,= {      
+q   ҤoIIOOot?ʽ    @Ks'P   L9s\]{$Ir: <q   ͬM <    s233Қo    F,KVVbX,FcrrrkfZsrrGe0RRRx    hY啬Vkzzz)͟󥦦fff
+!{_D   u$IX֤$,0&h4
+!fsNN΅&lO(    h4SRR ̕$''gdd׷gϞ<*ٜ
+V+L   ՚eZf`HLLZ			:<Vzz,X=sY,eddL&^){    NKsL9sdgg/XjS1sifӥ8,X` `.    DDw'Q2椤$Fj*^VVֶm~Çwˁ   @KzZ2jeO
+Z(:[VW\\4FG"   R0.EKTŒH<_SL'##fdd({PVL'"   
+-IOOOJJLIIiՌ0|ʲ&^CcXXBs1w   Rzyy299Y	L&#2d2)O{    JFvlNid{    ¹{VL&勬ٳgM{    %&&՚¸Gh4*af    -嚻D%=X,Ԗl4eee1%3{    ȲLc0,XTOzzzffb&%%EIp233SSS1QpYִ4x     FnINNȠ>`0ddd!Dfff\\\ZZZVVVNNNNNg|)))On6VkNNNZZZxxxSu0w   r溰דLTeVzzz3줤$՚EB   \(WRY,,a-To.%t1&ɵԗٜ9sVnideVi^)߮y   BK.˟|{Li%)))//b{    #   :f!v8gj +    +{!    @K-[lҤI2   r:B _#I $}   ]?/ĮRIT <q   Vs:[          h)ׄf-v    @KR d=    ZG$ OF   \!]  D   \$1w x2    Cw x8    -E mq   a$ x8    F x2    - #   R?/x. h=    Zi F   Hy M    R?wH OF   \= '#   R mq   a$ x8    -t:) x>    -`. h{    ke.J    @KzH|     hs#   R6   @K ่{    ke.s'#   RNS0 <q   _?T߮)   " OF   u$Ib< x2    Fw x2    C    @~Ź ߮)   r84 '#   RJS= {           x    -LCk x8      B    G    mq        #I x2    C    @1} x2    F x2    Fw x2    -ES 	=    Z <q   RpI`. m,Nw   @k(6p?~|qqqFQyS&   RJCkzŊZBB)SFoe=     i5kرcڴiz֧L   T*BeshCt:݈#dYꫯ6l駟ٳ'99yĉ^{    Tpp !$O4)>>~ٲe.\bEnnNڷo_/{=    ZRpȹ/]Oԯ,I_׍,+AN^`F-]rߕ@u5"۹;,ߣPy~tms]?aeT*U:4zqa\{lxzmXzu:*6\jɵ/_ױޣr=z/1Wjzr#t?,=?NܟWSkg:?_:o֨zS~.4<7Zզ6PXdIWcnw/
+
+ڵkכo=bĈ￿s$M    Z￿+?ht}0]5ܷ̂UUU檫zǆVht    h`PRRݧ8	p,a;f\;oCk3DѰf6h]=w4qƊz}}޽fAo3K3?Q4qխU[DPMk	6ڲ!tp(?]Vכ: sE~Ãc^/Awgr?tX#tMݷ^}؍5ke_Z@jx7|$_z',[V͔fW"nŽ{իk*q    _!IRddNѣG^s65D1ME$=á#!zרx@Z>F<܇n5z蕼Uk#_(פkspZv}*Kj4s=R0#pyp8FFzǌr4zW^y8N%Nr?{\M(k%耾zJaT/8uSSs?뽈>zi>vj^65u6ʿΝ+(((//Bc:{ޮ   Ο?_PPRjkk^8M2S/h41i#~qzs4ThsMQhaJcw5U\m{~pm-|&i5#=zM"Z-R37_ZtjհFtSOk45S_l7nܸvڣGʲܧO#F3&!!!$$k'     ^fYffjȐ!&L?~|^2     xիWϟ?֭6-..nȑ_~q     Z,>}z7o5jԸqb0     YQQѺu=ڧO!CDDDx͂M!     L嚚ө>Q      x%      &=      ^           x          Znرcɒ%?~|hh(5 D   ?o|7{5j5 `.    -R]]`˗>|x͕ <q   ٷoߢEjjjvի<(2 OC   ~Wh4Z622r׮]+W <q   _`ٖ-[hѢ ^Vu&Iwt:) x    ͑eYYY$cK,ZT	 <
+q   ,\p׮]&iԨQFO4)  `۷ow8
+ <q   &֮_~ŊjzڴizRnh4Ǐ7LeժUEEE
+ <q   &Y,E>}zĈ'NBȲRw>a??u)>     Фm۶ƩSFeuIcƌ:t3g_SSSSSC h(   1bNS~X$e믿^ѭ[7׷  :    MܹM7ݤju:BeYoرQQQzr    $ZTFIG x-     
+q   r5 <q   C)srr~NdY& OF   pawTR%3 ై{    c6]+s <q   CfϞ-HKK̤ X   !`0Xtd2nf2	#     >$''j*_[,Œp9s4p1 <q   Ci6   !s;a!v pL   uz    "b6-)A#   |bIMMq>1szz"99h46    !%!!8WCJٳ~C {    d=)))۶mήAJJl67zwR h{    )htQvƦ    FQLw 	=   oif!DVVV3ߥ    ժ,Ր[\=> Ɉ{    ,HKKKKK擓LԐ.Wè. d=   3g2szzzxxxZZ"333..ΕL&    lWX,Ţܒpuv <    >EI|fsNNlVtɔ.NS0 <q   CfhT @`.   O>=33 mq   sRSS/ a h{    ZK>Q x8   ٳgo۶-///###99YT {    _d4SRR,XP\\0l O\   O3)))`0b㚻 d=   ZYYY999999Fhl排$ '#   |bq<dDMe\ Ɉ{    p^ɤ<w( p=   X,a-Ly\\sPI d=   /Ziiif911199`0$ 'c!v   dgg/X@YKzxxxRRRzz)J#˲Jť x.ޣ   ߒQ\\>`fr`.{ 1   QBٜeXflB̞=] pM   `0_\]u8 x2{    e6srrvя餀 ై{    ߢ;-M&2ٙ <q   CrrroINNnZJ#I '#   |QRwʬ= OF   䔔֦<
+L ]tOZ2&]{_\x^NsϞ=aaaں  KIIQɱZ999d2Ft{  >W_}WyBBI'de$	I{r-N۸(SRe3%Nrckz۳ĳ=x@/}.\Y!RI?"|vکRYYͧ~ؾ}ɓzΝ;s ܙTոGTS d={e/<^OI=)e_˞~XozvNS$ ZIIIVUobbdZfY	Vkvvvwwu0U3 x2ޣWWW5dȐ&_yd=MWOnk'Nzϟ. .Xzz̙38;;{Μ9۶mSdee5zwa sfJ xg>ݻw(۲aլ2thOOi?Fk^|nѣ 8s̙={v[Fq=ko  ^nӦMSL2eG=[)/+&F;+$9}? /X,m憔o)5A { RUU5o޼/_ÚP)RW~ճ>;s}Q eͯޒ <q%?ԓ.;v{binUUo?^Vfo~3Eߞuo۽Zccbv{WZZJY 7)7ݦfqGk x?% 4Ñc2ꪛs˝7]ϯ;e]P/1dx鮍?qJDKʔzj֬Y;v` 5FQwVkzzk6h_!ClXerg^mI}6ȩSeWOnWcg:jرTRWn0d_zB+bԈ;n9s|PRRBY w(Sdff&%%)+nljHç  h[vݻo=zt\eCO
+y,u>5nWe~ZV?̗N!/v>|Se~VP	zO?=k֬-[Q )))&IzRRRPh OF999#Fߞ~扁'_K!hka΅_)oM[
+d.0Pi՞:Uwݴ7='O&~}gqy!4i+l֬Y|A38  `v9%''}69sddd4 }J xw}޺}o1::s־dَYT\j[_aQvPEW*$ 租!	~ч]|QoܛڛBOU=9dnwʊ+}фVKe fY	z\7LfQ(A, hGyG=s=NU;wǶӮY_xnjru[z?X}GQ]V~љ#j6E	B9g{~N;:|Ӻ3cƌ/_}hh( f2L&ٳ[u/%! `.~g~^xfNHGnR=;z* @=6ѡmBH!v>V!!~#Nfү%I"*Jcͯ3~Ae  Ma< x2=S..ܲ6ﾺg?_x{Ηk]L}={gh>RSUUcNFG[K*9r~J}q) x՚ӧq]| 1NsÆǎ~i?y͝RYYثJ*Bi<vxӅWNNh!UUU;ejS:ւ-Dk{rȘ]xƲeK/T hfsRRR)222u[ |?d2=a;Ǎ	yreYujaqjyՕN6O>eaaazj2%!v;oKW/s{^+--, v*YhLLLt-˕z=> #,8p஻ׯ_UŮ+fK;vShh@eS~'	;}VNJvpfA$,2^/?p<[dI= @{Pߴ?xڴi+W\ hflB̙3'///;;;;;{۶mAs!$IQ  OFl6ʕ+bbJJʝ3=)B>AYBB={9b["/|3:J߯/c'Ŝ=/p4"""wVKD[yiHǇ~_.((, ж(;r= @@AdY>w?^z}w=i]uALBqA;v敕;^s붼3g.$,*R-p:l7IJrUW?w>R,;vt?
+
+QoZVVִiVXt2_ 1\.&IaX.l> Ɉ{ߝͽۯYI}Bᇳ!]ji]BQxF;TDGǎ2>c㡔;QZr٬#?㯾jqq1e6Da  xJ ~vŋM&SJJۛLaz@RFxoEjXB؈KbeY*jGŧ4ӯQ[+{ߥAg)_~UW]n:j t2w x2wQZZꫯL\mkV$_zq/qݴwyNKgBWӞr鲝BnPk<{p}r7JG	~yﾗ_~6 hҤoIIOOofow x $]:yĈc~\{/=}e	ΜW8.^su*v1'W}'Oή, k= <# ߆fox㍎#̘~}Ʌ ΚբΈpBDh "i\7{lʔ)3fҥ Oc2̙sjt #~SNXxk/<]VҲcΞc.h/@Y<Gt/6.^j?<aN   ƁuYM6⒀bYoيɗ!h֝?nڻw)jiz1nLo=K/+<y Rz KSϟح^?j9ydي5,ѧFDj1]M:;;+4 q= OFwЊGΞ=d2Zwnxw_]9_ ُM<zM[Yx_3ʰ6{F>?/@ xB$ ' Euuuk׮=z78nt<P >:ju.avS:ZBG||ܺ~S.[  <m@s?7|󢡽{=nFcĭ7))9WxTYѴZ1jDؼ{799955[nT  s @@wyni̘1*qd㚻?|wYjZk^|Qǐ;ޞʴ	4>ؿo70j ^-- ~st lʕ$I>5~ԥõZ$ݒe[SЯyŷ4dؾ8|qL&t%B>|^Z~ۧO* m,b%++bX,׍F199{Z999<k0ڽptrܹy-X`hB<DiycFT.I{jQEeRXG^zIGIMM<y2v@&I=^j7{VVVjjjw{zzL&/ζjkkfsFFƊ+}o	*Oq(l1%Gl=uLRDF4s{]~w٣G  OaZfd2F!liUKob(Y`YYYfb$%%4>lovPύ{ǃȲ((.++eYv:j=$ic%;EP6'"BC^RSS.,,, @[`.z322ܓٳg)11qΜ9J$={ӳVkVVVJJ
+/(cǎedd=tU8_8uuN;rv޼^.&'GF iu4ipG]wy}x* m/JHHP0F1%%uϔd=)))L&S[gB4CNʕ+L2}CTg}K	ݺz<S]TTTgsտ_g{\Q)vȯBmJjy^<wYΝ[SSCe kXVl0VkfffBB%c)9s^fyh	{ϟ't#b-gSΔ;.^xa05ZkLOUUP^ĶL
+z?c܏6mz <sL&%8QVΦ)''GhRRRZ>lNJJRh4VjMKKڶmh pM	:3-\ŧ"i*DYYe^acC(ի¢#:9STPhD^ *R}^{ujnnw=o޼" Lƥh]M&=|ue^gj0򊋋tfsk{V\;UNk׮?YTTӓ^y)9_jjv}~S'O/WMFbZ5"SgY̙iӦSvU8Nץk{u뿲,&hz4~tV=zSc4ܸ}vLmngc@R
++++tҥK~?+i]V+pڄLJ_OFFFbbrcFFFNNbvNOOX,B&{[Ν/Tg}vM5*zn
+
+"CKg?yd%a킆&8[0n4q\6o3ZKozy睈UQ0yi~ޱUܨR\_ohEc)UKjh$̙3uuu_LKK#~U[(deeY,?e]'~EM&S4e|tWߐ`hC"߿H&;^/IBtv80[Yy޽v6eVO5YVWyzgΜ9٧FoWt$/-V+K侽J֭ 漯r֬YݺuJA7)))\{edRrF7pu&Vkjj7ϒ /Cozꕐdɒ7^2g\W?|ڢ⚈?8[g/?th-kj .<C8e͙3~BuR4V]}<ayW	&{ӦMСA9ox칎LNNV>L&n
+K]2333336}t%c={6 ^(:::!!aʕw^qh6|S/pV]?qPQYiymK9}QGڴZyֿ<Ν;J[RRZ-_4OF?9;oΝ;oPOd4&o+L&EVVV%&&6f|JQrr2b@K^r%G^dɖ-[&ݱSⶥQQQӥstuSeu:Mph~y!!EݍԪ*:?w~,rJJʓ/ұ$IзÏۦN:vnݺ	/h0Vk˧XV7LJdZ`xCŋQ]͐6VSUe1s^c/֛GMVùΝ)PmWd?7t:O<z+uRr}'O~衇8ZoyJjcXRSS[ƋLlZ)00pƍk׮ݺuN&mKaQuE-0Om{8K##Cp>>gSK\{݇|7z߽j*Doܼᱠ믿ڹs7'%%QO$8Z
+ʃBU$rddd޽ׯ_Ⴧw7ی"#W=gJ9q߿#=kw~E#,mIE?*++g̘³;VT_7bs}?.+?gΜP79BHTa`ܥa3UCFFFRR2+++K	bL랒llZgϞm4fsNNNff~\fj%(x'If͚z}uh:nJJju	ӞZrP}ES௺s[fo-u|$gW-ZSN_]2^؃d~̙3cbbމ'2+ϲϡO3999d2p`&)///55UJeeeeeeǽèA4,44tܸq[nݰih6|AuHHom~I+ie0ܓv{F!n]")竩6?3f̓Oܖ8Bhq]b/Ei={YfM8QRr]=,Œe6TaG2335\/dr2Lsq𖦎.yr8/M&/3vS'r[tW/>7Jm~/njEiYM,Kg*N{;sϫ,˷vO\ʬw)=}PnK\>k@o-KUO]vsϕW^ҥKozӴ4ŒG1T&fjcǎ޽{aa၃tS>wُwe=B!Z,~d=oϾ_ʫƾk
+\Sk?V{EE˫~l.(Lbc~≴;>䓉'Ν;ch5 G/?x/3ty*S|_#$ؿuچpљk3fRgBy~w%_UTTqŤR9V#;Ur]7ng6ϻ;m|!P3yBշd2+gΜZ* p=sK.$22rΝrKkk0UUqq;tRUWUՔQ"f#ͳgϦ|)hhIkci75֒VYn$qcƂ
+G.>uբXr:=iLeּoĦM9ss}=L  xIXXX%I8|BC4<tidx bq JvyǮ|믽ؘJpv<4kgFW-uٗBYNYH
+o|!4z℁~w'q9ndW}4is=˱4t_Z5n 7|Bxxx||ܻw?x4??Uwc^_R-sUTȟ}qk\v_[O~Sm>~}%$b݆m%<\sdDBTDGiNv>coߵJotOT.0s=z>{n*!IΜ9SQQSOiZ	 ~^ VO3fWZsγ:wi4k Ss[oϏ_ȃڷ,*׭?50鈥ySѱ߮=?n>sx*p8~~z!J66%[Wңqc뭗%v	vE<oG^t{h̙NIIIHHP[+0P	?w"\ ޝ+BCC/v?nqswmw|7>3?_M[6^g~IG!B**Tɍj-	!CZNuW8**ʖw8qc:;W\oa=EY.+_kǯz7y7nc0  fW۷gϞK.=v%DQ㭌Óʕ&M'Ǫ
+d?='zҖWH^ܶêǍn_^شI[v]gUjI<}d]tW|GS3nޚԡ/XֱcǙ3g^K. ǄsA1 <q|Vٳ_ܱc=uxs/nz<݊Gy䡃8xrE=Ξ+/VՆ{U*v.ZѳGHhhVIk$|AAm]\\{NRȈ>ٗ^z_e˖٘>̕ '#tz߿c}{|!meyn۟GGGK>ѫ]t?_+>VQIΨHBI CBVdVnxn
+m!ЃNQUEh/gRRSO=ue}T>K$: OFV֭[]vmQTQ!3h-Y%y躛ؼyW^˿5K ?:B?_.	!AܾeǶT*!DD߱+EEUztqPByW^y|p9*{ې. g"o	8pf[CZ=?~G=<)k4N	tzYq444HQ*CV
+UTT^}m}~^KxxFj-s%QRZ#I"0fn^r/&OGߡ;42 x8bܹa֯_?4$&]` +֍??a=_tx)TV
+m4útc_:
+!Μ-MgJ/}}w[ve+8Q`|ŤpfW<?ɬܮ]Ξ={M\pتh4vSYe!	!**lz׍r޽ʪQB:ghhVu8NBjAU⧯vu5W\l߿^_1c{Iq GٿK/tڵw͐~{.\b[LAaOqJkI굇zMQ#.kmQqUnܸlgJm?zdf=,Yw~XșNTڄ+w**w닟TUUM<gܿB8 $	!U!*$VZsvw-G˄Si9s[AJBJDJ<˦%_~_7Gqz mPaÆܹرc{SQVp:9y;O.#uzF)WW9rP^jrEE$;vϷ
+!F=%'kyﶙ4j)Dkp0w8rڿq?=/:UTڅQ7tߵKd"wj-/>,˕iSE"?+"9N\m
+cb%$ItX%ٴ\<o޼nW^{G#/4hPׯ_f͚Mz)+Ͻ_{-^|~rzۨTj!Dn'N.k0]"FS9\p.jLkЀʍV5ƏoP,CX
+NyAݻGoǋ<lS9ҧO~pƍx ^}Xֿ__=wgƏy빳EvO/홳Ҳ;_>!.&:nWtΆ}ycJ˜NKU[NÇ6j+^{}eRR҄	naÆT̖/D x2"Zݾ}c>|xݺPnOlW;ń+oyI"]~~Ku/ڹZ|b8c]'WI{(7.XC;ܩEnլv0Zu۱%KTҥ;vul9ksǇ^gSN}*!)٣æ͇6_WH0gwDUT8NJ%6[UtdT`!Dy0<pOΞ'NTٛԯw/:bVΙ3g;v̙]twPzz Y|TPPРAzYQQa6Q_6M̓[~"kw^eՂ;⎩r8˳giRV\44ү%IzwԊ%jnwn!	kHЄ.Z^ǖmwݟco=d=nĥۏ?_׋Ym\ 3S,d!Z-tjOn~zipHmuǎ3dP,?ZT*iTu7VEOϘ1o3 <q|_NnRmU5Hcǋ!Nf`UPP++`/#W[Ҫt:)~N.Y_qYb&xɾE;.$NnWrBݣ{b$W;W`wJOq=:2]ueZ'=kfg84/_;O9[t
+V)v)$S8}zR_g\?,ݽ{)S|755y!v| 1+88K.ٱcǖ-[_V#8H{
+Y?dha1zD^V-B@}֗;~锅ʌλBNqVݷL1rܘxnw~N!Q=\t[!ڪ UPxÃ^{iW@SOC7󶱋ّ8[h:F.+GGjj梵vGtBbtuuwvkFv?u|:^xn/\QS  KuaРA{ݾ}ҜA7\[LӸ6oBZ֑O)mzAZ뻒$.,ݣ.MQ]]3jd[o5jl$NIw>yT^9(HK]>pV?CݷKGG]-|cҲzc0Ceص$'NB'	I}:wBh4G?$NKڙGqZ_x^{mƌAAAm= )|YHHE]}ׯ_~A~~~Z.pըsq6钭ێɲ|nO<~/-v\67$oe}\4/Yb%auU[wfYTT55:߁fXK-9=:lذGZp1bɷPk4F~ټ_Zc%ײQUmϼhԈ;|^޳xʫȘ1cƵ^{Wwm> ɘ>Md2EFF:uj戚Zfi\ddИQ=u55?w9URR~WSc?Wp4fi.RiV	!81UTTX;^~8oڋ$:+4>SB{tk<K2qϰvؔg^kCyĉyiW۴ZiiB;5We~_Q[ݺĄ[TV՚J%4jԈ\s4ۺ=hʂ_<+s@@w|w@߿޽׮]z1ӶGLz`iO6wzΫٟ|GB$:[YY;k%)_ܥOv%-Ǌ{aqʃn6[seyIG}MQ%ձO\uhScCGкI.[TҠYQvswSϭ\"'&&|DkeY?AM?a5vަ!=8szg? 8AkIco\V7>yڙ3gvQVSx2 /u)|\```޽M&ӡC߿4믵8iDddrl5?p%ΗI$r@.2"ç^300\&]+/_3jD>g郇ziH.uxx{\;eNL묪jr˒z5uiD6[]hU}YRoepWTvѣGGDڬ1M+VkenSQa1Tv,$fd1yu<?o>}z\\s9у ml>Lnܹ_߳gȑ#yة#>=яeY?uognڴiO<>o2,|W՝:UrB8k*v{:z#gϞ=GC<ʒ%K@ݓ'<H2 ~?>3 juM&^_z*Y7Yx=)6n*o^|Du!n?qĎ垩f&:,<|ԩ:%%eÆuuu󧜿 { !IRXXXBBB~jl>jx"O,|͚5#GW\jk7nh9qHeK֒rexqѐƬ_7x]O <q 2dbYcXvAx|[oxUh4\kIVۿ$Iwm6{axoU/FFF>c7tӷ~k٨t  GˠRׯO>eҥv;16y嚢fdּ|pKc{d p8h5W}oW[e^#Lk犿?a{z)SdeeUU1s@۸¥"((gϞ})..^.K9?)㏗^zifߞ|4]4|H]./w	֞;_4oEŵN'mm@/vް湱c>s\s͂hm0  E`5jT|||QQΝ;
+kkk9Ffyg?UUUv[;)'T>)Վ:%B&_1yPTEEU6CѾ]yzwL{8L?CI סC͛7TecNLe{guGg>TY5Ç~IkXU]iѓ
+*j)QY}_7xƍ't
+s#GXXd
+///X,gְDڨ"G+cΝÇO?rH1>TrQ%%=#v۲@^9;5M0m7n\3O?`)Sˣ2}T*T oה pбcGEEڵk`1v|8S|=~-FUlGjU{+/)/nz`	Iz7<vڵko֗_~СCT7 d=@}ڵjݺu娍!UUwK^3탹skG}QVH'>M[q8!Ꚛ[n<p!Wmm뒯^`^LٰaE]cٳr~G  kذa{aKhMv2<.=g]3x377wȑoא+.O_Q[c+VҰ:h4ґuu$p:ǌv}snkvw@ hDxxkkk7mڴk@x6C޽{r^y3!ĬY>mj5,tFądYDD?a]ܗ_.))/,fq./VˣW~H]]=lڴnUo,} @Cz]v۷o=x>rp=ҳϽh:u3:4@akeY^ᐟv{v˖\Sm.&$'*|sރc>p۵^ۿzjȐ!穚Y < ^?wd23//l65QxSsۿQyQTW*Nr68ynꊾw^ܥs-k(Wh>sޭ[o֬Y/...80uD5 s(А$I~~~]vϟ?^F@B
+"mO_nvzⱋ;V2ל:Uhnب55]*ˈ55
+ɓgLQʹZGϸ71|{瞋JII;vlXXAkOt hTSNԩSnn-[
+kZ\w|wK;tϿ|Bd=h߭JQEGǪTQV4G:tRy9پ]O|Çϙ3ksY;Y ై{=T=z'$$drt=rmS}S"Bt:}w'Z~8/񯫳:*e%zlL3×|ꫯN:_?y>  x,% hbccؽ{wZ[RZg:?SMش'rzsNw=͉c*t:VYFl5ʁ"k{9t:k֪^a#(T%`{거?<u3kW^9<LCk x,% VۧOn޼9  ` ?tNI!HBv)FIHBYڃkNM٠Ol;uuC6P֧jm+{z*sŚ4z(yE_۱s'L&Cuy*Pί*WZZWSS%drTFEAy Mǎz]m?}k`k3oW]qܹ-\ꫯ6mZ=4N h+4ф<O>ٷoݻxCY|\W8Y}
+#~U/>F7h)|*cS_@ACjfox]]SϘ1cnRJe{dTTHP."\=.bs_ԩ}lC>ug<U&q0n^LJ5swy_;n޽{SԣabY. YJ 4s~޼y,xaaa=-S\^7ϱ[Ng;qݨlpF@Sz}c6*ʽ\s=z4]?Nڛ+}^F_NWzSR4VVoٲe555$ݻwŪIc+%n4y\ixx^'	!Y!;vtpCxL̙2ѽ{}Z,VSS= @C}wK,t=UWF$,j+mƪ==et7/C,w_umܸ166s1:W̰&Uۜ[0 "Gcuu;vhtbu޿tIi5EMT]>~xeeedddҥY Ç/[Sշvk:)I>iΖmcfǬqBsy/z{K$	$1aQ~Irrr>G4Tɲ,2[AAy1\S	!t:qoaO{sn߾:N㳜N***zݡCj,o.  x>p\wu7]?SS*թQQW_}=xNt_rlȈ ꧷n;rn۾_rOWP1%RmǏ?w۵kg0>fx  F!ӧWXp³gN8{L*1*چɏ|z?|ݺuNmU*W[*-,s8ΐg9Wأ{U?:/Xi>~$I.)?~j2$""YKG x.o&##j	xncZ*~V4)>[no.W^uYac^]m)jkBJ5ê:6RhEs	sdY.)U>}.<<<,,,**,9l( x%%*))Yd<8zINOe&Hw˽\Vħ쎩EP'N8w""Х!8(pTB)رsm{wi~xN|Ne񓎍7$&&v}mGD! 8/l+VOw=f̘瞽:a*6oϼh0Νyf!DUՌlBS{tyq::_g)jv{]pv	62yRvfΫq/_еkט.]h4%q4 @rىf[z80`zk%mX)h4֭[KJJlfZMqPgWd}n<ۻÕWEη:D:zhYYY=ZE  ӑϚ5n.7"W>hǜ^3g4:^Pt&k󏝍PBjooqe}DT>rGF,Yr|Mmz6V;t)bxUt4tmٲO>پ}{~>:A*RɆ<[o:twީ{T\`y
+T;eg{V}/#-ȈbkyM}c_ZbQŵuzWqTVk^^^MMMϞ=cbb~" hCg4u:?exuNY?7vu$IAe3oN{wm6o<m=| **"$IXX67]Qn3lVELn;p\UU߹beюХKH*< ښ+Vk			SL9rdTTw;UVV8p 33={IrH0˫N2L{pܹ}fq^**#N{ouU;BK*QPX^SV!:߯**0FIJ󫫫۵kOe  ^FFGGY&77wǎӦMի>ex}-Zh>UPࠒkjSǪU>裊G8oF>: ʬ/wu8q*2R'ֶkբMU:P=_ rejϞ=ǎ3111AT*5j h+t:݈#dYꫯ6l駟ٳ'99yĉJ:gݹs/_3LJ
+:-D%ŁO:VoժU.yh6?}){}r1=Tb
+
+D}BJ1⣣YWU*
+``	v4/88XQ m$I&M_lWXS[s/q/h4z)wT+Nh4i4UV}7y蚋:tZz||,<ˉ;{NTOUˍWLA+G,$8rH``AvEBC=|~}j)u(˲t:Fm+%])o_W#Ry =Z?N6;wVFRիC7_?۹}lxzmXzu:*6\jɵ/_ױK)~nLktF'+FGY׽5WwZ߅FK,i{ͷ?N:]~AAAvz7Gqwٛ> Awȑ|AAA]w};ƞTOS|#yVoYtiEEŽxyR^>p=ӡ}_9pkl%esBDtuG:{^˲ܮ] &/Bؿ~u*t.Մ,`!\i,niWa,~u'Y^-뎮-]޷\r:4u	?;fwI+b׍?0/h*AjqK/_etT\M G~7<m|sqTM%;~7cg:|y8^q}U,ahَ;sԩ{lȐ!jsORcǎ}׋-*,,+{\5cPtU.>tVZjUUUUU^cT+;wnڴQGJR#gaCTPqϱ]ssׯSNʇp檪S]*2Xi/$Q՘ 6wyױ^X
+߫}מv14\GYԫC|}~]Zװ6͵}S?Q4qKI䆯6%,PMk	{~bVKц+]^]{T/{Ti[w<7|֫a_FrͿPHjPUnzmDz%r/^ܻw^z{?,--?󫫫'MtC;w8Sa3tP_lڴIVⶫ/Qf*n]W;ϸWUQ?|iiidddΝcccz\s6[Ƈ ]vF'U$Ir8>Ν+(((//Bc:kF܃t-Y/8qoTt MRyUj/ܰaCuuuMM괫BCH|YP6Qn#Ň㋔CEEEwܙwzڻwJ
+
+
+Rw!X\b!s〳ތ!vG\onF;}OitЍSkS(wCiPZتw6M5KmFK_oB(mMLJv9ZRf6nj_&j)߂Vl6:wOiw$_f~k~4\l7nܸvڂY/#F3&!!V9sf͚5G+nڥC5jM]کy={gϞ3gμȈjZy܏6ZSNwqǸqbcc [l5k,_l6WUU2d	ǏիW``=_{?~ƍ~i^^dJKK7NwP!Y"#?㼼wyfy_jpC57 "R]wT}	Izٹsg  ^lߺuf9r_>p@! Gܸq[o7|QՎ<wC͛7OocFN!$Ν;W]]ݾ} x+YO>=͛7Ǝ5jܸqC1^<iq<TEEŚ5k.\y^z#/
+9Le_)&Mk)sݻwܹsmOuu:iG:thΝcbbFÙ! I5}CgȐ!^zS"rMM͚5k>k^3B08oc쩛զ{ywKJ^=*5'^UvFSz}@@@llF! xI&9N^A 6m֭߸qc׮]_z+&hBK^:efȈ/x'[9{-ITę7v7o^MM_׻gV>7eq+4'O+..6z
+
+2  /&IO=ejjjOu]Ǐ{*EJogߣ
+5f큛g;_J|_%8>|xMM?ew3y͔%Yu-,,=>9'  *++<'䄆yM.$жKXL.,<8ֿ4_R}Ma,]1!BKz{QŨ.+ITZ/,,ܷo_iiiǎY  C܃?n߽{/^7k֬)WwtTNQCz}O?;yaFQ[+*uuReϡdY[ZB5዆?]_xnVhZ4yBN^ꪪG_QJU{)--5]tEI  Y*gϞ>ɓ''g_{e冰I2|ئ#{TV#-éu/Ҧ%?}vq@=H8xm{ń1Ѻ.O=ȑucKW5ԩS;s4"j@já}ƍO8ѩSѣG3<<  m' ?WT'O6uP\u=?)-xj~><F!mrM%74~xsLJOqiO}zqAvJ$IumҘ3AAw}7o5}VK>@Z͙3g;vԩSXX R[[{ԩy-ZfM0a̤.g]~+s!N)~4o?p-!p:2QsfSISZ|Ϝ>:)RS&{[_ܑRÝN[3loUT,m6[IɌGWQd;q:eéRIj5|$IEڣGj4;2%-:;vXdIǏO {s8gϞ]p_~YXXt-W?ϣ8UT~:66jABBJ|5+	eu~r䈮]:IBښZZ-^XKwߖrv1*VzKے姧\#أsعY~z|?[;vo}J':Y$IRdܫ,-ޓ`W^ѿghJBTT|:oˁ0ibxFe\8|錎e:Ǐ7޽{GFF5 "ĉV7oӧ'O:(Oeʭ\|-;uPaTܙ3&/\W'H'ZV;]D)&|}>{cp3*W=Q]:Ǎ'п><PpTٳ\*sÔ?s\hѣENYpʲ^<p@~}_o$IudW$
+?a}aaB[nHoق[K=}lZ)GFխkNjY%I>+N>uֻwo???ABuu/_^WWw͛7L@* ?9sfڵ|ɱc.G}tZmrA}pgBpݥjCfGN~=*IB,9jߣ	L%3nx>{]}$I\se<ͺ3\NvLbȇ/]'Z͇hDGIDR}ǎ{kkocF$>M[~;vZ%U554Րw̔lcz$:o3_ȵSTJ%M_֪UkrǏ5e{Ϝ)+*B(I!hń!Sīg9_/(((//h4ݺu`־}-ZTTT$˲V]zq'y i{;wŋ?C^Ke~QU6w$P/z{>]iڧ6vjYyGڈpIr몫ŒǜN8~;Sߞ>wtԡz[{tZ~~~Ko!\jswκT>ѣ~awyq>ew/(s{8+PU.n8CdD((8|}n;v݌"/Ŷ76m3B\41=\sƼ}tj^@㦣B!`zkmu?pv˳:r2}Fwؽ{ٳg\,s+,,ꫯ<4EFFڵkʕAAA <
+q~3Nb_|ž}s%Ua!Nٱ##BmΪ]=peBl\qĮB8λ_:EE9gq;,6!E	19oӨ릏zEtvhBM
+egQ:1sxPPg}o߾<p~+U*'͕/0r!D>;feńhj%peᐫj+*k:Mpd~by'תTNjr/<st/ꪌjZ;ud@nw=ES˲P?Zy={OСso=.TYVվ}@{h1ͶlٲE!v{n<|K/K.p 2~%%%˖-^{\9xXH!ilS	!v<~uB8Y?&BՉ]Ξ+$>$$NWQQѥA[[%!D!Yʄܿ_K9׵ބ/_o{ O~c,+Qȹ*4p@|uk\5$i4MMc՝=Wv4(Rx$rZG-2bΓu8~
+Ə4\67Xqgm_}8q:Vө5UddW+S_bTU~^?!UT'O,--5ݻw2h{%Iѣۗ,YbZ xZ+VxgϞ]ZZ3ϼNI'ZmSB:iNYj4@!s}KY=_ݾ}^w:BVt$ѿoJBPFc9Z($g||gYOb%Io!(%%d2UTT|/t6 REEee6!p-.ϯ31;j.}eEs.yeKܷ~P[j;|b_!ġs[WVֶh4*EF|v!BϿئXs.#Ν;WYY2a?Z`v2LFh4$o~ҤIׯ߾}P 9xdÆlҥ<0ʰT悝8Q(!\raauTyVl=(P[gw8NIj!B I%)+wb+4 $2"("<,7U:vB+3$I
+
+(zUZ}W``5k˒{>n# &vC%UBpC֑,sIIN)cj[}==MStwmP8.Ccǋt^嚫ƂU&\'(H+^	؅KӒY?[WW=hׯXBVO6s?hƏaÆ۷Zjє <qZMeͶ~E<cO>%YϯrD$I?!DUԩPV!**5A?_IrxxW_=p D!jJY_S^^QPP,DZ]Rl$I؅t"OSVoܸqٲe6ۍIcBCl	VWIԷO셅 o[Վv1!3n8]DJټJ;rݣǎǛlߵTv;svڳta-\)EEG
+v1!,WW)CwVTW?{wuTUWwn;j -v`l'ر"3s&s3	d23޹3	dL<(,  !Ujvkk{(hC	Zyӥo9۷z}\\r&C{{-[mР4=[?~|ƍah  7>p?vXttwݧǴ҆ƙkZEH4ϋAN04! OϠ)e@P( !$ҪK)eYJZ58yJhSׅ6k]{Ve4~h4=zԩS xY^D'/KhT@Q$^Ce<L~~ENvc-'?=׏]Y.RO>2G6/LL h4</76;~{q	!$ggM	,˷b3$,_<::UWWl{fדOBNiӦ'O;wfÆʃh4 qL`mm[ou1V/Q.A3m(07ES$˄IC>]<oٶoor^u	ȲDEyIifuF0$	
+x9I1XO3F{;w.|_|Y%Jg)C,74ٗ=!$kP)8v[ju)ɖۧz}ʅK-|x5--RIv֬NΊw\h>uΝABM/Jt\h>WXWcXv7y^<vvSǣ>[kKI'׃ti[[[IMM0j:4EQʀ/!$--s =pw>***T*SO=VRTv4δ_P<	!$&FVUyhբ14!hTN{tO7i4LLh9%	dYNJDý4u+;D4M<xٳ>bѳ֤7~,\('kmPAT  Ǳnw|U;^x'jZe5JE|zW^^A>qN]υK-˗%+SŚؚ}R˵g5,^0帧F灃5ʀƾ<e|L yo߾ʲltttll,0z`RRR^yej5!DP?]8ۼysFFFttFAs 	=0/_\^^oJ/?ټUę9L4T|o6RO_f	!D6/I(B6eT^5LUU7DEBHsKмy*%2	!IIV9LqnRV?˗/nŔhh1WTu˒/Ⱥ5řr#\?yN[:ZWK|RO,B/ǜNؚBhz;O{bkNVf><{-At:OlߖRatUqfr0I*&h4   xΝ?p߾}~駟~MKZXNG̈́(BHK[(zzjŅò?۱LiZwV
+"+˪Aj
+ٴa1#2noO5	!MnY!|Pu(Jް1`(++kiio~C+_bJ|G9`
+=}ȭsϝoSWLeX &>>@T׬JsB`,4Ūh2>0h	!+R7o\λ._iё6/RxQ_<{e80#X?Ҋx
+>f,~t:NI333M&.  <=0 o{rY;h@iٺ%e$رnM!䱍=ٳq+!ja\B$[qW}-&Dcg^vY?|yt=!2Ekj(\e-_a[nݻ7|拯̟oC)Zonۿ?prkEͿz~h廢ij~zܤk;~^E/ԣ# Qt4hFxA;^<y~[\ղ|&}W;OߴqAByH3^/=qf'!$2RKWHE`258ttt\xVatᾏ12}d  '[)I~ӟꫯy~oWXZk}$.]jiB-{5^e!,+ŷ542.%yI#̴F#Bnbw~gʄNO~VBp'N]KIML,p_XIVݫ<UTTtڵRmA2:,A'A2ƾ
+ew޽n[2JE,`KfNv<ϋC_0rT[6_k;^^A1/V+A< )===!:::&&0-07 @8|Wի?6oܠ׹8Lz1;+KCC!D͊RNeD+/eΨESM~0tM(_1}2co^5ueBZWggϦK"12Do_;::~_?vSgʭEJ>LўV;<s{;\@aYf_zmVvtߏfs:M}-`P=lYNUU}9dgZL]Ur&y)>P>wMٷ)|vIjE_  wzI>Q-Kjj*q,%5Fk  -tQQQܸq#++oo6wq̃g6I_]7g&_Wo\-I"Dӫh&̰Ni9:Wx8(";:!/nVV`:H?)^xk׮;>ŏ8>Sa0h^\^\='Μmhma錌ج̸Hrv.]n=vvjuoˡi_gYfN޾8S^q'=^krY}kB,grxsliCBؚz鉾>OyͭYK'swju)Sg5zAA4ܑe"RZZ%`v&U-&iűV+  ,MEq```rrr~[嶘8M/<ߜY	Zfy_?9/T_di44ǩohnbhGP~7<	sD{0mcھz_ϟAuN@L&_:~wXQ?E[dett<2ŢE9	qV{N7:5/T	EEtlڰ@6C57ouJNPy}z̍7nvf,jٻeTt[tKU*<+ H?dk76ֈ^z厎Jehew   =3gμ曗/_^xw3fc#rdooyIH?Wݸ]$ꁚMmm/gV:-ܒmq+Կ?^Y|L/E|TDDh积Ku_Vsvws3T*ZdBǱц˒dYخ]o?}qkH%CK02o?ӱZumKu:I̷91!B%Ew{!i"[r^0((5; I<F'(9rb(@tzYdYf'  A"GMgg'~__~=33gy4Nr/Ų7?V<T%c4|+ԑ_ӆOoYH (,|r+'?'/+ L>g=vZ^zWOSz)A%I7&j5qx)I0(|AAFWFV3Ja-/(2CfYa&5lI@YׂC>ɲ,L+++isܓO>iiF}ڿ׾T*? Gt~TxN<:t(!!?-$KH'dϿ}W뗿/-PNf?
+hůBY!DK$)O(i>=onv6d=0s"-]/``8xɓ'U*üc(~h4P{V3jdg(jʝ)kCQǫhmmj񉉉( C#  ?=R%7e*.M[s^905bF9ݛ^x.0Ì'
+t~(?ԩS`P3.f$4M:;;N ǩj4O򂂂) 9=sЍ7~;v,!!g-z.3!K"	w	_ӭC08<G9U*E޾5m~Y<	ڷPR}e/yV/`ȲLtqYwwdJLLTT0bϏz! @8C3g|>err>i*Y#16Ӵ4okГCDȷ\j\N72h4)<H&c㛭,U<x970PShBQǣ=uԍ7,YFp8v}jD  aq$buu^x.ͩ::j1dOHsK _R捶Kֶ9zǗGA80(;"""w+|c}*& $Ita޼yz84(vYRRk.BHqq>]IypV	 )nw=|ٶmۗT0B<Lv7hhZjo.Aa(5ز-1%7_x쬅Z ^,SӔֶ7>>~hX,tرnYc'Tԃp pg7n_YYIQT~~~e/lruh9I)ǅW>-9)z;w
+̦O<8
+.l`IVWYJ۷o7zWVd.𰬈&.EqN5DEE%%%WQQt:F/{1<  MeAjjj*++_<=j{#ŗ'׮;Gꓓ3he٢[,;466Ovl<`Z<0njkk(*111%%Ee̿MrȞrFz 0+ ~SS|psm^?`"ۯ2)Is71.o2EQYv|mJo~"ÈH,4-v.F(")sBٽ{}~ .g%Q8{544}{+uQ14$+T]*?~~p}VK79ɄVpV{5|ÛoYSSSQQRhzsRA "UřLY4Bu gihh8}аp¿~jdƝGJwv/8p9(BLL/OsG,[M͞@^.տbz巿;wy>qq0uDDkjj!999++8㩯w8d$W~@ ,wuu۷WUggUl+"LNuQ(~?zC}|zRƳDrrB˗_jw޳g~ᇃ=Q~4H}>s__Mӱf9::ZewQQQzd%%%"6	 @8,|wwc?=z433oold#;8[=Q'Hbn/!}51o|k=7_1m/~a3gΔ׫}RA Lǫv\`ARRRBB(*&T)ٹsߢ `Vkll<s̻{֭yG?z	klTEIhGY[[OdTt_V쬄><0fLF,&Eh4_eYٳO|>߫h0T*|A=^Uwwh4999FQѠq`%).....v:(..޵kJQB 0'Lɲt:O>;\x166GZzU#N~ɨ(@ҥY>r29ve@b<݅FӲA|Ht:]EEEMM[o%I/=kMJp &OIS`pѢE*h4'VZZJٳgOqq1!dx.2Sx?$ {{,^ԩS;{l}[vFzE}2Gjvœ۶-IKڵV,7[yUΞ={@  I|eKtp`R$q\}}})))			$dٔgL  t:_gϞC͛7j{B[֡q 
+=\Y>h?b+~K}3Hhp',%FG]tݟ+Rܘ?ds{{{N8Nӡq`s	~[VV& <xk;)%[F#	E91j@li~v7y`\
+d?/|Iά[ުj,Zhbq:%%%cĬJYļc YqC&˲9{O:qK/Kicz}xp7~gj5iu{bWV;n|рњa0njl08_[5iy4$֡!julllzz:iڵtH|***B4ץK  ➇ippq޽iz?%7UƁ	w.I[m&K`봦o}W^ihh	D(fU˛#j4~o |鵵+4QH @Q 0`~ݻ()))))Qf.--ͿN|  !y8իW:TQQ144rg}vŲnw<IB
+-kWlٜzU[Weg&./{A/|FŃս{-.sӠ`$^`(B466jZVEx,Kyy/ɥBHAA޽{ g{4A]o߾7|vo߾ڔq4L!$~BHdM4GEY~yghh%=0TyZ~w_xM $V׫j######z=&$>p(#7[,^PP'4v
+|  M}:t)77_	}6s?yk0p <^3+W[a=0TL8pƍ>tE[0fMnl[QYWW|JJJbbbTTp8l6LL|! 3j4 <oۿY1ajEHW !d޼@A('O{}b<O^04$k9J#f7~k-޽{\RYY)2Ͽ@i !>zppb4.\h41pL`׮]EEEEEE51Yљ  !Y >|jkk׾mh74j.`*$Isf!7oV޸ѬVhsCÇO75]YDh0{%'4yYׯWUU	g8O9]E2%+fddp{`2vq 0g}߿a;wܲɜۂoG@Ss'M[[EQQGG]dIo~U?6BHsΝEh4RL0:T_|7Ϟ={QY^YVFǹ,]sbagQclb/gM\[x8^ӛ2z[5vo	8ssŔU,+W*]V[[+bGLlϞ=J֣|Oh$  GN}}}ee/ˋ/l/|{a-!B}x<I6m||P#V1%YRyM%7\<zo޼y񦦦JZ#z@4{٧v%3x'ۓY$_xs%	zp?Ï1?wG$DK{:bF/3Ŏme=O[[[MM(v}ٲe~Џ&bvܹs{}&  =sSSSӱcxK.~v--zA^['v٤"hRPyNOOomm|k9ٍ$t:}>_wwyM7' 
+6|`oĴL=ő$>E1300f3z`l6[qqqqq,++8Ν;w'#2F g{阘ɤQ<ϱ,%Io@V^_Tw׿BѠY([</SнicNܼLMnC51cbb֬Ycu:EQ$W1"dB1o'N& &-L@C&]Q2A0u7eF/ckYxk o1[x8g-$J%Z헿夤$|bX,bbXJKKWL0T3  G˲$r'I04݂Ɓ'߯iGMsYQ$F58u{$Q}*&t0Kɲ,ÇO?^g7o^ddL&垞8fFM&n
+g5Co[lu=0
+zfl>	!( s{$IQGA0MVm*2/Ɏ>f,˒Dy]$*ftv	A(jj+W8q"Y //`0J `C)m6[QQQQQnW @@3͔qzVE%Qc_tzSll珉7
+
+6dR-\744 m0#"̌DBȅ͏?Rf`PWƛ<(Uo߾j*Ʉ ;veەg1I [5:XUՄnq&2Z/H#BȖMMM8	!ZGdj9*!^GQԕ+/edYDۉ~С挌۷X W~X,wﮫ޹s @L3IǥFGGJEܯ~ϕ6/Zc!q_g'!DzQ&V-/p-m	G9rD'|rʕh t:wڵk׮L,4N: 3|FOwҴ$IA
+	!`<=(RlY~[\TwmK3SIV3qĘ:l"˲s q޼yO?t~~~\\F {U"رjj&ڃ\  aN	*h4*_~,R<!5#4c=@xAZJ11ouVLZ@cMHGwcÇ755͛7o˖-k֬IKKmd RTTgϞ~%QqUTTڵ+===//o'4B3j g8ufEy<ZV}}}}}}%IƆ"rCCM	Oi/>}VSkQμgͭii	NIBΟy, >g}o֍7RRRm۶e˖Xd=  3A}Fp8vUVV6S\  y/EeN.V]__Zm itko,+t,e,--~_!NYBB/0h@Sﯬdf˖-֭l 0,f`PQ pzi0>`0l6zFe%p?hFާѰJ_/</bt56F?w.Yt]z{piqAXshؘUPPiӦteC  	pn{Pw	 L?^O|	Yܧ`PKN&&0|KB(Jzvu̚?jmbP78kڿ_UUh,((غukff&z  fnM0)rN3[ 0g	%I(J$eYZ>0e޾>'!KݖV>%eU	dY&&&`דeN9**ɕiEBۃQWj"eիWo޼yz  fBaaaEEG
+
+
+&	3s 3=OA0,|>I2e>A^ix?eULü$I4MM6KL#7.jV0cIyͅ+˗oڴ)--Mբ}  fREQ( g{$I8aT*r냦9yy9Y	 ղ$kuOiYU*F??痳2ZJIB.7qBx	7<޽{)z'
+v.<  `
+
+4 9=ӏ8h\.˲<,j/~OncQѨ+_$I[ʥ]?o}OV0ͳB::z~q@_SxGgϞ+Wܶmի8  3XtVTTX,nٔ=  aqeY$e͛zeYyh}^A²4~ο;@+W%nS(KGGoW7A3By6Ǐ'x_lYTT `9;vK	}!EEE{u=  fO~ (4-&I0u47jā7ܐ2wq<!N#)η?9|#%5r_E3B|N:ٙaÆիWGEEv1 Ls:`Νš^||Pcf 0ǲ,!aQ}>Zeϖ,+7`
+mV/;MSCDQ%uj5genIJiܑIeBG[+**ZZZ,XiӦ+V}  Iٽ{wqq*]vUTTQ Po2DQTEqǲ$#)ؘ#Mo+oDE	!qF38蒉HQʿߟErV?qڑxPo}oٲe (++#޽{Ν#zll{*c}d=  aqcFLQT &I?LYoi6Q{$._z 	!$6Vo0h].VS3_zR[t&IQzO<y5TXXcz Q__O<+eєE  aEQYccc-K (*k(
+0E.oW@Rb!}/x-?uT*LVsZcO?~۶m_`VE  <H>A.=z  TL(Ԭ*u:Mjt}~_~/_t0k=^_`s-&>.9ђP2X*|˗-˶m>.\P7  B}*&َa 0DL;Q9$IR<?88(N)kk2oސ|
+i?a:g&JL0$'B״bx(sb+++j5k󳲲Ї l]vt 
+|  0iJ%B__J$LS!֭6Z=yZ[ߞocF,fг	`-G$GB
+$Q^lw߭bYvɒ%֭[`^gM )C󔖖]QQQzp.] HfFR&FZrdYrFtEAe޺5ыitbIE	![ϙ`fjԸԐ'R8|0EQ6mںun@  <eee"//f)<#ëXkL {MӒ$YVJ%˲N~A^fh"W$g[R˲dB;{hFxdY9rҥK,=Syyyh bT#&RhBQj|  駌vjudd ,,+4A	!yzj5;VLnC\m]ܙ3竪AXfMAAAvv6 NI|%QEEEڃ YqiZE٬8===zVLpς33訉αDQ"}%ꎮ=p-,,\~}ll, vnOP31>  C5O?,Zʲq\GOLT[?:5.GB[=^3Pw?*o;|pSSSJJJAAʕ+YE    4TL?<EQ<t:A:;;EQyNDp:Dikt:=!Q_;tPkk׬YlٲX[  2zh*.2x$	w1 Rdj$ABeY?v !85>!GZ*++o߾SO_fi44 p8
+Co)٣~(B L?ehZhTa~AgKuZ}+'VδZ>GmooOMM}Ƿoߞq !ڱc]WFhޱcfZ{  '20CCCzQT<k>LI7f^-q\̙3111ׯ߰aCRR p(}ϰ)++B܃ 0EQʐ=p'BWWW?qh `nr{,;s)Nvڍ7.Z`0q  .g$\&b qόPղ,L@ 'IF5  0H?Ւ$-[DDD/ @]c	!=  :s͈`0H$IF龾>i|520h9޹sZʕ+׬Ya48  bx>A Z-` W1,jAe@a<t裪*AVZO/]4&&7~ ?!(I  af$IfYt:^ϲus `p5ȑ#E^zׯOJJ" fvEKII+< @8C33J>²JbYVI|T*x vL<wNcU.]999EB( {^ڵkG `|.dZMQ0E\`0(Y)
+ߎ 0Fw8r,YaÆ+V$&&4n$  ݾ{)<gh۹~H6^t:GL 7wtf AQ,ZeY|=Υ'EP
+ $Q]tGdgg]699YV  MAAFe ƣNgIIɘ]|%%%cڵkΝS1{frHiZEZV<ϫT*IRTA4 Ryŉ3337oޜ D;1NpB,KQQnWhGEEKruH]pBJJJ,Ν;	qόiZRT*qMӂ 0HeYfb9RYYҒTXXc͟?_ף   fPSTTg%^Q<`zDBQXX"!➙BӴhj$kA :uĜ:ӥJNN޴iӖ-[rrrZ- Q3˼<fي1J+))Q={^Y,H;wڵkĀ> 0ԜAʐ=]`P fYzO<h6W\nݺTd=  ;s9NaX
+
+
+Ngiii^^%@Rl4 xOX֒0  q2EjA{{{A $z*{si45klڴiҥV  cRf+//߻wĬ,4Uqq>\S:U)#l6Ţх3JH> Ƅg,F$YC#G\pAK>cYYY&a4 #%T3[v=,L~ue\giX9״(+++,,Tf= @0S~Jx<jh4B<˲Aruv JV.9eYAZZMƚzQ53b`0"[QQUUq˗/_x1z  MJ7.t:Q1+Lm*--U
+SPP<gϞibvp8땔bXvޭK 0&=3E4c2T* `r1fI%i	EQ}{޻l>Ԓ](mQ/|l͍w'˲c9qFUQroʕO=TnnnBB 53ezb1ʤv}DAPqq]iٖ2Gk s➙9$8Fl6	qzVq\Ʀ~QT*Z$*m"ZU?/՚l}[񟧻RSdB=$z/BDhu)ogeRJLSEGliQX?j>1#ղ,/_|ƍ˗/B  <e\މ,))	)..!)v f{nH	KKKwaX&Qgp'N#ZͲEs׷>N]K-:Nޞ!sY35rfZƴ	=nB1q&ӧ;=C%hXkKj{݄tʵ>ӫMbZ6)1byEx+5G9Ξ=rrsslْ QFӓH5[ORRe5|.vRڵk )(*3sBX$i```hhtǲ~4Q[]x\lixA$I(eiQ	!$<8iJbVGQdzͩqX,fE^--e?M	ϝoVAIL/ONH0Oa;D	(a(XٷK/ڿ5I
+א.z'Oظqڵk  <>=6E(O)++nw\gۋKJJBC hx)<\<˲xx$IJ2FE	#oswe<qa6kgeEZ|Aop9xI䤈(Gj!Yq˖&EEBCΊ[`2rz,\g!j5pALbB̉,Irw[]CC~BH0(6x~Wv!./AW[]yѣG,XaÆ˗Ĩ  0(ӨO~eeyPFe= wdt1q,>ohhHy^V{Dab`oA?!$.ִ('>;+>;+.##69b2r2x$Mܦ˒U*zkPMAT*žXF
+tn:_$˲-^0/g\h[u:1%9+ J==+WNz}`'rSs>N_su|eeeGGf۴i͛ӕީ  \條;w*C,رcϞ=w]^l>|	 A3ShiX\a歮7ߪ68	!.[+/JJ8$J!$ҪOIJl_ҋveXp孚q#(]d6i4r_mjJ9 l)x,#m^/~}75XǱ8l(iꚢs̙6Ͷuu-X`0  |lIIIEEEyy93)!BTTT(L&F%%%eee>➙V 0H$Il$V
+q'9v!%|fefą2>9!P35А`~/MSqKM(Q:~T̸8S뙖,ˑV}T~SO.r4j$\lbѡ3&z)>>~ʕk֬A  bݻw/Ⱦ0wmϞ=ȥeeev]	}$(4f2zܹsfSfL/--ݻwg1 Pn;%RvӽL o3HRe6U* (BNg|yx^t\h_[ɳm{<$Iv|]==n/(RjƠǛLMm~|㙳HTAO;we̳Ǜ{(JkThN	DT|93#6&ƈ9L֎熎9r-պiӦM6L&  3C57HsQQn߱cZ2;v9Β	X,J<TVVL/e${bƋ:4z*IĲ,!i4Q0yh|NO8um|E_5?ΐe}>r;DQR~Ӫ.ylr$N|x^8|6/Ҿ<%¬|w{!6[$Q;s#霫jrө,^gync<W=|͛7ҥKW^`^ BtʬzFm]aG(PiiiEEnbvaSAAAuue,Tc1d )$zj,CCCN'ǡYM?3'OJE=g57}tNmp|#=`P4#7;-˲V._<?=zx7;CԹKRgjZtAn,Ʀ>Bȥ͋3{EgO}?eټM6-Y$66i4  FQ~ϷeXv9£'k`F$G 0yf
+M>Oʲ,IRxA$JT4-{~vPō@@Pr[#IB?C7{{݄hCre~ztdyJ[[}L}Vf\Rb>uBHLq=5&%׮+/K4L`
+'xȭ_q؉;$B$lɘgN
+!wĩ/Brsslb###  x\  ➙"FEQGDDtttHVj5!YC[{E%Yqo}s-~>Oڟ[(iE/_ցKOB^kkk>(!sA(Z4)';^W BFeQeYiJ	ϋ>1pĝ7ެ:wQeXګ+7_A*tj_pv͛7/[,>>^  J{  .f
+0**22b,RXy~hh$T<.f(Jj5ҋU+J0(9̏ڗ~+k3ƆQy	>YifYW|\!jխZ9/))b_W=@1˗%''[<;,NVmם`sKx}4Mۢ2{fiZ9IT^xhŋy_tO>zxaD  0Ŕk0 LU܌^MI~jEN',B<`>ƛUuy+hȱcJtlysy'#/SQyofFR;4uXVfܒŉ](	zou	!,^0zfJԉu	yBIBNL0?L׿n~z45ܸ3j׻hѢ쨨( 	LK] i{fqU*u:!D@ xN'D4:<?Pg7,z:;+nXPk񫳷j!ӣ3#B1vC*>mDBܩ<r²(cCmkwtZ8a~zVNy\[*|qy"&%'YpIL<wz\ecǎuwwoذaڵJ6  0)D&1;  <DM0sAj(fax<&AzoU]KINؗ7(ݸ[ՕGj	!JyQ'E&.]ipy	!Vbb@GBG/M2mvhmcS?!$%ٚ$).4j$2K%1=w(Ϟkԯ]mÄ\sϐ;V#GTVVvww^:==]բ}  `bEuttB~?@ |y
+ e=J
+>O(s}2o%hGk!F#liR}&>ωuGV
+d,Rnu{	!E(29eRy+n<MSrⳳzuho	!Yqf;NQբ+x,sdjήݷt;.ܩk[ZjD=skum}ѣGO8jժUVz4  L^˝[* b40{f ,^nw *^`l M`hmi*&ڰ`~trhzIz.]i&ϕ II|\~2>NT<%1өߏrgVa~tRB3!$"Bdq¼HeT4e6k>	h	nX?k~bnA<gU?b1<>ÝŇ+VTT477'''oذ`ѢEF    0g ),,t:NSjϴZWBdYƩ3'N!2(*"Blyn^r!*m(ǮåظXZk6>"zpFli٤i*j[yKs"z{h4MՋahe-E慷t75|9 !$^|p455EFFnڴiӦM7L8 ɟ*?  !)edh4$jaAp4mT<WAiJdImiQSDƾQm[q|"4M2iJQK]0U5j"DDh&ۢOwn:sA%er338N
+@E/]4DL1)a%:#:z;w,˚5k{\ٌu  I  -=3yzVuݒ$T(i4 r[{eI)7ŚDQrLO΋[^BȂ_~mu>h$TLL!T#R;u=D˲IV\N]A6.I5\EQ _{[iCJ5*~ H+̙37nt+Vظqczz:z  `g
+  !oAQj((>J%K4AE/(GaYӰmCC5tNwss0(T5'&DLam׮w;q²LĬ8]{yNSE.^L5suӱq$Aqg=AT-'N_|e٬uFGG4<  7Jg.̒ p?$IRF8N)?y\E?,˘LA9J  ||{KjGE<@0(NT麋Z	!Qy		fҕ'!zھ,ٖ3Czzott!f611".*DY)=qFUYYy9/^i&ݞ  rkꓩf  L!Ax^eA h4ey$eƟ㛦`haI\.]iz)XI= EQ$:{<,{fkO_ΊSwBw!	˖&GEf',7outC7A"$'[&%'[0H&I!XYYy5.]R    p?DQ4jl6澾>dYjc?h0t-ihO?qǖdhTɊ2v&$ɢ()++)49Tr.u:AeYeMQDGtĩ;ͳX9[s.FeAxB"Ky}pC156nXi!4Q++?8uv}ӦMǡ  `_1h g19j`yt:(D 2hC$ɽ}7r-q&EǪefq_z'*ʰ('dxh=k4U  Ȳ2ѡ_n!>?65nm`YfyАN`~LĨH/\lrb2q˖&%&FYnwq㢜բ78"O56_8sqypOhT[2_\18~f?`;w.kѢE[lYbEBB  8 s{f2'W iZQv	!~^mDFJI._bG(Jޣo߼Օb0kYޚG۷,ʉj?-$99ْnSףLXWyVVgvZZ.ǅ=M<9bwz*ʲ0t󣇏30;p d,ΊDh}݁E				fQ#IrouVWnPb}򉜗^SpjCO:utY&--  tA @8C3߂n[әL~Y%Fuσa4rkViFڷR"Ir{sjFiJdDQ>BHeK.	_#˲ҢmQB~qG`Pq珨O_X49!<|'O+aВŉӣ7xze'z*EIM}>>4N^m"'1#sV7NXUUӓaÆk&&&" '  s{fV 8N$B4%2KQhLj!Z^;џXtK'>Lm9gXWNn,ݪ-+IMO޼iO.1Nw;:۶5ke^%BJXAzHTaYnҦ#AݚiF
+.ht:ulT&cZ4i󦅫W38ff5|>Teeewwwrr׬YpBш D  IZ2;EQ.K*Vi*)1\1qsJдVFFFnX?=5"b#:ʰiSث]>?z+y^ԨUY,N̈ΊOL0ẌW&%E\0v^o`|ZzinҊDH~ٱ7;~68<A^KIX-:c33b/KNJt,5߼sdѣGkkkSRR֮]mX>  0->>  aqόWT(
+F#0@@K2hah33b33bmVݺukmS[CNv|Nvx5W?ϯ0bc[fDyM[['NJHHXj՚5k233-Mh"  Hy  f=3KjZ^e0$Iz(}h3i[⎝hRz֬YaÆd=  0>P p0dYEQIeYfY(6HӸ1 !#˲qRsܹR/^qƜ
+>  LWψ   2`fQ!"Mj(A5xD p?8y?zkT*UnnƍWXaX  Ld=  a=3He%IbYVѨT*EQP|M|2紜O>}MBHNN333f3  9 p10߂ t:FVeYoii(*Tk9L S$Zא~x/^nݺ5k$$$h44  I  =3Hea(beف`0j~?n |XM'N8~xgggJJv{JJ^G Ag. Y=3]0!DL&"4E Qd^Ӆɓ.]$˲҇k))):M  3zKЙ  !2d21#b Ebf 7,N>ׯPh  Q$>  fJae.vQ)EQyQ zjoމ8{ꊊZjڵkҴZRQ     =3E5EQJ.I{~\ 0YC&gΜ쌎^zrrrЇ  t P3_ QE60`$ j뛬UWWfݞj0p  ư\h 'dRZV偁!QxcY? vbM؏]<vXkkkddd^^c=dɒh  fBw. pꞙ<˲`P<)I`$ '	ܱgΜaҥk֬ʊx=   IDp  졺gf)Y29А(f㸁Q$V1A Gi^`ZbΜ=sر۷okM6-[,999K  PzP ,˲(`0222--h4
+@Ӵ_NCh"  s͝ϟ;wΝ;.ܴiŋ  =E#  -=3(hX,mmm@|>eYF), y-t[gٳg;v5Ysss{챥KT  yX p;3jA$I$IQ)2$ I5!k3g]vҥK  C pgƿ	iV&e`P; 蠻zcN7;vCCC)))k֬Ybf3  Y.  ̢(AeeY=$Q4/K (2nĉ/^x<)))+WIIIjM  'C5cr. gQ1Evuu~B l M !,GWTWYYv֯_f͚lш& KwZ  l3׌_,+Ib(p5	 Y=^[ϟ?w\SSj߰aCFFFDDR!  )E= sCIF$IGhZ-I/j5*BdxoE:Uu̙y]vՙf5  n'h g4t:Ay" cʹӧOWUUuvv5kdddf     !qÈh0T*EQ`v{^A8C5,Ӣjh<}'ZZZfŋsrrbbb  @8}m=  a%3.t:Y6e"vBFt x)٦ӧOqxիWƪT     qjZEe@ <!D$%I*B0Z3Ke[N>}Z,XrʜxVV ܭ, @Mq9'IF(8Z2;/pz"Nn>zhMM˲999֭[|ybb"p @xt {{f(F^0!<RA٪/KG ;窇;VUUEQn߰anOMM8M  a=  :s8J%Ij8.<h8E_ YAs>}tMM?͛ϟh(  [E$  !y uFe,kZu: ?+I*<jA޻q:իWAϷ)))FM  F  g5(iZhI4`2L@e$> 1댼tҩS^222֮]rJf0J  0[r  aqσ9iiIn` 02a(JD<"dnO8tYǓlٲUV͟??""M  K>  f(,ʲRXn[$ #qxne={ٳyyy+VXpbmR  E 8ahV~x<>Or\.&oJO(rjLEEŉ'fsNNN^^j5Z	  z  f=	R4!v\.B?Q&$I^|ʦ+W[.'''&&7H `A <<IqV(Aa EI`Ο
+{SΝ;w;wt7.^8..84  -
+p fݙ$=B8f4l6U*!DhZYEQhI*&$IuQ.\p8mmmz~ٲe[lYlYll,˲h%  WMh EDQlnnIOOl@
+{aZ#ze.o UA4\5-˫/\q׬Ylٲ$   fwСyyy>룣GҬVM&hy^$Y^2,{Diiu8UUUwafɒ%K.E    `,sڋ/sx\=3(exx<NSV)x}FV2-YiB]oVd҈{zYzM_x?ꈅ'W>]	^]N̽=Ɯx'yLxddOid2z-2:ǎן9s.KzmfZZ-> `6R朕e `Q,;'O|7^ZTTm۶(=0u,˺n?44rL&0$/8(QC_Wf]~O2s1LыMJ'8)o_JC'[ʹBl<;2Hy)#vf-?>L{=H&k4`0~Ǐ_r?...77wݺuH h4ND  PeZx≌>>tPmmmMMs=3n"y@YO04jvwwwGDD455۷eYaDQ(S~^>qLwl&XpO!W4A1`b7e2[3A2"F"SS'xSFZ;;;^x,Y>IIIH YBDQ}uG8PCߡ=*IF	M[yIKhU31*Dy;y<%2W>gBizD;;3|#V>|OZ7ih5mGՈJD;kj纣J1x1+(嘇5yl؟5KS#F-L|<٪-=]۷o7/_O~R^^o~3%%E^	qLV0X,ftwwB^3gF_uOp<-岓Df.OѭO~J?%nd1Ѵ|되W78f[~y(F\\> `B}WMiJ1k	!Edw<je9ȘW
+GgI\6Гdg)(رCK?bpįBϒyʧ]~_˰'~	a*'_Ckr[`?л01'1ߑciSY&2CfD2?G]#8g$K߫V6@߇11W>/Ni;79"x3/^zAeZ͛0]{ܵz*KoNSf-P/ctM%g:avAl6͛|Id=  07:syrtijeeKQdO
+b#B+:vKB>yiØ1,@&QIX0#ʮ>9,!odT̰DNSeI2~d^[gjxʪFЁ7bU#j4M$8`,=q<<sGyn<迵·'.64'џ'NsFRL#ʈF#hx0~C3t	zLcLT	MP2:B\2V	Fxpm5AӸ	UM~%r񂛻>F'82&9z20׮]y|IٌA  B_y~?h x qGNq
+AӣL`%K̥s) <_WW$iަ|%?z:zϬ8AS'S-Ϙ=4]Ñ;FMrt{zs<I<F=a֯_A  3{zzZ-M*ݻz6V<bloa6x'W[L?dh8#V5ficVjL<шױW8|Iꌹ#'Xf'qmGv&Ώgi1ǦDeh;Zi	o5Rӿ{:8COdt$5{vw}4MRQ7xԩcǎ544ȲiӦ<4gơG !|fg+:#L>ztDEg]3ё-ƨ@`0DGGk4|    <\~ѣt8^w[nݲeKff^kw{f(`P)$ы)?}/g*ztVM:?kCopx,V1O-    588xȑzlo߾=77W3v3jh      Ozܹs6lxǖ/_nX8       沾Ǐ744dgg/_<22rL>=      XIIxڹs'"r $IG     `6_ԍ?. Y     `+(((((@; q     WPP[ B	        =      s\aaaaaaYYYaa!EQE~[RRN}bN^|EápGv*,,ܵk׈'ue;vZʒVuǎNs뭨xCKR^RRÎ;F?_,,,,--s      re{.cXBWʯC{
+ZayymD-=m}F̈ٳ'[hΝnuuußR]]<gQ07     t:v޽{wM)))QYTexLIIRcꪫƬIn}v@𒜲2xbݻ_	SPPJʆ9Ϣ"'07`"v     |QGQfن?nەLnbVUPB-R%1ٳg[,%BㄐP(X:GZ;w^ihWˇ9UU\\<2`VCu     W___FS\\<<멨P*hFLU\\D*Jt:B\`R:j^Ps1INh?c&{K0;     W\\<#҈h2'X,#l6á,Zltr?$>x	NHh=XQQ2\tYY4)},zr\     `ֳlw_ƋK5GS3ɭJ}#( 9q     #-4Wf֋wءr8J29q     #h2u:j>Hz-*A)/
+=`P      PMF;#nNs#LPSVV,`@     (*((PaJJJ&Q9Β+:#R>yv]	JKK'x턐PO.܃     Ut:DpA94Wzh	BIR***vQ______RRL5ߓH@;vP$YQQQRR2<***
+Ro s     GΝ;~LNsǎV5//oǎ#jsv={//׏޽[))--MOOOOOWOrnݻWrvڕgZw5zPsj     ŔzSeyϞ=EEEA#:...l+(((..Z#VhXKKKCfS"1bIn}/**
+u
+ cMTZ(Y
+      0KJ"ϺwQZZj>܃\      hQ".=      hٵk䂹c      #>===Ш s      "eȞ%-YPPPQQaيC=       `N=        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `NA       0        S        ){        =        s
+       9q              `N N}ť    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf ns-3.21/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,317 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 550.8 248.04]
+/CropBox [0 0 550.8 248.04]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+550.8 0 0 248.04 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+36
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1530
+/Height 689
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x	|b~۪ccbιֺ)FcB1a1nFV*z hmvg:,fF^/$$}=7||I9n                                                                                                                                                                                                                                                                                                                                    
+{l߾===
+     pi_|E۶m|Ɇ&%%Q!      ͛'N,SLRBCC_N      cǎhѢLw]כL&j     \re̙O=?VZUT	̤r      \KVVƍի]|yOOΝ;WZSNGϧ      \d:qD޽x≮]V\k̘1;v|g͚J-     ˗/Ϟ=Fm۶~罼͛ZJ??QQ      /;;{۶m͛7۷o˕+{Uj˗/SW      /%%eUV:t/	NOOUV6m
+Pc      ,..nݺ~~~ىbsɀ5k._Fj     ;wnժUvJKKn&$$=sssbccvؑU     pfyyyn2LI{rss5׮]KIIIMM5      \us`vj     I4      1B      \ԓ+$$     YE      4      Q@ow'i     3^_m     GEL{4Mv      8J!Ɋ0n     SQ2Ll#
+ږa       ZmsDm=      Jw@a     Hsrѓ     0n     s2Zh     lXc2}i     T4ʹG.ۙ=      NET	u:uaB;sr     81&XN{56wOLLm     MGܦq{      L&nZ=Zm{ʕ+G     !x"1vaf      "ҬRFy#,Q>H{      zG$.,lw      gc4=
+!%lPؾ(͌     lzZV(ᦰ^qqq=      CisW     p*b.BhHiOPPi     #g1bOQc     p*AVOUGL{BBBH{      `h4
+Hm{      h}j͍     %hZRy״=      NKj#rVksi     p@s!Jv{r+WQ     yw-Z6.'     3d2C	4     8\[&LO.      '!Ne12#M}Q     rǇIHH&     pfz^R>j^^^     pZA(
+Gqf      8^V}}}dt6waN.      j-m92bHlS\9      g`1{Q'agN.      "=E
+y$bOOOFi     pF5Hm{H{      8	G&	J%     p6zz.a|aN.      b4e2T*Ri+]jC     T*j6<APjZӶ     r1)lq$Ri^qN.      '!6ݱ32VәKlI     sm\     Kf`     p=c4ɹCO.      'Viz]:N]X;3     8H.dܦ'     146ٙ6m{      ^WP(M`ooo      @      w"Ÿ=      hTT
+u>mi     #ͧܒh4JJ{     HSKKOQ[      <ZzzjuR,Ĵӓ\      Z^.h     hJX6?E:ж     n\b=           1)* 11q{      H      <|:N]t^6/bf      7 =     pRO.J{44k      J )y=ZV*f5ZG/`gh4     OO׶h4T*;#H+Q*9#&     pBmhLT*5ZTipb⣓      w`BRǗaGxN^oA      (FQCT*𯬀^FT*icڣjv&     nCL{i+N`<"6Ejգ
+J8Z8½H{     ;)FsL&d1jG׋I#ov"     $>>^L{ړ<5$;¿:N\)Me      ؔmf)t:?6Ii'#"rŖ=      KL{92r11xn5$J     &{r)
+qdc{f#q)J'JE     `Sbbb1qD1      UԴsr!G=      6=?=GWvd{"      SGVH	pnd2i4      $3njͽF88      `Sb,юJjL[FTOe4
+FRKX/|     `0h4*
+;3mol6!m     B82J}wM{jB7R3h(JFcLKFXig]#     //p     M     LmI      gpm{      <K.ST)ϧdkT~JŊ     }_tǟ5:(Pn۔S}Y~     KHH(]̿([BC     \ж!J*     ii     p'=wzr&!     q{H{     ;z     "m     pRav     7nim{     cN.      w"=m     pR(ʹ     n@=     3n'=H{     m=     ;"m     pbm     pE     	Г     'ii     pqqq=     n9H{     ;'=     ;bv      7 "yȥrʼ     }'"'     pɥ!!     NlCO.     (     mж     )5:     :bv     N=TX     EO.     N[xғ     x1mC.*U     ;zr      w"="     n     qܞǟ"af     H{H{     ;'i     p'!     =     ܉<WA==     Im{H{      =h     	m{UX"o?     pѶ     qv     AJ{Ÿ=     H3Ӷp-&)??z     CO.;w....%%%;;
+    ؓ==k\jUݺum۶˗/L&    nГpMnڵk_ժU7o>{'NdeeQ3    (ͤ=1LiiiC5jݻƍ\B    (9¸=\TvvvJJJxxx۶mxz͜9رc7oޤr    X+Ut=Ѫ1!(cq7¸%	B|^}76?7>	H*?gJTP!!!!...>>_@ze\qKeěǑX+,Ai懕n}'k	Hb
+SO	Z<e㛟jaOj
+{[<tL(lx[|ج<E|?<4mԵkWoo吏zYf`<   hϞ=J(Ut2	?gf7eB}ԉ#GeF.֬YS^8q3kWJGsą.@gbqV<5hҲŎK-tSF:UiMa5 MZoBXӴ~b/-*|{nٙCa+/'&U[WyZS^^>O
+\P=z4//    JdLVT'xi3*T֋˲xlM|3_k,bxS`,L<U;o`6#ZWW?̷>1?AxDGg,6Α[׼.=k78Y嬏f_m=l:Zט[jq'`5^ڳ"qwOO{t¼y222;   9|pڵ{vG?ͷ{5
+z.iwqydqg(.H[Z%Oi,f(G6ZeiqA,Z\/TM`qJ4?h"JkZKKW85XO-f҉׼Ax{IͷuY͟+nx[lcf6pӶYovh"|j'o73[<_cJ;(ۯ_Ν;7lPkYI&۶mu   4/_>y`_\r8sH\>},m`Fz^~iGC(X<mOY 8]Ǵ>n`~Xv)lGEamV'/=qwŋh
+uH-I\>SP7Wʢ~6`JygbQOϔtn?ݻU*UV{ʕ+wqΜ9HOO7L     p	YYY'OիW*U~N:ׯS?      .ڵkjժZ߬Y9I{      b2RRRj֬٦MS9      (55uǎ˗/OLL|23     4ɔur                                            LnnѣG,X}t*     !C/_e˖B      \͛7CBB*WO>3K,~:     ࢎ;֢E2eʔ.]|ݻw&     p9W\9sf/ ˫TI      7֫Wۻ|򞞞;wZjN9O     
+tĉ޽{?]vTRrJeǎ~YfRK      ˳gϮQF۶my//VRoyyyT     ޶m[ryxxŴgzW^UV|2u     RRR\jաC
+			?|r傃ӣkժզMļ     3[_lllvvv||ض'888''ɓ5k\|     3;wܪUvڕ&LLLӞܬ؀;vd      Y^^^ff[L&pӼ'Wnnڵk)))     // 1]0E;5     H{      ܉4Jy     GţN+bc>n      !1]%E}     <Zbڣh\      xT*L&+^C     TjL&[rB}\=      j     TT*
+%!     p     N     9VkLfkbzr     8	`1Vb#lcs_     p*Af#\      @T	u:uaB;      81&XN{56wm     SMGܦ=      NC&I7VK      W!,;ihud     p(*h4=²c!11=      Cj#W;      8Q.a+W     zZP(Ma     z;Mw     }
+F)FC     T,F)j#̸=      N`0jiő      8!h
+Ebzr     89hjKiOPPi     jJi      8-UL&3o#˵Z]Ĵ+$$     5[L%<*Jٗ=      NżWVGvgf      "5d<      8\[&Ü\      NB~bdfG=ʕ+(      F}rm{<==     zJ2}j-     FP(H4ӓ     zZk='N0J3     jGM     $,f`/$^^^     pRSG"L      ghZmQC8nsr  8/[+GnVl7|ȟ_G	y >
+Bl#ɄRYmOrH{   Ǖ+Wf̘!8qk9e^r͜],.ey-vmdf4g,f]`ysZ^>sug/qϞ=/\{ `A[e>?  T~FVkndoEMq"_5klȐ!M&h ((ɤl_R)JGXYbOOOFi  xrrrZ+;|_$!%z7O,  *JtjEP({,!  x$ӧW^K$(%@%ԯ_?  ܹs|(  r\z
+@GTO{  0|}iժD&zpGj5knݺ7nLlcgdVk3sr  <d͛}ٶc?rT"Ȥ_x<y ΰ<wFjC  ]pm&MZln{f;pZ[+7^:== ̴=   ,//O4id:I9#/3:."5r#8h3*Dʕw|>G P6,h'*lqN.  !---""qƯN'=S3%)YtHnv 3%Nj%:YƊȧݸ-M4YzիW@@ɡViz]:N]Xضӓ  ~~VCygZ᱆Z29g'Kckա{ЧL{/ܜ`Qc3<QqJܑǟ{}~999| $ZrL&,am\  pﲳu:]˖-ʹ7h3ˁK?Qgگq]B33tܨ5|UtD7.w_0A/Z  7|im39mf`  OoU*U:Nܺ`V^O_"PZެxpײ=wt煨C9v1%(&);h-}s{DK	;=";\ޯ_F> PBzZB!4'  @={hb%4m!+',8&9oЈ!4Mq>:4nvd.S|ⵟ|1Q˶ևKTiW'mSΪU Pf`  (M65mڴi~-	iC}oؔ>tI&tZueǞ87zern!Wva5Ȉӧϗ_~Ǉ PXCO.   Κ5AƇg]IVE'v9(|o>
+*w_wИQ9\]{=3re3"HL)MPs˂W:L֯_?:::##O% ѨRm6떃im{   ?|pƍ.`NIK^m?nzڗ:eI69`ttRN.{=iц}Wk"}`;aF?ޟ|Hz)$iL  `׭[״iӖ=糿Jd|O^>Pvn=k$hӐ3&ԩS"/0?w&/REܟ^Z5Q;L6jhٲe .Mr]o]
+|=   1LN3f̋/sfbОY^zoVN_u(;*O}]zuAkENsROak֪C2J;7"ƍ޷|xzե>JHGb   IVVp\@tvkN	WD
+B8nac[nʢ5뎬{eRΘё7?<t}jC7{`LR'5iM>~g5~|j___ry&!  ]ИҥK˖-QFQb	ocQB7{i}WW{=Y/M7@VrJX^yF.#i*lǇ5]̢tL]ӦM۷oo>F K{T*zN')^CO.  P	ŧO?~|F$/IAt`]>LճY{MI]19|gM[R&'"&D>O>xM4.t=ݸ$=   E%kڴiDXg*<PP<),Ş>U޴ÄrOU(WkfM:s׻slf	;=l͛m|d=  %Mzz%K7n~gs^""p?'ΗDRoo}(wm?9~|8ikFi .t6sr d2}jذ[U>{.L6t|jǟ׸y"s)zz!K=|aZjպu߼y  P   駟m۶,Q*K>Kupf-1D;O٤I?? t:脽=  ŋLRN?o.oYH;nN]GNY$EqF>#¿kٲewI# po=  =z;Zj50H=Zu}'LI8i.k8q~w> JLLd  ~222>1?>e-c[¯sW{gz؄<g+I#Wm۶mll,  q{BBBS  \d:w܌3j׮u{oruKRnyCJUỲсtsotN:sΥ x'4  תUaˏ!9pca<{*lV<M8jsFEرcoܸ p\  Eeddԯ_gؚi~*!e?rƴ[GM_0j^=hԌKy[/O)U*չs{ AE  \K~~~JJʠA|||z;+GRF/XsdųcVEkW)aA@L˖-lt] Ni=8FR vڎ;ڷo?"̴(R*U3һ|oKPY/q~' =qoAV+J3V[	;zxxG>qf4he g2˗lٲr#e.Zyԡܖ_VEӠ}W*+Zq"[n;w  \=m3*ʣp9j24r^ ؔW_6Lkސ.̝LZZ.־[?RVҊW,bVJS' H{lQd2RhtjO{-
+Blc~ XmٲϯS+q1\%4z
+O?ӟ\Ǯ}5<[ydu[S.]ڷog]zE i=ܒ(Kڣ녍Jh4j  gΜ7ͿG&sӯ~cлu7imF-UA~eo˗5j?% pGem?rJeq$Q*2nu$p^8 (8ЧO-Z9pnt׻Apϰӗm_^z͡@3	1mڴYv[ nFB^R	
+0ĊǑEj#RKwZ8}O{i piii111Zj4xď~?@P
+Ek<Mˣ<an]FhG*rpgji^yRyIz 󋏏;=+qirmNw/x8ė^PҲM{4i d?{רQv7\_ljBoe;65ߤeDY=JQ+NtoÆ gmfvA.LF93Zwu:RTZ0=E=[ ޿nݚ7o>d74q2/^10PLXf4!O~Y")QMw]93~sٳXnJvzm͇8ZQOM{w}v6]6قyZW'b(K 8^?|Ҟe=iO1vjQJ{B  hV/^:2<Z/ۓMI}5|
+Z7GO*r^xq*Uo+V|XWnl~m
+zGnVT+`~J	߳>ue~e˖'=XHH_|CV\N{?pG:Ǔ%sӯ@{nUφ"Ec7˫=>䓽O
+{ƭ{Ntr6m{ƜCRy_Y}}e5Tn^H(k
++oIY{@+\ӹsgO9sΝ;$&&:[=b"O:Խ~=[K#ޢA 9sF#|Lx=.Z7wpfѳzI_iss%rgOOʕ+
+)1~APԮ];""ŋ%d2󥏇\S[U\+qh* %Szzzlll֭[jznrAz%9ǀ1wTY{xbW{_i),!5S5j]ցǛ6m*-[ܛ.?Rb!!!.\{pqR9ՅH?+
+^/ (._ظqѣGϨdծUV=aoP923*VX|ygvt<egUP|u{)l8qiΞ=Ƿ! HgʎlH7{O{G;p= Pb]~}:tRʆ$J].쿭wf~Ɛ)/|ɋķ\xoFVRKk+(7=ztݺu'Lp):ԶǑQ.RԹ~U|iF! Ν;pB#G
+ו\\VYt+זSX`ñ/}M7-yxzz1x|tR.uYMÆl:t8+((_Xjyĉ.H<G/޼x@V*f8CHQp L&SFFVAڷo?XU.l*VصOtRΒy
++5R9oҬ݊W+*	׻NO-[v῝[ECy Exk644ZjݻwrGzr	
+YƗ&4T*gh4bw*tHXP
+k-ǔ|@j P\paܸqUT?~jo+1a˔m3tJԁzK\iC'.esԕˌt(P/X":9a~㨨(ݻ1pH{hT(vf*,*lB{I{< @Im۶_Eׯ_WܮRp7kE0~qC"齵,SO_:r"|kРA2e:v: 0ǫVӧݻsrr%ӓ뮁i^&ZP(ͨT*GJyRh{]	{	+sb@Iw̙3fԪUEiȤ 5#&]&,ئSa9|o9.ɈL.Pna_WٲeG[1Sm˖{P7WWef6m6mt5+=!  ͛77oܵkN:YMhu.D%wNfmWM3_?;*i6чhJe3/,[l5&ya{E+RæO]?7޳{кuk^~Kim{  uԩiӦ	?*ɹDq/֯nbⵟT4Uzo}!|<<<^{[\;jcFJS0Xqtݛw3:+#Jl4Q97;wfiW_`bܾ3W߷wu?O{h  !t۷hЯKXܥ^ǆh~/VocdfoeZ3*TT*m]~9(9c-ժe_F73RsbDJ~nŎms?/38lJġ2V7i}	%Ʋ<x`}߾}7o믿	ؗxiI  pΜ93k֬f͚><p\;s<z6e.3ð)ҩ"g.s'hR:tcKWkyfꋠ_2CXXzդU+'!mKJ> <_X8-݌ϊ
+jKǔZ^y>}N0  𠥦nذǧYf111KopIN<N7`j<<<ڵk۷t+桕b({x9t+z_b4ͰDX),NֵŮS۹?ɂΝ^>a[}TX釥ujW̒7]{d>ޓ&MI=BBBH{+z*w  8.L<QFG{\.)[hjTL*`ԩ\XOKחoX;UX>tݏ$	>ǅ;iOKweё/~g3NQdEe_Q90Z%&9okN{h=|=r N)==}ͯZÆ7mڴl},V
+ڵkk4L#so=|/U?&,GF('{+cefsm,PREҜ׻H:0VfdFڊ̴Huuk{A]_(l];z*_$-.۹uSN#F8rHNN_ iii ҿשSgo8\})b=f&TZã{GI#+ÆR2bƿo˦;|-^4^L/o8m~?OfHωADn,Z8bZ>Q˖Vf޼ykׯpW*Jxoo{PR%&?r ͛7nԩS۶m,Fu:re斋FoPkAK?X0$?+/>x_߫3A=Sz訚IIQ#{+x;mw>G9_]}y7F%˗/oٲenVEŸ===  wرɓ'WVmԨQMqNæǅ__|1**Z*qyl\kWx#.|ƴ}{g]WV~ynoȨo{WFjdWFMʽAokQ=[hDZg>>>>~~~|IZZ߭(isr  GFF\޼y?W'dҟB)rΓl
+ړ}FãW^'ې{c%?yQƗuАqc߸q5H>~9g@'6љ;;ڮRM+ʊ?闤c={f/TV˭ׯ]vmڴYfͥKzE"θ===  wM0QF'NyR&=3\2d{+/zo9Qs;pM}L̘GL2qsTڵ_~[=9+#Fk_(+]%mvn.^<+;%+CUq.]5k~z0nCvgp> \q&M}qyO2{m^>yc]1Zvߢo[m"8]\z³U}-8phpNyiB:ZʲY_իWtr\d_Ijժ}4GX1i3.tꔀ)ʯ?կoIO֫W5j,[24ƝΚ~++Ξ
+ڵu;󳇆|gU%=vܹVZ-:}4߳(!i4?|$ ߏ7_>|c"/F<;6dOdU/B^קӀ֯hקvOx>U!6D%%f<_e.`*5}&Ej?g*]ZؽyQ	gUPlٲ{ӭ~9Uyߨ
+ӯ8v鴩G
+V?Ƀ~<#r}֨Q#4mqZV2jb#t#wFu#;X׿[7ˢE~jƤ\=33; ˗/oذM6ڵkBh}y-M^Ye|ʧӀi~}%lC½+D4=ik3rez0.ƻ4ΉJ6M^$o{)Yeaߧdύ	+XԲPjo>¯uD=Ι$\,,H,Ό^1aӆiY7FCKQe@`YC2`{u`y-jD:^J_yRRR=zhC }yyy?СCk֬);u!XD	˓pǈe#Ậ1_*&Gvةz+CޙePROC4}E\_*U)٨9hjM^U7%vo(ov3E*	x饗
+lРdvK/nX;UX8®]ۈ#6l\6^41`EB2RtDڽsΪ_]w3fw&TdI("KE5K(K$EeR(	5um44մQ"BvpZ&x==ssy|,|Y5QޕWրVݿW^.sݼy7Iodif b{   ORUU=CwjCV?t;v}־[R鬟0qTEJkȠ',Yj9mw9g-mu`:Ƣ2"fwYwg013ځ?q=^g;2\bRO6#Cmۚz߿֞p/VPyj=}=H]e~jX{͛z8֭⮮o߆7/0fo0=   |;::.Y%hb;:t5b峒hoeʁձs+BFN8'p%Xa.XNÉ=R3Gis<BX)\#Ej ֥vb),t>>>oJ7㨤Y\I٠wRxo&arK7EOYI9.Mƞ:JBdgjJ&
+
+y'	Z+ߣm۶-ZhÆ.\hooW00b{`$0=   ꌌyyy9992~BQKf	#_`cM ڋk\_0.iccDz'$
+6Ek*ޞJFRa]pbpCCj\]`j7L|=/#-7C!7m(6t=JR4c߼OQtU%ᡶmT*?<<\XXرcT*b{~f͂??J=   ߿$--|&<1c:M@B{;rKɥ$TbW<]l
+f-!_Gc9h/]=sTf"Vaaa133WFl-BZDZOJ̳Gg͛FRJ_&FcV|&x"''jժGmN.3=   yBQUUUVVJ8[KpIlC禍->}UWnSѦ(MaX:)jҁهGO4>CwRYlL3|4[޹O%,3zf+yFj*(Q9YmR7÷_=~	tQ?,\-jΕK@Vdee555wc`t\큼=   REEE7oپ	0x
+kd!L|oڡM}@g?Lͼ9u*Ǧi}$}tڊz6hw~pOlqIHH'JY]0zk:^wR<C2"7HOsk#oPЁgs
+풑A[ffwﺻ
+`N@l   0t222.]x	d={ԞtS9lw|~^,Ksy]=e=ზ#:XB-,3D˯@_}pARƿ@
+_ [jCPO:bnn~#J%	--sfϞ幮HMSmfEiz{pxP\RVV0];0=o   0ijjv͛EDD~8nX
+e&&&sdlrT[夬o'HiT[&H-f]rӶmU~%|"<%p+ރ%߸K$d_EK[v>ZhNɭ4{Щꦒb5'{y
+͟Z'-fJM/ҡFBϑ_r$%%KJJ:;;po?0Fr   69Z=^'"?	\.&=ks$Чb%+U?qGZoϑ_n9OLWpEUV:lϥ%AJMZcM`x3閾;JN:Qgr.xM:mHWޯ8}*9ztcUKIXW77k}E0HQ{S?\RLL,""ѣG<y=o   0A"iiis{uo0+@~]<yrc['nsrܼvGaϽ;222<8`sr(`$   >2<$!!
+e/hiipYfرFoݹ|R&t71QO 3}>o[NHHhӦM׮]koo50B\o   0ZhnnF}iԣڼy󎽯9>ИTњ!焅[qc׬a9;_qFޔmٲe޼yNNN/_R~89`aFrH.   'ڹ
+WwҤIvvv[H'ͷZ\Gwx.8#\~Vxk?3uT3=   xeAAuUpƌRεnSUUpV::oG-duvё66p/}Phٱch#3̚5(4>   0j)//OIIQRRʂX{(𴠠 NMm즒6~@pJǖL[)wTpHO{Z)DEe-Z?777wwwNh#3H.   |wܱvssu6pFu¦'ƍ}P }q~*v(-fW\C,	xZ4TYK"߽{Sw#   `QVVF .]*''!4pqC'$$PSO,S7f{f{ӝ#7n^\ythە-KFFFqq1|aɓ0=   Fׯ__j_A1Lsol?1k,tcGsaE;68y-2*~|988Ljg:ddd?os=?
+Y  #XSS3+++\+@K:-Qpț<ymmm+Bbqzj9P_Mk^,eܹsrnuSIuY?ehh_	Ё퉍ox{   ~7kk%K8::n{@FIg/^	
+
+":\=9ϟD21ή+ˍn*X5e~)АN    r   {@#?!sw^999YXX444N~PN0ahI9Z~״XFm=W~ϳrvvz*@l03   WBRQxӦM-.w34]=OVZ5eNNNd?jD= ,L;{B?l58roB#B-p86*hw)En޼x[y{`$~z   <}411QFFF]]hdt;|e5lּyvADSK=)&j#++w_XwL=F<tJACIu4gܿWǧզ&x_ٳg̙##   ŋ?rFB~~ux8NSS䉼,蕁USA44iNPV/YY
+ݼH@xh1建JIIWɓ'kjju|N¼=    4---}}ܘX \\\Ȏ{"Y2͎WI4Z&_,鿇q/q>eCBB9R[[o|s\?3g߱   
+mmmϟrqqپr5FbYD_Yp!HII[~*uYYZ*9tKG[߿nƨ+spp	mVeyQQQJJJ˖-|-/H.   Lqqq||H8RNHoKtuu/ok	=1@q5T+7;%`TrWb._^Ii7rոRuŮaaaUUҮ.xo=   c*4fff_ W*<5ŖI@Quފ>:$)xvRGC$l51^V=3S˗+))WVV,o;;;x{   `0^
+PTTܱcƔ;	nsHԷ|L_wOַA~B}7cX|4l/CK3odrVΤ׆_̘7o߻7i}RGI=7-!,{_2Reex=쓝Yd?BqSPDEE=zx`o///x{Y  oH]]ݑ#Gϟɓ'O酵)W+V?䓵 !mw{Sѯ>]/PBJwXFU{Q~dյO:uꔟBss+# }\o   0}||xyygϞmmm}bxxxx~
+^h;2B÷*j2IzO{Ҷah.U9mҾ?;h_1\Mڎ't+o=Omۦ6eff	&;M@Ps-gM5oh1/41V0{+߿Ӷt4Ck59p˟IR? 0 #   `y?~:Ց$#'E$>}Ąu?̧6dB4x{@˖<m\Ϥx 3f+=~_\Gq-$ja`weѻOMMMEE%;;@_ =   F#O>%RRR4?4E$^xq͚5'O633q&pi}Bz_*#(VVqZy9qk++ygsij*?Mjoʼ|SAX'4   _Fqq1LC]ԁC5@#Mxmlll&NwT^[S@+/Iqw{Y/pPh4f?)nnn0gԩf b{   ϥ,//H^^>((&*
+<N,(ɉUKK䉼Vpѽ}UYrYIquUiJJp899@q8~4
+6N$/!!AQQqٲe999%%%= Hab{    :{QSS@t;W7&0͍YSS܎fpPA9bbiYbJrZUA8NQaۑh"gԑǇ򒑑YvC!=@l   0jkkgll,**jǎ4!FJ<<<ٮ\PX]2M]-^k^V~(g89t26ԓ*ߐm6+Kvq>'//wƍ* {{ g?V?J=   xZ[[Wsssqqqb??^		;w.|_ze Ld2sEUTz
+i)y[dm{b<8Tśd555PVV_3@l    ҂(7nTRRrttxbGz:@]U.dffrcBjψw0W}Ub-3Hv\deΝ
+{8su\f3S-!!l\滻KKK[߿nIof o   y\biiaeeuv<ViEDDߕ톼͠7[Lj=Ο:Btj7	#PyYIٔ)S88z$575fy{{ߺu:@f`uVaWW /\`gg'))iiiyQIH$f͚}
+Ƴ=SIs즒LWwn+*HDEXR=yJ6;333	FH<;ezϟOP |##˗'O|q[[4 v?۷l"##f͚_~<|ee	&{zz>~M}(U%ho:sK<`PM6.˳mJ"4rE6npcc#t!A8u///=v)..^v'`4TTT$))iffƄpƃuuuq8z
+ >V~UJxY	^[[!*bc[ӇJ_&99U}HS*Uw0-8RME%$$|}}o߾		`po!H.|T*_WTT~kk+ ZZZQ5//>.< q֔CpI&YYYݻS9|ƣ_cypVk*lk+>aD[SNw;n~pBUUՔ߁9sdiox{QGwwwMMͱc쐩(((z{VUUA ~Ϡ yyy]]ݼ`mǏN8Y[o*@xȂy_ HtsY*Q[H̋%CӍg.زeŋ/_~zQ suC\0z?~P?yEEE---8 02Alrr:@{ӧO^}ҤI&&&W~kkqAΤp8QE̫hdX3m7)i0o6d+**޽{'9w?~'OJ+D{a،~-þWwcU@}+
+?Aip\cѶ|j?ábprr>~_?1/#-Uڎhu[[a_L_w_mD	m?0a0l j|d{vb8}·VB_h?Só0_JIOlÇƢ//in`ٳgQMHH$.\~z'4iˏKm#w﷚~'UvWQ,x\<?>>@edd<y
+8qiB,X }
++oBE#z/`{1˰1'>B+?É12lK;2} V8a3hσ*C	}!66ԏʱ9*@gpV4Zme34*Ti%-ᶡ]n!ŰpGｾ1p>;{{U1<}ϐvOfh^1cƔ)S<y;w y pxŋ}||*BC;>/||lll+UUUڻtL5[e\GwKv@[OuP._>08FVVV.:899Q9}E[mKhJPb{L[2T>}ǰlP9fة;'..Fr$2	+mm@}.}bcж[-C4џBүҎ>}:a3@Z9CU^_7Õb.[{~O\g-׷AV}BpӟUv])Dlll,,,h!,,uD߿ɷ!!ݝui׋'Ji]o@Jw2eJ-VSuU<hjj*''z*
+[ETTt腲#2,XXXeI=m+177VN;leeE oJ=Cle߽hXB+4f6ah%lm~6f({niPǁ{SWHf[=5[_
+Fi}O~pP'mGD|rIII׌iiÇë ~ݻw+WDwd>===PE^^~׮ld聵;U&~މwRץ2A[Ϥ=@LL/..nkkI*++>|tTUUzx)-2mi%h}?sڎ}(J9{d6z{>܀+Xl3Ў6}Ix.b6@OCJl<-
+_D|bhD5ҤCgtxgjGvn<8~ٳg͚ރ!!!/^ 0̔.[?/v<D+RˋsƧw޸`駟{:   Çd2ؘKGG'11ݻMMM> CtSSSiiM69s--wsI TEDϛ7o	U@c7Tw^ggW677C   ;vrAAAׯ_ollx ~Ν;zj			'''ܒ6;5z ..31hXXy`@M^䧤,[LSS311.   0VAǏ[ZZ
+		-]4  07 O8qƅY`@DU8n޼y;v(~/4~ޔIMߏz    *Mw>sLee%̴ tmmmEÇbc<yH\d	vvv篂Aq2Wnn˗   yK< 0ի&&&{myK!!]\䘍ka2Nޔ4ydvv7gA{S& VWkFiq~dd"#      *í[.^xժU0:B!.Z@zv\dR	SWII{֞8q"խ0wf\|SVVv͚5(++      ijj{ҥKx|ud$̫J88L4rttW_b9F 18gmmm7mڴիW_8C@1w8<L;      |+:::ݻ(%%Z
+~3eS(Dwwd}}-$秝B̤mVM$KJ0aBU{f&0^-G500@w33ʕ+=j SGsFɋpyyyYY%      xuu`xdwYZvddB}q;)s=&FOU\XXJ찶.MKB!nقGGC7H"u'O\n֡ks4l\ԪU       _Iqq1WRRRQQ)
+4cOuٳ+vzomĤ8_mѷv
+BIcwdԂrkz{pppL2EUU !J3I{]VJJ0      b^|#///!!S@MM~pINNp[JJuß{GuaG<=_v)p3--[Π~ceeE,@~l;g&R{3&U,?66K0tttܹs'""_~   	Fy&==]CCcѢE^^^~~H̜BJpr{}}K>z~prry{33#y22bSRj 3?߶ٙ-YoJFQl!5:M$M%}0#\4<~
+mYNcIMٷnۣױnfffyy9ܡ|/^PVVr
+4    C^~'))m۶>>DwSRmg`iȐ[NzR?9>}n?kB4QWoM`mo+W211=㡵An?~LLL]`,Sn^=z95mWM7m^:Q9wRʣ+G)_,溜ʹQ҇)>em
+rm1؜8жF\;.{)KKK;;;_|W>YfM2@`0     +ohh(!!xvp/|r*͛u&:9s"(haa2o2]
+6mO۶홙HXJ"qGCBQ`!ȞÇ@ [@x$$$e8|#}ų֖
+<f%E76צ}ͱ_*4ܻO6nn6Tn^CPE6iIHOg[B@oOdUUUyyyd?c>"%%%lG+W޽{n$    TTTXBDDɓII`>E;w*KHMw[gf&oDD
+1ͳ))So!o~0(R\ܹaTF[oKHUh/_U	
+
+"=`2WUOO]x/A攸Mu
+rmS]%6s&֋'_yDT:ЌY|Gm2|\G]i^O:	4ΜBٴrzN \Wk}BBB]]]oNUUU`` ^q    `z&&&"""ǏoyzD L4i"6ֻ]Isvƾ=HH7r5%/lgGR>/ٗ**avTYdǘ۷z{224ddxJ'..NBBӧO߼ytfFo͞5sH,E*yEmH[fb}UJYIluy׏̙p^= "
+خGI^ntw&tpI>h={W|UvwvvN>{Nkk޽{.\Ɔn'~~~ׯ    $NC'NhINKsK` ֯ou˜C7z=f]+Wzaq%6Zu#%ERHVZړazz㳺[[˱a7.'$̻DիM"fdd(((033;88gA[N(?.`10LRy4u"?x(œ~]CA%%Ξa712sQ;R7i&0jCVEtߔ0,>}:0իYYYgΜ9uTggg---..jh%    KTUU;wNRRh޽))ig=~~cH,,,/z#pҔ/>afL	-doMOIldDgEIlϨ'Cm$m\󰃆iNJVTTDIK6Ég*Z$]EF-7{t6vlK$<ݗ8İo<q0wɴ },W3`XڐO1υY0߿B/9...-244<p7o`AAA559s氳GDD$&&ihh?
+     'NC`mL_#GCCd]|2ᶶsf|s?.NDP7Hʋ9'-:}*<~}ǩ.[[ݼ3gXXt~My39hBwĉN\v$gG)S&/翇a.N\\SP=&MY0SKSTYiԩP	;d;W}wywtbt\Zϝ?c֚H?M~殝f`◒1#U:="""Onii̺ikk;|0_0oOLLݻw*++    `:x9WWWiTSS۵kWud$_/=ee&&iih6=XRD{s-*ٸĕ**34٧LSGTSgo0?4ef.Yyժް#hcKKhs՜o߾˗^9tpW].@G3XZ?woCyxzxgsl׻w˿mREioV,eBcTzS3mGEmHX'ʅf=<SN73)~-/4軪q1.%%%--C*.0D?~a~~~;;;|9sL:5..L&/X`ҥgΜZ    Fsxڵ[eeeJCZzxxOTe˔,iޜcL^ť$%5mT!!!>)]Gr=LJ3to&
+EN\rŊqagÙʹA5@8~5k&OT7QA-6ZW} 2@ˮ>+!աrwW717N4ivEiW#t/dbbQ'BlڐsIIICCCAY<yR\\\CCرcmmmNb{>|hii"ͽ@   (WAAGGw~5}iJKO6Ro:*<L[[vInDE͛3ɺ
+
+HjRRnnnȀ;9u~Lt?!aaa=ޞl1AA{oFD k:9sEMMpYYY'OYS;,t9Ѓ,#=p=-a3<~Di7l̄	3f]Asy9sla*B\Sb8tn1YX|:ޖ722F/#{qC˗;w_kjj3g0oO|||GGGkkc,--9    
+ZZZddd"""ʂ:>@##,[Se5^	̙S;Ib"a뽓jd!U,q61yi&d@eyyѼ=KDHjMI9{=^VZ6W]
+!3fǬO<DUhgzՒ\z
+ܫdKTbmE)#mРpIiɦL]@ffiXSYTsFE@7)`FF/񰰰PT C6~$WGG?ǏWWWw-    #"*\xqttti@@Sn}'wUoo?yzedY,۲B߰iv~9?van( kkk]]l&&I&N m!]ŋ7n8{vόᢢQQQeaTd4ܩ-{Ei|b~I&L`>uI4O6}7w>kmChGc%}CњReA\a+AQ=ll֛UL+>j>~+^z85`vvXz:B    ȧɓ'ڪ~~x<عU~!SDD^8٘uiil`RPQ{N??}%['zKH^B:#)'0HGy	A/P}-[f͚ʊIMϗ"Xu@i\w2)|'2bi}psXZNftD<_~vdnÛbv`IX23dAa{###QQQ+WB? o    7[kiizzzmvyy!S(qxtNN-LoSSQQ3/vfdS4^D"7svmm{o`O'b/p!6mct3>W;vxyyn?u%%%CBB=!]_ڴ#d`t_Ɛi MK\[\5Qz 0u4$$[bnm^:o_c(TaYI5vW79yXԐ@AU]O"""ܹkei     0bz9@Xl3gZ6%%111Y6i̴30X$$145jOOz!vv]tiWߐHӦNMqq몠Pxg}ɗ@_=};A[nQ~Gs_EfQU]m0M/xIy(sfI,q-Uu͏vWϣryggQT1g'e(pM-.\קP(%%%C    婨xKr2f̔3sfyo&L8;';ڝ;|g@P%gPQ(t.ٙoLr\26|u,AC+ &pEgt ;*Jާu㈲Xثn*)>f56:33&{{R"H*~Et[#SꬎE	SzrV։	&CLNMq:Y3a?dųDt t>B'5~
+쩩<ydEEy6    F&{177DNMMBIquE6ѕv4q863ׇ
+\DgB?:22!0+Uk̙vvv7Codsaٳij8{u8Ӧ];7x-["ɷPQWڰI)kEEfbΛqͫO{\TΞ\h}2e;[>q7Z-~NPr5mNw}DP`VLq4mYKG>N飂%KA`=    #={]VFFfÆ'NhD.?Z%d2iNV}fd8G۷;6`H;
+eՅ[DOgN)-D7V;f͵9`tj+^>_fBbcԓXh>Ov]'f==klhwd$SZPR$+i)\iAMMog!MI:t)S&N3;D'LBXp#H-ܸ"++USS    c҃YFHHhkq[#$l"ЍJLdܘL3wLdKK'4geч ǟ	z:QkL:nOD"!ìV:K.29_>y5)~㦥z+iiC24hLH[HZ(W}SL-k/EΎjvn{s`.F]6^Ph 3'i2Ֆ&:bUl16<0"Q!Hy96O	o挪\"+##yWWWCVvvv    ۷466644ήj ͖-[F7zHl4;ʥX!%gZD=&mʔ|| c	Iٹse=9i$MMƚ.jCzCuJۤDj+kq5%-'ګBd4h7Ok3	4֤o;CXmCp|1\7n
+
+}vgg'L|=0'    PEDDu5rGddPTxL)qqR0.ӕ,qw}g5&$=zȈYGGgޜʲ\AaS]ծӧOIII133͛70:M    ~,.]VUU544$`p.kEyg3x{;L8};z@3--mӧO<yz9ٸ2jv޽xvvvh`}.|    IIIx<XBoK11S~I0bԬ'	4>B&+++2
+I$R`@{WW+޽{			˖-SQQ	z*Ja\ ݻ_큼=    Chii|m$%%BBBv:F"ucZj*YfBIzJJӹ h$9|;fbbʊ,(::Ջ|A;WMιs猍g͚b
+ŋVޞ/̙3Xl   ᤳ֭[%۷w0>UݰPcUտSR&Nx_ jO>qFtǊ~ќ&9=B*ݹs׬Ysĉ
+ 4{_=    0466ߑ򾾾cR$77M&&WbbL7Y[̛3$e0vزeˌ3,XK wuPeeeUUըwvuuA7	͍E'@}hsrH.    P,]TMMYR~~))`fUuR(nq[](.p0 `3`4T}(2.ΝL0A1^FFFEEEgg't +V~w=    noo믿Ҥ1ۻq[c[-dWDĉ{kg\Јj???aaafffnnM6.hVjoʬxdeeN<[2    >y$99YGGgɒ%ǏoNJr<L^,&kHZp||~ϘxkHYʃ͛n3fX[[~)9Fu@dWgݻsuJ\7b{    ;묬,CCE؜={>.lq4(HDx/DDlZXSo?f 7111/pfͲ{^sm ׫:u	\\\ttt_|	q   O֭*,,lJLq[Mw888M?=V̙g3fCFwᱱ^033;{:t@_V]
+@FFfƍ'O,//0/^8x9sr   7۷999666:ŕUp<<zolVlUGFUWWjv}:3ٸvq5d.~\91ڦ}Ϝ9=    yf߾}֭1ckcbZ»	
+#в)Oo'W\	A TTTff333544*}l\G]vʕ+D"֩T*tz{aN.    ZXXHKK y@~֩JKS$&O," PJ޼yߛ;@#HWsRݻXYY'L^Uќ;=e򳲲tuuOf͚K.{R@_1Z{ss~wb{N
+    \kjjN8 ##OPGGw\K 2BqXR629f{{%=lZr7j?t萡ITTTJx>KmM7n		YlfPPЕ+WZ[[aC`+YbECf    2?OSSӹs<=={655M` h%W/WP8~`6K<<n*5&$ BVV6%%,JZΜ9ccc#))ihhH ={=+_o0oax{    k׮ڬYk4 c?ӯ-\yM4%%+x{]]W>^*$':tԔILL,""Y~W+X ЧM)400@Ϻu<XZZ
+=+` o77 t    	U#!!!,,Wܖ6 BBشH)7
+	gf̘jrex{@JIIgϞDV{s֭[IKK^|{R4;ޞy{    `?{E~AeMHI"`@QD@99CfkFvW]kL	uQ$/:gv8stW<T}}YYy._|رFFFqqqX,4t)-M\\|?IJ#s\_"#c2yCS=5C]Pw<==GA.cII%K\}Ԝּ1''g
+
+
+O<axMTRRiNCnn.   JKK_F^ƍG}V+M_5##>2L'oh7B]P70Ǉ4%3j(*pnru}uT7GEeooO^'~ϟE4'zi{fs'   yyy			:::K,9vX
+
+V-\X0x`Юe˴4=%=z
+邺>#,·y5kD@Pӣq[%44t̘1zzzO~^@ˆyf _>WY=    y&^z5..NIIiĈ-:x`ERnAmgf&zx71q1G/qY aZ1>WX1rHr1Κ5Pft邠Fݸ2J6dggϛ7ONNNOO/99ƍx%??N;997@&G2嵐   ব}h4SSSW$%YILߴi˝hn^$<ֻwɷ4G&̴Dˊd>JJJz&
+++=7|]0LCCQF͘1cΝ/^@вBgaaaZ   ?C޸_baaIh4vɜz0{vqjjIZZiz=zXN<wEDDGZgz۷o޽{[ZZn߶f!RŻϟ		144TSS%r}p999eeeAl   @=ڴiySFn^N!a!S;j(*9={T%"0qkHuwiiibbb'Nܼi73 ?Eoqss՝2eիo޼YWWw0YC[mdi  <z(33sJJJ[n}]c2IG.&pptt2WϞZu)nnw9aa8cЏbȅM.~SS5kƗOߋ'?&Egfs7WO<4ha-vMpZ.[Y~;Ncsf4Vs'yA|~ܾyճMO;vΝ;>KQQNMb{   3tÆǏ'A555(|)jU>}+٦e>ffVWXw3ׯ$=IvyxA?32'''gϞ222FFFSN¾	g6њqiy޶+Bں~D79pоCn<xY`&M"o u{aaaUU@_Ydp`L.   |ţG6olllL111OCBX:Kz"/o̧ʣFjjg1llaT}v+++111!EE1chhhh6 g{f[Ⱥ_me=]r1ۖwmk6S*dΈ#HvPRRM.Lׯ4  jkk_xeTVV677g0/#"j4֠.3s7y?e?aZ//j~izLcᒒobDWM^Nn#${i*((L<9""Դ{ݳgOv4g3ܜ
+|e\ϖ[CY|vO[VfǸv5-~gZb6>j~2c@%φ-=Tlzr  +={vaEEE+++um6qfd,\8PLu:2@MM.5uY2SRƩ?X_II8oPU`<200PWW9qDQQKJJ޽{W.ں;.JKgX>=u۷o_zUZZ0V8Q=T$&WAf   |H]]y"yiiiYYYotW@k=N".ɬ03旆~"""EL敄E9		SC8oP'4mĉ:::-:p ib!  Tf('(((??u9Yѓ   _C&	ճ5^(1|oc`P9ˋHIFQQyۛ̉swz5NEjΧ!!WW8p c ]B[[Nfuۃ,   o;vlѢE9(''vfPU1򧟜LLާUedNGG˗_BBV/^lSv$ {Nffq.؁d%..o߾O)  #&&z푔  {ݱcV\y
+N:Cw		:9|2̙mn13@HymY4fLk̿EA].EUC~{1ydMMYfmٲٳgZ  :ix9t萤0zr  +޾}{`V\y)63:Z@@ ݝ3Vbt!~N޽%KODzD)JIVC u8UVVvppرc  :j-	diFl   ~~~N*т:QQBBBۗ/w@G;VTSQ	9|!=АSu11;v1cɓ333<x   ###4>T  x˗cbb&NH*s)OLİ\PXt)y:=:>^M폠 3MMqqqQQvPckK٢.Ef>!aÆjjjSLaXx  %???((M.In   fWWW_t)))IUU4g̘Aю:::l411c<stϞ=Ǉ#0pĠAmĤb:@WI\܁H#BCC`oLÚ  (++n  驫ݻ=PG֮Y3Xr4WWWٳ'y74DPPϰ!C54{UFo/	zX /G~~>Nn<&cǚ\Bf   |E}}}AAڵkmllƌ3s̟=PU~ر/SSyb׳G54ez!{.`2qYU))/&##ؿ#p ";;Vk2Ppb{   +jkk=zz)SM6m֭11l4izᠠχQ:wDDݻw'iKƷdfnl,N vWGGGOO/00?  <#uv  ?֭{
+teiiJ6@DdЀHO&(GrРVQTdd9̌ZDw9zMZډ'ǎdҎx)&  ݞ6<<n  oTUUݹsgƍSN4hΚ5kDG#oA$W<&&fϷan.$$D^z9XTtƭ533Y0xj+WG%--dɒ}zO  Bdeeeggq{0&   >ٳg۶m355:t5|V",,/4*g2)U0쌌ӫ%KO>jȋɜvMqԨW,!Y=HcȈ4ׯ_!  _qrrB}Ȅgsəy   7<y{7nҤIIIIt4(Oo3<UPHtq7Yto[ ic?r;CзcxH*IRUjT
+s  4NB5&   FmmӧOݻpB?~|lllaa!iڠ}[uk׆͟/үpORR))ed
+"oh,-k23YY䥤6j7$j}'b3occ-[=zA  +PRR"&&v̓<==2թ!!!=   O믮111Νe0jիZXȌQSnc#%.!K϶e˺w4qbiCKk۪됨2=[n<~ /MPÿt:'ɉ6;;GXXcr  +lׯ۷x1cƨ/]ٳet:zP.#JWW_Mݧ;~)&##e^zwy(enn.//?y䴴r<>   ##CY=-@el   ϟ<ykĈʡcUJ
+b{v^rѓƍ+op{233.ѣˋICI驨<g29+~̌;OY☘]v͘1CRRRGG`\v  jP;-dn3=   l6Ë/&mCCCSN!bbIH4xGbbzbƌ
+nG()iO?=oJ}*GAT%qqFǇUTT  _i!-g   oߞ?4dLLLtuu=<<ۇ#ԫWٳ}cay!##5t͆4>ݦd%m##q&o")i׮]...yyyxd  w{:ۃ\   6]QQFGG*((=z}BZ|P[Ty:!3\G!Cquע:5U_YYHH@@ cwsɄHxqEEE}}ӧO
+O  Py{KSRRBټ=  o?>00PGGGEEe޼y;w,5j_\Dff{>}::
+/Vb9NЫW:3ӥ!bU0zC-]TCCCMMmѢEG}  Ma:vgv2ݜ#))	   QWWWYYy8))){{;vFj>ffƸCBBܒ~66ݻw3_{aJJ='uUF?~[QQQIIkň o'zBFFƼ111{=   BOZ7Λ6m*E\}`vvW؜95/:cY&=$W_߰0[ܹs:+<&  >0MiL.aaa  WUWW奦N2EWWw?(85u	y36~bWŋbIp{oZQ@U,--Ǎ}"  t'Ǣעb{   C***޽vZGGG555lHRnVZ牉22?)ӳ[nsmEW;vxqMM  Х=  'ܹe4433۸q7HCPQrh-kXXn-,qޠoՁczӐu:~Ԑ       ]w獵[ZZʒN||kתRRڡݻwO[sK		֭qpޠo411>|  !%%%AAAu5nzr  +l6il޼^ZZZ__?>>O[Xl<wRC"yXڵkGellWUU!  !Cnqjۃ1   !;wΚ5K]]4**w*no ߥ[[o\#U&:zÆ3g3fqBB­[\  oguxç>=   ٳp±cǒi\\ܹs0;A?JHF=?  xhuNg;  Լx"''[KKKMMmZ A?*80sL3gμ{  Cӻu릭|=   @+y.%%|2:s#hCu-j]|,Y"+++''b<  q{x;viSiF   IMM˗/srrTUU=<<rss'$aA&Rr#5H+Rq   ߏݍC;N   ٳ#G3FEEjHAUJI!,طoÇ!  =zr!K3   ~̙3AAAꚓS\0@_<  Ttnnn{-..?  |nO[iv{Г   ͛3g΄zxxdggOH@lA?FTO-QbEBBܹswuݺ:<  v{8= Ѕ277x ח={6**X^^a PUJcbbfΜ~WUU   ǎVnzrE)**"w9dNvvv;J\_RBsZޙ,Z9qÆ7o\5iiMMMfaaq[n!-3  #$$ %%%AAA-}e@~ÇWTTԄ	lmm׬YsmJBk.sƍTKKKRk׮  q{z)/ELL3++Xt:=dI *鳽>QONNPRRf0Af2APSb=eX666f333#K.  = ñzJJJ:؎=d7Hۖg&#&&FYR _Q]]}Ν̩S[YY޼y*%mFjQQ6m6m,--WZWYY:  AO. :N)OO/Qr =ׯ__viM2d^rBlA]1$.n׮],Қ0aBxx3g^~
+  n9GNNNAAA
+@kedddՓݵByJ@'=䡶n:GGGeeeK.U$%AP66vΝf"~``KKKl6*|  ifRȠ W=A  ;vp8=(3ErQo۷ooݺvĈzzzQQQ'NJI u!̒l93T  :tr{ZE=z6lGB 82#'yѨ]u{ț!'PVV~;WTTTܿ͚5ӧOWVV[rٳg#
+=OH8l	_߫ŉl.#u7*|uϯ0"CJJB_L<H^444]]]wٳ*T  -giq{cRJdggsouq
+գJt,Xttt|}}I")	y{X,V--2bЯNR4I:~t4s'2r!UT:IG}y{{tww?|5<  1=ӯ q)n-n}!UUUϟ?%7ٳg5~58HkX25yrܔ)3fl?%Knu1BJ""BPWϘ+$.#1}z^ȷFݽ,5zE^lKz{&OHKLN~@Ǎm۶Ǐc.  gԓL;vWm  :q[q'??*4rIV ?@D^^^TlÇѓ{o2nuqY1q(q~}$"CDD9UOoׂ:#UyZaIix׷:=ULW=w7n`v3AON>rr73a*/?Af
+
+0fCդXAьgΜcǎ;wףz  ~жӇv{ZDA+l6y:tK[[[KKkocck4$Ojpp@={4-ݻw'{=zP5'VOZzݬY:wO.D6!ܷoØn7i0v֎Ȣ C@W~}HXZދv^etSSSUUU{{5k<|;  9 _5cL.jysssz3p/1{PPF`|H}}ŋ+**ʺ޽8&Q7QIWٍ67!*(h(#n`da5yrL--ѣz&K:ijةbmlz5xJRR{.,KM\0U*JI鄯oUFF1S~`Syjj6d"+!ttH1ke0	&>455@`   Fpzr}v/ ? uuuo޼9r䈷DG wϟ!ٿɺYNݏ~Mъ,[yQQoN$>~,ٍ^=z,׿Zdr>lJ33K߶REOl<]CNW>>V8G&v-X@f-&$DJ={ bzO8qFFF111W\)--E  'HeNdcn}ӱ&LPRRrttܴi͛7X,|'*)Ø@ҙ3f܍d0n?X5LfyZZYjjuzp?";#+!zƌ7t:V!ߪ}w^h
+IiiԈcߚ_?{9!d[B'=dacc`iiIEJ  @iMf. w9O+=ָCp6\p!<<DUUuڴi6lxG?>tvrEE}jJm3M2[GJ
+dzn
+n%fFҺa@;'$xRF]	KwiLOO)ReT_#Us   F" 4'1Clj0,j;{Y3#nOQQչIVXRd+d QYYydr)**ۓf?n{sUd^7SP1}ɒNq322JnY%/mѢ?/,]:J\ aɓs2n'QѤSwX`"0U]ƍŪUr~;vpvvVVV?~|ttӧс   Eh.93i'43	@sp:I5IsPsruna 8///66vĉjjj,Ν;QU,"⦯vN	!MAA166FGK/&$_@HfFO|߿Iç47R匕:x1wbJĄWedXK^H,s<,?`Z{n777--c.]ȑ#Ϟ=c٨  pӚ,-PTTDp{ hBӝ̹
+
+p823++#Cf09ɒdTdlF?pLMMGeddD/^X7`cR[55QAAKQNJ9c2UxcU2$ʪ <qX]))`ދǏ/|9(HcpP>KnGD|gn CEEɾoQQ{;w
+y=y9P  hn'g۰p{   t]JJJ^Jь'LV&'}0|54EY=vjj;֥ g	aa$,5b--	̓ݻm?iq9ʓ#5p9sr(qqmqb8?ii-"s JJGKaQQ=v榢"//gϞԠ  Мr=   ~TlvEEE~~>Ų'm(CCø29mo'z	_ߎ)NL^JI*YD@Lo30"4>+Goս{BBt{&X~@e`&LUW'Tse&7d!>bEur}S	#;6)FhhzTo>={R#U#		ǎPQQquuݺuݻwQ  hAl   Ç۶msttTVV611<~8b{ZrAaյoj3fPR43k:=zdY		EN681h:hN#ޯi|<,ҐYTP8.&YmR6~aVVKY))I7ѽ;9"	`UHJ"o쁁ǏWQQ3g޽{<y\=   >    RUUUXX~zggg---.hi~}U2K)E~ɓFEu#
+CP19R[Z>Y,5ER[W6,q\Ə"!//4ďZWWJwv'L(OK;=]Cc*$8RL,^gUyb3qDRA͜9sڵ⪯G  9>AF  E!;wl߾Y]]]__ŊHJBlI__j~}LUW?hч墩ȸ2K[2IJvp(j&i??j}zRR\	kݳwԆBn듍{gd<jn Er~F&{\?pZ暴{˖EGG٭^娺  L+G`   ~T?~u竫khh,Z<L=_Yii8dHܔ)w"#;0pUV}FX[Ѫ4TҩNOOwt[5>>22lm>J}ĽoYg,'W4Z]{99}ii+%**Նߟ&&G12:ҥK111FFFIII/_.// \   >'FqqQ7.B]fw1{l999UUUOO'Ot<30&\x2MC#w̜9n(AR4gΙe~qw;xgٖJJB}Pq;=3Bw45y3MJrԤ2IYOEZZk!!'}}^?|ydTL^=z`nb*\<?XTO-?))\ZZ ::̙3Ũ  Al$$$&|oTWWx";;CCCCYYy۶m11|NK)ACB:؇bCV'!Ce$$8"=hN˳Ņ
+6` YBwGc>>Tk|Y II/i4rN'MR2)@Nڥnܒ^J卌ϝ;{D    = |zzzQnnߘ1c.\SC~OϑbbT"у%'wt9sed(cWD}Ӈ,"2l iqqաC=qyM))::bpۻ+tL43"w=2WN-yw`Cx9G+L@p߲e^ddɓ'_|   ZϡC$%%;ŠA2	 uuu%%%ǎҚ?>ijEl쉱**J932{:eԐc9Hkk `KKXZYYZYO7eoo?.Fo (ofv/*; <PF<GWJpB}}Duٵd+դlڴESSsر˗/?}w`   h@p{ ܞW^bppigm߾͛lZYJ,12819lYGW4c99*ܠA{QQ#"ZЭQQn[ZRС/o~g
+
+RNz0AV:QcXNNO&uѨ:::˖-ۿ'OЁ  @@p{ R__Ǐ敲-ɼ}6b{/{RI=P0++*N=k^;t-$D_Zs9(;t81eX/+{xɒ/=B~O]c}ǺA߃LE]]][[}޽>FE  P##o|~c"""/_\F	i(My&=88KNn_ޤk`kٍКkX=c5PQtGVq93S"31E&ӽ&LՐ#?@T먨}+))۷?x    'y{  ..K= pӧOurrr^^^-,_Gy"#!,n`pϯ+yN죋N"|GvNrb0"}<xۤ/߭0""zdY		jFZ?{6q VO믿(**N>}ƍ7oެ@  #n4=p{ f]pN[[[+((_t4p~2WWL8TT#?x*;{QQAy5܎M]FYb\C^e +K攥,FJ#sp-^קOh
+#"dƌOm[mi"@WKS,35َ-BUҪwG]t9s6lp*   '?`v= +W0L333KK˴/"YBΎJC1PHh|F+IJzClqq	4)))>5KczQEJ>T2[]\lmN; "xuopWHi,ΐCT< AXz󋷵04$ǲﵐ11cbnC#[	2)tørSr/66v	򱳳ۼy7>|  @|b{ CuuuaaaRRi|]x=_Mŉ;\]kh0gCR*`fDyy	fZ3sچ	stu0PHhq5yy҄G16%KϞ=yD;5+<{u9(HIR۳!s~` VJȦ)/hܨQ9V,mmj?+(7.Ғ`ܔ)~&&NjCrl+9Rz|y..R<'sHCRi  tۃ,̀@l x̜>}eLL?h:a2ᬣÉ`ı7TTtߟDE4E3lXi%7U{K/+!!?xOAYx['$p_V3ZHH[%W1Oɵ=w""BӇE!ԧ\Oqev˗'%%jii$&&;wQ=   :N=@l xx7X,UTT444#Ncp~nuqqӛ +O#ĸsգ^TT(4/ǏוL9mmDF6\68QAARkr.sZ;kWĶ:0h4r3G=h9^KODEVfdaq JI700**j	
+
+
+gϞ}5*d   #$$\@l ~ƍ.''啛[TTTb!⫉bU1O]<~dFGM5VV>iKkxtn
+nrddLo/Yo\w3,fgؘnoח)l?$r[Qtt[w'K툷7@sYd-Hk띮#"p5 LN~r%0662dnddQ\\L#   : >dxՄ 7YYYSNUPPYt/KvA-@`<eXӦMSTT$Ç?~  @'n jkk<x}vwwwmmm---77QQAPg:5iHȺuM:~y   :*cry{ CMMͽ{~W777555MMEݻ}BY:%-3QqL̎;,XN}^  t:! o޼ٻw/ۣk.4NMmAPGGKK{ᡫ`ݻwz?  t:@p{ S__fܹg///===ww۷ K3Aճo߾e˖M0AWWe׮]&Ua   _Al+Гn <ד'O积///oeez֭ܶu$-ݻw9;;[/  /Dnn. z|W\ԿSS5k\r= H`#Gx{{KIIج]6//f  \AO.= 46|>}zq{{K.U'A,vHHȑ#tիW߾}  = n 	ÇSNXYYiiiM2F]xv]|'BCC̴(Q=   410;Гn y-,,TUUtsjAP[;p޲e			VVVJ!I_y-  n +**._Lfcƌ!M@&t)SH}bjju:T   \p{ 0x`ӧOI('..ԩSՆ֫&-Q@ի544V\ygϞQ2[   _NO.	Ƽ}ʕ+)))ƍ>h\ZӁ29qPy4iZԴ   Tlzr=ϐV؇믌)SHHHHIIy{{<y}Bn[ZSXXi&sssQQQEEE??VWW  Inn.zr= oݺfccc111uuu_$.d΅ 娞ZYh͛͛'%%%))9s}=z>  b{ ,p{ ࡾƍӦM266ۿ?i}LOǝAPQ=۱cǢEtttׯ_rԱ   ۓ  <
+
+Hcmƍsww߶m[aaaa j.T/#"HuA*Ru
+T#2!U
+ޮ  |[= nsJKKݻu萉۷?yY!jN?h[d֬Y֬YSPP;T   ۃ?`v= P___WWwm۶ijjϙ3qyl2===S2̼  =
+qqq[nرMGGGSSyڵSb [l&N?x```UΝ;T   -G駟ГTUU=zh~~~#F033c07nܨLNƝAOT'OCMMMZZz4%%%x  9t  f?xѣ˖-8pMVV˗kҐ CTto2:׿mmUV?ŋ^  mAO.4/p{ ࡶ͛7PVVVTTtttLMMClAձX剉E+Vh4;;;yyyuuu'O}f:  ]=@p{ ?Ch/^;vԩStYF΅ Ryb瓓MF*
+<{V   = ӧOO>5i$ssSNդ!K3ALNN411YbEnnÇ"  ໂ#,, ~ԩS&MRVV622py{ LNuֺuTTT}||<yRYYZ  HJJ|4I޼ysɘSSS999##ÇOH e0oܸYEEEMMm޼y۶m+((@.   !@p{ a^zuXkkk{@zy!oU2""++kcƌИ3gXPP{ԟ   CГ @ Aj;sLjj)SFu@ߊdصkѣf͚_^^   'p{ = PܸqcՖÆZ|޽{cb> L&:z>>>ÇFT  '$$|41OJJIn޽<IKAZ=p+LLLTUU---;s~~~YYY]]jN   ߹ӯ_?=@l ʕ+7ntuu500022Zx;n޼f2A|CTs@qM>=55?,))A	  =IJKKoݺyf777===---ggge3y!TbU&'+W?~}||s^|Y__
+  @Wq{1l6^hiϚ5kΝwޭJIA4;~ѣG[ZZ=z5550  t!={, S]]]PPcǎs****((̜9sڵyyy5iiu,_⇨'N$$$XXXHKKkkk/_>DT  5;W n MRVVVTTuVWW1c(((2:y{ 4ٳguuurrr?~\QQz  @s{Г޹sgϞ=q!%%eaa|D*q+naQ2N';ɽOj R`ݤf   Ѕ ZnO}}=^ARUU9rǇ쒒Ξ=[DU))222f͚rrrQC  nzr=~ f?x 77	3AgQ[[}jiiM:</\FA?RRn޼~֬YcQQ2   "Dlu-lݺu
+
+
+sy2gBE=|<&M4vX;;ǏA?p`ϳЭ[zxxL0a񮮮7nGT  '7Гp{8@ɇKW^:Bmm/N8H.999ܞZ&-:5nAbny&Wi&?67\!U[o.,v?X['oeO֚[CgmM9gtrSў^zܹbmmqƧOVVVb  E9|04=Ps{߾}yHIIm۶͛7AGܞjhh<X[[;,,?t?sƍk׮]ĵE[^Zh,MzZb巼?-l9={
+mעPw?_s?J+/29;xgZqf9ׯ_'/)))!2jԨP%  Ҝ;wy{ \?̘\555䅜`
+(**῱<ɓ+W=ztnHoܹX 4q'wQMp+v]+wgQ%'$vܷgw#W{E}.t5^<2/_>{l===2Lnyuu!  .ѣGI+~;Ԉ93,ƽg]j0GjCfrvg,]8Ɂgg<-ָƧ{s<k5>{<YykXw/&x
+lsQQC^^D/YB&	|#Gis)4Ù={&Eg{&w!ܧ>!%i_M^o`ee%)))""lٲ"8ؠaUU˗O~Çͅ\Ms>vN,;zo6y;Whv;l!rGxlͭ(vogu򭂂4yݻ7߻wbŊ/^2  pAaaat8pt9H|HfOPOR9Z<,[S3{[<;3/'#ϊM},<xjr39qNss:o<K9-/}8<*X@Ϟ=e$$d<"O_qOP|2*GkO9Ž0e{ <6J;\=3s97ۭ}9RBBBPP}urrtF=ʡCM6j(uuuMMM.4tbQ!m:nscBG}<܋Dȷ:::"(((,^ĉ  >}ZLL{%i	+tc8Kr/)g϶xSK%y
+onƛY)g1jW[X{%9rm)I-l}<5yp7>-_K
+		Q43PgrSZ6iwI\6YZŶqlr[{9WM&ѽ;ϥŹ/%R		իGd"22ÇAx뽽-ڻת= ]lUwH[Al.b?o离t&.""b*+	}^ETҖQy9瞜$5;g;sD:MOO;s|Euv\MAlI WeSl5]hyUUiyzBҮwď?xرoСC;Ѹ~ݻw~bbEZl9r$lϼ~ڎ{cX2>>GHiWj=wT-JjG7Rj5H_*IVDG礘S':iɿPiPa>-'w~s+}W78r+]-ZX>y8g߈׼$U)עj8jVA]7Z,?u~NÇ*6Gߞ={N>KiիW/^<}կ-EVTaվVT˯j?(~$ĩaBQØOqˆSKߚm3|re֖7Gkw]v-38qbvv~1y|׻woOoߎQܾuVN$TV[]OpΝ԰jP/:|$î= E+]ExV}50:հSrWQqk'mmyi͗SN??k8kT1?K6BÔ9|$ń᧸gG>͛Νڻw;o߾Ǐ_|?𿴬ңG_>/h#l$xTz*?jkxNbݻ<  0^x1??ԩ~۶m;p?v>}j~Xׯ_?|ii{o7d<)ߜxI\{  ?<{Į]}MOO߸q#ݿ   o.,,LLL|_?pҥ'Oy    lEO<9sɓ'/\coZ  `4Ɂ۷/^x<   L   ;ccc    |bGn       1it:3;wLO	En#$
+(o{'''GFFbͰU7K5E(!6	îW   aHT&''Sht:y|WNL$<Ծb0EG333ioh\S}qMn,   >ٞt:ݾXɄT	iL<I5>>®/Ӳbi )Shѥ<O2
+uBJYڕB    )ݩ4-)ִJ<&IYxUI}9[ۓ lE;ŐBdQ\Tt[   > ϫ%4yùۦW01RTRffٞ1(bV:E)ZUG   R&g]H{U01ҐI7F#Ӳ<fu bZؓ9F#lddĵ   )20)7Ҽ:(e{	k_>f7sťDn   Ƴ=?=ͽ/fz^z۸   !lOBTNxlOskY$0q   fٞin<!>{y<SW}u'eV-+>~ttDh   kٞG4<)SDo3ϟ兪o`_嵼=ԮDʥU@>   `m$ۓ0###333n7ljiLtbV92a[lOj5v<OUq   c#ٞ,9Jb(ܪ'EؖN'err]kq   C%ıΠ!c*Zw\T3+޴վAjcc(޺V    i    E==m   E==n   {Zٞ^?   B|Vyqg|Ν;z                                                                                                                                                                                                                                                                               A
+endstream
+endobj
+9 0 obj
+60735
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 48
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+xWY?sONOwr&,E%-jbE((1q[E@@zonU
+hrf{<|{qW!
+R\A0LF;==] h4ZWWWX,f0\.X#Za(ɒښdx< y[^^v:@z>8
+CQhSt9''>}✜hn~
+676
+{ :MS1́N7~3/qq	/\	X껝FUҊ
+Rrލ]AUߔʆG19r,(c_@
+z/&NJvf6'8.Lo>pW]-Mug:LGrt{<3n{<Y/݂}𡻻?LgӅunH$L&3b'M9:ݷt}>%x7?ύ	w#r{]]<@H:rF]M9b9]LX7]Iȱ֚Y܂6\U9yjHn ,Xc|39J˃|xMϭG_Js
+S/Bv{U?D+*N/N:)LNrrx"N_"p"q9Pqm 4"!A@^ߔ}^(Afk(&*n4es*)'``AKntwc,1 p;GU[i{Zҵ4ƔqnCq1,Kzr*GJ)9J|06x߻U
+QPHÁ`CQ̉0)Ê fd]&A1#}afcoieMֳ[c0"19\nmAQLŻ/ŭǱ~o`Aa\˰]Yb"0?PNg\:~=0C"*]vd0-g'Ԥ1%oƜf2Ui<	=b^><`VVb9W='q凕fNZ]V`h yB|]a\w#0d0{blz޲H56 J?|H!aD]=t!ᏭmO2@T6P(Z|X9i{g ү/pE*gb52cZ0-tqꠕq,knDp(|~$QJZLhb9\IbT*D5۟%8XN(WsYzCmbaoqkZi;cqaҲ"_F!) Ap:h]/KsϞaBju.Xe':vtz+?$kK{>jI8 ìeDlJ84-<k'VN\?EQYPXlfjynZp3= WUwQT~G*gba%y ,)6|*fX{z_3@dZ$[& f~/uooHH5;M+ bjfN $w%J[CLBJXJ@Li#o$l3Hdtt+HRԺᯩa.!WUTߺE_.-0T*7c}],__,\Ul)6V+
+~gT(qЋF7ygYV;L&n(HrwmBcDWy DH!c@0J+pN{C4f$ɿCuۃ\7HdJАj~qK鉴ξ>.Sh_qΪ*!Ye`׸VU9xi0\L6EڮpyA`V,yx5tz
+{4ZUe{w|<}>x/FJ¬Zal{va::}矹n re	f`ٔZO~Tw? 5;wnϟ$SrxMMn@vz*|GlSnvaU_yrh̞>ZЃXj-w,<yb墢O&z̩OgjZ&.cx S\ feX[[Y~9GXW] T?2CۻcP^N)%	3c}ըequfnlyg$>#՜iV㛨\7/ o	55|!EA<=KClhOA\\\atY9
+^YYY
+ťygD.HFcUTO===Y 	c>,\.:K:I5˲9K&P:00dR|#βg0jU|/ߔ`>>>n4Ơ Ñą7#W9/X _
+endstream
+endobj
+12 0 obj
+2582
+endobj
+13 0 obj
+endobj
+14 0 obj
+2582
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+2582
+endobj
+17 0 obj
+<<
+/Title (fr-hard-frequency-reuse-scheme)
+/CreationDate (D:20140609020015)
+/ModDate (D:20140609020015)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000310 00000 n 
+0000000398 00000 n 
+0000000416 00000 n 
+0000000454 00000 n 
+0000000475 00000 n 
+0000061393 00000 n 
+0000061414 00000 n 
+0000061441 00000 n 
+0000064164 00000 n 
+0000064185 00000 n 
+0000064201 00000 n 
+0000064222 00000 n 
+0000064244 00000 n 
+0000064265 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+64463
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png ns-3.21/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png
--- ns-3.20/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,233 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F 	IDATxw|SnEe=PA@h@nUq^;!up*"Efe=JlJGIhno:hQ!M^?x$M>9Iy~%Y            x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^           x      B     U{      
+q     W!     *=      ^EE	    f۽{4iҤPj    @{mݺ5##c׮]&L&    ]/^uVRTT}Z    @<xp۶mBBP(֯_/2 OC   JKKÇT*Rw5k    EX,+W.]400PժT^zIjժ{:J    @[dY)**2dBӧOBB®]/_n6 x    m)))Yd޽{JK.7pC@@Mve) x    Z6mZzR9sfbbBeV;i$`2֮][VVF s    hdZtٳgǎ;e???!$I$g~~~7nt6    @
+wܩO $I
+0aȑ#ϝ;wС* @E	    O?tllرc5,BYeY$)>>oBە 8    ѣ]wݥV5BIu]j) x    R*AAAml,I A%   r6  <q   qN/= i{    3q.N5 c    \ <q     W!   |sV^^ޏ*	    9:Ү`. d=   1vEz S    |ȼyٗ|#n <    Ct:ٜi0CCrrrk7B    !yyyfd2L9997?~q3a!v p=   irv<t #   |]M=$> ɘ   @{ @@w   L&h4Lb37Ŕ= )    d2.i:1sff"55U7.= )    >d21µ8WsΖy5-= )0w   C233YOZZΝ;sss6HKKB! OF   l!DVVVVVV;/l0 <q   [zEmLS t
+=   oic!DNNNu6 #   |N3巚sJӵ G   T!DFFFFF[O^^^JJs涇t <q   Cϟ9333<<<##CzC  <q   Ct:]nnyǙL&$99.     >řƼ<ҥCrrr8 x8   F^wNvZaf p   |HFFFxxY^m OF   K}\s    !YYYŹĥ>$ '#   |^7oΝ;RSSw(e\ Ɉ{    _/^\^^<nZΔ p   4Nt:]k)k    Qf9'''/////-^۸$I$> Ɉ{    b2\)Oz}jjjjjk"),
+B "   |Hyy3i5 d=   1Lt:ݼyڙ8SZ{     l6gddTNמk{X <<   Crss/^\KzxxxJJJff E   Ԭrg̕?bĈsf `.   G9ghBƜd4Fb޼yͯz$Ib dG   N6_o9k    (јlq1E? <q   [sVsxWK;s1} x8   5$55kzH|     C)    >$555---99C){     >$--Cvvv^^ltA;[~s;    -F1==j\Gv$I4 '#   |lNII1&''l4PNNlmF <q   C233YҚvLn pL   !͛6bK/^9wb. @@   $LܜW͚s0O3 x8   
+{c{P    -[sWz     >D!222Zltm֜3eٚ    >95OvvvJJsu<ׅr<d= X   !iii999F1//oĈzc4]#Ҝs\ Ɉ{    rssg͚\jd2-\C x2   8g3q^h0RSS[ǅ |=   /2=<n T    #I=>    suR\:=17Gk t
+=   3)))rrr_r d   \zz3ɮtT  oB   x35ܝ;wt:!DNN%ܦ` d=   7s-uH`. d=   k>+`BLKA{     9tKX˅ p=      ^   ~R3_I-lvb$ x8    
+z LE	    /f0ϟ	jrg#Iᠶ ై{    ocfen=    :=)))m\ ބ    s'>&)''d2L&ׅz>55f6ھJӥ X=    :Fo0llqi0g@s{ӳ= <q   $g\fsJJhBtTF1//Zr~;6k֬+{    FA4gdsQ'555++Kӹ~<o޼+pFczz+2< <S5   6sfѨ钓fsvv#YI233-^iseL&jmz (=    :=sss/^l6۳s^?8k,ᙙ?mNjjŋ/^|= :s   %''v93ƔzlvFK999;w	%, W=    ӡfEqAV:fN[XXX^^l1- >   @{9q9]tcٜn2'9";;ד,-8WL D   ד֡xɹ,`pkr6L&೘   @{9z"ejj31o/}Zܠ]E M{    BzҦ76L팇;ٌ 7=    ι{:`08ə7o^ZU    fsvvv;zC j   ^{.233SRRZ31L)gCPNNS2    zdYn#t/v.&333;;d2xŴ4g~9l6gdd @S=    ~b-Λڵt:]VVNBdgggdd931SZZkYfFٜr]    @{s]T;`0;heffNMII1999999<A D   \~?f2rrr;_EPvvv^^o0\K}97?K)5594; ~Yߩ   x+V<տ{9LB	 ?   1|g    @z! {    t̏IMM b    rʛn*0!$jr4VR \    p!4~n6JN(.gDQ `.    Z]8  {4   eE~ |q     W!   ^^$&i F   ;E {    t$Is9Dv"   ^\!]|gn
+ tM    h'`.I2#b!=    :c!v B   z<N   @iBx8    &M.o=    cBp* D   ~zdV OF   ~1uQC{    Õ`. B   $I tq   r OF   XV ډ   @= #   ^"\tT    `. {    ke.JqE* D   \}=,~* A   cs7 yӠ    ډ\W
+!   ^H|     hE	 x0    p8s    >P( x5%    Q  E   c$I.Л%    Qt\fv" h?    =c    >~H`. kJ    \CuC{     x4    `. d=      ^   @{9b+Uy h'      B   }=t #   ^N   @{se+ D   c$I x.    Cw5{    t$[ty`. A   u9 {    t= Ɉ{    3\)!=    :\q!   ^A$s\dY9T<    :zD9Љ'O:t(>>^k4=    :0@R__z_}Ĉv۵^oe=    ؀CVFGG_`3gLJJևL   
+BejЉh4cʲ_l޼?޿jj)S"##!    h`L|1wcH~7$&&\rɒ%W.((8te   @{Bn[P(6e#]ʲr8n\8oz]d(Sӛ$mu5"ݸnm=tU~iz㮫V(
+:xScc+ޙ7vMnwM|kնyܮp8
+Ecq;	w{\7k<+v{*i->M֪;oq^6-[ܽO>.j6nunx֡f-r{M^m-VК^ƞwo
+
+ڻw?ܱc>=zP'$   7|sͷȲCR($I![}gnrKm)7qݬ3_=Wq+B5iϭo^z4=%n-"iBOVZ;v"-h;zh1k}wa+sC+4Ci#sWvߚovʒZ|8Ivtd}G_5n[YsC~Gml6[]]]mmjUT7|s=7|pRot    hరЊ
+FtSoxvz5%-vfD}b4sngÂ5_}_zg$͟kKzF{`-Y+ʦw1yZھIwKv6Ѭyknn5lnkb".ֆZkqGj1r'͟G/UWN'ZSs{	666.[_~III!=    |$I&!![n9E+mn=-F$=#!Wn種íC2У=lqVi:Fе<irk#_5)4Md-~v->s{\-vZ0ggЭ_v@b0b"8w<>_U+kZ7p8qRy!Wk]-ͳ$cxr{94$>ͣ%p5-x8Mo5ݞLRz=vj,...))B$$$<Xx5    ӅJJJ
+EPPP]]j赚782m4]mnZKZli1-54}\<6٪v;gnc֮4?jMmnÎy-&;☦6|Ujcny׼VM_9v`5}5/x?ln`-Fn1Yջ?m<dRTTe˖6?~\;v	#F		q     GX,ׯ_jh>|ɓ'Me\     UUU[nѢE;vX,^{78dȐ@i     x-YϞ=hѢm۶Ǝ7nĉÇtK     ެlƍǏ߿#""f      o&rCCj^8      x%      &=      ^           x          f޽{4iRhh(5 D   N<o~7n5 `.    R__xUV566=zt۶m <q   v9xҥKl6ۺueY2 i{    \\ii_|Rjudd޽{׬YC x     aXV\tҀ VT*{-IҪUp8( x    me9???''hȐ!ZV]v-_l6S% (=    RRRdɒ{qƩT*Ivz7lڴi׮]vB    *պiӦիW+ʙ3g&%%9/WT&M2&iڵeee
+ <q   VLK={vرSLBȲP(3yd??7:| A   U;wӧOe%IBL0aȑΝ;tPCCCCC O    Zӿ~:66vرFcI6~B޽{~ {    GwuZh4Bgw,Ĩ(VK C    hR
+
+rP$g#			v x-     
+q   r54Ek x   8X17"2 x2   tK3qfF <q   sF㏹ke. g"   |ȼyT    >Dt:ٜi0CCrrrk7H. p=   3ΟM&di[{\c    !-4\ @@   a!v pL   cz    "d4M&M9b G   ɔ纤̙BT^Δ p=   1L#Fp-\vvg޼yj! O=   tf=iii;wu --Ma4[:) t
+=   Bdeeeee( :   zgOڞ {    =B6~Kw t
+=   tfٹVs_t7pu '#   |Hjj"#####í'///%%9IskC\q     >dɘ333322`06M= )    >D溚wd2LKl!    Oq&>F1//h4:tt:.C0 <q   CF^w;m'; ΋\   5kVvvv+ :/   䤧_B= )    >$++˵8x㜻 {    ͛s¬T}=L    Ez>--ms춯x. d   4Nt:ES=4 '#   |lk:zK6(Iq x2   L&Wr^ȹ5,3 <q   Cc0)O=NΔ p=   1Lt:ݼyڙ Ɉ{    _d6322FcrrrjjNku%I" OB   ]xs).ò)))ޟ8SY
+N% s   Ԭrg̕?bĈ6r`.{ 1   QF1'''''d2F(7o^8SZ{ 6   :N/h\    |hqF?"   |3qjz`pj{ivf G   -vg#I '#   |QR0 <q   CRSSҒ;8fhff d=*//?tFi~מ1ܷ3J%q99 4yyyf9//O^liN0} x<甖ꫯʄsBBBtB%!	IYKdm\(|͚UnZu\vZmc[Zy;/pߕ*$IiwM;hhh(]N[oу ДhLOOo3Bdggfee`" OF~zęꗴZ-5Vv:7$I" Kc6SRRfl6Fg c6sss[ ޯ?/-%x=V{WYrՔ)S222f̘|^'	 άgiiiMxL&SFFFNNN^^^NNNi;; x13% >}|z Η̞=;Ke]~Cx}?~  rrrϟ7oۈ-^xb=n7\ Ɉ{ /ظunn&>'MOe|F=zT8e֬Y׿( 2$LܜWZàZ p=W[pa׮]໲mBB#_q;wٳ<HM 
+{{vdf p^ɓϹk뚱wvs4֝4~ij{ӻw^6lXڛ{O|}{ |s~6Z{ ӏ)Щ<p7g	~Zx{WQ*7ݲtwqǰ{̙{nf^  _-l6gff6k {Ϊ7>|_}Okeȱ-Tr7k	!!nkW鮻$γ3t}_:dbRgϞTTTP ΩySRR+.lmHo )йl}{			;,3f	h6.ɺ)dr!$!D}U|Bv/.{pn@TߑS7}$t:3G^fΜ9۷ooll, "//oĈ))))))ᮬ'--͹>Wg
+m> Ɉ{Nj;W\?/ꫵZw<:IXS;EPZUnkt(T@Z+n<_$מOzA&%PTÆ{nw̙3>hc t4d25gYYYmY x>% <_IIɻ[o󾉌h9{^Z/ۿ}MUuXypdUuBT($PZgGNٻӞM|oK~riBn񯼒zg}vĈj s&>F.4mw=,3[3 x2;vli<g5j>h{JE{$ܡ]=Ֆe҄Qq}ǷEGXoZtUfذa=o_~{hh( f0üy:t-gC \'Z|ɰanꔔ{_6rH/zC$my1ue5~[.ܻ[[m΍HB/0){?sYIi7OEov* h x^{?O_ş7/:v`l-a(+19#z趓WFFwJk]XDsɩnWV1OO׭_Ν;{2 +tm4 '#<ؼy#P1{CoV)6Yik]dP(j%N1~P$p(5~rIt8XRy뭷ʚr~̘1
+ݠ ЉƔ)srrw}= {+6''7ЎۦwyIwe,jRvE(mf!a̤urjB%la0Z[WeCHfcGiUjo[7wd6 ӝY^w육9==]wǇ ||[\,>|8p1\=wf#
+uXk%FVXQzV[G7jmP=^މ%dȮ
+6=6}9s5k: :#5ܝ;wt:!DNNNGa$  ,˚5kvZZjOplʔ)!>8%q~!;d>}Pգ5R@_Q7?pJ{m]$u
+էxPhDT>l&>O%%% :g#"\bo'Z{ S .Y׿&%%쭷?oOTR!17h{C;΅(f%,^#o6|v
+́yYϜ9s̜9s @|Ė`BLKAr d=p<)))F{[n>&}?١5
+M!*eUECPhJhCu	٪ٻeMigP(>!=jyy9eN9t, )l˖-3iii~sf?~|@ ʹN3_+l5aF&rMgʹ*(:Ynݾ쟓fUGXX-2w?oyƍ |` d=ϢW_5ԗ4V(.~oC)T~B72j+kkklY!V!?\Rm棺WN.'Z3r-Sz^~e| SȐqJjIfff  DdY޻w໲Ǝ~ݙ͚5Kt*N݆*MVo$i.=V
+KNI}
+6ua_}ԩSsss) aE  Ob|ofM&M'=\uH [komk߹$$=WVaѫכ7o~n￿gO1Ͽk[{  ?֙3g׿.[,&O/&?\W_yġo\3IL=$2")7cŢG׮]OO<ߟ HNNfVf 5=۱cǣT}=vZ<?~?sW5ؕjP]ˮ{V;|޽WYO޽{x8* ^H. p=@UWW/Zo47%%%ϧ/Wʲ2aoJ-4:n{rss{nIS +a0 x2& :ppsybfGMHH2?#x]zp8nihp4TQDQ(?mԎ?K/>} 	!$Ir8T < ظaÆy]f>΁iӦ1;e[JeX6KRrB-f*<mcmڴi+W, } OF=Ж>g'>^zQZWxΈ	Sm(=s./djz萡]c?oΝ޻wo* ^{ ShϿ뮻&Llݙ͙3k57ԚKOKJҽ5.?_De:ogD;cѢE /;;;%%%##K GUU՚5k^uI=RXo(ONM,_{ttߖ
+o_Tk~}?76m;wn tv,3˻Ld2\&''Ԏޚlk9:.55UL|	x/<6q[RYRrA?xBX^zARiqfXk~aԧ6m^nlzSh tj$fsffffff_9䤧7fff.^`0-hjƬիWSqđ.$ڬuZίo/)>#qOT*ڳgsnڴ顇JHHP*  a6SRRF`0z!hPKOd29BFɔRXXH"٪U~Ү8q^}sYdjUqBnL|͎RETt3f82h/NOO;w_Fe 3b0Wre=YYYMy]<Tg$7oެYrrrfsNNNZZOq|щ'|a7]uUHL[qgL]bOj?ja1.;uFJ2)))*۶>ݳfzg t.5bz^ק233YOZZZVV+|ּyrrryp8k֬f͚Uro/~GOXc}]@kH>dM4-T~HnW}[3lΜ9,hhh2 5fhtf9;;{Ĉ9_^?~e4g͚% <<<33NaH>|ѢE}Qmn?^WYoCasmWMM;y`}X `]}yFe0LQ	M(UϯHJJڲ%7_ܺuO< \M=e0A^^s\
+MZZZg1)))+zl6322rrrv[gk6ϧ vȑ~z	W=Pbb"YO`
+?4kC]{%=^]Qڲs*"#nr
+
+
+y䑅Q da\NJrr`ùl6trL:Fŵ~*UҠjݰakVVV_!tJQYt`.ٳgI}X,%'u>T!Ct֭r֭ӧOիJr8Sγ%ʲHߺ.o~8/wb[O:t7ܦhqkj5zm^wnGS P(={ٳ' J%>lfMgg*;;ד0+++//d2eggLS;gffL&!sB=!,x饗
+~>s
+:ʒ]PtOU\80pd#6),,lĉWo;v6ʠ/'/mfWнq^|s*}?-TUqXGs566T?RmO'''d2]Er.n0Zl222䫤t:]|q$66vРAeee,Qy	!IBR:{I#뫊PKץ	IIe+dKeg9&HBInS?t{^_YYz9sݛ<EZffkMZZg9`08s7pu$fszz'ϒ oBohF|-[^;{\w|:rֈϝ>~hӢF.9de ǹVZ񠠠?߯F!ꃖՖ[nS'O7׾<yܹsgΜ٭[7)s>pE=ΦNd2r.͚ٗ5˙1͛7Y{EGG1b͚5{`dn.?َ%vllhhKϟBj$϶T]򆊳ܬփ5gϞ=GNVRR)^G?Cwyg=|s(pzN;!''C#[kictgQjj*bE^}Ǐ_|ۣo㘸s[kt4֫lrZp<[_m@HقXάb˖-f%rZZگ]3$I<?17wN>KOOݻRxO|wxdNg6?Ųs{^&fJOOw,/h w
+9rN[lY߆zjҹP7\w}9aco7qS9{eq%RĉsxeFկ~Kz#YK|cSN}ꩧ>ZOyd2g{gCPNNsT5^`02e=NÆ8qbLLƍKJJIR_]jBnſƤE:bg
+w}QQNpl۾m+S}>~e_:2Y4zfcȶ~?={l6+ B<PZZ3v͈..3BNGdYׯߦM==lllF2Eyi@Ⱥz1v	E}3Κ7((W'R[[vm[[[{b
+/=}]2mڴA͟?TI$1UN[xk.233/۴(Nҕ	d2ٮ>---33ӹl7o^7yyyً/rFWQrrr;eJtF=N$=z8.k׮Y4Uu-W1QBmP#P_a1tv䩓V:#ݻwj\(HGgϞݥKsN2GeB66Isjj`hX!\~0==9D+336x(''''''?M;Z=@{BCC'NXTTcǎGG-!~gQ_y!0(d7o$۰iN82nS(Uqʒޔ544?{9rd	}k$\ci]]Ԗ{͙3gʔ)j ?uis"s6gL4p1n;x(;;۹fY6Mۻj~Ik;pF}`vdz>sqqq3}7qwQV|?
+/ǻ}vo
+uc}͟nI<\7~u,wo~5Y/G/mט.~ʑoVqJ~Z:7_/111>iBBB[Yb<PUU/<s*U?6L))) ~>LoT*ҧO3gr	Ȳ|A̜zar!;jЁ)xǎ~_Yr8s}V2$į׊VW-[+06~~G}4eʔ \ G/?lذAi[ZZ*:<Og30Yаy<G'LhK!TVQ)/kjnWp8Devai^pz&}4=o>h:%Ŵ?W^9w;~  G?###s9kxX+^FEy뮬/\ϧ}WTLkl޽Nd<?)\'WWˇ/8iq]"I9-%55=K}ӖR?hl)jsNy_mݺ[n?~QQ{жl, pH,IpVIICӣBLFvXDf9rdf|uWTToc*,vz,ϖ]RGϟU$eᐅ$@i7+NҵcLJ|bFxm&}c~/q8b_Tkv ~*}''&&:tRo&Ƥ#nG/yښ7)6lꪫy7c#l-҇};p@eYl\sWMSzN3WB ??Bҙl1]9lwE{)wNii~_?'ܷo;Мk!vWdd+$22='DDDL0a׮]k׮ݳgODXF$ |5yk_tt/g5\NGj7n:ܭ0阩[oﶝyjNBv??B!f-'fޖػ,ڞg\	'	I<x@:q{dÆKKK1b@s6\(Inu"Hp_:jԨnfQ'TPPx/~ӏ[h8!ĊUGBF(~Y-	!CjFi:k455U+V	݋+w5jyrʠ-ڷ7+3?g㡡w}C=e˖F1  YW0o߾VuŊΝc.'a6W\<y7|i7o}c5ґ#\[umVkwo^q%!!a6Xu^n!)?ӍQ83vׇnQޭ/ݐ7{o}Ŋ55u,;ga-ˌS|C{+ju߾}ꪸ.ְ7c9{fٲeޘYSS3|:r'WӣG
+*;_\9h`*z|Ƞ8NyKџ_bBŞ%g	!͒$XᅒkLM||̾jdD^1cHMM]rp^/' Ɉ{C4MRRҠAN8=l&%{{?WI1uT
+p")1V#*үklB ., ,,f
+Yc8a٤(RKh&::4bcU</\~iyy9ϒ${ (ѣG{޽EEE55:Jʪ˖۶m6meH0S#u&p&**$(PYnnB
+R!"#$ɱkm+Www
+!DD߉gklVN"Ν#==oi>b*_p X=-CX,9r$C:r//~|۷[gyfAmCVT|4ZYq244HRl
+]v.*௩[~;?tӁ JBFV$,+%mNw5w=O?5>:u~H|k$.3ک(>!,DӣGѣGoڴoM9rcOb.>YvxyIYvHBREF&H*Zћ]/eI0.a+i#*KJm?qж%z$pM<q`ٽk_s
+
+
+z5o޼kvR_/DJBJ,,IQScj$&h}*,6:BCCjj;dZ)P*vO8[ou֬Y}8t\~
+_S|{s"##4f̘6}sN%pmܸs'T!b{GX[]^_m>{JK4ñB]wB֘^޾log#=c{6T0i<}ffUWW7uvưA5$?HxbQ($a6[Pk=zWS+W	!6޽*BDD!*+k/~ rL\wӿhѢo;8V=T(Ǝ=zϞ='Nؿ5n֏t8s7W81nJ$aeGcCphrxG¢Ɏnۑ"~Qq	T>wdNR`]^G$vn?{l^^ށO	~'{z`t$Y'	!"7m,-m߫gd2ðĄ4WVګF5P2QTTv˴J(8Zhbc-rIiu.:J$]sG?-\055;HJJ8ݞ8S|EDD:O>6mZ~}qqq6MڪuK߫7?FvuFP!74Z-
+v*0V5Z*PXDL!׆EvsmpwoXےFt3y#;v%&g(찗5_{#Cؑ/'g_S[[{>vX~ﴫTTi'ذA-@[^t]m;_]cD$ʪqr|`Mݶ=zCKESY8s<O,Um?B\37֤L<=z4 wd=EJk׮]w]QQѣGǎ]S帇Wؽ~IHx̴tMwn{7-UkzZ(;w=
+rU7xȮߏ}8}tOqRIpŲ,wܽvw)UW8g
+.
+1aQq<WYYiӦSSS3}2n>x	ݶn;:\:D?=p
+fX#!kȈ #GzTZ>u~JU/Ё;i[Y{fϞ}u͞={ԨQT<(>N|4tо}FrQ[W,ؽ~IPXԔ~RW?~~6OmWW>/CMw8vߑk}ZWҨAcJM$ߨ).=:P:}'Bz&TkyۣXTTV:'kz<1]ШՊY3n+B$M)YTJ~ZaXHLu}7`Y[3)u%룯y=WK}yyy|bTh%o޽5͎;bKX,m'w!ĀnrmVMEO^^7-Ulv?m].Hy}#~q]tAc
+evmUB踄xlnҗ}>t?)[,<XM[N	!Q͸uض.U*/
+!޽ԹVCղF#w$EV+9ktі?)H}k^r^>}o/ʠr-	>scX(:\]W_}ݻo~С@[ydY޶ҳ𘄡Bt]yCWn_o!?p+BR(v}BI`sE#'qm{6~!H:޵JW>ZtxWYee7m3fu9$&hfw/w'Or}\*[t!iUa,۰qoYYͮxvBJ!&ta;1 Q|ްr.S⯣y/*{饗{xoh6"\"P|{4Mn݆z]v9Π *ӢE	!,uU_ḻegC#7C۬M~/prT\BW!s2.GâOP}Ol$nVV=Fjy~bMMyy=ڵkקzG#<J;UV5|;F,琋*2^Xt!?39BJ$$)$pﶛ;\rjJU~wz|K/|squ0Th!%/		5jԮ]6mڴiӦɓ~Z38WB8C[F$0r*JϜ!rW]..[{_`HS\4ܺT?^GKUvwƆn}tGu*++?|G~nQf W'=oL"[bRU۶CΟeY.:Q^_Nu٣ƍB1&]jyG^yYYY3"##yBJUhƭiڄy̙u+eiQPhd°	@[c÷߼+g
+T4569Vvxv{]Yq`q͢5gM'5]hL#q4=BaׅEu\Ls^FGylM⼼uo<uTjj?~t-Ne:efpnz%t_
+1Qv?;fZ6yg/^<mڴ7x| =׀J5hР~mذaݺuݦ)J*ܐkoTn[r?}Gq	Q?IHƆ'ګo3fZ*1y/Z;s#5pG]ssw-T(UI#u?,~dך3B#|FС;l5QvHR(&Wl6ѣG׬Yx.]|'ԃ\\h,!'8̽{^sM?]Oc {` Ope";lP͏3f̞=;..O"x8Ѩ9<T`09rСCW]9P*\PhOw۱N8pE*ssm6 (42n|B#bo}>Cٵ©'mVF۽!~W,/>gȸ.=Tkj4~#4RVP17G%yRŔf]|ǯ_eIPRP80ub7k&jt[p. =+,$ᶩb_9}wyY4 Ga6mϞ=ok2bbbZg|iYr:{ƍƙ3g(+4j̙Ҽ5gߟ,}7򲞣QPۿx||׿?R_&QQQ%g^W^,))\8Rڵ`j֭^U]}eYe<lܿkw<y)땛CCGWTTtԩݻ)8W_$MDR;d3gn喴͛7766RxG9 { !IRXX؈#T*F́5|uݺ~k_{c Zlb:uL}{Sjex>jxu'6w9w6444P\q$>"P|{ !<xM&S5`,>O^bW{Yo?t}`;th$9^yyb+-Q-۸=]wW_Y,|BcFjNGbP(ؿɴb
+lq
+aXvڵfOu2Wt[F&'˲VLLv,գ//v[pn||SO=um1W*E@[J 8w]t)//]Yo,fyuk63fLv֟llL4|HM
+	V_
+
+Zheri['ЫGM{l^뮻޺x⺺:se`+^yP|={tƍKLL,++۳gOh,vS'wK]]}ݗNuZtR_oohhll8T!bM:	IQVVg3t]cj*p}޳7|;sm{%%%v;Sn2q~|Ȳ	0 x2u6bĈm۶Ŕ|Τjjko߾n츸gyq2v{ʣGK<qϔTmw2ёI_|vw>q좢"B\C aaa!<<d25XRyyus_uϞ=\sCuQQUVCYPPjEUTT'+lÅTI,aݲŋvm_~B0J5% 
+4iRTT޽{,6)E'cN<W_Lv=f7XX˷
+Ş=EykDEV]P]]ըaC{mߑ_^N݉7Z?w*6{/#G8 _F2dH^f;Μ9ȉ:m۷-{Ɲf<x}ܐ5AO$F}o]HkTTT-嬭?RcKO6o<jԨ{n p4z4XOfKJJVX|M^{oBCzpBuUUM7_am5jin*tBc#;7~kԎ	ckZr_Q\\|w?Û6m1`?}Z~K	ÇlZn:&x_cǎ5g!̙2ɢTr,!XyF3nl|XBEDdSu?b_EEuiim=syRwM^466>>֭[iVOh?% j111v*((ϯ64(0x-䆆;v$СCݻwG}(:4 WU[eY޸w?p~C௎8yVDC1@sƌzH}p\S5s\t_y@ϲg0[XXh4Px˾Y3:4nܸw~G#BC,T.a.ݶmN7l74 z޶=By%1t`__./{~̙lٲrKjs < I׫WEEEFq9d!:xhƍgVf=ÿzn3gT*=nltC-2B4؆[MfԽZm___(wJKKhCW@;޽{v޽`핕LQYYiuypѣݺu{q5d=hj{֩T(XBګ蠠#G[˩T15/Kkϟ뭷<<' e{_
+EBBBCBBmUwxEǿeoOIIk=c ZVUݨѨ{$l!Dhc^['+)SU4)zl_UZJJʫ:}7x| R5**66vȐ!}Q*5e++V=G}ͻ'h4hAQQQ;dp1[,^V`6%%FTiM--:υ_Ϙ1W^p朲 YJ AT0۶m.f*!vhc=ٵ]$}ko=kM`tmBxWקCG-VEpְZ{ni1^&m*HAՖO:e0zSj^h[eecCCCHWϐߞ(8VJUqqZMW_:{W`ku7tǲU,Y[n9sfBBJŁ".~ Nħ8+D
+6lG}t})o֏s?fԋ&)3k{8O.U666&Lp,RrQQ!AApe}սkl#zi5Η>S%qY]ܐ|oow}8p#IRӏ0 RÇ.e;STMcѾ0uzb@⍸.tn|oWܴ;MWӍ](jZ=}vۦŇs
+Milڸ鍻=q->_gzM陸B[R}]v544Htk\W+Ip- FBe]cCv9hU.Ѻslns2{>}`2***,KCCV2hR  qc9_/_\Op!<<p޽WBVVƍlۣ=ZfE-sklB+6ĸ넵q3*up@&K`чhn'O4={$AsͿ x ѣGW\{)pMhz\#ǎi\O?X9YPTUe))ׇk5
+!F#\oo޼ٳھ!~<XhS؈{|á8tT_PmMMM~uFMG9E@ UTTlٲ>nx!RP @PۿW/z_|W_UWW?;4ji~dƩsX,Ȉ Caz*fYY~䩪袢5TGɲdmT={ɓ\sMLLN2h}킚S| BqիW/YSLy/,8XJeju^2O?ݸqju8!^ ;UQ]S`[v#$/kẃc	}Rgׇ?¢$R}Iٜ8|v
+NE_WUU_feeM<9{Ȑ(ZMeɔJelleYu=|ƍvM7T$>w/Κ[
+vZm5BB1!TjDsPsdYT={1<<<,,,**,m("直X|EǏhFCe)Hԭ[_˲{OCCCeՃӧ hQ\\]`;
+VkZpDqhh@pvdp}#ܞϩ;yھe˖nݺ5]h퓈"8P|cq<_dXV^۷o	OL֭=^8^c,ضm_LӅY((-%_O-nBSZSoE75Nca#Z_T[:x4  W^]tٳJQ"8,k>[G'eݺu/>|zpDN-&&RC};v쨨XzF"ˍ]hU˖8 los݀~ݦ7T](--.)#Qi?^UUϷ hϑE qRPHmmM̙swXֿ/o0axٳgW_}oo,)p8xu֢"#Jۻf5sЀQG{k+VVVul5gpڨܶS)nݺEGGkZʂ{3:>4%g~UUUk֬yGΝ+5r|Za
+\~L|sν;v;;oVן9[ҽ{TP!?ٿv]A#JedDH5ySʭ=>Pkfsaaayyy߾}t@epѳ&@)>:^TTbŊ|<󜪪۷׿~窪?|8jԭg03$IX,F*++[p+9@e5ՍUQ~$6[]O!,aB.њFGձ	,G3gϞTm@R__zgyO_}?HfSmmÇyM=q"9A?X,-cԿrTSOJ8{?~s߽n]BVRH{pRѭk=8QSЅO$ʯ>&&&**ߟ{EZ^~}AAݻgΜަK.]h>;ܹ2Dqo;{Vf׮]<jU*5%~g|/w܇Gj~~7_wԅʪH"8Xҭ%%uݻP=_ rmb'Nt]t%mS(h4cǎe/ؼy)Sxk[+quϞ=K,YjUxxo[N֊NZ[;})??k.YfCYǧTWO?w/$ u=Nɲ=G0.1:*<<%|ECDQ^^P(t:1@ۂ?pu)%$)<<nHLL\r%KV^]PPpСӧ0[8o>sJuUQQ[+t:*ߤP(n**R=JZv_~iZԭWkαo(4Jm#tS6FOʫTHSotC9{ġ|qرCՋqQVnX¹ۮ4	ru, qnI5ݸ]Hn7.Z6{7輫ntm]WwQ(nuhB53Moƛ]­;Znm^+:BXNݞ&׍7?Cq=ƴͦWhll\|wަ3⼤=l[{4}\n{3tmz6CZhr{ޟ[|hm/9VoƠ{;v?ޣGo΃ޱc/^+((캺!T$>Տ?_Xfwޘbj펢uyC7   b=B$/=ڳg:	
+
+b\jmhhhhhꫯ6lԴܡYHS~5ݠ"6l,>7Ywye?@555?$	i%I4=unvFukkqή7,߫w׭~nzCst]V-Ci#s*vbNp?<jogB5U<<rmcݻ̙{nSl2'NtiӦ=bfn3g]7+kϜ9nANhih(+"rfsteee޽{ddy6;\}7MOZ<s;l <qx-X
+!\[m\9Ǧ.mbڬipvrs!7YL:\۷Eޙ&)r]LI[5=nwוJ߸%_sR󴢵}.
+
+*++sEֳJ;?7붘i_t-ZLUp^kv$Gk9=i4:oy<j-jll\lY~\CV{pTVV.ZhѢE7p#Gdd$s -&>zZ}֭[J,F nfF+Onv[mIIEZjjj.\ѣGlllPPY.JHFЭ[眢6M@E$=#!Wn種[o΁[-j~;M{]Ý֚8*6ŭ'y>=5k!W˻N|-5CAM_M#Oh-qsvٱ<l1:tnCs]6^qJw{s4yrZYYY\\\RRR]]-HHH<xƋr,)++[|g}vԩI&=VhB޽'N(?߼ys}}}CC[BCH|YP:q޺#µÆ&㋜GGJLLѣ3=.]P(Vk{v:5d1]ԭIĤ6K?o,WKJnMos'->6h~6]X7bIy݆5ZDMnw1Mmƭry
+:sسZ tk6'ͻ"^ŭu=![,-[lذDQF;v	#FGbqtΝ[~}VVֱcǦMFӻwoJű)S3gμn.\}={EGFSY*^nYvm|'R X,ׯ_jh>|ɓ'Met.\زe\XXh0222&>M+pH+;{|,K6EqS$I۷o= xu-Zhǎ%>>k==h[ly뭷
+k/,d=@)gs,Xpȑ߻{7fo|$e]GDD& [ɲ|Em۶-66vܸq'N>|NA{jjj֯_dɒm۶%%%>zTp0
+8:RuZڂ8`G߫G|DcQ:tG٣G.]v=  x%If͚5r><""k\o,,744_O?ݰaC~?%9z+.22r٬NK{wVT>蘤ZA} WWްvVRz  ^,<<np8Z'/aXnk-XmxgkbղE^_={15~jwӧO:tҿOp]d
+?YrM?v#FƲ% IRj|p_W?ɓ'x≏N988ؗj|σ~^^`%>++ko]/	x3璬'zl6=>='  ]\a}Q^^^hhC=tOUUx]C,ם;_տmwl5cۜ?0v;   ӧ5?,Xn7|S[[1J$UViKKK<XYYΚ\  x\16m߾}K,Ylߜ9sVcw͂=xʲ;5JRBo(w8ԲT
+!<_*WƍSNN<VoSǏqXuj+++CCCu:]Ϟ= !e˖}*{lh.]Ӷ{Ca%'N/-[LJM/8a~k#Fi4B?o5"$@7Ic\jm@@,KO:sfKccc=  xVTT/NٸqOձR~hQg'LP9Bz-[97 Le[./o~;もf/ZTp!|{~3>WЄ$IJGҭԩSm/JXԲk,7XUΝ+++Bu=,,  }8ebZϜ9p¥KZ,ɓ'?Dk9l7CuلI;cK9,Ct> uuB!9Z!ԲAjk~'n"}ʔo8Jju=^R޺xbTT׬:l6B~nw(RwBF2
+
+T*U\\\hh//K}޽{4is?g"n?~ɒ%yiiiJJMllG,jFE:TȲbKe?jo*IBƯNW$Z]7,Iܙ6|xBǌ?/?{.]z.X9sl6
+ZmϞ=p{{nVSs}wu[K}[n
+ɹ$IJCʲk{vӠ	
+$ixCwaJn]xFmD=zpDGGGDDtEfFtɓ'|/_~ƍ& {:uڵk.\xٔ$9%$CZsvx)ݕJa(-X0{ʔB%6مHwR*JE8/^ѝw;QǓܒ_aS8t+WAj5BSt>駟߿Z|:sl-;_\m:^zxC%!UGFFGm*$M
+TQQEF	!'OΆ0!=wju`9l抺Ξ?_T~>pȑA	}zhXeYqYFӻw~ދ_xU=m6He ˹s6lG8qꫯ~g'<&_h]Xu1cvbGOG,XU\>!	kllM3,߿]><p`n&%eѢۧ+6L|tr]w>qo֒jk[_sl3W547Tú?1wm	\ߺnBCƓq@BR(7~\v}{kz_rsk$n1]B:c[,_)J%%%*wL܃:xҥKdYV֭8q& <q~z˖-OFyݡCbn ɲ]\kW=j!DZ3f(~juDxph4B,?q¡VԵkM7=۳nJ射7l;4h??;wޝʹ;ZT*,.O>9~_Zz]5K?̘C!JE1dKJk.\i<;O\}Uo}Ks1'i<y8xdb.!Ĩ&N=<tgp8hm=.KJӪ-:|r=C>rkhМ9+wx`.Y9KG~ΦȽ{Y&111(( G!Op,[>;x_{	];9аkjju޽OM,ߖF^^.C0ƁBCl~>!Ĩhntw|J1nܯ?qBD#>\!+]ty8(=O>9xE;n`ZA}~rՖE/g*P-?&_/KZt.,r]AQIvo:xlpjBh7O=Wntը^q^mS*_a(eY(REEݖL}ξȑ⬷œ~9֩[#v GY,+W.]4  @azjժ1c\}N QxSObʕ<ȋ/|N8wy:LS(O<yU{!
+K><nB4
+|yPk!MMMMON+IB -yЯ%IR\^^XU%P=++OVVRs-::QY;w#***>쳿@o~b,;
+4dpzݣzjUIT*EH_Ј֦±XW/*+4+,1/={j7r@C!v9}8}7ib!q6c݆ͷklsL~k	ԨJFR)"#n6LjRXoIvޢ8}teeNKLLӧ?Aߣsrrj%IOHHصkf3U B܃tO>y*++߾?|MEED^g!wv8d!
+ΟWT]-'NKJr(]##4 ???pXBZ-ԵJR%4TRJKÑأ,˧kYk	!IRHH}55iii?[wjvjj(!t}~~pǋ^{c?oƼ2lW2e[-MƁ*HAEuuVݺ8eHAEvJljqc"k<',V\\\[[zh%Kݻ`07NRIԵkn!  `ӦMv
+ <q.]EE7|O>ϟ'>++Ҝ*-BtW
+(˥Q:NB\XkktߟPlAjunw8$I2B W{X֢r!DdPPDXXɓ6!Ԓ"(*)(If<&L_lE]Tl6GbsE"\0K[uXaIZޖoMu#m:^gcOlvU'&vv6zਨG~$Vgi	!LK<p0[ez<yK.!!!,vZ6mZzR9sfRRG#*դIdZvmYY A7>:LeŲiӦKu瞻̙UǏsLp??!D~""4ԹNV&VCCذpQᢢ>H-IBАB\_))/!!ʆY$fBT݃vJ-[V\iZ-;SP/$O]_(IҀv.bwEE}L*uư^=#mC%wu͸K;>SU]3j -@di`=IxglؼwF{]{783h<	$r5a [CezJ!AK|ޯyK.UW}<g͛q܅櫟u,H-^q=]Yǵi1},޻}rQRQ$iVWԝ;wt:]RRRFF!f`?͛7oݺI>!izܹ[l;qKKK	!à  ;TO?;w666?詧bcc8SмF:N].F4!BȽ;4M#$vBbU*^)5EQ$?EU(\ 'IZMݞ9LFbwݭ[Ĝ>}~"z}\C/[R)䙒<$*_XX20gjK˗-MX	_h4썺]W}t,~|BJg)Lsw|CNRBDQM\<(In7$8QSSS-[>0qV^Zr]j6,_.3  xPryǏk4W_}1`La$)8N$BQ#nRg׬֭nt:ӟ2$!(j4<Z6zBP9mR0OݹU*G}tP(5*RnN9F+<`[Ap\\V2ןkl.]iɵԔBHѪdg$l0T,f-N=	O	w[ښn\<(S0LfffLL^0qyyyG\\\T*3pQ%+B09 @@oܸ(g}PRp=qN#&56[r=Ek4݁@^O*¬TjU*HqVD"I^v8Rf$IiTW};w_){ޒA<'w;ZZ} 4MVY'xb^zCҽZѰ*B=oSxQk.'f_jwJ۲IƧ]vFML:}`]cS?!DWٖe̛G{<;wYOLLdYL\FFkƲR$IEVoܸq*t {`<]zEW_כb7s>S.1&&M&B@Tf46Yu(PyTN'4E]ljȈ#v$'+q!$bA$Tzśo*O?ի?O=/x/`I24kϖ-M$֐dK::>9pԙs{ZNEg^!<UO?=pjBMS{fѿשOoI`WV|m[
+h7XZZZ@|||jjd/&a^?ARXh4 D=0:A޽'۷/|s+T73L̸8BH`A\>oRoϪo/]Z~bϲB2	ٰhq8U=xx$BH#IR^R!]]TTȑk&$_z׿5!D/E!񙤭O>zwYFzOϟlieE+.L$XCQMS&!dyanve͉-Z8귗ϝor}-q8||t귗˗^YPǴ$)P8y윜шr  Yq|ww{G9?R*f-nMBH][ۖ8%iiյ&&)6@vm!0D E}Μ/fdhJ<EϯZb!$PǗ//əIʺrC`Y6%%]]+TUUݾ}{Ϟ=s_ym\+zuM}g_́+Wkܻy|:MSs]p
+.{qV?=GR<UW]N7.&%	!>wulRMG =ʓ7ouBbcu/>dLd=$Q.7t:5Q2}d  '[DQlhhO~?3gVdddee(HK(Jkk	!V٢ٿ0Vۚ5M}
+ %`PV<! %&X$BH(~tԗ֯ӝ!A8yzFbb*eP(222ǲeeeiiiׯ_}A~VAXǟ?'_{u<H^sGȫ2BAG\9'?/[Z/Z&{DBn?،~CxF]!dҼrWX%ICʆW\Ôh  Q;---/_-wbG)`:v力	!JA[[twT"fԢ)@(&RT|3??|9kZKВDtvmX$P׾쮮_W^C3V+㲼$BO=W/Z{kO[~hyB2+5|/'.7knhkwBBtlBKd?"BHދ-Ή.IRGP忞޻ﺼm2	 _0sOj"ƁAfsffZfq8c$G (\@jjj{ܿt󦪩 yLo/wd\_;+](Bbx1)EQMIbrђOa Bx~n'zF +0INN|뭷_ooZUq|&CW¤$Ow<{co+Y 17')?/9.V'_hy<+Wۏam[i(j7YSwVzO&%ܞ`kRVeϷm)݀,<޾80=yS%֬X	!OoiɁouͭ-S'rٵO\sзwߵs}g#IŬus-LSwM.*ںFE-Hxf.  N{\ ߿>hjjя~uCc#$	-I/-\?Ξ]JIb$iʕpBy+!MʛDP:s毞{nS&<n
+~s躂x"^:Looկ~u>y[[,
+iA$l\?iA띿~C7'N=q.2JfE$Ix]]N7(On6k۴0?_O9VB0UBqqu]͓Ge&,ePݭ=wzbgya>~OheԂ	v)Lq#"I"'$%KL4TRWWBZ4;  ''T{{ٳg~W.Z?Z[͔y)o˿T(ݖ-M@\X$P]KKG+>Ve˴zIB/-^5)I(k:d=0,W</s'\ҍ*dhg//|vfwVG(+(J/[^9'rTf)^y\RkODC0pΒ߫ӱX[jJ^-<<2ԔAfm07!d͉w7\1'EQY$fv:	<<Q,IA@O. h?PI}_W7ny^3=܄|/}I)nT(c(7~򓦎{WwtKޓ	JKQScCCTMo|'67ǕJU_pmA>9NE11V*+%	?_
+R)JFI
+x9bYF	o 	C,0C^ߠ$I{$I%i_3<chFCڿ7?
+? F8:?)AzNO:ۚ1>Q@/~_ܾyrMh4Ge8!xwIZu9}+x^Z1L%~{zNR(S	q~P^WDdʉFQX;؀qӇ(O944ޮhӓSSSA@uLF  ~{.?plROOb?A׭h+x>vliJJw
+s:CC-+F9<֭oRf&atmMM_OB<S!0Dip8x]`ZV*h ꒒I D9=yۿ?~<%%pƉr)6vaFgGdY_ 0~NhJňޖ5WDBBT>ҢxMe/_/9W_Z|h"#I!楽.h4*
+^sd6P6 f{f-/OS]]MtYYٷ!QT 9R&d3L!N75!&D$/Ps҅!ӎIq0<Zz~kC4M<x~h/gy> ӄ(W7o.^8%%%55Ycm61 YH?p޽J^כ@Qf%E1ΥZ{{yziF55[έok;zrߟ2F/GLեܾ=&&f߾}}ʜDB! 4
+馦&QZ^3gNShرbΝ}  !U<Occ~xa׻ulšqfAh4vx<JET&SrRRǳqDX-};?1Q+nCC[oky]Z Z$Qےѱ?99yٲeh3fpl߾fZcF'\ԃc8 @4C3K7o=rEQ$ʛukz|Ǜ:<V:QWBR5XAKΝ_>y^D S([p8ۃ`BBB\\\ZZ:@!XUU5r]v  l$<_WWwȑCCC?	P(e<$yfurokhlLOJh4nbDA~[/o0%8	۷owttP!I_Hg {f@ Ҳwl^xa[Z3	Zɠ-7xAk9|89!qF!P/׿nkk7|x0j$IM݋\ODQLII3͢<7; !]v=m pA8#	y>f?,tJ<ܢxܹU(].B]~vϗnD}DR_:;۷uuu555
+7. !/½>egggRRhIHH$	YL!T  {f3g|MMM?Ϸiܡpy$=A_,izWchMNN.^{7ݻw}7]FTѫ`D|zzznnZ@~0FHy#r hgƐ$g߾}/W\_}E?0@a'OK?SYY?歷$QLY6?3rCK,	M4_={Ν;'\.O2} M09Hn?00@tbbd$	o`۷ԄRVVfZG>7;a f{f z{{?;v,''64do2=070q]]͖pOQ,A+_aٳՁ@`%{> )_p8͛"kll,,,O5Ree\cǎEQ ѮwwG?詧yu9|FFFJ#P^J]7&ao[NV9sg?;94<'קx<**??`0T*4SQQ!g=嵵(//'Q.  r$Ir8gΜy/_X^^UX,h'@Q^Q_W$775&.rmevvWooO0MZ÷jkjjyQ|yKZM0qDZ:淵B.S(=`JBݻX'KL}Q	zr D==QG$w};wd2}_b(Rf3!nAhKIquu;yfl0l]콋gzes栭 SuܹsAQ|˯c "
+lnnHLLLIIE0**g=  Dqƍݻw:thΜ9/kCC4ͦq 
+9y		z{k4~pۿrUtwT(@?~*O?rxdy04}I5P677B!VVZ-:UUUh" qO=p~o}*VTq`^InZTh_x<!B0`f[S\V'/eH| *ڻso~Q̛7/!!0p8***FYبO=  3L${ܹ>}ZV+_vi\yw3gg2;^dkB;wcy4Zvݻxxw}X9j84DvMQRLLL 0ʝ;w:aOMMΝ;A%  Qqrs!7nܸSu:%quGde-4!sbbZO?Z]]SGGo(f?V={700~x($ (agdd0`~î]vnfϿNlc#q@ r{`0xڵCԸ+V<v^Ɓ
+Hz?Gӄ>|˵:!asjo_KOG3RLIINSlhh裏!
+5> q<CYݸ4Zb6_~eyN.'BJJJs? @4C<}g۶m>즛77oz`"!Xyr#$IQ$$*/,<wfSof7B_{\/Ԇb^] DByi4XNƁqȉnff>c	݃ >F<2y߾}jii)((WRZ_mi!8&,(M6[z6+{{Ξ%|ί\b_N
+EFFQ|pͽ{:lfd 444p avj >F< ܸq6?Aիv=\9A(J%©F Tq!FS[P30)))_O_߳gg}vI8%XM@.b0ϟo00pcΝ555eee%%%eeeI)I:s D3=ӋÇ;755iޥLR ȑJ]](>sg}GߟT`抋ͼ(7nܸx"+/|^mh#G(IxtuuBjQUUUUU}}/J{  
+۷رc[SSlo/1z!8n7/]R*uw,71_qG!d;0PFa/(~ܹsǎ$),[_lHLx$y	i*X|pSz|ʋ2q~p?G\Ϗ|;mG8£Q>5VGX㿩Q=YL~PHDn#ׯ_yl6۽{ȃ4?h-	 xȑ_/_Z_%$.z(nyc\inq:9zb0d((wu4q\}o/A3_BB/|[n8qw,˰BOJf"/^f?>͞Ȫ&Zը+yЍZGaQ:ҽqoy̰7;lYzuuu lKZjرcǎ555555UUUsq  qrzʕ+/nwRj*Z*y>Ozq\BA)@Ő p4~oi0Z3pE䤤䶶6{{{NdKI97'#'
+6|dĔLoő$>E1344ĲjMJJz`Vkyyyyyᨪ8;v'#IF f{q*鄄ѨyXEC	R*~onV~>!ĠR-<}6'I4nXɓZZzCLxk{{{l6[vvV(Jű
+:e@L(85dĤ	hȄ+JI&^2ܷfeOm"|$#cM=j|p>ȗ>w,I~DPp%F}---G\^^n6fsee}	j @aYVDZ-"0Zhxx$9FSkڸO>8AP|>(
+Z f,Ix{dP]-SO=s͙3'66Vz&]@OxR3&7Lb3md䱷ϣi͛7<p]OMM?nZVXGfBJ{  )&ZvEiZ1yLP`iZ!I+	Mz!5U0	F$I"M|>ߟNQfAy7.duu(****))),,  pj-+++++lc=w9  {<>Nh4 twwA畘ZP$JJ/~ѨPOJr>Ѵ^QsRS	!Z[UfP(τܳG+Wn۶mʕF 0i۷ocf)X=E	 pkt,+';>OV{<*a*pݽ 99F"lNOopB4j5!~`bh4RYS4$ɉo,C.X`۶m6-11 0f]jkkw1  qEQ_V333B@.7tfkPTT)ZM~#h40LE[>44<|QIJKKy+VƢq  عsΝ;+++#_x,t f8FOuҴ(z^<
+!PHR6<^KDIy/=|yw=DQ'CCFR0IfsjBB}s&bE$QZڑ#G̙}8))	# <={SqBonXJKK+**µ?b3 @Th)J1˲EqG$#t
+
+V)	11oݽ{b2B,͂`0`<`>|eΜ97o.**md RVV{A9qܹ3;;p'|N[ hS)FQUFp IM4MtoZus9B3,BȅF'd0<t:?HIywn޼u͛7'&&" r3lݾsΪQ"Wn  y/AK666B!FqUa%eY;g-mhhhh(xrs!aЀna6o޼fՊ>\  l6[q_  f}1u:VU|>a$IB+<ZPW+LEQ_,(}q KV۷gTٝ;.bxNؿ977dÆ\  0v{MMMUUn|f{p/  !z:^Y<B1[,#~s=O?B?8o:!G?j$@.ܿoŋCIIɖ-[rrrP 0|j =6lIsZ D9=SyN'<^q$	 mxC>߀A(roe{Ԓ(
+ELQ$IC>_jZڟ>-&fPbczz<mvwwwjmeYvժU7n\h PZZZSSHYYYIIIYY<Wa`J hgIr[r.ߏ@뚚^OX	T(Ed3-]j3	!jB/ZtbSX!D㸋+VTWWOizٲe6lh4h i5GFQ
+|  ➩'JRttt(
+7C= ǅ5*_9#IaPOW_4a6BN\]̈22PnƃＳg~R6  򒒒9^& @C3j^WTNex8
+/<wE5.(z+==`ȲX!]}}IBQ%vwwΝ+VغuU8  ӧ\pԘffZ咟=  Qqԓ$IEe̙$I
+m|ٳhx>qBXf#p=;y&HQ_z6oB[~KPЌ%8~7.ѣ`駟~ꩧ.] nv}푳qɡ!lc `F@3xGiyF#a:4*
+lۊ	!'\KKt/f$'n/JMEKB4vrh߾u֭Z*.. (--u8?KJJl6r TUUp8G}|8  QqcY0 ~_TJ400M<~3&Ŗx%1V[@ѣݽ?WirE	<E#M\Fɲ /+ш᱒ޏkmkk7oކ/_ x***g׮]U<;w*++k%4M^& @4SORIQZfYEoh(1&&]G.AG[ߊ!IzJr9 B+K_r-q<^b{wΝsn޼yڵ Ѩ"ڵkǎzlY={c}d=  QqcyDQ FyBE@0ir#/Wɯ~_ݒ,%'tzuRRwm?yBH}G{ <V(\99N~h,--ݴiSffNC  <$b_ɋ$Тh  !z t`0(IRbblz1}>09C>_PZ\KQꁁ{o30^BXGA99Zss %1r:GrsΝuyi44 4,"i- @C3CBu<ߪFJ5q啕k
+Xb4#kfX~oPFGL$wpܽ{^zl6oݺ_Z- _roђ  {	&r jQ
+q.KV{atx<ϯ3Mȷ~k+x#ghZV5G>ק'$Bncx,\.eˎ9rERYTTT\\>\  j%ܹs:b- @4C34M|`0P(x`3VHP*m<vU\eSccC{4G)*qhO/Y^xeŋYf޼y: t橬,--g^	?8N.  D?L>-6rT*N$I@@ף}`B| _1F.TQ+&Bϝ3ŜnÇSaÆ-[l4 cQ^^^UUekjj
+V\c=F 臸g4-bj:.Pq{om
+B)bڋiic-$Iz/{m<4#<b$ΣG^rEg}066 _~Yjq$\	!E  !z=GT</I˲("yrB>~wWRb!4D~ۤǎ<_TTTRR ౓G}m6[YY `F@3hd2iZZ\.RU$x;j?/?9 ׋1xAp84
+
+
+JKK׮]  @l6mB! fy$Ih4~_$Zl]]/ZIov^|<!h7x\@绻?HI9|pKKKFFFIIɊ+Q    gQz)8NW> pVD\A+hoXEBH
+c
+o,Cm{{󋊊.]Hp+ gXOe6y|(.& @4ԓky83FP(D|cV()Yv>0t(DQ*l8~Ҏ|;w233}ٵkZVJ& x\v{iiix-YUUݻyEQH ➩'SV5`a<G;Yl4mZ/WX#qdΜc55O=Զm۲P xm߾]zӮ#4o߾jN=  cL=Iqt:Z0B,0i
+2,3{h1
+ϞylDy#gϞmjjJHHؼyuҐ  <^v]õk׮ZL:Q L=!{Q<jQ> 0+|OjW^~z= yMgx"v  MLR)Ih(T ,#P͂Efm޼9???&&~ [6@ cZB!].(i9vO/YΟ?hVXQTT` r׭H9d} hgZ(JAzNcyA 0$ fIK}ŋy_r>%K$$$/ l=B(B: @4CɴEd2i4VX9 ѣEZj۶mk׮MKK# evI MEE+q  !fiOaYVP,+'>4M{ fI8{7.ʕ+@ ??l6+( 0vLTYYYZZsqYgu!T*)b(
+DQDg. `}i~x`^ӹxu-_<55# DͶk׮I<gh[XUU9zIIj-++{е9a|dq8YV|RQqϴ(J$FòG?o, YDQyСCǎkkk+--]zuzzRD Dɍ<>br@֊QvܹcǎIh !A8Nh4`0qBE `
+Bwl9tP9997n,,,D Dn (--\VVf"^SS3񒜩"\U$g۫!fyǎriAӴBP(z^V4|0\ 0sI$IѣG9֖VZZiӦst:4   C
+g=eeewYIIc	VJJJjkkur!ei`0h4\r]qz `&y~``lWzz͛7o޼pBd=  O L
+9)//߳gOd摃yl696D=H呧`
+BJ 0Hx:ud2Xb͚5 og{^~;wF5 cZ4 n嗩{,KEER@3z=EQJ~  "4;>:J***ڰaÒ%K,  q8vl68Bf |u=r*y$j6Ν;KKKϼ²<Ns0tni `Ft9zKx_dɦMrssF#0h" 'J羷0	૫#_ D'>Ϻ<0FkJTUUU{'ja
+U*zYy^V}ྺ;}}(Zt9Fa峼(69E%&NQ5^fދ/e˖/Zu=  O&lO)))lTVVAw.))ܽ{wMMMccceef1;w퍍ᾙfy׮]rQqtj4M'$$FB|(r:4McfE$q	EQTE=>q⃫WZ/~qɒQǁ[[^^lk^2ıNװ>$I|Gj>T>G_bų>[PP xbMp'el
+1)y-yGd$ij(jZRL&.g>ch7
+iQ4mjc4N7bɰX,;=sδXJQƍ˗<T*R9u>G"DAr#MB[~Ǳs$-[l˖-C  <yD.,SUU؈ SN!gن1~Ү]J"ﺲqfyQB3]j5ZJ%˲^D9?vp|wnsI4,T))[rsMe0B\B'$$%#wz>,4E-HLiXA__ioepi`>qS0ebbV̙j͊ž	B]]]{},((ؼysaaaZZ2k 'MOtϊ!4qprRYY)<"b/+++++ڹs'脸g EaYVš!
+8cn|p{/9EQ(biZ$B($(ì3"djͩ:V_/I^Zie#F=|cKOO1&ܸ?s	!!A[)e}ׯb}(lV)pxRx<tX`W^ 	Z	#_Wp_<ꁪJJJ*ᙾ?=V^^^QQ.ަ<q$y^B($)
+U䑏߻|]4ɹII:ew].ׅAcbݘO!IIK}ׯx))FA%chd		11&Z$Qz[==@w/]J2^T	9yoO|O>ijj7o޺u-[D>  0Պ{ WRR"O>!Vc,{.ަIժjaj$I~vKq.ǐ߿֞jhp$qarr^rr^R҂t٨VK	>7]bR7̛gKOWLy"]Cn񢨠))9*""IQ^2ba՝@^t^V(%%`P,/(y<utnl9K28x*koGZ6lظqcvv;  pK0%رc<w}Q{vLLiVՉ!TD[==oܹVf٥ii-_TnnZLZ%I8$BbuE$[F+60,Lyq.BHŲ,==ht߾}O풴4N7IPl/[,A*{frMaJ,ȊgP\~`ѨF?Y}.b__g?jnٲe͚5h"   L*y dB}Cy CSJ|p	qR*PaaDQEd2@(p8pB|e-9IIwCBIgj7o|4E$%Upv{
+)h:7))7)IQ3KX.N,(F}v	!F:h4k5	x͛wd+V! )JFS c6w-\YYYUUU^^nЧQN#gɣ;;vXVy={<|ؘ-46MnO.1=jmi4L&By^BHƝǍ{k߿ۄ%ff֭[ss>(INx|/Jl2%cMm~lS!$V[iD||s3!$`(H6P{Tдen^iJ6rě$I8sOn߾mX6lذaÆ|ш ȯbf={"	xS\6aUUU#<Xkr<TUU%L-y$Ƒ[bZKhg|>BEQ*JfC྆w̙wBg.UEYYgHt}o߮ r6͟TnnAjć[Z	!Y&\w݄kl쒴4F3}#onSt9l֫Tyf+~ÇݺuK/YdժUth  5bc\VVfٶoߎ666E4l26`G*++kjjZVla]F>2ZXGncG9=EEN',Iv8>opp0?<z$]ligO54AAeK-&ïq`ӺO_?-
+<`F8,}I4,,=}n||d穛%hʂi[U/7BjuVllшgQ۷wX-,,ܰaŋ)  f&w3LesرcGN>K`@3]hFTwz<ˏ"걨}ԡ7<mig=$[[ѣnx!z}<7>>Vks8vttyӍIIi11F:tc6BH<33`$|sN8^17:|/ϟ?~(I))%̉3+qT<xeBHAA͛m6[ll,S  0V  ㅸg t111]]](*Jy
+v\D=+[AxnQ4i4ƍև2#vLۂ(YYe˖Zt Ϸw/]
+p!ZGG\uu(R4--?9Y۫:x&/yv$I$IhqCC}͒$)fAb+V74V>g>ҥKիWoܸqҥ1F     n0P(bccf3˲
+eYn7!=ť.^DQ032^VΙ'+!Axnѣ17V(Tq`@$YBjնʃ4[ڕsDYGǹ&BIYn6Ozv0I~힞}}EBAg ;ަKsr^XjE3+,]z-YgYjUrr2 Q  j+JZ-/jZA<z~{ņ~BȜLC/ǏIja׭K\FƁBHд/7;,7)iqjY'AP^2?!aQJJoq--OlhЫT`"Ɠbh:dzk̍Ǟ3k"6\ZϷp⼼8  `_cZ1s3 tC3P4j	!<Ap8hFuϣwi$ʼIìP띝??wvO!dn\\yqòB^2՝NC*hLZmxGn&,==;.NͲv8nޔ;^-NI.yQ+sbco~$I8Ǐ^nի333CJ  r
+$~& DM0}xh4 gazW^ICϣޮm'ͶFśo'UW
+bIp I^^
+!bYB`0Qܸ64D$--`kvypa%&JRYYyZt<>g	 I@\ssNjń\뽹iӁ>ۛU\\jժlF 'bKxr
+US?A!F,z^B
+~J'0iG?#iiBޓܑd9힞Ww"(Z߿ƍ F6b	ϫ14T}VhZS*6Uߺ!9yIIzjMQE-Yдa8Qv{{8zggáR("M$Iyرc'OlkkKNN^rʕ+333uz  L`v(
+d_&q4y>&&eY^B	whd?<~}h~^||lx+$5]io9rGHr}>y|8ޖ1::!&<s쭭fqJʜXa&TehrF4E͝rU](xNgӱw9t5==}ݺu%%%.4p
+    `@3]$IbY6jZV+h4r_	e%IBϣqݻb4aV8	!
+	BА uM2SVge;W{ohW pA4=ݤvIյ:y<Xyi"gbhZxˢn?Nooࠟ8񢈸gvEr]znnذaÆs5>\  <ig;Ɂf"=xD$h4T*QJ%0<{<8Cuϣ\E(QDI< %$5\'Z~\y!4EIR(gf΋|sBHF$--;.NQslS ,''$%
+zzl4$-Mi%FYϬ
+nc߽{l6mڴd2  ,W @4C388Ni4#BzhG@fF$$QIy<7/;|>BȼZU`q{`>\#}}4yiZZNٓtC.BHPh0L_EQ*AϰX(ĢEgyV]|볳Q  >s=  q~
+T*A!(
+QML C!^~BKjr+D:8MZ͝:buB0II_{x'bYRR䉴.SiY6hL71N, 94o^޽W^eY677w͚5T  1)  D-O#QQ{j<'ych\28tN%~t:	,:]^C0S	!zIJ{ɆBN[Tig<7ov9Fd0`9r-ZhÆ6---M8  \'C:B#g1XJŲ,qr.y7EBâ$zz8n+T(-P(A~}C_KJw8ݻԘqz4$VOON8t&/tyiZZٌAgy;UPpȑׯ4W\\dɒD՝  Phx.+P3N ATL&400z$I`C5? 04wBwZbbfսMZ;|J$A~w.r}.yC!R9<e<84E.aLEK4}[~		/$Ey,o9Qg|tڠK1EYY͋pua#{>}8ͶaÆLZ& IŠ =@C3	BjZфB!jVARa"GeD!^w%㩹uk[n6'fey y<32]^[R K64i]Z-!qC>_`}oo0+Ȉ݁7~?!d^BBAjjN9:;	!FziZZjL̃ΐ	[))	zE3!P7:domuBQja?3$?իNs7o^|yJJ
+  xx8 Qq
+4MkZ<!=JȰXsr	8sVOONbL%FK`$Ir|uB&'k">)Q츸}}GU
+'&os8:N{[[]WWǳa޼a;R_/IC#Gܸ		!̓~\S]	E)))11)&A3NVOO}oF(ʴXf+3y޾wbcO>p80^  L; vhgڏGAI䡚?(+Kò*br(IN{CP%JMQ$C!yԥHdTqqqqfVc!CCU/q χ
+ɃC'LV)Ë⁺Ϳ4==dTc-NM~p
+on>(odW_/%1ަ{[Zryf
+秚L3g1'|ɾu֭^:55Y  <<<W 3j<{ BFdL(w T(}>w 0y)4mjPP-??ru2k+qnyALen|?hѰawz;ZҬn]ij;/:;)BiiKQ<p`ТeeN?C~+p[@T&j¨V'K6ΟjӤ槇:h<woooozzeˊϟo0>  T`fA3DQh4tE9NF#?[V6O5he+̱9+!*"CƮ;wyffhG^aDqAbNqᏒB1bYj2[ILi11+23$&Fο*-(KҖgdO$I%7Z7$!7fEUlNb4Y˲g:aj?Xzuqqq^^lF  OĎ`x.(03@{
+ <t:0L0t$04tNbbNb~ejXkɭ!?99?9yח/}9	c(*`ؒ%78ñ7#c===)))+W,**18  TAO ̂gzi4Fz(>O?bc> 0%`c[0&&Y  LpuIf\L/IAj(B!IX(JT  #	|߽{WP,Zh111
+b}  ⯞a? <9=ˀEQTLL 4M+J8y`0Yr !qx~B(((X~f3  [\ D?L#ytAQYUT
+iAz^zeY|Ma$Ir'-:s̭[!k׮1Lz  `o`rރZVR)JIzzz(
+Bj Y߿tMӋ-ZfMQQQJJ
+ ``Z =H$a(be١P(h b xË>_Xx'Ntwwgdd]feddt:4  Lt' 3{aBF	4M@ |@ Jf;u+W$IpZ*##Cբ  `ZOq	  D==~Uf4KKK!
+
+ &v_**:}f[vmqqJ%  U<9L\KPJ0< E	RP z
+ϝ;g{zzV\zꬬ,F#W  <$4`fNSTE}DQ	,ˢ `^oΞ:jժu  <O FM0_<ϻnaB  `B'sֶL&VXXq< GIfTL;FRh4$nI8C L#b9wo{{{lllaaM/^sn  xd3s  gzɁ<*3qݢ(zQ $->[=ÇϞ=%Krss0^  <J(f  z^r#OvA0LjzhhHEAp $g?~Ν;`ÆK.MOOGOr  xvJFwFLqA$yج,<MӮ/G \s,?wލߴi͛-Z  p  Bu(JV4o6;::u~iIP
+ CKp8Ν;wׯKTPPiӦ%Kdff*8 <I, @4ÝiJ%( Ez4 $=lٳg_
+l6ے%KRRR  cx.QR3qEL<A2MP(
+844CCC'-:~KnwFFFQQΝk2D  ؿ 3O/@(`y`fI^(`?g<q^7##cŊ6---MT  1
+Ռ*ux.0 yV0`('Bx\ I$s棏9xrss׮][TTg0D  xP PW2Wn,ˊh6)zjZՆB!a5	 Å$I~ϟoiiX,֭[`ALL\!  e(v'pYP3Q(^WR%$$h4#  29y/13sYzUrrrL&3     0A{Ml\			y F0̙3Ϟ̴lEEE,0L    C3A+
+B|<+J $	000p̙'OLE'$$  "( z](j$lDJM	 @SOZϜ9РV-ZjժD<  D>	iT*AaBDQt:(:p'8qyX"???99YѠ   PEQ` n?9QU*EQjZTrr0; Aӹ?+uuu,Yfٲe  yrKЙ  !v T*u:0^qBy4 䃃<w|ދ/Re֭[g233j5    !k&V(DQX,j:
+qRj\#0=Df:麺@ hѢ7t:  D3'mG#{uJ$,kXZ-ח," O;ҥ.\vyyy6-##`0   Oq gQE4111iBcF$$> OԹrӧ],Xz+VXV^V rF  Qqϣ
+j5M4Mx\.W0gTTtСsyތK\rܹ111h"  A_jhЙk	$I
+e`0xDQTy	z[wܹsuww._|f/   ڂ'L;ahz~_t:N0뉢.XQSSsɎɔ_XX88RV  \D!0!y8S*xN'!$
+0뉢zV8qȑ#---qqq+VXfM~~~BB  0 'N`&B(.T*jZPB0rփi,f￶nϜ9s]V[XX~E%%%j4  ̬^$ 3[MP&IPBT*F$IA`0+q\Kv{GGN[t͛.]Ȳ,Z	  fU"Bkkk]]]vvj}R@(0h~?!DSt} n5lz̙Kg϶-]4--  L$	= 0C?.,,|׮]?e{7<HR48Q%I|LYIA~Żw2x%K$&&" 
+'}fe;V__^z)''gQ{j5q^p(J-/
+\(GbȅzY9ZVrMBrW٤aO]w}qyЯ	6?`}#o;[~םSF"MӒ$qzK.9N9ٺubh48< L$9+5 `P*Œ$Nz뭷]VVVuָ8=0y,z<@ vNhdFś6jy	^O"kH4	ftA>8Ytӄ@yw=N0G~|%G \}7~{㞉.&MasߤlD>RBPgg7N<g&%%Y&55D  DN$ f EQ駟^`~{:t^ϟ}c<'
+Rxz{{cbbZZZǲ,0 L2._Gl"*??gh?kJ8Dq>D~~q8˰g_ϓSPFR]z/^?iii8$ zC 9a
+$IG%ț=iw?GD0l1Q2g°/a'<kMa#C"7&rV#OZ"4Αֶ#jsEQkÛ7{*}||qsݑ%wstO358ư7.s'"?b{Dvϑ/y=l{F6D.M[0<Qb(B<En{OOO߶m^z??UWW;ȐWB
+fdzwّW\-OI<@di}VDǔm,&q&L:B(y>>r8([VRR  0l`0㏏?y;7XJEx^F^E.0uX8ưz>lG>wUwdx4DbXˌ|ceӤa)@8}`eaav+qX0N0')ۗF2V-xSUEFlKs'_9$?đFV6D>2GnF"7};֑Qx˗/_v?efdJ{y@2gaۻݗfVUY} BSSE>銪_&ؒ0xBZZ7n|g  `0X%|pq?2od325Kg%VuWJo׊.@&P<,,5*WF}m _2+3)O*2/IƮטd_]]䏚ьܗF~^?Recg؆E<Hƨ"4sG4Gz!JXZĦtA2kEn	*mt+1rDq|InnnNNN*{NՎӛf
+|Jh"><c]NlL);%_|'^_xyj:=Ll0	%0y_|g1L8 @QT\\R7o^x@'v5"	_ #BaרcқQ_ƹr&_sD0j)^3Sc|V4H!2Vnp+~QfDPK3'8^& &by7#
+-ᶒ7,#W"'Ex>Cy$r|#|h#eZ۰5\ը6zֆ=wK򱶄RSOEj]vrC듧Q7oŋgz8khhhiia4oA&"H(.)9Ddyƹ3G@$TScGwlOc lS(5))iڵ8 קhh>/
+M<mJac~+6`qgتFMF-5 \aױ+&X3fg\fjGm	nqFn[B5lÆkMYx5FU_휑X#F6lԗa`dRo 7uKEy@ssӧ?$IR^^^qq
+Fqϣxn7quT~~]3qgt&i=9"lcT`0U*     W hhh8vv[lٖ-[6oޜf&<ytdyY;6<>DYU*    r\G}w.^VڵkmVPPf;vh4      'IRgg;sumڴiٲefyn {       `68qDSSS^^޲ebccg̈́cA     0UTT;v} !$AQU*լzd{      fEÎr{      f       x%%% a4        `6A     0˕VUUREQTiii=555p8-/vyv}kE>"۹sgiiΝ;=>WYSS}v"/iXop8Fߚ_~9$EQ6l߾}S^~J-0KH      0cWvv2f9|%XRR"<fgϞ5D*sx^+<PuՇܰBwl64ڱcG[CCCSjkkwލ=
+fT      <f۳gOmm]!r=Kyy`mmmmmDTTT:6vpplʚQn,ɩwf={i%%%t*ra?     :"XVf31Y{CCCbEP-J91ٽ{dgg766憆!qBHuuuF~Gdroz:mX,;vixS#
+vU^^Y0     `kll}#G)//zjjj
+aSzˑ8a3_}_nڱcǨYW^2gd	&b     ˇuDBS<ltdjP&G+	g+++&/lFO.M      xVXqI,]o~49|Q7Aߩ6nyd=0      xfz۷}vܧ=`A     D+++HtFWpB$	=+ʣAWUUo
+=`P      OpaMF;܉4la1	tpSUU%/`@     $*))a***ƯӑÑGEEȅRaIPeegj>q6M*++ypO.샸     	%Up8JKKDnWVVF+=XUUUaaG&')555۷oolllll'Úܫ?H@۷o$QSSSQQ@{~Ƀ7cgYq     jǎr?&ñ}vRXX}a96mݑˍ$v|*++g|b#G9;w,,,X,;w9XJ{`VP      3\2~}̨#"޽,<hdPV5rr2lf2XV9Rۚ૏eeeNa 2D!Y$	       (BHuu|핕V#>      Oy!9`B      O;wbN.0v      <*0      I6Xrr8%%%555V<<<샡       f       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f=        
+       Yq              `VA       0        U        *{        f "P    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf ns-3.21/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,372 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+
+T(2P0230Q055PR
+DYZU%r'(+W*s! @
+endstream
+endobj
+4 0 obj
+   74
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 550.801102 248.040496 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 551 249 ]
+   /Resources 7 0 R
+>>
+stream
+x-1
+0{~d~ XDo20S$#]b.hrK ͵+Ʀ΢E*CBk.ɕ
+endstream
+endobj
+8 0 obj
+   88
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 1530
+   /Height 689
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+x	\Tq~rֵb%)RuPsKܷqI\@AҜ\Xʱr,_Y:ۭ\Ta9f`f΀q٘aޏRR                                                                                                                                                                                                                                                                                                                                    ƍ
+
+ھ}K      ۷4i_}9      p'Mtwu]W^      ࢯuwSNϞ=Fb      Paϟ;w{5jT~\/      sիWN:>>>ݺukРA׮]322@      8b|}w^n]__qu7oޅF      8ٳoذa.]c.\044~;vܳgOQQܗ	     +((ضm[VJexx{ڵk>}4h`Μ9gϞJ     p{CmРÅTmҥK/]ըQvڥz     HJJʳ>۱c䂂t1			),,<zh``SO=rk^      8rԩ]v7Ğ\K.qF^^^rrr``;J}      p(777??bJ{|}}oܸ!|rvv,^      T}SR:EW      H4       b##      -RO     fN./      n!     *Jvzr      x11^\      t:v      xFSV-BZø=      ^E*
+RTTڲ7      xZNje.'     7h4N(      $Ҝ\          ;L&^xLf{     6&ff1Gئ}i     UL&4{iRt0'm{      Zah4=JU     UĨG`>{zz:m{      GZJt>)/a      RV-B!ݴO{zmԮ]     C4KMc6(      ^EYјfGX}l      xH\V^Y=      l6*pAy43n     1ZVRJ{      xmѓ     }T*Ns!Ҟ`"[5d     ^fĞ>T-)hRh	    3L&Vk=-Wb1		!*h4`y
+    L&NST}hTcB     Ո>jen(@O{J    vzZmC
+Hi`0u    @V=
+ºaRe"Ü\@kjZ    x/qfɹĐG8GUvmFi*T*})_    8`]Kj:)'Py    <RB|#af
+     gӁ|QT    @oٌLS)af녷N     L}㓖V^=98lߞOB|<    h4j4G.Y斩' #^O    pd2t:JL#L@F~~~    g4Z~NvP.=HR	oR    EzM-gFm{j׮MBx
+o    s^Iؙ^߳R    (J{*HĶ=>>>T=q-ܗ    
+7D^r mi     W'(
+aAV78\      h4e=?    lV( FVaeyKm{H{ o%]=    ph4bjmL&J%ޫܝ=H{     T*Ũđ|jusr .#    xt<zAg.mi    g9H=pi    <Ҷ     <Kayf89q{    YZVfh4Ze0y؅2wgvM=     ϒZJe@)B!,aO	=      <l6Ӭ%F    $FQܢR&^iii#\F    *D    *\    fYX*o-Ķ==H{     3SnIt:]E%=\C    p44ߺTi&    FRkZ]i= א     ܤj}~~~eW*:srn"    ILu4z Ѥ=kH{     nn\\F    piUH{     nӞ*33n    <H .     `0h+Nث̣=pi    Hi= א     ԓtxi    Hi=da2ZZ".MI85N.@Wӹpw    WT1٬h1=j\@=     BYf???1QQ(jZJiڀ ĳ8    UH{d!E=*l6{n=F:"qi    0JsZ#zıI{D    *bK۞*#6Q*jc4U*J8V9=     
+iO3b\jh4I~~~֛ypN.     JjjГjHݸL&f1~q4mujD#    WIKKW4W)qaDTM}l$b=     \U̅G^l:mYJG=     BO*B#vRՆ?%u"i    T%u;="    xzrU1ЖC
+H{dA    *=UOe=3۫nI#    W!2Rg.g[BFcv|dҞ*F    *R2fO
+|pIH{dA    *=0b,юFL[:NV[7*JWX#l)%h.!	i    ГK.fYR9izct	JH{dB    *,/ɤjU*UFcffjZYwV:X$av     ғpi    0n&    Wm&    Wm&    WIOOw0- gTߴJhL&Se    PRSSoƵ(*T71aiRF'    T4^/iEP=h4M ??    *Iim{(ʵ1iOIi.B    iEY5)Q*~~~?    *Ԯ?Kӓ\AVۄ?    q{(ͪi5Z     0'E\=QTRL    5ԓ\u    jmPkE    *Ҹ==Z     
+srQUaVy    JL{EQ.WM{ά½
+ћ   zFi(תZ=    vq{H{(ʵi^W*Uy^    Ķ=>>CQ.VL{&I)
+\ŧ    =fԴtfzr   @#ECQUK{zZ~ғ    msrQUҞ9z*O
+    (7F=    q{("    x'iEV=     BCQT=5    &cN.rjUUw<fUE    \f    WbvrH{H{    H=H{(ʵ"!    ""(׊    ԓ+d	iER==    UĶ=(    JJJ
+=(ʝ"!    BrH{H{    HiO}H{(ʅ"!    \f    WPkEC    ^\f    WOo^>>LQ.ii    xT1mEV==    UEQnii    x)'EV==    UH{("!    "{/iEV==    UH{("!    BO.rH{H{    ж,    *(7    ~rH{H{    Hm{H{(ʵ"!    BO.rH{H{    ж,    *(7    8;iE\==    U\Z    Wf`mEV=r=#   q{("%)**:uTJJJvvvAA   CErH{dI{rss}١Cn۶ٳ   @@CQni,iO~~]:vؠAVZ͟?os    Pݥ3J3ES==%'''99yJaÆ}MLL<   j-##q{(ʝ"%dggo{Ν__~S    jO?yw=#ٽc\ꮷm*%yMi{P6Yo#kևx"+_tRRmk}.i[_ЙR\L!>^l/.֗j籼_橴yvZ~ؿ,evhxms²45%6FR]WZ)eƌo	Mit~2+foYRƏO0!P]knڬ %555---%%%zK-ڶm[pppի^:udqb   @q- y?ԭ5exoF.od}aXJ,GX(a?~e^lxpF<"zᇥʺK\)^)pzQF?VJⲴtRZ#w}TÇW    ھ}
+]wu}=h֋ˊRxlOz3t56Y/>5Xois6?^IllspKu6[Zoc;8+[3-[明A9z!|Hy+.볈]
+'KW)sT=<+cmYqw_^rE    PO?:tx[6KfJe}it<x`k+-n3Flf#[?&6 -K#]ͩb}WVZ_x4Ɵ~K)\k8HϾ6ϗj7.>xao'%=e7WbڿTl^6ؼ_e9դ6oF'_?fopҎϵ(8p`nݚ4i"5)ռym۶W    ٳg=j2~ϟ9s?.?,m`F~^֧pz'Ov?Tyg!ʭ.WHG9x1X%6(=)enc2R'/^_E2#m? k{9қ7~[Xhs=#/f#8xHmWb<ŎSXݻ5M6m}ѺuvwݻwK,e     GFEEӧ~>`׮]CCCFիW:      T˗5jԠA;Λ7/###77<      Ջb|ꩧڵk7gΜ={\pXK     +.\cǎ+W={     5Œw5r                                            j7n>|8((h.]r      4lذ:u߿_     _RnZlիW(      믿nݺwN:={4E     @?~ܹuԹR_~hhhnnܗ     KLL|իWNnݺ5hРk׮r_       eX۾}w}ݻw^vmZݥK|p޼y.\     ଳgΟ?aÆ۷~|}}BCCׯ߱c={}      m۶jJTo߾]L{,Yb4ӠA9s={V+     egg:AÇ{ڵk/]ҥKQQQ5j׮]zzzQ)      <;vLNN.((HMM,]ѣO=ʕ+z     ȩSwڕ#LOOӞ7n%''ر#      Grss-pӺ'׍75/_ξpႥ     
+__`1))]ޫ     kH{      jif      rU`0X      ihtmw'8'g      %=:ε     4MZ
+ki     Wj
+BlT*U*,#"     jܝ9      F	pBy==      5       $     L&^w<&tm=      dzLf1)s_     *&I̴GT:3'=      Zah4=JU     UĨG`>;m{      JZJt>)/m     WUBnڧ=z=      Յ8Dؤ=fϙq{     H4k4lbc=t      xH\V^Y     mfs@@@rw	ضvڤ=      ^h4jZJPJXn
++(      ^h4:hs[=      ^EåRt:i     W8J3      x	ɤjP쓒B     L&NST}~zF#M     a6cV[RLT__xh4᧢mg    T#z^V6afF#4b#U    $Q({J^/s1		!/c@K    Lfr.19AfO{ ~~~2^    5ݵD;V R#,/u    .&=
+GBfkjZ    ¦I0'Pi@_   Z߲9  >bOڵk3J3Pُ    GT:?ضǇ\@F    5hY>Z-H{    f3L:NR6Fi'P?\    eFQn0EJ{l6}9
+!    2rfQZZZzH{OCA    Ղ=55^zj6???F   jAJ{*HQi`???    N]!Ü\@jJN  s>|~˛_IKTuС?y_b  &N%6Q(Z.opfضvڤ=@$)Sb .Ο??{lowCE$r6u[śJ56+c_Ǽ.6/z}zq\e^,88 <3Rޣj\sqX\˖-wgΜ :F~.a||cN.f3L:+r_ N<٧O:ħ[i_B_ݶC/Ұa~7_zV\\lX
+ fB FVaeym{|||  @Fz_:ldbuكJxG߬Y͛7J xF#F:Z֦dRT   5k?hsGVL%fqƁN%	 R6GQeKO.Z(СCoӦMҾ?sMY#G饗]&+  'y1ZŜ\@ GUv @<Ȅ)Ĭ5<ԭZ{$>O<1hРGR <FjCx3 Μ93}ޒ͛G$YQ;mE6;,y'oqNٯU¡q_ҥKrl 2mp' j`0lٲyIWRDaIOMⷤUem7S%~	, i}^<6Bǯڪ~:p!>Xx\JBV%?nݺo~ 8nOyfqr6"i TS999Vj֬fѲkaYlXrի#J	Ņ+ե[`)SBddx|P?̳/_+Y"ݴ#.Kcy-GcݺuSNmذ=t'*<sAׯ_E_ j=h`0He.!i T/¿U}ݰaz!/WL[K}~(e\d)X_RTR9߿VM8zdiUm1TXq=F^L{nDO5spq~e]T#Ӊz7qzbVGc>B\-<~X ;;"RPJPH+kSbՓ9 oF EAA`߿RʛikC%>t9. 
+wY|9iΎ4¡A.F_pDoΜ/`_dQm4ϙB/)KMKɣ?ʌ>聧{c֍p  $|q29؁j ߹sׯ?ݐMhQ^gǥluKIߧVldv؅#Ƽի wKm܆i]{NgN./yĊo<<tpɯEE#{SI?iFR5K\JrYYY FVER	7M&q{x9 f'N0`@֭7>S3m%dN>o?~wbR'ܩŵmM,&4d_W]HƙA}nX5!ч_,]7NJNv:T}Ǧ_e|(ٔUYgf. @yH{ $%%hѢGI͕l̺!BM*Ϋ~[5kZMx8kɉ呫'CƎA✭}ֹSãVOqmG!ǾӶnDEGқo}{rR%4O;ָqgffV  xzri x.̛7Hԙ2~|$(8hIdO-zhfQCw,yMoCƼk]u깚AGX6㝳/駟eĄvE&HMY3/iܸqTTԕ+W~O  <l6k4~[ͺm{j Aqq{٬Yu.oe{aqcSWo;ouz݄+97smL{>2~-ԫWoޅעDLUQ$Mx.'~F>7GDc0}ӦM{})[ h=DUPiii2iH{ @^W^oѢ[w<2⮃K=:nŕN.F!UoRzW}nX0[XqYBNڵ7:Yh"7jNͥs?@*ΏH,   2F>	
+g_Ҵi+V0 TkҔ|RS> b9vظq|I͕ik큛+/'D˞KW^/$,9O2 7쯑_eZ믽H>ڱ8/jp`,?}2g\I}	f~R6kL^w^u+[ PaF~juZ9|}}f= PoݻwСCv6jC%q;cFH F Ahxu⼨ة17'^ط䧣ܨ3d{ȫu	ӯ]Z3_-]۶m*{UY7|SN{M
+؟;wN bZϯJBG ^ b?VXѰaÛ2s+)*.x`XmȬeos/ۙpae7ʻ1kƠc-]Z{%'b%7'4o`ٯIa#=2ȧE:uOH>Rr_ T51h46BGzrތ *~w6md,'1+ok¾ػ|.Iʿn[?N92K6ͺqw^[3jdW&I	7{uv횟>JβoصseΝR<'!H>͛78 8EL{qIH{ */PJJJ-	{NVL[3,I'M,<߿$\${B)\=onZa􉰼b^q2W2ՅW#r_W٤Q8#|b2,viժU/ p{Гf= P.]lٲf͚M^bJmztڬiMz1;G`v9kQqi5=roGVm}8/RNk׮vf4^xh6mtR Ӟ*3*aN.  X,GӧO&MVotCv-m[b8OկrJ7;a||ms={K
+F~ը._H9rh~-2-ߦMmٳr  e=7# ۷o?`g+/*>yKb?p(CW+{P7˚4{xCN`ʒ!ewxǎ붭@#MYF5o<((r e0ڊ*hT= _uڴi<TMPbV^<2-IHן=@'{tf}gaʁϦ9G0|X߮];L2xCTW^eіџ#~Mz_I&gZRԩΝ;i 5iP- >QmڴY?;X!OR#G>St=`meZ.z;ǿ9շ	so%43eѾuؔ)u<̅!q3Wyǫ;L|«e,K՝;w^#.]
+g[w' 3nH{ \#iט'>(>1'=C|IN *G٧w~?cۇcjv#auIT
+7[?Q}}}trG28s2+7{b̅d@98_~I_+v큛ڷoW  q{BBBSx- pb9uٳ~1بJʺ*aEĊMKK;mS7EÂ&زQOj\sj,7~pF_lڵm{F;N8u2¾~ywX6ql'3r#{#t"7fpY	Z3,XF> P󤦦=f= p[رc6m6>㉱my2h-[]JgT?prsV~1kSK>J\>Uco\?t/aaW^ر}zwڇɯ:s2kk1#<쏳e>ws$z.d'?uҥUV׮]M )'H{ +WYqƁCL:h'>(pJ=^~K3mv&8༭iRhPH91p3o+V4裙3W3;0p۵n]'Qb!Zd_aOg]1w,1驫۶mhYtU7?8BTj4SNn xԓf= `8;;{Ȑ!-[]#[ms:FE.(YoT?mkK[;<_%#Gf֐~}:?ó¦UchU<Im*EmWmU3\4l~m2;&Ò`8ճgO-[0]  RCO@h4kPM ˗/رcǎ:uK=˨G["idq^_,2)3q2̏M^~8[Au1z_#'ܷS!c+Ȁn?uY6DvxöN8fse"/KOWkNx}zOBV^xa	?r [ĴǇ=0LZVVXz&(|[`cyVt:lvJq= PR:rJ)ik}euBisL4OY%;a#K>8`Ū7&չdaˡKo
+Bp؂Mg<M&
+QZWҲcw.vhᑯkBs|ĉ{oNו+ңG;w  /l6k4Zs=z^P_R4.\< ++kĈ-z%C(I̺yРA~%`ݩG5mf⶟>-*4ɓ|6غ[ߎVL=t6u$-]r~T?E%Mxڵa?Gnnk:t0B49T8m{ן>}zvvvQQ   F#')
+BVt:C)VPi@R{>#p>lұcݻ'~胕՘'>h7$L<oc-1rw.ͻ&;eSODuVUTczmZ9#uګc~{NxTIFҭE}}p7=<G't>Ix+aiw-3jNnzE  *Qe!)*ʃA;ih66L+Sy" wӧOϝ;wʬIW[^%fNHZh铛d~hS~pk>[
+"">5ufE/ui9?v䠻Kj3']EO*,gkR'ͲĤԩӂQ7qYX_N1cOrI  TG9nw_dZ#3n(^p]#\DQ\\wnzGŕqq񋵋?M_kNۺeͻ'\sXsf7mRYjD=n*} ?O7+à1vf.T7k`1mn6=ٟD򅛍|Rt=r3מ={k....??_  8f11h4OE)rq8<RPZڈZ<O=i7 p'YfM6můJ봵>Ӓ5a'N( 7t73{&&xËeS{c@sj+MZUI6{ԐAFǞb8:i.TSOFDƍ>ʅ?n fk^~e͢e	<0ϦCEjѣ  *=zr_Y;N|*FieR)-YoGӑx	 5O?4uԦMN 1+:m%e][zzMԂJ
+ebNEqәI;'VӖM~ˊQ..sju_]3seҹ13Oxcscg<߲t;/vRmY|1K's`|19]W.]:v옐pl  IKKWQmҞҎ]
+Fq9NxxGi0ĕj>xڣT*+z$= j={ѣUV1;טG,Lz?[BMY)vO?iI;[6T;UV^ܷbڊ?XХ_!|)41mpR'8G~2b	7?n%=¿sKw}U]qo'~-جnJ?˻WZozkzSoPmV(|<U5۰N_Nӝ>}h4߿_XC93'}ڣT*mZIR.zz?mTSy= jBNנA'xbk+1Lڭ9wՀ$k/i˦vXPmhr#1Bq9*6;jrnֺi}9%*T:f\*OЏH]4p_|o߾b2,K,_o?KX/[,o{i6.s3w|=㎏x)K嶿gN>Vi<oy=!!!r w
+ت:\H{	5P=L{cL%H{ 0w[$$$ϰTRY<vغufޝl*7gm>řǥҟf/bT4rF9>yCG[?ۀ}3}[Nׅ?K)i0_53X?QF?6dZV>u]F.>{c(ʾFku&wO:%pIOOw2FcL:ԽSiKs4(\H{ <Ǐoٲq9PԩSF^Tgݲm[WG2eR+7pht!	&{7}I56'IoJv2B8X&*ʋ_5ky+	ФCԭ[7x|sBՀy:JOZ_>,KqqDUMm%=Lu;O{D*= jK.%''m۶M6ׯߐYY{ⳊjoƯbJ
+SubvZo^Tlf?E֫yfwUk/luư=K*,uyGorp8^/DGz璺vz=3>1+ϝ7QL%>X-nFyvF,@Ubݐ!CJeHHș3gj8\K>  @[)8H#R@t9s4klرIY*o*M{O;?w=X>3vt{ך{n0N]FiԶ)Sw*`;!Ԅ~׶ߋnͳ͞	J'=IWNzenPZ=wf3kL̃4SzJ&d.Y&UUk!ݤI3g<qDQQܟE@$CSeĞY֣+;3O{Gp=^@t۷wܹ~			2+)٘ucƌ/Bu}uv1l/r% Y4ׂ)=JV8u	K͚{uYA8_/xN=;Lx_-T׵
+34=7zoǉ#0a|Kzn\h=w7;ICX8;3Uرc}ى';vNIm{\Wb*gFKv3tD=^@Muԩ{e˖GWVRڳ@I§'۴i3dȐּä\h޳;֭t!r1m	ot/V&
+a9tT]"\֡G1sQon˛ҪG<S(c+4ySSe>ԡC-;
+|׬O66iDsZ+{D@հJ>ZjߖO{Zk|߱@VNf8ΤC=R$\މ@dX\녏N:fU4jԨ^xᛯפ=Wa*4zF5KGn.y˽fGEXvKwޜ#א+-|zǉU¾.T<퓿Yǣ{j_jd=T[C=ac3<sȑ#7m^Z	Gt˖<={hjgzr	Y*KU5@bhGXiKӉݩfJ[
+{	!KH{cJc>(st ? 5ؙ3g&LP~wy')rJkc8նm]I'kc*ҼgIFL5,zf6"w];W\9p\QK/z{ˮT<oxH';g*7[Mʅ?}M!wJ޽{G{'Ejy	mٲeϞ=SRRp34;`2ifJr0Ӗ=N^iҥK۶m׿պg:HXҫ( ]""*EzOBBKPD)YS@&˗	"73;;3;7SI$Rbs*]V^Mj#>B,+,ߟzbx'1~&C=#/86@4c$1Mp=ˆR^#	/UR'%^poɫWwpMh__J+W3FQQ_0hr$p=|dbVaaon  ~VЬ=,Vr˗/m^^^6jkki谱!@,xa\Ch큀訪\t!ksJBBM_ɨi)fsiĪs[~ycv$x^fܿq;nK}?5r){D	]tc#??pXw{7Q/A!-ةS<H)yqͻ}Ǎ7vX+++D45558XbOؘ#i7# eOp6St%%%333	jH#||ffɑ人:[*ٷ5b =#͙jjjʉ7S<VPPZ9h}S(ù2cw(\IvqQJ/$0imyn2$Ɉ>ӟS㲣[rZ۠qO#%5}B鎎;G-//OOHPWW;vEq	7/];%o_ey4w3{?3;#Ff%a6ާIdoćw{,Jb'2SnQ~%AAAABB":5"RA YYF+	pnOh큀xT z8JS)))==6dzz`jĆ%?A@hbELy|nF76͚=U.9YTsԋi"""vp"VtpQ$Sp9$M >Ej>~׮]&LՈ>~okZ,l7ӎfLK}<}@ߚϪpe%1ۛe=R__{$.>R6ғ|A&??hhh(
+<b큀) =#˗cǎIKKKHH$DnoVVVBBBWF=_>kokzOPU_NHꆕ=p*k$\e~t(g!/O吂 .JizTVw@|˖-G̐S.Z]1v+]W2eʤIlllH7i\+++;΢nֈZ-#yLuw"?y/FV'1k%8{G7/Qm>61H]l>'"TppWn  ;N>͡ĮMȃĿ;>3UUU퓔ܱcҬz6>D&M,wese[i^5tKK.>k0.RH#|#.Zlϼⲡ^%rخ<
+WWaʰ25jJ5'+֭ZlYTrD*bvSltJ'O|d,-7:+J/	-$\!ioqG<&oc0&{t4c;[^JgrTAPD 	y>T^ƛ={b'C@@pZh^^^:7o쿄ab<#,紴4qqqIII,=+W,ՆG}4XFpCjauޯsh+{m:)ͩU^~iy'2X|FǏwHhH&/X 4k֬bUHJwpp;v̇Szhll޲Yc<sT O4/À'ppި&]p;[o{jYޭp~t/|9£9hO,rvPX b|)̙r=/SNm5k?4ˋvK;~ÆTNN2o޼quu&9;c#jIYcܽD>}-qJʀO?3ԓfcWl(52fO/9/]=>ED`믿mBn)Ql>f̘s纻$ ػ_f踳qDMㄷXϟn*+	7NP=
+U6H=L?QYn5mX-F>')F6e	 #gK$V+..niiYYY	7ށ`5ڛ!!G~hLFPӦM:<=ld5~"((H&8ؓG{ڬJKp#iC56ѧ伌WZ\(ԈwhM2_WY?a۲{^*mǠ_eeeO|@Az[ħ8 ֬YӧO?GH:sF-[	ua\vk=ww{ޑ-0otޯ!&&.vb
+u?ś^v,{yQTO7dnٲA":T;w}bX Z{ !9$s{ xyy%$$[k@3~]GG˗KktO/%%eff\7mMxٹCo8`lp66ku(6d!K: #87R,>}DZbŨQ쭴o烦|ӦM<ctommȼ;
+oV__u&S'\:`SOث.:=w$˻k;^{bhܽ,$fzb[czqaC$k/644ݠA@'OҬ=4hnp;wƆfC7k!322NL@p333ml-B%\3+w%r%DxNS^=}gm-Aԋ`PB0a¼yG9ܴ\`m2iҤ)S޽tgV^z6#l#ALEwC0NwQwq۲YutOu[  ̉cm>H
+fQkP\mmenkkz	=Iчedd6nx閖4@=s{acc3OuXY{8qWWXYYt%ޕ011aF-ŷw7 s@8r:-@rV
+ØLudymnAA;J.尪O=_ mPW$O:uܹ#lrⅴӸRu>HO[ԍO2W	9lܙ`+˭û]ڛWtu߿}.z;Zo$%
+PUL+((deeԠݲA@ {<\	?G__?lZ>=d?sKf 7'TPPr-	6eX.dVTAޫ!aFh{e&MJ/īe>>>...o(NVoatQoKxSRsG-//݈Z9\hQd`K!U;Tf@n7=QԈǼ}}(Zc¥s)oCg?wo%abccp,9#.f99bHA_=쑽]aeK    nrrrrvvFnz+1As݈3=vŋ't333nnnꭴJ,Ith&&9-Zt.]^&m݌^tfuǷxΜ\\\8kK=<:{rՆQo^Ĩo<vG}heifll]iUUUIII@w@큄d3g=EuuuFF?JHHr.VtroI{ZEEEoV&{z͋!A[mlR[\5YZx.
+M ەߏ~&h)3"T{K(g)6HVQQ5jJ5':B8vM@@`ѼQI'HMCNhѢؑ,XPzi?pxz0jkܻfI4zenF7Q#طg珣dOP?`ӧ)*G$?_WPQbqyqׯ_ti@@gn  }h큄dpnB{êUvq=.re۶m#rzmT]gĉc%n߹CVKSxZ~0s&wZYgK@Xr.hQvRMy7*<)cC=
+D٫ٳ'M[QSL;vf<
+&GP/yxxn^f;ԿVǾ~nx"x޾~hqjg\mmE6˞߅whƔ^+o3Pg$|I]]:>b6*lixgrABrHN=_BB!!!,$skO3|1--MNNNII)555{zOđlgK"Icƌ	ůzTi>[clk}̗5؛s4ےks;L+V?s(ι5}YΞ[q[_а5~%K$dJl6sLL=X+0Sr!8Rm6˿x>xL9ͣ^tp6ZZTΟZuc5,n쨩xk+W.C=SA}Λ7oNg38+V=yЬ=p%$$쏵=	OMbab<#GGGǽ{(\W>'"cb([XXXGGՆEqu6!uPEEݣa@`qŁ
+cCw!4ϫWv5jڴIy9V)+w9+^tYV=:;D_g]dYSSR;qGJ-[\2*9&8믿Ι3rH-[+vl~r?ݛa޿wq6z83Rp8/fA[#xM[5P ᭥؟tR/Q_`eEEEgg'`n큻4CBC;wgpH$ᰬlbb"{ZRSSGе:BOGϙ=9o2gO:n7nTVhoY D3ZcЋ'!o^9$&һn. |>;,6z(F&"vΜ9\\\1<GhL:u*rC,khhRVVVbm5[1X5kk?QlgefvYs5	WxK.ߏܲyMVepk3jrJ={H|]vUVVA@@k$${={6'`nn.///XsZZZܹcee%$$dkkK.o$pvJQ_L*$-?bM_lLAwnlAc4yE5/˧uDqc5~_{\#>%g5*8Pf?AGԩf[e[c>o1c,_p'e]Z---qowwwr_0	WXA-{:Z[lpԊϩ'p=ycjz#jo4ttouNj-ʷFl[r22ܦKi-Z403r^n-[+۩ex777PMLLΝ;7@NA3iܷMr>˗aڴi}֞~fb3p[$W4N2O}Kff2wקC=UA;bE3tӌ6s9fk@y2@p<`sӗ(ch+mѥ$=kDo̐9504"W4qRige,]H%E[uk׮	&̛7?2<ŇEE3HϤ+,wj7Q-iogjf#8ڛI'%"?^^͛78q6}=?'#c%31PݹsZDDù(86:Oۮg$~bϟ7D_>@bUIm%E3.uEIK15jRޙeA9 $fn*}@S i z5ٳg7'(Ce6`3tuuS. u *A]]j>loFh+~:j/q$=@kY&M~!A_Rg|kYl(gՈ_)߲eCI,RʹۄQA@W~~>hn	! L.h큄d͕ןz%W3>}beeeedd;E.ryptz7AWfn=Tգf&ңF7w>/[|mg͇6gm7	-Wg./q9{1d*)X Rh/d''K...AAAҙ*Nqɗ?/ V"e!=IN)h5`Z$\p]kZ)ߟVIHPm <qlLgwF۔/_x{$l!1֮]Ѐvc103 !f?n6̭=hmmqㆥMMMe_eLh</**
+?w!ƆPs޵x霫 lKGK&^=iҸɓ'I@Udy$X
+D^_`E:3RWom3$7pRKI1SK,ddd01ȍvǎxWhoX'(-a@L}kGs|ΟyKBYhaaO|.҃h.-!!ӧO
+V_grABrH=@@@@ _p8999%%%"Rܕ.rY;,_:'gO)=U1Z?j ٳ~JJ0f4 ˧_?K gu e~u|W?"&^+_N57XB5hnشnD*9^ҸS/!z+2j(55?s󟿢_h1zv4c"B[{,;{tg3Rk_17J[D33#9đI ɉLttϟqpHH9('Gccciie8dvI*JHHl߾pow!!ڴ-P}J떛KY픳77Zj0Y 3ir)z{rV24ϻd&ꪗOΘ+萠m߷IO5=S͂?~<ѣpqZcPSSC...!!!駜l9/ʸVEEٳg޽tOq@ˤIbc|[ҊaZPqqYxrTɦ
+o_^HӍJ E擀ɉUTT<pׯ;::n! }%@BG8bh@;k͚5	$W4|\\-	5ľxrd`Vi|Vj\pXQu%kT.qχ$xV/?[Dx)<p*A1"50?GR)Mm:v[TJ!mBqrgQϡ?~<PW	WocLc7)ܹ1bXD*c^hlp̡Ե6mZ|?~q(..HHNPah=C   ~J߸qTDD	=eش|||?=ߗeXcdgkJ1nŤ%s\Ǜ/#6}K<]v-h555>G+O[ZȦ1WϞOI'6bŋmm[:'34pMƛ8ح=k1w5MFx׆"AlS\ʅ333QQQWWy>L.HH	 \fY{0	=B{.::ZZZzժU8Y˾l۶MRRjz[ldd ;0L=]iPTTf͚'|؜9s0-aTs"=DIgya*R+~Ȉ+A;6{@ѫ[UѰ<RR
+$pegIei'tj?AMVUU=ptAO==%Kܹ۷ohWrABrHh!CSSK%+4&S0Y.]m۶Z8$ܾmVE'0[8![JM3f˯~5^~6.M*3+lT]I//۟")i9LjJs ĊS2|/uac757zyy"9ёں'CBGhD]]QRRJIIApzOyxE,Bߚ0&M6mZTJ!`Qqp7nܔ)S͉HML<mddн39/s85/-MJv$KO\˕Iȭ5jw#.<	eyɿt,%Lc?O8rA[JJJWW6?J.h큄d=CE˾rRS;c
+!0$k~&oܸ4pV"%SRO>Ν"Gٳg7.D62Ƣ_NuˏTA(շ<9 T?BT_殾@Bkv{ߚ֒DJOQ6#yjjj۷oO:Cd𳐛Ԅv	}%@BGh!#""	{Jk544+&=}p2̘1N\oER^^GzԘt Ƽ\\\UOH-k	۵uSnhaBru B=Gj:qssˬ5FӑaGVт{Kq1/x7A!෦kP&PBȚzb
+ȑ#MMM
+J@h큄d=Cׯۓ8Z5;%%%?{8$7"x|Μ9<NVoKe_vX;U.
+RSzU"hTt(2z-mٳй\6Bs-rEiVCQ1	;XCc6>?rՖg{j)1ӏ1lM~5QOOKzY6!'xtĐ6䂄d=CwɉGGG#:GSSy0:HFс>|*vZTW+WԊN±k@ڒ%K!vÄ`iHMho&&	cur\齃luqtQ!^t(;nK{̚V{<<{E%xb~MbARգ^Nضm[\F46{b`7p8ܫWbP\\WrABrBhGSSSYYٖ-[ɥ2D~~)I;vS  ilMZFƑ#Sf͚asc--!V>"vaQÁw6صǌXQǢ<[Uy@Oa]2zi: Jj;,wwhɓ6ZcPT'g̿v;H1KgHiK}#vI1AσEEEQQ/^ݖBp=Z{~:::׮]K 8<卛6mᱰ0%$&|чCӟ`{
+׸KKLa٫&u_lܱW z'Μ9pZry'U{SsO>,X1뤧8LNȟD:/u*GNayE=ΖΌ((hI!ƻtXq8JXjB#=PMc@3	9/$MoԋiHiM~")0=|AuOݜBXЭ=A	Z{   PA}}ŋ ʊ|ù -[6eƂn=W0&7c*g^ңӯbݫ^sWv:U,L9.?~/R%w&-_r%hѢ`҃L=ڍ4b\Hga-[)pB;:HvkZKXS,\}n2r1@277Cn>[P}>y5삘DRhw7[UUz'8B1V]]}߇{8C:\Z{->66edd8NaMFr9,۾4K)-?y5/,vh-X})e]FS3=J|u	_ڕQu lʔ)\\\
+
+
+	PY{-3NcN֫zIN^GGZ|ƌmwz(pf>mT;gkw'U6TvWbfW)'.z?nhhC6$LXXʕ+h7#tk	Z{   Bkk+ܹSLL\r!!+]޲eĉLwkx3D6!=őh[yA}>7#-eI@3SYVZJ({@;Cѵ٠aKh`wZ;TQhf"a%_{O}(qXjyfooob)b6*lyիW}v1 WrABrHhQUU***fhL*r.VoPWoGjoOOI&M6DfGs\-[eZ|9Wo7ԐY]'LaU#^YsT56FQ}ϴ_H%:{ұse:l%$+<Ŧ^;;;ϛ7rJcc#m,ύ3g΀f$K3$$h큀@
+sεIrEׁٳgvpڵ	I:XJظq#Pjժ'|UulǦ=>uf!N@ikX;Seܸq[m5۵lش3HWW[uK0	.mk>^C#١T/).ogg',,⚚['OY{HH="(ʋ/RRRH!!~ԩS8tF=[cƌ2o*y$1AEM^j%>Rܨ;i$3_?JV;gKV=ZOoSMՄo[ɻf[~x{R6gihh899%aOYI|KIؿƍ?[p%$$h큀@mmm񇙙ْ%Klmme_۫r.
+f
+"Edxwwwnn9s[45Uco׬YŞ9opzUBb)KQ	9G7ddL<YSc}9=չ_!Qt(=Oޝe %>lo&FkjjZZZƑ 5Otp0࠴u>|v3n+ !#@khooUpph\\\zE!!{%_m
+ܨ0$VQQ(z"zi8=EO_뤲fT}L[;:uE_ޗ)u]SD` ?D)%۶;
+I]+23ZV%DOb߫C[SZio޼Cz.P!^^^YY٘' @BrHh
+4NNNZ|)
+C{HH:)^mڴ	zӦMspp !+aBtj	];[twnPOb52UdC']_~s?+-I%}cm㷚KVzGV/u`B}#HSS3>AO=<ׯ_/--Gh`ھ=㡵=Bk@@@7oZJJJ36ԓSS	G3c|=#zѧg^U/7브ܬo(?`~>kSvEtj:h$$$bӢ0{'N9srB'\/]LU+bQEANzA{wf&%7._XrMѪӟExZiw{DfEaC.삘!ҘvJo"i;>xޣ{ZZZ[nJH\w$VuǠDHH	=1Ǐ/^Ȍ?~b7&tcPCu҄PZXDelᙒ:w\\\ݻw#vNS$((dfRޙnZ':I{=tvT{p+(}WPF6jvF"Oc͆:iCf1詯+Zz}~kJ3447n!R~B``g̘caCBk@@@
+#ww9s̞=ٙvGp="S[QK7%_0ӓI)=c"kt3F5.=b+}ztFEGLIȘȞ9bHe]ޞ餁M^^~ĉG3fXȿ4.,`0ۗJEb,(joގ^PFydcc5pߨg}g싿`hPFioMGv>pClze*b2lmmWZOzG'=LQUU]lxV[ca8CBk@@@
+ɓ0EEEMHHh8~ڀk	gLlKrBDVuiӦqssر#OBf@3l8.g̘1;>aՍ%vJ,65<%̄^Й$G
+>Y]'|ۜIt-YA]7 qԩZq	[6TT$G__4^E]l5aH]n i|hW^XSSv1@BrHhTPUU',,,&&Ә?`%w@KK{񺺺IgpCmԼu֯?ľ|,dS}PJ#IŸec~s`|I''sm3W~A	...ew^ӦO~9Pw3]'0~xӗ(kdb9RS+++CCÓ'OBkDY{@+=lZ{Jh큀^`0⠣Gt	<.*2554iرcώc){$7n>H.Pr,1bԊGwlUxPl|@?LT}V
+5k~s4`꡴8o/-4~!,0!!!iژX%=L?)s̱uBAeHH=%@@@w͛7KHH۷1hLJXXhmm=aEEńcgH|d\^ܪU@S=93?;v)ͨI,rNsYND}nXɷDev/wۨ_y]J'|?߸}})V-:d#6*_<K[fMNN)R9KA		Zn]RRׯn!)J.HH	=%@@@tyyyЗ޻w/ASRRCB8܇"{{ɓ'=zڵXSn%VaK-u~ՆC4L{ziYW_˪x#I}HSY/Ыp_¥,YZYKFQCa:vOciS֧j$S%Pz;[RCCCE/\\\DEE=@
+8CBk@	=/_233544SDỢ"''iӦFPFF&Ez>I6l t<}DD4|IL7{1bEz*f)YxI[HJ!qj:;UUvl6N=EDFr!B3̇暪|aC5X{nAć_Ȗ⁁iܴABq=<<***n!)HH	=%@@@---<?/}}},X@3DIكx555kɒ%7+w	ugT]T^/څ&nXyCkO/FI}[@棨_NĞo|ix (7S$W
+fCuwCq-*zq	Owzj8cLMWPPw}bv;@BMh(5(Jss3l߾]ZZvAAWRuHHY!ѣG#:x]d{MÄ)Kg%ۢ)Njvَt5߷>)g뛼|_وc5M]-KI
+/38xDO\kvAp]ue=4֔b
+CCCUdOJ-;88֢hC_Э=p%$${֞Z{   Bill|20O<vAu>8rõ憆.[lԨQ;v	cǎ>}ܰΖT;NÄY hTk^8'BxI!ؘ5-8Qnc79H+m/?*Ϣ%^Nbĉ`߾nlC.ұ!踺R=R*b~&Ӹ_...zڵ&n	pn$${֞r=`T9(   Ν;gnn.((hhhx&/9"A&5j֬Y{IA >Cjf-h|'Nxng.IPICT OD&G^j;SBtZKWs
+<:z}܅VpUѣ1vvܨE%(^kj*+.z	ْ222X#]'DGG/^žz
+bX	!gkOGGǟY\\ɓ6B@@JGGGQQQ--GrdL&H`l8f̘;;;"8 .m	'Nb|ۛIw	K/-=.~dONJ?O;%3I!qYC)}0EK"_r_HQ1GCMSk,Eךy,LcЗᨗа$""K,Erm3mmm%%%MLL@7bX큄d3Pnx<4vyyy?~GOB@hllqㆵ 'nF}$	9lRQQɓWr	ɝ]7eʔ'6dރ&k" ~v"Nt"bLb&J+H..z')s(_jNV|¢%E֊\HZS˸j˸VZvAksssԀݻwWVVvtt݌Ck@k$$֞rP=
+
+
+ϗsNKK!  7n O^^^q%myxx+ч?tKwQq{ߗ"m}W9LV(=1kz>wss[zĉu9ZqƁzr!e O:u̘1VfM_ɨw	?> #u[Bid1ɡQ朔D{@3&^Qתhyj0?<Y#AGJac4_y䯿z>Ep8t .k^%\Q/֡">''GZZZLL,##A-:^	FDD~bXpfHHN=X{(JMM͉'PqѢE\8 ۷'!!B$5"˖-2e
+ςwcA7莞+Ikz3zWFGT1IcUK+;LIb^*Ezz&?n
+
+~(*_<vL]]}	cǎO>U]`(<o<MӆZhodyM7&5%&EoezoaƳh)eVEo]ld`/(.z9'0He}K.k-e\!!!bbb۶mK@Bl	)񎎎+W\~}^^^]]9pGYYܷBk@9gr=y$::Z^^oܸ<X*   _z5kbccаt%%,,ܹs|_}!?X)@۾0z2R.-?y5/,>_ 븽~a})="77N8qCg555ǍuēX7z}	Yx1hTCw|[į@ce8Sw*'%N[BI %2_p杞J}/zE=^rr?QQܥurvY]ވzi2:D[iiijjjRRRwy&BgϞ?,&a{&yKSLÀLq3񖦨p'ЕғʤQ=p0I`La<dJL1m=|b|{LϘ<yaLjտr+LET,nQla<=% Гv!C)&Fz00货tOeWDn-ݓ~3XLsKv @K)nin@#F?[& h9ySOvOS$Kw#///((4s$%%wK8bXS		RPЅ_Tdjj*''w5'P)@31݋ƌcnnqfPě۶m0a¸q֯_ɉ%!i!F.[֭;?Gj**	gT|˚]Ram!Iqו`w]sלcNQbWbA仴cngWrUϝvF(wSA"""1k3!884O>EU	PTT~G5}%g .	KfH߂4Oc0ZtZ?݇).S`+SJ0&+Si%02E c^23z_zIƘs"Lh\zeW0f.1FaTX, ]ݿ*fRc%BRZ/e<iy2TX:s& o\2cG4O1<2`ɒ%K._ O榇?y.\8s̉'._7@
+իWk׮]r{MaaWRyY[[^z߾}=F4+ںu!3T&eeeң͍#GMyy7ftPÁ1WKH,;wkOs,-tgmR[(3Tz]M*u͝svKG6o'r7BCCwdhhr2.XXXzNNϟ;;;n!;@Y{&L;uD:L8m$8hn<{1JäɟvK(1!:Xt,3	g
+FK*B2a;=_,=n%ENCS,LdJ$F&ӧ3ךCYץNu
+Ô0U]u0ӦMsʔ)4J&ϞC4,Ю01;=t! &M=z4pף+pkJIIO ;ΪnnnC;t,/4X7n|7d{p;88̘1tΩӢH.X<6A6%%%>"AxG+W=i U|ac-Ǘe潔^b)Պb?qD,-$ 9&}C`K*bRO8x 6qSO|rkk+ڍ<O PUl|1"_Js<>La4Qt{1|OF  XO3}%322b 
+]~[~ٳ'uCDD$//6ӧO$iӦMtuuqq'?V '"(wժUWVV~2uQ3m#e		蔈H|OqBе|WhB}xyge_dH(P(j*+Wˌ*D2.@;,QI}'>@BGF{3}@s?N9^vCCJ[bff&|DEEI<_$EEW^CÇ_|	Luu7oUUU+4ghnz tgX*/^#՗& !=SΘ^kҘ1왞`|D"L_kb{}L<==k&	}eIx_aX>,*a_ՉL9b
+z>+1W0Vf&	,^)S~T,b0f^^^W={Y@;B+ﳲ֭[7|;;{|=q~E` g#|yy_~e͚5Wh)]Q9shF w}I>K:+	$paxSg[ٲЩ#v]NL+@BvTkWDړ~$HMeEnhL
+
+
+100H9O}Ğ'	IgpK.\2YzC1o޼S*++޼yA@ǏΝ;OCoRPpAuuu7QYޝ6/VQ5}||hE/\p2R;[SPÄx!bg05Tٳim!	<Tǣ*EѪEIgI]֐,)fe_hv"*mZv}#;"	3g~~3gy9<%ѤVlm־I]TrNu5[c"taaaR9=F`.]joo妦&_Ћ|ss%K̛7oڵ^^^W^mhhy xY}}};;]IIyBCCtttJ $PcO)//&k֔L>HPPחt$^řMLjo"#~DiּS㒢{3M^d$ҫj駈ɮj=9]3O<ۓ{:%SN^Qw[|ZZի?Nٸǁ?<<\YYYII)$$Çׅ@ ȿ4775k<<<Ν;&@BXYY-_yZ֯_offv|Nwl 5ztܸq3%1v}^^DD(j777bJP5ɓq$<0ׁ>Oڏ8m{'c4l1h+~[wAT14Յu1l!HHH'Xb5f"UaH666,ظqcZZx;::~C B/.77O~=ia0---\p%3%;yp`yvVZWkQ ԿR?M8ѣiirsQ(ظ-/U:ݻwO:уO._;OsܥG;{4?+)":JTKJ&[6Ճ~@abee%,,I.l\ASSSPP¢˗/H Z<w˗$$$?Vkf&drGs*Wk܅M!ׯX~@!@\GGqqppx{{S/{\LGj*4iҔ)S@I%-CsqqmZ<5et6%GZg-9	M%!?o>w
+4ٞJFQw[BDꑔbT!ʂ'@PPУG@ sZ[[<xbŊ6j˘3%H$4d=tlN)Ig1)3NmWaN=5gݻݽ%+a|rrĉg̘ysP[T}|}XYYj`盪,]»Rj몊4{i4ʾ
+5218Mn4Skdl(y:a>}9Zr;qu6}}}EEEMLLHk5YJJ0==H;@ {YfMTTTc^t%'H$}}}--Lzt` uG[G[ZstuV~@>T-^^^ӦMؽ{w]~>c.tqM:8u"9s&dc[^kȯZsK[-oJ'G%-ַZp4Ď=U8ka)z垞wVUU Osig!@ cEGGǭ[O+...''񹰐In"LvƍkwRËFE;p8#`q_be~ѵK }zw[CǏᶹ	B洠ӧ_j˖-uGt%%@KKʪB+l>Wϒ?̠w1f[߾ ކ^ݸUuÇ[OJJǧi @ oرc򊊊j!zAJHHȗ{*|w4Lv~-_@gO,p[^>}jAw# J;w.6oBa퐐p)7d,,,֭KϠ˗'mO>jo"{{{'б}]ŋ;v߰aCrrWv
+ @ <fA|'//teVVVk׮q?|D+~pˮa 9!~`m^o3x'.dJ8{jMBP-7nF%|}QAl۶c1H#1]&V(,%~m%W5R',,CMٸ`SSSE\\ѱv@ ϟNDDd߾}).2yg;w|qR@lGՂ>c^oc,wR{uіsLw:LoǮXO׵6|뽅6IK@0PWk@Xt) |BXZZbbbwx0kɒ%W.a[#~ShBZbc:,~SW+z<V\IՍh-x)߹sY:::nܸ痓́@ |Uttڵk]\\#牋a{}RMaΞ#5s>m$vN8cݧdOe~SMw_X۞xlǧPk(\))q)((3h:'#:cPX Mz%|h|ZYYtLWK"gٌjkhB7 ֱ\iam1
+o}Gǘީ@AI^^^zzzc؍6fub߼y"w=/Ƴg,,,VZu%́@  Dݻwo5yՁ^P(Xz
+
+3w)/aVGȆ}ZɟF>W=ƭRUN<<<)dXboDG:-\XZBGv6Kŝ(G>%++.	,>/,X ^h?O5~냺͛>@K/˲5޽SQiN{]T[nl2ڻy;8,^wĺPO G&TcM灧
+㷑	4Q5ČޤXZZy{{гC,,!!aoo_\\\SS hnn>v@BCCag@@Sy&--MGGGDDdǎ7
+	yHy7
+[H{CtYtw(^P}%%޾;bԩSS-AW!6ډ6'(>^C_{zegx*b;DH̯KŹk֬?ٲeˈD"#K~yXXX/^KAǄOE+++	Md<bjsg4i¸L*'0dT9$#MU\r̽yϕrssR
+$
+]-xSM>sls3霌afSwqnsyyEV^---www#/@~1n޼)''GÑK[[^Hx@PSS[t͛/v2>bUZZZ\n# PqD899TF|&6۵7}}[={<p.ɹY_3fy5R7p_Qcfƪk}?aggY#.ESSkV7NNNx	off6a)S;z!	3޿:aBx6-)el49AN&XWS]wʞUFPh)xƚoFu)yYٌ:E䨴oN˅f܀Cֆde˖ǟDӱ#liŋ;߼yՅ 񣧧'פ[iܹ!!!H@ ^ .55`ҥƿgd0>SwQeee`IQQG1lllUeiso}xs|9oO/Do۸uޞ%C=wh#Y##uX2[gϞjVQrƌ/l/'CCC,ϟ??<<aυnU.bIFxkkkvvvJ$|?THY|Sis/G[[c;Pu_&d}^;TgUϧGz+",h<jvUG->&16(!?^Lt.T-{0'9bee%$$AY@׃,--O:H_˗Ϟ=<9994o<UUիW!@ JjkkO<e˖e˖ss;SRiVTTܰaLlIAڍ9dz8M-==>^r+u$ٸ=fõ+"J"`.5ZZy[vKjZvr4 /~C^E111is[ffb0VV)SX[[S>tlB|&^ǁ*&MB}{kxn-)Gk"!>Yv|O+<:ASC4ՅA"sjoͫ?%%ݼ6;P_mt5Əgxi#~ΙAmiii֭SPP#WqDtM/僂?~ގ es玾>;;&//ɓ;}t//O>!m#@ ǏgϞMNNv3`iΎCH$R{s>AI-ԾZ1&LxVMmEoږu""Kw4'#ڕu[뿍Ɠ.++Z:3(dĉ|шr&>+fcc>g>))񢹸ͩMt
+KIexgggP7o6H
+3;g83fL#%yP<<SLLse:aĉ}u|]Ic9bZqإKx=iG\Mdl\EEEG,IB?AXXXGG'==իWH{_{{{/\PAA!((hΜ9SL		;wڵkϝ;ى@ƀZ
+e!!!de18CxښG6: pמa9sxkSܹyt҅wo}ӚjcW	)G,<r0i&<@7-;~۞8{YG35Eh-X{nvvS42F#֭Wĉ0(CzE8^^^POͻP
+!.W9r:)Nact	:%Ur&OfkLdmU}wyt<[-f<7J:yH< A4m9s
+RX0GӻM6-]21ݒ8pO:GօlYYYZ'00\OOo޼y߿GR@ #8E<{#p?ޘ<OGj*mEElQJC}˝ԁRk?DYXC\0oU:Y4}AikϜ1}Ĕ)de@ am~wB-{ԁԱzbK64Rc,wAsjpج^S(:SRN88vvv+qiѤ
+%|ARWW"kO?u6&CP_mUC:3fL̞qPV緡^p@c^M=C3q&%Zvj63YI|̼,O=}zLΙz̰w\[߽M X,^q*R<%$$<==<x ^H;_ʭ[%X>uԜ9s&O|/_-Yd͚5Oi{!49r劫G$o5 *Jprr^-^uXK5=sқm)̘1]NN|ɋ/;:ixo=]pΩB@͍+7~;]tu
+525f>_qsrO>i$%%hb&%kw?`Ao@{}%B],<?9O|HCM{{JwrTzG`xVVWgw/ V_BKFw-XlOtsQQQ,S			]6??ɓ=Gmoo9pE"""z@^@ ?A]]͛7/##^.$8<EYY&&&??<ZS^8KN㛨*RR˛P'v%Ӫoٞ8u5+K
+k=<<v	oӝ˅J.~f{-[R33'@AWC:SgΜ	~wccJt充6mbgg4i|>|^-|qQ+VP[ܽMn=ɧn=Ԥ&S]->F[zen4?u)nz;`Az{z"~}?kR	h틀F~_$LMM,YB*l\[x+!!^ϟ8>ϟ?p?O>M;v%??<77@ 2,o޼yIII?? LH`pĘL===YYY77o
+aXJk%A]v:UVCd9_>RAo 5ĭ^-fog.~@.ٞLo	qM}޿JDlho!CFrI^cHJN.߼y3u?G**%JLL%..^VnGC_>RdΜ9X~7=-bg F&X`P1fq=ř5[eh-ϛBK<-2̸w$箖CZ,Sl310:zD3;ݖ\yyx}\!^{{{[}}}+**Z[[v. ಡ%	?O>u@~@{{͛7\TTtŊG&$,(077WPP8xWĽt:t#uԎVMǂO4!u\rh=mˮn~\.N&u$Ϯ8efu7KYXXrgK\j
+u kjlI9~*''wa-0VVVfQg;G.i.#lhIIIPpi_]ZӗUrΞ{y,ἹIƏgb<WSL:|5wδk)]}/Xv-o-=4ӛ_omP)(mʻ7=;Pp֘rJ:vz-,,ܶm?a<lϔ)Shٞ=:"k@ YUUzjOOJ7<Aa-_>
+Q
+}|Zř
+MXb޿Ƽ{(J|9s@SC,cf(rW?>G" 5dTZZ:;-1MBٵk;;;$	L*DzEg@hs';[H.16smiZbeL6Nt"&eJX6řћ[2SmD۷>H=9;zdneQ6	O/3KxlVV=` ?7)6l={OW|O&uuu.]T[[@~E[˗QQQ֭rvv~Bt0>sRNNxPtBcԏxxD}~{#vIJ@]|ʯ=h:z:\<-{:[۶j\֫lcQh\bur%Kdܧ/)EEE:DF.]'.>>drP{?jʹIH?^;l:srTrф;N2.Μ&OP/~ʞfɂ+imf̘|SoMu =rh}zuXG*+***((ݸqi_k;Jsl@ ӧ111˖-۾}{I~><_qEENNN*
+% 3F7BYXX6oRouki%,y^>C'4Vl+74PijnfeoFk''y<<ZGY~뿷kdW-#d$\ɕ<p󂀚ďiig$|ϧ&(xGK >#=[>cX<z3muZ%L{c{Q{͙=P?J?ݚeWV
+5q1P.,OlWӒEӦqީjA$#-ts}2m ##'V'(yf!!!MMM4ŋv=ȯ-w@ LpD.u%%1~?߯`kk{(CS{
+9sx-*2~s>{y,)qWmyYif
+r2˯/*2<:?VGΚÛSCI#AT6U3*LPcFN߳{SAE__fP'!caϒ%Kzo ϐċtL7m4aI&95Ԥ?j}lZ]57hV}J/z^uԧͨb}2~C"׼_ώ531^'.Ƭ^<zvA>@`9TځWsG
+T+`h&Մ?ƍEDD\]]1:|544.]jnn^TT;=/OoO.ڜ\H@ dp޼ydjj***
+uN P߿j*33ӧH{bK+ٌZR'ۃS'"q	wQ[6}ۏ:h颠ô*FPűԀ&]:Vf$=+M[u߇~ȯUEzzz<<<ja-ܘL>2^cTcWY1avvv'l9ӍRMJfMUZNe=-:=8nFؠ#JsU.4<Hp)/m_;eٗ^n)X).LW>~x[湤xz;7<3V3Tqg=ykW}j{]TqݽٷgٿUݭO8!%%hѢ(=zE}V\tMذ2z@ ySRR֭[/涥3>566jMBGP/M6vC[÷
+o^l\u!)#D{j-eʏ O0Nnj|*O6ܪ05<3yVK=LD[dTOgLc.3wܩ	[epL?2!SLqqqc̽ܐK>hڴi[lI8!?ۼ𶶶k?>._`hZg(ڸ:ٵ89XXC/^4#]-gvJfԢ{>o*'؝f)ƽ>XW"1fj~iIۛkgU~ P#ĩS`i@/ڐ#++KzDA{s܃?H; _@ iyeffŋyĉy@~zcc㤤TĝpՊF:XO8Z"\ݥ%RlF,|u\Hv \^Ip: qߢW7N29(oD`koS=T#mTIA-+^ ->ߎM5;;;K]~>#nj<IbccAh	aPc8wvvaee{2k?jّ|c;lh	STSR]HGKbULjަ8jQzyDs*BJொ2㸭n};s]\j#{Tr<Mqꝷ}h}Ai!Gm
+>_<	۪ۛ`޾J177_bz%DCP(s>}7ۓf{ a޾}	"̯8<M99ʚx<)iT9@IUEXD`gq~AV	Vӟ&>Ff[w/	Ɲ!<%i/5dkc2{jJ_;͞ŕioL|~_`mm=i$...[q8mh666%%hb"<==g̘>"w#}O߆~|MHj߇5F$ik!lI{5lF>5-uQGDtGS'Zi8
+P0KEՒbdddqݥ[*k׼|}}_	Ɇ8'@ piҥ NKC=֬Y~}oΝGVN30$Rw,JNi9Ԭ,
+\Th?9Hοq%b{B
++AI5c9\O^#\389wδL
+ƏojjBamޑv&;[WWw	1HmzN/''>?6;ԯ#Ls]ٳgIz%B+pN7#}{2&@{YzN\\\MA<mD"QOO\\lFx*Sv77{)(f^ygϛ/co!{v{aMd?EY۬K=4^#VTwJa|S1fL,ZRG>DbFZϤI-|`4n3zdܹ,,,rrrw_p|(-[dee{b5F2'%&&w+,--w؍g8v@ 8ׯ_RQQ	)(&iOK;~.=ϗH̥Ƙk[GŹ䔖^UK޾z|ňiz<,=]0)J|y2T(c+P!j'bgM2@7e*6f{<j?uu_pwdd`V%ߥWRXQAAAK[#~@"V\NCA{@n
+VVV|rkk+AG;@ inn...޻wCR(	y}}}?/@f6]9lڝ{=(ff2OQ<*?b	͚7o*9nn2pb=SJߍa'$1Thp{kv4Ζ~~~f1&ۑv>;TEtKF&,YLDCA_/)ԮU9t>ٳzzz|||jjjϞ=kiiA70lO= a$eee"""RRR~~~1~殤$JfBlRWKl-!6Wtȸl,μ7jV{IQX{.\ĉN0{
+*7+YO-\hCRgKJBBɵĉ&e@(˳tRþA^*LUV@0DFCAu%9sf֭vvv2\&tuu-ZdhhHP޽{{a"ݩ.77>p@LCCý{BA C&ZUUuϞ=<-Bf6ݿ1BΡsKvث$fe 4;PEgC{Zm<xjz629&9%=W,en&]1񟛙,&&FkfC D$|^R(v9s&˒%K@xnn%eee?>)1B^]#7ubbb7nybu\iiϪUV^P^^Յa"i-|LMM{{rA BoZ[[ܹsС5k(((H9E&38"M6ȸ<*n# `3*+|bM~L(iN"*Ain7ۚRZ.ιc![M0C5spc֤{uE?
+FwguSRR$%%/,,`:SR|hϞ=quϟX#UeB"#:E7Rɇ!ZZZYYYt35544mݻN]6n;@ z~Hqq`Aa!a5,(\r֭[o~3 S=;53<wTZ?̔EsF9qXk(QI'.Xv&R~*½f{
+I=TO勠́Fhg=a`/U|<j%d[xqȑ<(,*:p +++777b^b:$0'Oo×O)_Јϟ.\KDLo㣢/%%emm]TT[s6@ TUUm߾opOmvvWy4J'+NX<3w?Ol2!lgg촉wLkуFOQycI)}=#G/ؼj+VJW?EJ`&%2!|||~~~M99H=<<hEϜ9s˖-"4>-|w9ۄ	,,,>OACGBxq+ՍX.//?ܹsZ[[aO.@ B':;;/7o۶,?-3yBqqqQVV:.y_GI-oNGW˝ήڑAs7;l
+J߲D,,,ӧO_4kάI˾(1L #A3rٯ;J#ɥ5f	򕗺!~I0*Ro߾|<:Q(,--O21x	off1yd_>>P.MLLL]]GWt{UUհϟٸ cl@ = n[JJ͛SS;RS,*:x𠐐SY]pLcD+OcRf色#QdH|ϟpM5uE<3xƖEy=pdzH٨!돍Wvة-pkhӦM&L4i;
++ÀDq]~~PP(;;;6n܈ͣlj4
+rɠ:mm̰%
+ߞ+{(sb}iXm*vXc5ӯQmc>~UVb|%%%ǏGAIph4ZKKTgeeUTT=ٳ̡d@ 1۷			k׮ܶm[zjj[z:#B-f}}4#Vҧ7!Iӏl{^eUh>
+K$ɗ#[emܸq3fΈ>
+Y+uyb?/.=҇!t%+k1<xyg#~0p/_M0y4EFF˃T{"t>uUǁ¥@]Hii]o>U4נz83xЏ?,a#aizt߫6pyz$z7/ǃǇ~3дٸdeeW\vi/t<{X}d6{iض@ ի'N̜9SQQ1#-9;IPUUUޔt\i)|87)WX#T:Ksᒅ1`ΘNxR{R߁ӟłc!^#Fմiiֈ_-L(۶m{OSNUPP`eeڵk#qCh\pB}ػf5Ce5cg@޸ߑQ1DClSϰAg0Ixr=C~5L>|IetI<##KjkkP("@pa>hG@@ @ ]?RSS$$$HLy[N__5g#2>:xzmM&/on'CvHIEZ!`I&-Xpv8䯿o!rfN}jc宱36ˆC3++޽¯8ݟ-LGjjbb"x?^FF&utGrcWb/̰5̍GPh]4u8&l=?=E=Ē6&9kx:/\3booOl֘;mɓa@ 
+ZRRRSSF7~MH`p>//&&FNNN\\B5 2Z(y~[	n9ewG<wB]]8\z
+kl-mlv0aLm+4EJZ0a~69#mHЄO
+>X/!Q}M3|>;HdC-= #CGGS^^>22|"Vb]v!p*))yyy]tv`}`FMMm( 566={YVVg#""4t<OTTZaaauFJ-uQxyG-1&Y׺:vdrJ2'*q={Bx3{-s6lȾJRK߀2h }wzh"b9]Tjk<|0ၓ/''E&3iӑK5III"ӱԿLGӧOo۶MTTTGG'&&ɓ'MMMH5f<iz?ж@Ɗ+W WZB&DSRRXxThBg{d	%Q	V?tcK,wKZJ
+]`#./I}9nKDo2$	0Ln8F@)Ozvw[ڪ;^6yHeܹ,,,)ʘ&))Ɯe˖pPP/c4&jii$33˗H5&eܸqܽf{=	Uo>|,,dL7yRS	땔_|m ~2J=l{&"QMMW{2jb˶bm},Z+K9s&;;&mDvlpE#P4T})>s/GmM՗HLLJJbL§,?˖-ӦMU/^xϞ=a
+"=.[ܶŰa{ІhMHKK1nmf8n@ C ^{SRR:ruBOe
+8::|AچC<du*s8{49ܕM;^>.5>d3L6o3gvHf_ԩS#N%܏]xhBK,i~C#/.2L#VAɥvPW,.U09kiɒ%!!!y=(,UϞ=ɉpK"Ucl[[[!!!YY/_vvv"@Qkjjf{2-w`~l@ CPWWw=oooZ
+pP(oә3헢W<T^lh[lES]ќ+ .tMj%0×kW`/X<4vvtI(iܰAbFRm8TMY)]#_l̤h/)gggP)ۢE@TpCc@A}W8,k`` Y7o @;4h=]aO.@Gkk͛7TTTdddQUI~x;::>(yC!F^3$/iSa^Á1&NMr(ō`+X^\W<foSFi[!)Ur$_yF(ϐ}}}tJHxPXK,Y	cɏpPPL(b%t%!!!//Q\\\[[ajjjj}{f{+=HSSSwwgϞ!mB;Ν;Gwppۙ)hy333Y[[\jMF<d*=~x828$!ZckVd>c_ǎ:"wTam'i?HLwYF
+l`w}LL̈9#F`k_Q'DKeG]teeepEp1	'ʾ},X 6m96'v邂8lff|XXۑvy   
+Gr=dr/w?|@ :v옊TF&yhyvvveh񈒩?6ӘN*k!􆺺pAuS;cT7PK6N@ĉmܬrnhk/[!J@ob..SF_@eȦzhJ)}gd$3og]I	%W544E|{
+#8B///AjMMѤ
+
+owh"33ԷoA{ C !Zgʔ)24l;#mMr ޽{%yyNaΝ;׬Yceeu|NGK*Q$s377rf8^04H)S}#jm7cnF`oEF`eeUZVWw=ԩSKDgߏH#?ked(MA#͛WϜ9(ܜm	O\X&++;iҤ'jhhwPPL"C\II} L)A@ ç_kO.nnnM@|@PWW_beNzzGZ`^P(nnnڸqcA~FgK
+#ScV77<D[$£v:YǞtBa֜Yk5T6(SY.?~ŋ|br3fΊ̼;Z#Q{uDb,\!m{O̖+i7mĠWBBsvvdd$x|@UU5*1\gf6!fggnذF?x𠫫ig>pf2|f{a~^x#,,l``@&gv+V$$$5f"32k"-UIdXJ!܉³s~~6s𲲲i8or210~<eK㊻lĉGgdȌrK|@˭pW:|,9[DI?YZZN<][[aυ(J^^\O3xG#ƓnA!rUc[Ș9&?6WNNnڴiRRRH{@_gϞ>m>py{{~C{PLL
+?3f\+9(+1~xMM{w
+Q/]&ȇNpcd2!cm-»GG$	?#\	qM4QQI)BB=6v:b#3#}
+≝)9?~DLQk	za0-YYaaa4%%%CCC>wAwߟb8n3tzg83DQF!~]A:}K^?gml6nܨ<pSrǎ---HA_xSSӟJ@ ?鋽=FA #ŋ%b
+w
+S= 8HM%
+
+
+˗/X "5CEӵKW-&f02`kKY/ћUHx6-◒U@uVZPPC}&\j۱~FPvJ18OS:SjYy`~=')kʁNII~4MBBBRRRzYF/xt9d!(g~;w^FF<:K /	}ݘ֓kpfChxNuioo-D+Ԣ>vOt ѣG03P`\IHHatDy8]$V^|l'ue.;GMsǜ:Iv:v˖@Q^!;֏
+Πʺxj㸭_̦<][.99%+aO+]HH<3<iϐA.Ж{z{v~KXΠeo~凖|o~eEe|W17SCWumC8f999`ܞ~\KNCg{hm{899aO.C~˗/DPUUUp29;;HBBbݷo߆ٞz谚drKo,]8jdy£X_[nn|*0W\N,z(tz+..?s\?q򔩡~ۣ1rh>Q~:%HįLfSCmn@@
+mKOgأ@xZTt5kֈ;;;_pٳg_|Cmmm͈k0Ǆ2Vd{c{D/1g߿C	zUd/Gi@ çf{ ^+WԌ~Rٞ3g3rv[6E}-[Rv)!hQ(""DC3:ZDQV-Zn"k7w[Lm59;<amm}Oǌ̦ko6_󽝄̚KDrOz*9tk2fLMN+.-baI>uvɓe\ʺ֝	)Ȍ#	rbJdSpwu>|;u{:bp?3Jͅ~޼y"""%tF2988X]]]RRrڵhH[  P͹0x.J3 xÇѐ[Y~ҥޔƻ=Ӳ2+++>>UVv>ld6|lLlzՄ'`ɈĤxy+_IKFoA; Dx=8F@D2䉋w+|A~Y|wro/1ݺY}4%S(!!^P)>aI9%&&&,,f͚bcN   nhka4nTi ۃkjjrKl 455]}rqqy{{WTT==PJN>wʕ+O>;#03q;[W3!|fqd']cKT/GO{9'7gD-2{V7[5JC4Wu8uPlURq7v>שi43AA뛽L켰ݻ[JKŧNjjjZXXSs<  667y9rd֬Y  ?W?'E_ 
+۲6oٲcV>%$TWW;99Lt>xd65GW4L~̄̚ا
+aLĉ-֙oGI՗]5-|].̝Ou{$L8O(賯	2]H1Wp7v>_;h\!OHά4===C<==_2p{䦒HwC566   #g[Çg͚5i$X ! $ٲe˙3g>ۃ:۴iӜ9sz:3p?2Z9)
+g4~'3!|t|=$ǯwKA!Z7X}}ԨQuL9I9y稂[_d+j.AVX+k;E8f.FJEۺuk#chahholl z   ր̚_3ՇZ  0r$$$叟ÇUUU^^^rrrRRR6l8slF[=n2y.\x1Zg>lY͟ww£]beM8q/,q3؝{mLB]Q[4[Ё#dDfz9XQ	+4p7v>kxy[
+޽Tt9]`nnnii79a}AAff^\\܃  `ח\  SSSp o^t)  @]]UVXA"Vr-WsqvJJǎlG&Jg"gA7T5?]b\Ὠ{&ɷc7GWZ95]d]P=!&1u)SlE@cNwZk6|"ȼ3W(%*QI_IN^D.ZvF!:I$`hhz700ooo;  yzz>!!!}$6_~ 9Z: 𢧧ŋh`nffa1U5558(n~~YubnĘ:.ccc%T/	Ycƌ]qgCWkZ	g +?3X9+Nnd*v'߸FƪW-DeT  BTT422ҥK0  {\\  "s 
+޿̀ YYYaaa;;ܞ%%wj#>dBE-8L_3Pਸ਼cRz9'w㥤g̘1p+Ǐ3fʙg;LQ&͙{\A ifJ܍ϼ1ѹ%kq?L֋-ZlYqn.#+>rJkk+I  G.$$DBBbeee}
+6gĉP a9T ޛ7o߿____DD<--DGyhh(''`DDDۻB4{8t8JZt2~BJN ͓킂|R9ٹ<:9Eۣ
+9gO?]pA̍oJ-r30LrT[=&ɣ-[kxiiܞ%+JzzEA_(++ܹ  wH$X5{0s{   X><zh߾}BBB˖-KMM}_PKݞμ<bPPPӫ̨l{AYt
+WYZʔ綾sB^__3OR*L&_X8j(t6aUPǛK_uZAzb^Uܽ='&:76%--򁁵?()qss8{lGG  dߺ	;   Xk׮'$$8p@CCCLLϯ%H:I){h)hdBGDS7.)l!?$o>}
+4Lo}70gYS[(Ttp߾A6䀀Ӌ⢐ 1xL;w
+߿Hψ4ߛrKAAAZZzݺuhSs9  &
+  0
+_( yΝKN>]RR2>>aՃlACCӦMO~N}\l*/ &:w]=[=\\u69t/sFϘ% "t9&fƫ4&N1c>CTV}V<Ncq)y-Azx6gdp#z.*snYL8  @BBBJJj޽W˗/{xx,X`֭+,,|   ?,D"q5Qs{ χW Cccczzٳuuu_0:|77OL[ã]W2Od;D?5b?iҤQ1?DOgz|ȿ4n]@rMCFq'oї4A7WRpwh[}[OOQ^O9R{KATT77wpp"FZ=KK`AYYJJJ^zw
+  `M>lll膣㗊3S=  P`)z{{<yzjŋ^pSՓ#,,qƚdG̦kq|.
+\ϟArNFX[˓*Ϡ7$	:ݕqGHfÞ;Q&\_ϻYmIW~Axb^e9rjK5=|c*u',E.)a䇥{AIJ;;;6QD),  SWW7x.*C O ,Ƈ>}gooFwY__6w{(iiZDDֶV5_%ENIU#tdSh%redg-~'"i[N,FP"tw̩. vn}sfcOYBA
+x2_V4a'S3@ IKK{{{,)a)M GFFjhhZYY:tѣG	   hnnfccz;:cs{&Nn   ӧO
+
+lmmΝ;ۓ^ZZjffhѢ+V:u+1&鯆]]ש<~$BxbVC,TPti_O1TY{VimJ5jiL6n?2)qQtr`j#7C߹
+6~1>vd.^sdU]R͍~8p͛  ~|<==1K'$$db>  yUaa0IUVV~dv=X`Qqq1+a&Ƀ֖Rկ*䟯37:(%71Ϻ9VJIGH\.9ӳjcȄ	cǕ_6~x	cݫ;oҕUrpLe`6oY&/qS3#ɹr+,,֛RTͭQ__ֆw  `8880K*8::~^؁  * ƳgN><o<~~۷_)+A;:w͢E-[F">vd>d6n43Ϩ~1<W!fBYz9'1lsP˿WPFyqLYSN=zmuibчޙ+@RHLyR:9(`c;<,+|;Sҕ~T>fY=yVXmff6k,II?  B`SwC$X̅큕\  |`1zzzZZZ=2
+
+
+gΜ4pqqZlY^^+&y`s6o6ؽ;Wvpvڴ~M86vX3qKJ\|BQhxUٮk߀pwJ812C\lQ:O0&			yy=H$A١ܨS[[ގw  `-.󏏁 nj455UUUԚ5k
+)錟)!ʕ+|||***=x6No]C6c!ia!MjsyJ>m/YƎknG6̙;_BN-Ǆ_rΞ˾'sFI24{X=(`+kӂDdb2mmm988̎%YY666ZZZ---x'l   cs{`%  TXg+((?~Db\tmJJJxᮩ]P]~S9)$o_I߾Z1Z%4g#ހǄ8qֈbY-;xVCUj~qyɉָZL&ۥpE$<yr͚5rrr;v(//okkC	  r`u{Tۜ  X7oTUUyxxHJJ
+\2++o`Ű-o"ݹ###[r2Zt$T&Wd5:Q?=^-aƍsߕ`b1~s9١c2vXYԃUmk5+]mOI(`{GC#bsC~hb&tÆ
+_NN.66AY(>VYX~zQQQ!!k?~T  PYGwQaG?#G̚5  >
+j׮]FFFzYwC_ͅh܇D1^𛌅0nt4OBֻ}3m=zڴiWX֗Bҷ0jԨmy#{]P[b68z:Ğ{s{6*;}lb&^(CyHdX}I^^^>>>gg碢7o   쇍zK{>  h `5냃
+n0n֭[{QVVVPPko){ttD9B㥢w$v2c욿}K';L2s܎#6oO3GQts?D:wVQsZ[s'S]+**63XOFՒooolY+>K4   ܌mY؜4i  P(]]]RRRiiim==@C]vk*=h-(0;=?+F]E/$!5W~݅~j`֒أso㶆UP7|wS^u>;[7~:1[
+bbb	n*)aӛt222>Y=   LB]]]HH055E޿gas{ = ~		oϸ*͌ ,,LTTҥK2r3$gz})rN݋[A/6qzSWDcoLqб9n7eʏM:90M1_ʭl'KLwrrr-rqqi$;wDfff>~   +   `)z{{;w:tH__}jhh$%%]~ŵ)**񹺺^xVa82vI?!IcX)M[qؼ
+P2Z?u7n`ʮylj*w?'SC{\\\2n1)LNHHPQQ={QFFƽ{   n  TXwFEEikksrrN``IIOg!;;%%EGGGDDdÆϟN}l:yUB|H=C{uz%zI^R!:rԨQN^qg>޶c(*1UA:tZ'mMu뗷~1ۈl}}}!!!gg[CIMm*.B	PUU5$$͛xf   ӓv֗v8q"  AC-\PNN.00"SSSѠɩ
+VrVɍ2wxҪJJ>^	!5Q0~Ikq唡u%Caa|98<uҢ͸BL%JWjQam]I	%-a9uIuuu,Xw.tvv¬   rJbb6{r @@_|^ʲVSSC㝏YYw{>fg.^x޼y666'N@#AG̦R.Nʇ[l]6]hkĞy5?;B:VMMvz
+} ^'a*}*+766FUTdޔBQQQ	
+
+uVgg'Y  աnNoj|s{   `)z~nn4>ݵk׹sp؁=.cVVNN''eii)+)U-uNկd/I?tnI^:v월}$I X01FJ/_TtW-@wmmLF(١sγg.   ܩ:u7u{  njtww?D"		mڴ	}2?촢-[,??ܞ{OG\2BWދ?WAG$_M:9 `}=ҹ<H1DV~0z.^}ӻsrj>feTãWQQ[X  ;!!!h$!!=  P`A={v	vvv//Ǐ`7%Ebkk+$$dbbRPPә.]%BSd܋]b(CGpPA~.<HM1a&6nڴIXXXGG'))DbPIH+_n'''{ee7o   @9xYY6Z;z(  ~DD5k֔vz0ɓzzz}+;:2?mc-md(L6^fJ4-
+QL8۩B#\䀀WToS֑	K>E~07m$**A"1l.P~CY:PC˗(❌  >0va=Ժ=  n466;vUDDD@@ aۓ\QQaooΎ}ާx̥׍!ld9WϔhkݏsRTSG[ HޙM:rO䉉ݺY}S83ˋKPPpϞ=a(UnnnW.,,|"fxgb   =VrAf  X
+VQQ)//A$amII)//_f//r\\\{KރSkd;Mk/o,ss?V_OxHV&($=H*+.Ze#e'3)3J5^^^OcKwN-2y֭(ѡ ޼y   L|+u>Ѹ=  p{ >>>RRRk֬!+A+""":ZIxONo#j+s.+{CMEmW=ts;_cR`Rۻ  qqqoooY=wdԻ}ŊwޥP(x'`   A_ܞDMMMښN ---~~~***}4^\#&&&//WܞAjٶXHpvΑp OS7nˣsij%W9A8gpC?
+S	}ma)W^377?p@CCCgg'	   HYYYȷ֨n&HFkZ$&&8saDK`A޽{W[[())9|p[nڱc
+OL%Jglp90|6ѽHz9'{t>װ_uI ?p=rjY[)*sݺyLoo߷owrrzY=))䰰0559shii%%%<e  X8q"a0͞CLF#q{3SXp{ VB)))߾}$$\rۛt;*)>\\l^JN0f2	myb` YBڤo24,IInwPW宫a*u	ٳ---+)I)ׯkkk䦡z   F s{pYBBR			dC$#988<==Y= `A:::´tuu###рU?Lh8&%%Ͽqƚd܇̦\w_ly!p^KqDm~'eՓ^EO\lީnL6bffE̎H4哄%%111(ihhk/t   n.PSSfz5;;#lll%E fsN\\ҥKuttoܸAIOgZX*((qZ3XYiBs1.)X7C/$|j0#rpկqz:PE$G+L&3Lz[-[ҚݻQ>;   +4Km	\Fu͔hyu{h,= u/Y/_ܞ)11QKKͭVq-4t.Vm͸K
+GuKZt{M:p;oj>YOROgFbY=H٫WWRR񩨨x   `(3iҤ!477c'y W͖Y=]Z			=`A߿Fd򾾾/^dlۃٳg{Sp2s&MyڴIr+WXKS~D=.0-\0UZz{Am_.P2M>r@Taⳏ}64>c>Qk;hg+9aO{~V0R<ؙǠ4Оeaaz8ydKKKOO   `(_PK@`ew[+PWTa6?=tx- .X
+rTCCy:uo%ç!abb;;eIIIOgCWRoW,1\rܸ1ldVlC4Ems$}M_jvPpڬV~V0zS.;88OLddY=D"q͚58;;;vD   Ç1g\ܞONp)++:::vj}!4Fp{ !>>~[l`S||tASSӒY^J]QOnizٞjxw}PyŇ\THt,/p'Ԏ^<XUrˣ;_=a $FӪE([v~J0zS6[GRR200aq'D&%mfffcccgg'މ   #G̚5k*̓t:`V	ca)D"Y7#w{zX%c` ɃH$իЈ'#nO\ǬbSSSnnnss|p{^؏1ڢitĠ/1Ko<ǞKQw{رJ{bCI6/;*>+|PEEE#""1A.Q EEE>;   5{rQtUBk _0lC)j=X_ppp: Ϟ=#RRR(ٺUVVNMMMܞl̮WOC\*/p(&`oݝ~膟.hCuէ9jy(}_
+z36r^)||\Wqx]_Op~y{W%rZNNNVV)>1LF222vvv?M   X_E7b`˸{^6E]5rk|5@ЀiE
+= kDwwGⰒȆ"Yr%??Cs2:E^=5fub<ا˸_?e$tc<3%%ۮN_(IO9b¨QPZ=uܭ5zǻU]GZBE/i?_w6DoXTTM[]Oj<%#-76q] .,Pٲe#2791y7%knnyΝ^+   '+SSSb?HFݞtt{@UYp{ }>|YBBB\\}ٵ3l6YhZbbb{K>XfSǻ+vx͚<yqcF[Fn1fh[++0!_AbVEQ&S Z78m$tＹl&/cfQfٿ4 cG~eSyh߻G8#""׮]{7%1ICv=2eAAA##vuu\   \d{raT{:	n_EEENNN666999FIO?qℝBxxxksL1wo޵DDxO?~L2AANs{sSqeEi\+z:}?vl$%ɞm)tDxi?:Z|#ŻWa.Nk7n75KuQ'58N0z1зm***UJJ(iidt4w\555IMMM{{;L   a<:[=ܞa,= 
+ǎsqq111!nOjjeeƍbbb>u=e
+}Jo5WMu7Մ83e_=y4mj	9)o>~إE(}y PQ1vhr/oM/a9^M(${R5_n,^EVcl./ۀndFMl1cF;`軪pիWW1ꨑLTWW_hr@@˗[ZZN    S@nà'_YF<tu{LMMaX;w*))񙘘$''߸qaVP[[yfQQQ55{޽{ _ݮ;ɍ¸h7:Evt`SQ:nl~)5{l~}"
+cھh׍!O8+$8;Ъ/Æœoo8DS`-8	+6chБ|r7NSRS+ɱ<<<جP   f:|			SBBj|5j'fX
+
+
+.[FROݞd4^۶mjv=6iiN3$$8{뗷we7^KsI(3iOi?f&j<avbgW͟Qj6ؓؑUTkii%NaVOҔ1%.PCl
+   0_ T9$$16ifX777SljjGb{fQK4ۃ2&z
+ՒBN& L= kQ]]%//F,		v{ [oooQQQ~~[^t;-^]]鮡C]#/qd]Jgl[W}*Nn<J^G.t*)X[>{zSC{8~T}<esfLۖYSB>{
+K1IFzaǻqؑuT>.\xqRRRg^f7gffZYY,_^^   |J!~YY=àH> ]j?.X== k͛ڝ;w		\LLLӛR-[Yy2䨯+mG5cd;[S2+Rg}eEf6_cBz+?k|hpJHKh#wܰ^U8qd}[](yidرREJ(/Xz5'''V_1VJDbNN;Ӄw*   <4gؠw/$$TOOOZ[4G111v!6'ȗ@H58
+	J$J ,B<<Jzjjj,PVVF)v{>%$ܼy344TQQܹshh=qdД)%Q.NtBPmÏ5>I~ឹS>\&%Ɏ6aON|i+0_8q:'}ӊ3lg1efM[kգ1Aj)*]b77 $HϞ=CyT
+   03iҤWr=  n477_r%88XEEeJJJgϞ[ZeddPܹs9uƢ?<z5a{ji0cgIbLĝ*	Λˆ'FRQJOYz/m]1X''Z7=ا{<=ޟ-mM]DBBB}zR79DζCɁ*77Çx'Q   ʺ=C n 0 ===uuu111FFFhk׮.0l'eZGGGkhhHJJ<y3.-Wo̘>dʔ	KNwy7u'On'%X_}a`-ldFC:ˍ
+KtFkd(/(ʹCXf``^=.LVf!lܸ1_#رC۷ <-󴵵MMM{nWWI   `R`n  TX󫪪ɓ')iiRT"(..fAE1CS'+voG6ÚOf[6iܾKWOC}89a.ʴiCyh*_M:%O{nɘIz|װM*Ħ+LOYKgU:Z|Ո=zzEkʎ®Y'Jl"...))PZڛ̘1+u(  `mm   |߱Q  Iggg}}PNUUj$MMYf-Y$??8xY[fݽ7fpk)`'ֻМpwQf5_vؙ3Q{${~ð&vŶ5G?Xt͜1D:[tx@CsNvv6()aXYY.\PWWG	|7oD	   0/G  }gL 	sNFF͛>ܷQWnOtA]]]4\|yVVVw{ΧxGn&S2noFT{nfp-b| mz7n_V-csz:Ƹ޾K[M?!ؔrSmٿI]O._4?JP;+Uɞ={.3hg||oJ2_MMM@@`ɒ%zj[[މ   `vF;  t]cl1kp{ ֤ǩV]v-~Duyyyh\Fv,5m<fopƎT۸s֌铱Ͷ|x)tZM0eB'RwԢt4Ī:x`EPYgac"M_>ׇPw2B->BgےE"*2Eau;066VEEѱʘl1;ŋʼ.]jkkM   ȑ#_  _Ì3OOOײ?%驯̴Dc:"ƻ==fff|||FFFiiinOc^ƈ\4wo7[---rĞOce`wVruɍ5Lײ-5&N~_h"w*sr,zYkۈaTn;}E[]^yj1>0E%(03Ǝ=u/[7k>ݏKII100@GssBJz:#RA||orrCiihh( XpEEś7oN   qA;@_ӧS9Կ|p{ ֤D"q͚5VVV
+TFrsI$QRRRZNX1R
+S89ynѺZm$R:c7;:(w=ឹpTӨB-D|66?,Oj6g߂4>
+]Uvo<5?E0ѨlC֨/gb^N]:@J233^|yZZZg^c@OFƕ+WBBB455}||Ν;;   |%@#ۃo/EGnذADDޞD"/(`)>cv6LvppGýw~&"yl/szp/F૧!ɉ
+12v)S& MOЅ:2c9[`lG?kZ^ﵲ5c.mOA7l"QYi(a/ZڢOp370'l.vL9FFF$6鋏]Rr!SSSdeewq/^@Yf   9|0޵h~s{Ѝ2GG5P(UJJJ\\|ժUh՞=?nkkrHXX؍7Xa%Ɛ93fڍޮntUöDG(sExnڪ=@<t{l[XĞGcnΥ<7[[J]CGEj9Z>u&?k_4X:
+
+LLLL"))RTĘu))
+mllĤ7mT^^[z   o:'8h8Ns{hqtto_5P(/_D_^^^hgv{XETTTEEe׮]/_N=}WvYm2߱=
+'7x4P2VӘktӇnݾ;n]{ݫ0jc	YP`vơU/_}SLy/ȋzW"'FIKDׅч첲|[[[55i~Փ\\L$$%%6nXTTX   |+3iϰSSSb?~= ٳ'Onݺo߾=))555^^^~~~}[+Z+0dܸ1j<z5svo/رW<0&':uR'ԝ7XKc^QCVq\6uK
+i)H۝rYHHHUU5**A	N)--FXXXBB!//Ç]]]xI   u%= Ā*5y]YY<;;&]t'#nyyyIII`|||.^tLLF۳wۗa֪mąs[WEW8}'NQ￹1
+`_?D<&cاbWS֫޹L~4yرxJw(LQ.ݴil@@Y=
+mmmЍ|	   +큺= 4m4~* ٳm۶ˣnXXXmmmnzVPP@-[TTTPRqu[='O>ӦMr?S9bQ:c+UNSbf"Zw.Ai:F[ϧ%r.37׌CI6MC[1QFzxKXE;l?(--MIa!R$//˓nܸގwv   PO0NOOϟ?ãxŏٌz>tRPPܹsmmm)]imї/xmޠ>)=\3ɽ[~]Q̫ul(5̀=
+kMZ5j"':)|Pkz:`;`-:XڪPOB5_>3
+H|;7	uFO$R_2~ܴi̿:~ڝ;#h;#y=<<ɔT|;HǏ_^LLnmmM n߾ىwv   \ 0I)= th֎f|ݞO­[899g͚TVVә{j|+U=5<SuߗO_nA?tnۡ$mM7Kmބ8Q?<kmTGc:EF+Smv/pn /<j(lkմrzb3SmH6a_ukkɰ;}m<p7zi:j*ܿ߹Ou-7E!Dh|L޽{)Sdꉋ_#wܩϒ%K<xV"   s{`%4lA|8sbb":ecc՛XP---AAA4f	VVVprr*--Б{zlOfrcѹs~3f4u?r;U
+	2J13hԜٿVR'֮y*p3j]PE]ש:p?J^w WP_cگ_b t׀.xBE!E(drZ09c:2^[oar1!T
+u}ӛxSaEIxx8싈؜ϧ12LCi)6(̃b@Y"(   UA;#eee  }쬭[|v@@ɓ'?2IH{nBB؊+>>+I<Sǔs~~1koM]ԦP|=50&Li_99qs`;jnc<F.
+0駾MD;uܙX}1cFWv۷VKnwy9zɓO6i/maL8NE+që_Ř#**joo."CCCs9   jp{@i̙Dߣ}p{ ݻwׯ_Y| 9;;Ⱦ=		v{<xonnN"spu3ѽ6+e9?vr-cǎfcarY./:89*JIϛvP#P	0scǀ2eL6mofg{Ձy4^sSq	8;8q^Dhkyn:VI	$&&jkkϚ);cVc
+S*-SRR|   Ak	XOs}tiLX
+}դ$srqq9;;Mc\{%$$
+,_<55;t ttD_8*hbENeE*\HJ\:+|->qdۗ>(MCϝwbm~tj;rj*ܫWɢ{հu=WwV		2:}F)ޛjzU9vo]O0P_fZ(B9مښ|voݬ4}ۚ#`JR@ ,Yk``pB|{22ɑ***3gΔڱcǉ'޼y   A= EfX ͛K.ᑔ\~}~~/>u{АСC˗/7oаE1j#Ν; }[c&'$cbb-[+&&ѣG?~V   Xu߶Omm	4񒗼Zhi(mx%E8L]R/-%̏yƙsss ߯g6sǙ9HM.=a_8ڞǋWWii3gbbbƎ+v11cƈƖ-ξg℄M6ͭww.9=:7QZađ#G]m۶wR=Ngb_СCtܲ2W tmEvGM&%MhOSNm޼y̘1>>>p	7n,JLtrvDDYll||t28hР%K\r$;QRsGҥ˂'';-{+)iRSSϜ9C PM.p0id{p*--ݸqtخ]1clذ!抵k)KII?~|{ɝ\xT۹#QzZxs4FElڴ%>~ܸqbz8 xnA8C&X^^~I&u)00pر111YYYM򘘴	&,Z0JVpGu:*OdĞ%vs^2W;g߼9))iʔ)?|x5kO  "CA= N.\e˖ɓ'wão߾'Np=eo~Ǉ6v n2̘1M6SNLI1FE9a6^]qc\\oѺuk#FDFFfgg߸q? @J ?/d{p2eee/^4dgmРA="""9l}]_iӦ<xPpGu4*מ%uԩ>>>b~89<&9{tM۶m{tӦM6l8`e˖ M.p055, ۃ{hx]BBBZn/d{\>}z-<==}U.dөO?=qğSRbc;GFnذ/)?ܹs&Mvvׯ 縓 =d{PݼysϞ=|I߾}hѢߥL6qɓ'{(^AԹ0z9%,,^|WwoT}01o={vϞ=" P	¾ Cõk<駟ۻqy*sСO>G;v		ٺu+="^6ׯ]vG޸qcI\v䨨L!44o߾"^!Eڹ> 	\d{¾ Ch,((ũY>}ڴi#N>ܹǹwr#G,ZG^^^vN.1"#""~=rȘDe63('b;x`~~~EEx {|'/Apƍ{.\_~Rg{gmL܉+=gu} ;;q3/믿~~iu3)9cT9᫯6l_׮]g̘!K.6]} ;}J 	=d{P?\~ȑ#/2doBBBRRRJ⌫W;3#;~xhhh```˖-_yG<͑www֭ۗ_~yc˖+WQn݅E[>}oŋ> !ҵ=Ev=Y͛7:dɒ6jԨiӦݻ+WfffSqؤI^z믿>w&
+o&FGGq]t	j0܎tk^zu^yOOɓ''&&={{  Δʝ\H!ۃ֭['N֭7o|AN$lϹs-[ֽ{waÆEEEt$G<QZq̘1^^^SRqy^DjJʚ5k|ͦM>䓯ZRR؝  k{ Ch?~_~9tPqح[ɓ'oٲE5NDD9sfٲen׮WZu3/;QV+eҹsgϞ=9u'LЩS'1bŊOu떫p {	#APVV%N~:;6:::;;ɿ%;w_=x`//>},Y$o4i B;Eɭ;Ǎ3wܔcTs))p!! 0"&",> Q&A8d{~qƩS֮]ܾ}vډ.8)̱01qٲe/BÆ;vtCǎ;zi,ivBK#9b-Nuvc%KJ;,U#RZ+&t
+hX1-쨹N4O?egg>|x͚5Çoܸ?<x;W8g]$..))w	
+
+ %g{ =d{PƊӧOGGG3m۶#G\nǝY$!!66}biժհaF[o&0(u"#y<UbȫԎ5+30KCuUٷr-U_fTU9niYq]ں:uʨZ>Ү]_2AAAӮ깙:eʔ֭[<_WzzzII	? p!"l'NX~1cic۶mGlٲ8f.Wd+6mC51yDnRI5mG꺤+W[F{`4TkW.ڦ[JUlMYE&͚5{M6GFFn`0fΜ٭[7/\pW\q! p۶m< =d{P?;w...n۷g={/?^nR=4w!C[M+|eVeigZӚZڒFmǦ":4nY|-l2o贯ӂH,-b	muرƍ{k@@3.N{zqBݻǧy/Eݛz  .&e{ =d{P3gl߾}ʔ)-Zx|I)X7mڔsv;43U̖Tl-vͦ,iS[L)UɦXߚjbӝh׮]fiv2M6ّlyͮ!5p654>iiYllؠA8pʕ+FW  :"l[n7nacb1FE]6k&ղbvjlZu{~51۲	[,67Z.shѢAyxx޽> pN./A Ѯ\:gΜ}>sK7lp扤8{5FEy%B71EYl>CE޽g͚|%R= ڃlA8d{޸x޽{͛ׯ_???^z͝;wϞ=wrI%A+q`>hРmv}ڴigϞY= ZEzn_z?/d{P;ٳgڵܹs<XG 'NDFF2u;v		IHHpBaaa  ܅lA8d{l=rssw'gڵG}u֢Df0^}`XjՈ#ZnoFGGgeeq N.p0d{P;ƫW8p`KJJ*JLWl᪨KN^|믿ަM??#GYYY^  =`5v*++gm}]xx5kֺuI&͛]~Ib))6l1bD˖-y晠˗gddܺu{  A ۃZ+//_}U>}7n?uԍ7JJ{?$az,ͤ??z\ l_zA ۃh4;vlҥ8۸q3g,O<	pnW>|rriӺwݧOЌ
+W  HlAd{l=9jժѣGwԩk׮'N\~}ffHxԈ<s޽{wW^	\} 
+E[lj7n8qb͚5cƌ	1bx{y"{+"#+֭۱cǌ3tҶmۗ_~O?ݿj4]} 
+\C[lj¬uM0Ayxx/k׺ gEI\ÇϟߥK-[g۷ovZIIW  Tk{ ckAU\\~QFyzzj^[lYzzDD أ)){n޼y@@ԩSnzY /!lAV~~~NNڵkGݦMVZ0 ,,,==lןQYo߾yã}&MJLLSPP  ֒=E[ljғ'Oǋ;??M??p@YlC	{^/}qq4Gq|G  u\C[=Fxz?~۶m!!!,cРA?WÃ	>GddEt9aɒ%AAA^&999nr	  p0Ւ)//?sLjjjvv6Du)--vZRRRHHHΝpǻl k333WXܱcG999 Eҝ\\Cv[Z=Z9rdbbիWyr&$]-vYqΜ9{k׮RC8"#k׮7n?ߥKѣGZ*##z  up0Ւ)..NNN&oܸqŹѣGo+W|3g߮gyF͚5KT[g\%bZҴNHŴbSʷ-5RPU]qk*olȎ?x+GfMVn_+W4>W_5KY߿U.^XXX  vںu+Oi&GlK=F[ly7ݛ6m:hР\=~KNN~񀀀9sر~8v駣~uT|?mezN/s\/KdNu}rʙrGxV4`NMyX9x.[T?/^Xi֬Y<<<f͚% Cs{ lD/ܹ<󿱰˗w=cƌ-[85j{7}3gNטaNbeSviV>MYjvo@u\kdeh0ۋvi~--U~#vMUZ%K[Xɘ:u믿C]w޼yw  l߾]i{?~30eIH2QV)&IyGX,lJ[XVH۸4S rPU*(WGՂr̔C5E96mMNUKTݩJWOg]C~f-T}Tj?nmlV(<گ4-IMK_79sb2rIT)zrҔ/ĴV)3+&N]4!zI8wI4Ioi"y[т%--oIMMM3iKjڷo'|n׮ݔ)Srrr\}ESRRRTT?N4ASOhѢ3&ƦjaַUnң~N;-*ݣXڪU͛7l?N6ʕ+> Plެī{FRH3b4S,&U9R-U]UaիrԎ4G~|UЎY[WoUn
+*ERꖚ2ۻrܚru,/ T\RmL-}"Q}UeT[[
+%W.{P45c&R-툙RH3E/tFO5!&oH~iyrjEpks򫲼xB -~71S2"i<I	/ӟt>~(//wQuOZZСC5k۶m[?&i[PMB6f7>ŚI7nVnIe6Ovbiv<==y777//I&}> P=+e{xϏ>9y/nnJbB^"yZrIe1UnA5G՗jVlY9eIU
+hSՒ;)j\ULNueUIeպݰr]ԸTF.mVզ
+Qcf#nyCZQj έң>*^i?bQUnD?ws޼yGY1Ν[bŻ;eʔٳgQi5^e]iMzq Śak{6RG+El9U}lКT@GVlp#,X0mڴ#G~۷o2yG @w߹^ꫯ	UfsTeRSÇT6,l_Ŵ=ꯚv#(몊**r(^ڳgOoo'xA6m$&&(4;;{۶miiij6џ־rִ,͚m^,kv-ov#4fm_Un[i_ڦش,mCmh6!鷦߈h߾}G̼t| 3W^rrrΞ={SV_W4}IiZ.,/Ŵ3]X9rEmSzQhGa]eAnMՎHզv<UP.)c-m&rkEEՂUS5nZ:INZ#^]ji0ʊ1XD_fU:T5*GTg/ߧt(Wرc)))|A``O<w>ڵk&/_
+/^xZ]x45jhNP~um&=V6w([PPP^^_
+   (**\tK/G}>쳌[nzt{I_aaa~~P``uq&ZMQC;;y   qƖ-[ZhѸq~     n1AAA͛7ԩӬYvoUTTzh      oy[^z_Z    fazh@ma4lz,     TAǾ]=4      LJՋk{      )Cn     ~      PXe ^;䥢hΝTņ!,&T})H>1_[ӻԦ?~x777o+J%хH"ʋE˗/ٌ      N`MGN(*Ң3鄄eEܠ2?#M,SF奢DQVȐ     .g}Gʍ$$$d6]W#͗/󥤊x/RD,>|ܬ}+{W_)RhyeHCun.9dJ!      ggJΖiR+ckc,t*#Ϸ;ce( vTC%ITJ     d@W/QVܹs4_u<E1Tș;=VlS; UY:W:ɉ/v$      'grvMyqة!] #eQt2Qvd{]٦v ڴtar֐sss     ʫYn[ȹl6ce[=צS%]Jm\     p<f䜚n_[L-''G~3q    Zl*rGonSf#%?H۸     @mcwGN׽m!Ϸ~xOiwKm)Uޖ%||@@      ewv#kt~\"Fpӏe̕OݹiuƯUwi+䫀     Zd{$222D/|͌\,!!Ah[.1Q>Y٬_푇*mV4+*ieueJH[     YV$gTT0ǭT-)Aªfl grTw]s     U_.TER/&ȏ;V.拥rIQkꗶEkfT@W+     @sP-']m\      Ju4#?ǚ_     wlKw     ܛV'''Gf.     P\Wt,);                                                                                                                                                                                                                                                                                                                                                                                                                       `T
+endstream
+endobj
+10 0 obj
+   89869
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000090991 00000 n 
+0000000187 00000 n 
+0000000015 00000 n 
+0000000166 00000 n 
+0000000515 00000 n 
+0000000287 00000 n 
+0000000782 00000 n 
+0000000761 00000 n 
+0000000882 00000 n 
+0000090966 00000 n 
+0000091056 00000 n 
+0000091184 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+91237
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png ns-3.21/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png
--- ns-3.20/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,336 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F IDATxw\efDp8pG#:ZghZkҡZj['q֨8pp26d6?,6$磏>0rWޟχb        	        	                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                       +{        
+                    PEfwԩӐ!C&  6q     TթSΟ?9p@	 Bg.     ¸SN9s&?? `     @\zӄp>|ua2  q     <]FF֭[]\ObbP `     Sݻw۶mBjՊ}%&&4& ){     2\~]VvE$q86m?~z `S     @e7oޜ(r	!~~~#F			ϟX,h(  ہ     *d4r'LHaF(2D&tfff  l     N۶mÇCCC.!EQզMaÆDG> {     BΝJƍJ?wE#---))- `xh     H,XиqP@0!aa(8q"!u$  s{     B-Z<y2)bsH4hР@P {     B\.ť'R     bz  !    a=  q     T5  l     vf. B       `W     8FJВ  q    ÑH$5[ڇ  l     jk z  =     $22[㕔  lM     8$D"*J&dOdr  q{     F:NөO.7aL `     8rkyʪh,g6Au C    @k -P     PUHy  T     8"Nju:y%a q    ctHɁU*!DPHҲˢ A@    @t:]ppurbccْȲEu @{     JbRyܹROP*V[>  q    %Ĕ;);`E?ָ  l     "JrU>f3z  =     {!j߲E=}  l     "Hz=;VY_I$r@4AO.      (
+BHTTTTTT2F\y.  q{     Htt4;J􌊊"[LV>  `     8Do-aNGry٭0v @C     86jFղ]$L&nŎ  6q    jRw*OvV`f      DEEi4B!
+EE3p=sԫ`T*JJT*E@a     V#""<==cccKMU	=(?z^J$\cccّ q    NEjPd8^ΣPE{     T*<w\rrrLLB`V0:s<3jA    @Ⲳ>.Ŧ<(xz=jP     M"(JD"H*Jyc vZ"## Pu{     NRVk4FS;P%RT*JT*&Pu{     N<%J
+BPXr.Myp0.@bߏL\P]{     Hqyd2{WYIkg.T 76E;@     p :A"DFFV1bS  8=     HGEEiZ\P($IUV`r.  [T    űSq]STڟi	0Σq    cQ(111YYYlvh4QQQ>I$YWr<>>^TFEEPt    pPyZZV:NjZBHdddEج(PoϲCnB0Q<>    D"J̿^;j:sT*K&@P    ࠴ZFQl9L&(Ќ+ᄐh4Tq    caVe2۽~"lg._QTZ6>>MC    @4MG
+Eb xjuTTBPTh炊     pDJy=ٓd111"J     p 
+BT(=?!J˝,=     zhzFH$2L*%?UYf e{     V(9Bbcc
+ELLL?Ef{l98=     Dׇzr\&zV@jZW>n#jcz@!    p *zJe*NV5ZV(=  6    8ZM,cK*űc
+u=       Hb>,4 8=     Y+w|  l     ο^o^C `     8TJ*z^RYV0њ l     μnhVԥMy  8L    @JZj&88X*<ZKTsU  l     "H٩u:]I9ڟ  2=     M|6ad
+Q{P `     8"L&ɪRS
+z  lj    bK{(B -Cu    cgXN%H2sY( h     9VfxVcbbyk  -Cg.     ;f=RT.[z"""C5 =A    `ϴZ-ۇ+:::999>>>>>ܹsVkN1v -C    `RpYYЙ !    eGedNW !    l׭j0-{  l            EEEQeʣR]zr 8=     PU֠  lM     `d2Yttt*q6(i- B    `rymFe{  l:s    @Ua{U# @     BөjNrTP(6^h*W%HJ%-@     0:s=cz^R;c\DDDll,!D.#{     z(Buϳ´Z-!D"(
+L&J	!ZVԬ$N^Xxxu       fz
+ELLD"J.GFF'JFDDXC(^#`;0T3     T:s=3*TJe\\\ɬ翥#p l
+     tzzRittt՗jԿ<==U*U(8`Й     Fi46Q*UjaaaRT(Z}ܹ:|y5 T     @UYzЙ`{K+z^"'''gee8Zܹ      bq;WUƲu=111r}0&&];c: ==     Pq2TA[0#=     PUlQ;/Z6d2k +=     PU7t:]s;     @U=癑dj:22Jx> 4\{      l\.H$z>66q|TZx J1    c)6tUy>[V1$3#C     U= yfJ%FDD<5ap(B     `$ILLD"!GEEjFhdT*Ojz^DEEyzzV4]      Ue̅%LvRT<Y"ǇzZVр q     T3H$qqq:NV;_dRpPlllZT*ɬS}OfK*z
+;4|\     hϞ=3g}-ZcjބS#~>o n    m$ C     Ճi  l     T  8t    ڻw# p	fJRTTJRPۄ     h&}g;x<t J8r^jrL&j%{ہOg     s8d8^6M{     hB 84k6!      jf!    ^h4:N.Alj    <H{ JRTJ2::mb     @P{ BP(L\q     Tۙڥ T*eq     EQ e{     zP `     @U!Rz}ppuga     p@$..N&}\TrVP(0-@     Ն2 T JD     غd= PZ({      )F  q     Tտ T*ez!     
+) VU*L&je;     @U[C3 
+[#+==     PU ;3     U  =     P= `Й     i4@`O,*
+k q     T^ +{3cVVyp4k      ]̅  e{     u=H|  l     t q{     Й A@     UU3 v!    ̅\  q     TM  l     C0T3 \	       2=     P=E? -C     Ն  [     Y C     UgfL `h     "  [     -Ae C     Ն\  q       ]A     Uك              bz0- C     U\       *T  4{     z(B `     @  q{     0| -C     Ն  [     =  q     Tz  =     Pm}  l     *EQ 04M;p    wMh h@,ݻwR@ ]F     U=(p˖-;vl~|||q       3>߸qc__Ç߼y&L
+
+Dˈ{     8!aD 2ucǎ/_V(Ç]F     U\ ЀP9bĈ{n޼y7oLJJ7n\l     @UB,'{]rKO0L$Aa KF/,).\;AX'ɿI vvK-ݒ+.nVٖp8ڡKޯ|1%WXj%[r^vu]TۖmR4pJo%R:L֕=|ecWe}٥%0ܣYxUew]g#>R<-_=VtܯN %7Mt*6 A%V.J;:*9mՊ{Gӆ/y7osϹ$&&\2>>>44_oѢg?!	"L     {hn"e	)?P+D,P*xi]"*a#[Pr%Ce{{_G/i%.|dfJҒZ/TJfsAAA~~hxcƌYhQݹ\}f    ruuH$A(X%,L>TuVd{cIaMȿA*	e7WdKEO.UR>dD[,S5-fdL팵J/dVm$kTe- e*8حsRCG<JM~ٓsA/ :Hҳ*yZo025^3JrƳ؊^/W컣)QȖ<&i׮]ڵ
+
+vYE     (ooo@дiRL"}basR!U qE*Q]zJa#]ʽ,5k-KeJ&2-fm%?[)7(v)"eFqRJbҜgQ}gHU%lJ|ɕ4I%O<v!WEfIۡԩR*n+70*-<veO^n?ƶCV4(f,uݵR<\./ueh4fgg?~8===77йsg@`?     Uɓt'''RPP`4TĲ!NE̔6MLnHۥJҟrkʍ*Hy#e_*W*u[r%*K3W,}NՖۤU|)䕛#JRE"ZUiJ\њe۪仠Z'g
+ﯲ^6>+w`%-UVn[*&:O%\TTz#G0Ӿ}Ё8{       %''>|x߾}Z{Æ2dHPP/:s      =9tƍϞ=[TT߯_{K.vSS       [<|pƍOnܸqܽ{wDRQD;\       `233=Ҿ}ݻ{yÿ́A       abB=,=        v&        '{        
+                       +<4     Tlpݻ;u4dwww	 B     Uu+Vر]vG   t    *),,۷oduӧ,  6q     TիWmۖY\\l6:tua2  q     <]FF֭[_|wbbP `     Sݻw۶mbX(r֭[So߾DD  6q     Taׯ.]BΟ?{n^V ){     27oNLLdxE5idĈb8!! `;     @FcBB\	y<ސ!Cd2N;x`ff&
+ v     
+tm۶=|044tNNNa8N6m&= F     
+%'';wN*7N*ӮSEѣGZZZRRRqqqqq1Z      P/Xqơc'NHiݺW  C     jѢɓ|@  =ð?DAB4 @     r...({!nnnl.         +{     E=%      p 6+a -C    p$IdS63B3 ,=     Gfq\  `     8HBHTTTll,Z ^a"v     "H$^PT2L&}L&=  l     hz=NtjӢˍ{}Й !    p UXΨ h     8گ 8     Ճ ơ    t:Vf.z0; C    Xt:]DDF>Rr`fJEQ(Rlʃ      t`\eƲ%?ek-A `0v    QTl֣T*ϝ;_	Jj]) @    Bbbbbbbʝ}       p,R-)Wc6 A@    X*V+-{  =     D"zvH$>Z݃ !    p 
+UGф4WԥW -C    @U*gTT!$66ߚdAQ @    H$xkt:N>"n  q<4    CaVhZ-ۥK"d2\^V4M y{     VJlSy  :s    8(OOgd q    Q5}0v @    X'"}ر{  Q    Nh4FV|\PrB!H.{Yf{-0(@C JRRJh     Geee(
+q'661@ZD"z>66688Xբex     &HJD"H$OMyc`.v ; ɢ	!&,,,***>>b     8(^V.]%Ga{vT EQ{ \.d'{     N<%J
+BPXr0`gz='{     Hqyd2TNMyP`7A|jND=     Dӱ?H$*<Vֱ{В v@RT*gRɎq    #QQQZi+BQ ;VBd2zrL    @ةȿӮ{zzT*kOEؔa u.d=     EPdee{h+}P `Й    AYqcjZv2rmeS  8|L    8:D"J::)Q݃ɹ ^/54,    pPZVѨjJ&=5ipI$rj:**㸃@    X|UqLVA[1j}`r"H؎C    @4M[f=Ea RSAC    U+) Xxx8!$::Mp!    p 
+BT}ioC5+Jj Ǖ$^UO~VczԙJ~4}erc S*Fk4D"ɤR)[S_:{ ufJEF
+q믿EӬ)1*aR)Eׅu>uO(T͒Jf(e'-s'Zs;RW\K%ppO=%-ocG?h=  j#""Jņ>XBS^?hI #bbbDpQp,3ߋ5Qm<N;cڵST7i(t"  ^rLZ5 ؽ{Y?~  ?ɤVw'i	طb3e5Qy6l0A Pc*z㣣cbbΝ;vh4jO`| 53 =zwiӦ\ܕ޳~69YGɩU>yɒ%JJJ
+  ':::22T7TǎSj03-4B%2LZVR=zh^֣RdF8""wxsh  HR*}ZwhL [͕m硝m RPP}O99f!#t9+]0b؞={>:Y  V峰WebG 
+ `ЙNܽ{wI|Iq&QCMw;̅9?-m8hX;,.YW^Yvmvv6 1WۊF)	=  6= b9tPddbYB#RlH1&b%^z!iCT|r/MRT\ݏm&jFf*k{bxkx5F~o{w҅A @RN*9ײ^WTc  q@Cnݺy)<oKe󿭌1bcca0Lgz%c&''?y b10EEEBк\WW6~2iҤ+,we(z*~nȺ[,;>ʣvqnܸm۶Af7qk|@i9~v˒ӧϛ7o	xO 8R颣eDDEEӱWԥӆq ll6'%%}7vݯ~LӁC\MCŨ3z2_L!UK-=wSco'&ܻ_}B@BE6ngn$q}}E9EtxMY܍ֿ:l6+5?i/EM{nݺ}h  R*jZj4`ThZk/RU;4& B?@a45MhhG}4,bg3M!溿k~y;#O~'"PEm1	%[nܵC;3ggP@(b~#'N8v/I8vcc=*E6k~=p	^>4wnvu;ٌ3~Jq `$I||5th>*	Y Cu@?g>wّ`9-{]8^M^DHǴG{/9;3>xߏ^ȹv#WO<á(ĸlHzMalH|ͮznqmnD;9(hnCO{uW[	}SVxAϽױ^~;88|  [hd2BQѨ=,6)a  l vwyc?{hrL!W7vy~h-bgBM/=qu6n?+58:mjP2۵k/9}N3?1B<8qa1{,Y07Uf̵BhL?}O6ޚ8q;ހ  M&dj-Ŧ<z  l:s"v_O/}ȽRU.|ys6o?l9Qgфk]:K(́˝;5JS |}x}䀀w#uotc.qsRz=|wCߵh*ccwۿiӦ8qb  @.  _@ ؔŋwN3չQ1Вؐ/)'1I{?{&ap
+r5}f<~bh9Nn#?BH&˗k.4iPw΃
+~}}|=a$u?o;16Z|vtCY֬Yw% }QQQa
+v  2t	4M;v,::o~as,$~mS&po7ma3MK_;FIĿvݻf*((Z$f鋸\dr`S&1獷孜ZF9&a;{}w[  `ZmXXX!juLLRP `p_e2oM`rEbK{S]^b>;ir.*`>/piD
+̈́bz&i߾}^nK
+P$'ٌInmmI}~$eB
+\;kܹ˖-F# 4\l#JruZ !o0sڵW_}cǎW>ye-X*MNW؞Fn.Y
+(RlS./J(޿ӱ4ȄǏR\lJQZTҵ9fX3¡
+'</\'+5-^0au. @CjZ-!$:::999>>>>>ܹsV{C(
+  l M 8p`ĈJ2֥t|)ĭx;Q:a̾moDلb-LppwhjǛߧW;յ ?{<9 ?{^|ߣ'!6<//WVOx,}7^īյ8͐֜(]`_~F hXRpYY  4{ a?~6?O63ð3b>}|s'vlU㪐N
+(bynDsrqϷ={.9푩ooo.!i1{JDN"0cǴr1Wf'0\4#N/:e莘Ckfxpj;sYvG7	&߿6w బd2!Dr  ۅ4}_=,,Lبˇu'4 ŝ_<A^#j kԩ[xJO{#f)!.p~q1;Ѯ.}}KӬ,oOC#u]uSL~Cy睯:++	EQ9 v*l   vq@=2ͻvdJ歾D5}'2\ÍN/uWc$VB%!		ݘa`m	Ysɾ>F#Y㙹i<'7R+&׾'K~۲e˘1c=F pL4M^ !_L&;pLp	ŧs1ߖ;Hw5idͧ_~~fMh{cZDgz={/)ԭdT2Q[<=??ebUleBwy}7oޗ_~|  PTTU+<*^ !K$&&3&44Tب/0Tr7+DӇ;9suܵ$;'_,J{ͣmjҬ	oҋ5"#{vι~v__ur&Qş;w5jT|||aa! .{  6=  FQQю;VXkėRT?ًsǶv(gCR`7-ٴ183<cmyy'BQݝ 7Wkޟ1S{tWlyXVl[9K:vѢEcǎ6mZ˖-  F&EGG`J~  G!|vzn$&Q=mHc
+Sܲj~]ޞt] K_T$XgX?ҩy~mK.z*֮YʙMֆpb>!
+,X0l0'''|2  ث={̜9377[hlV~2<D
+6 5w+W߾y핷Dz_D<FDo={T=7kr3Jֿ48[oRkc
+Hܿp|o=,(66'.2vWGػ[?|笐>R^0Ժgx\nAqs|n=ȏ0|/0ռNLs%\g}8sf͚# ^!	zr <= ՖqES~1P,X!~q[HmK3gϾ:ϛ{b$p.##ҕ99E~⎤1/qZoq9l!`L6d6ˤ=y|'%+/^<ҙ̘͗5rnso,NZ/LCy~S-Z4rH| `A:s 2\T&55u͚5۶m\֏W̔~/sF]IoabfxBnәt.rZ!6os)M^FeّÆvJJʸv^:ꪭQ1S2xPų~|FeX-1Zf&%>|=}X\ he>,IGNjwzh;VU*( +"BEQ4M5  lF9x:tȑL4mE9\/hyr:#^hnޞtyyg|0oЬcĐ_>./ni.#lܿoݺfx4qK^̱rwvGg
+YVD!].N6\HA)7+_3ݝB3G*;ƍwނ|  T  2T T&77wݺu+WM-)"X~C|'-~FzysBBnӥ=>s78Х7-B^=S$h4L>zy<p`I_.A`ÿ{0IG!K~-|zq^MD"~=^w1i
+?}wб
+oyՒBLN3sЏsU([G
+ =  { A'O<p<wOB#hI}l˃>>vsYQ~>^U@bx>;q,v/(1۷e}Ł5/N5ssf߸ ڍL]5^Q=*4qM(2_c.j]>]5͘ZfD-(Fsҥ^ziƍx H|@lllXXXTTT% @se˖Q5-r &ɫyIWp=:(p
+ =z}AҵG,Ξ64'.sfYWinJ }lİayyqs(ƹ[A#*9̪FBV<S!ʖmu+YM[@dm|4Yfצh?qК>,!!aܹ۷G @C0:s't:Zt:\.J
+EG*Ǿ?%BH$8R 9= \<~xqqq]d~[^m	yL}.ۿ+cŭ[(RLHCÙ<cAkS/{MU4MkhiW5gLOJe_(2	:HCq_m\A<֜j[>\ ?^砧Ei`}
+[?i3u܀C<Obׄחj\i>t.\1j(L РQgL׫T*JUWl@󌏈ZWTqqq2࿅mptFQ߿{u|PMD)~ѣ_U=0<EQ'7ҋxBv/776MNr54WHєnӅTm.oxᕪo*'{Ǧ+᪗s|%{z򎝺hBhsXpaŷ=7~aj>8͐|qOw]ܹsfϞr)  Tz>,,LՒ+hd2T*%hZFS:ج}1Zju:]XXXrr2j| [{j۷oժUbxJ޳~5$m9-TٳggM9[N#!23&=ȧ]m[觏ơ҅"O_{\m[&<Xm|QB/XzVx7ZrWbXTo,J EdՆf]4iM#q<O$F~Ua֩fGDD̝;wС8 hЙYf=
+"&&d"###K
+M!jZ׫jRBΝ;111+V[ѻ-Lٸn7θ<mj]iC&2.˳,n-1"v݃}4д/ϐV~\}^La_ק=MAjmj郃mr}jkxJz<ybZ..{}c>>`xxڔio1㝺fϞos	 ayjg`T*JJ5RTl֣T*cbblUd="##j5!l'/ x03880vG}/;`'k}tsZo|o2^{mZ6iMW\l֞aKiN-?W9 sww王ZI7fK<=[֧eP0E_w%yڰJ.Ҷm:Sݍ<~yCkh4G}ͦw5=1k2QyIYÐlл'=x`ƌKqq1>  ^jD.`6`JU_JՆSTT qu**55Ѥ\A~ʑK;u->/CmGW=)bܛy;43X+5ʨ^w'}?+{CףDTU(z= ń+\֓6F	!Evh=/_PG*tu5ܓ=ɒy=h?\c|ds_VXqԩ7x#00C8 8kQS;sd26h4hh4lFT*>VcJz^GEEs߫eK{ ܍7,X0p).=<ٜz/<:vvݫy7],\>/M3n<fnь.'RO-/RӞxD'u76kܬܖݛe>4fW~瘐5(!>SRWMsC7\3g47E2;6,Zsx3c4n޼k_>33\  6Uq\.PS3v<z^"'''gee#hr+֕`Vx [h<rҥK333ge&de[trt9O^^񍛏o	ENҦyFםEztJwuth;X!ߕ۱SPQqQ\ſӜlݮн3o^ׯ]?+U`[{*_ѣssM5D8p.l^rԩqƵjՊ4m>>b'0ց$񲋔|-x\Ѧ Ue+ǒܽ+x%m[KR-RS^WrXB8NFFF~~~˖-[lw USEz=R066뉉111F*JB0T g2~O?|ᇦYYcLڿKtl׈"FBz>㱉_M϶pHF5P3~~TV.
+7V/굌ӷ).%Y,tÌ4K`')ʉ{9kjQv:FiOP/gǸtC!>!ӦLߺwۺ͛]6+5=L<YjժիW{yy݁ePeYzU5`;*Z ñ\r`ݾZR^JU*7+Pf2x<ޒ%KYUjNIe2YRN^糤[$IzqƝ:u[֝Cjo{N
+CzcYAF&f=.f꭪٢81oYˬSNN"jn]ߩuqIw=;ЖߞDNf[jQvݺ¯-8cK={IIǏ|-W%1GM>}@D/B1{Rɻ^5f֭[g̘ѺukUR]{J%"g%ܧ'X~^y 5@ 
+
+
+޽{1Qt=̽Ud*nܸS];Nh@:`E/֦]Pm@ӾmSb6vj,kSXXnڥIMNLKL?r^DqjQvbGqDN_LHvpXh˯m۶]Zvmn(۵jΎm[\\\>S-i:ʋ!N]SV=8lذsN0iӦx"UmgO=X3
+[]"еt:]]bccccckg3H`#>pKz\,h?\5Ch{>g}d]9g0bXm;=3gxհÑ_ȱc&-'w__PItSr򋋊baBB¬.f;5X,9zƪ(ݽnyB}MaȌ nNCg{LsBBWf,T\s&]x1$$dZa{,*}Se?|Ǆ˗Ϟ={ҤI-ZpݯbWT*ŝd2Z]qrM"""2"B. ہ쐻{޽{3g03P'ov%;7o
+rb`ߨjPá'k{e}{,·[Z4ç/< aOKo0Nf&]|uTwbp}]wy]|\`;qOfN'a٦mMά(333>&GS>C3h_7nܠA"""Znr8 u8PrD"Ub}T*}%EDD5D2,&&v 쓳s=$ɮ],6UwC80%%E{!ߞ{?)k.(ڕAGZx"W?hA-p<L|ɝt벩jF	!?[c'{P/TzO>p͚5anZo*7	E-;Yyfggg57߼vu~7 +ẽƦ6:.""*gj5۫Xdx`S}rvv֭5jtQ]O*0:}5	F4X,x~t~:ȩ慜w=G~0=t^{/v5] (H(Bүe%l99hf_Owнt})ܑR!xde쉿XaȺ#t}x5{pww';8%]يӕsͦEzmko>`//{Q\\\&Nꫯ^xl	`CT*UXXڡJ%ZGDۇK܅!H$d= 6N/ۻ]v			nBj׮ݙ3g֙GTzǛc޲"~۳IzeXf%3-K,r=*k9{=2f[]R\K7n=ﮞUw!ǶdLn/űSx[fq[1|]N<މiӦӛ[h
+P,"s&ν?}ѝ:uܹ3ZN!EU2TD":SJzfDvRl &,:NZRTTz}ddT*j&666..riZk\./>d PE< EQ!!!޾}zԎ渙ᦲ8'/bƉц΂1:\{0#:{Ptnݣ;:]Kb&ٹtu!]BrY'K>NylԺ,j4OƸ*ӠђSV̋ޖi\8q6~ݼyDh	WPOh&bIBΝ;|pP˫,oSiV(2J&%''GDD]3ܗ-a!ZV0h{ [{<855ٳ=zllqn34HKW{vb'wmGG>OCi/2_	&A͇9!a\s킃Zk>(vsO[9\kvVMܗd(4}^:
+mL8{_y)ST&aW%1+_DNq'./hG1E=#Pu?Ed
+s~#Ty:WR]vƌÇhsak:7fd1fJөjV[2pd
+vx(6632dՕL&.#GL`WV1_mX,:nڵ[ldc5]i[.EVT*Ni8pB?qߞ{Q5'*YY~:^m#s?۾?c)yoұ1[Tٸ~#RA-[>xdNM3DOS䏜>.$TdƝ_xq_0+wvpw͛\}*3:4ZŔ6	R/bTnJOų5kw|}4 ˹X53gѣZ3s̜ŋ/Zǫ_RN[}ʌ),T=r͚5ҥKbbbFFFN
+3BkǏ_*	{)[x~t_L]>|c[H䡿#_,04 agf=w jְd=G9:zuoi4X`0տ/om6 O6=>>I&"s_f?~<oaai04Ca/B*TUEJ=G*YUEKU"e)0LzF	
+9]07
+
+
+g!˨.zEa6>GRROZ4eK!.~-ٹɿf\~a	P;I4 -Cvɩ[n.\غuWu!Yͼ^/,87[;zΟ*'iׯȿ+^h1673Ӳ^yprq+*(	sO$hR۵pKGrGWgN>{nϏ611q/~n0|!1K췸/=ے9xٜ"şYm۶.n$l&*zyJri4~n(54M>hJ:;hV^I|Y؏ռN8K;ET3^(ivJ5cƌS6nܸaa8̅
+ 8=`"7ݻѣG/^~KףLÆ]ڥKӧO_'~FyaLJ
+||7>KI9UOY5rt1Ӽu3wJ"ؘoj*f~Xw|٤SjeY{fk,B뾤w׮.]YDd̙7BQĕo#KM&RNz&8'q			3gNY`qBDKw61S2w|>i,ggt.m-i{zȼZtpoǅ}+$cɗ'ztsu\5V5t{؞57o7nĉ[jU[& 64}`[F**:HH<<<:u$):sɫ<3︷BNvӆN#Gtܱ LsO1NQE2CazRݸX|gi}nhgoH>ySG;UvմzR!ZLmZ7>b{ļ۩Sםc0Zj>qOQCW|Zؙv3zxQ4P%Ν۹Uvrao9U^Q1g[Or9G}TB!E\㺿ܳX~}}'qHmXmY{4pk*KѪ!}3ڵk#F裏n޼? 1iR* Xz^J$\cccZ-vq8OO@\}q[/0zHt钔t|=Uύ}KVfG	nsWwoݥerpܚpK<G˻`vZؼY"kRyyRϯ|>vӹk_iKfJ̧oz^GիKߔw"pyg_}w5kv\m݉Z7grXֹ#ݻ_70<__Oa!0ȏ;uR'S/p8̔I$o;iX0cZ7h_v~>]h̟?ҥK
+PAJKK[x1ϧ vc'JQQQsnvaAg.p^^^</^8kj',뉉cdF8	S<|h?$>itRXݒ<9}ѯVg_?wWQvgz19[I~Z3)Ymڜ>;"uNмZAt[[]&ZLx?.ɓR@ыzXoMu[WB5%^>y:m̨@	!X,"¡,;n%K3myC-\-kwK
+Fks=0R'Ce=sc[ӻuT*1@)΂"0ûz|}RErL&ّ({٨Q'O\^nAuv=l]<Ge_Sի`DLDƗ[HWCaVFnX[ݍ}uw_vY^D޶i}d=y/(vLnHH7q,~Z{i?*fRTӅgXe*E)>LJJڷ绕K|ıI6}z7#w]]ٶ㦏K#_sAͳٟjP686Kgu:~"LA'Qv8۶l?S1Hmg4{cM)SfϞ}qɄs  bFCKznv!G!;tжm[Ѹg'F_O5z?kO'gf_// "|_Ey[?9nb E&w1n5}˅/fǼ:o\;87n~/z˩70>5^+ߔ{yC1bD䪷<hA;텷fݺu+2"&KmׇGݸѧwk>wAhg9up~Q@@3BسKtûM>f,4񗺹9>j慏s޲1LrǄs%1]I{:*]iӧO8q={pكaj&b8h"""t:\.o{m7;Ҁ38
+>߶m^z]v-5503EQ`ēa߫mPPٳgz-Dݟ*ֽ;w~3{KN=T;ku75hlׅC5qMzqK_===WɯEɂ/Ⱥ/\Ӥk}U@)؏~=uJgB:py\?..sgwk4Rtj!pvI^l[OerǷpsw_oҧS&^IO767t>!]msgAC52wl8:LFs6x´Y|D"?E"N9pL֔i@-DORT*RlS͎4,{N:mٲkNǆII3x\}Noo!s603N?2wkmpn:#ÇF.m)C*'>fhv]nW/_>yݻ6#8_[ӧOjj|zz8/?R999%^ڛK:pCP`c\ơhoQzFߤBQX̗x=<\וa|;z)337=(be g0AXv?Eqҏߒu\_F~#@ŋ_{aÆyzz_i PUQ(4v2AwiXr!!!ϟOLLve("j׮ŋBR>pҋ\.[f\7kؖ]}QesVd9ݚ[h^9EQo'χ"8}yy')))~_(y~ѣG}k$՘9ՁG޽ƽm@/M<!O8sS\]8oo_Х=q9	P!StTr~h4fftl풖0>9:]B}@mX' ͯs"2t{c,éUV\r̙#G+ vsZYR)`Gcquuҥˑ#GҼ[=[ǿy?u$mDjp,nFMӦMWŝ}zԦ;7o9۶mr.<El~W'&&F3{p	!Iz+19fN*%v9{-70##S9kGD|`2YDBb1dSqv5DwH~sXwbq/KXMW7oѣQℝOPHK@E!!!			'NhEhSfuҥ˥Kvj?#u)wf4P|>ǥq#!ABZ`xehkPߧu=i{}0-yVkݟt!XbNsg<&NM:t?wc\~|n޼٪UyΑ-z5R=^2wwߗO||UbeaBBB^oʺtRAe!FsFf|.!Z,L`UnxA{(C6W},<X{W,V[dɴi۶mSp
+ @T
+p8ޝ:u۷#Ge\sp}l"3:BU~/DI?>t--=#Ҿ]6¬|Б[B!/O:CIBco׈}pkӲ;vh2_@aGN{MaGvtc'	/.}owmϭq.BO?87,(((5j40ӯ߿CCCEx{u{Btq3PD/"/	[hԹS|FCi'QAVM]WfBĄ{=Jc`'|)6|`.Q>uLY=ΔLthƍ'N|饗qBBaaazT*####P  PƍCBB.^xΝ˗/ʊ-uKc{nݻwzjBYW>!&h@fk}.oRo''Pp(iDӌévvc!dlp/?ggH?4ҳÇc8/[ykҤɒ;i5š'g6']+LIIYȅyUyfBS±쌌͜Zy+S50kzy_-Vֽ-C22Ijj;rBqc"&=#O's{}t6iqOc0<
+K/s D"deW*r\FDD(
+nv!B˫k׮mڴIHH8|6cBZo_vs6!V]NNW,xTR t={ff>ԪWPv|s
+zf36$kw)
+JW,2\]D)ύgk'(i^ѣcƌ	gV*']|ǋ߾}}ޚ!	[83_jڋCH>N(޹EB=:ul'f)5dPg?zB4"ix9xn9ya]-&Zz6~9YmE?Ym޳{A~W]J`_N6l̙!!!' EҊ6V*NPnv	q&M4yn*2Z(F;v옒n5'hfğ}ۊe?L.TdڴYp^Jjk﾿sʴ^)Ya}aC<<q/0ӹSS[83{˾/vP}{K58kщ'>bQG7?8{SSSǍpE~&z?8$$oB{Y i[EL^}z\3HPH'/B!l.,**vjJ
+(o/Z;雷x8alwwl8V֮.7	M}Ȏ^'_//y=}:}s9s'ٝ*ZjLV]c7;brqqڵk۶mZUwC-7vbٳgOAsCo_~?y>sz*.[-~ڤ>?ܭql5/>)^sdgPظ32zhշ?!=޾3C۵h^%\.lH{O&ɉo'+CpssaӱjxfăÅ3E"o1aT2/XT/>j o;OB>K鄐Ml;.xEJusk/,v4h`]]?pAll0e?~w]Ifm<MOM6eFc2!Ą߉џVoS(111Y{AD͛w] ={V^c-kn:uy+4Fs7kÄwB*.W[qUe,w֜fKu\]E4MCܻ߽72TԴ?Cv_MIl\ҷ?[,}sw	!m|sO^ŗ++?;]||Gzl߾k׮FYنv\EKn/(;;Q[q9ƌ`4	BڶiO-<qr"[Yl0^x/푑	I2Oz1H(d<4ox|C9k[w7a@En:*}KpkԺ7GDD;vǎ8]w"v M׶PZ*=zJb7;b0v8.WW޽{_p̙3III}e%ZԷo˗//^K90;Kh6[ڻ??B-~M3vDKB\]DAAWރ8f3uEBȀY֭3gS	!!=ZU2AѾf͠9M`uxo>?~ss¨f~f2qKv޽{СxYnGSm2hێ!rm{5'Plj3M1[xQolќK1ă?&cC+Sv~/!9|}E]GvhOxdߏ|p8O?]v̙3{9@%6j3ZVT2L6>Pv#6}& %6mڵk+W?k?:ͪqϗJhʽ˔]r%rn ~8TBHNnQ'ۺô&Ǐ7H^ҚRXhb߯M`[_3gSjVeR`
+y=[L/К5~K(r\<q_2}M4y7;(0s}l?SRR~b:/):e;I"3la]./ow	!dMaa[4oLH@C&'/]HުAڍC@7_?a42}Ƅ8wu=Lh"%d~˖-6mBpqqȿ=:sLm2SB@nfGlM ͭgϞϟOHHHHH!0u.!ykViDC,N>u:U>8g<4=wa^!}gSӖK&>u{fd-ي˭ޕeff).v.L;\*pBǼR*p3^ܔoM@s%bŊMHXգ;M:pO	3kzt .xڟ>jךw
+99QoxO͜޳5߿kK͉+O(ja:.d]MϹ̹X111ӦM?~7naݩ?Nh=ЄBa@@L&~vU/=Vht|ٳ.6|]pvro/]~`0+.6NNOI,*bB6ib]JƝY%o<WP`2XւaZ_BhԣBɺvZf6c~jj꒥??7\w~}>Y0޽{
+""zXVxce˖<zt7bQj܈CH415nS_?wkӯO&z\N5|<?w)h%W.7z>33: 7P'o"p שSv9rСCCN(\躾RH	35͵?%Ld)fw)m+WF3m|6uExo1rf_vk3w2?tWEEGs=+S'd~9#Ԭ?8xMm#W/&3,gwRdr8TiN"w]7nn׮[_jсxf͟?Ӌmiz9YG77cP}3![UXDӷnոOv/ܽxQWXZgYkBvm_=Ed3}B8fqw+7O??~͚5r8U ѭ. svd2ٍ7z%wgFhޭm۶Ze"(ffvycwI8vk<4<~CQ0be>^O.ӸW_?́C7nzr7f'<s;X&(oخ;|,]P`3аv=d-8`UQįNm|c/_O˗_<usCW)3i)))EQ{\_oZI&;/\~'VSȢl+}^M"ef7@Esxw+ؗѣQOsGhEܝ;mM8ޱaÆI&c,g7j j'==ݞg/jrhj fŋ˗/s,u_Cp}+?{wޫ,68`k9U`_>
+qcã9 *S5?Ue&i	req=ǨcrѣGǌp7W&!IϿ/܋6HҊhyк*(=C64-͛y43>xhe_EQF{})
+#ۯ7_hŜXP=q̜9}{#G:;ދ05 T&\8oz7ʌj<5vA p&Md7o:t}uN]6Z(/^ݻwOJJ|o|BLڕ:z*1oq]v}?njzQaڏf>|wڴi'W.'H7/Xf!uٶ#Q9o`_\rQUͿ5#6=u>	>w-2(6Ո7Td{~v̨Nn8Ʒ{esFoo9sZnڧ_V#nuݽCSɐŽ7??hРӧ|qv6 C@(ر#j|:_?o"ʽzP5D^lo:^\RzW)'i'=|p~>݌pK۱#?Q6p
+p8>tHMW䜵B:L.Os-="ܼ} 7'W_ԨXM削ۮ+IUO:xf-q7UmSy\9shNKs_(.iҤIs=rHqq1A~ǎ ! Xܹsݻ;99t[\K}lLyѭ[[ni/f7)3]:?27I\yrh233_~_L'^cͷ^)&&&<|3(b=yiv&Bƻvq)<Ƥ Wz;깃uIE;+|WfcQnvhA/i>הor}țHrve틿Ng\]^osK[Z/)6[/ӴI6ݧދ-<yΝ;V:V  8= 8;o^ٳOSWb"7fvAAȀ
+hyDvǘ潾u6]dW"#λbW}7ч񫟢/}O3>xyɀIΌ>RdMZ,?̒1l'0/hhINgafܳ8Bװm}%##Ͼ(1gzzۑZt4Lo:gL7|sرj r@g. q& ťm۶:tʿIX?>fWW^r >Pэ0$tI||g{*)r/ldȓ'OԸJ&W'/Jb5r0j
+oT9:bZD̷<|J^`1
+]\\N[y//r5ezykR0"-4EVX|.X8Q}\ {NmOܷێ|~Nr躿b<AZ|78>z
+
+
+PdX\h  ۅ-/^n\Cq܇8_ Zs >PlE!Wm?+`v٪xp+/:shnOK|~Κ~mq'FH1〞8Sm~3yժo]Vs,Bl6_pH!hc^)1X
+kd/'i0>qns߱?KiG	6kWQGC_^zرk׮MOOX,x0F   H$jڴippprrӧ۶#u/֋IM49um"<Ç/rj<O~Ջ/nzk38OQ{_-#vIy\&!do3>]⡷xoå(1T|l|l17f,mT\r	%8sgo%BMit͡
+{t'qov⾣zuт:bhWЉ˿]|9s1y昵M  lM PL&t|K~.8FO
+q@B8:8ÇPΝAw7?xb>}VtW=e=C|ifN[:}'7)iNc]QCH2jO⚧Jg.cAdܿX>fzvnG5tnç>A,GG"uIiv~uE<&myұ//JWΊ;v~w `P?bqf͆رqWEfʯ}XӦxcy@ B?_q8M3X)sGg}CZC*v]]?\V$N[I;L	!lÖmܽcPAtr?xhزHbbs̖SF=&<q{׼޴yԩfZR84')˗/O#|Bݪs&N55y5=ժ#}SG1޸vva'l-,ȕv*gMLy@\kiׇ*vI}P܍4HtbC:R;5s":U߇޽/X؅_4ʧ[܃7당ǎF7n\`` މP   hH<==tr˗/={v`o|֭H|r*1OqnTz]uϒyGE(s}JENe$\Kr[K(+bB{Ljz?(ѦhvRRR˖-g:(FhaH_si~-!_>BC!_}9͜SN-r?7wTyg%\[aQq!CޤsS}fn6 iv=^F {TD||[&=qmhY<ݖSTQE}%{ߚ2dF<-.u</ͷ8)2&3;V튎V*/rǎܦpj  hH\]]BBB;v׷:ΰ0\z[T&|>?+ZIgUɋ9}=Oݣ[aK%R+_ UkR3l}1H4q3ʾk<??_~uTjk׮F #!`scargOڭ=>b}֍F>'W$?/gIN-	!EE,+h622
+BҸڛvrnTӧa7v={xSFFwz$_/ꂿ@W>%e#_=2a)Skʔ){pu=  ٭[7\~SNM
+LӶ1ɁR98q6?ؤz`ƌgt$4MKs+>֭[SfHǏwҊI_;ݐGjѫGW=٣{!C7.1U6osnNA_yfQ>7=-s/nmaY`'I#H3}TΝ;}Wסz؟_={Θ1C&|UnN3d=  q@9BaFϟ?ׯ;)0sqa6zr/?}-))y9E8aW\)
+wn_:j\X,_?9K%v"1!N}eqc)20sQѦG)o^>!PL-rgZ؇Dv0d}!]]y{oOw_uE:t4!Ї0Ts~i!^?~|N/^ܽ{wgggms 5 Kdi֬L&k۶mrrV$g,`<d~xRRRc|hQ!jW_}պu'!(t"w2ٓcf=UD\(ͭ@0¼'4M^;|{fC1FE6iy%baQMAqS6]uFG,]}]
+qq6xs릩!=b𥖤(Ces}a֭͛7cƌ]veee5cXKh  i)J$jժW^O<IMMvsy&ex݈@[R
+ҖP][!v;$ri<<<ݙygf;#gݼy3fB	qKAITuװ?_x1uʸWq Q'm`zKpd(CTO>>ַn40xc&\#-ȧj
+h o53Y"Y`zPpU+][/{;܄8lŰO<r,nnn=M
+ϕ$J[<?L6s"vdț  г@9лyPťiӦ...iiiwޥl ׹s眜EIB,W9ɖg}T*Xy}  FoO=lʷ;6:r1
+^[T7=|˕(Fcm|F-iPZy<`Zȯߺ5<П;G.s\'3BuhH^g^:ADz]M$!0yeZV\9pM6IRأ!o7X @ (@ ( ܹS`fiв=Nퟚڽ{9t-!9Y?Gv?ߺjȧ EMt>.*<'uߚt*-3Z^v 
+q)(ݧB*B'x%*<'Z5ΣEY٥va=G0.G)OQ7,#&ֳLң˯:xk$	{7@ ȸVA9884kYYYiiiBi(aF1˳>bx-4#M$.#&s_gOZSCGlhԬ1xXe,r(]>ZlJRU+ݛ5eҌGv~|+$R D~3/)Z<֖<SGіy7)V~4uVQO?]Rvޅ$iIam4޿A&MdmmmԈ9dt@ >U awpV(	  H1 UqiJTկ*R\HԨWyjLJViP%XS{1j,՛V_O36LuRck1F,?ѿsss-j!&MSv=~ގ"C\   -<ZO@ɧedp:kϠaߚtJ@g674Ȇ'5¼@V5]YۈyM!Y-[K'Û_צoO81TvnSacV|M۱ƆF(yѣ~СCi48P@ =Ch4PgϞ'O	;fGQԻ\Rx5_j'FߢB'UHVM&\өS'~kpA +П
+ΞO3et=j=  D\bxNF*d5=Ie	6XY96e>qo%qxLbGpp{ˬETX{vg2?}M>lѣGw3!98cbg7nܸv)S?zH?Lp[.iYXH-O(jԨQ"FU-(TLV5X#$I֘HA	O1C\dN}U>E+WWګ(ssja)*R"BUTɕbU]ߩb֬|9{ðw>x`0 @(`7;v,==o.فNS r̼ӎ2t겱UV.)
+yEbfMZe2PИ  ;橷rV%D;Vȗ0
+ϓZp൞GB0(Tǧd&M322
+^7L&v|HX<{Νc0~;;T
+HQ8:_1oX	U"qEydS-ZE2x{\xΝ׮]wpp`
+&I"g4q7(*rE.G.;vLW>w0<UQI;6|RێIEG |VSL&c|6pE 0k޳cν3tygv"355ֶz
+ALhNNVsssZ{ } @>9sA
+
+^NISW]GxrodwEUjm
+4cǎ ]c[
+l:0mÆ'QDݬ	֎LL	r*ͻ`+5~תbҘ  1ܛU'ݾ(-, 1&+e%ffi7^h(ʆ4*)=2:|$JHKKɱaZ3(R MKKh4NNNpH ]@y?ڰaÈ#Ç}<k҈ %%?O<p@N:uBXyNb5{/}}}O<9b^F^՗""IxyU]yt;۔(I9JeͫH09kUpoHnSٝ3
+o>y38*!z3dxH:^O(RML&b1|B^xZ4n  @AAΝ;?;v7,il :T۰aGf2׮];>@)<)6iv``Fl/.YkŢ>ug!]$ewIABq4S@IV6:U@Uk,WqΞ e9#鳔7)Zojae=O+hih4i)\{(@#}}}CCC`pȿ@ y RN<y={n>ݦ),5iyy?@w5$6LJ"$;r֮39E ЭG-^z篍.3eTwRL8zRYrHz'7L&EǍZ bo"fLNmmo2*U=j1d;!t:W%XQ堠d2I$Hdcc.;B>4fwEP߿̘1?6'`@ދY}vW}7N(^vmoU2q| E&|;[n7nto^̬ԫׯXcIoXN#L4C"Ej2+J 9<!yvu BCoLt0}<?Xgq8M<աL_j/..rrr#R#@ Hcz@>Fz}tt޽{<yҩSӦ!YYf !wq ICZIE!b䨯bv~8rpyXs 4M#H7< 	,^"7WזعxwW(cղtF7p:ޡ05>~֩y7}]O6!aeM]GӲy$!Pt &Tp8vvvnnn4%Bj:@ {|\Nwܹ3fOBU=G:'gIhԩSݻm+rLOT~GDDdffxX
+ s,YɃDoz-I.dgAA՟yҤה+qdpčIΊp'f?KzPHZ]Y|II&eYOIU*;ǙIb2BIR*חftد!: @ (@>V~IFi47}֭C /,\?qDOOϴǴtKo2]mԩRtЯN$Z 0iB_~<76eH"}՝:4/0  a=8gFluEasu+IK|z9!䞻υ4w>)afמky5鬬,ÜlmmL&ѐ6M1sA nVHQI(@>|T*եKf͚5{l t$a@>HQTi޼y6nJQae8)2>y䲲qݾ'  !!㢅 {](	;m%sjirU,c E&J{lbZQFȱ%ZmynYK\ukHImiM1سgX,׍EZl%Jeee>>>vvvp!>k @#:|jjhn=Ju˗/YDR={JVS(f˖-kٲeiiN0eGMg,XVn;'x
+ wnǕ~@$*1ӣF+WUޤh5j Hɋ4xk  O # k&@"<pg#iEXC1cubQ`wVymۺY[[ÎPq!N^hъ+N>]TTP|h/^xRKW&BS(F3ҥK~~]nN-S	.d0(V  kupM;d7H\RyLm<AҨasVN~&UutK   IPZQL^."'fgkV(J,]\EdK8D8޼ysoɱ+++t666l6w@ t:ʕ+֭{CG= :.99dً/2$ڵ ׈VC(*T\+>Tnϯ~I?W`ӪSBx/*Ҭ^!WwWaFd0r֭[?.׆xE)S۵kF6DQh{lg"ޢWwkF'ϢQ&x hD}c]heI<U,G+r툃W2:bs
+s5J  ;	O]7Ț˔XY>Y'iAh;X.'ʀ$&&fggb;;;HR;(`S@ ]vEEEEݸqc޽zPZp(ѣGGxD"믇	а=~IRݸq5*,ubUǩQԘ`EGşוr|r/*Su.
+W]ت<z:(d2  ڴ)_쳳->WtٳY,V\\ѣGq9݅FvItmCԺzPMl?tJyNӢDm\8WlA
+eU:3-1-;u`{:'xDG_6ZI<îd{t9'9F`珤$3++d24(b{pPQeee(wapvHZ~!q D"ݻ=2xϹC>RSSϜ9s16nܸI..z `g׉YYY#F7P@`v!Aj}PO+*_i*R6yU5_r.\mR˵
+PTX5@^Y
+(
+K;v,==}ѣ})AmwɘSh'Oƾz=QKD !i]7|l_7رWn2D$p1lg3Zk]fXt;=VR!2sӝܼ|:#1BQh`藴hmrU*4{b>\h=z<   #$Z>ŋ\.ypuȿj A=/:1êFIWMf $_Ω%M/urr?+@MNB5FWe3S9+^3(VVV.L-ށUNUUz]U$IE+o-RUTxu]V1%xV5+uQiV+*< ɷU׵Pʒ'WAER@*W>F(
+ԧ*nlRUS-7Տ?;wu* -|e[Ӈ=~x111ڵ3g=/^>|xΝ<oEID'Uedd_yy dA@  bJ_/###KQԯ$Zf6}k4ASIK(>t¶p>w6?~l)NJ $#S'NݻQlk~KPG^$Ee;8M\Ԭ%\.h0J   (Fc21QuC;yKhZE)''b BJUx<R9 0Sg\ I<||y&EQGjVU5[+f'U
+V}
+\y^\%UU$YYOUf5Nt`sjS*'Uy_*Uץ_(TX!jZԪ[F4i>6+*^ycNջXyCucԍLw( }/*g8yΜ9UTZB^T[kW<|0111??ɒ%}k(@W(>qKJJeN6SwҥYs ȃ|.+vޭT*MeqAjCqX:~ȑ3	Y$#lZmzQ=3\ |־]f9fNK5İQI1?R0ԲzuH4
+^(  Wi&`!Wh@]&Ʌe:ߟr3tR}*--mڴ<|jCj}\U^n2SwEjg{WHX1z@UV"ڗrWb_2cj9zvUf滨R @:E2i~'z2Th.GPwJBUT1Jb>_.7XUr;!KeV4*I_C
+T5գ: jJhӭ| zX,*;U]?
+EzII܋\.\Ueo*E|uVL&ٳg*rP@$J<z=/,LRTrr$xYTT``ɨV9 @AjV!ډB˿ɓٳ-h:/#FCݾ}ðj0C2?Pfi_Mھrw||a>mR&sqro+!V9 ՚wEz8/SX5^bBfS[8MӢz=NL&"n_m$s>H{NJ.VTTT*]]]x<z uE{9%Mz	V>Bt0{TYXebs/uXDVKJ +e;a:CuV}Z`ji$afen AT^XE1JR&j wpp0`Z{ SZZzܹCvu^n@/9Mܳ	e˾pXqÂ~$-s>ðcǎݸqCӍ5R҂G,!YؔWo޼9`{w-nJO	Yv7ߟ]>O)E;TVG	Rh
+ t3yV!Be$.)ѷZN{9/cYEHff&rvvLvgϞȻ痔fQx]ҶkڽJ9T־yB PvZ}^KRc/ TVNr:nsZy݅jXu,|8]QjH-M.TɯK*~7,o8k٬UQ:O:~Ծ	o{>*[YYYW^-..(e˖ڵԩSxx8{ +Wl޼ŋ_9sfPq1 Pyq | u uQ"b길Fϋ [:ce=z'$$#c'uiCr-ヒt_0/r%?a" [XGm^_qĘL&%iʷYlD /ֽZoqdӎ#eJgcq|9GuNB}4{r,V닸Xwr>I`2;;[ lllL4ƅX[[[[[[XCק_vŋ			塡={ڵ={`Aki[
+=wiKÛAV[~%bcc+_Q%kߞf޽;==}_['&xt$987@݈a'NӦ!@ltObß1^[I-Đ@NA(ɩr`yl ~
+C[cBXYq?ցtT닉 io  b~nn. >>>~^|xT˗/<x޽{z˫}}i֬ [ih6ifJ%Ё..[=;jP(i yrl7s6vŹK}XGtBp<,رٳgID,`q",Eю=:zw}>|3`vB!{YV
+
+9xmwF¤s{%I#z(;fӔwHQ~6{rssCظ2rT&t:GGG///+++'@>_X*((8x;w:tХKPXþ;h{H#DDGG^z۶m666ϟ?ݵ14bS(MjCXLGXѣ{vn:T(DzKKWyx `[&	i"!l<xpM[;v(ji|tN  ]~^'x4o)Eؘ'nY4>$TσOSfNo1?VA3<yݤ"&ed.Dу[nmN	4C :tSOP4.(27nd_.\yfR)V^ސ%1ڮ--Q\>~ܨ5r/E mGe׮
+ލ7V˝ju3WW;//)))	X@dn4Kqw1'-]0 c-v<T1VRKϱbN:*U
+ƜXʄ#v}s	sw#iZ-w999mڴ,mn۷oj:8::r8+!f=<<||||=F^}c6g/-tv7I.ߵѣG'Nvy@S2oB̒|UVSvvofnnGA,r𰔝;	_~MW;7ZmDBo޼(///%%c6qxeŇbNM1ׇ^tD.j֟*w])M[H-eJ렷NcxlUFI)}h=V+-#B}}>@fZ:sW4 k׮4OYęPI(x1n׮]xxt@  4N<w0vQ`0^xm۶hOOϹsr
+ElWTB$c2ECرcGF0XY-FdIw^9zhƻ맷n?۾eT|<N﫺7ܹ߅d2J"gΜ۷߸q̙3Fe2aS7me*`s=ulJܸج3( Tu5ӧIYߺ0O3w[בӫխ)O=bۻ* ! @1St:cO<>@QϏEr/IqK(b;#@ Ph={
+©SNuw]nC
+{"aثWSf5X/n4
+fҴ{wWlڲ6[N;yOݺ	,S(Y[sO \|̙3ZϔLB?2yE8Yj'b薿
+ |}O=гEQ)(
+S   k?TA@Qܘq3/1P=No:MoDכWbX
+(P^?yBkkG4\ǽD-1`%%%JY"= r?'O=zٳ,kҤI%99 ?!Aq|4wV u{W8IvWHX(f2!r"*%P&'tJ  >MG.h?|ہN#`ll
+r?_7nXVVvK()(pgf2111gΜ1L'2V6I&z>qG>Y#5u爫מϚvbed꒓Y,`YG $JDR)
+b\@ ȇoHLLܵk7|UujJeF(**ʕ;cpF&Ql}zĨ_->gVs  zrXA2sutR6ng'`  ;[˯o(Ȩmk6Ǐ߼y3v,/ھ
+󓓓E&MX6
+F!>arn֭XCֆ"v`oܚ[&n: (sss]\\:v#H	 &P40YYY;w9xpw甕5d(6W11Ξm޼Ftc1T*d]A6Q#  :=!~l?N~X#:45=|؞݃x\AŘgqWFhd56B2\d?}ƍz}ΝE+m[l2eeeg6q80jv>|ܶmZS f	HQ9't&LD2-'	ե߿/۶m`0	 r0999?p.]77+.D.,BDWo<	QձY=Q= H97o$"  $	̮)璇j4/%F
+BۦwA4r Do?ܴi 6	Z	v)))7o|XPЬW/HmHYE$%.*vX3ߐ_I
+kDIPIq P8riqútyf1g7%ʕ+n:((	.悼OHHضm[YY#łu@ (@,AwܹөSuӧG"hlȒ主/vs...L;)[uiز/zU#"  qKhf: *hTX,2K?O=ҷOh+]ឯ=`'<=  yyeCh4IHACH0p,-I~{Ҳ&CFVߪwba6j>|0ғA-<xbm#q A$I+#[?E:aӵR+	W"ᚓU;w޻^AΎ/É1M^$$$xzzj(K2bx	jb^^CXXXXXÁrZjΝ;҂*TiP˒ݻ'?dg7p1_o_@@?8kYR\¸\0 plzL&	D2/{0J*-ik˟=;Fy59oΧ˾ݹ"!ҩ=
+&ڈ?#g2ywK--_p/;bjDj{_{mA!zP(<uԤ)\Ӿ-ͯVS
+2uFfIff)IQ $EtkkYS@G6{1 :i((s;9Dl -LZi0rEybRT°ͅ$)kkwwk])T*4//bӭQ z`xxxX,!oN;|ŋM&ܹra@ HcC,EaaիWٓݺuf+)A\)ruƍ;\Ehp)d7J#bS m1  \EݳP \]N>fRD&	TzՏ"Ԅg=ص'i +
+0_Н_alWWW߼ys_x:,s^[({v5D
+_  }(:{i?#F?Nkw3Q\^.WU5>q;ӠOq8ous'0	9_\"(H>M/]Iݪn@._N),Ti f% (no'r2x`sط+CQs/\;EFj5F𰲲D7"99㥥E˗/w%44^!R\G&>|<~緟}6Y&Cɡtvŋ?FQ/ϛh_h˱5_.i%+$kM>f楟nRDQ =SW^ ܹrĐSgS=l6eo#Gr|5/YOifs6oBT,&5r7mOfdݽ{711Ӷmc$RB6-z_/rts |,(-ѣGn-]icwQz޻+~w%Dӛ<=?<a\Z~?][͜t"+	70A,uv|+=8VFy}co/|0iTԵl˦.9}R2B\ukҽiSbTYRrḁ2'G={ӄ7771تU`.g鐺SRR}Sa}~~maoil@H=NIFsC%''ol.iӧC$-\8O7uoxyvͬ 2=69l  %3D^ er0umnjc-X2|= ډc3ƌaa8;[zpw*@'\C
+^%K'NTstY~?;IN΢Vx<޾}<h0ڌ	)@(S]\~Y3ʏj_"/ʊ  ;oo'1sd*/7j&:}Xsfzl6E/GRe͌V-jЙs8':k``PQ(oe|ݙĤ?{&&^6{BA4˭B(+\.;zǏp8  =<<RSS/^ضm֭[@ 
+P
+3g\Uܹ^\ܐ8:Fj4}~͛&M:v0owhߗj|*5!!,
+ x('''  Dսk(C  L&ITV (&CѸ ݺ6?}	E!  ?LV 0*[Y2'G	B&:4//)-Mgo Jrr6i2{pBqСJX&a'#G4ܼrGbbRHH`uDUd*6BFCʊP8zI*SefgH/,)(T5l QT)AvmWӲ(N&%-^Э}&\.NFCym6=1{]د _egg[[[;;;2B(@^^RžM4a?RSS9լY3& Ν;'a-A H=w$::z޼yK.U*_=;IBѐۯ7߼ysʔ)QGPUI .t:IQ Fr R>9%C{?  stf1<.b$ t:앏" (13KTa  ;;!F,  JQT^6GM8Q?&$DaMMh;1D_ B6m `mSgRD}5Ý{Y*  sƏ',Gb&I*3qCGluM˶BZoWF9V+/iJdwf\'(+ ,Mv^V[4jvUvM"8  Oy*Ǚ,O
+OLj%áa~H])..>zǏ:t@qttݻ7ù~@ (@Bq̙y͝;W*Ν;	cJTvѕonz̙C90jH+}47 $P`2Q%%:XD &Mį&T8K7A:Y W,w^o. X[$ t:,  def~a-}iӦ~׮;:6@B1V"1cFNT*ձcǢ<K$0EVSyI$|DLg2  sv}]^G"Du,#lw2+_ҭd"n#66<B̼a2i|Ko %.$-^)
+,#i-#,'''--d2	DRG-h4^~=::ðCкvWZZ
+
+@0v䍡(J_~㱱vvvK,ae2YΎ$͡À>fJxc""  :"?_a%2  :}5C(DuӬY_~NC  B CQl6M 0L^n0P\  TB wϝPݾ}MJC:Z~;T:^$bMaX||Fx,UQI5ip_l<uN۱u C@b:	A cbF=T(tv	ZE	qw2Dbc{'AΟk":w1_Ķs'o߽IˀAN;>Ĥg'Qwdf"{;EQ:xûR+PZZ*Ei&0ʄ<ۻ `fH8~xAAA׮]{ꕙi(ڤI={\vcǎݻw `+@swt˗/_lYFFƒ%K..^<Y7d1褍C<ثWg,a3lV LD\1 hˮt:F`0R*5 JD/(
+tMқL f("])v.D{lv[)/gիH$?1JE֓lܩլy3]\\bbbEK| ]{ahhI(
+A/t:v~viּSQ-BC\$-sGF-Y؍ͦ'\s#>|fo*.ydb0ҫמ+wGR G3 H
+;`d4''s')r6E.$jcc@Nzz===i3˅SN-Z(,,LII14wT^zf9rv&"B&sC2k׮6s(@0<NBAPn")
+  0Q3׼[wT*7n܈a"@  &fByYL!d0`~OaЋ^,\zY=q}| wh&1̓'O޹sh4FXl0mm{F.߷gap  Ҭ~bb934,E@J#IJ*SpX,z֞n'FfɉSO<=}6Q h#!AN/ ;5uJxs^VzzD̡R3מW,kEvNL=SA043+**0M$x<`v11l1b n@ h tCh~JAN-{HΝ;oX7*r ,du~D6<[*{y  4ZI.d2E"ok32L&ݻ VHr''1eVp`~X٢ ,?JKK?Ma#gju.9Eы/޾}[ӍwhkEJqQ[ԭMXe?<x6tTy윲rP(8bZ#*@Cl:IВFl^fNx"v=>MJ.u'3[=)O/x̰PW&F@lll6m
+R<:ncccggaz uut:`  ztaX;wa2 `@jd2=~8&&f$I9rR掹*d޷6ml8&lEz XL'ɊBÍrvF  .ID @r\{3]   'WVh4@@!  '8VxWz.rٲNEE lTD^2bpǏ7V@z_B 5mѣSlY6,
+5{VR9qIhKno 0J/P=|f:{W9 I᣼Dl @n~7^/_y޻g/ HA۶ߔT7{{TuQܕg8Nr8
+>&3==]Vٕ,!IåzI('H0UmZR[ |!B H,*A/^8{3gz}i^T4C)66<6 df /kdM!nVܧ	 gL#p8R/jtUz7WЩCMnԲ"pܽk! Po 0g
+ Nлcibw~ݻŋh4ҡHyICx#G{`45ڭ)7K~sq"W2k`;p;wڼ5UKUmy>޶"CB[T*`E(Ba("uz -:w:񓼔VuaAM۷:r;Yy7ySG=T(t  7Wɨ-hyMBݻWPPЪU2k)EApT.xyy	8-@ m*TqTzѓ'O*vC\gmرԐ.3~ ܞ]tмD"LxXض Х^Wn! H Re O>|+  qcoզ  Sy{q {>^;"W~ݥ_}USBThNZTW/Î9ٳÇ4UI#8h3~|tuttC4d˦tƥ~S8rExY7o朔\כh1$éQB 9L&G7
+mZ{	  l6}f$Je2:uvtu'sOS  ++A[p@R$b\t@ZXT*mmml6ÁM;5+qj؀r$333Ϟ=UXXئM~4hkΝwm_>xLf<zc0餧_֛<)CmOIJap3&6Qab{Y$W%V:H=un  guZ>.G@`w屵x瞫dx*r+U;#5BcIɅ.bs obWk^b
+ݢEhV|t JJJ*--<&(WuѼY,օxL1%8 XS?]da֭<ꨏ؍gi\:U^2+upHN)s/+;ڊgδ][/_'SHWDxR 
+#O,$}]`dddrOO\3666pZ/%r= ;;˛7o.((ݻUтK}B˗om2F{\H:1sZ}cnޒvj Ӎ~_o2nRv
+ăDo)ĤA:Nc]ޗF,C DmS5'Je_
+D9HZF]3Y|v)=slᷡm(   6-7xWSN9sYZ 4JM(߿?==}Ϟ=CuC?8Կ @\cǎ}ﲢ_-k*>C"2jD8\˅goϘ~Ч\\<.B+-Ӳt+	ɤXM&䇟JTR=C=]rJax8EܾWrJ49<||@'iϋqKi
+
+[ş>d0 PׁJL&rD!](q߻W8q3,р)R bŢ	yx@x),,=}ӧO[J7Wnn_rc77߳
+3B9qBşozv Zz̲z7zVRV!%S:մ姿RjHb&a|  ߻/4'_,  CHś ֟3?+K/_M[-Po{jg\M[~zY1-Jڳ4f}WFQٳgWZ5닐Naes5srrܽ{&%%EEEtZ<%&#kN֮^PkmOWؑcno/ظۙy#/㦯}`<h]U2}j>QAdvt:y/گoj!'G~A9t:}zvNhwR/zt0 лg-KK1=7v4IbIE/ܽH/>}&r#!㤇UvM:~SVTTj.EZHD A
+APPDC%S5@ { 1A(s?~<33300~hc42\)ruɿb("8AMw߭V-z3QS'4MLu4`k<߲/{f #yPfļ/7<K/nlC-	b:wHzzlX'l.d#ALG6_z@ܱ#޹mlhf=1fGEEYF5iҊΝ>>sݓ'O8y\;Fy0!-{~W>cǎq9/+ɔ;4sIL*w觅R/]Ac]ILEi4BVk0o.s4q˶2r7_߳.0kF 5/9SosTf @0vm.D>=8rOpOoyiiǎA|}l<mr:FJJ5wq*=M&NQngzMT榢['5b&5QXXHD"'9	@ { ,yyynڿǏ,YA
+j'Mϟ_\V(.X`dqqA~^1aM\J}о
+ddw p~Kb@MVWQr)C{;9"=Wz/GZ?XXVRW=SZoR*Hl+n]DBء#:coص͸df=pΝ; ?v"˳t<t-;d2}|T*U1yM[}AYOop۷e-U@~0yw-.<IOy*M{^#7q%I
+ bmlx!.ݺUʌHm[{&%ܼ G&SIP0n޼?t$W_j0<IRt:6Ng'GAb1`U x[-哖F#nq$A8N \JֆA;r%skҮKd(0!4SFFEQEaicp%@ҨJׯ_߳gOrr_|1N$bob;8l>f6l؄1BZ "Q1,:ؽws['7#A}R  iޢ@J+-XTP xt{Ws<?c9М+,z"?wșonECfJHޢE|5<0M2{Ę9|Ч`2ckz@ wܩh~86$I^\<>}^ROT!H)l| 7}˖-ORyɚ,Y,hM&$-CŢWWIx<fO<BC\u:#fƼFØLUMk$Dc5u5Ct.QZ1V;(
+{
+IϞ=p8^^^,u.LVVNNNBP$zh[p\AZƍgϞvtt\OP^\$z{f0`w C26;/  R 80f.k?ί4 E<G BX<4>=r|fM,<Tȯ[c<ws!~j,0ņ/~6/4jD8lE e۵k׮]jƹY~=T:}w7nhO~ .ɳol[^zu8οg 0|xFe2ic0u<AyEjI5J߿n#P(lAлR*> 垏JuSNݽ{W,ϟ?87aޯEURR2x=L) @f~㾂/{0+y$p_"fQJ\Q%R..RmFbO/˫*n %<f2c-1mWQEW]kcc?Z`
+E`s2c-YsHiӦ#GL	̱xtZii.W9fAwލ7C'Pރ7,Yx޽	Ӄh @;
+E#P
+Jrq+++___`0	 ^ӭ[NzA H#=8jӧիW4WTR4cڭ߳Gg/!/ )41r.*
+ NVKa   H:5Yqrz{r};PPw;#G2zs_qtp,㎮[_7>ZcX;lWfXٗK%k׮=uN/V;bMHcbb>|hd#h 8CLνl?׎w`زiva4HMSC2{rlf$(FR	'''R^@ (|t:8111(FDD{Bϱݻ;ovD@4Pwf]O8N+NB	P ja?SBK*VsH1u5&+f8c-^^^zZqy[D}ETKO+jkwKOR/7  &hG~BxEt:ŋܹ('EXgoǏzլ%m 8@zGLI̗Q#VRR`GGG'''@܈@9P !'N8}4:tp<`z	Xv(..ׯiV9 BJN)}jb3@`
+ VƼa\~!/qMZz^׮InzrP­=w1ן'ˌvuGT)d}Qx2vt:R  X4I"?w+V˗Qʲ1]l΄	"̙3O<)//e׉T}/c!=gguܹ3`OaP~uqq1 ёD'iYoPL$9swwr,Zbfҥ˖- L63E@ (|Ph4'N\tIkaN +A>@ԩ젠@4PIqM|eh6IE+{Ɩ`+*@*0Lq-O۫r4BB]}z_ʌuGLLcrB:̏]޿?&޼a@ g8  ),VJLLϛ7Eu~AteeCxCۻo~o_`_s]
+%yGȄEKf鄡CQh~~~aakӦMb!
+P~fϕ888:88@@*bX.O>=222,,F7T8@@3P@0O>=vX\\ ڵޮ[Yڰ=}۴i鯅M<dȂ ,6.UW۠~ Sh
+J&vՂBun8U~eWwK[(r_"%3}G۹cl{GŨ,]zGV^m3gH)霳MΝ;}*2$'IQdLX<իK5fb*aM/RrssLKmIhr<//`0Z[[;;;E7r猌#GT?mʕ5=P@ (PxJJJ\\Ν;
+ŠAvP\4f'X[yXRR	k&PDnRд@>ȯˮAh̞kW/qD>tJ_fqdg88xL(@^u̹aK_^{qc,Po_z,3N" (9f-U<XreԩK}|Ŗ=+kat:=***++k޽ZZbI'7/sa?d2,55u7_ I/?^(%FڶqEpٳg899R_T!{^^ ^}߿N4)-yŋ7o߶Ae\U̬蘧%?=ttu,fJz2@zѬѐ͒%TbK&wPr?~ٲU_w'b>Qs!sWnVd|ˋUOl>g-l  Qotro?Yq
+-Kqh4ھ}rssO:;jhRR4o0| DϿK׬))`4<Ɉk4D2B5%ΪΦ$hmm-IDQ+Wл@7j$cǎ[˾+>lg7(;[lur+A	ȌT:vѕ[E>-:d]5!s@3Է6$8<03iJ}4'=E0$x[NFAQzJ;bdp։~JcmlVB,-Aբe<mRRRBBںuPTR4;;[&1lgG'Fa*Mhj/RSSs.YLl`?[[f=@**c޻wOV;99hтthH}SN۷m*8=7o<qDffϷ_= Z^nmN8;zڵ˖~֣E:cR~!|lwΑ,շoe:Zsۗ(*mlm>˪? AK>d|F/K!"y(6`Wö6K'>5^j>v؆jhvs6EF>p/Zm1ؾ4PBsXcǎ9rD1ybw7P)/) ZWׯίKIH
+ d_Wj+07*p/d@u[T>RdƷ ^]FG_ GGG$f" $㸋?ł{rA^GFFFBBBFFx}`:FWuA { 1(Lv̙ݻwKO>dɢEPQVfYnnkmmmt1#tLTAi6:ir&*v=	왉wEȵ(Nvwk[vK$φ˔}^$ur 5X-/MzXowjHٵ},nԊ4lte;d1'2б%V#GپuOÆj#ouX٣Wfo_$)˛4÷o>{J0/?E2y.
+Eć$%%qsE+$Y1pY dMO*WŦrR3vʋ)(2*'W]񯓷*Eg]+֒s#dZ{a^g][PW HEp:n0222lvR7;'=WZZP(!3}؊#3GFF """<==k°]A { d***zǯ\liC{Ө6=~?h4ɓǎi C>6$_~ezoV
+cد;(Xh%mEbr @iIi.aA/g)Z5aÔsƐY.]vQּ*|y)LlZ?bİ0b  Yk1VfXnn1uVLL^4S0>op[[l!fZU+Es.XƻvPEEmHk^wr;WqrmԒ~-VZsx۩+>TѪX34(//L-1bR4))I.{{{;;;;::A^9WulbvYt5rʺu։'={/H82Y{(KH~@ 6lظQl 4J[K<.eC)̤VI& TTX,8*[*bǅrv<w5`DޘOZ?-^\|k|Ҧ~v&NRm_
+En-)|6#lfmW)ٷoJ助S
+ [4_L6E$bNLo߾}MN1n]{1&,dΡ  ˍR+U;1O*v^@ܣ ,AHQQF)++c2|>d§
+fgڴiӦMݻw|´iӖ-[Psc@ (4R(7oތz𡝝ݴi&88pJKwϩiGNξSL<މ* y^o{qp
+0LnmOMqmLQh<.@+)b;ѽ	Y	>ͽd"]%  Bxk?r֣qg-:<F"9!kV]:wZmX;BGt  s~۲eӧU*WstUւ$l̙9ؔiaVRȿ`)t.hlڴi@@ Fp%:[l l޼yڴi K̘wjOEi@AQTyyy||3gn߾-
+ǎ;.74dINNgeݰ 1m@!tnV|Mpyۏ`W/E.UFu,/ǓWP	-:>ә}yB^nZ%wDZ)^oow%½4;rd%yfJ	lgr[vdEee_Wݗ!g[lzN.ZEQڢ2JJXYƌA۷o6`c'kS =@B!J2++ё$I8'ԈY멑:l@ Hc=\yhww!Ct(*B,Gj>Jk׮sg5	rȃzY?83=.^.(0)L!=Djmajn KroԤgN>b1X W!]ޙ4É?m(8|w>=TgKQm5cμ5Zo9l  h@6{޺uݻodew.1.<zHՎRre8sU@ hVVVIIhp8,ʁnY˷GU@ ;Pi,(?ŋ:nܸqK;t*-mhG"٭߶d2o~֌V BUpV/(U
+Ds]!ŠrMԠObn"RBXpF))(_{Lُ~-(KR(7Gc,)pPh8J׺B!6o  ^`;hӦMw%2|޼RY4_L+ٍbΞ=k׮G@ ~DH$f 5"ryddd_O=> Z۷ϝ;bF1ys|Ӑ%1YYCO<ѣǗ:;md$GΞO2d}vGӗobT2ӫܜf6JCbTUh]B]m=JЩ*\rⴍUz4pEil8G"Z?Z:nocÃM ̝-^fǏiyx0,/P|P,1?>33СC&ఈ tpBS0;;;///:"""lٲl2\^E񉍍%]dn@ =%**++(vyJv^%%CDGQ4񂂂֭[Z9#
+=Ixsso?1`Kf|3DI)8qQa^x+C) HDz1SoR)_|hS_dӴ;Y4Au,BmbuWJ[?:r۞]]İ hXٴ	L.?Ν;k֬1͞  cb_d2=ZZZz9[nN@(I@j{#$CKJJD"Q``+aʁʕ+"#####́lR:  ,,u}=0,4!=V[l9W`ްB?ԢEo[ @4P)O/&*ѐT!2cGiHiZV;   Mz܄+*`[Nnr.$@GIʣ|#	iѬ9?ն+>`'Öo~P@+~Zi&I_0JJ,+:	xbzzɓ' #@E$77'++fqp*䵈☘aÆ2T= nݺ>|Gp=8񞞞Z (448'%%9sfO>#zl_^5=klڴ5_jAh
+(>s.4oO"VdL3+Ng'AYa @,14!p(H 8Y66ϳ3]z{8?n||ןOHdk[u0xCC\`   @ׯsիW7n܈OODe0dzfXG9tJіG @8Y⼼r6meeeeera@j$$$&$$#7ⰰnݺ}^*vt@ \.OHH0?X̎111?g {Fu̙f͚=Hk).D̙7n.(TAfVI2?ݴ#XLpd;gu0FDZ
+ ose8.*MwK& @^O ;Ҟp˶ߨu׭piɿ\=߀wץ  Qo_kJ~ \*C:XǏ?}r߸ ɂ>>'aT¸tdmm(HHH4;o=B=\ ۽{e˖j4PiHNNxbYYYXX؊s[taM{Ǐ{{{[S;BU_8yIv!01
+0Z6+׫yh	(KT  ;C 	ۓM3L ̴dʨw߷jʸy=ިugg*24
+mEa*k}᣷6o聆S   0i9?DEE޽d2};|WVeqۜEZÇ?y$..~cz9  PRR) |R˖-֭[DDv	E\MpU VK.<x0???<<|(&Nh_ׯ_ں}4ah!4PE3gk}2Kn ?`z3/= s,.;-ƠUHd.*}e2yiNY`پS!/p~BEOG8+Goߺqwe$O>e4o Jdȑ$I&''߻wcHynA BTaaL&3nnn,ԅ#G9rdoU@\c4PF̙3ΝYt ߠ˦(.7K͘1cH!^TVk:6BL.ѻaw[xz5\)aC8b6&'>OI|ne~  ]w(6|BQl1_x0`>P8yZqʤ6    ]~]9b;vɓ}Ts}Z<[-o҄6~o߾}"4T o3US*Krk*RBUqO⒒pŁmBjgfMu=&!H19rHFFҥKa4 Pqqqvz𡧧رcJrsZݠ3<22֭[ݺu[rvp@ P¼'=/7Pvy偹%oLjIϯO
+.hk0'EQT򖅴f\_ ֟NIOvBYӣGćĸ&%4ȯ$/oaȐk׮egg;;;K$*	BL.US{R$U]R5&򦅬c	kɫ`Rmk<^asy[M9UnJtV{<???%% ^bRK.]tiFFFlllll#GT_C H"#####͟MfrGvvիW#77CN
+
+4  $T*]) P Hh*p9+mfza>-K8VSq~]84 W:MiD)W^^^ֳaGƫҶ齇]!GJkB޽_6T)+^		iٲ妠ʙ$zCnn\.tEEEJtRTMy^\ץϩE
+K6!eeJ^7#kQ|0LPtOOO{{{H1<m4\~ȑ*\.R#C : +n~1LL&EQ[[[WWWGGG@@(Ft-
+I"$iee%
+Z-"܁*<FCUXCy0s~@hc-7
+(c#c=:2$<yJc0=Z?}t"MgիFu*p{|X(e!'O`7(7Զ#@
+jm.]dgg7y,&kwҥ"[[֭[yyyq8AH|CG
+E-֮>mZ\٣-_nTKVeuFX:UκSc5^:-|F6=qDgggbxڴibX,oٲ_{1!ți{ Py$IٱX,$10GҰ1&ǙL&EQr\CUͦ4Z%h>nJFJҳ9l:x._,=Ֆuk5*Ҩ!`y[v?>Z.弡cxo]ڱuib{y#Mh׬O<{H$6l0:PZfgGݻ{.A=z8pYyk7Jeu"}V2Op׮]q~=¯'66V.W=Ci@!IbjA8ސpGQTaa\.j 0@3UͦhF#AYvZ1S?mTohře`C?_YLĶE,/W4J"vjzY}K!kA;~ͪbCcc<̞vʨN7=ݺuD"0akz Yhk{$1Fuݺuxp@ oMFFFS|DDDXX뮭c@ (3\.f!Jsssd". $añ2;{SAtcj%B~rbfP7[@lk[kNrC=(a19>jd(GI#cDN~ V~=(=RZH/Lh-lC;}Awg;wvYRidMq2k?/^H'|ҧOO>D @@ [3}*+* I%r|ذa KN6I
+,  bi4  h$fl6E$	04Eb7+ւɤ8)-:z:xL^^J<! f JӲ%ybcsĎd>LuC-.,(|B^^^AڧF~omzy/<:~J2dȜ NAh=kc755:::''׷O>aaavvv..W  Xr/]Z@X,>|pjNnbbbMlٲʋI!gH4/`Xnnn(F04L'NjI"jhPhtD R9f}wܠ2)˔6bhin<pa[ P)yY@lKb2S^M\(^>kF(x_ʌDYq,&X@>F?8)9p?zJݻ ~Cm2Hr/_LQT{ղeKD@ \._lYBB¿nG8YpQ-5iF]>BQ$Ifq7  Hjl6H*znUP:+/7UA%4;&,U$im+<á_ϔC;KPSBh I%RGb+{[4\C!gX/=2S +geŅ=Y&11[ns۵otb¸,wwkF@ w'&&ݬ9rd{?`sA w'22qguVABQ7tAL&  \Xh2˅n5aH6pb){˹\uzh`z
+EQLfG  ַY/ QōyOoE  /qv5ڒMY;BVGsf.kpq1oq*--m׮ݬ@C 8:.]޵k֭[{xxR_DDDl޼̬߮.[+<<ݧ"B3@ޑaÆ V\	s= VeX9P59A튵Z-ieenĉ[6ݓH8EѢvjshޓ=,vo4G  JgJ\ wTKv乄wꥐՑ(Kgtw3=BZ|-nbB%
+7o9ҫWFrCtə?XZzOիk׮vvvP@ K`}IHHXlّ#GjP{ ;paX*_0e^Ba4l6NߎEQL&CU$D$P_̅!׳gF#A#q*?N]bp8εm'EqB8 %_w S-va{K!V/8pוXzk7O^a#n;0W/_:8N?w\\\a]vm۶'\@ F,{zzֲzN=P@ o͑#G-[9}tP=0Nru:x(A'J	E:A뚺h~ewv:U~V	q/t:wǨli=kL&A+cs
+V+St*˩c!+@_OChlFgF׮ۡ}*?5rm<xΝQ逡vín#糲u֩S'///^			GIHH|<,,uOw@ oMXX͛+{,2υUPp\ y?,NGp8AQpk4h4Ri9q: E 4zu~QWfzKiNgػ1NU4ԁ   ׎/OO[6Lk]$#e׾zX_6YbfbŪo^[AWWצ+qqq...k2a
+EM
+7ݺuٳ@ K`w9R%@OXXXDDDDDD-{嘽{`.xzzָ;;>'
+ǹ\.IPQE(~=BQ\.h4t:㲡Smˤz{7<1	%Q{CR(!#ȗ.c$Eht EN})reVVֲL,SbP%MݨSG뱐U
+|_mGW~	G22n\v-$$$""7I6cIc޿NjժsAAAP@ Kн{G"""h/#34bSPR(B0t:%W1ojF#F@UeX4C
+ԟ6|9i%XMV1pk;2?뫑^`$IA+ޱ.na  @c^{V(7~=~걐U
+<~B1Q/G͘ʔܹsVVVKJ"cd6͛			(vÃfC@ Ey; 4s {S$d2Y,a4嫏 JQh0T*REsi LAr`_aqf_Sw;;{*0f&p*I1lҤw(q/G.\ϵGhl+  ~Z)(d湑U
+ܬjbZ8hOf,ׅFo1i_N:d2;ޞ@L.qP> H޽woC 刈6mZna^`zKg| =xL&STtd0h\|>A iC!{NcZ5!wޫJhk̃4
+b?63'᤮\/RD)1?K$N*|aI?໵{  eG^/YoxYSfd#Tl϶8iSlw<x A'NҤ	?/a&+.ܾ}`0lٲW^Zv@ Q/c˖-r<66V,yzz]~}	]{ q($t{yy9EQ!Z&k &aL&S$(JP\AaL.B=3ئuQRO2uiR
++WL8`IP&C߱KҰoF/x MIQI-crl 6'QZXGF5"ǚ}0r-0.=<Nӧϔ@aCi=ceu89ڵkw=z		v@ K0}ʻqE -["""6o:@ p9C9j8k4^/bJw|Sف>szA0`t{``J&I&M5&&컻I6f6idZ^C6c.F.c<?Ws%I2L			E~
+rqP.WwV~+gt#U7xVy	CI=7Y?H{n/g/?
+!(M{su>35=rv<<_|aF^M^<v7Nն*U>D^z+8'x['̻V޾zuǎ999-7oa *QVVzJKK׭[WQQZyz͚5^R<  czD#;!ÈT*,]]]Sey#(RT NSu`Pq	|UN-(Oc,N]$-~ߢ(:(JEIjӂ?e8MN5,Z?f8W|"+|H[3o͛7{͛)h39ڦ%K̙3'++ aÆ^<ׯ.//F7 {F(*(Fq$IԍFI(JgrnJ~"t;NR#S_		AϏn7=!D}=qɜJ˒x⽟W^?9bjWdBŨ~?Ep)όT!x7҃FzϼϱaPǔ/W^]`}436Yz믿~I&-_|X  6	!6lXn]Ĉ-Ͷi&e#?ϑ  v.NcFLQTww &I:$1E	l8eYax$u
+YU"EP}_ՑQ̴Ə~d=Ѭ3	B,}ٷ?3V&ZuҢ ?g+MxqϦ`!ƱB~YC$ټ^:k֬o|1HV>߁Ν;g2ʖ-[Q5  @&lKY_J#Y  &=#OE^dYNNNX,@(Q"1YEɤt#2McY-Pah'lߴvҔdgrHoޟhءd-!9b8BHץ?>_%Bu)FAGº)씹52Fө]3Fꔥ_oyxD\a._yuիW͛O~rFo/ؾyaҤI+W,))j X|Ap;s  \Q&H6`Q&I׻.AdhN<--kXsIe?
+P{ztQU߯(dͷ	aoJm<ހkRkIHx^uzRTk[nrW:_,]4\uҞ򓟾k׮yG~'&6`ӧ-ʕ+zɓ't?  ֔20 `,C䉢h$IbY^Qu:]P=$~'IX:1fFeZsSԗ?Fd%o~Oz{͂ L:]/+v]4ZmOwGgs}٩Aa	!׮41S
++~'[;.0S7pV^\h36$$MJݵ*dԩ {6~~p8*++C|  2=#aGӴ,
+<aؗFeT*U pݲ/~nV8q	︧'8U#R-o)|J
+:suՌeR9!>)=vSҲ/Y"Q0y{c6ŵi9ٲeKRRs=	͊4-L8>~8q3g\`Ann^gu c<UUU˱+jkkC2z  >,>$IR&FJt:eYk\cyd0FFeYiBhB$T1qq:eOvzMrXѸU%^Atww%49)>]E	;Sk+Yӧ(B#rXֺ6F2Y'f~,u#8z/''[Zb!dKL|뭷vIQԒ%KVXaP1  f)yB#***~=  c➑GӴ$IVeYYu:^V+k15D(02~Zj6x_71){;x2Xݛ\._fW Ob-IRggs_y!虁v7eY"B'K^=p3D~o-HaRd=\ݻzի?nn͡Ÿzݻ?Y񢢢x hX,555k֬QZohhXKY}+]{(B qSfq**>>^e8Hӱz!:Nx<y{"4שx^!=\󹟾zij[ _Au!˞	h?V!Vs#X
+Z[ s,Tb^<9;RW]^ʋ/5˄|3_2rVlڦ-g?~\iӦ! uJtQBA^^^>= @@El6+9UteuO(2vodΞފ'VYRP>xhk"_Jh|mҔg?.q]IHx%zK#Xr?6l,T_?\U=?Vzuuu XbgO67hxڙ'n
+
+.\z  n38>  c:)q .YZeY\#oHEQZ`0ȲzEQDӗJBOlAW{vowRSs7xy^3){]%Bo$q}QNzR_29Ɉ9joٹbŊ?Xj{{g-%/oܹ1++tܹǡj     {FEQu: (J4'*_zEӴ 2QSć
+g4jVy%`\lZ?C'|Zn~m'w[G]btow7~SQ8W	7//Gsϋ_rt9glp%7ov8re[z$'.ϗ.ر֭['O...5kVrr2O  GYa=b|>|K </&IJ	!^c_ahVT$Y)£"p,qLo3#qI__?NzdV^7w?o`)}ysubA&۾U#UȾ~-?fg'2]//֭[v=pl$izs]^/\fjT h+++-޸q.(
+	> Xg)$&&j4V<0^Ƽw#Jzzz<d-MPSt:(J]]gOlF'~{,k̔1sUuS,]:oL9B4Nԉ߽b"ˣ^e۸{g?)_l5"=KGYhїzjAbzw\mm{iii~GWZ5qDF Ek׮Uвk׮l=  cBGq\zF0˲<32eY> ABSL$^edB2`yk>HrdSF%EHw)Yz_rh--gN51}cG>V|
+.I6wgΜ1cƓO>9MC[Ç_~=))i-@ 01\6l9qb!TWWc 0!yE)S0hAhkkh42;
+ݩhQtFQR@̻=X!8^BD͍?_e?TSݓ?|9)
+?Y(nw~%ɣ!]zOygoӧO0V!Y~7<ϟxӧT R:D,B  0 
+J%˲d
+]]]$ꮮ.I"t9%ʰ2ei(JQ4)'@S̯a'Tqvd~RQy궸h^*d?ZŒQ,cׯ|9?7n%ؔ겲>BUuv,ONޣVs'$I˗/Ϗo  cD[vpoE0 `C?* Mӽ$FaxH:MHz}>,3$$(bdO߿vk0pw{as|	cߴX4#XȈYؼz^+W0>Bԍ)?ݻw?㟎&!$`j7mvVp⼼<ш ;[s  cKQRDQ4zaQEQ(Bi$8B|^WYT}ivx()2IYs{Nͧ߻4bm;B-p߾=?eK&osR):yfAV\|f5fˮq܎;?.9sx	ݞ|  8=EI+&  iHlj:Ns|j{hZYՊ$!_p'%}d:m=~o[G+#ߪ?{*so}廟BF5//3g{
+KzoJNl߾]?㟝6c.[o:t	͛jժfdd 0Ƭ_C՟wy 1N)iiG8eYćobAVU<)
+YO*,q:3 CG_|zҩk"yig3x5KT!9S[A\/_͖X\WlǗ?ٶmEQW)$3Ӵ:s>eeeeYT x{Ɠ <pG,T*(tvvvAY!4{Iz~1ͲtoZCˢo=O^r|#1?z;.+?/f$?g2/+1̇|^ڶm[zSn݊.\aouV9sE͙3'==C b7l0g6.--l74[G/Lmmf F➨(JeVq||x)tWJLEfkjB"8U4MWy$;뗫tTNz~_~#X~
+;Qu?[~OpA{/[ouuu-Zhٷo"iYmZwرgϞiӦ͟??33SRn  ƚ<Y1+Geee씀&\eee֯_nݺa$ 0D$I4MVj@yeebt Pf	>K'2C}$B~_ny:Cm\gUoBZgh8cT9j~-?|z\!>Mݯ˗/^+2c%KzٳwQSS2eʔK! x(n<Č(++#X,rݮtz]UVWWW]]MX,֭C"=QheY5iAuC$Vzx<@@&EG,r]N.M>y{&O0i<v,d(ֈYy䥿9UwG%xnjj*))gYr.Wl'ݻwԔQVVlٲI&zT  @7*񊢴tT'ND+++S:"!\ ZgF(4KĲ4-F^Wt1Cu`Pk`oCz߽mזԞ-OU`i=/,B)p^_îٽc˖L"ƚ䭷jll5k>`e7%esG2+33s˗/>}: Xf'{UYYd=6m
+zFb;nWR	}  л'){%ؕ% ļu(RB(0{>Jhjmo"S*j(x/~΋}hP3re.U}FX?RL0S_O^'fSg6~3f<3%~?,}ܸql6ϝ;wZ-J x>pՕNRl4!N]]]ee2#i D(2ET*A;;;AL"[ѲLt0y^&,k{&&W	JwSP٦l?BteB%Q$RHߴ|}mS^E+4z4M?p-)_!dqC
+$|o}7w~_LeI)T앫u'o{O>t!OџdwWZaΘ|Ww}̙3fxɒ%  	V[[]SSrBK_SRTElp_ĉ+ᨪ"wfQ'Z8Si.d24rhQ$,?l2!DEt:$qF}4E3xTD(eY/0ؿfdNM5a(x>:t{UD);	="˄E
+>QnYZt'?7pe~xgwkjjRRRx8MKL\gYoRAع{ɓ'	!˖-:udB  <wM/!>%goBm+:;Ųi&e]kVUU)]~4Nuuuee2p :=Yx<*h4B<q"ұzMqJbFBi>*M\8f^4D}ݴw
+dh&ʁAd*1јbT4Pû4Mt*ڮ9Dؔ߿'x99OHq۶?~\̞=dƌVU 
+um Ái'J׳qF%Q][[PUU5YB3Y,6TTT Fht4M'%%L&eANXE`0>>^)	M<y#lFz O$oO#^N+9;-ݓ|iK|#r7sl	k>1{D}	X6y98|!~f3Ħ`%d۶mOs}
+
+P1  !(TWW744G(AʴJǟ9|#`@-~_Hhj27l&N(|%K$I*J)!hEGhn-ҲL$IfYbřV~B5+Ӫq#jkwegYzɨ	e=$|!.Nk4:հjjrtte,%IF&&ltOng˯ٵkF)++tnܙn)$h}'dY={ŋgϞ xhb槲RcX	iaʏ4v="	 >mذAID{UUUk׮X,C} QiHDFAB0@%j(I8Nz].$kPGk>h:}^t)[i+ʦZ	7!drnҔ))&Ӈz3@TdC8N:s.ë?tƲVe͝3a|	6FEOoꯪlٲ<_;7=6Y_X<wȑ#N`EEE 0SXro15444* ZKښRʴAׯG0D(\eūTVK|R`0z UWzoj ILQѢ(B$IEieys'Pys.\gYlx0$<zƹ	!iqٙiia};:]`0r!EQC4q=gfXj\41ӛ?׿;Nsҥ-ZO>>`xرtuu-^xz  rA:wfC{WZZ:Pov"4a3 "4ޢEYyY=`P$eG!(JŲ,EQ`vb!,!j"]y/u._Y;=?uꔔx^|{x(Jq99	Ƒ-̶"L20#!j_uuy!ӦLO35v:}74BT*frnRzZ٬EYץm.=]>b#!?]{뭷zzzϟիgPO,FsE͞=;))I>  *--X,C{m6̗ۨ{ 4ޢ^eNhh4,|>%'$z}ll$FLL8{QDm~ܫ9qP}ol:mj괩)yyəQ#8^'xj4Idq}V&ˎ2gm;j/	ĲiSj6\vx,&f	М>C'&[1MSMM1=-)ɨQs 
+>sᆳZzz|,7|fw]۶mknn^dɗzŸ6/Oڵ6mɒ%K.QF  r	su)S,]vƍw^zÆ_B+B-4M4hFc Po_jZjJRB"=tr+㟏lrB4nVashԌ8$Y	8d[YVI]c8?v|mBHvuvafJ)<ٹ寅V~aZͮZ_DNRXeauSJŔ.˛8!?=yFuo;%٤pxwG/ƿw[ZZv?>]X[m6}Çm6ۊ+,Xk0P5  @=PYYY[[[SS9DDȄ8:CFPeeeuuRTB]J00$Id6	Ǒ@ ŐiZP~?jg` !dyeS䥄2B;].^0ԡDݵo57Ȳ))Sh4iɲo'-W\ӏ<v!d$',sŀ ZNۗ/_{駋e9fYbںk׮Թs# {eX6m>oxܸq2rUUUuuuEEnWB%	
+̞ͦlp8֭[gٔӫ6mtYLCCCNN2=buuuJ&:4ޢHRe6YAEB$eiV&q8<˄ֹ{x^;y?ݗ	!*Sdο\,Ikmp{}AABfzuj954G8|:!$>^?(+;>ICG $&Y&սOMQ5,Qs.AhJM5OKNJ2v	ua^ә3gVZqJcӴ#)i۽{˗/[%K,Y$??d2j   $4kn]gkVWW;
+X,555J<T]]tYL}Kb
+  DeYIq!jY,2M;f*`𡭗WC^#$%_=s+7Y?8}kv|J{ (_G鴪ɓ-hԂ}kw^jM8!>;+ά}w!6[|aAɨL:G8sө23,^7uTI1͟_zܹsiiiV*OHд`uY>Ν;/]d0
+͛Q5  .4kxOǊæjhhP:(+v{D%?v=<C>ү'N(CB=zv;c;D&IzyJ%˲r8^[kVyVk4Cggg EQه,"z_V׻s\w:#_=6W0()yaK^eYfʜ>xֽBt:Ǔh-.ҥ˭oE15'ħ=Đ/Oo8p ;;'lV)&Y!-ؼyc8+**Zd̙3   wT}-Ųnݺ7X ˷GH `A-4M|>V+˲$IJ#LQeIl;d^VygFYJƑ\WóeU+eH\w|KnBHb!32)'1>^8}\~p))q&&Yj8A!$)8Ǟheη(L7`
+'s?ttk$B秕.ϛ7u4oŽǏիW~SGGlm>SNB
+
+
+/_n     'ZEQqqqoߖ$IR)QK"$B(T͒fhCU)</wψd6k/-M ˳kϕPˢ(&?3{|[B>nUTyBs-=Bnn~A$ffOKU^sQ$B:}eYeYieǷٻK?z,*79xa.&i265'c˖-{ndSccl4}ɓ/]t֬Y    qhE0,[,X8yEIR{0ǩjxJ9yWR1sYϮ?2g}ެ_~qq/}~0?orrhNfn%2MxuN<|:!j=2wBFF\_g69zb6kg̴{u0Y+m;(z7Nhiq^~FMS9Ĳ)Xa|hR7NٵkM˖-Imm1X08ԩS<^z޼yàn  `;a?fa& D$I~T*F|/t:3U`
+ *a/r2!;dAN=;{gܫD'YO}vQFz\6\<.7\"_'uo;:%etK.yڝ;܄ɹI3^̼^ƪ`P{<.Oh>iBi_\0)'ohRO'{=}%%nwt2'v۶'NxӧL6-!!c  `#ү"6fUTT`Zt=})kt:B @8JI[S)'O4ql8.PP] G]yYzմ)
+3SCIϜm~OG._i#LI[/Ώz!dԴ8R)D%NZ}ݗ	!.̱%h4\-W3gMIja=yi+mѰ&ddfX.'D3W.4|YlJo/w4-ƭ[ٳ-##cѢEh4  Id@(Y,RQUUUTTu{ zAj(VaWP,ZysI2&i畕zvz'!$3bu߈tR+ص
+!`P?MEl03=N/!DT*6)
+t$I޺|ӭBȤcxs{+7	!Yւ))a%IcfNOQ0wt;:O0(?rF|~<'4/ªU==&TN֭[w>qĒyhZT  ۷oB^x^x'^%%%EanWI֖_ga'8x<,AϧVŹFs&TJ kKC>׮=Wm@15Ӧ*HЄ~Ͼ.BHfeB嶮n!EQFB,V.+ZW45=?u^*[wf%O<mjAv)Zt˦̞дJ{jku'w-Mj5;sF:h|xl߾3=6ECӲZh4ٳgMMM<#<Q7  0DzV|ʢT(QiinG@E qg0z}0t݁@ qY!<V_`s[":;ݯmCTR!wRbfhdJr}}gn]Ct移A
+II|n2f*!`\9sbVam:ASɛ8i9vPEӔ٬z'0iJ$'hᤶ7N+WAv659E>	oonݺ͛ӦM[zAZ4o߾͛-*-->}hD    @~w8D,9:N)iZ8!4MIZS.SEB8B.n!D	EQqqڬL찫srN!e`P#R8ve.KI6T^_<qQ$SD\B%*44M}ǅMBȄxi
+_Ջahe-Elov|9z !bPVX___XXjժOt|8LӧO566/Ydɒ%&M2L  ~&+~8eꆆuT?D7LjZ$J0 n6e6$YVT t:a !ⸯN3͂ 4%I$ɶ	qqßD7ΞkvC`~⅓z}{(4%˄)S;宎qx#!$.N[XcKP>sREQ8&ZꔼA#Y҅33!V}j)94ߡ/^lٮzrss{Ok[ZYdc6ѱgϞk׮Y,e˖fܯ =nr ~D#RwEE2<Du<zVv%IbYz^^1.	h4^n6~0sȲlkwq#I2EQd(J#x[/!$wR?;tyG,qAde=(}Z}!$#20#ުuP	!IƂu(\mWNTR!+˚pO1~Aջ{ٳg?%%Z[cZkÇ_xQ͙3g999  þsW Hn	!v# (*JEQ~OOOWW˲rzhJVFJ $Q}`P 8}5j
+(JmmoE-7;{c
+fOrwWgzeĉ3)iEt;xF7!DRM4З:џ:{muuuO=g'N447"QfM:u48  R* cfS nH$eFHX)A`Y6,$I<>cL&mo_	MAjr9{@@NeA.Eox=eS"$&eUk3'*Le(poxI1q)PG$|zk;vL/]9e{1̮]=3,Yb322jy  pwCi)(br'!DVs$It @bLӂ 0R$I>O MS^o04$=NߥmءFI)%閣q|&o5츳)JP/߷ڍ.BHzZܬ̄xCFrɲ|rmܷ HLˬL&iK8nҥ㻺bfNIڵk׹sh6mZIIIaaarr  
+cJ!FaEQ<e6P=O eYbhqNy֭[,2?hx^d:ǖ`4Cwgk\T$eodIy^EAǥ4uCپ{px=`uY%I)y^{K[^#h\=;;˪ph޹ris{h#2ϋz!$(c7~_j]ISŋrx06N/^h<ݗjݵkׁ~n_reIIINNNC  0 < GQQQNNNNNNhgxx(RVh4Z6<ht:(P%Fy^plLL4AIy;=?-3ӒbXt(7|Gw$$س秙L.ݥ׫j6dYnjٶ%s,!{+Wo5pxan=+<ww\t8|II3믟<tl!d*HO@ɛ54NN2NOKJ2X-zICQ	:/>|zݩ~BZ͖-OMM[o%v-++z$Z}ӧO;ӧ/_|Μ9iiiu  {o	 cbٴinxEEEiii]]ڵk1CqOt)kru:EQn"tl,btC	̌:ji=+ۭ(uw{zr۔似,kY,G%˲{b랽W}કS;Hiɱ%\P:hڵZ򼘚bv-u'.\^(tٔ^ص,CLϝ>KNOonw79yTK^oΞkol~HN2Θj6Ւ$wv[n;/]nr]y!EegYW?{=o:ɯU_ٽ{7˲O>gVp&ƷO<x))))..8q" n> tI+**!8!=Qt:d2uww+h<pDeYb2\.|Ï2FxDSSHr9}Ybi$)Q}`OR03}Vaܤ5,LĄ[%N1斞7N<)/Lb^pRDOAnpgYii/\l=pA	fH>k(7nP
+sEД(>_Ct:՜Ohcif^wIzm:::>񏗸too-LW.?~#;;{ѢEOOOG  #REpoب^~}CC<DW h4$B~{{{kkk0$,b:˲$x(J^b4M\~o\n([>zhE7sF?Vje~
+Ţ{d^dSkkv|>>b'YI9KL~biw;\Wt*Kn助s-qЇ HgϵPIH0*X(7#=.<
+'`MLL4:`Pqz{._7TI&54IYKL7w٬jnoR۷oonn9sc:lOO-ͷ,?k׮ٳgO<h4n  ݙ Mvvb?D($I*˱St:s$I9wmFEB#z҄H"hH[sL;yfw-͛^$IMk\|~Bvس>KMNN2MN>{,+yQb'LΜ>%/y4s?=7##n{AA3ZUaAƜ,QsOS,[+lx&GW'ȋ`4h,VN%Ϟn8ܴ'zז-[n޼9iҤG}tF67b\MWsʕ痔L6_  0R,Ď> o'p6qCqOTS,+ zh42z=8Ĳ4)sEvttY~X~ga)ySDRVn|ۂ?-5Z@54|z܄1d\Q6uETc)'_vZaaO<	Ev-k]f֖#O2b4a ApnՕb0qOtiZV$I^WE#cZA`yh4nۭVYejw^޶mӧ'L*)Fd4vXo77+z-ZTTT  FН=O2rA)--h.gD,N$),qEQ*A GhAz}zzVx<`^" SPHw˦m.]_bEyj96tɴѣ׮]cYvƌ/6mZ\\s  RE7OYN7(S&QT</@RM$ZmBBx<6lw}O<iX>}G뽩={Ν;ǲY/^<gΜd=  [D ц'0Yi[$S4Mx3/b[4#P<ϝم9dkߨ9rF?c19M{4K.B.\8eٌ  ^D4-(NS*J6$-&$ӴR$	!@v˄w5}|[/^1GiGYSTIE?ϕڀɴ%ܲeɓ'i1cƂj5j  sS ) ➨e70*Q)08+"i7E-Y%KROۯ}y-\ngee! `.Q}u1+Q01]0!DL&Bb\-Ax<`00 2a^9sΞGg{<LOOԏͲ|||Mݻ>eY5o<ͦO  ( л'DQ4L$$$dddtttDQ5"
+YAk4x}{ L]yܾ}`qq񚲲N't辄Ν;;vKJJT*j  %x_ qO/~Z0(EzlZw ѕҫW;o޼իW/d=^ߠV9r-==G?ĉZ-  bvW  0!^WE)c$IE	:XuG*JtnW5}l	oݴy掎fanmmMLL7oޢEu:  b   %_ \.;30)I"]׀^˲DQjg˓7ܛ7ovZVVViiz=ogYo6ܼyĉ[nf^TTm0p  6' `Bd2T*V+rOOO{{(JjcZ4ݣ>.G4	 wt{^;\|f=XQzhZ2ZWϞݻw[㋊-[6sD_Y  VB+sa8 X=<q`PV<*I`X6Y!$e`PHk	`(|7{lr̙'|S99VDвV{eΜmm;w<| SNMHH:\  K$  0wOt)Y8El6k4VǠ`0(	i4Z-rw]мk{{sv"Q>2-޻wիWZmAA%Kf͚%
+  /E& `\D,˲,'NhXAi(֥yט8ɤ,&4!j
+`W׸}˗/'&&\r̙֖tГEj]G^v-11qٲe˗/1cFBB  ] 1{KGCtbbbinnr|>1.MR^t|>	QB!! xB ow~뭷qO?Ψ!д#>ȑ#{=w,˖-+,,fY| hb< XBy^J%$I$)}(2Z{N|mmmfӴ@a0PYzSw?%e?7p䑾mٷAډs)]+o}ߋDy04>2PPn-C˪oݺСC˗/~ΜX]ѸO>|ܹ`08yd^XX  Fz   yCGGMʢ.Izzzc\Ib$l6\={9raQoKw8'/wu@}crDc߽)Q]_ /"=й7"	FA82@@6P:T;SryЪ6:D,rnܸq@ stvJӮ}ɓ.+77xΜ9&M8  0w8	  c(A,#˲	5ꢾsXRv^;޾oG{x=#x!޾G{*=dXRSwP=o%fY[ԔaYl˲;uʚ;wnPTh Qtgf, 0!:t:0Fζ6O9.$ɓzԩٳgL&vĈSҶHO4@ #`/{O7 bos2H!&@dd!xz!TqY(gҥX856Ԁz(!wvvNpiӦF| 
+
+G  =/Y9$bPx4NGPEY'̝;WY}ȠgP=e( Co2AP!,c${Ay>"
+9M_j79/PftkDV;ʲ=.6zkZcǎ=ؘ[RRh"U  uwp&  <_$FI<ZNJJjn[$bVSv{1e?aDdtF꜌>{iȉٶ|T Ν;|pww	ϟ?o޼)S(sC  N '-8Z9)))33p3wrIJپ=W5A!!.XvC?ښmۋfs,?-     A'u2H0t^WT͒E`hp\xС7553f'%%! ck h62p
+-t:Y[0Zk8?  L,|СzF3cƌy$'',ry     7{NRL^x'Ht:%*ն͇ڷoߕ+Wh͝;wn~~~jj0  1lB 
+?G-'˒$j4JykkcВfɴeϞ=.\8.??gNOO.  7  <=Q'ZA3x!<ϳ,+ȲYCK1wx<{=~8EQv}ѢEv=;;[ =  :e%IZ&<V5(8E G/MjWBB{С.I&-]dҤIJ:  cEQH|  t dYVղ,|>VN^P cVcA裻iرcgϞaڴi%%%v=++h4 ؿI  ː5DEQ4Mp8hy>z^*)xдj<xYϗ7sl63  ].N mv@0h44M4-IF`Ce%^Cuvv̚5G͍ :  e{NEdYfY@ v%Ih4@@Rp yyG9rHkkkbbbQQќ9s&OlX3)  <@ 0a0W1CӴN$4$(q:]mmVk~~~QQɓp  t x081FeYZMqN"j4z ?Z32ޮ۵kWcccBBܹs,X  8}  2=Q'IZAhZ~0d&|M<DfѣG:t5NWTTx3fh4"  xP(?QP* "˲0u`iZl6,KQZVeQ)I"j5\ Sfɓuuuz~֬Y˗/5kVrr2q8I   p "͛7/\cT,{baV!z^YK%qӃS0^IZY:tFF3yYfedd0Y;  <h]{ v駟^pabb(CoDefJe2F#$ɲz1qxƲVk]]ǯ]0̙3KJJ
+     qIII{rʩS>OL2eϫ'(R&h4<{<áR\.d2Q<Oh"4![lm<CϢ1{vrעFl<)郼nvdC!?`zxd~r9P 4-:7o>|ɓNSzV\iZZ-> A9+2sDRȲo8pॗ^:{lyyʕ+qv~r:&aI>h4EGY7kw}={w{t0n6+䦤z䮯kㆿ~kax]C7[tXH@~W@@)
+9^/<%qZ[ZZΟ?o߾3gtww,X ==  2C  S(Z=X^^޶m^;v\rϱ{bAѨRnw{{{\\\cc͛9cFš4/Ek{uOe7C#a?kD^ PA*e([3HI"ÍS/ARׯ={̜9駟~222  4CE34@}*QIǞв__Bi	*tG:"E<t_=HB?)x	m=Gty0b{~JCs\E<W$_ ߛ~{ݾUI8om@gWQ##%,C?~ċ:	]] G{fWVeBQ}PGQS9#.A~@(x=5r:33sժUӿ/jjjJJJeee)+!
+l6{<vB=|pV .;@$zyjT>rVcD!v&o.轺1ÎP=b)Ryү|+)))< qpgK	w7ٻ*!)IjQԂUؔe9HP[5"lj7l#
+ַ	. 
+=K7eoC: 0
+oGl3+?dQZAN Mweo}k$"JTW&2CtBMDo/?Uk?P7(:tKQT?־갨#r/~~_])%|ɝrZxf+}Mk_ZD*7hWo#qԩg677ߜ={60{`	Y[[[ڬV	蒻_z1%@)Ѯ`Gi	mg2q0n[xիW# !4啶bNTfeKQ$zc,EhaIȇО#n3dnD9	{eh:"w&,%T1%,P$(d#0T(p	O"^`UD^K}+=<H`zK7Ζ[;:cpXpd+YxoE}5<e˖SN2%)955cNd4vF/A:MFea?e^3\b 㪆>[>FáuWdLC=JY8֖dɒbA  B_y~?8! ꓟdnS100bb6}:)BDQTz5}+۬Fqn~(7J4O7|T`DNg[[[GGRnn̙3fԏEQ۰[CyAJC6A}f=	^K; )>0jS{aT'xI=8V0JX,p xѡji6^Wuzj~#ZM1PAC̆~{yD+ܗG܍Dcw>[6 H۾m7G wh(XD'A.A6hMէՇ{8COy$z5$ 嗢67n<xp޽ׯ_eyڴi%%%K,)**2Lfz=v].Ìs}vF|R/֑Ig#=@ѭDJj[>     ___gϞ۷yٳgXbSLq'DQJG6·olG5#S"жQ?X4MT*=     cJooݻ_{Ǐ~ͶpUVqy{a       ,kGMMM]hѲefϞmX8w       g]]]~ifϞ?n\     Xee@Zn !D@  IZAq     ܨx4 Z     WZZZZZ  
+=      R        `<A     0ΕUWWQEQTYYY试999eee{p8YNs]]]ıQ_l>kkk׮]kZ-VڵkG[[[f͚ЖETVV*eXvmߧY
+W2      <݆b	KKK?UTToڴ)|
+;Úc?P
+qDhƍZ,ДF֭wʉ'7n܈+
+     x(8ݾiӦ'NlذRYYg>qĉ'T%Lee[nן8qߞ5C7ģG?T %*S]]tޱX,6mV7ҥ=	X     AnQ!flv鐰7ZJBR7*HNNNCCb"<N	uQBUZZZSSsOG3 jB֭[zԄw
+)**8򬊊A 4     x544~Ts***³ZMĒ^JD9CGYlGO@+Snݺ~rNhc%{O;     "b RD4CJI,K6N Y ~!=@	NHh?\.ZI`#`<A     lw_KW]-Rv.( qq     C-4M++**֮]᪫SƔa$3{      jCw2㭢w%DʜЃQZyQj     xF<EJ!w"	xdG+
+;ʖ% =      R;Leetp*|3QYYwcNDTUUчn+TUU2 Ʌ=0      xH)s;2%*++A9VzhꢢG$)k׮mhhhhhTIh&k*AᨭOC#ɛq18     !n:eXvj-**ZvmDݾq֬YoJaOUUUNNNNNxG'v}ӦMJ~"ZVV~^kK     gM3"oܸ<4i4b㊊
+YiiiEEjءb9qDUUU(lJRWW>PC"/ oDɲ       iRR![|ڵUUU6s     E~`M.      eX7      f      0)SDL<f9ZVQQZ``T        
+       W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        
+       qq              `\A       0        W        +{        =        ? 27Ƣ;    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,374 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 550.8 248.04]
+/CropBox [0 0 550.8 248.04]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+550.8 0 0 248.04 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+36
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1530
+/Height 689
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x\uq:XdaFZYsS13,PP45R!Sdx2TYu8: vae
+E<\wo6&6^.]6=                                                                                                                                                                                                                                                                                                                                    *))mۖ     piѣwѶmo     ຮ]{r-7twXXիW,      .~ڵ-5k֯_?^o22      .ŋs̹;onM6-[      '|׷Yf/bV铚ZVV%     p&8p`ӦMۢEoo	&;wnvv6W	     Udee͛7u=zXt`-[޽     nڥKLzm۶^^^!!!z~Z={vVV
+     edd1UVFĶ=K.͍lӦMSRRJ+p      YbbO<cǎ1	-..>zhPP#<r
+\1      gW_&''=.]ZRRRPPcǎ۷T     8ҼBTWRRR"|rFFFvvW     X=Sse      \4J3i     i.     Kzr      :9       .     xTt5]E     ĴGlwsr     iZR      gT*=<<|||j0n     SQT>>>bL&UT6      8@*PT6wOIIГ     (*      iN.zr          pNAm{      `|Lf1/m{      `f`d2;srѶ     (
+1zNn#6wgN.      "F=i&00)))     p2L:,a      #}kh"     pRcF???;0J3     SFiV*F<Ũ|`=      NEj#eWV;i     1~$lPپ(͌     lzJ[aI{      ^t     T>\r\V Ҟ     g1bOuc/#R*     4AROUGL{CCC'N[_ZT
+_}*p"      wb0j\.Vm{ĴGTt:1Y     h}T*͍sfcO.     hZBam{2Ϗ     4*R=2LEǩaAӉy     ā-&CRipc'lNPD    ORUqrm
+L     IOC     HXt?ߺ5if'E     'q-GJ{sf\     ИL&0>ɾej58     h$zR4}T*-|}}'WyErePF1T     K3jZ.W%Giv=7jI{     *zNvNgsqg놄GĨ>     ]iZ~[UG$rG.     %ث;	seJd7k     EIiOBضFiIՊTQq{     QZƹԶ%qi	>     pc$\bSaAPT68zr     =^o=0>vZ\      h4HN``RT(ݥ=w߇z+^     `MTJhc0rSVkswmKÿ)WNO      d2T8BSqN.     $Ħ;vFg-3ضӓ     8p'׀!==     I///     q{*h4s\=     IT*iu^o#N'.,]jCC     zG$+H++kSNO.     |F8ͺMv&g/mi     pVz^RE.{%''      @     N9     4 ѨT*mU6}b     Ѐz[Z]CIi=H{     @C\[!!     K[O.Q(:xzzғ     4JgsL&ј     4,1Q*u:ZG     !=ݸ$5N{     4     NĴlC!     nӞYJC     NSUͣ%%%=     )'i     pד0VJ5     '$="큫3*JPhM"L85U$Z9   z =!2J858f]=
+B<D    mi\hBVuT*U```C=    ii\.W*1_
+1N.h2i    Fi&qEFQLJէ^oBL`
+Gqڣjv&   z#=޴!q!b#Mm 6djգrJ8J8B{ri+=    PH{H{\ES^ћǧ]1TŌHeoVsr    @}JJJzrG&Yԍ	Nw:N\)Me    JNNef"=N
+𧑐Ҟ"d2Ŗ=    ri:% vPҡ{H{    Eѓi\.nӯ q)
+%u"    BCrij0nǍ    'i+"`N.q@U%    \ii+"푈=GWU戴    \4niiT,H8NH1?2i    mgVT
+:F???)bSt    \ii1:=^/(JV+δV
+]FQX.
+k-ͤ=    E㖁OJ{G.ۙi|ct	I{    e1J3iiiU*\.4T*3hG7(
+ZmLKFXigM	lG    @i7=H{)hi     CH{     m{H{ܒV"     '      wqM7yso{|n    '))I}{Jˋ"{"PH{    O^^^.HCCQ=    6im{H{(    H{("    "u"(    pyPu\    ࠴9hCQ=    \==E    n@jø==E    n0J3iE    {`N."    K{Ŝ\E    n0J3m{(    ܀4niiE    xz2n=(    m{H{(    ܉4'iiE    0'WW\    P瘓=E    q{H{    жH{    =$&&Pi    "(    p'b"    w"(    p6"    7 "'E    zr.!jܓ@     ض\(    pmE    ۠m4Si    e "    H{Ÿ=E    nжH{    mzrPi    '/OOFif"    w$=mE    'iE    [="(     H{(    8n=LQ=    @CѶH{    Г=E    =(    p'mE    =޷|<=E    xyFCCQ=    Ni=EQ=    Nim{hCQ=    Nim{hCQ=    I{H{(    ,'=(    ܀4;m{H{(ʵTVV8    L{ECQfff&&&fddf    'm{H{(ʵҞ'xbĈ[n2L    i4S=_}U@@@Vt2o޼wu    HIIafrd2رcԨQ2uLHHx"o    T!((##c=zhڴO>9gΜ~ڵk   hv%|jڴɘQvnջcJa!y$,63Fžzco_d}pq~twIۘ|,`~UY)֝w68ܬn}I^WY+UX,NXx*-n<Z?vay{ۿOlôo͏i}>b3exYNvW5Ĥ
+r_dob[;ܹCII	o     #<ҦMVJⲴ#q{[no}ii)    {tMM6]w%}*⏤ekҖI_#X]oŽ̏l~[Z^/-6OXlic/gꮿoi}Xc'i-~{-6yH뭯{Ic@,N5?1[hmϣ?|Zl>ϑYba},.筷z7,r
+    }=cw_Ϟ=K_o-*,_ͷşkrҏaÆ"Zy₴^ҷ ѬͯUeiqA>9XjqpY̿5TJ&2o/?㒾
+o}yͯt|g_Xq3̯AĽgml},pb[!67-m~OuФ/F'C>yϠZS__l۶nYC[n-,,}   @cuQ/\xٳɓW|	qY|{iJEGpiiGCU[,>s3y6@:qY|negvX%K.xm^ʮV֪UI\^UP3eq}o	GsI[<v^_S_ҹO;wT*ݺuZhѻw>hϞ=&y      PPPplӧOXX^z*     \|yǎAAAmڴiժU@@ܹsSSSh     ZL&SFFFPP#<ҽ{ٳg޽;;;     o߾rʔ,fZ     pi& ??                                            7SRRo۶-77     ȑ#5ko>.     vZhhh-͛/[ի\      ?t[n曛5k֯_?^o22      .ŋsi֬d2Y˖-8       !!'m֬/تU>}q      \dشiӾ}oR({ΝU     pYYYkݺu=BBB~ooర-[޽     nڥKLzm۶iϒ%KzZj5{쬬,     1bDVF%,'''^^^K.͍lӦMSRRJ+p      YbbO<cǎ$mҥK=#\2W     effFGGW999·)))bZRRRPPcǎ۷T     8ҼB$|kޓDXs匌lS     oo1)+     H{      ܉4Jy     QAlw11      HL{z}vzrsrq=     n='      RYC     TT*G&r-#"     pURlΜ\      NETVAe==      nq{      	      8'jl-%%ElCO.      'a0,j6Yml˸=      N`0H3L{d2YU'     3P(b#,zNgݶGX#mθ=      NEz	֭qM``i     T<<<d2u#nSYC      #}khZ      
+qf)ޱH{F_UaN.      g ҬT*Fy#,Q>RRRh     <;"qYV|ee3n     1~$lPپb///      U*\. ,
++(      NEisC=      NE%jub      b1bOucqf     pAROU'11     	Z-˫Г     FGRXJ{BBBH{      VU(7L{     iIz|||d2Vks1%     p@s!Rvm\.%N     hݵDgsJUҌFv
+T*W
+C     P{RxC	m{P1Q*:N2     8E.[aN.XH{+:vpe     p4q-G(Ͱ`d2???     F}UGlIO.XaAӉ#D?     zSyRln(ͨS(\     `Pri4J3=`AL{H[    z^RYɮl"=     j-mUeQrr/i      ,f`$III     T+H4Ӷ*K{]' r\(     q[V7䑈0'l98p=>>>5  @U8pPTqsku-nr G.M}Blpfضˋ5ȂH{  p/Κ5KnGˢjzPBoRIkmWǺ̏y],n|}|ql.[llq͓8,=#]Uݥe/ԩٳ  zz.a||gN.Ԙp1  uٳg\i}唻ܹȑ#7L&h #e;pBa++]l(ͨ\.c\  JqqV}gG~$t=nb?Ӣ"^  R#Jeц`0şV#XjCڃn6Lf=  Ϝ9ZiF4ʊI5|ꩧ233yQ  bSH>
+~CO.TV{**0n  5S\\|wM;sqqqF 1-~63sr >'{iʄ(rZ<.>8tУGbƜHm{H{   ٳ]ҡCR]VYve}z;Nu+`)mذ!77 4δ=   άTuԩC7KBz&-O}4*eu}%K?6:5Q7%W[h㒏MO/}#Eﲲ2^G ШT6,h'lqN.Ҟwo{,@ @YfMť:t;􁁁+W\vmxaAB۵*[cgiӦBDDx|aaa.$$D*_lvAojcp5֯_?}֭[;NSgСÆ.]
+ J%My؅em{<==I{?=I5H  Mȑ##Gl޼zw6VrMz7G}-EjSQn\j+gk܉carɵNX6&z
+cwVNRW~ù3	ڄ)$S|2dȡCv5Ue NEj#d|||5)7Ŝ\==  ^QQN<x&fژfK>ev)ǎĖEC^h˟jfoB),<)/K{35qӫFΟ79FvsP-KɣH>PO.yg O#Nn˙ :r-[(tK]4ꨬKW&n,~%>C2vUǽZQ:w؍?o{=jęS+BS?dy8ӧ=2|rI{:N3hР}IϯzId2믿F>  'U*U_r`8n=H{H{  SN2k׮wqL[}0wǎ^1RD΅SJEN:ؑЄ3FfR1(0o+9۴3
+hliPewloD/ߒ^\f. @e )**h4;v|W4y6he-]*TN >u}S#N֫B7䓄ٟ/u3Fd\u3gև?ڥm#L{S[AߝIͭF>qǟzb TГ *Ξ;wO?Й4iW6}}88$x<J訩%"kj?|-qYǽژѯ^ˍvr+MY>#6ݻGhI-[SOEFF^rW% ѨT*mU6V  `_YYپ}׾}ؤcr<[tY*M)Ik
+7:Id+IWrּ9Oi=_|6'e~׿8?JN\&2|r|K~uN{F>G`Sv~E
+ .MכO%Q5H{?ʤ===  qո;\'#کؤ|=E{HltNVMӊ"ܙ5jg	5̚92t>}{02\#F,^/xi8e]4?X%ڵ[b# K\[mii  1LǏ0a?q}k.'E;aR1Q	o]~_L(ʋ:q(}Ew뮏wOWDzgNzGz0 h[9ur&m߾`Ϟ=}ˋ \^Z]jP(u4qN.ooo!! @RPP |j۷oϞ=)UVL	{oOю;ñg(-6Q1 2nM1'^OݻkY3别qF~6bXEyQ򘗩p㮔z
+O-K+۵k'c^ ZT*2ZG  P^ј?\bE֭wJs`nR<%̥ᗳMTT3?za9?wݕpSa-kHxyo}1u2ȧcǎzڵkcƙ(J:NlS\== L\|ĉɓ'k.B۔V渜'!`ޒV}'xABD#3DefITW&^_5ݻw8szNe|r?:6Nħ_ɧC^ Biy7.	iiE ._Ď;
+wvL[RMK}0w~I(?VNX>sjUe1L:4-Q9O|@sÑ|~AꤑOLi]tѣǾ}x@L{<==EC hlrss-[־}g/JH<IGߟ^8U²(i5=*/~Eyk6o\VAsF>E1;w޽*:i#x3ڵktR K=e3*gN. @c2><`mۮݲkC;m+W| mrsgV孓֭K'_-|_}"s/D_'ɩz]֌3bРA	ߞeiM_ԭ[{n׮]  UC +((?ѣG!Che9.>AR.ƃMPڶ}tVL٣SSۑ|wX޺!lI/4CgΜ  NSUq{H{H{  ܹs?>]^ฐgc)B2d"ucH'R.~oJлrŋƊpQ筷^}:I&7b/ 7 {vnk80Ѥ]Y8zƔ^+/Zxr/ܕ(d>^f"YM]5IIZϯ^V'u(/88~ UJJ
+  ϕ+Wbbb~W^yE{lƥ1!fW^C+&}嗺>}-NI#|Guw3ѣǎ;  nI'44z 3LfzǂF&ZȚ+4[VtjYDI~YA(g[cfz\um؝޻woޜ^RwSZ2x?>| IJJ{r1J3ii ݻ7  [nwIudΓvEpbbFFD_
+7g/'WM8wՊ>vZ":/u2$.S7޽{w%%%%?? p\==  uʕz*h[Fvڊe*&*/ϴUY3~+5#hG{_A|bR>sE7dy!2LTfff~ AECC p-eeeÇԩS{Ky_\=0gȈ#0;_;2~%ILwl>WƁr5#G4h/cRM~gL ГZT*w۷+6:q9Olұa뗮(+%gGjs/a^ݿ$ؑ|v޽pI#y!<̤I; AIe0T*B4#j58p;k~ʌZ6	t+W+&Mshi)Sޟٗ	'k`&MvqI~έgc/]`ץ)Su3]W/+_  \=mii+2JңrhZӐdzW=(**JOO=zK%Ce&_tС쉼v%h;mC1=ŸiҞ)oz9gѪ:hsًZlddd = !OS|||
+ZUPT[
+rذiow}Y@@@߾}-G`޼ƄS&SQ1BF.߼]f}wU[-[^k/ᅖ/r^>K.^ .ГǵHA\. 6i^66+SVP-gΜ3g4iWjΜDkS"7D/~rjUQ^orX𕾝>PZM7CO=Oוsu^/}#^hņf͚7M	 \.r=~><*JO=TJ{V4
+G͸=xqxPeee{<xp׮])́3m^3vb])kK#zyWߡSpgkw>:uߋr.g_ot7׽{Bޣ FRTp@H{H{jCG&UUZڈT*<_= "'''**[nLG`mxG1yuԪ'jށB䰠o,X||ՈEELjY3<gE.Q4M/\,``e>B8z(= %%%i?0Js@t|$!q闭xW7?2LZshڣVI{ ?<}vM1?!q4>?(duLk>ungXg|SקNe5T]ɹG|^\wټq3KNNuQ-Ҟ]U=R7g^Ab#|tJBay#ɪ{ ݻw+]tR<٥C?kqDuU.BՈ+6Lٝ<؛K?wȿv/5xUBzaLו^zw(N:/ibJw1_oNZo7-VӰƕ=>:Ώl86rO̙3z~߾}쀆J{\bN.Gi&jliOvjQAiꊋjuV|6N[>?49t8꼶1sAȒȘ6ż۽{/?uSD^.k^g}vMŤ,YҲeK=`<CVMe\_?B=@S2nUVi<Zo٤I>[CCC3%,t:MyCC!NnJFôG; ܹSl!䠴gSZ[hvN[+~47H\>j؛/qS-39Z5R6iF/i1ۅ7to;u\ƺSu	FOQڵ/VGeff7))).s==/PRJ{׬4GE" <yRSN»&D/mի	csukV#};wP@.UN߭[(RCUiAܲ0eӦM۷ooy)	PMZް#===[hlq*T܉r[f͹s?&1k<Ƶzr	o
+n0 iiOӞ<n5P;vxuaÆij^:],|)/ZGPaBko@>{#^lUǏ,}֧2Vq4}iҤ&&ԲV\;
+O/#bO/%UÇdгgw )5niŜ\UJ>00PU	)8GY.6ٳgo~|Mŵe??m!31<p@̿ϞY3޸{nA8rvTN'ǅN;ݪUf͚O]O%k6u]ф?qgMm>~3f:u#HgUپ*kHQGz wm۶=-[ߘV栴gszɇ~3Ϥ_ϬuX9F%{yڠݟŋ$\0xP5\kNoҤ|h,YX8QUGݻE?'2e9mLCW+_UUFKeڣVz TKffE:u4vXsҞuw֭iSu؊qvǌor?9A%\ճg[n-E|lءo۶gߨ[:Zx iG4ZI{H{\
+NUҡڤ=R$\ d2]rE
+o2zRo.&Ձ<̿@󞺪;xp_N-{
++Ǿ8ns~n/RZU=:o}-7oSa7/4i2f̘߫7 ӱĺeKx~9r?@p\g>*P')7\LWJgRbw*tHX.
+k-͵I{cJc>@ٳ&Mjٲɓ58y.2dH:mߟ68RěC|mr-=@\+VaI	Q۹_8ڃ>,BACS;Qa:uׯ_bb" *4a0Ϫ=TcK{G.ۙit	jHcGW| @uW_}k׮7oɹ6LcǎƔj_&-?bkWO2w咏Fէ$?\X>{zEfw~'kWMnݮ4mKzam^#«o?=ӷrK޽Fls$ze򀀀ܹ@mooo'ujitT*\hFTg8R:$v{(
+ZmJKFXigӰ\ 6<yr֬Ymڴ:t&튃ҞϮ~~~{f~e*xdf޳fY%O<k݋^_νz}3sĤ$}~@]vq	>nkҤɸq:믿8Q}1+;GQF	{oUcv=ztͮXxFa|EG|F׽{wFseV5K{ صk>䓾}'K&GN5am~./ZG\P*+x{=w9?$~5{WD5y;7|s=4j;־W_}I&[^.l;?"ڴii$KYΜ^L	׫,dΡ*۫Uپӧw2#iG͚9vG߆FUfׄVǮ?gpOs={U\M{hCC hXǏ1cݡsE/KK.o{jYWrV존0Yҡ99:t4M^Z[Ox	G{饗6Zl)zM6m߾o4.]0rO#g+Yp%BjFFG˙'yُG_pa݅?4S߈<<'Ge>3G1p'x",,?p ,p˴=== $}ҥm۶u/f!Ǎ^<nܸvڥ_=?[5qsg,G`N;G<9VO?Q}ݭ[lom_`u]
+b>:ݧO&MLvA^czFX6_NfGǕ~6-s?0{#OefYlǧv%/jz3mbM͇e:jȐ!]t	_	ؗiOyŌ]=i 'OΝ;scƌѤ]=ǅom!=q\?*aѹùD轕0~ܨn)  @bm^9z뭏>認+zӊVZ5k,%i(2@~6KʺS׽s~.eNg)bSVuo}Qz- j2-U+YdO)v_Q|8q?@e\hv7CC ߩSΝ;GEEmt=[ǎOط(K	po.ٜ^R@lzxãgϞ;#N:VI&5io	<B]5AZz"Lyϯe_x]>\Qf~zyboCG>?vd=?8C3^|	2dHȲ%8ɨM߮5jԩS9PZrr7to{)s6,{TٳӦMk׮5iW8yϦwy׮r7
+϶ԩ{kn>׫gϞ<4oeO=%@X>|[Rˇ!룦~zړv%w9VDoח?M+9EW
+⬄?ѣb?F;.K;={N:;СCX=^^|<$WE7"`Gnn'|K/mVlH59yOѸq|{1zܣak ӧfνq=c6|tzoߢE͛xr}T*a9|C
+Yp譟.+́o?{ҵH;(MDQQP(P (&5		-p
+ػb&BrrA'f3m̼9Vj4&|F:jS;P}'N?< /oOĢE0$)H^zuAAׯ_a0 l  P@[nYFBB*33vsQUUi͹@<O6mƭa}{Z5[XX,H=#H]]+0cի?%|Ưq5ٓI39&$8ˇelXirdɣvW%޽qųGqM#ÝZqJdeģ#6ˉvssK;Sw/..nbb0p=z(  Аr$=666t2Ф%$$D<PǠ噅<<<ׯ\"d׮u@݊\vF\Q~2n7BrvDZPg5yt2ʏ4-h6NK޿zڶ6>8qtuvvN?agbXlaTmOX0=@8A  k׮0aCfA5FlҷԜ[VVVd@I]e!12Q'{ɓ'G#(w&Eć	?|${ɓ'wJOq5[6Mܛ;7m~ufCwDb7WO	=[EB̽s#:q`0oZX[ZZ ݻ?c+e{xy9P>=  `,]UUv=EM222ڛS˥9rI\\70/[KP1cƠ(<-++V[I&MTx1ظ,Ls#|ӆ"\-ܺ|ټL$k29Ѵ"~"󧷶7Z<U&RcG?;gΜ9cƌ>
+eh^P(   _.++ၝy1[yyyssj01ѾC<yrr>IYXkccKޢ{+9}66V#S|	:c_Zk^O:6߽Ps̘Ǳpkk觓G:9̫xI6ƌ3x`obŊh}ܻ=qzzz***
+| mP>=  `ࠢ"##	{/1nɏ{mmmJ&{^>	ڽkUxbgǙϟ>in5xf]sm(6&إ$ݸ}w/CKj~<uG3ϟ¢y/OuJA;)))VV)SĤDK2A;&MtB`F&L~+:شdZ^Kc˗Lz^iddiRO˘{ozb5u0#G^c)kЃC~'d%̝;wԩAAAeee04   4ܺuMZZzժU=o˗=h{@oDC(+M\nzcٳć=f֘|>7oc;茌PqѦޮϝ\a",$ʂo٬
+cGb¸qxxxqt~~C%ᱢzJHh¢]z+"""%Wi\6v*_<mq(qmǺ+S7%o\tI"B۲'=Zp5Т:m5j 	L4;;q>񦦦j1`O. @   r*:cƌ9s椧cFIIjW1xD66ù)]P6K_7UG}~{ggg3q4w$zջ:k8)Z3pr3vpw9V9*҇STT49j_eT[٬B=uՃ/%%
+ni؞gAZBC'&3qc.FouZDo3'hN;f~4:abfU2|=.\F-r`nn>mڴRp1\@8A  o߶E`yS26*LLLjd~k/+{Uo_>oculXll'))*VXT|i=ˈ<Y{zizF2ЛcN9/@S7/2f͚.ظ
+PiӧOI0 Aۇ&((1	YLMF׊vϠGl.MI%oDOXj>B9H$67x{{7?K4\XwO̘h%KR.co*<-	틊`lDil  h h9yO+kuE"z
+K%ZTޓG,7S`ҟ?mby	(66VOJ3R\4z4/JINfL#<uQٳğZk'`eeٴ~^CU> .
+
+%pg *$l˺߁ֿZFՉM54߽Yv?F8zh'o$RW~Eg]QׯF8"0ʊ̴KnܸR!C."[NRRի0~0 B  Dcc͛7dee3H=)I
+6n)zَË7 <<q^ׯ?}d:hצəZSv8^NlL'p~*=ೀ =P\׃MBBtJ_H2,YF	
+z{{S1\'L6mnlm;N{W8k+gu\C#DQkLSYkiUPQNM5&\BˤIB7EB/Q-y&blmeeu_=l{xx nA  >}"JJJ}`vEh///4z8ph]ieo>	ݤrM8ρN5&I4[4g^=B'-4q䥳^?7aUPvUInn2Е[Xf1 3~υS)1켷׭[%$$TO=ܻ /AeC|"ÝO쬪
+|5F^C4_[ӽ~!ߦ7-11<-`ʔ).<|pSS l  7otttG|:hsv@7恵=Mp=)ֽfڕn+,$2JJ0W^d(ch ,ПNiQgOzҳPlXXXN]pe研(w?rT*ewwޔzhq888$u??j(vve˖%brdhhޗwbT넎HY?HT?}"PDd,җOA͵w_?-0|([[SڙS-rssK>amRoBcBP]Bŀkl8A  ?~񚚚$N~$K2kVX!''Wx)i{bh M?ԣlXXXm_ﷀ![n[#`]t2̅;t(%ggMxsNNv$4:}I]e=;;ģ콅f^,/BBB6l _Ŋꡔ&ŦGmm F>nK!m%}kۛz0DYƝ"ymO[,^<Hk#y~_lIqfJOO0m{`O. @   b{{{			kk̂JR&=hM$"bT_aAd_nneyTor?VJreDLz>>}fL lG%МRzgl(k.fyo-,c@81QQQT:nOv]СC'O|rf"LcSn6(쇕k?b\O|&ػ̉Z%W쬗-[t(\onRBF,PwKJJc{{;ˀAd{r   dTUU3f̙3L&bbC-$$$/VdaeIvoeyTg&mv4Vw 9sct_	t%(<]I!rዘJI	Kj9A1锢m್V;;Yy/ϟ¢_0c_<om рN?nHOӊw	k*u׺?}ޜ.uX]̌q{ 'خ0Xl{eHP(   %lmm3k	DI)l'WVV^re\/ih>AX`l	g8kZN>~g	y2Jony:9rSDGwzpQYC7~'+ݖDޚ^b׺83NNvVVB򦚸fkΰ`gg%ؗSog_͟?yܸqׯ\j"C(TO|{hN8&W/8OwVD;[[-iBxd鲘h-8$xm۶x񢵵h g{K@   \3gTQQA}qs:KKK4OHHhoNo')n.̖;}SEyt޲mxgBSVX++)L'/'lR#d΃)ϥ}7=~}u4$,?靠k>EJ5[磏!ݹ.++F=K+º<_cr[I8$ܦCɉ
+[B>ן@_fq$h.aԛXѡ4ɋHHHl߾00l/
+l   ZZZݱ3I.hs GoB?ޢCu $7̢:hieeE|?k,4RW_#OJ|Wnpt_:yvl;;HB|2#*g޼y;BvPn|&(((]Ν;`h=l  hoomll4@=*/_rn0Uiii;L?z/{oQO=A;vӦMzoDtJF9ލ[n3CW}޷L$mN)I=djj***z_x  O. @   z4F3j999{{̂*R>&lOja;nS._X8{Fqwﭢ>yo}"eM2E<ٙMBBJ!i'mBȒ%:)DɊ))Il|2/טh_|SIk֬qttpBSSـb;   
+TWWp8uu9s椥ahSXkjjt kK1bDLZ0W䶖֖On|Fmii/[$$&[.ם|dZO;7@9{-]tÆig0|W˖-;rHcc#ڀ_l   >jkk/\`gg7i$SŜ*"6=imNJIIYZZg400@4ģ>ڕJ?~?vN(Ĉqqpp$[CZp.6x3h5zHbz.=4fd_re	ϦMDEEka0v~	\y	(  0(ݻh555]]]yO###99G[%WS$%%l3kVnIXEJb&\&5/;;̣R
+5@&18pվ'Y;{ɣ[gikăns4|LmZB
+6mk߾}0߶3, @   Ak׮˻fT'c-1󌊊
+Zs -h_"e{-fСCǌKXs񊊊hD0TJoʤz]:f
+1.[,c=+	DښҮ]N65]fiiOzKNN#lgg"P>=  `۷3fPRRԼXRR:Hw8C^=Ϡs^QPP@GQocнHOjiPafQӒ=Ӓ✂v7W}@E)瓚1h	r>q2 ϟ?O_"#G@   C}}}AAE=<<2
+ڜkg!99UV	*r[j5}{+pgرcQi3f'cZBJ477ggg}x܂,dhL"x\r{Zgtޜr8yUy'ݤĿttt"""<y9 l{l   0ŋhu<k,-zn"""vv֔`$i)HSΠg:w>CO<+k]6oTKoC~na?C]U]b$؝飡=zh+m}ު9rMy"&۬Sp{eee(lcc	V/iM:%Oכ%=={܄	o_m0|R_<ٵvSݧq>h
+}! ٞ@#`{l  ,9w܊+!G6s!0ap&tq?JtTBvm]w[ #;AV19q/5Sה=kGA^ĉ999tQN>5iҤ@$IuJā,%W"G<YVI "Զ.1{`O{h	۸o^fx{9EćQo2+%|||6lsp`'
+   ޽{V%K22RۣRUץsқkUQTcҺRWz]BQ}ŏ}|2|E󳳳kkk'L$hff_{a.rָ-H[8hb\Zy:#8|˖-˘q>ex999''K.l  \hjjBsիW+**OtǌOp[7-G;"VBf8{
+3.!=vob޹}\e^U?xv}}}$K;Cwtt|ׯ_aWlxrAP>=  `0ѣG
+
+
+3gΤ 2`%"{KDDu [M61"pL;xoiN\ŵHyi	cnjBAQf/ǀYjd{{{0|=<<P].]Q8q7<<P>=  `̙3Ǐwvv.**d`JfQ϶qơqp֬YI)O200@IKK?*=|鱌cfuFI\6mDW@QD2ԴKH3ؘ]\\ЖgG=`(  0	'O맥QZX hCCC^^^\#a潵+VRRxo&y8jO!ߪ7Q;tf+xYv/Tz(++_(Mu2!FFFɹxr);uVeeeJ?1|`{  FssSlllDEE3*	`2`F?>'%%E		lg[Dooo^^^AAQ5E3RUƣ3zQ+r̙|||xZ/J^N=@+;=ujjjgNJJz='A  ---ϟ?WPPHHHU$Ȁ9l04͟?nU|*RUU}d׷f<L9]ھD'-ymtÉ[ЙS|g^p6hr555+Ń|_LB]{=qI;BvL2ESS3..mmm0l  Ԅ4˖-SVVvwwBd.luШ7b777
+f])bӣJյfj{kʹӁsuUK:52ܡ:Z3drMs^h im$(N466NC·zzܹsˁz^^N`{p    y˗/UUU7mڔz؃<s'#󙮉?:9odL=zӌ{%k;{/7:q'Ħ!OYY9i- hhhpss=J!%~[mn_{4zB؝$ǡ,dTKy	zo/Yd1EBաwK``  =@8  +'O^2 w1uBnԅ(PHLM:egg7֯_σ=ddd &6iH[d滗=weP=~I6rƽo/kvYXXpppQ˰ԛ`aaQF<x  O.  j߿[PPpܸq+VpssOp ##S_F ӯ?*otڵ'Hӹmvwm^F&uuhsWv|F1~b:_HV]I:///---nnnVVV666}}}a;8qDT=ZlLcJ}e:Ǣwn<{b#uOw+oNYRopvv%b)ݫ'&&jqFSS `% |`{  o󔖖FFFIoRRRmv7G2=JF*_]i/SwS]ZC/1b//Ulvjm\"DY,||zkpEC5-,Os-fyĉ{p'Ky\]'y@
+igϞ3gH".OIBcFrrϟaJ  0/  ~<z(!!ANNNQQ1..!fz
+pȑ%Krrr.[,mK	q@͋/t {Vhvpu[c"ҝk=*+I}"qf>46 5IؙQ.\ //oaaqQ`{ ==h
+	4K@   ϟp8%%%4		<r@<<<Ce0!/ARR5gݛ! gڛpAl\EYbwnDUfp)vލ^)ׯ_ooo`{l  x-L^p_hII)qttI:H)ÊA%P]&"~5L]]>>vUۨ/_=9sWFf$wŭ~~CM%'eTEEř3gݻ򐀡mO1)<<\UUu)))/^g<l  ޵kKo޼ҀL .]ss]]]XYYg͚O~\<)hEOv}k&cP3&13^baHbRIơ"ur1cFtmJikL a_$yzz*((,]`  @@  AʿH\\e^^;#F@z<%r7	`)¼yP]a1޿/]zU+;:,GGw<`PX&QYIjǷqeooLeОII8eeeaa6544T =L  "4669rLRRYn.^0aI&b$LHGu\ML@z.c*b>i{3XJjxLZW	UU^>ݸ'~A8]<v$(mmm---tۯ_-;%|`{   A{{{CC\RMMƑ#RR. RsЎ;XYY%%%#0 _&aWDD9|[S*LB4Tvls47Y1~"6<ĂhJrVT8y4qiZ`e&:%W@oDS¦MfaaAn\D777yyySSӜ/_lxry	(  y/	3#Gh< G#""XXXPo0|8tБ#G֘)oVq]\9FTYl}"xGt틨˸@CU2Qn7.ZDP֮]{ʕz< ~`(dp=hUq Auuӧmmmedd,,,NdeA|RZ33XXXƎqFj1\Ufu|Sw6B(K4CڛpmM$c9O׊Hnh->geeŻ4BƵguuuxr)Qbcc%%%'O??=D|>{,//^ `y^f%K8 <oOP(6dccHz͍4P`62@Mٴdwt|S&@#s͟٢S<=q AQk\~)ۯFrHHeXfϜ9쬢bee0  '  \l݈D$첲aI `0QFF͓ӲgP ޽waXFvMǹ	ɀ^E9*W6}p}=%Goyry^=m~WtPP	^~}}}T^
+	 =@83ȑ#ª[lyfcc#b2e
+ɢ[DD2[;7Lg)g0}ew-O6j1Sczhۏm9LZg(|]ݶO^^^QGE##z&۸904P@@ަ*$G,Y<k<:6~OJgj$X6l_-Ľ{)**fddP`RJJJJSS3::ŋ---0 ǏCf @ iooÇmmmRqҤIh; 07ϟO&볳i' &&/""2aL +~阩윫2f@Fvg烮b*s^j駮){nCf(ُ݃ڻ
+ɉ'rrr逌~zsrqq:,dV^]h)&$$.κ>ESMqXmi|矚k\hj<~A?Ґ(P/w
+WTT\|yڹ$#<v7q͚5ӧO;wnVVVuu5( = @`P> ݓ466VKK͓|}} L>1s_|KI)Yz֭[=+[.ɇ=S_THL?OgzSKυ\{C޿[C[RLT)׊9zyyM8{ʕGBrpp,^8(@"q'OFҥK++NnUk.++q"#}cZ!J/II;vPnb}J뫪_ɓ'ыk*[lG\$KׯXdӠ_vNܹ;WԵpɞTz;Hӹa*s{s.||LV-ֵ*\Sc)/kajj;n.V2=xLvL@z/vxtۼv.k{*)YԧZǩg۷ďΠ;ѣǎ;t|oG{=o^BBB'((8|pu=}[Ǐ*..^y7"y"Nn3BCC>
+Sùֶ,|䒜˗sqqqpp̝;7%G)&&Fٳgy	1|~'l0<MC$'*]ݸJG|zz:>flOrP¼Ey#yD'B2uh9Et4]'_ѯ3ѳ03s1eJWz93OF1ɔk_2vH?ʸ1eQQ$ΗWC~tm2{(Gw0=KtNtj )ad#w}gMp9[԰^ǘvU{W׵p~=N2=stԩS/I$ĉG͍蜜fff׮]u /G{{cccg͚5}too99RRy訡W!) ? UVhxyyF<˳FCkjj&.V2^>LKeKzWM@O8ME5P"""P?H;K΍u.١鮡޽{?}s@@* ~~#x~LD?1
+#edOF	Lgb:OJչm蜒%ZS.F=$f*)fG:gJs*;E/kLe|Ld#8U=?K]o:]=L`zt;7#׵v[upUc]o+n{(S_vG[ŔsFOD @'0wd@ʊjjj= */_¬YTUUQ|/yp8*<?Jh200xo1|yynnnFBs#5r>eoTQQyxϯ#Wqik>Ab775W}m7.))۷Sn`m7.%%%/6554@   _,9¢tDܹseddƍyy,
+_|B,X u̵k>CeyNߴiZϺ>.˅	H]rsKKK1KWW@ʱi;X>Rnƌ.		k5ڷƵnݸ2CShj 6'_(((Rcz	7NllϛaG߻wӧ虩x^ѣGO:eeecFgP'\E/ۃFƮE&BsKmv(OLevm?&(#tkݪg\xק&vsk{hFK=$q3:u?pv{趄Tڛ&3zq}.h۝;wrrr|||444ƍ7vX4nݺ̙3UUU ޽۽{ٳ]\\n䴧?Su0zy[hk¥2sKS)mn 	
+0k.t>ϺRR{s
+}޸q˛!aOiR	ԩS,7330    o{p8###!!!]]݈: KB611AիW>N&?Syܸotܾ3o޼!C:w~3UsЖ-['N-F`L;dt&LˉmkJ[ҳWLiӦSJ03{K000srrtR}}=L9    𻢺SN+(({ QWWwIccciiiGGǫGKxH---CC+CD=ɥR~U\00HzϟAZO[҃מ={455SSS1܍uٳgϚ5+""0   
+4ƕZXX36o|)؛  %]rԒ%K<u߾yΝknn~fL Oê1332d@hС;wЫ޴i
+JTǰaÈIZ(pA@Fr``<z3N"a!RDZzĉ-[g4mii    ~W.;;́?^^^; O666hkk;i$iڿ?::5"]B>qtt:tȑ#CCCo>			-/	X-&sqq><,t#Xt+53W\9m4___j	q닋\p
+&!    W  .]&//x⌌{˭x޼yT*a/5Ξz$/\-
+\Y1VRSj+]\\ͽec/A[v&Hjjjhv>CIDqppۣU-zuJs+=
+
+
+IIIXE)#PI;vPUUEo       🣩޽{֭>}Eh٨ffd###CCC*aϯ7\=-۟ysjI,///...nnnȘ3gСCGeiirv$ cǲ.]>  ܸ222'bH.\ᡨdɒ{}"       uuu%%%k׮1cFlllݡCoӖAPic>8٠Vv?baI5@6Ϗݽy=w9s2|p98\(w#F35]#>  ߥS/vqy׬,]])SͩS`Y       ׯ9Ν;?|v2DVֲe˔krxNuʏIM5]<p'TW#6oZ)_;bŊmv^```eee]`@SGXX=g~t׷f<}?ݍ)Fq
+Vn\UmШ_VV        @qΝ03gFGGW
+xss9sDDDT}><pк{z'jQ$Sp1Xoɣ]~5zӆ|ԈO[קjJ[566VHH)KKRR.fg
+a3*96=ZJJ
+]&Z>{LLG-[HKK"`h_py99Eeddy%       >h1w99h<iiW^roŇe_-/"2.+ָ.u${Z%wv'9͛d*)I|&j >&O<dȐK/;|||ܚ"&{@}	]N%ȟ+_>f7m4,w㺗{nnsqqpq       5={uossۨ!z	58Ϥn@pGM6ysժ*^Zgݓ_	Ǯu>VLtj{oi={27j>iiibbbt_GK87֖UOE /AMM5uIMpSZ0?~_[`i%WQ_PRR"HIر=+Đ4ˣA͛grڵ۷<x
+    	4|M\\i<=={<w\//esK\]<{=ɥF߽MZ)6œLg~~{c۪<QQ,'q'כXv\STT2dVKX5
+U-++H)Ɗ!IyٳgDDDNokLQk[#AMzڑaKJ5~/"o:;%iśpcƺ]~~~FFF0t㺗rj*4ϟ??))ݻwhsOӧ666|||/^     իW
+EOOOFF˫,7UG"7wÆd+hkkcRO r51י0iNUeu9rd&u]Ix3k>O&!>#UXXX܌'|;	8q"z;Bv,|ʰ26H;C466Fu	ggEფSKpi:eY^!F)I+nlk/
+Gm8ög|t^@UT{K/1qKOЅb{]x	L[[[YY-[Pobu?>(;99]p˗/0WƎ͍f     wٳPZZȑysr6mڄVʖ%rڛO|BH=Zdjwr= /Μ>|x.ݽ=iB87zHƎy(k+,kT.ޣ6BrB3- ԏĪÇ}}}YXXDEE(0$|XYY!-%k=u_bΜXa2MJPp''.`ggUSIYY_ӗ޽QQqz3^0?5b-Trge;zPX!:yҨùƁkȑ<ӧ	Z+ n\
+usv㢱=WHQQQh~v ~
+jjj=,XPRR     >|6o<111KKˋ-w?σ֪h}kkk[Xp9m&tgzT}WL:i4||ò4Tmܿǯ)n-x}=e&u4kg⹸jVU@\A!;r{ʔ)9'oҤIt77DÉ\$nl7aq;MO:h9%)1n*ӿi6K7#1fZwFThh^޲w6~R{݄\,?:m5|H7Yku]$1Σ7ANn\7o066N>ЍARq(Hݻ6 z
+___>>>QIHH(""    
+4c޽{ŋLLL<u߾yj
+={6jI^ށnY܉J{ԉD;=8mh'ZOq:^:EmOyժ
+zlOzFAQ؞JLQ^<g%K	Az4zȑi(eXFɗIvvv\\\h)Adi[1#Ǔ/61Ė/B>oTy1cxQu6Vj/1*Ѝ6oc8yVn[xں/1_AP	de藦#6t7/3W\)))yfj1n\[s確lmm;Fm zƌ)))AAAAnAA0     <z+$$$yjgΜh"*ژ9uІ;<uD ح\龌W#W/*ʏRvaXރۺl.#R˅%[Se1z\,}kjj2??[5O TTTXYYyyyhO)&&GxU"-%*3ޔXxn"/'|gc̃2lǓl{p!RCQJeNZ=͛
+yuEz>*[sSghNaccE-NM{p;FDP_		yׯ_a%o޼illť?f̘aÆ999W@@ӧO%     ~'TTT<yVFFf47yƬD4@
+a`fAZiZNO:1QSoߛ$IKq5s,U]r%#¦xQUH
+:thzXxw8S2cggؾEff&''EYXXM؅@YZWVd!=1Q&BG]ge;BfL0bH^^#xde<frA1eI5cgg:mGªQ~>Xx;ePbSܿ:z*}7Q`,I~?}i z-[L4IKK+$$d񼼼۷o>uTkk+(
+     +VCߞ-xI$~RRRijC:{*l?~̗rP1I_W&Msr\|$AUeќ9P^7<HJyyKG:x94ZN*+sqq>ӳ>;:ZZZzrj``@JjeJE3fظO|=]ؘ%{Ύ3Q9lbSWW<l:ik~!uđW^ϵt'埔nO.3h5z4/~)*|i/#C6l@B$?D-!.<gTݱc .hnnRUU2eJlllOpppII͛AW     ^!"<yMRSSenz3gFFF6di|uŴ@VH}7<dQ_@c(
+
+*hٱwoFL,t؆X=I2SUV|Pb@FA'fspp\mnnY_qqqBQ`F&Dko^d|k&Ʒ!a;LC/%rwoB>	߶pԨaq|7]}aNy͛ƈvZegW-᫩&T\ty5}mYEl}U,  HEA RY@X@"RH	ГX+kŎ]v;w!gAI&$s瞗sϵT_t6Cbc1%.IPhfJ(EЭ4 )--ݸq#jMMM'N&L⒓;yd{7p    `؁:W\ٵkEy(l=˄خ^*^"HOWQJRR:[#riKI	M4aѢEst?=Hw,qw%&klR!'33:=%pNZ9s&uuu1Ǎ4xF-
+@m߻;V|	uu]mk#}ƪ7Wz~pj
+ߕi/eYRoUxʇ<9aرcv)+?y%LLLT3g;s{(uI<<<*>z2*tf*FṍFff&` L]|y^^^KKǩ=<066F]n   0ABB`0yșrGR_aIΝ*M:=%Q%5]py ?HUͦ7"\\\n݊ "%w=GyxPFs&WmM~~~ӧOG߻KF>x|1hdd:n8 l `ebBbwe,]zvlg,;{dIE&
+&bO=]ma-ov6銌<}D'Go{`'[2
+/CXF"tnW1ܹs\\\	q6[؄MMMaaat(((@8˗/1L~~~ee%zzIsᶶ6
+gllC    EDD$$$ޣcσbL%))sK+,APӟ?]>>Ϋ>RVVJ
+14'&,+kɓ\׷5vDsG+Zkg2X'EE\HHJ~S/wf"((%$$trtD~5UdN>Zԝ"WMҬ]Y:kcMÍ#4FK6KP3=9a3V&ԣUrDbff4n
+tlz,,T3qlƅKNNFWѣGZ}?nnnRE7߻w7iooG?IH??O>uvg    ~qZ[[Э\@@]B>g(?X^^~޽o_Fj`]WՎ;ݕ4"27nܓNb!Xލ?-=*Nz9ɉj9(֫Rg`/Ą*BLM9&þ%رcK,A_eEG߼yY]3sss{ciG1)"""h_|||Guioַ+?3wNפWc0O6y2	ci8qܤIl9Lqص?ҕrF-M{m޸OƑZw>{=V52S>c&z{{ikk01D"qӦM***X,xnĉ:Du{>wu3    >?
+
+RRRuuu}I"u2A{|@$ZZZc>U{Q(DgdZ:L^:]wdXcդG	p_<{6Ux9OznɈ&;+]@@ }YiiICg}3g@]2|2Qh>SS)#ۼqu=ڏߖKAʹ=ue	LCB#B0بT7dF{:[h5jB։R+;c0Wջ /%*6A7k֬={m	OxMMMnnnK.UWWC?     F]^^b
+QQQ;;g$R{r2}RRRwidOX{
+lmzZz?d)a!z^8~|+ӝg>WֆMĖPGuu)111]r2$$6;+],Ņb;sHۏv-   :z<JMMk̙ICU6VD8y26mn6TPT5IDSmo-OQ(C:bԜi&TGs,gBCCV'	װ~~~˖-yfKKvV    aaa<<<fffyyy>c0Om۶IJJ>G܂%LLLTg]oi15YǷ|A;?TR.TV})}nxO_4i t]ʣfϞ`_O2R
+䢋(~lKKc57ˠ@]v]?5fڵcǎ߃6'Y#Q멳SU]>{0a
+vtcR3k)q''y#m=?($U
+=w>NٳThʔ;*5.ZHGWW ɠg~~z^^^uuV ?    ueddϟoccs97#1%z"---"csǌ7d]?f̘3'<7Wt.	81gD}o=gGt/
+6jd=ڵk;w\???>8G"Ã;ycjC.6ndd2n8gmU(|Ic}ePj?l3u*>g?ޕn
+=RCW}RgTgff0uݹGIwz`K}SdkfH?*7C,+t3gL~JgOٵ5:kUPPnݺKڵ+$b/^lllL&߽{}'    ~M޼yh``   v牌 Ol#(&tп 6Rg7\Kۼ}ӏ{Emv.N? Ȉd---ffS7fg3n1c)T`y
+VVVng}7wU2k$m&%'[lܱUQP`R--ǯ]]3ǾfyngN@ﲵ^&.6_Fz)jA'Co12{гojJ%ޒ.Ռ9A&,4e;wB=*SJ8b^6KII]paHHH]ͽ_;tPQQ$ ?    5iooSbbƍ/䴤3yO$(ft4'PY),״G[:5JӬ)ujۛzMԤ]4ӧ*,ncds2	8q}]n.cj)Slذw*pkii9~x666[#~xneLաή6ӎF!q]OG:uY3'MʆN]2}Ġ =ZRPзKBsyֆ03Y|SR͚j4y^ ǏmҤ_}c'Zh(\!))vڜG17mllVYYVVV?t p{    `R^^N ttt-Zz)))yPrJ==6J*QQv({c(j>DzmS+(yyfpopMc>$we]gҤ	ETlC477gee<y}m^ceG-IDD
+-o}͚5a(`&nԩZZZo˓>DoR<ۀ:[,TV(p(*AXttX'޴TAa.;m0Xī*)[o?X|͉~0{Uk^::s>}9$m5_^kBBt)wUHM{路ѯ7;HE{G'`UUUEDD,--Ϝ9'?8q"=    ["NNNG61<X,1s*#)ZRMgUF7:wТE%7J]D;oP6>9q\3hdGǍ7ydD"cnJV֋;vBh|M9Pquu6mΖ#6'.ӑʷ+>}`cup?&IK}X͇@&/zWSMH{SxaY)ZPLaB5d0mkh#***!!5םAK~{۷w7nhooi   _Ewm۶-^_YiiCσ"@99+W5fC`[F<I_j?	IMv[z*%)l=4Rncƌ100(#sdaaaffVVV'=Sgzt?sx#6ÃSQQ	уeÜ8qTHH]111_ׁ-    Zjkkϝ;sNYYYȪ|<-ZZZ0겠ߏ*luq~z=nښik	>#=e/}h4RB3]2|:3VZ5uq-[+A m3gԽ-Aۃn6lܽ{͛7V%8t755=<hP?@    Bnܸamm˫P`5-رc|<D_;w9姏MByY.X AYAJtϝ5OUU(?3ǘl@ZZ:"";xC|*߸v|_2[lBBؑ#G%Um֭[~~~222/_nnna\ S\\#n   !ŋwrwwK"1&^Z\\|MjilΕA,,,s٪JM^QCdԽHKcۖVʊv"of܏	Cjoo$4$ڵkhUv u?ZZZ3gTQQxB@`{ɓ'=0    I{{]\\.]***Lf|Dzj			ts䌺jnϟZ#{-[I?P\5)))"eĐ͛7S)/^xQ4QDJ4
+F2[~uN:qFNNN++VITB	pB; 4g@    `0wVPPwpp QpgnnsWEmk\9+iaa|T89/$((HM팏gSN"m߾}LLL\\\(Ј<hnittf$33y|)%q!НqŊaaaW<Ik<<<eee8P\\$;;;5Ç/T؇6'   ]NNN^^ER/I<>D###			{{ɝ-<([m}}^d	/:4ݻo]oⓓEDDP/::=91+2yΝԺ:ͳIx<(a2©Ϙ1(֋R>hK'K`ժU	cu6.ssstݻwYh P    ;w		͟?SDaF{,755۸qcMgy0T)%%׋pq''ǃCMUUk?JG*ɣFi("999-,,bb)ux
+uǜ0a65?*a_>kii-X .a>shmlHH񋊊oB	Ye |i    BP?~,((hffv>;a0dMnwAWH~~wxˆ}ܹ%$~
+N̙3Htqq֋>}A=cll<vX탆pV<
+DEEэ;xE{͛7g77ׯ777H.'=    0HߨߨǷiӦyy-}R^QQqgaʞN{S^kP$kQǬ˾p@_UCڵkǎ~9{cLD֋9sQR'iT%'L`b#d$!3IPPPUU5&'24zf:uꔍr``˗/a6.=    0n[rrSSRSw^^^^]]ݓ'2;&CuO<y$ӧO펚g${+d֬np@d###qYYY#>GG3(;t萀 +++֭[;XQ?5550aի7^`ʥ%@fy+G#|ԗ@uz~Icw?x6>K
+tO{z!)&zȘ1cnb}愻UVm޼L&yNx@&so`N.    tvv}-_{ӦM驩-$ڵkZ dfN̾,uSw)in:6YD2!++	Ӓ4Ƞ_/ڵjDJh} h㢢h_rpp,n?ЯUK;K|yW~p [~uk}i/ <>O7_D?	j=f{xx^}Qٸ$%%Ĝ\qԅ~Q&3Aޓ'OBn    8_NIIן>}e2ҚYژP)$h+aN;=j?YkC6:
+P4p}M?~<ۦMe4fg333˃qG7-HQQQH?\7GKSڒ~ۤ?~CM+gǁsiKu <	_v<}~^K_4ܻwoA'.^x(Zonnާ	sr   իTCCCaaammmc*|<+V]4eA<rܣ/++\R7n1gAas^a,ԩS1jKMCm++1c$$$'`GbD\[yʡ~ØAI|1es}R@ozP\\\PP;-100ܞ	&    Jgggee%D277QWWj1>',,LJJJHH(<<6⡟ۥ)l\K}d馍:NfBB|ܮk,,,n}r]]]MzYYhdZ32444Ǝ&##/hD*4?twwGׯ¾}.]DP`C`C]ۡJ3    |pi;;;IIIt
+
+bP^>OHHJ7y"B|6OoCW*K9ᙞ[MU.8h?/Θ;>N[@D}xɗڴjjjR&QQQC	O (ɓ6m{Ycc#>NNNq[    Oʕ+6sLjn`E^			ZZZ
+
+
+!
+Ŧ_?"&$4}r/",+1۬jkc8gl}t{̙3	B驩I)lONcccC򊿎{Q<4ĞQ	EؘUVG__@ C
+ޏۃ~?    OjٳtRNNNGGǏD"cQIM]r[E9sK4Ŀ?Y{Ӧ#-_*yYYYMMVU.ç1=((u:c\۰aÔ)SЮ-Zsθ`@J~]xxxezEHD3TUUSZ    @?tvvףݻ<5!Wiiii:::e-P?Mi?}A$!~ҤIwo6DHI?}ښRX,-qqq7ih׳g޶m[션	Vϓh=LVV%//dhhhyyy{{;t>Uivvvw{cC_اd2    ڻwﺹ4>#Ӟ=ײe1y~qf.ԩSV\<'^ڏ$:ùpɨiB?'ԫ*?-jI$;;;ӱc.\E%SO\70111蚵yt/AޡB}/Fr   hnn.**:t萒Ķmۊִ4<(*ۼy3>G|adgjOǲҵ)'66]`i>ffdg %6?/CRR͛tFN8"5\\\w>k,kk1GA>gJݷoŋo@/,=    @KJJ<accs!'=9SnQ}CCCǙ^hNv?lzbӦ_O]xS4om3!u4㳳/jƌ(gDڳgѮLbllC@z @ rss޿:]W)..300ha=    @O}}=}>|XIISWW +-5<󭬬V^]p&Es#5T몝R_XKna
+DEUj!Yt^SSSC?*Է('aPc0}Q]G&܃?qEXXSSS߾}E{M~Rw
+8q"ւ   fPݻGQUU.m`σB"q֭rrr7o.(nB$;mQW^Uz 33rMSN4iZA@`1p@?EǎbbbLfLUI$JJJ7~SSSOBQ),,tuuG|CC~200ba@n _x 	t,++UUU755NOoKKc[e$׭[NIuCFD+aΜYk4t)/AKƌ˕Mkciwn$EzN644?~<1ᚲQήwff{deeYXXHJJY&**V4	u_n:6 o,22RCCO[[2~mp8\Kagafff6ٴj.ݝvkڬaa#&&Pz?y5[V1毗dSS	&^aMY%.##~ǏZ˘;ml-ӥ͟~_IxL"**
+}0ૼxϏ~Zo}  ~eٙj{p˖-CAAAAt+dL]#)c̘1wK ywر=)&>ɃTTdk"­Fq]Vp@?7'99EEJff``6SAAAGGG[[{-?f@{71ZGMKs#z<~q8}no~{
+֭[ji][l)--P(ebd\ +=vÙEYYY\\"	{{{#o-5566V^^~ɒ%nnnQpW~33R~5Y??ByyњB4ǏA?\
+#duuuiA=hMXXXDDDnh~+?^3NsOO9"G^Ȯ{l-h+++jˡ'|_seH	&@f NNNqqq83 Shmm}mBB]󫨨T7|ړ444PѣG)W㩽vyLVڏF&VV<<B<eἁ~rQtbŊ$Jf&Z$Ү]yyyQ4̌B7ihKj=-=;Bz|Hv^<3fvȩ~>~?ڱ>Sӯ#ߒWjn_A
+
+
+3 RQQqI%K?~e
+㳲tuuwqmp{Z"[N^Q~~9Yo̜AMVN<ճGN|)N4֍ 8oW}u΁bbbZW,69)'''$$dggwܹ/^ԠLuuuwoj/?kUOs?яo1g#<fP3'iprr>UWv{豶 ?B7GSSS111uus)3gnܸʕ+[pk5XY̚5밦9Yl+ZXAwҤI/ݾyh%uP#t ǳzPCXX82D:|M~~>
+ia!  Z\TٹI|hUa$ n5_λw?Bz[nu3A;-((ذa͛/^qV(Q!!޲giASCczlE#ׯXZ*(-9x`K[c:w.+44tٲejͰF-"*~BVVV  @?\
+j C `𨬬,((AAnnn77K.u=?\zrҥϟ{>?5B7
+,x=NN܍lkTħ{WҊ9@ߪvJ2켐o]n.#z"ĦMf``k    vv<nٳ p{ `TQ]]]PPsN999GG¶!v횭(
+H$RG3a''L`sr4hi.ڿqJ[cd~+j޳2vx{m0Vn~iҤ񂂼oSQR544Pz8`gll%BݻqBBBEEL-  ݞ̷ޛǏϞ={ĉ0 QEeek\\\$qttpg=hŻw;w333)k]=%K_Ĕm*RٳK,7nܣ{p@ߑՓ!&&w
+srP补ϯs  Nգ2@R}hU! ۃԿ GgggkkkaaΝ;/\Ж6=8;iǎ-Zj3uƖM?''G'|gbT\ŨneZy S&u4/122Z`_ɝksrRRR444"##_|	V  >(xj ~+[UUE_vv' Ѓ[ny{{+++PeӦMYYY]#bZ|///			554cqESDtԹ:Ɲ~[~Ϝp^,:mڴ)S]vPKCv-go A<cccAAA'(YY8NKK}͚5ᥥps  Tm&5g	 尿͛(0744DDNXLSttM^ѣG)Yw&G8)*p/3f̸qR3'88fޚ֚5P4 u>GVw722*ʨV)++??_WW"""!!!njii  ŋX,n qqq ?B}}Çedd,,,233[ӇJG"WLLLXX8,, Ukc3o8㥒cƌA}ٳg;휕n7w"'.X0my@ 9iƍ/`d...%%%uuup[  <P{N>Bacc* 0000@5 :;;>|),,lddؔ5nO?jrQ4!0UCѕRKޕxRv-{tudd{Wh~08*/#;::>T~FF{r2K99p7n\   @1nk {r{  OkkkYYYTTԚ5kx|}Nΐdf#QVV^l١C*?!z*TD[D$KnT]z㪇ρLLL6~TGpAoF|||+k˷fd< %$$ddd\7  :	;@^@ nZZZݻ%""`rs9zʕ+EEE===r!zx׏j}ҌO6쓦OPݞٳf\K}KcMZaA_TcmbbbZь)/_B$KIIm۶_	  `=dp{`N. .Prр Byɱctttf̘!!!H.p+W޽W]:w`,Zjjjd*C}ͦj*lll2f)J"wUmE˕$k?APߵz?{{{KJJ9rUm''.Zh۶m߿omm	   =ߧ   6***̙z갰Dbg|<ݞ֌+V̟?޾salĉs67TQXA:u*++ر,mw[p]ŜIyoɒ_9Փsᚼ<FZ=d,(((A[[H$~n"   }>聵3p{    mtvvKKKZ*  ƍŘ䴴4uuu!!]v]~%a*lNVq탒&LQo-:ҦSZ'O_T,dt)S&޻Գw}6D쌍}E&F5D'jB>  0O??9Fhmm}uff%.[(aӑ7n633x"Su4Ǹn4ių_sإAvF-ZK}ds}~cGŻ
+5%iѫᔔ3q쐐+Wlذ!!!&  ` UUUJEEښAvjn=q{(&p{_ׯ_䘙z{{_zuhܞ$2lhhxM6;w9溨MU999JMBsi_wUIJd\kVKCaqݠǲA)5/7cժU\\\;vxF"1|tG"hjjG}ag7p  l_/^P_%='N9 p{@ >
+		HmΘ,Ǎ.\ь8w8C`7En?~q[kIIwVVVu5!uZ#D
+5JWUU255-a`aڼp҆}   0NNN|q{`v =(͛7ϟߺu+??}<a1W,^XOO/++)BgRnr{:(aa![ۛh|O.#_aKh	hWPќt\6zyݐfhh8{l		;w455  +<\Ժ=0 n0hoo=y򤭭-e.\:=(t%%%233;!*=c--]9{mXM,\ 'vgq&L()
+39ꅻ[BܲedHMYY(@me݋  е<_]f`Z*++Q b
+III++܎$|`JJJ)Gݺ=~^2\'W}y0s_aEsP#Igr[=$333NNNCCÓ]zRS3LLLUUU}||jkk  Gr{`$ n`tx///yyy^^^ӧOS`nݺeoop˗p,y;ZWRٳXCE,?[~^U
+"]#}-~@ylgg%##pL ={jɒ%xbCCj0  `u{T:9W@n n`ӧB'''		KvVnb))l{:#;zޫ5Մ[dM&-Aѩ^w܉z99HLcAAAӧOWTT  `HM:/aG̞= =hrrr,NIIK#:ӧƭ\W>~dٍޞ&ӧOGS\N;M&&t˓;?s4f||G𐐐E@3V5-ٳ۷o_d	֭[>}Y=   C-{
+''J7촅_J= = p{QLCCCiiÇQ`60n:ѣG
+
+
+򁁁9;|YK}nli\:aU]U./[LQQ1  *?a5ړnnna6m:~6  0u>gr5qDUttt477YFRRr5yyCSVV&..BTAnϰӧAׯ@Z-:`V<  ڜ>|HdLUSS633KNN~d   "zŋE n0
+ill|iLL {FFFvUif|ݞ@~~~gg[n}n@<_Nv^_5jxn[ `YYŋo߾Db\+U8p ]TT,%%nii{  H. =}IBB&\رcG/e˖ݼyr{^<6u놶Ư-UpFZ3bbboLf`R`̙3Z	    O>USSB񎏏ϝ;w:iǫܹ?l@xxi&&#_Y5WI" hVK!+3MSSSPPp֭ӁWpŊ~~~>  RUUL?nKnacc\ = p{QEggg{{;
+mⴵ-Z$++InO3㵴Pgkk[XX#n8TV9s5:_yhf
+ks>111W^p#GnܸAP   `)..r>BЍÇBBBJJJ(iKMeіj*3gΠHa6{SD]eH{SW׬bۚ།_KjAA.v*_~:#
+  6:mu>4r{ p{@ n^xaii)%%zٖŵ~z2ќ14Bz
+]MM-%%&scNj,,,Pz+W .  !lkkp{n n`۬۷	
+
+޽RHJ"FFF|||zzz@#R-7bHJJjIOg\^^+Vxzz^tp  9~~~(Vs9'''=  n= 0@޼ys̙-[,X`ҥ...OnKKK3>~NNN;%bh	9yBBBǎde1`(۶mvpp|O^   ==Ps~ik'O= = p{IKK˻wﲲ,,,PeeeE&	_gϞ\tFȎ4Af$޽[DDDII)"")+apoCmjPZߣn   C?>0V FN^t)5a{%KK0Q3?DC-  _Ǹx|an??ynnW>w1{  s{?NUp{@ K.9;;ɡ ,++1'amx񢕕Ւ%K"##ks @F߿!yzz-cLҒDڻw/jXXXdff~	:   ѻ=0 n0
+K$%%h+**rvvFlpppS] PCMCgDGw>!UUU7mڔӎ   `6k,B_   tvv^|SQQGWW799ë4Я]TTTNN= Ј;|r!!!WWWd2ò;wz{{=z
+n   ~zWn7zڦ
+h	@n
+m%yB  _GBBb8aA/G߿_TTTZZw-8Aa=6;**
+ukmmmD
+TRR;wcP;e  FTm=UUU$1'	R p{訫~yyy?~$F_LII7z24|@pJJJsY~<aY=
+
+RSSCʕ+QoΝ;  g=UUUT/t秢x@ 5999Y=_ 455^:$$DeBᘤ$??]_24|55ŋHLd{HD-ʕ+Q͛  c``PUUGtc!ZN+ ɓ':::BBBAAA<HJbSb
+]vAn4Lь'|!'-5AfMMM'MMM  B#hc1`ݞG_P_yD ܽ{7&&fڵ(,ZfMXX۷ '2)+Ū_~@Q&&&zsrĖ/_~ҥ>@  0
+ݞ'~5-MY=CFzlܞ_eQgggT"2~~~9997o224V@@ʕ+-8@K貽[BܲejR(՘jll.++tvh  MAAwT¡DTUUQw
+_Oq{h%1Rttt<~kiiqppxzz;wk${PHb,X~z"NI^V-[XZZ:$$>'qVON@f֭N  `rqH.ZGTUUъ\hP|5"n u8::^|5-u{999Db%_\o:tsKn|zN{1COł<>DVϫm۶JHHT)YY$	uEDDRRR***(
+4   'N̞=Uc`-~y﬛w{[gt{dgּ|2++G(@GS{r2㯎|##lp{(.%1!^hI{S8zyPl~n.|8}uzѻ=OߴAgƪ	LޕQ39OkW&"""%%\0oߎ:i lْ+h  F39NmV=AAA5;n0P(o޼![nD-{{˗/ۃvqF!!!.)_M;x&zqkMdarm7TtcmyIY[0jT!:z)ȺqXЫR3W}޿>\|$i;Nߎt==}cRa*?QwZVVVFF9:1MGGbbgbbbIII7L  0֑\2uum6ݞbQwhz'e ZPLD&nJqpp8yБkjj&$$4CݧjBڇ5ٳS`2&L;y2)ЃY3'̒of*d^Qvj
+gbbB͚%N7ׅ^}
+n33&钛.i?T͇;CvQRQ^ѥJ##RۦT7IK44(-"(^X0 DEX5FF,XboD#g]XF9ܹ3swΝ7_O"Ν[~}ь;L&d^^^5266޽\"i ?hѸ=m1ۣQA8_=]v~l@Ezzho>tPkkk++.qg{jԨѤI+W&yz쉉ӧ8ԪXx/O[>pE}{CjWr=&'YXEb_NY٤mʕ+&^RE]EϢn-%6GO)Ʌ
+}*^/W+;i|kg(gz-Zdkkkhh8xQQ 4i7^ɦM&Z33޼y3%% 
+8-=;O0;c烾tl@\~m۶2O>r'(h5kִy:ՏiARۢ/QdL|8o߽c.ڹΞbm
+zSۼ3E>'O>Rk1%{q/>3uF\,ڵ1ol&VZx]^ܒE]rz*UqTTT:M&?6lXr&M;v,11=  -=2K2+:3! xΝ;fiiiddԥKիW	<xȑ#kժeootׯNMGneZ8*V(agz?SG;rq4Ůܹ1@TPO䴄%Wha^I*j;vT3Q%W̜ڹI玖b+Bֻq6(]VOt1"mO၁͛7^z~oۦ!Ċdsmڴi5g͚u̙/^а ^+l"-ɥKVƬlO׮]!CƳg?{֪UK./^իO<9zhKK&M,\իs~ڴU߸|^߮%ݮ^'yʲݩ2<~45~IBܢg>)/Ǻ5}ʔ)**c_%ݞV^E~!^576x]߿-e\x8<ҹĿIwʷGbu*UwO{FHKڸiΝ;vcߖ-:k+d˖-kӦQ-^=4  oq{~kkkEG6١|(V|]d=d{ lϑ#GNڸqc33N:gRw)rq6iҤuۋϓ9͌Rr77vἎL+r/.F١F+'Xj\ӭcr~,nj=.(Z85{¤mz!56lHY')<\4S;vkhD#&2s @.=F?:L0!,,Lʕ+{s+g	3wU,+[gbd{bccDb_XX)oqe78d{AKJJ:zqiԛ4o)SXZZ7Tw"aуc51R]Ӡ/QK6##yYz`eC2X<}ߨ135|/ëU*_iܘٲiܖ%{u]Z%6wW=#zEիWoժ՚5k7oQo@_߸6S3gܿ?p Th%"H*Ke!W^=ybcc[@ ۃӧOO<9{M3K/iӦYZZ;ѣ6q6nGun:*_S>6a6kTPt%JB<gNk},>i	KƏqʩk'<0rFo,o	q^!^z9`]:=Qudؿ_~Z/mMG4aaVVVu>|Ν;ݻNc P(*]vuR2a";$]0hР+W*_&5LɎU,
+UOxgu!C-###99ȑ#I&ժUstt=ҥKwpp0668t8,'eޮyɒEKq̗[\sKpuŊ}idXa򄖗MUǩI6zb"E>2!4O`Yxh/i3Q3K7F;yǩdҍ6mxJxmۦMzmhhhjj*~T߿_c4 ,=ŊJ.lAgzyy5jԨz66m::eDĒ%Kի'NƌsСٷ:wBRǥr։zڔ+WLJ/_̪Nn]nضYʥ'|ȱfP@O$|vѫZeggj5է罋(r`©֮TjKo\?M%Oߴqh{iӦ7oҌ h9n@ ۃLzzzbbS.]ھ}{qeoo?gΜǏNʑe˒%K5kfccw8\i?MΤd".mCyz^XHkI%/^X<^+'ޜ{}ԓo')S۳}|4X$bW۷/ڇV~5w=pI7y`3/fWt5_|&+"^߾=}tL'O~(eH*S	ennnW^MII hзd{=(RSSo޼ԥKƍ{f_=/mmݺkddd}lRéQz}%ݤbӔy|{,Jr|wzzr)r`;Mٲ_yu{s;dWE;'I*~wA}WcĖÇ6׮eZիFf[4tp=;<sVرclllƏ=:ZﯛfUHRSS^zm޼Ν; xk=ȵn$=d{ 111Vٳ8kܸiӎ9jF] 7nXfSŊ]\\lْVN4|h#)bXZ_4#fdXAꓣWq-ܘ2O3[WZ97^<AٶGUY<3ޖMr=`<eYBܢ]ۇuhuU%IA<Z1N. S=fϞmdd7bĈQQ:UHg͚մiS@u}Ŋ.]\. dgǎd{P!_W\	ٳEG}7WrjUE')<|ڵ⼲s!!!S}Ι?H7/:XDn<ǩIݬ$Ixw3Q!/>kټVz7͙?a0My竗f}+u߯Xms{s\2efwQ5w~G͛7aÆjrww?<}}e3g6i?h  l>2W```߾}-,,,--,D]g{/Oۼysy8
+
+*P}{^4060gf+eĞ770K7ۚ6?H[$"IyxO)RxvmPQ+#yvҨ>+]كu[s4>ҟ>~?/}=fy;֬oWeZ[6mlhnm
+%[ҋX֮ðƻsw/"-[֨Q###A۶-#0PGz6n<qĬYϟ鄄n x_~n⽒aÆ=zԬYLӅݹsGٞnݺժU}ׯ3kYĐʕJIɖN,cǞw|vW2迲ׁ# ŖM=;<VhTh/P>/"+vNcǚRם먌.HkidNĿ:O,s''уc:*,YDLN
+}ZWF;=G2W8ڶm+ݻ
+Qwrr^zfΜyOh |){Eq6}ZZZ3(((~Vªi6ʪ}k֬- Wr=ݫN1/7al?NM5\4t颊|cdXz)BAybl<}n?-5-OFN.U1Ncf%,cS㗈Br\w>:QNi',zҭ[7Ν;_>yfe}Ϟ=dhh8uC=^=  =AlVr\=ݺu+::zĈk611߿xxx֭ƍ2l5kִ{W^} 4URZHAy.?Z_˾)TӒ%(V?Ĕmʚ~;h5x]ihguƎj&e,kWY&j˸z{}ժHϥNPz>LND751400iӦzzz۷O
+M|}DE[k׮>}}>|Ȱ  m߾]8ǅlA ۃ(###..nϞ=VVV}Z[oϫ]v/_v,xbA=Y|MI)3_ܦy)Pq#=HD9֜>YeǵPI[LrS'3a{v2\{{REƌlv4Mo/ܫv=߿_}iGU+;vTs's?"4EJ-i֭[tRdI??۶Ny@@֭}SNݺuGT  G}{!
+D+W@P<zH|!N8JgI^l8;pa,--5j4gΜ3gS>fAIqԫZFc@ޑy`<nMF51k(/޽9^!.1/P3yRu}k|U=J,"]5߫E^o{6t0vT][?uŗK>zVv&M,ZM7?󋋌0`ȑ#mv. .Sؗ\Eз ۃI.߿޽ƍW&&&ڵ[dɟ=cǎM8nݺ41cƩS>+R^.>zp̠R/>kH*:z-t
+oz7]iNNoW]u	]wޟקW])`oCCֶAU*[<b cjC577oܸŋ"#u4Zׯӧ6o|͔j @N)"C!`JOO={M֠A==='''qw`]ݳzS&Nhkk+*3u'NS>=.Zʙ|q{Uߋׯ#
+|1#]8395>C
+to)ا˃~TgNjze_S#7rq;0]*T1ќ?ÔF5n֬YOtɼX,""аVZApp7^zE+ E!d{P`ݿ&MjР8rvv^`ɓ'M;6e{{{q9vd~-#۷(^)W (w飣4ml(]$Zn]Di;GTLA955u$igΆ5^ϳn1͜@zue\իEĉ2jt< @7oF
+𰱱166ܹ5k.^H KQ	=XGvvv622rtt;w'^mܨ+N>Ynʕ+߿?#eG>RJ3'oJ*Z8vyFRC(gl2eS㗈0*6fRi|IC1%l41E,.\=utucicf*s~4>p#6ijbCDH۫dуc_\1i|%
+hr\PK߹%Rd9w5|:uꈵkgrr23  ׸'A <{̙3K,i֬~--ZtQݏz˗/{zzTXqȐ!{IO[{<HHʔ)ڴ1N~۞^WOyo{qjҺ5}Njا_<Y(Ӆ~]-kWBRi`uXV'OnWƩD9Æ8~'ҭ7S!GlCT"g}}NN?ٿgYoNNqeͫ."6MeM(}vuh)*wJ~{~GSSӒ%Kd:ճ|yFPyl6ڵk/\KZf @޳=\EpO.l
+7o̬e˖ѣ#e{oޟ!ЭsGʕJ}٧>~Sicáz{[껴eozn׫moK)SwO۽;=Ǯyxȡ4G>aPF[68r`|{ֺ̜]sr%Jvik~DZ>6qER>NŪ\PC|0.*Zg;55wZ3፻vcn"m%VWM!"ry0GkӧϾ-[2֯.ZѢmhyDD+$"e cQ	d{P`%''<yr;wnѢŬYݛi=~~W^k۶m:uzyW ۓƕY[tQ`QcMߔ\%K*"ZۢNQr#q3~t*I"WP@aͯH :$~͝]̿ا۞]w6Z>I9-9E?-\*駟/^\b..~u[EhXs=ܘ	{)z,--/~XL6vYYYif޼yW  _(!C!z.]ڹsgSSSq7tPo=7nuvv611޽{xxxjbh#R[fqή7UVPOK.ȱE]]-`kWrBihvW.NWoz%KWVs_M+VV\b͛ot{z^N30zڪjb{U2]E~MŒb--*p5aløz>_[W\٢Eqo*$D7gݎ1cFÆMvǏ  ԷGJ.+=(222RSS5ktҥr5k:thtttll%Vw5???gggSSΝ;&[ڇ/~9?-x]_rhaF5E4t0hXӹIS'-.wCiagwZ4ߤavo_#VRųS۳?ҔsJ/,
+;bxZ93w,+}xkg0Qc\Y7of,jX߮zZӧ8w´EtɧM|u...m۶]vmBDn2O?ԨQ
+*N>}O>m2  _з C^xqҥ+Wvf[lyիuܷGr[sUTqtt\j8-- M$5nܸrm۶ˈݤvdKvظN:ٱc_E "C!JKKqFpp^lۦ=˗mٲe˖Kn޼.#h:""-izX:uޤztrfF`CLSNfffƍdO<yM1  I}{'QpL=k׮mݺ\ <xUHȦMAe˖={:Տփ a<=åÜ9sEF,aÆ~YXXHEGG߸qT  qO.= --ɓ'7omll7nukF`>QQQm֬ŋ a${vie2\)HܲeۦM@~BCC=z$a @c{rd{P+WlڴiС40`@ppKt}O._۷<BM5RWzDR=A/đebb"ӧߓ9n9rdÆmmmvsΥ&v =!CAA&Nܹm۶#Fԯ_аe˖>>>/_}ߞW!!۹jղ9s됧\<5vڵk5bT< @72'oڧOSSSss={ļx DGG!d{PW^ݽ{W&Zj(QI&gΜO=v6lEѣG9rDzDn{^=j(sssqL>xddzpn-[v)h==e˶ifŊ'OLLLLOO #ܓ Crݻwajj߾}E8qMG
+:|1cǍwAqJAՓz̙3-,,T2dȐ?^pK۸`DĤIV}gϞ )" z˗۬YZlieeնm[//Gmڤ=rǏ1B֭[wܸqb)i="G6mjllܭ[}[dXN
+_'OܬY3kk;J9䤤$z  5=;Al
+Ǐ9rdܹ͛7733svvg*ٞcǎ͚5I&رcy>/iժ͛SCCut \<==[l)W4)~	- @gٞlA ۃK.'&&>}ZhѢvl̙~ӷGWr3gxyy5iĤ_~{J.a%Ǉ̬W^I9_mxK&n۶hODf̘qȑ\ ("Cp%Aً/?jJ̙3~gm:zgΛ7^znnn2,-qAh߫e\ĺuZn]J7  eDnR=[2?ܥKKKKGGǱcǊ޽{Rn +!
+D)S@Pٳ3g,\cǎJJ.xzzըQsAAA	,Ahӫ'~~~5Zxm^^Ώ__ߌDG{yyjL}̘1ݻwhi :#J.=d,˗ǎ[lY۶m˕+7lذ}%oŋ8OZjv֭[w-=M$
+
+NJ|||dtӫ'&&ɩdɒ#FyfJJ
+p t)::+d{˗/6jԨtcƌٺu뛁>t%ٞ[nXqƆ]t	H|uAh+-qStfwww+++OOgQQ+(*jڵ}^Ŋw!g<  ݣo(@._paŝ:u'51bĶmtqƍ+VСM׮]׬Y2.փ 4ǫ^'O^=׮]۰a4h ܞ={Z			 09lA֫W.]$N_^=;;\bunZn]LLLZhlٲN]y1_ HM۳;|ӧO%1,*J4Mh@D3"Ѥ f{`l
+/^\v-00_~666App;wt<J8sL
+_bEӦM˖-[~˗;v?8ٳgd:3PgF,sFIv59,n4T@O5LQ_djGdm*7]}7-S.Dԧh3X9Ν9~ڵkvZRŋwM]]zYYY^ti d{=(ryFF׃ԩcaaѫW_pAٞSBBBlmmbddԥK޽{۷ɤx Go)CڬHQ%G5kr(ˮJ9[:˧T֕e*UU~xv/S6<G.e5,aVQǈ͗_~)WWLgz^FDDGG9ԴCK,9ydjj*7[ "d{P%%%]|yÆⴱN:={\be{ty1XߪUꫪdR<ǹehdr]1稪9]ʯŞʋäZjeʔ_.
+]H~~i7d7j<tЃhT ;w/ǢE`l
+[n1VE6k짟~pB:ۓ1};۷_~nCX1]y7-bo)Me,R3qci(<KVLװ'e%UICJ\\*giW_|Gرcd:V=%,l߾}077^z֭p= ۥl}{d{P`7nڵkȑeʔiӦʕ+O>KB:3-[DGGٳg?dR<ޭF}"YΙ"Y.a]{-GEe725lzQ}krTKS߇I/ݻ7Jf	yvezn'd>j=5jxӥ+2Mtv
+	(y{{ٕ(Q<|hW -"d{ !--ɓ';v8pq.]|||N<l< ~Gy8Słc>mv=v]_hyXc߾}Ϟ=KOO9 W"d{PsDGGO2e˖uСq.O$٫< _ 4<9|:u$͛O8122޽{z  d{l}sϘ1UVNNNӧO\_T~hV#-XťN:7=zttt͛7 ^)VK=4d{Pognժӏ9J ˗/uԴ~aaawIJJ !CO<ٷo߬Y4iRfMGGǩSر#9<\(!'YgϞ}]PPХK J.=um=ztٳg;;;K"""ߌ	/A
+\re=j׮mii٫W/ҥKϟ? Cз ^gmi۶mjLMM*nl 
+n^,*jƍ={QF͚5]]]W\yԩ:  O!C$qqq.\[hQR%++QFm޼9!"BqKsX+WvvvW C+vd{d{P`/\M6n7nxs[.|	sѣG7n̬ENȠ ٞlA ۃ.99̙3k֬qsskР!C6lp~~DAؓ9~͛׫Ws>>>{\\& Cp%\p/^|ڵk쬬z)޾}+`_w;vC:uڷo?wC=|P.` >l}{d{P'%%]ti'w!!!W^ 
+N?~|5jhѢŜ9svTL oAl
+K.mذwFFFݻw_bɓ'ߌ)0A^l޼yխGcǎ7oҫ N Ccccj׮mddԦMoo'Oڸ`(p<xpƌ͚5344:thxx_H;	 =\Ep%AYFFFZZڕ+W6m$N,--7o`Ç
+	D >G8Q/}v@e7 |@w`oA=r_ɷo޹s8344tqq?Ӄ >and˖-suu5ԯ_؄ZH J.lae{oܸÀ/iii?𰷷СÏ?xȑM8&82/^jժ~կ__ill,2 t%}{=ć퉏322իWxxG9y$yf2eJV֭w4!c#,00p6tpppss[fͩS  CL,ۓ)~WTV={699Vy_uUfMq7qD)ۓ~_ "#0PXCHϬy,*f8BZUYµʜr<Aؙ+@-Ӧ@-׮Mk9+^Zi6ݓ~޽{gg5kܽ{7)) ڱc4d{.#˟={m۶N___OO%((ɓ'4Kӧ?_mmm=eʔݻw8q.\8w謒,k^vעq%稪ga\k<ەz#w!GoRR+ҾZ}ٽ)Z~0TTT^2ZV>\|HYDyJLL!~/\P|TVD'N/$ >hblޓ+55U 駟.lll<iҤ'OX7v5jϪ8ݻ?0f̘ǏQ36cr-GuPY˵VӲJ{-t,YsMHW[fU˧=ˢZ[T]3QFŌ3;O{ ڵK|.wvQ[oۆ?UL~^lWUUY(J+R/\*^u)Q.\>*%(PPLEnꅫRթ,TVTyi媪YN}nUJJo(^p*ݧ4ˏISLϭrQQ*e*ǔʱqȲn(A9۷o_glHZ6:Sxxg˖-+VXxq#GƾzF9&''>}zС%Jʕ+PR3SvO(z׮}j;?-כo[>nԧdnAz*WW^l?\|ѣ<x@c d2ۭLիa_Nկ^N
+ixU<4bbʲ*3U~U*GAb*ӕ̠^gewS3-*xvEev削Ҕ7'[*/IM}QPxv|QGR}YHv!K>QJŔ?{cU}guǎ7+SeʇP"DD?MLT<+Q$MTLZjr)g}]v=qDzz:<rj:uVE:u,ɤXe~ǢC9ںfr-ߵozLh7P=<[n['^166.YdҥMLL믿 >=^TE,Ytc@z,/)bN%LQYt驴ruPSfP_RjYp٤jX\y9QvkT߱e|¥ysRTU^jݲ(y͟%7]QGWb94/媳{L#mUyr,d*GʵRYV9QT)W]2SLRJ3+U"H-ZPB~x0}/_#GnݺjժaÆ9rSL+j#LWDmn-y\DC%ߺ\jcYy'05Zn3sK;bΜ9GիפIv%2# q =SnݤSfѣ4Ez*=P۩Sf͚UPhڵkC{iii111;wܾ}jeXӳ+M}fxQv4,O6?9svZ54Y[vorh~s5C-?6ZYN\B<x3g\x޽{ <zH|޼yɓ'o߾WJ%+WH3(ϯ"fS*pułEe+$jgɂ4rTT[gP~IZy[Pd9zYR-+pOʛNn+Vˏ6{I̚?NcAEGA>YS*G#e	v6\j85SyEΟ?5a;;
+*|׍7:u޽{?i#_w޽#%ݸݭ^AfzwM{    /^\|yvRJ5mt޼yNJHH` I_RRR|||;)ITfWo8    /^l۶RJ6<yCĩ:     >,r<&&յz48qݻ>}     =}t֭>>>;vxwZ    ϼ$r<99Y`    xio5;     #%v     =v      >d{      >&d{2+e٣RB\\l]v=uTx.)	&tm.)4tҜx**bNQ=ŜXXT"b~ʕ+D    6EzD9"4h Dkkk㰰0_R<VQ"MY&׮:ʨhʕW"ׄLXEN:%M'     sg{HXXةL3Hdt)"*(fKyR׮].ۣUꯨ"S[(<Jb,w"eO!      ]R\oL)%*}ZԊJEEEJ%lkԷGⱢӎJĜꗒI~A*+
+/      PΫ((/gϞ,/zOFʢdT(23hv2+R,=/R5     =E&gϿ)wn2{Q#u(2rreW 2أ\gސ+]4%     >~"7w"ۣɲf{}\RW".     g{!=מ251hQ     'QY"ۣ~wrň7yh^{r!uD     orQq4/:A_{.RkuG}zeY㭭G     o:!k4ܯ\"FTF?V$pTJf<kߺ94%˞H:3     %ۣH.]zʕqqqN2)fSQ&euK:fRYX-:'EU}"błʩ*!|     #/ٞJzF"J丸8D*jv=BXX"L.Ū     W;XiX'ŲrR"<G1ܱtbNԞL*w~_e*r-E".     PX'oq     (@=q{#     @f{dwu     @ae{bccmc     
+iecQO6^z                                                                                                                                                                                                                                                                                                                                                                                                                       @v? 
+endstream
+endobj
+9 0 obj
+77065
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 48
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x[S[OWëW5Uorg2wnnrovDP%n1q (&[H71&sOv.6oH !k07<\!R$˲7l\`ȈG>v	{'Z!oaySq9>\XKH9p^|N?vYS n$SQv{ۆj
+1YQrH`XitW2<::ފF#(}'ϋw9^*7}QN:M&O:{{A3<2sxx~m~/vҙH.)A2 0t8/9A@n٥r+dBNsG (d#4&HJ	~7iE0W2:Ⱦs9l1WRqC#Wqvr߾ pMǊkۿ[]]oOTOUϞTmnx{7/hR)lVE5E[) 89,EHD3	\W+++	\<m'T.-ggN_3&Tl[ˏSVw[=b'>xĝ=ɜV~3+
+Kcx(tk $KEtjػ8zۼ<uzV¦p9m>.Xֳ5T /`t
+ysm7h6N{7ߢv4۳S*0 $c$ $9+W;^<]__;T*Jd8Ӵjy6\db1HgySO1mYcj!	ho!4e=@QC9?m41-243:F'co푱<˝jokkUeFBz>|k!;36n3#Ns.y:Ɩ͙'mYg<ĕu$SSyUӔA$LBMw+##ZyCni﫿=PTչ#fo}z:ǰg- xF kvd+F!?i#ٖnJs'^1hDx{&|ɔmH!7;J&x=Le_
+SC%c?oo"{ڻTKeq+^4N4H90@Xq{]የz˚r3#ZvjnROu@*N#2?ih22( '>m<ADhledgZ%z>mb͆rhр_hl(JC$Z#N+UNAFfEV{jr,Ok@}  ((I$`AHF@ UUp!7e/z(_﹍^tx6>v}m;昡s)WO
+t*C@2#):$@r<lDϲi9:}!%;]	Zb
+hӣG3S"w/ :y74spjRz1vO'BQHr$IFg<?T7-kW/>ct9[fü@W09++ޮX,Vk
+otVC1< 88rma8},C?fN2*E4#뽏ޡ,±`qSw7DOŨʂ{mB/y?S[4I .EQ5VޤXe0(W阞M!DR7?:,Gȡ\Of!&]ä(E<+ĈC[qb#u*Äq
+˞.3GFi|fj-_gY-Q)S}X&^(@`>m?l<< ~YEdj1OwTP|owta BA]Ѐ>$bu?fa;uJrJaP,v5hE:@@+G.?Y w<b0TJ5ޠ4VzBT#`6&HGUS{/1k\6Xڐֆb:H95B	y;G+_wGGdiiQx uDFژt:9C7ȼGT&.}gQ*`*TUEyX'D"J=>_D9Ikg/˭H_&g%MD	PQXH6ە3(=/.W]NBs̻?tPdA|ɓ], <|im]3!/7!tB%"N o(9- o,g4d^zܿ\j!688GJ[(ONr	ɳR8X,Z\.f0Hs`qxY;{uPc5|B(PgʑӴffp]<Zvy*k(^PbggI̺[!оՅe1;Ŏ_9o-N쭯	|#755v(FŠtubeTڗ=>>4Ъ@hFl'٢l%.Aԍ+s84}/l:ѳ0K:KmŖ׳pKXj[_z+en?=gh2=c{[rh-H~~3G{nqV]'irh]#4$/wyb`:bnQCVJ(nM$b̭t;j78a0:N~P' TEڃ&`$4@4'PT˶JvJ]kP/y V ж"jIioqDY_ԃR(i j{ l\uOuIc6HH2IݱZ7B[jPGXcqA 9 PC:` ݹ
+*{k=9uDfX||s*fM@ pUd)O۞(<.ˡYv`%Ң~42`^o;?>d~om-/ZeQ~oX
+\!_`Q
+}}Cfs{{Gؔٳ Jy*b-Cר	r|,	oo.,̅axqM\$|mrݫ
+endstream
+endobj
+12 0 obj
+3483
+endobj
+13 0 obj
+endobj
+14 0 obj
+3483
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+3483
+endobj
+17 0 obj
+<<
+/Title (fr-soft-frequency-reuse-scheme-v1)
+/CreationDate (D:20140609020132)
+/ModDate (D:20140609020132)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000310 00000 n 
+0000000398 00000 n 
+0000000416 00000 n 
+0000000454 00000 n 
+0000000475 00000 n 
+0000077723 00000 n 
+0000077744 00000 n 
+0000077771 00000 n 
+0000081395 00000 n 
+0000081416 00000 n 
+0000081432 00000 n 
+0000081453 00000 n 
+0000081475 00000 n 
+0000081496 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+81697
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png
--- ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,269 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F VIDATxwxSedv)e({,2Q!ںwh^!-e-ӆgy̯O-6U9I{߷(      @c      	q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Ш      4*=      
+q     @B     Шh(   ۷o_|y^ƎHM     7m۶-44488xԨQ     HQQQrrƍ3226o\PP@Y     kӦMBJR֬Y~EQ     K,ٷoFQM6ݹsիi 7D   _\rҥz^tA_~eΝ,S" p+=    (SRR222R:uԹsm۶-_jR% p+=    sܹovΝ&iȑjZѼy'[n۶mB    Pu֭ZJVO6-,,L(^;vdX,kff& A   Jeҥ'O6l؄	$IԩS{yy]C 	    UJOOߺuh:uhT{!IϨQpԩ{P1 pJ    *ݻwZl9l0N(BQEQ$I
+;vt%A ˎ   @ڵk7sLV\J}FִiS^O M    Z
+$Q+ p[   )gS     =    @M9BT q   qE m      4*=   qJKK; Έ{    c0.솮1\ wF   x|a7    
+!⒒.N- p7J    x`0VkLLLBBd2Lf2""" ps=   IKKZΟ-bIIIxJgB {    Ri/OEULy 7G   x S5   )R h   <b1Ee1e 4=   gX,111iiiKN̜ 2oKw 4=   X,Ź*JJJrV-=  0w   AYOtt֭[SSS]!::Za6+ q   A.Wè. pg=   g1JU?g3M=      {)))C n    j:ߪ+PdY G   x(!D\\\\\\6H$ 9   ;'cNHHB$%%T>  G   xjq;b8/:s @   Gq&>f9--l6;tQ.ι{  n    fh4:ÝꓝJ9{     <}Wd    xV^/5w5;0F1::h4x,{    ZK}j#I[=Vl6՚ <q   AFcll֭[*QsLd\c <q   #*>IIIʙTɘ   h!::`0R=nV+s d=   Z)))iiiiiieGo9g;憒$g'%%bƲx,   X,WSrȹ"gʣ(JvB$$$$$$8g[X=   8/dr<5=W|E{    bX?<.Δ[{?Ilb =   gr.Un6#""CMnqŹ ñ;   ARSSKq]LHHp+Y)& -   DEE%&&fee9s`s_jFFF И0   P;/7fYQBάG$`0$''WsZJJJ\\\Ǭ@CG   x:`4M&SMs9gq\N윎ZB] <q   fsZZZJJd2U)#z $$$+ O@   xgUrUM/s0WG1}t!D||<    <HdddZZZKj$>			f955M    V)ǭjk愄!D||< x   DEEEGGGDD\Xi(LD?z x   DGG;HJJJKKZiiid2FgOMV檔ht^ (=   g1111eWr>Ba$IjX+s֤    .jZFDDL&j6]PDDDUsXbܹJ ϥsa    <HBB3뉏.cXRRRRRRI`čԜP\"O^ߑ" 9%    <GJJ">>>66܈-ј윻b.     E"篜W9eO <q   Y_1\R)6 p_=   gq^oǐ. ps=   1BJkZ\W("& 1   8IJJt溰!]ι{ -M   <HtttJJlNKK7F\     !55uΥ-KEk0 q   Y8/4LQQQU< {    Od2L&SMya pL   =$1w 3{   Ϲºk).P+    3͑RRR_ j w`.   qf=F1""㚪 И    lv኏OOOOMMMMMݺu`B\}ʲ= Έ{   ٿSn.?/G$s;#   2L&!b; q   9nur n     Q!   8篤$$$Tz?[)
+#     z$sP   3LpJ/w=$)Lmm    YDD\j w`.    5= *W%   Pk 6ŒbX,U{Ziii_RCge0L   @(`.Z			.h.c_LLLRR"""b    I(i6!**d2F!lNKK:ybӧO\     pFh4FGG;zWY昘WeZi/S5   5sZf`0DDDX֤pgi/<:::99lsyY,KLL4L   @0dOMMMNNZbs_[ӧKNHHd+    x=iiiΌ&::}=f922yChZaYJJ֭[]r`=    jʵ^РYVǕp<XqlZCjjjzzzVVl6Wq   $Iqb0 ՚cX"""<5}=%&&:b:q   Z$z %$$GFF&%%EGGj\d2kr6X,r[   $Ib0(gfa2<vr2Lܧ+xr;#   PS*PF&vX,5;IIIjp{    Ԕ{d29HII#""jOm     EDD՚Tøy}XxVL    5嚻RHHHLm,KLLLMlJIIaJ   @M9EQ`HNNv.&UNBBBRRbRDGG;qcVk\\;RB    h䢢*e&***11s`0")))444...%%%-----͙mߋv]yfjW\s    )`.jF3Ljl0RSS###VkJJJJJ
+LCA   \(p9GY,gÎW&"\x())l/h4LWwUuIEEE9gfK]5    jhŊss#7>R%ϟ:LbLOOhL   @1 9    BhLFc||<u@#C   vA#E0w   Zrĉ%I6K$1EvPx&j    jJe!=0Ra%* $Og    5>g!v p_=    jM[      Q!   PS	SY q   r<= P=    jG$X@    )g@  n   @M9I" pg=    j ps=    j     H.j    5|(8 wF   =&D {    ?3R j   @M;> ֈ{    ) 4=    jE,@    )Wwm>MŹ|hP    5\5P+=    j\#   PS  q   b0 4=    jʵ2Ĉ 
+q   r$>P+=    jN ps=    j\Z!   PSesQSy 	    5ZT j   @Mɲ,.6 B   * z|~hP    E    @HxK|@    5 pg=    j q   ?wf(8}\S    5p8?sQp B   =&4 #   Pk- wF     Ш    )2\z@    cf B   =&D PC=    j\ PC=    j[y !    #I%F
+q   !z  7G   [D3    FΈ{    &;#   PS @@   }(8 wF   C$IblEQY=j    j{D 4 ѣ{5:ѿd    5zhаZ^2eÛ6mڸ?ʈ{    CնlٲYfk֬9xۧMֵkW//{    ԔJB(x. N6l(K,Y~_|{	&4ʗL   ?l$)88xĉaaa+WoWZu{N:Gލ%    !á<tv/UlBEQA,\q^mEt]9+{t5"sOwR5O|O}딽s]U2*\*Щľ◽eL;,we읗{e|[mZ,*굔;	/\w^qU܎垕i۔ƴJfUU5*p}"K>òewIUno,e:}ePj**^+^~U]+nrϹòm۶W^yΝ;~aÆ}ڵhOH"ф	   ~端: FSFW`^nj4ɓ'?WՍht    )NqZ~QemLp]\߁+P(w纚DQjPʝ=p+5탨6T|YyDQwUr۫\kyMQuFM^`-Bju`e_$YTqKlBY_u>rsgځmV+}U^UYS-#U+>۱牢(V՜w^ܻ.QDe7f[lYnݺvJ   SH:wܺuCQaLGU|p8srr種xQ@ϰZgQvV癕ɗ=ktKe&2ʞ-~v\|VuUعFr)`A^ep8&bnPiG[\r>/{',;㤲;VeCU̒t@_]\Vi`T1Z*{t\ź9PK+}3ۈrS}3j^V5ϵV|DKKKsrrΜ9sܹ<!DΝ{5    ٳgϝ;R
+KKKVʅ8U2S.ڨ41:t]**ҨBT0RJca٬:>r\͏*^VZ>rT*DMX&jvT+Wu㿊*.Yb+g>tU/ߖ4-US\\\aÆÊt}ذaF
+h4     F8==}͚5l.,,߿ǎ۵kW__Fz     ~믿޲eKqqqhhï>}6{     @(ɓ'M6lrĈcƌ߿`jXb#`.     Иeff]ݻw߿&M͂U!     (%%%,F8      4**J      И      4*=      
+q     @B     Шh(   ۷o_|y^ƎHM     G[?CnBBBFAM 1   @%''/6СC6m*((, {    _t̒o߿_Q*    ;%K߯hZmHHΝ;W^M !    xʕK.jcǎ$/;we[!   PEQߟѧO^/IRhhhΝm۶|rJ     ιs۝;wL#Fh4IZj5qDum۶pP( p=    TZZnݺUViӦuyF;vdX,kff& A   Jeҥ'O6l؄	TN:?kڵz| M    Rzz֭[FԩSFsuI>>>F0`S[RRRRRB h(   tkٲat:J/%IrN|7!:v #   Pv͜9St:!GQ^^^Gkڴ^\ &{    TIVP$g#w 	-         5j) p7=   qNv1w(
+ 3   3qfF q   qfܵ2 =    $66VD5 b!v   `ZcbbL&dx5Q՝0 q   AҬVgbXRRR*^->>Ҹ5\ Έ{    Ri/OEUL_ 4=   ;a!v psL   vz    x"b6-r=, n   ,%&&&--uIىQQQFm)= {    bX]sUl[WS 3   <HBB3뉎޺ukjjj+DGG!fs7'    IIIBJew^XUS @@   xlTs6 q   YGRo    j:ߪ+P\=> Έ{    %+擖霤!]Q] Έ{    9!!!888..NzL&SU q   ACjjyǙX,$"".ΦB psJ    xgc6fsH`0L"˲`$ =   fwOv      <}Wd 4\=   III܇{ A    <Hbbkq.Q9w     h4nݺ5===111**yysgwS5#   <hNNNʪ$%%Uss;ce.   h`05qC 3   CY֔Fh憒$ ;#   <bq<e/7QQQQQQ(
+PQxxk_r>7P{    Rq^LyjrfLyhAEVl6GDDL&ٜ!@   x`00qqC%Q)/HKKKMM,G   x"lǈ25$I$>͇R    $55599ٹgȄWOU)(*V{˅h   DEE%&&fee9s	yZZZ\\\hhhxxx5k0=jMKKX,,   x(BٜbXfs Nlllś8SZ{Py| \z=   3Fd2`.WwsRd21{    e6RRRͧk2ulY) *2θE   xgUrlͨ)Y{     $222--%QQQ5_ݙH= Έ{    OT,=BYӧ;[bcc	p	    $***:::"")kfjF9!99YbJJJ\\$ . q๲ݫ*dL~vɿTr	^,˻w
+
+bD @Eފ4՚f0(9[~K'U`0
+!X{ s^z_|$ʬ($yDu,;){kUǅכB[=,lRq؊?r{U?WCZV-Ruv*0Ϻm6iҤwy]v fsLLLո")))***11R$j%!!!:: <Hzz}gZ>5%vz'w%~ݏ=XBBB˖-eY$ ZVψdZf3 JIIZTͨӧ!)pi4~6-%%O>􇿹uzdk:xk5z	&|WOJE ,!!gee'&&nݺ5==9'---%%қ;?Fm:ٜL)KwL	F=PNy<䶏slޔsؼZtS=3zÇ	 ƖVc4s["VBw8ɔ,P{Ffmܸqʔ)SLsq_uvTJM7h|Iaa!e O\Űr^*E͙LDA==@RXX/X`̹=U+[=^M7wG{"f+x=zP Xկ^5g4{Fѣ}+ȔSsl^HL5`/ʭjǷ-eע(lrY[o>ɡ, W۪f) pst bccǃo?*(qԊTRl4O4ej\?Uێ!^EBWso~!~$e'n.$-liKpqy6M^WL:-#VXcӇU FXV5!!yXs4mB.sS4,=@CGtۛl9ҩOߎ8qFq~(sVEQ~@ur;d,'Ntm`ݝp81(zpyyy63fJOϰrUG_:,W8WWTK.1qܷlޠ"^gfϞ}]wM6-(( x踸$o2'iiiqqqث<͗ŋ=E.F?I n߻w/lٲ_~إ[=|:ۧ)s/D"yےQ2+~Z#-bLhn>Bco\۹B_sysGĘ!FQ.	E=3덋6b0T1n˗OӮ*D \F)))f9---<<h4:yfkWtts}8 hҴaÆ=c|L[ȠzXoKk׏}~8A6W%B$QZ'9}C`wݮnMOUjNHt'
+qϜ)N>}'M%[ݔC>}bˢ[̙G¨ n`0ŒVv6JyE n8w;̜s~ϵ@ZG~gŹUKh+'9/3Kqy{9*$l6O⫽k0>싯v>poÖo~L7$xc̺}-uv6|땏:ٻ^j<^m>  L|>iiiM&STTTU89r pkC=tĉǒpCʵkm[O˖~׌kѾWKlӎ]g-[h׬;?xPGZY[Ƭݟm{fnٷtҹ馭ցM>bK^2|/7zNԢio&X}cn7Af"P(uH6b_1k֬n d2L3! 7`.~[^TاQU~Z{8%'{]-w-ɾ/y}}zջ{jqHYSO?^>s^UԿŮ]g*% r8[X'kp3/^xNQDMïo̚5?p8 U`< % Jff棏>گ_#YʂE['="[6iswfޕ>pGV
+/WFnm8s6Eߌ#y-	!Z
+<>{i[
+Q$C3͂6km.!G|CW*Vu]
+|=v{ｗǻ ӧq]| 1p,_>>>ĉՂ+9DA
+(R΁g-lB%jpoMi\KoGϝ8yI;"YYbZ<|-XM7^5{ ?i?Ȉ0צ2C&̕+W>CC~x 3͑OIIILL w2+((OL&ӧ_&|vuv,oymЬ	jT.PFשe-ByCM۽{\Z Nmޒv3g\SӕcicsB^$?kC኉qf=F1""µ,WLL <Eٷo޳g3E.T\:/NjuMգk$Jܪ >N'ǏtTvivݔ>%%ȑ}%I۟׿_G^ڻhhǐ\=J]͗V}毋n	Re]jC?z_W}ٴiV^׹ f,OOOOMMMMMݺu`BF!I (p^zĉî,~=o,4JrEAʺr%\5줷Wy#,Ǝ^k>"7k*UXsoٹ@}XfĘ*B;oď%8(kf< )T/Eˊ(q{zw}/¹s(2 4,rpYZ{ A .EQΜ9+tuqқa>^uڳCV(Rwϕnߑ'O˖Nۆ	jBȲ(`$);x{)ߤ7wN,_gȞ`{ ^<no{sTrYM'*%%eڴiVe.rr1LBrn} } N}ݑ}Xl?l{4jO{3g]w]}gc~Rzv\ y֭.B֨gpDx~J5Տa8yʾѷb7($8;ӧz)euhz街^z)++D$NN x,Э*@ FGv}ٲe&)::z5.mDwz>ã6y;o5\1f7ZlO~jPxа!-/+Hܒ>N8ܬfuKK{omYdrT<Jy}ꭙgӆM|g>&OvZ Ie% "''祗^2Lכ.#5yXo+P[=3M6!-yC_Ft^^Bo{䋜+w
+!DAJFQߪ{#naI{6RT7^1^hm> 
+*Pͽ/	 nKܹsÆӷsϻC'>c
++ݙxeӽx8'=a~}|	@w=uښ/SjѦfa*ǚNWOԭ[@Eaͫ˄}qҤIEEE <" bP7ᇷzYf?Ah&(ŷ`Kzh1c`A%	Qh*ٺV83wά%K7MUBI̺V?zoUy	O8A=8.<,+K"ם9|pʔ)fj߾=u wc2/V ps=:q+lٲ+̸Wv<F):}ww	.&q7'dgq},y.$_5^;dP̂fь؏˵ۍsAщO_{{{Sj p /Ɓe˖o3mڴ.C.@+̱yxi M-}ٺg
+=)c·g7IWvko˖nܳx/8("?'XꣽUKR_;_[7hg}_<~8EH. pst _ڵ)lC\un޲yW;sBzT^j(>#u,*)z=OP7E>lUˋz_شu5o?~sjj>xUWi40 =@-n>k2N3Rx mQ2=7^ӭK5.Μ͉}p|eYzm<e/4rc?xji/j)Y|skz衧~6 hGDBId ྈ{g~#GΘ1˰~| db{|;K׾2q[̼> $8c+_Z*첬y!Neͦ{.I$rjImKyEv1GqݺuSN]reaa!uF pc~>L1- _CUptw[6_$D%	Q-l[4rӨ쒿?ۥ51C`G#I+zam6ߛ!las_ϟӱcG  s @@wP	Y?sQFBb?5,l^" +W<׼ilTVBX%VkɁlbpU2dQz9|"i+[v}uy96#z21m׮]7x_]TĎ  !DRRRddd\\\5ಠW~$Ihd`CX>{3UgHgP6AY[rK̼={XucGǡ[f2p=1>̈kn8|Ŵ:R]o=֭?~ݩ3 4t0h,KJJbX,#""FcTTTmjUIOOe08a{r̙ŋ'''1v*2nKQ
+ЎCGtuOI&ɳ={nH,^}됸GDO=Dɸ1w>o۞_6W:_ٴ@q_{111&Mb. h,$Z						h.:%%%&&j<!!!99d2.Gtf911qժU>m(a	Zo~o1oJwo},iQOn<oa]O8+)O
+
+~땁o?ĜSFޕg^Ɋ(	e;~xa֭7o^Νjb;  KjFFFfOd2BٜV:aXY!RRRfbLOOb?~E>ˢmjR~v͖-[n=8v^$JaTOQĹsEyAQTkY>ݮmJTl#3'?7e7O^6'"g}0/&&fƍ
+
+ 1hX\YOTTTbbb$%"""66?(g$>}zJJjMIIf]0x#G$&&[s?&~Y?G>@mq֡5?>sjk4dmZ7yF\{O[h#\"ٯ4`//>;{FE_L]v7Gϛ7o<@XXuA
+w`4Fctt4			ά':::11Md8b+666%%EQqjAdY^z)SOޮ7~<l}~vGڗ6;xu'Ծm.Vlv_Գ&մWvv_ BCCoϰ٨%<W$:E{1("Ǧx;=qĜ9s>㒒 CVl6՚<<s_[ӧKNHHX_͚5oQME FW{	}!&Ol6Tv}5kd>}HMtЉ"HT/XS5p+m("G'O_[oq{',,)͹z`.<MKKsFIKKsf45l6GFF:oh4VjKIIٺuk=[gk.=h8p}5_]3rTm0n+H[:~̈́!!Oc\B[нkP{upƹyÇ9u*y;%$Q:r÷s>J߂}3[k5$:xwܱxL n@4a2gr5_g9j5YYYΙtfsk{ם_(/Q8ﯾjffGvk6Y@c{e[::D.N8`jm'Rܵ豼NF&<_qЯk{ǿxπWv3Ǧ{6UƍNڡCF#˲u}م?EqM$Qo]WI˝8//wÊ?WOj4MQUƲϪWWԶb>r-wrũUWsXn!T*
+
+ڷo߾}{ޏJ|ӶZ[ ))ד0111--b$%%			Ed[=@SG?~U*O<a~akkH:BB	ʹsMC};/C>vcفA-[|1#{.~ؑf4{ʥmv.l>7̜iYhѻۤI;)7ʠ/+&/g7ճ q^R\?ɿ}&4Ht)ͦhy晸8ޒz69OJJb,ksQvT&:::..ιz2c"A#<iٲe^233u:P)%z9Q	e{gZzӽR:whV@$	F};ɰ۵sr:zܾs3g}}EޕFwyӳg3X	tH
+KyIQTK$dɒ9stؑ 3\n(\C9j9d29sJV5&&RTY"Acv|6lzZ^P;p_l+;׭&M?u;6-**:qtټ5TV(e}_}sOѥKwܗs1P/[tK{6֓*@W}Ӣ_~?~Mֺuk|"tx+{=mTT7d210X,5|#8cKܦO̘bccNj֬Yxxիw5`߷su#(BkȘ_W,w
+S_U4A=g]XNNAqQرB[=[|J:uҳMut1s^˱y]]Ԋ6wˏرcǠAfݤ.ɒ"FÒj	'Ƭ~ݛo9o޼3fk^~J\FFFd29HIIՐƈZx6?qEEEхWW{2dȑ˗/߼y3J$9k]OyoRRT/i߮YQ,Iڼ|e]:Ow8#K琀 C-%f1ؼ?;t|6cEQXpBj2G:uѣcbb:vf'P*EDDZ)7`ƫgdJLLd{80`0,[q[nd֣F:|y{i*-{xT_xf:rӰa74r8ӮmCPGM6x@aBEL.}qct>d=&~wݵh^NNΤI}wPW*.9SS;RRRkdJMMeʞ:D܃׷_~cƌiѢڵkzzB;yo]I+3}}[e}		B^y[m\*֜>xٷn=9R#	ǈ~ȑ/,~͵MlK``GRn;v "##<Gtt3IJJr͈\.Z+`:`09H%$$[n֭;tu]"dݺuۼyIE8~"+$+hYģ͛;~ۻ{Yݹ+#?`zK~r]vOQk*((5k֨;@,:wݮ:wW+>>wT,!$In>U`HNNvMYRVBB%}pwDbbbddsHWJJ3 r&,l6'%%			+[Xh6Ғ/~Y.j5]y	5xJFI$AYCn&pRYdW3y~Ozs.>V=2zȁM@}~,V͛sͳ>=4g6&hРAw/QuT~֟m۶<4"@V(2,Gnyms;.g͛7?	ȣ,O檚9**d2pHhLjlqC))))))u|vU=Y``1c222l2`Ru[r4(m=]3؋u\Q@lbH׫j0}q=\Qi>3ќC(W=9u&h7n}a7%|Wz|5j]&),fr琊Hu7gXt榼>`Μ9&Lj7lC^ᱜ]o%%%l6\L&Sg<\31LeL&S|||qX/"\_޽{w-_|%¿>(ߦq_j'_M/"DVfkop{U9k.d㦣B^ٱ/媟M%ƙwy{{/fհ-ڱշ^zZQٳg^2Ç۶mp<W?6F.FdMVu:ٗ$dgg{{{|OS999mڴz ]:.m7m{o-Ϋ:  <paGhjޖ`kf{0=hju6ms=ݬ_~f(aÆE
+W	.RVN?٫gh+t:ߛ,ks V4`aܚwdȐ!w<$[4NMMmժ]w6 +)٭ܹ̙3w9e|dGY!$}	-IH?WF]KnUJPs狾XsΑ]zUOokE
+i%$	EQ,V#g=x3{oc ?;@O+yyM>חr[#A#ݯ_۷/YdR޷m۶_Kkibڏz3FwA~~Aa^Jȱk{eΝw.psٶDQl=lySeY娏*h{ץK}m*GϝE+;Gy>!dYȲ6HkdY(ZhZ}^bz{][6kn<"gԴ~t}zn|?>!!aΜ97|s˖-)(JZhl 7H˖-cǎs~H}9p]yB0%ą+,TBC۴n+**,,ajzzx}m~{jMߨ
+.4$+3L>}tttSup(978wyg֬7mxM+.f>d]GlPKߠucŪG^'O9o8G'/~/ߩܴI[{k۹mJTuvIS&,|7^s5u($i}=L$((W^$"RڡSԛ_ {?kc}(Q+)k̛իsoUZ,u\Dƍ{g6mO^[zxIlݺ_^//u{ۋ4%o=N?w[e!EȊ$+`y1C>ل}^|F,$W=7B:2S?f>QԲ&L:a/ݷoĉ|Ƀ TEebWU \>Lxe˖*j>ڒ?&{vԨÇ_xI?9VǏ6lMݠ*)^Ш4wۻZ4aSK=ĉ>!(PJ5{>7MkcAҲ~w1C'_*+҉JnRs87}ˠ}/2瞙9mJk7yi֜|9|ٻ^>]%!'TUO>w޽{_X+J%E֩,Yr" ФIQFm۶_ݱcȾv&Sγ미;woO5Ysbb_<MjXŭ~cFf>3zz)~~&iy	!k{ZCbn֦9n:5yRAJ8//B%)YLֱ/ܹӈN>F^q7F_{ԟ|'\=nw0E(RkǨŁgׯ_tttxx8r|}uĎhaFû	i{u\?2:\..pt8p`-OqGT_3ht۷mۘn-/?ڨfA^Nh>vAFP/,I*⸨'ˊ~5\ek:{fbH!Ċ_z7竖pi_f?PUtR9/AbU!̙-,Vk{wt3}y]}_Ǭbwboymذfc0  `SѣK.+VVu
+m,*fe_?c/lߕ֖؛'N]tH/YW?+pjxeرo)	!5]v>֥KfMyҁQnju1#[;6n>zs6C_NUq[amN8djݴ%_F?}w_Oh2}*@rGnz7pÊ+\C*X q<Vҥ۴iQyG[/g"Mtu˖-Q|ny7y}qqz&<m.kUk|X]D6espoAJ{f>ӫgR}z1T7d<knamT*%;Rѥs@`ϾVIRzlwsJ[4ׅص۾X6wws+ŉz.;SOEEE\˕ ;#t]vիב#G6NohQ}}}{Cq	KtM.؄#F{+.f;߂}oo6k5_/]Ty\#G֭Y&\8{6kXKJJ%MCΝ/.hG!IgwHBHMUNh{n5;w80@׬Y'%uW׾J5Jf;ߟ=rG}tܸq_}UVV{<$I\ DV4cǎ;w9|dECvmΝS|\vmܢ7UV=7gylC|uX?tM6]}O|2_ __ѣǎ/"*UleEj*Hql~Ӧ~,MO%	$yv˟żռUJ%huɂB{&>z4ԩgUz/42kKv+*[݇>/{\hѢ>:s<Fs90z;(aaa})..wSЏ^Z;{Qy\^}f[G] @uNx҅N{fhmWTH}>{OYH6[z:"8{.'0OQ*Cq.*/mͶ+~պ={,>$Z6K/9I^ťX\Yq/b^ysmu?KVCnqofҤI~)>^I8Ĉ(>P+,Ӯ]A[?6tOaEvUeؼG>}vڵwQ:I6֒=fGcGfɲRIZiS-#v<NWp7%]Ú/lvmN~䩜uH`^jcvWMA첲nӴqJnW+>::t;|zQ4Kϼkk~}gP$
+(.*"PZ(BB7^?V9x(k׮]VZB V]ZpȊNBj ˠu*HZ4ߺ_o7v4_+Z{W[c1inwM~3̚5k]taWg ˎ'$$W^C7x|xBWǘ/I^-啫ڽN;/ޭe__}VV5ΝZ;+?Nӽ[+wTNF\ìGQ5k}YVU==C~=Ͼ|b/?u_aaIYpCԹU]xaÖ$Ǆg!If;T*IXBh^vZ&@B8첳Z#hGSpDiXҧ~ooL[j:@?W>Jꭺݩt߾noeDcE LlrРA;v8rݻu]L%?"u_{j̈́#J~޾㸏	gL1[kT*eY)*ɲWj]_R8xiScɎ.!a;ኢǞiNV˲Ҽ=bx{VZ=rӁ$]o{z"Q/GE;o=Çy؅5l>j..hn}%mxwhrPX&fI=(u1R"##{3zeKbM{N_ٴzeĸa-v"MQIhŋnƮ]Ob$ 9x&M۷SN֭[f͸Nupi=$>E)w9~07GXnno˼<Lj2|:R!*6۶m?f~ɜRV
+оae)olȱ]npȯk>cGd(áX,~ݔ_~彤:5qՉS3nyڵ'Oَ%ϣݻv0~V*Ug,=RKi^6X%D>Y5׫Âzlݞ3gFi9}Vj!w՞:=ݕC7Un:ٮGwCٻ\N[4'NduԲQF~?ay>m?&uKBm'<;b1k>#22rs4hJlhh wFOV[j5z茌CۿD~[}<PC
+lѻgϞKtLMCo-KhSWϝ=]O\N//A}|t32w<V㵗58cտԑc8/Lv({߯m>49z Ze+RCmZ5\3<Ͽqٶ?ڏ٫,ϟ:uU#z%jKXO?3/4m-ϫZҹMػg+Jn5heJEŅBv
+BK!M|?pI:rX=3^t1_}w}k%[~xqeNzL$rk}}g=zٳ.Cs*5C۷K.f[*ϻX2pXȷ6~d{Ӧ~?2YO^^}|uߤlV-X%涩u8_R{n0PF%8u:wJ4a\vmk1DV?ҏxom;v-yO@@;߬o;zj~bzyys=/dҼ7~pղ6cͼgmz>OM]mvS%NSTM饗MZ4I?w+EFf/N/+:^>[;;~xYn馴4Ǝ9<j˫m۶t[lnXߺ_^<kO"thGf!ĕzLOou\/z涄߯,+lle9ϱ+
+!EtmĖ-pFfCB}peYl=*ܩYy$Ǽo]5OB]El?|}}8ѝUٵf>~q;Uu&_ݣT^K'u۴sFx{[';;ocNʲjNȲع;W3+'Nڿzì[vXk}5Ko|D-pи3eʔ~?s n\\Cپ}͛;T"I>qR({:tݯq5>r!EQ>|FܼY@orϾ,է|O7ʲ"pkI!W׮-9okT1d̨0g'./~bήUjСsd!PΠu~Y]0kV4΋Y+@Wzh^~"''뮻H]\R6/_>nܸG묛}?l۱E3Մqm͵7kTb}\CvmB]3Ѣf_|3(֛\Nοz	3[[ڵkN,ukbO9Osν+u:-!E,h@s(<Nkݺu߾}ٳm۶}u[[l禞=ٳg!tR\RM3y5_l<ӪeuSz{kKKep!;*ܩAEE6=#w
+u-Zz̨.5!]Ǐ5ߞ\Poi׮]>]WWҨ|v3/_ުU{ｷGT'`r,zÇE
+\u^(7蕓[[fyyÃEQ0uG>vGvo׶B;{$!]=ѡCꦒƎFnƢO>Tb >YUסŤ{FƜ^Okf͊cE;$` p#CJ O0pm۶[nݺuzLlu=KQD?bĈ{.J\ߧĆըqSFĘV-[(2xPǇi]`@ׄq]4/_W1AݑeffnݻWFw`*9?%۷Om.?=`jS><hРѯNVK֣.[oպu?-_\u#ؠ6?[,jFhߴb6I8UT[r-UP9{x#5ҩU#Cݱ{ks"n]Hu ۚ]`lt7_y311q֬Y]w]HH'h\= ;cx4^߹sgr	ۡ5RX-[lߕg		5J'ꕔN?w8#%l
+!m?u9?/>hV٣_o-,,>9IS9?-#=sA=JwN3h`4WV߀ϼѕ>϶_x@h/=ucǎEEE1}k|^{m̘1[|v@R!|ա-N6z{+DpZ6ol9|T*eЦ#U7Lc[٦*dooW_}o)20+s]?|>P|6ǿ4^zuuV"u} #+H;ތ{?hc>>޶:YbRrMO?ߴ篓/~Νn奕$ľ邂9DIn-EvG2|zYƎ!Ŷgr;_coŉgd.fF۵MNvh2pN>>l6#*Էwƴ&WQq`e_mn17,"pٹ͛7_`AA2+$yyyNjU6By3^E1k-mۏa)*V_B%ݺ|#|G{C>uMzOoN~]wٳ۴iVp	hJWq>%֭d:p޽{ܧ|[ݿ5JRP~]t1~f+[le{揚rMub>o'Ϝ͕$IQ]Hzm_2-[µ#uZہsr3v^cvWN:^<r4kİN]Ú_7N>V.,,<׸nLk8aKq-0{^;5yv>̛_ܽ{3owl{W&<Çq^%YU?+piv~r`ѢEZg2*|
+;ւ.aꞟo0gfm@UmsudomZv{D;|g7]>J᫯1cCCCƠ2;dv;xݻw>|/:GS+E鿼=CY8_lcYWUa+_|uλB<ܢn*_wMAڂK>z56mڴJ	zUEo֮];y?ּ-E}G՝8q>mٳ"pjU-β4'N~͞_Vob.'5{#GΝ;{t,_=;׸;w":P|O-w\\A% juVL&^rw~q:&wjWYOn˭ܹ[ɛnG%<2͗Y`Az$oO~?xǗ~s-Yeoޥ!##رc۷:pTQԀuO^<I}q쒣ߜWÜ>*Yj萻^9q5\~z6)6 ?@H޳gOZm6r~RkbVo_KQ3Lg~=JﯵǭYfO'=mNzG;۪Tl˥Ts,Nd
+!6oN?z5(7q5'G7[K~g%Qw\'㼽g̘1m; 3@!|||zݿoooRr;^.KAСC9q.\b6;IǇ~;?Ͷ\i6|w̼[<PTk?$sӧ_}m(e^F½{3~{Ktۜ/0~>j/[ݍ;x/{22h3-tʣ!!!>̙3b6.;VPs97Jճgݻ[,+Vhz^"|OWXX"*jM~cǎ}Ib~Q|zIhҤ=sJiiέ{|;vxG?hw6[r8pxṫF(^$\sa9Ml͓_Zs[zˡ;n}[sCCC)S+˃\@Mp)ץK=z4o<++oSdW58sמ}4IaϤ2{I;_}lԝWC}Col)D__х7mtΤhVg+yyŦ~g-z}̬RY(u9]ӒwD_ߟ"V?R]okc=^{mrrraa!9+3b "`1bDXXXff;rN]/Ūq/tPXHʳ;^{+crrr}3l߅ݕF%9iw>q߭znꭒu?]$$;OMڸ|!(%%6;goIW/*3
+]~/O+PZ [kbwܵ)S>s9LK($@N(պuM6uQРKu^lWoժƍ7楒ud-?\f̀~>9OߡBl;gn߱cGǎ1i)Uܫ/&gnVfkp9SRקeAai
+l7OpHPoh@d{>>>C'%8lM"}g!{[oy'Nl۶-ɲ,B@?,@YAAA&)888//bh9l.Vz^십^TBY޸E;jk֬=kru._k;'1yǎW\q	ܤɪYoO=t6m\웃5|6[+uJnMºty˾3vzJ*6÷cػ~gs7Gm1ߖ<eʔW^y%==MU*~/"6
+_ǧM6cǎڹsgϞ)l?ߋR['^û
+!LdYQuIٟ^f]?:U*Jo[+ޤ?SZsyj^Y!R9ҍ=q2%ܹ7mkTO^),G*v(pdU[sw}*_l>Iܐݮڱ#Su-h%yyEcFy+۴␠DIbÎ׽<cR!uz ͬ(Y~aҤISNc+^Pp Ippp>}lٲ{-[6šjjdm=tPnnnZ響k*MXjkSt̥SyY69}~.Z@ه4IUUTǾjW|UEuGR9sDB=ȶr޽{۷osNjUW^~EtcsDуݼew``!_]RRt|~gwգ-\O۷-~EӉ_}}%^5`_'k4Q'+?,Z}-ٓ/Q?Įu9@wuРAׯ߽{zq(j2{?<$e
+?g?WϪ5\ՃUك9[U|}Rm~TQo[iD*\J|d=>|ƽӽzd~&p=Yꔔ}~==
+Tټ܂7m[QZRe-iA[k4gm6:gnֺE+N'W=4sI&u(jYEDvյ_7to!Ch4  ?@%}7u^O46J!EѦ7	^Z͙3gȜAz䭧8t7[WxgL~ZӍR$$r3k;X(Uk,ч?6{rey]>,<>xѡtw8pΜ9&IղPG,d=Ԝn^oѢEXXضm<~W|MXb;ػwo۶mf>vXuo^W'MKܼREQ֮?%{No|!|-Z49z|vvi` y%F$g%=z5-L	G(R;m_u]׫WG}l\jfZ pkJ Tr(mڴ1L]tIOO7ab3e{
+SݻwĈPMeY/bǎ7u H9{._ekVG7nJ?vn|Uy۷ki̬
+ufϹ%x77<i'^0SIgEvn&?ѱcǻkΜ9˖-b8  EwP9$yyyuagϞطoo62p/#?v>xN?%^dUw{w-877y%'Ndj44bX{H]گaW,)?~:Pw\}Gwǒ_^־}i;I.Gb*Y4{m}'lڴittѣ
+aΞUyP| 3m۶={l۶7oެU|mio5a[~W)R=Uٕ#w>Wo iX
+KKKaaϝ/hT͚zTDA#7O67;pti)lܛn\uƅ/_6Uu>6--N<tp||^{>}M NT1<% |{T;w޽{@@M}aB*kc]Ȼ_`٧^pIڭ[?׿x5>jprl:;"ւBxlGAҧW],7LοjۯuKҤRlWu@!w&3nK/4u7x,  h$ ѴlٲO>[n8x~0.F;WXa0nց7Cl\j悷]dXϟscX*.QegcÚ7i-ˎ̬5,H7|~iB.?&o`8^{suW׏輪5u6}m<9,sO_x)S̙3'$$9/P)g= 糔 ZѣG߿i&.CokE,RbIVB硒RW{p캓r>IUBw^]duO=TgOb}>Yھ^7SU/\e*}ZJި:v}1t=38mwۧ;wݸ!qIb+'VRR>`G]4`KִiׅӶ
+;\HUЯ}G%Yy&e_{ݎtxy?*gGO~oiӦuY@ @&00_~_k.[oKE>(sfbO__KW%kUƪ|xWR5Vl6#F?Dz走Dڣ/YOp(o4O$X)ɮgl۪e-w:}\!{܋J*U$9喹+|d̙#D]}Wfزsoqmzݺuc+&2\jz2K	j.^XQ3fi4EnRWc9/e;q]B+Wz\Tg٧伷r]QTeUz\:|9pݛܖr]읗pnN-Xqk^lߓT͛7o۶D={tQ]RDpw?۫	#<>̙`?NB|G[j}aN	67of8u*noM?eΝ;wQI7;uԣGŒ]\\\RRR\ʃ=E}8pয়~Z|N{'oji!ˢVsK3WB8/A3;_ۭv۱^K|;/~ڵk7lвeMBdY]/JS|wDQgdV-}TBZ)ٶ<Z4ر޽'s4QS4w;Z5k֬AH$TG-((		1L۷'A%
+=@M (PΡCV\[o}O'Oi|mOu#\^vOnK$B+NzrΜ%)--˛0oZVT͊47yw>:~<~B[|\^1XS	!t:1o/Z~ޓ'O]v>_66?NnG0`>Dk.I焭;E~~~nZnMQ/%F)>P+, wyn_^^'NPY{s^{jLy}Q/Z{~n"/?aŎ&>*ׯݾv^VnӦYF|*vW$ɓ'=zТE@ٯB!ɓ'?䓻?0aO<H&Aǎ	8>3gk׮o:TJ|+*ٷfs{rk>:$=Fi*/+mرGF]dhNuf:(jT"TGZaaaoҤ	7حQ|v .77~HLL,,,?~G11MϝN2pk%%͎zdF_]VΧFQ,޽4~:uzDo/̦h ryO}7JmYՕjja}z9t:m|qq3ooN܅,tQQQXXXQE7R(N<iق6mz1;` Eϕ|z#G|k۞;'=JeP[9ؕWjgSRR2M޲&Lzriii\{:~7g7ibhcw*jun<xș@Vn]۵1o;0ooEQ>>>={T	Ge/uQmÆΝhݺuٵJPp3WZ_ڵkԨQoDGw8{VȠ2hpZ9q?޴ibiM2QA4Z/Lt׏BnKL{N͟xdL־V[nN*|/LqN[E|]>O٣m=H6U~zO7o޾}{DT*O?~-99y߾}{=+8hB}FW_mٲ%;;{ΝZvxO
+~LK%!ܓͮ,V[V:!DNm=={7~ѭWhsg;w]-sǓ}imM.r(ܹsXXVn N&wJ 9)((Xnݜ9sn}4iȐ~'NꃆԩnfϞm4<F[ߝPhk&7oӧN{|ɏYVpOyyGN7iVEEmse^=7.:NF^bSffyEaӯ_?ɷ>]R{edd֭[7kL׳Py/ 4ĳBY'{^;?"7߱cRQh,Ξ]غN:޻Yz9lCo;wnVV->/? N<׶mS?_Oocn$[V4	Ȳ敔ȭZz?x7/8v,F4+Rm%H.*՚եK͛Ϛ(5h@GFFƊ+_ZZ	/<'7w͏<ȃ>䓋ǏThwqqq\x(gpm>EQYc+<[^nA/I8++}ԸvB`WX*BtGk̰oBjTY,֦M^`o~Co>$$_{iаZj>O?tFq*((غu<0wӧO?rW9CЃM=So1cƜ8qO?3rאּ_=	*)d+߻kXly[o;yR[ZBJr;WRߥZճ=G|줢"޽{v{߾}Uy,X(**jѢEӦM  FFնlٲYfk֬IHHxػﰨޛ4,+5Jb$M]Mo7Eһ45jTb>v azc "f}>;ܹ3yW_={jPBfpX,/^ܴiӚ5kB믿X̫u6,22!#|08k~[>Ǜ?A7Om>J÷[mvjrͯy}|w}z}'x<V{ȑgϚ?T8o0999˗/7IFwQ&y>׿,.~OǋMp-"-"Ҕ\DY~W$bAYYNo!RWqѺ:sPZ"g</44]'Ά?DT>ǝqp  7l06nxС+W?>%%e	wkZ+{݃3gά_~*w}P.UV"fpbr}^Сa` qD7ڌx|6<eF Z{Q
+9]Hջhs3tzP]qf!>}]n0LX?/rrr֯_Oyc !;vxi_ӯ}">]`9EFI*$P>38@R`I;a#**`I	F5668\]T}R~:ovJ8qbtt]֯_yռӧ}ɭu/_޶mۆH3gΓAAznYfyl\!L!ڽp-7?#`<տoӖj~e#7zVswr/l6K;1kn-~\T׿{Q]=O96l(((X~w'tHӣkjO?MdNNΖ-[vqT8
+ ,$)^&^eeS
+D|0Cf,G	
+˴>WF(KؔI'pϝfgΜ1={$\C!^vM,'44_7e2B]ͯݹ"A]|ڸGV3?esjIMVwZm?P[I0956S[s/}]28j6ܝ`ڹt}.9jX˃Yj\eqo~o^񖍉ںU.oUW?͖fk̎][qk#请ۼ<iZzy[s7AIour^"9oYh|nN8cǎ{1rM4I"={o6l؋/|7p]nݺe˖I$zh~l
+a8Oy> ࣵkLrw BS>[񏴴+WrqJs|njyBp˖-;w4<=Mқb]/~M6566Z1/W'0lqQU?;/"f(X0%vkER@\z8=VUY,W+Hp@8Ҏ?qeoaЍFΧ#i5?ǒ6O?|ĹAk~bj-՟Ų-)ϖpod{u-+3>oRjD`|;7zo4qZvD;nkGZBse':ӹMl~UL_hyڠr?'gW-ۏKj<EvZj-O6ϙ6]cyfos6x)_|U੝-m:}+**x~qw\!+JJJ6o޼iӦS=j9s) [/[6f̘?ySYP9t+yb{+Vt~:AdgϦ(*###''l6?샲DK2ȇ^?\WLp!{gk53g9ܯe.[3RluAt`;wX,X.R.F￺W^AAAΛ͓fs<tq͢xQ	G_&&p͛;h~rzbh_̎igwj|BCm9.m~:rZsZach5o=rgZDI{1g%qFG`lV{'eh9V6x^7-)\C,BSS偵:?FmՆ7p\?[j͢~zj[m*UD&jr8۷oiA wcYVӭYf͚5eĉjUm-*-u䇆~{l|ۣR 
+3=(_.୷e>3"-g͒dk׮=z(A)ty?:>Ɖ{S<3\Bt3D|P765]jaΝX,111e#jkku:gppD"X79a:A{a7C#):7nKD?i9+Unt:LHHxwMAt',644رcڵeeecǎ]VV*CB<xp剉~bM]v5nWb˺X\	ذaáC,c=/a.܌8b޻SÇO{_ߏC&PS(=C'Z.Ԟ.CXQQ@ D|~p0^z//`E
+:"&&BqDb6ӻnrnzC-7JiN:k͊p,j9mfj_ϨBƱ-_ehcv˸ٶ׿lMoUTim֦i͍VI"Ziv6+ws2e)͜6k
+\
+7ʔoy$/,7]GFVkqqqnn80`aFx7{0X@tUUU[tkצNIuuQv]`''O?
+hp+G|aÆ}kkj+>ݻwQQQ4ދfbKO6޽;<<eoHb@hF֭:k"08C8JN͛7o̘1~~~   VV`߾}wh4f_~Ǐ;vlLLX,/dn677wʕjW^bnw}j*>oW/ZBpŊ?|\YƓC/
+7o#kphc/_ф`CI0
+</   w1^w5k֜8qjFDD>|ҤI{we~+:tY&i߾}53~~uuíB?744gbm1ܣ'O*ǏO 9>,7EGsd*D	\2qѽ(ѣw
+Ev8 hx	v܉JNN&XpdO@5^xQ*8O>~~~0  q~c|}}M6wӧGFF=2|ɏ?/lhhpUfsduuZkO0<Я!	:R7.h4RC0,<˅DWfT)fP1^Nڹ밷Ol"> e[~/:w\ddd!uL.G&3N<x8%i  pWrVDH$QQQ3gΜ>}z\\ݚ=k8fegg-YD(;0u%_j;zD6`Pt*H7vmСC\\ C`<2<???//OfW`b0D3lxBh' LUkN2ħl	v=j0F/   ܭBaXXZJ.j=z>_B/Z@<
+}k3g<zgF3%fY_m0p>>~˲_$	xѣ7<xa{Dİ077)IRQ}֖lA\l@/_"{*p 	_--D;8%ɤ8cfTSyYP8lذD???H  p0$I;.f]r?/q;wk0F#rqB vŋy>/	XeY[ŴOv>`J20퓬.$!(1	fk'=j	EL.YrG&P___TTTRR5!!%:$F.^KW XFgFEEE%*+BCXhcF)..
+
+1bDTTi   2wd:~G544̞=1c65&bY+_ܹq}puo-%6/NU+^/;J<v_|ѲI84:u*հ>}z[1R"1.//^ǄG*8zǟ=uԩSXrR_ ">  $^LiiСC.ɅHرFV'22A    w;3g,]O>={G7hL7ׯLJJdCL$a0/տ:y30fH/`$0#ɿ/5jYf|!FPm!	رc6rPN9$\rUZˆDGv~ȕ#9yOǎ;zar:\e.ƌCE pMjsFjn|~޽GP((^    &w/_g?C=XI_6nܷoȑ_}>=y3t9z0둏_{Bjm(eX^2sDӋ/=._-I?#!o#w>|PDN®xE-C{	Ϟ={r.qz8ÇiŋZK/+HN!.RhHJӰьpϟ+]S7!B1eeeAAA#GRT   6ppe˖}W^2eJ4-jlt1pBq_wnާO>NIm]tzl.	AY[XX2#FשXgV8c}<['uO'K0YWr]xdP>0D%_xҥCXFV!04;thQ\\\ZZZW/JG.VDM,\vCˆ!%G54FR+Xrɓ'Zm\\СCa&   ppp^ZZw?9~1c3g"'Cq͚Я>{V$uڰ/7#z#X K}@!BX9+]پS:nÑ$"pԯk_WoZ<Ipb⧟w&$'Ӳk0[\wӕ'Ls}Xw,{⚒Y0Q.`C[_pY1smheYRe9fBrK+Vf1f"uL.e*G`M.pZ㏍(
+  ]{1SUUbŊ>رcFj\V[Z44tg	\FV+G
+:tD?Y\p 7*
+gܹ;&OgQ	FXB|?#6ZR)?[^ޘ2CMIEao
+	|jѣG/Ld6~9fLA,BaqqqaaaEEE D .Յq<_w|C{"0-.,MeY!@q[y=TbJ|YlѕOTV||2)\NF	Spe'z~~~jZVD"[R\\G-[ի			!!!&  rrrV^]YY̘1Q͇QV_@kؕ=99'FK<1wBX!BÁ{LpN{!I EǛ>º_yD*a</޷GC!BcFY{Baήo(77w'74 /4SRiJ~;`x{"t/#t0Bs}X.oݺy}+MV~z1PXT_Trq>)N/0űdAǚ,4SHeoW(ُɎ;Fk/TVW	Ӆe9OOIdPO] !!eOQJ+H~[`X֭[{nÑ1Z-e  /x*UUU_KJJϫ1zj?=t(gٲȯ|_BtFc|w%%!@y+1!;&gŝ۞(
+ÁZ1nwZa1|f߁3ere+v8P3: 8nWFO$[>|շ߮{)
+X\7q|Ŋ%%%~\66;|J +Beq۷o6ُPu~xˎ>S՚Mfu$~}^z~nQ҃f<G8ؔIj9ѱA̫74BH4p"#KHw}wd׮]šʐ3$Iyxx(
+pK.^iӦ(ڻw1c)Y   :Lfݺu7m^x6((ZCk[;o_𼟿oC$b2sVk|{x0ǟc9ڂFǗ.
+,f3ي)3˷n/g
+o[|xPH/_)B1,7ur?κ8&$4`¢Ǐ?^4th_!YVYZZZ\\|5U⇤P&c{&L3gd9FB'^:ÊpWξFyԄs~d}S;+*q\R)I%#f#676י}+?uj2HH{uM:XSJ3h@h^uuKk.\s1_`wohBBBF.[&̉lM^^Ab1A;w8 __ߊ
+oo>}@o  j t5۷o_vŋ҆4UY#1|s?W($#w6,>?|XoO>B9KSEB=R㠙Bbg7ib//OD">$!!v\*oefvcGЃ#z:菼1G]j!9g+>䛯^xcp/ߟtzvH$Vx5kl6ې	\P1b~pRbwz`Y0mwM!G#(Y88fdH.3mJ/+.0PH8ӦotZ{pЀP<"z$Cx<cMM#{Krfw7BقUUUaֳgO7麙\Ges&X,=V]6m$B4M]|yC<x0N  ХEt]v=b}nUUT];f4NÇ?֤LN0SwiKv{߾:}j02$'1!=WP]ӈaPȗh4+<!$Ica(YMMcA!D\|F]iNGhɷ_=5s_ju~U'&&655]ЊL%3Axf?l>\2Hsp)sE0#I\&=<7*c:kE
+
++tv{ '!tLG o>iݻjqI#u(OƫI4|XGQG$)oj§M28 }WW<k{OO@wՎ0CT^^Jettt=B!t5Ž{EDDDFF:ujǎZZ	  >33s.tǏ&yV_o8nҥ7ouΙe ՘.V zQqj~5I>bPub^Ɉ1B"!)$b@gYh#(rf/*	$¢zǕWF}J|3'X,5[">T,55UV6d-o/d1'pRSSB_~mm+5mNVR)z|[̲\Qqg_̜ȱ_Q4aʷ/ܸmr{B8yR/į\9vlc`b҄8Е5OL?H3E?#eF_?_B践'.U皦ϟdtY=57ԘL&J!(
+
+[~ٳgj#H0ĉ"Nb
+  Դm۶K/spEdMa۶m3g6RDCwlҲzP@[J6jM=z(P1e1j-5ZD"eʬV{qI#BCR\ZJ3@BNSYG27,<pMMUgyfԨQz~Ær!.̪,XR~mOW~m!RƎUԥ}gٹkj*8_pTwaQx//qXQ˧$W8̑E%KZɒs9oID`¢.^-^o 
+
+
+8,gIW1#QZZzU#T*U $b̙111!ǎVsrr  =qgZ<iӦl7xcԸutRb4]fM6gjqmҲTJBla**<TrBF#m$?R7nRoWBrqB!i0K֨5lXaFt(de}0
+t̜5Տ+&"77w׮]v}$qVUY13e>_uVsLwkdXk3;ꌫל\tSG6wΠ}CC<4wjGYٗV<9U)GF9{e+?Y|\ELFZs/T(:"449|}dY,-qJ[CCRd\S!8 }}}BPtPaaM*++ǎ;a"B{1~9299!D4  qnb}뭷-ZTXXo~VqE;Q(xy\v͚5&Lؽ7߼VPh2BӨՋDBB&98㣋Ep:ҀP1쏛qGd)[!$
+pVPtw$WW_}UP/sMHK45=b0s&LP(llҘpK~ֳB:`s
+
+z xݵsO7'90hFE'N44+?H~}T*tȨWBb^⏲8EqB!h>zD>6%#KoY{lY4J-Betlv՗JKKP\khZ-˲=
+
+
+N<>}pg^3\(Fտ<f٠  +Qzիk֬ٿP(|ᇟCT[/[fر[*@.! 00A;XCd|--۔C_|~W~>bN[d	A8EC9P ˥ahIП 'v7ţj]#'lڴ	ðOx"9>G'[l9vnO$e.1=_Xç?8qGͫ~}5'aֻ[cc|
+rQq_0B(e3G 	V 8Hozԙ߷W 
+9U{ڵ:ѣ{hN;Q\PPR(6{@~dCTt;|¿d+0AAA<%.&r BBB
+D"qr
+:gϞ򊟟߰ax<^
+\96Ϛ5!s @M nb\xqڵ$IN2YڻwuV*!kuuѣjG9BwWccC,#" HK$jkD!ahR$wS=|L&Z
+  8h|`^7n/ru,`<0w>zbyPFUCE!ϙe$0d4*һW_ul巐FK2mOo|dsh!	\(|$z5'}?0T鵂Sgr.#83e.V9V=ywsH~=9WUUzyy]kEyyyq>(EQ<!伨pW@0zh///>  ]e M p8Ξ=zje~'/+CnH"h?o2$}IW	Bw_x+V@ G	*BQA"IlİfCp.*9;q(..!JjChI"E#
+TI޽D==O>ٿ+KڢEjk7N7`xc,k׮gϚ5?jx4l+;}B
+~EO3g<1%߾0| r|ra=s7o=ׯoи[z__Y\O?i΋4ۼ:VHy,˝>S>yb/B͒Zyb!ǦN5CFq}Whx'MGtu_PP`0|||IWݽLU﷧j
+A; DD"i}jaXsoL&J!  ]k M 0̵k׶o߾m6:uԧ	</ϷlKLLG}J*[=$!TV;ޓ$VWggR }E"ǹ6f(#zkH05"q4ZmǉoaBq\X_^R
+잻'8lR_7_}ш\]:e̙$##췕==2ɇ\geIFڗOԩSs-Vn|¸{^9v?&	:t/OIT	Ǳ-c0pH0rjW !BbQ79{<RUXs^X|/"26>z^՚7m9tS!zdV~$y/O uzĉjp=kZgឈLr   M Ziz[ltÆ{iܸ0p{焧6\|o߾?Vld]qG啍IQO@J9]5t!4fMBBNoC*B!?˞6uАA*8Ŷ~_1BJ0p]}`	w>y':KY,&L "##ʕ+֭~Ĥ X&S|zC3)p7e8_w9[s>aq=:tzDxxb 	<eF_uGyᚫ两TU#C	zovFHᨑ~#a+Z~jx}c=wڌFTT&cY58YPuUN
+"oV\I! @W@_,[PPw=cK,	_|%%DS$CC_h^x=?W%wz0̙RG	L}@QCC)fe9iЕkL`Rfl=Ȭ*j1s/ò,w	YOm7GYPP{}@{<Y,%%/&'^p᧟~:%1s8KFr->mڴ|͒6nJwgS{xztGcQ>>YyގʦGeN$,46&;Q\RؼaC#|Bs._+6n>s1
+!$~0qA@ҽyZ6$$$..1gI$///oooι&Co  ڈ
+ !TRRe˖~;33s<(F5J>󔇷g#B=B`KWJ.`|ƑEB2c:d?~`loNz$	vX1| /m:tY~aΈ(8lPI'N?熏jퟐ`(--ϗӪPL!09MgϞ{j40ǻ{0,:'"z-6LH80/s,:$2ljGi,AJRԲVVk6GJyNjJ{tO~<TV["_;8}~hZ^oESCz'2p046a8㚏nG?k׮~58ۉM1""bĈ2v֭[v#q  {@UUUyof֭C1q2$ΜtJ+/zz5;'>YҍL6,$XǷKvzp\Jw;fGk3NzOs"ƷYcӽz
+B4M>=woO]b%SNi4shHht^FfBBKJJJKK) ((PdAyyy'N-.'<˿gl5[?wSgʊ
+/U]̫>v'>:x@rS*EEgw+*ip8ئ&+5_۸lhG+dNQt:Tqd9qh@d=R$s5.r8>[r+;w_~VzrIz$Gf&PQ~"hԨQ{#{l6Ç
+  蚠vϽa;vlڴ(..gΫpKNOaaao.zuDܛz}UGq-|u`EE_zs)C!>x.VTxu7Kpo{G=l׽MGD|Pq/B-uZ\Q|Tx_[liza :y&&țXTz6Eć%)dMwSWշw֜؝yZwQ6r8VU3lԕJ+/c#e%KXsЌFLvb^ըΪaC"ve]Rs5&(P̸rԄt(&	>EGyG{k-IƟiٖ1C#kz#z˗/$\	"IRPxzz   G@U^^~ȑիW={6>>7H!I͇a>?_W^y	
+>xo˯~!>~ySx_,:q)RIEEGM~"yUSk9=aBsd0l~XVhP_<&e˖!;fTWFg;.lܸQOx,Yҋ$c"hժU?lHA_oB]ӕ
+pus+.U_ͯ--4I,$%iYǱɱC_XyhTiMfXY#,<s@bh-iT*;oN rE ðJfoAz`v;iewu:Kڲ]|\1GrQXXq\XXXXXq:=  /Ԝg뀮ŋcbb9
+n-l[ZRe@0}yd=x:`2V?1pX }`9{i*'~ҷ7Q\c߁D8|nxcS6^Ϝ9.-uÎxAM>EdL+JF'lߕjv;p,˶hu(X,vfW?I|>8|5V(e=v8/:2sZߠ|Os]eElA<cQV_Ţn۶-##zhjqiǎ3o?  ^0d:t333?zi8NաZwM~*
+M̼P
+!T~Ь~YʼΟr9_4#+c=!e/_|
+!Ko'fX=U)>D|˗	))qOyxD"ٽ{CH",.c}?߿9e?=avu*O6Ϻ%<uVa7ܹhINUVt*~ىrP0dN8 b  {	zɓ[n=~R|	
+R0잞-˗O>aB~5BUAPz??muZmS/U3lI4aW_0szuҏ>P(yq!Ɖźc㹹v}S(8ˡN62GČ}Œ'N}
+t~|O!9_Pã_~J5wZ-MA g&+++))_b .=w9pҥ~i<hE}=Xcɴ_VI!#T?7G]70AUفe)꧛Fo$Eg|<kKo|[nX,Bbm-63'(*++ӎ1a	^/R//Ǐ=ז
+0
+ :X_VVVRR0L@@%tG?b{ffzL@D"9hI['¹  ]{ZŹ8NVV)))[]DgÊ'O^Z(C:#	//9]w oG,8={ϩ'tuPwDGIM|9o&++W_MqbqLC$8{cǎY,!|Yfu	h$峒?|ٳgy,퓏:QE&8@׀[3gNVUUƊE/v>77ҥK			h4Z}OtHAP   sbɓ7oy<̙3OL-/G񗡗LC _Llj?oRʠn	4#?*{Ww'-xk/TO8ޣzkEzkc
+s
+ŶmΝ;g6q<>9\gOcar9_vر^LHug]]B_@k4s"eE"D"	 z8-\0--mѢE[>9Av  ty͛7ٳd2M0Q+*Pq;Jd?nZRRχ#T
+Թ2H|oV"|ci@G}t4OŘɵ/21xLDvڂU+WʹΌ|;ᬤe?b5ko|m<9>8*88W^sQ^k;] )JRjϟVLQmiNꁈ  teKlK.mذ!''ðaÆ6,woF'xժ!C|ݫ=j0TӜ*y	A^?_TTUQikIr٠K_ڸT<ð|ə3g>ۋ/*DSKY,%%OH;WZ3p_tۿ87٢Dcvup;]WVVojIJFjrn@KZ7[xq  @ 8rrr-[<=vlϺ:́P.\{ p]*e!6lWPP3FMoɤHq fxxT(X:ujO?0*sC_MN(jƍ+W4 c)sŐ7?ˏr!;f/\`d\gqƮ\RQQaX@@@pp0q:h%{nT  -@Z%%%Ν;jSGX,D{MdA`w>|866o`ꖋY,hDp >~\oͩ4,[y5{u:L
+np f>̯y7EUUuP]#H\jUYY֭[VGz\ZJڸqW_TWo*Ec5**66Pbk#8Ū,T*YqXa  Fܹs-[j/n~Q#~9(hIV~]cG0(sDdu$ɲ=|XFs(V7fد_\`׮]_|'5bܵa&Сdyyy$I{h ?d/ͲqF?,Ap7,(T__+rOd
+ۛ8N=  -@)**:|͛3"ݻ9I~/ٳ碅/cűj_عXVOӴ;RӐ7ӣ䓏RB[i|˺t>ee/=ovڵ7LF	Ip|/6lT_cBC6[}a8_q,ܺs	!n/@{G|[:T[7yZhH=jwwf[G>*XQ8B,VPPPRRBtPPPll@ 5j4Btm}8!  ]{jjjm۶bŊk8cVCB=b% 7o0ags%}T+9Rq=CN)op3a埤8nƍj}]]eez>u=}v^?mdiwrq|ϟ>}:++bX.,6fZ.6jTaq+pZŦK]#tݪ7mnr2Esq6nn:㦃Vtvdwb;F]|Ӿks	0hnpl6[aaP(ӧ[hs;p^^^zpzϟHiiiv>p^  {p8jkk߿iӦ}ļL(ais$zٳ$Y\OIfP]]my1QhJpWgRի7lq{=Z⊊!!'ȑ#YYYV9y0$OiaJGhe?;s>`cD[<knqwzNhyMNF뷿o6NVqV=u7hWXXh6#&E+NTWW_pAFFF3C{$&&6/utgot   9rdW\	QD55n~\^&=s@)u
+Ȼlܓs188f#!P#|J>>HjժիWt~:Ѯ=D55
+SOQuÇ[,93|+9!?xqS!!r͡Z;}zW57<{Y)6"\V0;V[[k4|~\\T*p9c=Z699-h4ml   Eqj>qӧO54 c6RZVyz<@$BI54dR1;Pܥ8`UU5 ?XvtJ^H$^½,ǳ.6&.fʀ`]6&\zUH{vW^={$IR*L.ptҥKSSSB-t99WjQOI   ,t9Ǚm۶=zT.Ϟ=Ѩ(2TY#1T\oB)))OF$UAq#S\\۳H[Fi	o<?&+'W<X,^'yxX{ðG=zf<9	Z ta:!88ߟeY6;c=m`f   ]{V{ťKfffΘ1cv\_m-:-l?Ǝs}2ʡήӛ"{x:Sk01-YG8wʊUg( ZPUqBႯĉ|گ
+p>k׮3gΘLGLEJXLxqqq}}nD~~~@$AlD  Ahjj:yΝ;wmX̙pwzTt8ÇAeAu)43m^;w]><ۋg1ezJtXZ`w  n}Pz?~iipޥ%&+>s۷_zuӴz!M`4^sesHoooJ-ڤT*ZmZZZrn{  ;pqd:z;rssYfRQJKy$MvsƍɁ~@uAt}~=9W.<=Fa~aOԟ[,T՚-/='_={߯KM]Ưu~MMo͚%HvYTTvZc:%F,w hx<ODDi7h"V*ⓝ\FSX.  @N֭q|wsFP6UVV<"J!ӕUTZ;NS
+Qf4ZEBق'>:'Csn Sⷿcǎ}gO+lhxwT>~;v4z20@[co,x]]]}}B& `?hŋ5FIKKKKKsfNOOo^!VoTǙe  &#l6333À0!d#JeM.\߿?y,.b.jL&dJNzGѴnKCy0h`W_C\*y?h4'ٓW_ҽb&S MONff[lA՗ SB4.P-nDTfee=5<́PRRҺunKs @wi۶m[zh4iҬ㇛Dy9rcf3EEEzw7X)tP78TZֈP0q"|yӦ&=va!YL i^%KO?2jj^8Q _tڵz~dPa	 7:LT,/5BC,Cۀv8#>&;;[8+7+JZß{   2h,..޶m[fffIII޽{Qv;9Jd۶C~1#L8V]جLeUBhhu\?nJ$u&3sdm#siz o1v_W?/\zTT,5J lڴҥKV2g4^
+o57,*pxzz7hÝ#;{ =0ŋvبV{v;U]&yȯzo0WCu/V#BCl6Î$n9tlap8BN(6mH/>{?6nܸb
+(.vniڻAJuΝ;qܔ&D Bwz!$J}}}R)XhQvvvJJJRRRJJʍVjq0&11ph{{\=Z+**ٳf͚gzjǑ55vi/	
+=?&wxtPwĲ˗+BV\T8_VŲ=KJ*k5JVXxh,X7nhjj#~eً/8q驏MR%J>,u8!!! 
+Ș?}QHj9S8geev *vj۶m;v(**Zp2­Ӧ8=|3yXΣj/VRZ1}<</O		ϋA~UBQvw/?h4Р6lزe$~.߭&~GW^}}qbM"qX.1ΦCV/))oeqqX>:\΅^JӴRsoҥXH}k@Kŋ#-ZropK,_gϞ*+C[grN`qZڑ#G>Z|BR ӽՙL&˲FyN^R[nJ%"j~j~-B(7nO>|Bnرi??یf())	TTf* [}{#ywxG#/jEn ;x6<|6owr\M7)26UTT1VkZpfggggggddjܧ5 +hN󁦀p4%%%_r3gBBBfΜd|ʽ+#Qs!#BupO鸞Q@D<??/pvqxDDDyysZumA9jwǻi,˳ZʴZbtB'moUqݑ~vB!r ҆nNh?[
+G0 &}}}%	z@9K{jڌVqV$8*iZs/pO's8|>qoo`LFq'b[e1&	HVX74x{e9q!+$0vԨ|@'0<xjϞ=>>>O=L Ըg״=ރV"0eo*E;m?NnhP3Jډ2t<iM2K֑DFnht-|8ݨZU=Œ$0̩SBO<+pJejjRT*7#(@׎h4nI'PŲ@ `Y  ꢢT]m/cisjV+tPw0*	yezw鱞81>כ&Ɔ̬֐ 4f/9}vB>HQ<wz8D*8qÌ7pzn;'喞Hk/7v1[;;>ic4y=μlVsY/ 4SSSu|	=eY@`00DGhMH$UUUiZɄ;`䕫$7 !([qzYbJT]kE=o1?RΝ;mWy{g?A>xतDD#  mQOs ;FjupO'sBa겲2ۃ>!<<<Gb{1=bz{}&eF?$QlvDS(1SKǍ IHbyEɎ;O=Oϯssw0'M4p@L  mflj,!rA[h[(5h4"oDP(
+8sǲ,z;VVVGG)|QA%%էiBB !t5AsD
+ðsLfİ56m3fxgOQe%r{>k˙ѓ&MR>>>/  w:T*/^\PPpɅv<U{  pO'cY9@ xyyl6$>p?Y,rBnР/9s?i$BgozyʤB$+f34Z_^O8xiʽsBa{r<yxxx@  @gj-ZhQzzz=7DY'& @WnPgYV"Bv;Bn&!Bammmuuj8[3#Q̖pf3
+arvI&x2 &,n*"'%%4lw(뫪rrrCCCN:l0___D  _VVֺuKq!222ϟRҚs ZmrrrDDDDDMwUtsq'J_~Eap8BD7b`UxbnF㸏H޿,?ɣXoo5.W!JhيKMtok66446칑#jk
+7[,{)))	;v62  tK666:>i\ً-HLLl'\J5Х(J'?%%%eee.Z|Ν0$Esl6[CCCCC8D0cYOOOr&	{5ኊp3tȕR]УG5aa!>R!/t88&LG	-/,o]аf͚K.O0aر>>>  Wp}Zh4-h);pRt~a{z9\9nBcqПSPGMsW+)bKёaC{8jE4Bh["4
+4D@pHx?~={Ι0!m/RIQ;v!bرC9\  jJ2<<כ5'@%--y'B음 "-D"	H$fg;p48qGt]]b0bݍYYSιZ|졙j`K-ڰʂ%
+j|ϲ2;v,!!X,hsؤQFEDD8:  
+&;;;##CѴ|\V(Ӝy t#> Bht>XpeX
+Mv$u:3爦)>#Ann'-A ֣ߘhs-~+Bo((<F|@U~}/'''((pMM7+ef8qB*&%%?>&&z  񝌌VzjuJJJA9{p HZZFʂ@4-Y098I>qb8$$n[,!]55a*Aͱ,EJ8kj2hQyzzzƨA;*k|Ё훒2eqxy]
+7dg<yA=:>>b=  
+-IIIIJJJIIY2 BFFƢERRRB/\t>z=qqbd;u<L&nH:vW(h0ϲ,cqM.<:!$#O;qhBA{6ew1uGb;qN((=|X8ޯ_QF	B  pۋ8a	> tjzҥ	{{:˲|>_ QQQA>_!6MTL"DC7uGcbb\X|c9o۶8$	u|plX(.dRYڸN4֭[|ɓUT)_fͺu08qbrrZ"  :)))IIIbu.\ D":(///a#XLn>R)0Fa:@*tS&O;awff9Ų,=zlͤiAa*PUUA\l]h͚5<zg׬TZk׮GlL0aРA^^^/  :lVT*juxx3?2!  6t>X(*44l6sg
+}|<kj0W(83!3M;TJDQ8Eyo'?dfX>~҇婬ux{AKVu;w(jҤIpBaǺ8`&N8nܸ}zzzB  i4\A,]F?5"lh[GӴj4MF*8Y0)MMMVe'#JK(丿,zZ^a}#ʀm;B=x%{{g<
+h.@KfXFzj4uԗA[={1bĠA<==  VMNNjLJJRZV8@ZF8/P[oF^F|E!`bx<'8pL&8lMݎΖVzy||wjｽյx}.cz0VV&c(G=΍kY6!.BfTw6,--8qA+*Tb}|6TVfggEFF5/  iiiXŋSSS[f.Z(###;;;###%%rn @WCt:ax<a(TWWǲ,#݁aYÜyFh4rݓ5x+|?4oO-o#|}$|>_qA(# ._)F@!Ul݁ݏC}jܸzz8P[q{1vÇ"/  ŋ/\Ռu9kZb=  еȿAӴ\.0iLF4n#Ѵ\.($I RGQ}R+U{X}Ùus'9,D"fg-x^֢YW+Zefߜ߷oWf]WB8nVvX,pL&KNN3fLHHX,  (,,D-
+6_'fsz?  5A1#m6q>>>JfaxNLrfF&9op,WԤ34xR<!k_^0s8cH&j_X$1B!zZǿpIzꡇzbqϾ-;=zL0aذaB:  ܩUۙÅ   =2S"v^Dq8d2X,64M*gjM2:RM>[rL)Bd<RIzL
+-位_Ysrr"""1cJ45UٳJr	w_TTLt {s9`>  t!$4AcF ,KÈD"PxG{XZeYhwJMCFv:}_>EKBa{?oG<yXu:;;'ĉ<oÆ9\  ~EWVּY;   2t> ,ff$ItCCp tpGQǳlF8tJ+C2ּ#hDL{v/=Biqվ%Y۷o~GgJ{VqV&;NQ7o>qEQ			CA@  9K󤧧''';W^o`;S   >X,뜛 Jy<^]]N8*R_dD*
+GGr<Afwq,~31CQɘ 4~\\y>?r,77'%%i~e.BJ/M6ٳðQF?^V+
+  #RSS3224Mvvvbbbxx3G4JMMu& =qeU*IǉD"XlZ1
+VMc`a LUe|t7R,sW]cb9%Hh{+'O<7"_Q]3
+%x޽gΜ8.11qʔ)/  p(ʬ|йzaaaEk   2t>g<<<hvNbpH$&h4ZV=M!4m/Q7RR!,+o fﲕeVB=cO(SG
+Ν8q'%%b=  p9#>gZNIIij  @ pa\Xֺ:^I"{:e!h4Unc?xg{EY-&%B&_E6mszRUTf<ԩ;wZ޽{'''>  @Vju;<탸  t4AsN8N(Z,zhAb&
+%	qfat;+~JՌBn*-5ih{͛7׏?~ĉ~n85kSRR4` k      p5|L&ÚH$iaV m67jb`08N4@Ou#E%FCv9"!kv>.̶m۴ZmRR&D'JM
+ů/gffGEE<o߾>>>n \ay).R~=\Yj  @Wq82L(,kBfZ<,A8XlaԽ(9ov@ !rҝYܪjS'FknIڨT		2e|>t  )&99y-K:eUA  2t>:^^^@(:W@w8Ab1ad2L&	q =Ս$˾|HH7?1hޓQ sվ\+=:bĈﻯVbBf߾}!!!ƍ4iRXX@  ;hXO
+ =.pA X, Ipwbe.q9|hbSTҡBNd2=5~Z{ܹiӦXAYv#G>bĈ@  hsZޜq .J5w>Ü%{4M466
+5aD"T*x6" {pHxǟ={6::z3	llti0mܸ177W$2dȑzH$5  pg9yZ-  @%x<q2f544,XnsHq0~/)Y^F<}B!{&I>>Ӟ='OdYVV;6..NP_  "OQ[mafr @\n8YJ87448 H,8A,˚fq w~IWٻwǔ)SQ( dS[l9vP(0`R)t  tJ#d +,xH$XL0XVaѰ,EQ!hXf3͐ EUߧn۶	&
+VWmuEeff8qO:UV{{{;<   2pa인	  `rP(b1EQίC;_ǝB!06e	2^/'w-L2gOy]{mRm>|ɓ4hҤIÇDp  Eaq	kKZZZ/y  h4+[,EQ$IR,&iXRB &ߏ۵ka'O^0tou5rCEvbxӹsgΜZqqqɽ{V*$	3 j'''/ZG  ]8aAtz	Ǒ_!'3L aY߰k.2yyiX|O͛7ܹS%$$187  kQՋ/go_0##ee褤𔔔[=6VjAi`ZmSRRl 5 q'
+)2LV RاOVܼ0at:"pgM65441b!!UU8'T+++ٳgrr!Cx<  t5IIIWup2VMKKksj3@D6-Zpۈ @`YqaP(
+6p$ɑ$pl6gfXʫ<M t_6uׯrȑ#?>=dV,/333++2&&fщ {M7j!T*SRRj3Fdggw<%8*rVh222BiiiJrп  {\q$IH$ qm6juw!ĲBP,bd2l6(S tG6-aÆ=>cP7A+{)++LNN3fL=b1t  Vc=)))K.m|RR	$%%<yT5FLDp  Wq\*:,:,˒$ɊŸNtI*bgi 0>;b9i^iӦ}>;k0ݰkN(4xxls
+
+
+5jرcB!t  kn:+--IMM]ti9lRy}Y"ZpE*nObbᩩP	;&pg%v;n2}tȒN D@0Yźu?>>>~֌ìV={(;,C:4$$b=  pd.g[*h|U*UZZDaVhJeRRVMOOOLLt  H$x<ie;u<8n] t7_,[&  `ҤIM4nnٲرc|>FӧJ  p楯RSS[jsRNxxRj-JNNvu"==Y}ಲ֭[Dh =BQNf3gD;ԂqBaZ-r t'9ۭYYYRtԩ)
+&IvٳwShӧϘ1cbcce2A@   c_I&?9;:kZRUPPؘ|6pOKJJRՐAXV$M&ǓJ!DQC88aEQ< BDj]~~Ͱ*((PP	^i\K,_.qFkX#qI׏?8x𠗗ԩSDDH*ݴ3w:q@ ׯ߰a!  Mi\Nپ2΄K6tN,ZH:<!Rxbgt	t.ViS {\E$8-Hint:a}(,K#q:ͷ~˶Aa;}oشR)6%a}G),;O,|pf	{JM5W5p?rr|֬YO++[ǴJ]v9o0`ʔ){ {~!8eWխRSS-ZTXXL}9oHg2h,ⓑQXXiS {\j
+ewlr!0eY9	!8D]I462K8!HW*E
+PT"չ{NhJpM!$X%dRAsjr;v]pf
+Tx:CYq$qg6S)UQs999 99HyYr~]*ҽ<y~9_~1  prZpQWvZPխ1-7h/^$r$ϟT*;>#--y]jj- t@EM"!dٜcL&NX(L.l0XN }&q*ʵZZA}] poJI^qcrPHuɾi:#B(*;&W&_l=g8EGy
+\I9[~BeIIcQqVkv/7$B*0@1!apnMz%on2ƍԀ޵pb5rGt{;vlbbb`` } o&@aaa'8/Ϊ.r-g٠EAS8[0;=0se.s&HXQvlhZʃ+qjͦ-go<]Vd9heY0C,0^o58FĠ:nNޥ}r''yPǎ_ȫB+己;/uz!a8FQĶf=~r@%'[5~`˖-:nя\_ãD"YyCG9d???  =\idddD.jVSSSҚK)<<g Y0xs:\8p8v;˲,IށXx<$1Fa"Пo<6Cw#!{zeصMRU?~aؠ@EDsfWf^QqB(6Ʒo@OIjulq+_&[>RXQلH \.`e:+5!d3E|}eO>>=n7=~^qmӦMMMMCyz䄦&drxD"p}"##Gѯ_?ooof  萤$2/><<y= \6^8H$Y,yzrb{lòY!DQTmcT\݄jjlq᷵'.!_Y8~=c}}2Chj&j~m8L0jdoIv2g54͒$Kk(8N&Q58%8Hċ-)fh3;_{ʦ&q%W7E"rVî]***F5^]3
+E\ٜQF=:""9;   EּpBg/];ddd,^X) pp8@ J6`idd܁>](8y<3!!WjV9ףeZ@@%(e9g㐇JbYN/xփj"(Ǟ+yB!~}|}d-:{^VPkށ*6M|>9iB\ʌ~^*1a~=vtJzG&Pv5N֭[+++j)St}Ur#GTTT?~С   3Bqt:Diiic.vuSggggeeAS jq-gl  XeYV.#B6;qac=vjB<Tv9Vd4B=p|rlLos ? ?UKfb}{'J$RMkf$_ՙ\yĞv҂
+єɽNhJ(FɤoR)\n@3͛7_r%::qnX]999%%%~~~<x0z   RtRg	􌌌TZ:#A5skڅ;WLOOO_nߏFDD8(JZ\)ܙڣT*aNuֵ,,--u N0xs!Pa\.'IiaBZ6a|$˒$㸳pVu8{vhN{;콂Du;oN0.eYNTf'hiǋ-Byx'Zi=\px1BSn6a$yHOhqO-F3G,[qܹI&M7kw{rJ5jԨQd2t  f͓/V
+
+ϟjWQ ++pt.g%$<<FA
+pnT9%%EVϟ? 7pf$-˲E!,|vkq窙f~KSe~:|0BK:erǝ9[mǅ={\Zkǌ9=fTԸ	G|&{FPX_B.lX^3 =IsD!
+RJ|PI.O4)SPYe9!fZ,{|D"ӧϠA"##b1t  'sup{gGaa3ƹںZnggg7?V[bjua?Ҧ'O:5g8W
+e Vd 㲑ˊb83Zl6766r7MoeC(JRDR__o88_:\`3$|vemq"kzhvF.D
+\\w>qB!կoP.]BH$Nrղ4^RtqIBH&z$/^V,_СC!!!ӦM,sK!dem۶E%&&5*!!&   Zİ[OJYV#  [AUpX,B8e95&iI"&]AΥ1^u5v2/l4I&Ľ`ߏ,9U{3/B^^@e/qY칊&v56Halo`B&4qO)Cy{IC38;vJ_}<=$"d߳ʊƲBWP\r'Nɓ'?*sO^M.e:}4BwcǎU  pog   # *ÈbBQUUŲ,sZA4M,BH"0,̲|Sp0ki6o=0\.9ǂG@FC)g՟~9saXT0dPXʌ~C{zmviIVBʦEyBUh0o~b1_wg]i!\op0q8qr8QYմൕO;^qGDGylPم?gيcƌy4*JVR➽ۥCr[O:2dѣ
+   hT .pBIJ($)r8cYwg$ME|\WWg2N9ulxDu+v;6CW{+yO(mx//,j8q"f{uNjJ+BTB-:w"\.7((Hy۫qZ\VPal/-k&Rw5Ǳp䤘6$b=į}99983!CkjtY4uiѧOg΃|2K	 I8B`ƞ==3}c5n[ط;qw0K$:T;#MJ*J*(eTV;y睭[3s  (P UUU K1  sdYFHDsd2,Kgu,OmؠyaQEI,_]x4IYQ׺S߂faΞ{褢?kRG2X<g?z<E))3yw/NV{-ڰ0iIP8w?>$Y]~]IodXP(69Ɠ&0]Zb݆or&q#E}}Y4}wjbdٝhUWw8qڵp8nݺֺ:ۍ>\  K¨ ف'4m2!(bP((I"4X5E}}4M,kYbEB"/q/NVl׭-jj,/*
+eYu{cU]6$d=Y##~Tq t&ϜOaYfccyu``켫vڰdUu.xOΞ{y+˜+/:u={ݻkgf,iho?~ܹsmmm۶mTi  dD  (Eh4J®vik+?v,ˌ,[VFӴ \'	_}|IBHyӳ%$_}|f
+獜-.fx&p
+
+Z#񓷟<&ol(w[6;A/!հȶodYFEe6+j`:&&A/$)33K3oZ	2$*կ;w7o0=Mٸ59׫?~̙+Wnݺh4  @jE={_
+e#
+=Ĳl(t<G"ɹ^KXV@}#dYuw!VnmqScYK&ɩЅ?TȔ9WT	!E(ZO~qv4*BEqL.m^SQuukfo^o{@R[SXbEݵAGf<?`"nyqKd\ɓ'bM@6V8njp'Olٲe˖Jٌs  i2?OsG&
+XT%LB9FmAA戢p8XX,f`0W*942
+q=c۫N.19ާ4M[V//sZ"<}pML(</ƧHj㟉xau|wųv=0!Ȯ޾!BaܰdEe2hۍkF4M
+m;V(OMF<	Kܟ?>44TWW;lE¦%f}ɓ';;;׭[gZqj     rLQE"d2L&5hTӖ,g=)YL&'O&''%I"%$bϣ_BPp+]/©нc<#y$	yЦ3f3ee[*!gf'OzÄښ¦rHӔ_z#kl(saYV'r9MX|pj)迅i``d}gݸqwpp0//o׮]vZjfø  S>;  3=Vm6q,zaDQժYM|d(^Eqzzd21<!RΟoEQiJYVVP(onPmmVs*a>MSBh8ݦիo\$8Ɔ*^}㝻z.?$eښ"AA^7#B\"[am3C2Ar~~Rg]z޽{g01t:[ZZv`  zr 5 pNA0F1ʲdyOX`0RFyWG=,ȲBQTq&ILL~o:LY*?=5?y2YVt: ߢ5$RgScYߓb!ֆ5(*<WRQr_1|7]xƍ2:Iti3{dڴiΝ;Ѯ  䠍W0	,Q{2)(I^$Ih4:===55H8ժAEQe*iy)EQG!,K8vxd:-$ccCC^t:z[KUێU%g.<$,Ӱtmmju響Ѕj+֯+Q'\q]:^B˜3i~EO	|w;ۛrex8YEc~SnܸڵkoАOӈ  `!U_T 9<g,=A+?\kє(t:Y$Y%>el6LTMDQ</%#a_4,P-NQ׿~Jw[65W< !l{ʫVAv2db"xg~Bf,-uZHR8O\b6x㍟UU9t3'̙3/_avx<eee8  TIQ> `1CܓAÄaeEQ$pǲ ,ӱ
+M0^e9F"%/ a^xXiyXʲ<8x$Y~79by/Ͽ^HmF"8yR/OER^lj(+/wbWP|W===,˾?x򦦲viY>s̭[hkmmmll,,,T_  ??  3<g$Ij)nۧBP,SE2tYeY$䤢(w2 1]]zm0BU+e2'ԇuhmK*YV$IVWV{^Գљ'O}S~6¡o2)(DNG'|.BFSYY2XzOnxymEEYG;
+m/CvBl6C˖;V,+~Gab~χOvomB,l=v_Z|ŋAx<vjmm48;  O7=  KRg2FyAd$	3(sOMMh0AP:e
+,+SK˝E6uhL^imXW_b}W78],&*/ttjDDixpievX쩈O{/|BUJy?!f345:;CV0rm6EP#zoysq(!t{jgkVOq
+n9sfff?رzr2;Yls˗oܸ׭[gϞM6  Wl\`qCܓY\XiDQT0$=Bh.--BX,&+LrƦrAH?w&0wv{oUhэ,+*w:aSg>:Aȓ'g޾'w>j[ݾ6alg(0tÆիGə?y;Bj֭-v:yk:ŭ`0VX`]QRlZ9YV&'#=x8EQwdS?ޗ&}}pYN/ygϗGZ?x竮nmmmiiYr% W| :b'㷆`0h2l6UEYl8Nf`0,j5l]i4;-,+#SЍÜ^GӔ,+4MIBHÆҦ5kEU+Unä1飿ŉCb"K]\do۱*(Oy>?_]|A֗Ώ畎p|GN&d%#A?doj?k~{o}i`<L?'NLLL477 =3M6C؝;W^lkk۶m[ii)  xys*  ̊bAeBH4ye1t:Y%Ib P%+_
+MS@T<zÁ@1at6/}݆ߪa]}q:M[6	D{`,VRYZUƮ5?|g}°;&0+|EPmuY#>JG0s9M-[W[ϋL4nI_X`3t6XƮ5[7ۍ}?`FO<9<<aÆo,l[۟:z̙37nliiYfjŹ |"vp:,j	 .Y6tE~uY6o:y2{#IMKP($If	sD4UV㍛7>y4,34m4yyym;VmT:dnˮ557o#QAY$N[µa}imMa{|pmM_2M5k
+_yџ7e+Vü>cEsf]ahTCO|SS!^x^ZNd05J&OWrf?Zj՛o¶%cnÇ]]]<ضm[kkk]]Ĺ WX(4 Xd4eѨN$IElZbf,Ų7ŷncELLLb1EY.30tmMamMK$roھjak++6/|_yc?Xl	!//?t=¦qn?JJJlR[[t:w   `I@ܓYFh4fmXdYÒ$/]"]E X`09tB|'nܸbŊ??iAul+	a]niiikkknnv8z  z޺B`X&d5&XP,EQ$I2L,<(
+˲EEdAӌ(JKKFc("?Wbɉ{׿Ϟegvzf:n;ww8: ?& uf|sKEdEQC4G3#("MY6Ue6n[zBг*x^Eݿ~E__|w5>TW1ŝ<u-NԴsM6! L<d=j%
+qOf4M{^YYUO4-IPMdTӌ(2CQT,BGfq ^;S.]2۶miMMx6%MwܻwR__cǎZݎ  2= W;"@f(L&z(^ɓ'cccEF#M*дK BbX0T)?K.4e˖œT\hlGoRRRq  dm  h=PQ[0ò(F1]b`0,gff$I"
+>*GC?=y(vɮ]33T(GsVΟ??::ZQQcSQQa6qv   CЙ `I@U?BFc,ivlh4*fw/Z,`B<3#k `Abz_];}m77BtƷ	yy4}ܹZQ֭[L&z  #.AXVO}7aiBg̒$f1v&&&$Ib$ICV;sBNS'2jTs<ϷX~q{ӧO_r%z<;vz  N,aBܓ(qèsKDQ$Ip|<\s8G GOL_tuulݺw.z]twllt˖-۶m[rhĹ =U  3= 4Qe9R%Ll$B9MzY% mFyo?}rرw(Jfab^ްr힞[כL&  teXC!Rq[2q(b (~>R0<SL;%nh4(J$$N@@׿;vGfq|<Ί<l|>4tڵOv\YYiX  Y5uOƉhzhTezzz||<YMcO dKhB0&op>7|}:1񬇦eeכ7ϝ;Ӽݻwoذ!??[V  mf.TaY] KZd ,<q ###,[,YfCd(s@BcSp ?=Ͽ曒G?X,ӛV6}96v鞞Q[ZZ֮]v1  d,˨ òh(,5Q'
+$v0==B8.xEH`0p(JuЂwrف½{իD3eZḉs=|h4644ڵ\%
+  EF5.]AF)($I<\tHxssFocfS'$g
+ Qrt<yo\##Yhmm˗w޽gϞ׻n<|  }E!  ,ZhݓYj;Np,B@ A4N~$(t	'B|7oo.\`YyssdBhڗwҥsݺuKQݻw766VVVt |E.X&lBƅa^/,˲,}(X,
+eyk"ؘn(Zm䎛Jxqַ(ujo!y7\W	KzSuɫuS0?S	mVNu{SOz9J~}֋D}Q?ɯufz%szIm~Yfffn߾}={Mlro[n<fXRR  P  =SbLLL4Nʮveyzz4{#ˌ,@ 055z.]0$I+'uGJEͬkSTßkt^XF$Z3!SqdltF=S8sAU2	GPP:.|7oތb?Oןzr24pϳξ@ zꖖM6ZeY] ?  3=EQT4y^(
+J]Ƨp@ MH$rʕm|?{^V<-Zh.׮Ϋɰ^˙J݄jN@\jD;33zu:]CCOkӮGs:݅_
+***6oxz=n  =s2ӡ`)BܓdbjR599966F	!
+f3,^qFFtrC	aP:;߷SOHOff}~\#EϠ,`_Imָ'u|RE/ޞ\O{2W%6W+NvNGQԣGxiΒ\n?sL0\v;ZZZV+n  zi	\ꀸf5,+˲(B!`2xU϶ί544l޼Y=Ed0k3W(3kܓN|"EכtI'H3dY$qOk55yaA:%danc$ށtFtzaFѸ+JC!6;z]~ʕ+/_\zukkk[[[UUM  ^O(	  =Pe*r(8h4AYeTX
+QO>e/nDd/Ubn_\a+),i&b$дp<Z?uXb۶m[nUVM  
+ `Bܓ\PPP^^DQ!/s?,<+}~rC!Dt8TVvww_zutt񴴴l-     `CܓqWE
+`0EQEY<; 	ˎZ.\xn_~}kkk}}}AA  X<ҟK 7jZ@d&IQ< vwχnPXX!   xm0T3,Q{2NK^A Ȳe] 8fwww?4M^zF  ؐ i^ K4|]NQdY8(An.v} -nlFFܹòl}}7nXZZ>\  8nQex,9{2N$DQ4ÄB!B :NTe/Cs]z(x*++J  !y,9̕q:Nee0x8F)""X~^p\>www߹s'Z7hmm]j  `1W2KjEqD"e].dE2Р`Vex[ม7<KW\y(uuuj   `  x2(EQt8>iAxT,"X^h:r}/^yf$ٶm͛,J  S.
+p,j x74M4-r0bVK|ɢ-[^p  `@!8IXUEӱ,ł,!z=`k55.]th~~~ssM֬Yt:  ,!\ :se04M?BH$l~?%˄, rM.y͚5nO  $ Ҩ@ N8~?!D2 >wz>=s޼y
+
+  p,f{2NeDQ4Fh4<0<; fV^~~ܼs  ,WE
+ XZESct8աvN#pg4E$eqs]V'Vk___oolnjjڳgOSSSaa!˲($  X& ,!$ݹsJFEܓH$B1]j.ei@ƻMM}}}a͚5---MMMeeez  Ki ,-H/{oǎ}+CܓODuf^o٬V ,+1p@.&]ޫW3aÆBd=    lqqqAAAWW׃_6U@ܓ:p`!
+|>^dBӄ	!ԋ2 upkȘfDypWNgW.%=Qpn72<C43Χy>	ޱO%bd%y(*4-Z,&ӧCC===}}}~_zz-e4q{ HsVQ%D׷*/y}[nq,˲`0oej@Q$IGf85~}^-og]vu'[L^,x(I^\nQz4Z{آB
+uUpӼmLQefϵ;ߋ$Ŀq###o>7|zo^ZZ["  ,]V5	 E(˵wޚ'N7/<xpΝ>Eܓyժ<v˲HN2[}ZmyìGꭧG0I`/ z%G"H'HqR҉ȋKB
+-E8)ɇǏo޼
+6l{ݻD  XB!DǏ0ti}Qɲe6msC*bjV=W3CHOm'<įAM	0!;o7%Hu&+l*ὲ,4)eևJ~}8n$ϿlƟ҈/NN>pu	gD}%~/Y/Iquh?o:a;a**^TZByֻ\?|gg^c///-ˍ7ԩS?+**@xw:v=
+BpOOOr;Em4M3\ѭ$nK1+^%K'Yp:OQ:̌ EMQQ  OXLñoΝHiJYB((
+}*2kW]aro7)wR_QH1ڒ	%y߁*,qon)aW$K{Q[[̵`vODL=Pp-şD2ajė@8<p='(yE|u%,:gy%~8{5Wium̬Gs]W</N=;<%}	UYe_~ۿݸq#0{ ]ꀬccc.kŊüw/-gQeIs-<cJOIfIf:a&hXw;  ܠu
+UiJE*o&(b	ZbI}m	I I]`΅z'O~fI-GӖk$L\J$)55,P$sH v2a	[g*>в.U%U|ҭVnRsf֦g񿊿tw,zNCO>ZH[y8u3Y/>yOcoTmJК)Q%PD ڵkkkkHpqqk2Ry|2J(E#ddqI:,-)Fxyp-6Ap)U?yQ\Wή.
+!ƔQL|,|]vX,  7hyѨ
+( Ȃ7|QC':uG?ux^	~lllbbBFi6lȥs) J<ۂkjjqzHzļdC9NjdyR|3W 8_:f{5,d-,Fazt:  rĄhiba{fk$TfVƟ!3ukCFIXլ=WhH=QHB=6~àTgN3Xf7jøZɫHqu:6M&*ɣ)ϵAZ|W0S{ՓO$5:ߓG|oUEuߢ~{s=~XQ]v577lqO6@  0y6;R/W=Na2ёD^o28iS     ,ht``ɓpxƍ?S[[k6sr'$Iy^mH+M"sEUK*'i^    `Q9{|h4ZUUcǎ~l6;8aЕ      Pedd?|rqqq[[ݻ7nt:ꖘк       r?~\WWqƼp}.{      C> @Q%ɲq\=*=      KR7#,[     `koooooG9 
+q     ގ[ Q        q     @8zhGGEQEutth=tPuu5\GGGggg|>_bUۛWT~aGGǇ~z:[WyA˥.r<sڒEUWW:tH݇&eG9B     %K}G/\tj5vW^x<ϟ|IԩS	ۊE-mw^[O\$loN6|w˵k>+
+rZ      ,>|'׮]裏!R۳8p^vڵkjpСCjk300p5׻o߾Y[֤/ͭ'쿶jT$ѣj'x^5x:|p{{.=z4~?ۇr&b     Xʕ:"TUUUUUſxLM>00R3y!ȑ#jbra5~o"N9uֈFV+*7V{{Sum	;\.!>ЎTSN7477&lT}ׁ[,ih     =z%sSmA0ׁHEr|>eKsJuҎW}|0kCі3C.D      Kށ:"%D3?ZJt:FGUKP^&IsJp4zRؾ}ᢏ=&Mj_0Ӊ\K      ,yUUU/_KgJ¤Yw`Gud=c      ,k7	ҏW8pAWooڧ=       XۗN;t[en"uL[TG>zzPC5     ,GZYhIr0N}>_+in=G;GUԦ {      v9̡CRQÑ#G/:T'!	:rgj[OQé#G08vB֓M{       XԱ}>_GG9r#~emtmG677'$8*5I<xG=zt!u2m}^<I>СC	Ծ}_͸       X>;xjnn>x`BsѣYS>Hmsȑj5I^8ͭϋO(?lnnv\~a|zдrj     X,ۧ:"ÇۧZjooOUUU񋵷8pr%t^vȑ#ZjSUUF*	m߾}Zw6Q6=(EQP
+      *%EBN:&2?x#Gp!3      ,/CsrAB      ˇ~9 a      X=zT]]SU       RI,y|흝UUU&=        `                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r
+                       ){        r? 3U`    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,381 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 550.8 248.04]
+/CropBox [0 0 550.8 248.04]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+550.8 0 0 248.04 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+36
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1530
+/Height 689
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x	xeq]eE.VPY%UD", @@n@JSnz@SD@A"
+.PTV,nYgc҆	My>tff~{                                                                                                                                                                                                                                                                                                                                    ***:v옯333     :ݺu{衇Zj~*     ͝2e}wܺuj     ~N:WQF}F     s_>wܿ/<-Z4m4   ;;     [򢣣_|EwwF͚5իWBBBII	U     PW>`޽4i:~={>#KKK      7o޼[n˖-{'\]].\дiS//{SQ      `۶m;vdk֬پ}O<ѰaC???^߯_f͚͙3'55     p|Æk֬و#Xmϲe233[hѵk2     #yvYPP/='OygVZS     pd)))vJOOŉ=-[VTTsN;v䕡      Yqqqvvv~~h,=quu+**ܼy3999--X     C,ӞҲ)ک     H     	i4n     PI=I{      :9     :     SFUow'i     #^_˝      EL{juv      8Ry=U/a      R>2L.S>     PJUbzr     8R]	b      g"EO.      '=*ZT*     5g0Z1-Ѷ\UP(L;	kGv{#XYSI[     p{yMdarmsP*V1m(
+    4{iL&2'm{XFFxIBPպ2 &8lLI     LI$^/[rwgN.'&E=«a0R     3]4e#:>>=NIL`GvڣjVlC    )fY&I-qnYfkJzz\.X	%#Լ'@    %\zhM)iذ!i3/+5KKc@d2it3E    %\7K{qz+Qԍ,	x-	?H\)
+e9i     v"ݏ+J4p}̐8%).b+8ioA     tmӍxo.ޤiSF#/t(i     M%8(͌dݸ
+CIݻH{     ;zp-˽CabbbH{O5NH{     ;z}6CO.T9`
+Hi     v%/rZ]GJ{-Je囩Y+Wf{Bq-I{     +{8=Ss R)t+sǎiH*HPwxH{     + kNUGL{\]]0Q*Ck@*P*
+E%3ʤC=     AV*>޶GJ{J:vBW^gvjL[%P(L'*\Xf-ͥ=     uMeSh;Je#<<<x}Z)ӍMӡ&*%    hZ-Lb~rۄPT	5o6LKFXieM%	ToG     	UYLjESm     [nM%<J<VbO:(r\[    @=a]KR*m{\\\     @jVGRFi     :pYoݒ4Jc"     8ޕi#=9Je#s9     &>2Ź;`#>vss|+&     K+JGRell#VK     	Vryeqflc      U*:]q{pN.rx    Sjf*3bHlӰa:OJxUk     N0;\jsTa     dJ!DlRWFi$p      'VZmHm{ܜ\      MKl&,(gԹ\      NO[e:?utN.      g&e;JRP?ʊvӞ{Pz    %R)F*ʬ`oZmKiOq+
+>XJ;     K&QOE#(r+EC     t<ZJg.      b}X;n#=     Zg===     T4,OFF89     :ARIӬz_t:iva     8H&yqssVV԰\=     dddӬ쥴!     J׫T*r`W\\;ii     p!     Dq{H{     @-P**u:Fi&     NכN%QU==H{     @\[!!     K[N.Q(U:=H{     @RTsGe2YF     PTGTtb*==     vii7.IM     ZAC     TU >>     "ۦ=kۣ'!     wNSUWGef     4\=     	0J3i     p&RCO.     hC     	m{H{     3!!wr\T    =H{*^oooR)t+    p!DL{JPӉ5    c5    "66\=@Y=2Ã    NGXt
+,    .zr U"=
+    \=@i\.זau    p4==@Y    p("    iiP%=    q{H{H{ʰT*oooj	    jԶq{H{JhpfJ%+C   @-"!l`0t:    ]"l`0    @bfH{    ѓ!    u==    @#!lKR	    PH{H{     3'    alSLB    v\
+
+    &miB    =
+    Jll;4P(=    B!    L{EC    `v
+    zr1niB    =
+    ԓB!    
+iB    0J3iB    NI{(    p&"PH{    жB!    g¸==
+i    8m=H{(    p!PH{    0niB    =
+    SLLiiB    Nq{H{(    p&"PH{    Hm{B!    
+iB    EECC    _?iiB    um{H{(    p&111==
+i    8P(=    iOq~==
+i    8MC
+    )miB    =
+    ?OzrP(=    4bcciCC    Ӡ'iB    NГB!    
+iB    EB!    H{I{H{(    p"PH{    ГB!    gB
+    27ΏB!    
+iB    ГB!    gJ{hCC    3=!PH{    	0;iB    NГB!    '@O.
+=Fq     !P )..NIIINN.((    $==JJ{CCC_xaÆm۶-55h4    LCʹ'??׮]^^^͚5رǼ<>    >>QI{(:;w1B&5o޼ׯ_   @=@
+UPPf͚nݺ=/ܹs\>   [{yG}FQ@Y|(&.f5tcCYnlPCWZ?JjwMMgXb<nĘbw}dS,B\)<v~%r/q5f
+˦GZkVmtp0so}g%q*JmX>q'h͎oz=r_VU ncZeEmVn򉘮4,˽ʭՊG.ظ2r~koLm۶/KOn0   P}7͗KƏ>PkڢL,^Z+Mo3qwqiFb_6k-0YSBf~J0}hc95cŕ 3<ӢE	+qYFRZO?c=}cǎ9   9pB~neˈ+L bz@ӿ"|w[Z\iGMJqf=Ai١=reWħl+-O@ܱ3;rf}ri[Kly32]Y2=ױ}-..G+0"qwOp¬,>   7|ݻ;I,,?Mߊkrү!C!ߚ)iK˽.#,MĬiY@\G:?-S0;Vx4i%G5}%߲zMA:٫/m,ր7{EL:1Ӛ7=xbf{[֛n\^q+6b~ZM+˭7+OMZif4{}j'o73}=_cJ;֖(|w_VZ	f.eڶmm۶|>   7'O4?/]tΝ;'gϞLYOT|.\v<TEŌp37=rOܧ,fvWfǴ<;n`+oY٦m,[nV'nyVZEoz*SKV6~9қtqJՏ%QTie陘Ukj]l=e-/O?{nRٹsI&={Oۗi4     N<ܯ_M>#z
+nݢ~      ꐛ7oܹǧE͚57o^BBBvv6y      ј3tuΜ9{MKK+))r      ꢴ;vZ*>>>55     4јC                                           )**:v옯333     :`0>QFB      \&M<C7^|[     :~ԩ}?QF}F     s_>wF=PF&5m4   ;;     [򢣣_|EwwF͚5իWBBBII	U     PW>`޽׿6lPPG7o^ZZ     PWΟ?yݺu{'\]]}}}6mwb*
+     l۶cǎ2l͚5۷oӞK~5klΜ9     KNN6lXfF!,=6\lYfffppp-v_\     pd111/Ν;
+
+bccŶ=˖-+,,<y򤏏3<jժ2     #KII	ݵkWzz0>>^L{vcǎ2     #+..7CӞ\EEE7o&''Pc      uiOi     @]D     LQM
+ZT*     vONWŴt8R
+	aVфKN85	WeBVgdd2     ^_ݥ\\ԧP*TǬIڣj,OC&U    Ɉ7jz[!^!nnn
+BNteT*O{-r\lcz    @ 81)H6Rjzac`R8     8Y#ɤ&f*GE|xU(
+{&
+    @sGG3'3@LVV=z^ji##<O    DTzWBE}d==DU#?Ĥel'i     ¸=NIe6Bb#)
+iL&    0nSҞjjM׋QlK[=_    `0d/'3F# eiP=6L{cL    )`6VY9%㔪Bt()BUړ!o֠    `0H閛=q8'=I5n6O{RT     z8嘺r)UcN.q{oooU&itVte    Poi;q8+ŗʕپ2C%<푢    e#nSѝ8m{UUUUf=j     +;teڣjiSP(*T&I#E=L    @E8RcHw94(JV+δVT¥"m,\-¾aKa/a4DsiҘ(wt ^5     !Pr\J{eu4x81ᒐVf24hB=ѕ<     c#K++ڝq{Rr	RiHf
+BV1-X9x     !v% )b۞      8^o~CEXi}/Fi     p(hޝ     }r*D     PFj#̸=      BtZ*>111=      `0j\^؇\      .##2QTn,=~~~=(JT    O*;=222[T
+?zj    sc.Md2V[.bOڃr/*R*CN'?     #l697֛aж֙=eܨ     ĴHWT\Qae#Ʉk    N&=nnny$uR#,t:1]4     mu>ߺ%iBĴǔBZ     +q-+GհaCFiFĴG.k0:     wd#qqq'e9n     zp{nTrdfXG    #0jZ.1Fi'E    @-*rNvNW.R((WEi[VFVSQ     ؐV5U{Dqqq=~Y^E%tss4p     :ث:	{ll+=P=Z     Ҟ*<ifz<<<     RZ-+q{#=<<  '==G-;vh%Trj￯uȑ0<9 z#zM}܄BQmOÆI{PU*J&Y
+  TgϞ-|ЯBM(BCiT56+McYLy]^ӕf)wlc#W,=y0[(XP+RQ..6~dux텗o߾.] pcsrzZxu)0n  r~u="DcRUo;ҡCÇNv%F P=]x{{+J4VVضŅQQ%Am
+ 
+Z+2l\S{	mڴ/
+
+
+x/  JRtT*Y
+~\.GԶ  V\zu֬YO?ͻ7ј^c-[  d21hq$Ba='  TXXxȑvYsClI*5fB"""rrrx @}&6ݱ2j8JEv_8@ @-n?{l4etR^9PiD駞zj'O 942,.\0V
+i \tiƼm۶޻1w
+ܗ3{εi}s éj:R8~7fffжB pd:}m۶n_5ٚj^L.[JLtiY?Zbs\w5[PZD51QI5o3M4yw>zEay222ɹ*@  {HOO_vm6mG$uߍ;ޫVZn]`aAB	2i{=a!((H<ۀ ?'VzzzrX?C CZqYz6jcÆӧOo޼1lrG):sA۶m7nxP PT*iu^o+N'.,ضŅ  [V8qb7Vo~f
+=\IHQ#m(X@m,Sp6ӳUƵ6]=UK}rT\VτagRfrRV\~wOo8"?>hРGr5m Ej#deܤ5)5Ŝ\==  \AAN8p&fڔh;uvɧN߅R鼡VRX8r7FЕkK
+^0_ܹ.ߝtbߤٲLNUbaܑIE3-}CCC  pGf\V&g/ev  lڵkM-uTT"ׄD~ˀ?Grʺ[^H^v5pd
+.|_҅._ÂC~+
+>O#W40MRM:ǞdnRR=  ^WT޿C`}/qzr  Pmϟ4hPN6>fϙ
+̘lŲS'o⛝_.FPEԓsC'^Y{tL߅ÿ?/0^10+=hv^-JIk<==C<PF>!J$(-CCC Pf`'! z
+
+
+4Mvz-<IEV%=US^[ŬOޝ:]c~=|uS*<z/>}NA)R~Lz'T:iX~|ϸj2m'"t˖-X\\̛ PQCO.  *)--m޼y/_`]g$fm港ＹS
+sj=VАEC%e<a|mc?|gȷs3o|zzvu=LM{Jht_׮]4l lKR'l2888++w% 8RioY*ж  JJJ<اO6mڄǞR'/٢y_l]WA"^/oTOJ_^iWoڮ|_yo>nliSݸ68pRT;]2ns{o[4ZnݷoC	'oR z[Z]GLCC n݊h׮݇I6qJ	=9~ړ'˦SwG"7O++~[-DN=kiz~c~pEf-Y<zkO>ٌG+roo &|~2i֭W\H> PISKKOU[ж ӧO?o*uZ=wy'7KB0N)z}ٵYRd^	:wGG9o׎%yC|^?u|j3t\?'۴i#۷Ony@-VZ(*MՕq{H{H{  	wͽ{޽{wk>REeS1ڱct<XEC&(Gl9	9NX(=shOso1#'3?Yg]&1-M{#0zpZH*mݺڵknQT½Ge2Y&!!! 1or͛m[I%ÿجu.9N?|o5vWy7g}2rN@c~-)k9CHx,l2ȧ]v=zسgOX# 3Q*fu:zi=H{H{  p_|I&n:HۜXb':)oukBVqMSc?#3TeVQU2z[&߫4Q{uڮ]^lF>^ꫯ	I##mVqHOO u(1e PH{  U"|i׮pfژ`$ܘ2c5..FάQ럝^Xx~uM16~9CVPAvC?2T#`!6i`ܴxǎuvA P?zr  ˗i9rژ'<ǳ>^_bv-*L[ۦw#doFnTDsF>awڵ*4.YT[^l| N=UUn:Tʜ\== h4?~_~ZZe&vm+W~$/ir+dzimO<бËov5>JׂoTLӌ5lؠEYq7?uܹK.{  UC ?ѭ[Ai/=ARn|ӑuIf(Z=x+'uyH>1xyyPoۘ`F>[,n۶ŋ(  TU'e%a srOWF'/ٔh#^{@]҉KLh{dq.JG~&Dcx)OO=z|4 FCC pnǎ`Ν;oVcȣIZ3rcGs#Jן\(-[2[x@VcF>^}Օa;Jl2]׬O=<<|}}/_ 8x!! 8^z魷j[Ig6EM:#JBa(fozF'|\7zт<4<` _k~Ů?tGnv-  8%i>I{H{  uhLII={s="&UT4I~kVlYVifE9sf|[%oN-3kadfN׵qo|`Ϟ=:2W~4 +bf @VXXx//Ν;o}<,9Obr%%aSٌ:ȹ8ϭ8a~:uD46/nO5hРh[4WS'FLϞ=;v 8_CO. @ҲeKhgصV.E1A`kj~J_/=sWr3}~:b7@vjK.
+dͯ褼~2LTy AECC [JJJھ}[mҽ<o`npЂWN7fF%]ٰG7oc{LCEs/c.O>_~%u3="! 7oܱcW=cOJǞZaJݞprrĊf͚~;:	>V/E9T}Gk׮iF>QI_~':u pŅ===  g4^j*OOOiv1Ѹ.*~s:p.J&^IX֠AC;3(۵}5{q]3y}F9gϼo_ ===  GVPP4rH{K6iPѸI_<}YѥۓWL[3¦(cn.ܝ>]H.^ThF>G
+?iӦ3fHNN...# H{@C /˫w]=l#6u긟~l,#FT7~x̿Dsj\6>b箕}wB Ѣoc֭7n hCO. Cxܹs]]]ZI̪9Eo]4-U*فMЦqzߵcD{7b']+f=z,X\F>;.:)ʍ5;v3gP:ߣ\.W*#! CIIɾ}ةS_%nN,L[	7FDdOqA5ʭ?xs萷)g}2pY}gN{-nixzzǞ{vݕ>}t5<<<??( p'##C;V*O2z#! PzzzHHHΝG`kP1iMg
+s߁ZZ1Vв%CB&1y*F>yהGH>[,Z+('O#  _llX%=JR|#! ę3gO޺u3D'ۯӖ&)gÊ	nhJBIjX\~.WVye;d'o8xvjy>y-UT[%+v#K{Dx>|{={zyyEEE ,..(fiOiY.777j P{}뭷:v~yneA?e@qnQVp+Ba-ײ%CvmvV޴ooVG'`BU-[裏t:gRLJ?+rrrѪz>4ݸxgWn}ZUl<-+'bK x^?x?;Ҟ;ed2j P=jYfO=ƍc[`y?g-_͚:y1?('8lauzǍys}TKMͻ+߿並ҥK6m*|zG~taEKTq+spG'|q,czJ	l-Pɺ2=Or?>.RO.aA)
+== *)((ؽ{ت'**jcNiĒq5i$0R֬<qB!CMrJ@G|8ZrTd-/5CmJ4!>{｣G^>
+ŲFO!uQ駟k+R(Tii &Ν;'|o߾BpN{BF5cQ9̺e`kVΛ3X?ۯoS'ܹUNfT[8/bylӦMwkVޡ!Æ4ioRvoʔ!trs=v+WFcIII}gW)M{r	oOm_'! \ffΝ;tҹs7nJW󞈤J_nW4`=	MÄwzw|άK|Ç&+iWW>gO^MEJɸիWFW[q۵k'
+?WJJ*/]AAn  l+55uΜ9mڴ7n&)~Sqmwão߾[lX3=rr=ypdʹퟏ=%4phf5j.*>f=%
+|ᇅ)|ԤDQO2EL9s狋o؃4niii .u_}զMFEEmJ,ST'ˉ60Ko!<zOЭ۶^xTt_ZAERhz<==\{Gs8cwKTKNPlԽhq^xɓ'>}NIm{*3J3EC ŋo~̘1}ҞJ\ܹСCicr7;ziÑFwݶufnfg\\\&}4({w~}}%;Z8ꫛt"άk$Ŷ%P?X)ZI{T*75IC *јj=zPo>,=_icy,	wz4qṙo6dFnmoB74iҤqA}5|sbGyAF<<KCOǮ룎/}'s	96Q\gVT2$ii z.]4qĦMN4Ip3ݚRt2hРhO>60F{>W\9K|Gˉɞy2ʮ%?{rDqt}SO-RE$PR;!۷ӧOLL 5TQ0: Pm۶m{;unsE&M]vGj^6L\`ز#׭hʥWQN|F/ue/Ν;_omIʯ{Dxm槗^zٳg 7RʝQݎM}N
+[5pݻw_Ij' @;wn-Z<x&1Nig9\!%a1}6Q#3/GGNN[32T}^u<}~ꚵNd?4;v]zw_yê^;m:~%1bAJ>wB!2rX5l~kÇiv>B>_+fvUܼy@  *77?ݻw^¾o\Ǐoժ҂5)%yAGޭk'f]gQEv5i҇ӟu9Zӹ4h޼`obhuϮ\K-Bxv/) %vx3_r|h߲ӆ?eg<iXӨS6۬lA_N<cMʨS|o5t%<<֭[ж PN>=sLK]'
+9Tcǎ{jX׼ [ڶͳ鿭Wm
+_i&NSF$װzxM{6DW?ȟBOi}ׂƏ;~\B`s󲂄&jpNfPaNrnE^wd͐{
+<y\^D&oԿ^x!  _ ,pʴ=== Z$|;q;uFJ*;vl֭m`.0ߕ#0'ܳOUQEv齕U<HC<PiBn9R?BԇwzjР	{Sx+d=[|~4-?@i)vl[`8>o;o+Z[,U[%?3ik#VEW>원Au_'`]|||ӞҲI @;wn޼y:t5j&1+ݚĝ{ｗ%fdU~VzÙ#3REv=n{KszMKꫯ>M+D	Yyef5jXKtokrRSCOIV@?+/mbE:WYx_jf熔UzoC]Yj`K#OCG/.\ٳ*RAC w!$$dFْ?f̘^zxRD91oidRQMI%k"b|IKQCwGWﭨ'NlРѼBɽ2^Nwe-^N݌ravNyw];>݇+?䗔\]5y{wNx\yj4_h|i	9y#FO:ĉ,݃ZBRij *rҥiӦnzܸqĬj޳:t:thn;pݰaCv:so<{'f̘W۵F݅5i҇hJc[E'A~q߆t;=o=qs])]E˳҃
+n(}3mY[֭ՒC%F3gNǌsQ,ӞY޽BSm{k@E233?7xUVfcn{
+Ǝ/>{(=_~^zi][#[qev뽵^8~&M7nooSU+?WˁkS&Z~т۶)ɻݧ}e|o}۽Ͷk>t:,ʍe@߾}.ZdP1zƌ%&$$ !! p(·ǏO46lp&O;v>|xM&8h9s*e˖{Ok8VTR͚5gΎsGCǍ'!OO_y9w]TSIDDEiJRDAE:
+BoRSiI"*`wB v׊&Bـ,.~瞜ɴ7o̗{q7ߛIW9w64$ӻĪK!elXmmmۿǿ*΍p˟>oo\ڈY /oonw^NGXmRRRh[[[S*ǱclOX= l  hhh000M9R^;;;zoH%,Zgwo~~~!!Sahzk]zîW|ݛ͵#A{|.dK{;hfT=n99rhƾ{k"={;~`8;ٻЇ36)<.l'NhllY =! l=  ǣxڵǏwrr,ƈ!\sSMMmŊ_I]e	13?SG_ۤI;XWPK	ƍndҤ	ӸS-.ٮMl];j>vt弈0}9ݴCbG$z|Хsn_kNrq^0P8ũV666)'	`QUU۳gǏanl Xrl=  *]CC<v=EM)ޜ|,%%-/(yplѣkjj~Dy@zޞSWW5XGv''N,."B<W&ݾi|n]f5rZo>!Aε	hQUPv/t޹3[ۛp[T'Oy-uժ...CI{яxʮ3f褥{W/%= l  ?v횧v=/ɇKAk>2dҤIW{y&]fa zvC\<Gh@GlOe!\V4_y&ڣG$"2[XG?:inśMڈBV=z =cSch2'ST=`{@  hFw!~Khoo\r%qݫ"B:Ϙo4hTiPA{kE.+3GEy*:ND.iڊ26}/5?~,Ϝ7oQŊꔂv˲'OMb҃6;Cv
+O8xp?~|blkqEX?*C./1\5lL}K==aͫ*ݏ52>v>"G1pܣn\b
+Q|(9sL2%88Y/f`{  7ܼyCNNnժU=/e˖=h{p||CNXfzb3Y35Jf֘|67o4d;ɶ(D^NhSOw|MI^n.&*Ɂol2e&GRyرc$t!!!CN<cE&COO-XoTK.G-VTU$<jQ8
+~u纵S7%&l\dĉ#lǲ'Zp烌/н:l9r oW=MLLz>1|O-,,;?880~b\ l  (//h:::gNOOO)h{Ojɕɯl[c҉\u	sƻRrubѪ.&<ۨsp#gNx1ɥ9eЫU'9MIάՙ5bPڱcd*[(?		+"\YPnmԨQtdYYYTVHoKV8=]%,0}\`.3W_w+BtVŋY;{TlRyOL&SCfׂ"iŘRNNm۶Rp?1\ l  ohmmu떽=̋!|Phhnn^)K3'xVWܶ r^yh6VMܼw߆y!f{3^=;MRZu#ÇgsQyu^qs2ՙ_`N$z1sLtfffOVF؟/))r6mZljw:tH"")9.42axl.CM/$o/8Gk>B9D$67ZX5߿I2Lgj1/
+^T9k;::)l=   
+
+X4._\EE%=='غVWXXTҊJ{ؚe܃yM]HIYi<j`N
+Kw0c\4j IIe.#}PY3z'ش~nCU>!
+9jQKЮ4aaayDR$SSS޿#&u]Mjp;;lk߹Uv/N8$lo_b?](HX]+ڹy`}&i)AK,ٸq#C·RD^nە+W`4``{@  7nprrRPPpuu,#c***ZZZWl.=Z `]NxyEi}]c?y|2
+LL\k(pΛFrpp1/p,,wp=6<x4(dZx1c/&J:u*mlm8ijL}~Wx~1
+pU=G{1OO`$\o_4T#wE4ۛpn'^z!g^p!2˾^@A{ŊgΜ3LC l=  ?ÇAMMMUU5))l;-򕔔.BM^+yS"7TńwbP:mI&d']cȡ+FȟODQ`LRQ	#..nL%PxƖpNm2{)SPn	X*v[I֭-'?JފSVɠt2~Q.;ob7/b./G|'}н|=Ю'-Ԝ#g:߶}ɓ,Xpȑ&l=    ,|ggg%%%GcJ.h'ʁޔp#2VbcPb(Xk+&&rH|i&M)oFZǔɣ
+EMrC=gq780vXnn-.w_jǏ9kҥi04uD611AO{=wOu3_eb!bFhş9$.>mɋ_Z܃;1/FuhCk?}[[SI.H>amҮbCUUUQYFŀl=   -޿㵵ON&{[%f劊T͋Pc9vnBCtPQmvn[g*;`<*a?syQLMUe{S>	-͎AdRW%//O=7go􋨨(Wzĸ)))T]`w)͵WcMR{_ѹS40ikzq`e~dUk\8Gpp]b~"la***3gLOO0u{L.`{  [455;::JKKfT0QAh6Turk=us*ˣ{ܙ2cQ*ʵwcKs
+m5seAG{rkPmkJb7n>ǻўn:%$$PnӧOnKM2dȤI^JLeƑ^wۛ >ֽ*Vr_Z)%Wl.]J<D)ʶz4܈Da^ 8`{@  UUUAGGg
+%/h --a$lF/[!!>MJ+ˣY闦G?-X Ic1lRY	t珂9/Y(\#PE1eQO"6AFN78@'D@pl:w5meii~CyqppU-L˸Z?푘4n^o*F|2sݯ}koNbggCbffJnwH}	h>}z\\܇v@K.`{  g;::JJJgޓRN؟rʎùӊK.V}YҶ5V8;NԘ(7mܮ(s&-E
+MRt捆f[[)*Mj]#rqqF.jNdw=#ɼ5=tĔu	I<<\eM5?͔Pakkť@97.H_2~s޼yǎ~zU'< JF'o0c3Ū44nrWg$BxxؔM8"n_۟?
+4=l=   ~\3fPWWGԑp:OLLloNoڄǥ;()n3gϒ3mܴqS]m42ަu?R˭TUħʊ(*ʌURsXF^t΃K)o2|thIY-T%X}|'A|ٝnoT%UgqC}3]AAz6+2z'i>Ǧ08$ޢCÃ[?B>I[addHFq?g},,,"i7C鶓Hϗޱc3"//`{  *))yzzbޓ\О@;!%%eoo?p^b]~J:fyo@u+VP.`-#$Ϝ9fffz ۷9;9.4iN;w8<[!z7wܝ;7Hq>i씕׮]{m7\ l  hoou\\@*-[~nPUicc&;L?v7goN?G3fӦMZobHQ"""\\\tx?JEމ
+_E3"V}Jmק'A-I=CXzu~~ϟa%=   
+Z3==L2eٲe@[׋SZozs49k-hɮ\H)8x~
+sz
+~l޼kl_z>^ͩ5kֈ;;;?	l@?؁  0 P]]O>{촴4{
+k-,,TUU/?C'{j\<rss		Sح55>ml:<{d$es888\Ϟڶhh=<IK,ٰaCY9eҥK=6=Crl=   ;88L8"zOZa[S666^*2'''G=zejkkƍ-;#=RdBرc!8M-?u2صKNBFj3D\2$SgӦMpz?LK.`{  0 ͛MMM2zO'SSSEE+A[[%WRdddlYX˳q{&NJ]]]BV"=)yR~"5I!A<sY3UO۲*s_[#z>C?~Flj	94*dԩ׷{`{  0 xU;;;%%%wŵvl%eUWWG_p.n"""XodT٭r2dѣQKJ!>9fdkk+LկSy|4<,^6_MM9!mkuBW}%?-,$PU߿ }\ l  @xuBBj\\=fff222ETx0gӲ444vyYzQeeeeDHT0fG%@zjpKe'"6[^읖sex97n~2?|R/MMM-[!sO%3| }<`{  B}}}AA2?:kWaEEUV
+S+RqZj5?{+hWژ1cPn:::	LK(WHVVV\\\
+
+
+Q4YP~V:	^w9w
+
+/=7\/Nqs]bŊx.9;Ĥ###?~9 t{   `x̙d2G u{:Rl!HR3OkFv˴]V)=fL7uV=̇.k'f=Q~ZZZ|||F"Z;J[{#F٥#Qbr:/AAAvv6`oR)nqyZǳG1f*?583Χ)k׺9%~=:cbb毰	2`{@  555){26s!?~Xwyߊv͖C2ɻ̐zѹVlaa9fu\oEVkw]3p	<<<:{PăӦMCYM818<zsmQB&?K'MYz{ΏoKJ%W/2|}\#iX)ڕyxAA6ܾ}|80b{`{@  o޼IHH@ӧ'''SZ	"|2/~,,dHmRO_Iݷ]V]MUj{VJO*X׳BU3/e_"(j%$$ťG<D)c) YZZWYYt8{XR5ss]ܹ",<,<ԡ6	Zˌ`_kk-[P/aᓏ]\\.^;?g{@`{@  MMMhmzj=  .~8j|||BBBhGL0J̌bXoWV7&%9-Kmq&pGz}*N*f]`J>fC|YK>S<b{`{@  >TVV1cC~+)}[tX$oڴ9Gbzk HCuRHJ^^5G7TWdh++U+0x(SfZJ/3>KTTuź:ɓ't^  0pY++qƹ?%o{رc<8sL$=䓍QArrrK#%z{-^nmj"ɑ#g|.Oל:a+P?D2vppH@3بԖGǎc=l=   H<~866V__(--ZHg}*#G=tq222vv[I=^jϟsؿ"UtNKYjE&yd4PSSSOO\<VB޺uqvvvee%Xrl=  `@vvvP7B!++д	d$___`5PӅ3TTRU&fݻ^|)dƌ邂Zh,-Լ8333GGGDj)Vzzk;455g͚E$߾}>_=`l=   gϞ+)))++'&&.j_Xotv:t(͛Ga+L>Gihh<{K3N.Xj6&-(q?JB}Eo|_ `x}"vDН'O֎e[[ `{  ӣ	-i.]陙Tu\ؾ̳YoT̜RcNfj8{kgh\>}|kTScu+;tusOw]tG#im\/N133KC·vF9s455ˁt`{  0p{^x(''iӦԣ)w.rphby9rEt[ݧev̭'}zdmM]+کqy&&&hSSSKŢmv--->>QF].$@Y3tދ6aV[|pV.w2po2QrxEp{/^hѢu|s$%Pл%((he  `{@  Ξ4izu|}^˴22ܺMg]7A:gRwk_X~=˃O恭"Ґd7/g怜ˠ{t6:o^h~kemm@FN/jnCBBFw}X :,  0~=___c._ˋɀ?̄lIXzywWoeXvοs [q_qX+ɂ.՟5yiqؚ+Ν3i2VHy;דfq>>>|||622"Q[ؠ'LJtDMXi+|י;66}}=<<dwZ/2iZr9͠kZ3\]]䂂wH|]}%%%Qׯ_ojj  t{  <QQQhK$k_p8gϥQ4|WZBz
+6_>hѢÇZ*=DfaehB׬Y]W	>R>sXeߺGM
+ؼtK޿<vp/|Yf͞=t4吧 OWWWKK+99Ǐ$ n=    ~<|011QQQQEE%>>avz
+pŋ,]4$cK	]G͋-p {Zp^Hm[c#Q鮵^KTe~}ᬟX35=-5HHHXYYQ
+eϟwrrRRR>v=n4l=   gϞp8UUU<zHCe0?QFFͳ5Agɝs.̐&5}-?ZY	N[դ'LwzXLAcvC<.qϞ="""~ڵvX `{@  _P(,PSS?tx~-))99CI23!+QNNMd kW§OWJ[U:?UUĞ=//GWRUfIHz`&h~%e43f۷nO19""BCCc֬Y)))ϟ?{,  oQ]]{n]]]޼y3A 2 L溻
+
+rrrΜ9  ɹx4RlvLǀsg'N'--niLttezK'N+;QK;G˽*	ޘ)++kmmM)4.0@VVV^dA = l  pLMM^S(!,y9|p4	N>=KCnr0w\T҃{X{ 7UiK^edo7oyNs7D&86T'JRS]1xh~e訪BӞ;Db6NMMMLLlÆEEET n=    =jii)##47y@T?A"GSo0\\ $$$J|i&
+?KK=jU6T'ܹf&+;IC]*6gU
+퟉4e_<v?q=GAZKKp0;Hhzzzן?K0N``{@  hrJMMM''G~II dK;w䔑LTrlii]qqۚRaosPkB}*UEEԱmJcz8.5ח+Os=-<<|ԩK؞ƕOPRR, %=   ~8SWWw`~(]@  |@dd$h7mJvvv2dȈ#jkLuHWL׸/@'w-26RV		q\3
+<zR>>>AaGQs|Շ+V())эi\}HRMLLTUU׮]{zX< 	l= A¶6x ?Ϝ9coo///omm}2+Қ$++1f̘7Ҋɔ26SǗGyTnhބkkNو~Z]C].huS}e'''.53{O>/R{ԫ丸8I&gϞlXrlb{Z[[>}WZZ/s `<W\Yfŋ'|T*<XLL+=C} M///@HWҒ=?vL<>:4|<5/\S9l~6RBCC.]J6YWWWuu+Vepmm-,! ݀a= 24H$4eeeѓ @D]]]qq<Z'߻e^@~iٳgߞ=CӢ iz $$T~%v,ٳՃvl˧FN*^uŮysUff\f\rrrdLGPYׯrJkk+,$  lO455=zTOOOLLLCCc˖-7nhll: 0PP\\'OFW
+|tl>YCXYC1;3/ؾ2;g.v[䚭2[2zx/g6lU矘|||hG700@3#777i)03C
+<x]}U&Id[h恽y/qZmvc#ǥ!OvszJ4ݏҾ}455UTT2221lW}%++XN 'K3=8ǏGG[ŉ'I^ @?ׯ_PSS7oB{B:0̋V4kϐ5UyvNeO֋εbˍ5u[1Cj+ڷZf.&Lyy}I?2112de)">VV]h+.**n>EhS&KNwZm֟k]kk?d>ECp3e˖A<c7xΒ֬Y3mڴ9sdeeUWWÊ=
+
+
+o=3KKKtuu:YVV߿^ @ZZZ3fHHH<ϗիWlݺჼ7or{ۍE[]P֟93BzRJ{Mڿj>m-fKBV˹7g	|||+W;@(<|L@@{ѢE:zGEL4	MK, K;-+z"Rb78W}GIb޽m/?X3eddvI$fdd~XNB/^!r]ug#n2$lX_ҲFfͪsd֯:gBUe+,fYÖk{>֥!)_	yvJk|
+aO_;8y`)vyw!_5[11[`|vٽ'l݉8<يfla.6bklc[[!(z;v񼼼c@p[0u +++44M"""ÆSWW_nݓ'O@ WxRRR***G~!!n脅U}<[6\qJçB)Yl///779spX>]hF5k֫KK}31Q[<T=4AZjPhvhBQRRJOOÌ)Q/XW =1bĤHL>'Kb#dFc$ga3CҲEfd#ɌV1pO9-k#~eKetAF [a>ou!N޹wd;Iѹ3wk܍F+[u;l2gql!gĔ)S&(yfadO0aԨQ|||hciiyUp^ p?{,..n̙ӦM%%yZZZr`-
+ڵiV-zgü<[[[4v8|P	hnSWWӌ/x?J>ZdZo*|8	~jUhY[[NΌ;88安ɾ}>|k@@݆cktf|ם5[[YlጯT9ց5&[ߊй8TB̖9[4FU\xBBB0k0`́5CRЧ_`9[<`@BY2K1b[4Frdee;a؞ۓe뺬#s[i,>yuk\leYkŖsغvѹK=YFr~~~...NNNtm۶x ?
+h!'0sL4$?=xm}|| r(k_e^ȑ#nḢOx(	MtQQAynm]GHwۓڪ_U_E?KVVvǎEM?\UUMMM #PW5e˖YYY-뀥%X[[/c+#Ɔ+lDV@׌`0b gDfDgZmM1g~gfȌLˬ2aT%9>zgLh3gرc;S! xS磁vڧhL =σ6mBYwwGe=IWn9994ga~pCCy@ tttPYW/%i&{)]q!ٳMG[XN U?lNQVVNMM4.		Ao$}}gϞ577b(//{'OPxţÇOeeekfs`TE>?f&շJaʤsYkeefnl0~b˳s}1Ȯev٤=<;"e}YkîՓV&r݉qlw:
+svڧs2n'Zg{݌TCY۷oiii;v̘1hܺuٳg= 1޼ygϞYfiOK{*@pWW7s& )4hƌ#OS\___	2\κ"9>HO̸BCCΒPJr<eD,,6    ݻ8TTTTXX 22 !!eggիiP<ztǎ&&&hm\|غBnș;wAP=pL>e	&l۾N`L;G\x1ĵ5ތcԩS%)=S322%%%]\\.^X__K    >r䈵)S
+
+
+jkkA {՝:uLNNѣmw'**JWW#?s/4t곳#""mFc*KHH(3{jkkbxC111f͚9sfdd{`   h+--Fo͛7>}&  ~jkksssW\)++x?<YYs̱:sP{3h&nUXZZ4H\\@ ffMǮ9|x׮]7mDe=tPq{K=HH	
+
+RRRBo3DJVqQEիWO0aҥ{E+ޖX~    g鲳ĉp: kcc#'N466=p1+ybbbPmk,gg!C1",,޽}ᓘ8%򀀕3b'//a6HR1sʕSN`{WZZ竪`   ~Y__< @ŋJJJ-h޷j:p ΝEZ[S[o&+E!A++'NJme۠AlB}ⴹe2#  iT7*jу݌+t4(++DN㢖h;wjhh7@hha       tuM6miiioT"
+ĄF}ncWMxwOzg1i&Z寒`??&Ǉϯ>g2dȑ#mllRN<-p̘1K,We۶mh$bHΟ?奢x}~"       uuu%%%k׮щ;|y22Tq|||S݁o]=݋,1nv{RSi
+>ro:}={AF)I1$*xԨQ8U>d:88cww200<y2zۜ>}       WhiivZ***jjjڵcNNiPNfe-]TMM-$$/>1mkJbc~>+j:Y4>MkWyz"|n*,,+jDލF1*s$L	111g͚/xx WS4*++]̸(+۷YOEE%00%       ZZZ3f̈<ѣVVVgώx,/}-Omӕ(6B<SǶuڕM|P#>1~_>~+mM8QQQlllpHImaa!,,(YYYth{K3>/MӶl"''gnnr~¹s眜.\+X        zgϞ,iiimf_]>rdʕzzzr2~wH_T6._㾨ho2w滗_3ST*S{~LNLL4iҠA,Y4.n
+
+
+ikk'PciIM)'2NWSS{+K3tK_W>DoԩXugnQTTtss;<q       5>}urrrssh!~Up͟IۀQLvshVU$1ZF>%  7_	LîuI~+7~'{fnU?'|$%%N׏#.Qn=///*ZEE%!!v~&*kʔ)MRZwƤu	p__+h,d="vl2)44MJJJhRq^\zuǎ    ZFz*>>^OOoԩOσýsuu3gϣi9R8@mܸO~dr\Bwn0Vˠ+/UHHhOٞ7wn_O>ABB,;+qi	i6րE?ґUTT[xHRG"v0#GDE+((Q"|(exr~֬Y,qqS'݋WbsmBK}$袽9\}U/*|qƯVW<gz/N` %%ejjz]biªUt<o<"s
+;;;AAӧ_p    _'J544)sՑ<ݰa۹`rԓ:emMxOfuk̛jRUY<FI[1Zd68R+;'qF?sA%2/o	I&I)J ,%&&1.?|eW,kfx_-PQmjvNN ?LP0*&Bub_>9㑞lKKc%6ۃ;͵	d7
+
+
+[lҌ1)+))?ӧOV|ǌǇV QQQ`    /7oݻDNNɩysr6mڄv666%Wsڛ(O|Bh#dnwr=MYIΞ6lXnN\@7)ރ1GʰڿKjm\84BqD"U9/&&!!!m6U	s$SSSNNNwHK	\Oezݧس'[O+5855&fRWW7/B蜞ތ).1{>*|Ӳ=gvn[%1iaxʍwȈӦX[i\T*s--N㢳=jjjh~ΝvX Ś3ϟ_RR	    _޽KKK;wͅ={A{U?500/,8ޜ6 H)tWC\XMM+YQArOyTiApY7P_I_n-x#K>O&.0Ѯ BoɓcNN@@ĉZ7I@T|wYL*`uvJFzU	Vb"lZ?@_zhOe(7TШQdMݧQsm%ts1Y4:ǫn3}ʌe703ڌ͛7KKK%chu|ogg'!!h4Sy󦭭-_PPhV    gZ1VWWٳgѢE:yyj5kI^~*o'pss1`M	bc\:U8Yj[/FM,z'ehQUCRȠ~IO("23:SWIЛ<ryTxbY?~|LLL1srhCE11ZnrˋOƯfk1v01"7moQPSM<oioJjOy<ÛF=Z gB`fA4;捆L#T`ΟY[)s]H(a}ʕ+edd6oL+Ќv<gTѬ@ؘ!+++""; s    Ocǎ-_\ZZ}n{6;;""bƌ.hk?mX-ϩעO=2Nz'npac$.>K]X6V;nð+qw}G0l3=e!!;v4deͰj:p@ srr
+888	RLM(+$TJUf"Ϸ)/CCIQSލ3Jϰe;xt;^?,67*/'z2o纯q^=QV§kN*.s-Uq]>=y`Nm`|ޜw^}}}]]]GGtZ1y۶mh,kii>|ϰ7n033522=zСC]\\P     ?***N:eoo///`	<OcVVRRZ~uJܰw .wnGݔt[..'ejjLڿCsrrko_ǩǔ\p＠7{44+ӽ=LF#)!EޓL*888pss5c_>тt{2<vEPAE{bE	F9r(wN2ՙ,>~<Ç+ȋzy=
+bKg9dTf1|5j?LjbFJN}VԟiӸϟG$̙3SN511ٷo߫W`9˷l2qD]]q	ر#22RTTTOOӭP     ]|!6<<hK&:\o.VM@qF*(xmZ}etͩ.΋n$jO=|,g;JᾌբPit7ojiH58VkIeQOOO^^aÆy{{gg@KKKG=gȐ!ƄD=vԛѣG_ϧwQ.N||C-KIU)y0ʇ{3kN:NtqlHom8ap*sp#k"ǥ;L%5J~b.sٲe6l\&QbF={6*YC477geeihhL<9..СC'$$TLLlV     \!Z":u-uuuSSS{e3fDEE5de7R+;6Dgo<~Ȣ*q֨z35esk܈4Iz
+S\UVPd@DA]-W\:74|~74xyyWp{㩷1#|nBcB5o޼W34~ڐ֓Nb3;E&_Elj2rPX]6?N{Ν^pĿ;ݞiToeJw.1AMfM$??w'=uhM$:ZJ\"͸ݻwTK@QZZb
+BGǏ7nСCªp8ܔ)StttN8h1     0??ݺu***d2<hydEfttt}c7C<y׻̗ k"XP@A RXR+J#B脞Z+6P콰]40
+><d23drUcnϣr֐4wIIq̛7oƌ53m9s1WYٝy8'TM77SQKK^glFƚ5k~QF܄h888owoD_+9o]KSEo{xﯶbV]=__٭(^:RZ|W^	F̴Z]w~</dbb̨lPogg͍#bl\"Qxniiϯ9Wót즦cǎa=lnnug    UUUv1@MKAQ]5:rKƍwdG9oj+,옄ʥ}<Õ7^],e@=,̿cl,;@*%`^'L<}/2|B*U__uԨQD!? EHY#C;g
+J3LŞGw]4[^݋m1yJtc=($8|92ChnX~:7齃x]]^ٸbocccՅ"//0?/_$999eee1ۻ!;; 338c    0(/((xJ	gŘ4
+ECCCBB![*"kwNjc3{;>3rSM'Dee	[[[SSS@lnOYHCiGפ;;kxVd>X'yy,|
+_^nĉ^P|pfy$  %((x-txH~;dN<k5c~vF)V֎,իц!z"%ıY3ODޕh1#镜\V033zW{:6mf̌:786Tf"%$$+WZZñ>Ș+Dgggtݻw{֚LBƑ\---=zӧN   /NsssAA߿Bm}&
+rrdee5mvuvT]YI#Q<w"hXE8`kG%QU='!Ω+h~:el^LLL$ I	S{3d{iH8r*))y[996m6cp...B M0*,1XXX틗و!馎HI=yl׾]53gtLz5bĉlǳ3cGΆ^۝+)]:-GoPxtו8ZZmOޥbJS6ZBx8OOOQQQMM͜u?JnܸGIIH$_;󹳮#    imm}q@@K=:g>jffz<vP7	8qkP]E]wJK	n63 DکH^?o:z?6ѯO1zmnɐ!#=}bbbޡ˳F۶mԩSYYYQ o߾@>(4FsI>1Cۼ~yX᪏_Kf!.6sKbbBÂu	Ĉu$7dF{85+t׊`v0{ЃanÛUVM>}֭1'od:***    t.))	
+
+Zl35!zN$>O371Bf͵O8qBHж^D>FzwNXMؽSkasmDgGQ]hݵ
+LLLW/yU2TDg~ϟO$NKh4Gwqq2CPQQA:uj<@sy}usaY3jUK/ޭMcYɡ4TP:Ʉp&edc̀B,->s"*,M4iƇ>+**{oJ}{dYYY7n455AoU     ~Yڞ?"//mll@xuV			##wHä_p͏irMMQF+xyS2 <tǇ([H5b	<dU)aƍ9gM$b)sLE0$C)U RxQ@ǖd|gϬYܹeB^V^=r=ScM;EWu̮g4׆1K1gάE|bk;~AP6_q33̢	Fo"2ֈxV^^'VauxxxTUU#""|X    _={Ŭ8Kkkk+++kffvh<wx? %#F3, ~0rb~mJ#jgZ̘1?s]VWFI2t.m9sNJuuu?~g$Ԇ=7ڸ>˨Q֔'y(}5eIq|1gDWߕxזvu#Wa^ՙLen^sR߫TYY,2pCrqZs@a~兎|qYsuK](:F	l\yyyk׮]hΝ;cǣOwD"QEEe޽>Grasr	   _7oYYmd2<4?ڛcnC!?+]8{ADEyGr-mnps=}.z-ŉcz8WCCyĉ...u\µYY>>>X)SNDT'1`aaaee5444|WyZY3ǬiS-]`i$4H7)89$%a-3VӲ9~jq-c˥YiW/ڞs;z1RN4z:v(}]ѧ[ҍ+pOfΟԭB3_̞c2/OJt٭F}NiCveDs!1DQQ@b   _O>iii	oذ\ffSJ
+>{*EQW[[;;+1n8'Lgn&ҩM5=P,&8DNI7>2yR(0F^=ŜcTges-dfa&L~z҉HW
+llllVS]KΙ`k!db(}<oÑgHok;M{066&NdCoǖL<6O18
+>l+zFPsmZ>	Iq<ct hG6n\`/z>ȑzU>J4ĹJHH^:333aƅAKKKtUTT$eee]      P(5k̛76SSyP|rmm$#"¬Q,tPT~wutз[.Pų^fMAY!_˺J"c
+нA\VOk}5ƍ)zh	++mll$aaa(DaUVsDkk'233khh-9͆_Ͷ^t29.%EeHj+m2
+	yē8(E ?x_ynvͲG
+3B|n;*i<wouݻrqV_LA[=fǪ4f]<\iRi{C='>>>'PўǑEPeeeaaa33SN}	@r{Ǝn    :}BSMMÍgg.##00P^^^UUH$6ե@xNWuYZmKj"겈QgN7$P{F P𿷜bc+eQF?=ݐN z#G	)b	NNN&MBC;}txTW:Tcϧ7tU$i	ވ"wWևvUA]#t 5eՖoB[#vFEEwu{G\re޽\\\<<<nnnׯ_ommi   _Bw[.X _?%E/^|y@@@]UmrÄ%zS `I	ak_Ǐ1bn1eޒ|"=]]]YQQ1{kff'%aKJJ>>
+[_)//Ge%FFFbz5̽=    ϥ̙3;v쐑QSS/iJI@__=>TZbiUpշ׹ppL85n!o.*=>᠆4ZNQwiIMN^bĉGdɒQT|ƌLLLw?7n_^BBb׮]7n܈y2Pc=|||FFFgϞa\ ϐ=n   Huu-,,xxxsrڣqy9TeC?z*))?}0i
+UٺVjk̎A99I$|2|rRSQʊ))0me2x0,$t#~lѱ"Tٛ7oKKK;99]xqnOaa=P    ~
+ϟߵk??[ϳrJ111779*5Ն7\c 3rpLE|T%'Nd/-ֆ___ԽHMNmINKOdeeEFmg3|E}͟??+#>}ЯSWsNNNΎUa8׽'OjhhL:UII),,ŋ;"mo?~8#     OZ[[]h"WanQ(+WG?V)WU2wnlohH$>ɵQ㐘.R<tEGgemڴ	+`7wĘ4QXb
+FR}~7N8aNNNsskVIDl>w5khwA	х`gg6     ܹsSNNNLLֶF	>;EE;vzPXȖL4/\lgHMrEx,&::=&çF۶mɓϟ,}*!!<k֬أ^%q!Нqٲe!!!WWJII۷I vvv,ÇSWWק'z+CFrH$*))K   ill,**rqqYx,j9_hmd2>T}}}qqqsۛ? yƛԶXڶr<SwݶemKL-$'$$>//odddkB>ë;v`uuf͚emm}<!LHD~HHf2eaGCu<|]2=	]+VHKK}5q+]EE]޽kmm@E|||z|;x ,,,@K(ʷǒH$vq#B  ´777߾};00PPPp(O_ 'HTTtÆ7aT}U`r_/BDo7RVn/'#=]7Pkggnjj}0@1o"P>1cvﲬ	.3Ɯ9s/ g}IE
+
+B?~ܷoB	`A6r{6XH `cEEEcc"Z[[mܸVaN{ptA:gϜ9Y\p@}v5sBNQOG*=ys#b&)Lȑ#YXX'IbPଠ ""nā+SXX9k֬3f8;;_vFr?Vc^
+;;j:pv{(
+6b   Fm//ƍeg7Q(x<h4yyM6J7?E6y'<LMVHX%7i)}QV^=rHٽ{wUv6>M;=uT##"OӈD==ѣG3p]Gx{{{eeG7׉',--_|	q?Э]]q{avY`_  2n[BBj׭[Ԓ>_{:gZ[#U7qs͝<ybg<xM=}2j(ssw4H󳲲xaڵQY5u̓KD##1cƠݭ\2_xpŨ៿.]ϫ#>6Kl{#}T߯v;ȸ鲻<OR_ODt1bF{b
+M6yN@oxB];0'P>fb u{>Z  촷}D"-]kƍ)IIM))xf[qūW>zhs}2O;1GlJ6vtzIQAlAs%PD()caaaee544D8>-ImVV``4]+++%#P6."">)鄗=@0Z¸~Wv2@?+}a'm/ }<>w'}"Ɵ}5~~~t1b]]]>sl6.			QQQ{{K.`u!tyjfwǏCnϐ˖BơUh#e   Hssׯutt&OdɒtyëUTTR!XY
+
+5CizZy3njrj_o_Fƶqb(YYYfff^ti yথ~.""biiCÌҗtJ_=}{;rO>rJXH']Ǔ۷#tY=ǯ}d2}Ϟ={`+WhR@w>{naNF^^7T¡l"c11u{˱_)  W^%%%			ijjcG1Uy*]]]-[zjP_ϕnw|̞={ԨQ.~b1u1+~Z[[O8YCC@aHWKRѣGQ:bqqqP"BE~+߫}햿GQ߷G<?9o{=?z;`5UC.$"ѵf͚3g|R@w,,,vP]r{-=3f=C	zLg6///ϡ~CPz9  FFDDef~&			ʀRabRUeqSMk;daay#NT]4i$wKOoiJIIMUSS9r$t`` ` @!GW\qqqAׯ޽{/\ øt	=ؒ"q<ݞoxBa\=2e1z  t>Ommɓ'%$$PSn>OPPR'Ue"LlVOo+=%qd\<8evp@_Z;ãNdvjjCkӒyM""""<oèǏoܸ_MM-$$ٳguuuгzt{#n=Vˠ-Mѫ|ӥ Aj/]jSNEjKih}yjhhyzzV|́(~@S.)yb*]I&e+K3X{@bgƌLLLJIJ'5!!'5U[[횛#A~$<- FEEX]>:::
+zV@onܞ/㲰/Mчw}ۃ9D@P"  _
+|޽{ѢEvvvT|QIJ^|si	sS$Ŀ?ភkƦC~͛]*Dɓ'.MO]J@@ D			=z-.Zv'Lv=o޼;v=ԯĞk׮ܹ]NNNϟ ntq{˱(4Cݞn}t73w I{{{MMj	w%)))''	qp_5''&'YVVV%ŴMPՍ+&MڸaL?sj?Zm3nܸ;7UIJ{߂}Z꓈D"///-͟?׷B-OZXXppp]O>}֭njh(X=O"w	fff<<<%%%z^GAX677ܞ7Ʌth f`G^ _;w8;;jh&$tNdɒ={<}<Qkĉ
+޿EKΟv8[t=zP8W)!!5Mz^^^EBm`	fmmv:rȹs碨t"2	zuYSS7o@Gz}l,Gnb,t`$Pke#@=0   
+
+8 ..uB*99gEUٛ6mB7t++w3(2z5t,9}-9a'z$PZ9){67EdJHHӬYܚRRhHT*jϟ~ӦMC=QAg㊽Aܻw+**mt/{KDۇۃ%IVNfgg2pn.=]tr?( '߿\ffkBSna>LLL/e5Cl;H؄z[ۤI.bO=ztA/C&up@ߥFrFz<EM299>hݻwϞ=z	Qa0'({|Bt=@O¾u{HO觇w臻=]_4>`ճw BMM}y{{+((prrjii奧$%s+'ܜwʕyQ4! Rmyډ:J5ʿoT[r.YDxZA_O
+@?`HWlB}{SS@xOݻ+v{2|@ƅz!!!sKJJz-6y;v,ւ3~
+ME$O}e]]]w̢hŋ2Ml/%nFw()V	0 hPΝ;RVVFj'󳲚SSqyPTDnٲeś6mhiHHv=v>(X)\>fff'N8n8?~ާ9yn.>W/!!1jԨ~MEE%4.|1>$+++  `ccbZ}}A9߿ܞ!oIHoPor}CNNNzp{>wB  8::ZYY(#%%9)"#i4{{{tɯ]6';!AaT3R֒Y ,-1bL:@8cWsFz85_$R}zz`` jXYYQEQQ1!]H쉽njj*!!jժﷵACkm<x(?Fn25Wrrgy뾤7$xC
+NN>ʭ 455jjj,m݆OAAD"5R nz(̆WީzU,,#DEnk?kZ~-=ǉ\##1cư\JF?lGYddы-bMOR!C?v#?d?翈{xy777II	&$%%Ag 8-W> ۃÆ1?  {(DZd	
+[a>uMܴ4t#FPUUSDpuŃ#GDw-5Ogg$SWXjy%;'23>			(D.irrrk֬\̀f'4:Y5UgGuޅƿ|~mS=nkGǾ>.0n>r?xvYaڵ+V@=tQr͏=jhh.+H>loۇ^_as =*//n|||h4$%EGG.\ٹc \tfff^ǽ\Q?_+++R1C:ѣP3ǖk~WJپNHHPUU@lBBB"wB̸kO:Oڏ=]?Eucڟ]w[rqqqVVV컸@O8H1c@f tS:Xt)))Q>		jjjCCp{tѤmW鮹ziTly`}=Y|m2y	ssSnn.!Ap@?DY(\lY|||CZnYKr}mΝh<<<YCmjiQg&---550>ty..[vzOh]rZx$6?+wivx9u-1>[{?5j聣#<o-a?v{666 C `@)--=~UUUCCC?~wYf_drzzoݺn`Wsm!_KCϟv[,#MS!`ǿz!)I?i^kǍs7"s߾}
+
+
+QQQM))~xbAAAkk3gμx񢲲ul***ʿ}c?6X>a?}9eee߿n"ef%NN
+Bf   !mmmǅnFFFYnω'֬Y3u6\ts	A(s5ӦMz:2lP	-c5nܸOBn8p!׽vkPzPCHH(~MTJy{{+**[ZZ䠐  B]&L-=5J3 p{ `XݻcǎYokk{Ӽnڴ1jU})~拞ƓmW}AI-WteoqE%%mnSfW/YDLLu##qkh""g/hnnX   |õ0PBt4JJJg{  ,///\1|٢EΞ=	
+n}z6{:*?o
+_yzP+e%OoOabbYN/}Z󂂂3\QQI&fee~2   	=&3}tp{ WeK  "mmmyyy;v쐖^x]~~~KRO@z
+h4Z[#A'ǌamÖxmXgR鄺m=(6Մ\l?nh7}ZPۣ˨Ԡ l04  t{3zw;6}cH. \^= 𝔕]zQ;;s}&A;-,,ܵk̙3.]ڐ ֥sK]pޣ{>|nTX^*~pQF=Y=Y{)?VB>>>--ϟC  YXXt̬ԟTzfAT9??QFFFBBbǎΝkIN	=$;m[b3u<ם-qNvkt?8mu˂5Wˢ۟ԁJmsg3̙nݺWѸ]5zzzjjj/_  `lNN\ 0E5 N***n޼驨B7wrxxxĴ'C;s-"öS.Y"+pO"&M0aa5ՆZo@}67Z(H׮fXZZ>3DjHO'HhV
+}Q]]\   BFǧ5ܞ1cƀ t-Kk+t Ѕ7n\OOqlIII%%Ç7ԤC$;_iΞwĸ1bԨQIhSPoMcղJ(ڛߥa:jէhii BXX8((͛MMM  0РHH$~9 `AP\@ jjj<x)---((hjj֔S4R<(***$$XK`v.ROG~7{wyAVV#F|)gN:XϜ9mرs|['E|N۰aÂsRS0ߒ|6#+,/..XTTT]]  GLLyyy=acc* t (uuu!!!}}toY(vrEI	JPj5=IZkdd}W<o~8/*)εC}xIIɜքVVV(۷oa.  Bt՟=p{   aEsssqqqDDĪUdrMfOӐDQQqɒ%(@v`a!.a!4k\/8c|eW}P?m۷^Bo){&!·R	ҿijjj1118֖oNMO؈KKK_tn(   Aؿvv   O޽!,,E ~s˗WgAH;x<%qS&>yLM4=ܞӦ\t{K]e>ZjZA*c߾}
+
+
+QQQMH|ʋQ[nEqׯn  0nW<]VS_ ɓ#GYfʔ)⑑nɅB6|r>>]v~njU>*-ä#HEOW,,#N oG`+\AA\cġCl[nϝ;w޼y[nz}ss3M   "HPX+=`X=?%!R+((̘1cʕ!!!/Ԕe˖͞=Ʀs	Aرc6׆V`ieN8uHѭv;wŜi{QpCzy9998hjjR>M   7GWWKaggG,,,z+ =p$%%DJJjŊ~~~ׯ_scZUUUwyڵhoQ;XYG]8K4ap˪O۶h?^Q@)'L{V CP5$	k"lmm?R8
+o~ITf5	  @SXX}.2>}d`srn477~:--F,Yo߾GK-.ݑ7l $$dll|yjkrv4nܘ]<$%kS!,'5*M55nsۋujNNpbTkCDRPPtvv~OgJHuAAA˗/^~}lllqq1L  toGIIA{{;n n`Lccc>>>OO˗/'>>77WOOo7n<sL{cQ7(srr<0zfS9'Q'>v'bǎA[Ma^:AA/(G-IY+V?۟hUHuuunnn<h    ftyⅮ.*B;v,V~!++JHHHPPER/^lq:cƲǎ300;wfNNN[#a*2)ZspѣQ:waeeUUTvτ5F*uPOVOFz󍌌p,,]ͭѣZ}   '''fV¢f`C޼ys-[pppݻ=m#q+X]|p-IF={Ͽ`Tmyb^{dviEo
+_
+G]FH_AfPx[c3	ayY7}tqq񠠠۷oÍ   ϸGe
+`.n7Z[[?neebYYY[[s5]pa۶miiimqF\2efSڎ<YXXvҫ`tC@`^5z1c")n޼YLLxZZkBn-R}z: LMMQ۸d:q   Q = p{aKYYY~~>
+d-[&!!annngޞW^^>99!XXX]ס͞=Saاy_/,9gΌ}?9oj'inp&SZB366;.Ӓlhh(&&UPPPUU   큑\ = p{Ikkk]]ݥK<<<deeyxxLMMO<ِ͛666s]t)DNw0c9NeJ>٣.|(cccø<L^NcAShxZ=OZ[[ϟ?_ZZL&pH>}|222nnnϟE&5   p[Yrlr/ =pӧO-222JJJpaB[[[nnnIIɠ{}69ikozw+Cu.eaaIOIp5TCȿ^رedd23qi}vaaaKK˓'O  Cfu_ˣÎL> =p>??/3gfbbbuVO:"#>}nrrrY(wM]n<yd7)ޱ5wX3118uY@ѽCp>cVwTWWWqqq4R(BɧO޶myyylْ'  Yгw0899:agg/-3 1=Fn֯_]7nÇ}}}dee2!tbe}9;mhuͽzh6pu@<uȗ,Y"//W[ք;T36uƍǎ{=&   ~M#}L9Ǝu{ p{@ ÊƂUVIHH[...2;Pkeِ3muPCZCCi_CY|,>UWoo2*7=:UnUTT^zY=   >>>Jxwa= !uuuO>@w*퉌sppy&DKo},\qhkz[pB
+Y`mJi4Z!"'g߾}h"""ƉwSS#   5tFr'ObccpGw
+:j×,Ykmm}tz	N[꾰ff3j7*הyjKڶm\Hh4 //?cMM̈́gϞ[H      n0設}ippQux䘘UUU!!;v\r)']Y5~aN=\B~pކj)i[lycVO\ﯬe˖<x𠺺   ?rq[ͺFr(9zyddd\Sr{)2>++|5tMFʗy}ϩ?mQ{F 8oVmT---!!!ccB*-.6#rʹs:t  ),,drH6CЍÇIII
+
+
+(iIJhINNMM]bSP$ >,>kV|l]-pކ%)//CKKud2TgeH$_!!!yy<|   ?f+;yEjj$߿?a𖤤55[.771"bhf_200@׻Jbb"&s]f&jLMMQo߾K. .  Naaa>@ =0۷۶mصkЈR@CRMх7&&&bWSSoJIX@Mϲe/\PQQ   ~:>>>(\q9'''=  n= O޼ysԩ͛7ϙ3gѢE'OlINX@@@GG'33!bhȉy]UUU9ҐS;C 4edlݺu\\\/^   ~<,競vq455{.==Ԕ_湹
+WG{Lӧ-Z1>BchY=/ivVPPOOm.ԲrC-jP{   q{q1ư_Ix{{n8qZHHhѢEXӑۃ}339s0D"5Ԥ}n 2VOI1ё׷2;dr~V0IVV֫W>w1{  s{;* = p{F[[[mm/^ ccLΘsyssɅUeBECswwAM[3OҔF۳gj}	:   1=0 n0\\\$$$)
+~e4E"888XLFF&00:bdhh2RRRY=Oh4weee7&''?}n   C n0hoox񢻻<77VBBBG%ܫ4ЯEDDd=е|ȑK
+
+
+:99-{Ls玧4//Ç?    _<oFr!^^^g!Hm>|&"""%%;&D РUWgeeUgVOL3_AAa̙GAe  `n mmm׮]sww_t)FddǏQB 9;;u/@W0cƌu]j#qw^@@
+jܖ/_zo߮  `=+++\2((DWi2pLBBoΝ׮]koxVObbʂNRCCCQ˶|r7nB   n 466>y$<<|͚5o
+[l??Ν;
+
+ jk$h]]s-II8M]5|  a=K_ŋp p{@ CsNTTիQXjժ[nܞt"gccs5F6$\144HIALNN611]t˅>| >  0t{ƎGnOyy9
+Д_N
+"2>>ŋ޸qЬۃnVVV.]jo\B"͛Qxц4ped$%۟>}|   p{zt{yyyg n0ikk{1Lvww?sLH.{PHH$̙n:*ڐ 34[97oFWTPPPMf&~VOf&B177d˖-'N(--  `r1c$Ws.vvv8{ = p{N]]###׮]'--mggwdԧ=zTUUSWWJ4$A_.yMOo|[C/ԅ>}^:]Omܭ[{yyQ4BXXXPP811z  aȟ9}4ww{P/TLL n`t EL		_ -II999|EQ܆F%Y>8;N]{pGnϓnKpOS[(5z|H/iٸY=8m6EGyW^A  0ݞ/Ew{Ѓ<. 444yBlٲEBBJ666/^)niVVֆuuu;ܞdև>E7=br:zcUx^B?[q-P6gĈ=t0SСFW$fn)]x8m+?<D6){U᧊P222Үhϑ4mqq4KII0	  p#S(77w˖-XnHΐzlllS]
+=2ͽh;u׊()̝3i̘ǳN0	=6u4qF&~@@s3Y&&&Բ)/_xMcu0շ\&ǅ^bff2(UtÑ1>oGhkuhH+T4lz~?KsdddP3bggWLGG4zL[^^~O<ioo  `8:t{tuu) = p{!Ckk+;vl˖-bbbffffW[Y`Hʀ8Sty%qz>Ob{7XPP@(-"({'`؂XPDDa1QcKlĮ7ʼdVnT2;sٝxN/O_[>`E}_T]z|ܻv[rиˉ*r-o\)&mTlQnJ/g.FmwMI;"O>o)Ee&oqtyƉYg666>\V7FƍWS̬}>>>7nHNN{|.Gwrq@ ۃRuֶmۆblll``ЧO`=FG	ؽ{[5켽_ĆJjZ>񏳝kYTe?J(d@[6>1ujаz5v]lv3kz^l6o[Izh4e^,aC}k|դagvm8J+(OW+xa/FbS^}H_^Gz(^^^6TR&MDK=  ! ?KOOΝ;fiiiddԥKUV/#G֬Ynɒ%W^}5ۺi?Q|qǦFk巨Wcf<?gDU{~7a}09v
+|ڿ_s&/V{]ڱ&fܺ:{N-M:w{uN5BO,thXTRZ>6Ĉx#^7o޼Zj;mΦU(̙Ӵiի;88̜9ԩSϟ?c Cd{=ȟ>}o߾Yf5lذf͚]t;fX_ZuĉѣG[ZZ6id/_flSNrR)XՖ-vg?)%.N˄%)qc=N~]d?֭Sta?/^BknM຾?۸<~h܅3SD	/8&{'=lOu,YwO}Q#r1E&nܴicΝMMMEw˖tKiȨEҨ8t D5drttHlAnSLiܸYNV+۷O^8qbݺuğgϒ9͌RJ}`ns&;r/,ZF,n{kc.r~Q&/n{<n(RԘ3uq_abжM=z:6$,Փ*;E%/щ l^^^8 C*11ȑ#wtt466n߾zf؞ɓ'[ZZ7ɓ;v"~c51R]Ӡ/߽lFz.1e;)DlexQWcfhy_W+#T\S[߾>GٲiW^?
+%yvwZ%vwW=#zEժUkժի6oh@6S3fطo7p dN.-]Ed{=p=yĉfjڴ[d|_ttԩS---MMMǎ{ȑ|m8I\17~V(<imVPxR/(U,1c2M/?Q*"l|bg?XJO5؅(P|_\.j,:ғگ_?i~۶&#`777++u>|ΝwMKK3 eg7&|lAÇ{yy5iҤjժ#Gt}^pa޼yZt/۵1/QtK԰!o13-D*\SѢ_Cgh#zXPχ9;U>ɣ?X֪$-\8yn;L{$7ĸюmdcq'༦M.Z虮R="o۶iӦ޽{4(44޽{3 d)Z;lAӧO{zz6jԨZj6:u::EXŋի'.ƌs9sS;wRǹ՘ot.[)WUݺXܰmkʕJIɓO>C}?^,Y]'GJiޟUʈwܛ.O|-!RHǚSk-֟~b斖ޯGd/_Rh覍D`hhسgM6ݸq#%%n Ul>Jiii			K,i߾={ct$ey$lٲxf͚Y[[ٳ'-)0N3cj>{3)Qs[_w}zܛԿeRŊW9;];7}l>[}'Kh_,߽!,Vl!6I~HnvRE4оws7Iz1ј;5inIw}gғX"iӦf4iBg=CrHHTT<]]]/_L7 Вald{oܸq#  K.&&&7t{I_^c{oӺuk|9<cSy&%nϋIJ+;ٟytke,JٲEuzro<e4L"sܘ#w_TuJlǬ_mھ+~1yBCk۲yjUH33=:awGܾ9vX+++kk_T[xt(,LTjooojjګW͛7߾}z  oelϫ'vq$A ۃTRRRLLʕ+{).7n<uÇܸQ爏W^XBgg-[$Ǉg?Hʷj֗/L{;#U)=a\稭;b`{;v󊋼umK"i1#IXm4 &+.ܵ}X玖_+_lICTįU*?dcumŬYFq>"Bg
+:v̙36m*:ݻ/_R*t ر#lA.ҥK={_ѣoN.]M$YI\Wv9(((%!UO޻{!SE|"|Oq?'t#%IjT/7߫?3h_/eA]S&Żyn|}#߯TXf{ܘ9ǹtq|V-wOE̝;aÆ5ktss;<}|kמW(f̘ѤISSSgg? h'd{=%%%_}<x(:۳lYJH͛w.+ŕ]@@@ۓnlQ3^:?-/3%~pcULz؅"zK)yw,Ŋl|Nwғzj'SӸޟ'oۊ{OyeWcf,۱CZ6ٺiƆfT(_\z$heJkk;O]"6lҥ52224hmu4gǏϜ9i޼y'O!\ 7_ȺTbbb6lУG5jk۷o>ۓޭ[5ko~|reRbI)ҩe!yටϒV:Vڿg֐زi5jJ-k.ۧ&nPCӵsmޟץSmV-LtO{aTIKc;sbߋ90BϙN)Te7_?yzٷvڶmۊ{t4jdyU֠A3f߿ɓ't g{cV;^d{ r		8pIϞ=n,Hݴ)44O>VVV۷_zkɝ\za#S0xס}+Uy&_V~U7('U͍#ϑOGS񛒞sߨ]9dB8^8O[,
+ȕbdVF'?4.L!"4(([n;w^~}:>}aʔ)|z  d{lJzyfdd#jժebbҿи[u?Kˍ
+ŀjԨaee%.._*eU~蜷R4rurs~8?/>巢]})1R%JQŊ?U!!$|UXoJVZAΜ_=]J&F;#ox1vT3)SdYRzW\}V
+}.fajO'>)	M6k߾_bh8"bݺu]vie dۥlϏd{=ȇcccmll+.l؞AAvruu-W\Zϟp'^3RfFZMR2y鱃F7.4r1m凱'kǷ<ZNj;#e%4Lk/ܫͩc~>׿_}@U+3vT3'r?#4IJ-q֭[tRD	kkk__۶Nڵq[ӧvu5jԾ}oR= QC CA><|PA0a
+|fYJ爸ۿa,--5j4{SN)S~ݲ2yW4Ǯ=#xxs>jHsר^NzƜ+ynǔ?{4_>gq-7>+}z(QHkgzܻ@:PumUb'*jkZ4ipt376<<$$dvvv#Gܶm۷ lOѢ_r'A ۃIT޻woϞ=ƍW&&&ڵ[x=ʵk=:au6h`\/90f ;)g5kb$gZ=9i\:
+|ڷOf殴3'&ַs;Oӫ3ء]?!k[ʕJI[<l ynS1e#C577oܸEbu4[UIׯӧE:uy7n$''Q rJu'lASZZڳgϢNڠA===GGGqwɴ@]&VEGGO0F4fʔ)ǏW&c{ғ^83ť[)g駯Y0V	/<vp\_83ٹSRbϋIG<{vW+#kjƗO{&?5tp>#^90)09򟑣FS̙3GD(ՓqXXXa͚5ŋׯ|^ =C! ߺw޾}&NؠAq4'Nۣۇ=:yd;;;q9v'=۷(V)[ E]ёc66nw*SH.V\6[4LA965u|4mf_[y~SgLmm_V^ݪ+}zpsb	Dop92RvnR=_nmmmllܹsիW?>!! l4d{=ȷ>ddd0gΜǏܸQwr<yãnݺ*Uruuݷo_z|ŧM=7_P1ɕӓ_,rRFIOZ*M[,!kT/''47Kz&JK5A[K^X0՘bNgؾc4#vD]o90eg.^H&OEFM{ʕƏIHYk׮Ç׮][ޫWUVIII \\lSN-^Yf-ZXp#Gt?oϫU.^a``PB!CDEE%~=ݛsiv$Knpk-jğ>`^[DO\ϔyw9oTxweJ_~Y@*^A"J$>Ir>p8\(gO>Dzƀ~rK7JJ,4kz[WgtPS}Q#l7ؗ@?sbK3o\ydkI?lȰx?IW玖M_ԴDnnn1
+F,[pV5kVÆEf͚sνx lwrd{=ϒcbb͛׼ys33-[#G~ltppSΐ!C"##S7~={s7vhYb>T5盯K4ml8tpC/\|t_OYzMҥig|go*JQsіMCJ3n@lۚ:6AU'PӸV4ozGk}0OT-խ<œ9qnuvcSo{כ03ڎ޸kfߨVzeq}(TܯUV>}nْ~nw\sD# z!1-3 -f{ CAtĉe˖uܹN:-Z9s={R7mi{e__߶m֮]wޛ7o~=)q_5d`Ok82e|uJKJ?PdBһ,*z׵!778JϮ*yJJiQ0A^0AEsfp/r|FK3٧۝911%'T_#?b
+-[W"Eے.E#+~q_MEp)ciiٿc_T(͛׮];++6m̝; y{d{=ȷ={vܹ%KtT\:T|=Wٞׯ899t=444%!8_<)i+~k*K(iR9X˕5G<eӀ!m*WʼQ^͚͙i7SDBUʈr#W.ժ)[hf]ܛ;bwcUA9jB	QK--k0a<o-o[WXѢEqn2(H7܊>}zÆNzG! 
+ilwrd{=ȟSRRիWwҥRJ5j:thddktL.Qݕ+W|}}LMM;w"UO~$=)u}=f2Ⱦu+S{;9ޠC&{Lj/~8?6\ja"6WӠ~Fڊww(uuZ'{q>GsJ/XwƵt猜>]TTac]iXm55Mv
+Z繩'UV9;;mv͚5aa9+?SFʗ/occ3mڴݻw?yDtG =l.XCFFFÇ߲e˃^Z=sݺu;w\ʕ+ei>n"9>$  qƕ*Uj۶8_&{P,YSNƵk͎;/R= HL.=lׯ0N:VVVnnn!!!Ϸm؞e˒CBlҲeRJ5ogat"5qc^zSvھS=:g3B!jԩq
+Ǐ_|IW x=< CA~rʕ[o޼9)4TקˠM6IK.}(U/7AvJy]{{ٳg?YR7>,lÆ~: [3= 55Ǜ7o6nukOA4kEoa&QCmee`
+nT]e˶M(Nmр~?|P?t y{=sJ2--ҥK6m:thlmmx]?'-0p-|݌UTO
+qf|ڴiw
+n븭[FٰaC>}Y̙3ɢ lc{=g۶m1bD[l}Eݏy$:߿f͚3f8v2ŏޛ rF;VZfffF:\V72'mܧOSSSss={< DFF!d{)ʗ/_޹sGP5k/^I&>>>NO=v6lEѣG>|X\{DnG_9j(sssqN>XxxZ`n-[v)h==2eʴif'NHHHHKK #< CJ;wnjj߾}?~uGJ8tИ1cǍwqJMՓwj3,,,*W<dȐ?""^tMݸ@XĉTuO )"d{/_x~9sf˖-ڶmyȑMt|(;6bqqZnqƉ'&\zދjڴqnnْs914_4iRfԩӱcG)Ȩ z&O`'d{=zsi޼B<xnfP=zt̙M4_;D=wV]]]7oޜy
+G˖-E"~.Eڏ? ,Sd{=[J2!!ɓҬEjf3f8t=K\$:uӳI&&&&۳gwrD7).GGfffz
+Lrƛ
+W۶mE"0}Çť t@u'lA?jJ̞=~Wm>SV:}ܹsիP(R6{DG[n]֭+W,~]EXnR=ʵko*?s.],--Ǝ+wJe[ C CASN-XcǎswwH	VNsyxxV^sIq,8AdgTO[}}}5jhѢ۶Zꝟ>>ߎlժ}̘1˝;wRSSi :#N.lA
+{ѣG.]ڶm۲e6l޽Isyq}*TҮ]uݼylAd'_bŊWXD	cc#F޸q#99{  ɝ\lEF*Ub̘1[n}=ч;s˗7nаK.k׮MxU/8Ah+5aSdf777+++#jyf͚oVOOB
+ݻw3y 1 CJe\\ܹs-ZԩS'qبQ#Fl۶g{||_|:X[[wu/b	B{LuwwIpTϕ+W6l0x3gϞ+Wzj||<}, ?xjG CA.׫Wv111:~&֭͛СI-.]W)2nxA*^)!QChlllnn>mڴʵkus>݅4D!:эDt)cw "d{=ʕ+/o߾Yŕcbh˛6mZL/[ѣٳgO>}*,¬?&jefBS2YTf2-<RfZ~ղDXBӰ7~蚇aZV\̓U2촯)>sLLḺc֬Yӵk׊++VCG˔ర7]+ ?0 CAT*ӯ^Vvm^z_ܹs,[dcc#N##.]ݻo߾O?zgj9Tyc-9j,Ұvq3UZ]TͳzKҲ9vines-ځׯ8GKqʸ(:",,22rȑ:tXx'RRRx: ?p'A ۃ|.11ŋ6lpsskٳG7s|}W\WH**gP׹mZdzr0稩9:\z[D{9#S9囈ӤjժK_
+(PVS::U}}S7nT(ǏoԨӏ?xө [;wfflAZRR͛7Gacc#"5kO?;w.}z)aaӦMرc߾}皡?TU+fC.6,Aa\Vt+5jIw6R³r-G_f\m-Gyv0p@q֩Sgرw
+Mw^cWVu֞틍e nR=l-Rv]v9tmڴYbɓ'utKlbݲeKdddTTDePޭAs|LjLRWԿ娨R},J˶olRZ4Nm:={dLwAήo<Y>G-gZ]ZߎP܈LݴIgˠ
+mԩ?:t wrd{=;v8ظK.'NHi\^y(Cņoݣ{e>X% ;:P:8/t}eƽK
+޽{>}Fw
+ x=E! ?hߏ<yr˖-֭ۡC//=uF]^HWڵ5tgTϡCϟߩS'Q4o|	w%  Cd{ ;w۷oZttt6moN⢒ +D?jmbεknܸѣ###oܸ\= 4oOѢ_!d{ofjժôi>L /vԴ~!!!oNLL !=d{Ǐ;s&MԨQaʔ);vH
+%|J?
+ի{ijjjnn\p  !"d{WzCf͚$zNaȯbŊ=zԪUҲW^.<{ blA /_Wmn۶mժUMMMP(n%V=ظqcϞ=W^F+VDGG3 ~blA Hbccϝ;?hѢbŊVVVFڼys|X%9-󋰰`wwwKKJ*9991 d{cV;=l-Rpi^\m޼)Lo[n=qfff-ZKOO ٞ"E C! KJJ:uի]]]4h0dȐ6?//A䷁=aaǏo޼yz:wa >lwrd{=?~5kָZYYSz-"޽{رkn߾9s<RI	 P=!d{%&&^paw...AAA/_N%)ǎ5k}[h1{]v=z(%% e{C! KNNpzmlllddԽ{˗8q=>>nzt:"ãyժUSΨQvqF  >d{=@\\ܵk]]]kժeddԦM//'Nܸ \)>}zfmll_%$$O >lwrd{=SSS/]i&qqgii׼y:teP/A|!tq^E  lae{J%ەt֭;w<CCCggy8p -0	#9 BtRvZ||<=$ Cp'A=iiiׯ_aL-=
+swwСÏ?xM8	#tϯ\_~ڵk |;C!>lO\\Q^BCC>|̙#i؍7_ɓ'jժnݺ{Ie<T(ذaC{{{WWիWGGG3 @ :$''WXF\>}:))^yz_uUFq7a)ۓ~Ovtk-!3$GUuVj+gvgIjkj<~@8ͯ]GY{v\ժUNݴB?DYqrrZz;w ;v0K3A=Jӧ۶mo?~Lǎd{<y[ZZ~Wuԙ<yݻ?~sΝ9s?huZ&7<=hi9j,hQ{ۣK޸_Y{Y}
+9[I*~edVfsŗ$;ȗ,DVZxqCC	& 2oA@ɕ"AO?,Xxĉ'NckۻwرcW.⺯w1cƏ?Fү1&WEZ _9eI>z8,t2-Y{Klk-fƦ۞iQo,kj.͕şQFֶH"┷>}ѣG ]v?m~mÇE!D|'Bm5:]m+ˋ\YTfBPUjZTGyPjۦY!WSNm[iyS5?Lg9fjO@͏[hCED"~wjj|}WkBy
+ԬN^Zժ25ۣZ"_._-ӐN~"/DFF^o/خmdP-[VPXb#Gv˗/aRRɓ'ZxquTAuz5bQa/_Q࿭O!ŏW_wwK2d?r]]##jժ)S?'|2z >
+BVtjUˈ0/+~W++PxWZZ"_M\ZG\DJm[~ߕʑ~VPkrO4۬ U0#}Q)ͳ**Uw'U{joIMslRxV|wԾKM}XG7/moͅk:UT)[lB>/k׮ǏOKKGNm߾SNUV]LjZoP.3=:n-^+;;fHWըw]kkkcc%J*UdС+}  o>)S%KREJ*,/Of֔*AmZ]j˥_% _SVЬNm+UZVV+\m5Z6|}RUm'%.ZSX2Z#jTtieQ-<ڿKzFQ,Y?%3h.T%Pm|ҴoieI%k6U^BjUs3Kձt75NUs,MLy(駟ӦM{<r͛+W6lȑ#'M4Yf?fZkvq7Vf.NYՒM4Pk+gZÔ,dsNw&ߐ7~IQ%F̞={ѽz8q]ğ h߿oE%Cw[&Vm%R:囫#_.)/AB*k׮M|vMPY]l|VQ(VѣچjABPl*_ :uj֬YgUVhhhrr2</555&&fΝ۷oU_kYZV+4=Z6ٛZv?3=9jsVZ5YG2踽j?dctҴ"u'N:uwe7 GÇoܵknܸ[n]Ɇ˗/K?%K.IU+W-i.J^E6#\zUfQYբFryK2mv,JS+GzKLq[R]ZjCՇ:fzHxՎk~>LZV_l~s$Vj{$?rR;>_LKrHpTY~ʫvو~ֶ|_}UƍLgϞgϞȑ{?wܹVGKK!qOûn~%udxwCMHHHKK/   HJJ:eڵk7ߔ,YiӦs΍ E_bbb\\\;!I|us(E-(Nv<   ۶msqq100XbÆ'MtAqο     >,J2&&ťZj40aݻ<y     =yd֭;vx!OZ    ϼ$J2))I`    xiyt8     #%v     =v      >d{      >&8f		?Uw~foEEEZ׮]K$?X.~-NRbAJ*%)^_E4W)ZSU647닷VX7
+     QGIA֩SG:$$D^-kUhg_ZujQhŊw&׮]o--'     sH2HUdr)"~ͨVKyV׮]U.ۓگj*S$OшSy)#h6åe:R     @Tw*9)UDmLZQʢHwZe`Tsfdc{UvԚ$ԼL"RT*;      t ϫ7Wa,JI*3lO6k 2U7diPJ|l	     29Q&ܒiD (Z2rf25UY쑷Yu4;J*w	     ?oZF>:HLdZrN=21D     yxeA9]g{מ21h׮]Sm\     =ljTͧfKG{9*3y4f"m6.     uGѾ,&y~w'66VaJs7*U鍷eIS      \g{^3eK܈ǪZ4_ҒLG"ɩFqVg      KG)UԊ+bccTcfTHY͒{62'd_$ۣjtLįXx-\;·     ?y%Khy$+0Vj%Aj+ڳBBBT9ۻTUs     xHO>/NV!m(#ѾXG5ݱZbxW**ړ_{VeZZ6=uK5۸      T4۸      >ljޞ<      @=I{      =׮]      5DǢcI                                                                                                                                                                                                                                                                                                                                                                                                                       ?p:J
+endstream
+endobj
+9 0 obj
+76902
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 48
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+xZYWZTOW~JUnIeeɲ$@0 a1G%K:d0[auw8[{I[XGޏqyxOo {~XXX(ג|H;99X,<_&½wtzbbvg$ @y.CRzNsjj*LB{/~65=4r^,%9Hh4NOOswxxx^s\s~:>?Ü|E|_aow74?k6!jv^PmJ9eB}{
+HCj )aA"Y`)"yH@NwzB5l2{D( .H=շKZð8t=a+fJ؞%{@b
+o 
+PxY_g P EHȿk{x9cfAi]*Ly|PBɹP8<k\6* xWƼ 5Pա5ɓ$ձMRWyWsWY 0\)"_:'ǜNG&eBEm|`,/?w%Y]]1{Phl6˥Ν3'|$YY(Vȳ-Ryz)9䌛\	+>(O3NIN9&TFb/_^;9<KsGm}i/=)~:*$#٩D!ztƙϞ׶["hG#h%iƴ/[*8+~RbMMMEAFu[V? wVůi_Y޼qrzki$ TBHA@ Bo(-oSwނ{D{L&%g 9ǆ~
+ pY9\E6nԙmrj !O yfbUX\MucEl9:6=9 7n0n
+LZiqk.BogNfw~dpĘ^=dNζ>6֋y5	DSSldO	~BHFdi@)4ؽÍ#Gʉ	Guk!	;Zf_:{(Qн޽.rRU
+ »h[6^V;8RE:G`<iQGg{_6kw~P#
+곔b/hj}oW82N tV:S#'^3,Ŋ\ߝ+PA9UŐM~ $(l=,unyexn꙰qu1ݦ&ݦ)ij<594SmQ6aѾϴP@6EN]##I8;#\k^	7a@YdMU 8i?eZ4{aKc d؂ nr$,.(v(2@ϊhR@I(>5>myTzsk\cN@d$80@%:$	@MKڀssײXn\-,* Hƴ[Xoic $[&U{yr[z%ӹL|j*Hp&9>?ٟ{>Z]B(<KTjQEfeST?[;VA&+E3IN쩛xfxj-{ֶȬۖm+2AK[ǌ:g&e/4m=x<~.kR-ͦq:P&!- JHLAw1æ1\H>'O()Kt,lB~\<_(_GJM	
+M/o: 8N(p)ꬖU+MW%o%X\Ht^$ PBA>=Q[/>[]~Q@BȤr'Ti58!irD(ܹWۻ]tP<QGAWDhHgv&&9Pv=-qP2`PO^&~qFͿKk|dHŴ<zV'Kk:k}CdE"~ZBo~LGjxS8|L4jwPE0=Bdُ}Dh+ܶDi&YZZBo<<<\^^>ω HY<YY5>;DQ<~goWNtQ^	L?vRf7aLcQ#f5n$M*Ǝ+/n[`pp度BBVurr2LKm%p<6f6VP9ǀgʜhQ=J~=dyMO	I:cL.LRe$@3HN>%,%tWtη_UBg>ZlnEMkk`e2j53mVfO["JJ"kk4XJ'QyR@B1vՖP\^5o%)
+Jeŋį&jj$)OO|8uvj!C1
+	AY	u6шo,Uൾ"0ʛ7\o?e[B|_v	"-v0P&9{<okm`0a*0#iǆly?R9mȼ./X{sVIw߯(<ϣt`4oC,ZZ I8n"]C@CQF(HDӼzFZ/y?a'ˋ/Dݔ"
+ޞ;ؐ*U3+ZNG!i U8oỎ{Q@IQg
+<[{	zsN>)=-("O*-Ԓһ+w	]oE4bcOֱiXV	 iB!pFt2%!<Pt,=N''wZbXPV//Bqd@KKZ @nC,C5yTpisP9st$ydU =gr[rj$	(jdg@($R	oh{%Lym`exdaΎfTU)Y-5,5VeilSީ<MyuUokk|lrdYo@Ew<NO|^8BG+IvuuM7M_P@/WE9CTQO>x336ےnCB4_ޏFxr2b@S
+endstream
+endobj
+12 0 obj
+3497
+endobj
+13 0 obj
+endobj
+14 0 obj
+3497
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+3497
+endobj
+17 0 obj
+<<
+/Title (fr-soft-frequency-reuse-scheme-v2)
+/CreationDate (D:20140609020139)
+/ModDate (D:20140609020139)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000310 00000 n 
+0000000398 00000 n 
+0000000416 00000 n 
+0000000454 00000 n 
+0000000475 00000 n 
+0000077560 00000 n 
+0000077581 00000 n 
+0000077608 00000 n 
+0000081246 00000 n 
+0000081267 00000 n 
+0000081283 00000 n 
+0000081304 00000 n 
+0000081326 00000 n 
+0000081347 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+81548
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png
--- ns-3.20/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,282 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F TIDATxw|SsGJ;^)K6E`huOuQBEd۲l){^Ie|Qқ{ϽI}sΑE      *            x      B     Q{      <
+q     G!     (=                 x      B     Q{      <
+q     G!     (=                 x      B     Q{      <
+q     G!     (=                 x      B     Q{      <
+q     G!     (=                 x      B     Q{      <
+q     G!     (=                 x      B     Q{      <
+q     G!     (    @-l;v,[GG
+
+M     M6o߾=,,,$$dĈ	 !:s   └M6dffnٲf 7D   V͛7!T*JZfEe     wϟ_hѾ}4Znܸ]~7
+|     %%%+VXxFi׮$I]dY     (7LzVT:tرۗ-[fXh% p+=    jrܹ~׮]FqjZѴi[nv A   Zeee֭[rZ2eJxxBQ//ѣGƌիWgeeV >{    T+##c'O2dȸq㼽$IԡCcz{{]QC 	    JOO߶m`<y`P{!I#wԩRZ ܁&    P]>͛72dNSE(($tMB;  G   Zmڴ>}Vt%Ir>#Goܸ n   @jHD[   @m9z  n   q'= n{    Ԗ#qLNk "   pa3s ඈ{      <
+q   Ѐ8a^JhI pg=   @/>\t wF   48fH] =   @'ONNT n44   pz^oXbccFhhn%d= {   $55b8~0LKHH2q=L n   h@婬)= {   $!!R,! wP    j*999***>>G 9{   (##l6gdd<i dr|022`0DGG_,Kjjj͏Ԓcz}LL	q   nccco911Qm0*?fX@
+}BH_    HFFFDDsrʒ5qqqKuX,QQQfY룣F#3ͩWS'6u+@=E   4 '&&&&&q_~x=erzYewXgUCR	<j   Gw*'ew<XM3WILLtD*111)))峞+1Ȕ㤭P%   a15}Rx*x=!!!2SN,+))))))\:s   Kw&:z}<Ljj_zfsTTbX,xɴm۶:ܼ =   @ʩ?39rY=<s+Q,^_jUzzzvv l6Wwl{   q?_'559Xo]pFrrIJJr-III58p    HBBcĐxyXX319E7
+gNFFShWc    ԩS|'##ù@dddJJJuOg88AǉTԈWq   а8ٜj6Uzh4FFF<׵cxZr6q   ЀfwjNvaf<L&S\\\Y]	O
+=   @]Y+p\`!qHǔmɵ{ \6   48&)666$$dԩ)j9vX,٬###EDDs~q+Gj[A&!D   4 IIIɹ>$g.јjժw8+cccLpᢑE   4 7۶mKOOOJJr΢}A(n>9ci{jO'%%9:%''ǛLTGT>㋉q.<uTǘߩ!!!Ma   !rncXw&Ia2=tőԋ#pkh4:Nv8' A   4hzQuRm=n;A|L&SFF_ɐa2;_
+p9<¤ovH-9ŁEr"L    .IMM-co0[|ٳ{G}TѸϾ$&&&))a   hX!:::::|iFoEQqP!F#= 4d=   @[ǖht$Gܳ#( q   Ѐddd8~qqqLy){  {   bǛZs@E*   4 VJIIqL%0L!!!QQQڟ%r_    褤lG̕Qs㞣8fUVǗ <   9l6L&)##l6f!D\\\8Ip*ivQ$`. 
+=   @CCtrJLLtva Gu   @T(q2E?PSNB$$$p4=   @w]?n4ݻjT'11l6ZC    DGG~.vgQO}I|L&S|||tttbb"!!\    !YC5Wh4&%%9I    蘘ȋ>=hP و{   ę}$''Z,T^o46w3s@B   4,f966l\GTs$Ikf. hh5>   KaX,㟑Fbfg Y<V˗/={Shˏ{7 Gu   Ѐ$&&:U<&)55d2EGGװwy#*57ɽ)pT4   pL&!DBBB\\\[!%%1vOڝ(0z   h@222D+sʱXe q   а<{}A /   aq̿^o  q   Ѐ!D|||X,*s#	zu"   <QQQΙRSSVץ{ ^`D   1Lf9555""`08
+yfWLLc~0v 3   V:uc
+p9hЙ q   а8G#q<h49| m    h4)䩀{ 1T3   r0v 3{    a9^x̕Q q   fsTTs-ɔ䘗"0T3 3:s   .66֑HgQOllsf '!   <lvJHHHOO_jժUmۦ&V= Έ{    Oߩ0	]Cg. pg=   <*hBddd\
+ wF   x>G׭.bZ wF     Q{    /UT*|     -Egr pc    `F1!!"UθGQd q   "##/qT*1T3 3:s   -z   SB# "   p     C5     Wp`0CLL`Y\    \ jbf^iX#""f3-j=    . ԞhLHHXjUJJbM\     \Fˀ   @m)zX,{    Ԗ$Ić\ .bIMMȈA\    \ IILLLLLt@q   ڢ3-0<{    ԖJp .`p=|4   ZrV0v 3      B   = phW`    圖Ԇ^OII1L=     U+:::))q{    C5+RT    -gg. ;#   p q     G!     W`HHH\     \4+03   bfs{    Ԗ,b"[HFt   P
+L$[	 p_|F   `" ඈ{      <
+q   R1f$6 q   ڒ$0K 1    {     -GO. #   P[?;c #     (=    j\ P/      x    L "   P[Ρ    @m9af. pg=    jYCg. pg=    j ^    P[:s;#   P[:s;#   P[ q     G!   P[, {     ^    P[= P/    -\L          -:s@@    1    = ~{    Ԗ,4 ?    Pq &    pAg. p_=    .$ q   Fu 3      B   Lg. pk    @-vt wF   $ {    \0:s;#     (=    jKQ      q   ڒ$њ    -J{ ^    P[ @@   )2 p_=          }    `t wF   Q    @m1; =    .     -Io.:s_Ee쯆C     <n?zhZZZXX`t=    jKQP\7ߌ4iСC7n,WH=    .g HZyM4Yfw1eʔΝ;{{{{.    -꿣2T3zD2DQE_ڳgOttqBCC=r{    V@@jPH2~+V|+W<x`ZZɓuaL   
+ʄgkrJ]aEQr( Y+t
+s.XsEdW%IRB\c61}cMӹL;|-R*C:-5Ɣ_a+7*m嶪\YU*Ua_oj\yW8V*fW8´*fU]kTq:+#巰iY]yR~*TWh[/V
+
+
+*[?,[ѩ5+V~[n}Wڵ[jՐ!C6mh4H   ~嗛o70/H!I*E+qyHw;(wK*~]­VRתaR巰&Y"kUVAǃOs25΀[B*
+l"Gh&N#WV{FQ   Z(/(/z}2r'\U5AE:RDjGTMFo*K6D
+ǫ
+Õ/)
+7{*lU'_ҳr6,5<BVJ{j.qV8*TU8J:Uxb)c*;*aZK.ҥKΝ]V{    4$t;lٲ=g7+;Id9Bvǳp8*7tUvת=nG[UgVy'_ʞ/:U(R(T(s(,](/]Ã79UGB'*A]3*y8ʱa[JdYvIO<ǳʇ\u(%Xe
+JrT!r~pUZӠAr*BO*CLG|W:9OʯYYYnn3gΝ;/رcϞ=u:|\ә   @-={ܹs>>>*߿1O*TqeBQebR%u
+cT9NuO5UF믐+U-YC-Ku
+5,SG*_a@A^9U(ԪM+հpukUn:9W`U~UnY/]
+`UFbZ_GaKJJ2337l>|XQ]2dĈB     JJJ׬Y믿梢};vѝ;w3     dyyynZRR6tЫW^~~~SSq     X<yr7on޼aFշo_^_]D@g.     ɲ֮]{]۷QF3zu{     'STe///z{      <&      $=                 x      	    Ԓf۱cǲez1z蠠  q   :zﾻdɒ.]66 7Dg.    R\\믿ZCm޼f 7D   Vŋgeel}2 n{    /ZhFՆڵ~ q   QRRbŊŋzyyK믿ڵKe 
+q   (~ɔ٫W////I:v}e˖Y,Z	 
+q   ;wߵkh6lF$EǏ]nv;    @֭[rJZ=eʔΝ;;h4G6Wʢ }    VFFŋO<9dȐq!EQT:t;vڵk>     Pm۶ɓ'Ǵ$	!|}}Gѯ_SNb 44   tl޼!Ct:J/%Ir|M7	!ڷo #   P6mL>]t:!GQ#Goܸ n   @j%Ir=B G.          -gQOyQQQ5<љ   h@̪U"##/z%xɔ|022`0DGG_,Kjjj͏̱1h^ϑj@   48}Hyrьb$&&&&&V#uL&SllbxbbbJJh!   |)ΙI,KTTlTF8aRSS/$Nddd8!L&lȈJOOq   Ѐ%&&:MAz')qqq"##:udX,&sq   Ѐz^oXbccFce>F}yYOLLLRRlUg\\dBT   h@RSS7Ɏxw$$$T8pљ81			lNLLtBz>...&&ƥ}> j@   4 uz<3l6GEE9h0,b7L۶msVP   h@.v:Laݸg1b)))ZdGɏqNv&    pAz<UI%'';zkHNNv&&&fdd!bbbԀ   !pLh-m`A1)hPb@Gq	!z}ԩ   hX222bccfvN<GCuFck1ȥA   h@222"""j:99QS+΢O==jCq
+%''VSNudLqqq+   ILLtp8α{+ HL&Y]	OGP=   @HJJRοHzb$''2q,o0\7c/əj   `08kx.=ʑ8uXd21N8UV1dPK=   @RdTxGXbǻn#d=3   Ѐ8$&&V+bU>YCy'FRRRTTKdr@3!##l6''';{LLcdg0fsjjjrrrJJʥOe6FU	}q   ЀDGG''';n*559Hsuθ^]h4:h98md(┯0%{    HBBl6͉;CQg)))&l6\Fc%''`0FT_׋U~JI&y   4(eԩrLIIV|Ŋf{'y   4,n8aVzQQ.2Y=     l6pd P1;   ЀǇL:1    hpL&SllE>n\ 
+ n   h@ݸ.4q ps=   @b0mۖx1T3   b2RSSM&d2L&WυDDD81if0h2   hz}LLLtttLL̿.Tbf^iX#""f3-\fT    QדZ('JD܃Ƅ!DjjjTTT||Uhr"   gSqȹ:Йi4.?   MNN.ht<`őPڃڳX,\~=   @A2qrCKfA|L&SFFF~p   ލǛh^_JD$&&&&&:~qrbf.   YjUJJJLL#1L!!!QQQڟ8REQT*n%P蔔$   ܭxRRRvv#qtJMM!qv梺5pͨ=Bg.   rܐ!c8Y1͎yoőP ni   __{ =   @e6SSSM&h4k#2ڳX,SNutM "   GUqXV5)))Uƅ9L&S||NB    HTTTjjjGk?#${PǀPzhP\=   @'}Sc:s$&&Pq   ЀDGGDFF^sfjE:u"!! \ht:]˸ɯbw2,{	 9MNNNMMX,zh4GO$&&UVe@48ϟW_yG|q܌"KʑGT,ȲݱL.t_R~*Y^p5W#UUP\C*qDT*NR['Liӆ Pl-?#B$''GGG'%%UWSO*-sМ(HHH?R=@Z,ُ't]Bl%fȧ6pߓO>ؼysOAY%I \eX4l6; dX+pV0T3.hLJJrp5Y_ڽǾ˵
+!l4'+I]Cƍ*wܫ Kz*o2RSSM&Si;;.`pv$p9i>}GС|9YՇfi8r>f̿Ooô	 d2	!*TX=&k  jnڴiҤI&MuC_u[R]*1>NoS~EEE4 4d܀͕9~X:t$\QwxqܹSϾol9Yuo`xc._駟֭ VͳfbGi">=pEt/zC=zt/^uUYr<urBջ>^֢%⼚+<n>}1V~]^HI7iuǹ4 4L׫W(v  7GuP=..n?naBR{N$*JS^H!邊ٶZn],DIkZF;HuYX%gsNgto^j˴>hGo|'|W^| `p\~$''`0Tǚ {*;;{~IޖB:5W_:"{Ǐh4oEq(Jt\:HKMOO?{Dց=&!E)))r\~~~@@~ݾO~vڴiWXWԼ~psU_WY2,8fWT/9~
+>"
+|_]r3gμ{L{
+ 䌌8IMMwL^].ǟ6i 7G36---^[t-KmR*.j!E)f?ަՖJBV32KJ$oֵw젷ۅ4mjL4ߛ^Psn!^ʵz]
+˴]{Ϩg\lY|||>}Zmnvu! 
+1Lf9555""`08
+yfWLLc~81mQeeeCygƾY.o[kZ`맸g?Ow N'R!(sN*ǿ۴kEjUK'$Q@7NingΔp}u>S梭rJeܟ4OOМSsi6YuI\|}Y>q8d nHׯZʙddd'!!~^ Ν;Gg7?^9v֞Yq.b`Gu2M}mي)_ߙ-^1w w`Z$ժ_}qcÿv?|}sb4AJ8zԌҼM!7?cX5~I/wʕ+~ለ:/ G(IMMu>h4T p7=[}'N<R%/n?͛_7Y6:?_?!.M;wjLfګogθs;ti~p/gֹSƛYG4!_oj8qC9|eDuKB.Y}3z衛n)((7  x6h4.Y  wTVV_On{usIP2{_Wkmlքq6ڹ7uz4H٣#E&5?g[;ge6!$cfwQ@]<ii'J*fv6.`%s"򬺰{Ƿ~{ƌn o hdee=}9̝mcsd+^(X+V-/ $8G*R;̮]ZeqlNf~G5Bht|Ξ=GWh"TA'ٚ6	>vҤ%09>1l`^M+2TOvu;>|ޕ ,K|||?Nuq( wFg.-Ȳ~'N<s~jXžZ̘J%
+qoK[qn>21Av#G;q"4ZaKEEŲ"{{-%jd6`mt{も#<WOt4ǦXG<xp ܜl0$dJJJеQ w
++,,ύF_Lwwwo_{Lm[_<y\Z%KC(Vҩe#mBRyⵃLݵkׂ<Z`/b)}$!l6'>(狏Og*R/jE=N68gΜ7|377F+66֑H\QC] ?Pe߾}wuWy͝.qYg/eBogҨn$QV[X$t]O)+S"oԫ,D>$}i%;>4'B)~߽zmK\a~6l&|_N2~\ flB$$$ZjժU۶mBt0BI  n}w@ YIIo6~!7>:!onVhZkka"":sDQ=J4^5#rREGeEjz"ĈF9Bsyk'&GWyk.Z\VD?8|ϝ;G#@ߩ0	ZCi =e(ʙ3g^Ν;֧uV6;㫕g֫|vb}4@.E(sz|;uں-iACBY$2ib;o;;geޝ/KƌR]%I8+Xu3Z՝yoM&Ӕ)SV\)r=}]4فh4
+!222. /dY>x}լd^%)AڒSvGz=Զ^R=_ yWqf!z!Pkm8^Z*|} ՁCM{?yʶaじ;pU{|$kҺ)󙿥1>諯]D$nN 4X[U  p!ͶtR`:V;/9S߹kz=rQ[yyҽC5w("uE{tOKO8nX3eeÏ̹ktL2X5I*xע;w[^oՆ&NvZ &Y wFDnnj4[o7{b mo_iK楧>S]'U\6>6ZX{]wcYڶy{!D~-rs
+
+YV&!zV+J7E|YHp'~&|RIP^{ըkޗ_~> @/UTF$ 9.)k׮'2īY?6\+^+vxgkx0?+fBW/ӖZhRq$QvxٿuϯL
+O\
+sޝ=K_O&LXjUqq1 F  En,YwmҤɍ#!J\۳~Qn͆tЫb!<%[6
+ ge͚hQJ!I"(HY_O?le~7OenpɥJmqkG4iҌ3ڶmK;1			~Ku 9R8q__tՓjj;5/Q}BC
+
+a+9"?7;WFf~6zκ&I%׌;wK>#hyV6kdsV^;Ǉ ɨ 8pnzLiyp3V:oɷ/]aM_O4|hH=NLK[ܸi޿Np]/?o؏Zr`fU/IE]ys݀a_xW^y42 x*GQ= Q\[mڴ%]\/䧵ܿnٺ;z`z!ʄ(kP}xΊkE6kVVqi4qwΙx|j~I{n]j#<r5h4 Oz .n>g4O抇>;9R3WV8wǗYҞ[t]ۯҩP5&Μ͍{dlmeY|}Ғ||EԜF[>^pS"
+Ζ!Q?=e> WDBId ྈ{gZÇO6Ӑi|v %6|?k_?z׭ͦ`[LVdYC:ʒCx]Di(բ;2cɫSӗbnݺɓ'Xv Bu 1쁚/XҒY_"i£~HhڼF!*XyeVuCnSw':u`:4i=6y̤ЪY>hΜ9ѱ۷0v T UeyӧO1bD*4Cb.3.*g\|ƍrTR1GAaZ,ؿU`Wڞy$q(N]>'c?&Xy+̵z~3Iw.\X\̉  q?/^<bĈǾc::8߂><A;_x㜘ju!<I-[UǏgw2zdhWQ5gRMO-8^xhd  Й qKӧOcƌYGKK>G7myi{?>SIFT*7Bns#|Ugf{yI3o}B;:(3Jt=Ƕ%.qVmˡ=7oޏ?h#B wF܃lƍ3g۷ͷ]ony[跥U mqoW}S<m%QQ΁[lئxw8q./qw_C?~~։5oh6Y<KAs̉ۿNl   q.Ųpg}6I9uO[?ݿG[νfp#
+\!&"Ν+/Җ.ӱCIɡ}./*ڗ⤀ҌK,/ӆ_t₍{rr8 P_љ 3s!:rHRRһ;brd/AڒCk
+><}ƭ}gO%C֖*g>۪e[e{ϸ>f97|H#
+y~~-|兙M0"&ߪdms~sw9uԇ~8<<v_;sEDD8~0!&&`0n pP݃D~mҤISNmwۿvl-σ9۾;sk3whۚHjݻʬr{toc*",,lǎL욱ڟ54ܲ\Wh;1ĉfJK bf^iX#""f3- =h.\`&MD?8H*bQt|tPVB"CplV&1pڣ=}N-hu7<tXii*0 W?l|q]1Pny?wݴi	 ܚ_;sƄ!DjjjTTT||Uh@ <;p>8bĈOyc؇ZZ]o+X[:~낻
+~Nks.ZA+9E};8y|V!N:w I,~vЂ+ܧ?#yebۃ}|MVV n@)F ?x7|.7iEkَK[]kBys~flJɐ`KKK`JWD[Xg+vu{r^6,3_Zyj		oڴiڵh4,;o-;.8(s *|S?^x'V|tAQahW巪ʽڶr߀
+@Ʃrkcp*󅅅m۶m۶-GJ%>= @\<g=s*駟Qa4Kڇݻ4Dr\Q@Fjn?XNPPpf":8xnp+x_2ztՀ\b֭[RVoՆi5;
+jrR:|mEpխJr\)u6mUeVHt)ժhxޒ|&qc2222h= l{ ͛7ѣGVVN*YBUBّԕ~G"Z9#IBFtx??wDyֽ{3m6m̬Nj5t%=n۵kי3gfWQr?}̙3Ts^RTVUEI?-Zp֬Y۷e.Fbbbbb瘘8> ˃Fu9""bٲe6l6*.{Į_m#'Ư[٥y;~3ڷo\\\|8~:mٖYZ&(4axgϼݩS~ڗ{)T,ϒ?|	dUEgZ魾edQկɫǎ;gΜ)Sl1HoG믆psyּdttttth4ғ .3x&MDDDow{]%P!;h[>c7MgY֭?[XR\uy!DamΞ-YbS:OurQ̵z_tjEǧܹs3o*ɒFF>%E>NuΝw9mڴ6m4ݯeW
+2 p<PPPРA^TTeoEÅVuߨZ?TZOסb{AAi6Me!ie+vt -b
+OM>q۶m{͘)YOzvۗ<(###&&wfzuwpRK{z븓'ON<GvrC%* pC=L~~~K.Kٷ#>lQH\*+ٞ|lD#_~~:vː~2|<ӦuC.'ٗu_V逺ݸK+XeY'ys*zK@nds_͝0a<o>n J)  nϯO>Fj֬ڵk\PMs̗+糊
+J۶g`cÃCCkޞrC.Kn1?»Ό\ᑄŜpq/\}86^馛뮝;w IbbbTT  .EW.]:tA%ʊue׮]iK)+Od{zg-+޴ohh}|T05zݙtָ47;w(--/~<䣑n1cWi(16ӮckvĉwYBHTPz>%%%&&322hI p)x&IЩS{"_ئ1_ZVRG׉meJ+bfX*ȗ>;g]ud%J=t۷R=ϝJ/_Gb^|q`,q$}ͯ~qٓ&9sW_tR.*K ::ٸhF p5xQF{֭U*QZu/sŁ~oA`lUˀYGVsL̏g7U5Uyi=/]|#xб{dQDN8eʔj%a/vn8 p߿gϞݻw-[6qR*jD޲~XGB";+ͷsͼ%9]66U"(Hm)r!Z|{}||NbH%iw.}WSe̙pݨ̿į>|p֭*^jxVͿL柱Q+oLaSjuIINޱB__ߜڏtS~3.}*<=77UVoZM'#|<=og<ЬY{k-\  LVjժW^v:|ك>M\S>""bÆ{KO7*&lKc@]wt\,p^>|РAw(G4o^jժ-ZwO㡁=ʮ]Μ9s=FȊqKRӗВȊ$Pu0몰L԰U{=W;_7;vKUfl_~Y#.x3j$("ՈÙO||-snobi}e>ZySN#;.Ci gǎ-#gZ,xBfn߾7W}\Rcَ~i!!zyyJ.rXu7k׮{WQ=̌n+**t~ةS}{>h"W/'Wy)W!eYȲnVH,REmZJwo}>WMԛe>.1eݻCߺO~LLL5k֭ڼy:#EQEQ>OCu 9.>"͛74hPhhΝ;(y!
+2;w3ϥ(*RZlYq'477\f/^l#I"PWN<}tLLoP+?K|@?c͛7<ҪEj>|׮GW/:uھ|#GK7+(oe݆WVNn(JVu]IvM̺}Iza.`0$$$В R\H{)Iҟ?}#
+\T}\`כVZC_@ͼTk٣BB|i:WZ{<֣GlSZ/_Dďy7n;S	$Y]WԴmӏ{޽mG{=vm4%?acT~mB(!IOZ!vi&J|pO&9ar	O*GQ˚pw6{߾}Ǐg<PY%gMKKA			ey޽;xf> E`C^Ҷn/EVu0{yU4~~A|pձ}z{=W(*_\n87	Ś]j_TKv>rTkEkgo۞~͸!!cǋ,9IooB҉SfMշNac=E*r4gm8;-3}3g~=c5m#s333>wݻw T&IҩS
+
+
+x	V+rܻg>8nG 4jhĈ۷o_zΝ;.l.|m^W]߮]>HZg3ǋidւTU!6o4iCn*U>z⫍7uo$iy	!kz}wFWlcH޻n|jp*^Bd[o82eRxv^W4|pK:sя[D	îrn?/;=];ƊnO0E(RK'sՁř3gӧOLLLDD
+tǍ}t^Fûr^WR_錆"((͚5۸q8Zr>F]z}vvF[/>zɴ[0`k)MX/>X>ٓ{`0<ܼ:]2ʒ$r(~:--oFNttvՠVB
+/(P-^rq&"  HUt29NWP|e.̙ܭlVcßidxNf՝_λcV:juAAAr˝w޹a  @A܃׷[n:u*++[|bq-M7?X\̾pS0_~'_9J^U֚۸[^zq
+-\3Ww<t۷߻%!d=:ujޤ6@:pU{yvX:Q[7m9zcV]_O5;qkƪOef
+ۼ5wS.:Sk?Z4/$[ex"e^V-gΜyM7-_3sW ;#ACj;u4pVZeffgպjmN;w޺uyG"t4>܊]{cw~ݘKm=XS~?zGAAyn|zU[W?>hܘ?R4oJ?>'?ioZ3=7)+7գ^Z!ń{Nw	oRyeeS }-Ε5kk{qY6sݸ=K~4}yF<+V())|CLyH{ t;wѣǑ#G6Nv76>hCI)StOh\a^nU2ٶ_ww4iKApIo]}ny7>vȑukKG*=9J%?ơΗh+$W%!M*EU5;rbIMde;_k$hn^kj?xwdV&^{Jeb{>9|'xb̘1~mvv6g,IdY mQh߾]rpQ]tٵkyG"h|\qmڪٕ+W>7gYK|᧵[̟=z͛7_{O::@rU/o|'us۫CB0J5GYZB=[иq:bB
+W	!BC%I޾#c+~5o3kѼR	!x9z֨oYYYVV8ԩgU}z|ETã7,;J(*k݇>vo[kf]?kO?=sG"u '4,z*))+){Zx[6^:?϶#\AL|yMy~hiST.	Om7g_>]IhGf:/Eq\nPFT6TGWPP˖ou{fj4[kXvo/nJ.)OsKWϒzh -+_\Dm^Zug-wM0/3S#c"v48mڴ0`u.wRlST6Y5֫Wݻw/['2Omң,L?zr83lYVT*IU7n߼YP.8\x=sxo٧w+!ĩӹ_9y*I=>?beڱc96׌Ԁ:etcƌrЋKgČk]Rkj2y7֬~`$
+n/)."HZ(BBxy|hݻwY4jEQfZuY.+:ZVv{=l%Ca}p}]o긵56_>/`??cƌSvԉS= {cǖ͙*{_um}<M^2֦;u|kB-9ſqKӱC!.t%|Qq^]4s<}'OvbЎzEYǟڿOΕe^ӽ|ȯ(Oq^~~ϿaԜK('6}ڳM0ẹWZLӮ|s7|3dȐE)!9s:$I"${PJ%	DW6zhUPdBmZ+hW[XDYxgz;mJ]9yTv:}Sub'/\n8!z ~	h7o>`;w9rdϞ=NR{XeԲO߾}믴ZpD/;v]=
+3輼4*d˲[eYR.y]3Hvl6o
+!	gWu?GtZMo ~oɧjѢ$7_x'J>ۀ￿NM./i>sQU{6!DPusϟ/mʧ]Ѓ};6sV?KUpNƾT*q>Kdff]wmwZ<tKk<D9w>iS}=ok9/=57+omqư1C]bOcE(0q#5|Mtt7ܹsgIx*zr#ACԨQ޽{waݺuk֬a)sAS,{t]w⋏'
+Q+yߟyn[<	-ULTj!D;<[Vfj>6:$1?965s-n3Y^;zdxmbJF c0~CƝÛ5s\uT>Zvĉ> xU8>ybݵk;kWf2u3&!UBU{^^#GŐ[Y[A=gN-NkrsFosذMl6'۴w`+iuдYS]n|Dv=a䠀_0ZTnTק$yƝ?Ǝ;{TD 34DjE#G<tАwRPݻw߷oǲ5'/dv/Ѭi^;{?weO?߸x.oo}}u3v:Vn3:ܹoQ;:L~(={ۧu>4Y3~ ZuۑeRZ{	ci?k?gkmG7~
+
+
+&O|͜(eYKQF-jVF9B :ܴP{vot":{
+첬QIhaB)o?c#?_y߁N>7AU+޳7'.J<x_˙w[cƒWVtСۤr>[F<]w9sȑ#gΜٿNQxG]Y 9kB߻wN:fHwC5tݾ|bn}E;7qzK|?δ}]_9w/swwL.*mU~)o?v
+hTBSsi$Itiz*M^gc@~m}||bYQ)جG*ˏD?=o?RkW/{W|_~yGV.q>.]>{%N镞qfsBΝ|[T;:ߩՒN).}5K?6rD׾ElؘRI#wt]Y|5J:uǂjyOO1c-ܒjZ9QQ3; nݺu߾}u:֭[-?ө]r[jZѣw-T6ڑＷFqnUg;W++z #i-ˊ.ڇ:JueYvseي4!Ę-[ejZ?xPZ}a\ٖ­ێ
+!:vhҥ':z"h^z>k耋諕mxfFwޏ%<3\%~p#~?Z\iu	!:up}[O=ghpu|srw<vt,V,]{$6^^ʉonq讝<|}rngqʔC[~7%Ml=_@XI&-Y?S n\hcǎ-[6J+[dٳ獷S?KϷ^N0(6g>߬ia6	VL-B??/;>b,+BǈλB{w̑_iF;*ql6yя;ÇutU{۲5S1_WG
+gzb<;Fs)3pxkOpW%ɮ%eiS_lٲ1c,6}PM"n#/9}&qcZ5gkCi՜]YYy6&mZ6kحYS*vWp{9kM}m[o/mӦMk:HT'=nzg;s=Ϟ=ꫯt4 ԃ Nkٲe޽ݻ}޽qGKެݻwמAtR=R[2y%l~TnA7L-+**IWѱCA!1zީ-[3jQ#:f
+v?~"K/ɅEO_t9u%~/z.Jgy~eZhtml]mX8>w'53pAx2Gn^/o-E.v?رB~յMBFt譒,[,w$]mi7T<z4b6eeUȪ}&?<{7ߜ1cFtt?g/{$:s[_h}u֭[n\Vu;u)(6?i}cVB͙:;Y'sn;({t̿-vtuҼl_\50;®,
+7n>\Zjճe-=T:r,`R;vzM(U8Z[U9|n}f>:Y咬G]w}e˖߯,F^cfϟ~ȴwTk4F-fs?MJf>>sڨ"ٳ%g6iCk:pUb;w[pm^Jq-# k玎Y$%%͘1n2 pg݃˫cǎF144ĉC?j$X氰[؝_G	1g{N+-~pfVIKvb)Blqla(((8|W,VTT?mc擧r^W1rxV-/^(=c۵kȓ^Y~Ia~s333ӫ.ȱ]|@x߯o>cǎEGG&5}i|57|sԨQ[7Яo6>Pf'||GE?Qsv͛68|T*eÆhV{}3E.{rM,\{ovVV,˜ps =hG]t?~1Jr]_Ȋ(FO} 3?ԷWN&]+7u2UұC-$8]XX6kƠكOڥ٘.ޒy$疮m}hI}
+Jyr;9̬oۦѨ"Gwn='Z4:dV}H,Jݳ'U\3gwWLE~Ё˯ؗ/^jUӦMΝNrKFedUWz-??7AS6*[U\"ovܾΝCk@HK/?z#\5vPH?ٷIW};S*ş|70sVZjmB1 .MϯK.Fiiiw-}g6)uN:O4#z63KhsFL׺o5ݷ9gI(.WMs͂^yaC:{r3ee6//o!W]=zaC:tozä:cXlc3AN%%֠@ztdLT:?}鷾gϞz=.:9YV$0C]%Y5>?0-Z;JB%vSxYe[q1Pm뼔F?ֻ|fB~u}3>*Q|ӦM:ujXXc9Ԡ@l;w|3tЁ7g!N4hc|s`k;>sJPQ*+loOsKB_ߴ-%-ܲ(ߴZSL4wMУ2^nڵ'N\嗞Q{Z݉S1sF[LNs߷uyȡmn*fsYe?!={>|]vneٲe\s񸱏΋rtsӃWĬN*4<	..梂& ju-Fk*K7--m_Bh`k0YOo3ر)oG?>מ;wn\We=]ug>SJɶXnک>33رc;v:pTqƩ[fm͌Fo*cd}}5ĉ]w]LLV+ 󧜿 { !IRpppDDDjlZ׼9JZ,]]PGv;v{>)7O.>@kKٻƬYfС%?eV[֣.nzkWܜ=1U"RVl|pc'[=vޒSOړA9sb~m>'>_LJϴi̙rp9c' wF!oϞ=㓑Qz%_wؤs!8E.3-C7>i=_X}/zm_=}ӲnY/ݢ*Kcm$))ivlyz@Ue+ȒSҎKtǬѯ<v>.X΃釛۷_Ӓ3.IvyDhh#<2}~C+ {*Uݻv횑|r\ࢮw;>Z_\Kˣyoo߾nuv_zk߂xl5jtG5E=V͹OznΝĂOp4,]dκ~/x͈]ERwvdsqYrMS^]ǋ[.ˡ:lyϻxI&L"jpeЙ .M 8wԩ[nM6.;/Tر_w_>FҼkWZu;KT۱{ٸqzˁh6KO{q{w%wwk<M/1i=seid۶˽:M;檔VZ%%b|G⇎3\)))EEEY2+י  E?^?lذ𬬬;wjB%%17t?PTD*|7ssss7쎤ŭJԤ{~o}˷zTE=~SL޸6@:
+b{ijMB5ᚡYBReepv?4+>Ju;Qhm~}p>>4i|9!q8z ܚ& [lyN>p_/Kl*}۾-ZشisCU1࿎m'k֬ׯ}/{+W+[Om}vپ}wj=5E=ec?{7~Zk9Ma3gsKK}z5/,*ֵIQu}0__.	 +jw}e]g1Qߌ!7l/|wy{g[fv,˂\ %4P^pph		󴮹l.Qvח_m+*!M[#F?f͚Y1s澽&O;Zo'ܹ󪫮z8(,eSϵjj7fQp@J^~]V<xfSvi)]-[QUWWRɐ%O{82mU/PJ8o>vGJJʤI^t\{TU?|}}[j5z]vunRw*ԴkT˖ɿlÇvBuJ%ɲ(?ıdǝ?TsQͷsUs\Sjs׼mmqjڡ%/p4ly;<>>'s~XǮ]~ؤn/zF%>d??[ouRK"JV&gϞ[owl;3N?5vL׮]X_<jOv[ξU.	$Jrwli
+U}c_\dɄ	&OQK  qPk֭{ٺu.ֺM96C奦j՚*Z1&ݨ2sn{\u궡T¾T_6	WҶ֮Eu֣RΜ9SZZ*xuEUzkdM/=sgZZZ۶mkv	/"\U믽.oJ"qAnٺ'((^.-->Es[~`ނ֚iKzx7Zr׌l64_Z_?Mt	eʒKbbbnݻ9%N-  ꓀Ν;0`{G]YvE->9,e	?w5Tgu+)d{*1T*_(*J^k~n- jT-0G4tSzpС]%KfۿL޽{:	Ti7nGQVZm)i[j4gV:wncm,_ֱ6r:}$߼Yp-2p[neРAW}cT ;?P>}DFFرcӦM3:w#rFJCqIs$g;]]N5k֠Y}%,K.g>tЭpL~ZR(4$g֮=|aqT.׬Ig}!a酝={tu;i]>(F=5p|}֬YFQrPG,d= ֈ{*xyy5k,<<|ܿolj.lgZ_swn:;[_DUi&7&JJ2EQ֮?-={Oor.|}͚5:z|NNYP ye+=
+Eݺu1%\	G(R۰X7УG'xo߾~~~\jfr. pk YQZje4;uꔞn6)X[מ;5--mذah뉍eouFmW^y}|:IW=P\=W ˲%p󖣛6;~jM[۶iyR2˙u[ȢnЯi׽l4\ϊJ-m9]^Hy}{Y.]!ű%Z =@Uݮ]={633s߾}~]XyZ|xϟi뮁(A6W֣Uy[Jݿ;n{1~9}_zDFÆ4)-6ҥrUR[AA㧳-və:k6p,嵥m۶9'Ey=ЏǞyƍČ9288LBP nK֭[w޽uܲeF.Pqe᯵te˖lxWo9تH.H;y*77oFS۟;_Ѩ4	oRB{^i2rSТn7&엏~]dUlnkv_r?\  nRuرk׮7o޾_Cg`UvQQQ|w!K:pI?7ҥp/ꝼ|NHpgA>V-'^XѮs˧
+Өf8gÿm*_H1YƌzW'Oo?~\e  r]A վ=4͛k۶mاHq1+Kx{/_oCpA2eK/Ș3g+/bzTSثghvvݧiڨ,۳Kv[`//áF֕(4m^maԍxɚ:~˾эho&M4k֬PX@CP ~?K 5Pݺuڵ7oiM^ZoE"!TXBqE?TR*ʹΕTXO$Usi^a*W^]d˹XrS+O͛QV]h#8Ban7+LmR85'/~={;f4ozpo_Ew|k.??M*fષrsvmy߅Cz>Vt?䩢vmh.w*S|TO<󓒢vhnl}lACoh?}]wݔ)S:vp @}_qwFԧO_wVk])r)oq;،ݗ*ajj
+T*jckĈtvasYwwyBn]z/]9xxƁF!av93Ch<kv^S?'q{QI%];'6{y=O>}?-*^7[z>xoK.TĴ\ 74P]}>oFQiӦk4򱅨]⼽w<Sʹ@k,#,W烎*/\*_9T1Y~k_v.R7Wsnse}9pMoUH9.
+U9ߩp+MΖӥBVoٲe$ݻcZ{"\r|??o$jXJK3grCBtwK?<E;t:M>iSy6[K9fSuر}BHVСCn222rrrJJJJKK8򪆦  ]8p^lN{gnii!₆3{3VB8/EkpGKȱ;ï|ڵk7lмyaBeYzաE9|(J|s|wKdKNI>*!DxǀۏY;vh|}u͚o$-dNnFjݮ~kM4iKhde="IVѣGCCCFc۶mzPũBu ԋ СC+Vj~G۶~'N'6Bo]p.}S/nuD,ԩgfzNRSSqwֶUY#<Ǐg}qtP`N+ߐ啜;fҩ:|U_!^^9_VFnGׯWNQj.I憯;UAAA.]ZlI㣦Kt itM|ɍ7޸?w-7"˽ϟi믿^VO7~,g.<r y/?dɒn* ^"H.)6U"W>m?fl_XVdf/NI633300o߾ W IH&<yѣgΜ͚5?x% F!ɓ'?{>7nܟO?xFǎ	Ɓ>ԩӧOZvw|_fW).HWT_otmŊGz.+Xl7Tee<Upx^^~Y̈́?z(5*70H.wpnFsl6kNѹR(V=zb۷QF΂{ |A[dIRRRQQرc?m|t-VZ&Nh4_ڵkeY|{jU߬˒S=7/Yze_}Ӷu2|>}~[!Zfˊ̖_P(PT#خi3Η4]ȲOU$"qIܸqK> Έ{p,[l>|S_9QZ.ّ#O^}Zv$>1#{`hŌgⓚz}@xB۟&̙Fm[}mvYZn㦃G	
+f>ڥs}H֡偻(.<x׷{*awY*UgY7lpܹȖ-[g 3\򫯾ڽ{#ގiwIˠiq3c>lB4 <)j_?9Ǎe!%|cO?>eK?]3fN&bfL߾%|]>OZݫBK{$ ׷]vM6m۶FU"FQ !Gú:)))SRR׳go_yٳWѣhۭ[̺gF!voפ0m7gr``d4_[%p ܓզ*Qk~A:!Dnu鲽ݻ3֥7syg?wM+-M{O'zKvٜ\*Ye/T>ױcp ~eE# bf4ˑu͚5o.++'s(-}P:ߥ̙3N|7Bond;ӓ<lY(#6RBboܜ1uJn]Tfe,[9++|܃TTvGsQItLZݲe&Mxyyq P)Iә@+4$q<_^^ov=̙3G_1X4 ˺gl9wSN}{[SKK`"fϞ}|]8`~Zn淪{V~0B|juhlK~iܢ#vӰcǲˬ=@|~meR)*QX,ٝ:ujڴ/.F P˗߿!2q<>'/o˖-?#<3ߌ;ie99wo}W9vAwyEnB'6?G[
+zKX^_q]#DB轃%%LB4m+fH&}qW.##jjʯv0xmۆQ8 +WΛ7^Ϟ=5q<Saam~ٳg>}8Ӎ7^sA<:'gNܹF:q_|KrU{FC=~wqJA9S<8Z-	!$d?w>Slۣ{={RxIڴ4ֻwoU+K͚ٙ5kܸ  aZm͛4if͚wyg׮]%%< %C5_/^p?<Owߒ6CرG=$I(|q,Yq\FT[_U*\_	VXz*4H-9܀srǴAteƍv*z񱞝sv}_|EAAAT-EUv[[+o<33X_>Ĺž'N~־~G}ܼP" @۬YȢśΝ+j2ֻKWj:ڵkgRiϞ=G͛7oڴ)tP3JǩtCQeѢEׯꫯ=n8O-k%PeΝux 3q7b$w.mTB:߽RwJj@	nmc4.!>ݝsfgh}JIUroF'.A7<p5#,78΍D7s\[hCh6z-&tuF"\m>5zWk>8vPg~WÍ)VD"Qvv5khH*dȎ_2z)e?+r_}:N&O`4ZϞ-~\a=vFd2[yL9C4,t1tFEE9L8=4&Uj5,' 	0F3~;vYf׮].]ϟ:uj\\\KnsE\xq˖-k׮%Ir֬YABaw6̘1c#
+!>kõ~Gkm}S;\UܟDΓ[zky݀-~\WW̫{Q}Ok׮-,,fw#rH#jkO=Edvvƍ1T8
+ ,$^"^eYsi*D|n3C<[s
+˴> h&~/Kؤ	wppNX,ݻw'\C!_rE*344_l6#tn_u=ַ ewϩ&5o괹kɭ%	]+ɷ^ff*q}[^޲[6p[ݟϱ,0qIk}9qAߔ_&WumGھe18'3o֟G?!xh݀G]580㏐jb[׼h8AA9[j>AvMvR誛mI۶mkmuC-
+
+
+0aL&;}7|9x^x!88+p]reՋ/d<XUu5rp/$l@GVM4鳏(e@ } :"⍴e˖qqJs|hnדO7n߾d2Y"ź"C1#/I_ׯojjZ _= ð%_~Xb5H$R͡o6`%y%v+β2H	\z8V]UŗdP@8ҁM[!^7J_o˿eG9m01lm"!WXH~?"\},˵uwzݫ?`g]^x)aos9ȯ><8|5ڼO6߭zwOzZ?ηzǟLL@mO피hlfɓ'Ϟ=[YYݛ qBܩ8+--ݰa&OZT^@υ7m:xȑ#?~OuBAgJ${-]TS%%*f6F3gRmX|~E%WD|E/.޷o+~}:8=&Ӈ:Z-Mzvg:_0;kVkll,`)Uڢ]ZأG OOOe \Od.ɏ[B*8](?"aimZ޼m^Ȳ[5ᚳy՛k3z?Evhȷ~ǥ-/WTmR'Z_*z[DW%LWl>kq|> f}NbѦtTfN	˿-)q\c(BSC7|{m6^%t]}ȵ߭m:]:Ӳ'òWL=u:]^l6ߎ6M:0t:nrp Ʋ^_rʕ+Vj:TV=Νm\GBeA*B⃷ƍvO=lZ?1CPZȑ#ApS%p'MRyKsrro_n:m0qaw\_\[KvA9sjĸv&~~~2b=~~lN	6<0ψL4H-nG/oyjRtu<3za>⚁kFDF,*	kh&,#UW63fK&s͖̈́%Yw8zh4""##Ai4;,ظm۶UV5jnrrXy3z
+	=K$%%}BK!n}dF cǎǷ/S^Xߜ7Ə'bڵZ<r3Ɗ'}Z@:th},[ZB0$p70=4^=JHD8Dm؊D@$tCҥK^^^Py܈sΉbe2bwͱ}㯗8&٤n|6,j*Pk>\o6oغ\ocvs]Mz;ߦ թ(mb7Bf$\znisj'kl^vO0pLmrm]Gzm6[IIINNξ}9۷ԕ=,{]hѕ+W&Ō	~rxvvv||sLD7?pͷ><x:Ѯ?p*(={VXQSS5AcXk6!dΝ;]~$ fd}^z豩# &3;dvvvPPГO>9rH???   ]f+,,ܻwΝ;,K޽ǎ;jԨT>/d;@]]]NNβe
+Z/<@>u9(˓'mz!T
+n;w{^0{Iuu,_Y!CbҥK'10ϿW,oذ၇WǏQ  XŋGtt4Bkb=Drâ!  @f0ٳr\1dȐ	&$&&J.J?l޻wﾻvϙ_p}=t묐栠kjύz7'dz p|CXДsqر	:ǇeFch."*Մ8K&a
+.:129uۑ/w 5qH~hѣGa,Gj'f$Ο?/׳gO???  kr\IIɷ~{Q__)S̞={ԩBAtR&i׮]|ɏ?/Lhhpu5fwd,_O3/<Я	!	:Z3fti'0Rl.e4&aUUU/^,**%B=5J)ի:q}b{&ZXVqs3g"##
+Ԭfr82w:qDddP  @WDdQQQӧO:uj\\\WMiйpg۳.\(~7#kjŝ{b5kt:ݣzg~F%Gk<x0''O"hL##+**._ph0)Bb6<!ď۝}B f6K<^VV6p@jV%s:rh:tD".   Uⰰ0V%;f;rg}/=64ݹvo,֒%NzVMv{J̲ڳh||&='A~GФ<pCܤfFCYWWWQQ/˃2sAć=|'O}A2(V( _$T-^!4j(2H$Y𲼪ӧO'%%Aj  .0$){~ :^PP8Ϟ={2		q8FZJ]=gЌ㷭݁-|'yxZug%BI-GKtq- 77ȑ#QQ%[=
+I߾ťX3\l@o2p8 "> eD(9}tTTT0B\{Eam+))	
+
+:thTTi   l6={O?裏gΜȑ	vU*R֬9s̘1c>p6QGs	!od{KɬR߯_<t|N"MÆvw2'N8tPF3gO6[\JJ/--u3wŬ.d=O9qBltr/">  ,]TYY٠A.ɅIm۶V322R @    ]	{mCS-Z'̜9{a2	FwfpR.7׬ٵkWrr'h&	mxy?|X #ɿs:10$8Ԥci
+qF0dpҼrH1lhCN$LCbDG`ذA$z,h4`(((tc"*#;>ʑ2L' ѣGk9bRu|ݎD
+,ށaȑ#Iaq΄])<{P(LLL:tJ(
+z   J ng.Y>x>Qf#ۿc[kaÆ}#B3ϑ\㌇>~^x's![a~Tpϑ^Z.=.Q(@??"Lag<#A~O>tPB{ݜ!C4]YYyys[p7@s$Җ:R<Xa;p7
+Ϟ==&Wn:B8brrr˃h   6ppŋ.]4iRԩiZ}cdfںgϞ}2zU$0t&',av)dBj｜i1N:uÇ}<=KWt}5vtLa
+ڙYC3	,9&.<xf?bP	AΒn~Q?!rA.G wlR'O<T>h@oO!8,]`\WUU5|p/lM.'n-t?~\4(<<fr   ]{8cFŬYY}=bWv+W~{'S%3!ĲiGTJ!qe_Q>bm׷G͆3GQޗX]~)$I%C~ޞУG	}Jzp~~CNVU%:>M{lb>u,{ҺE8@Q.`HC$Fj(k<~sF164Ͳ,ƲM6a9񅋎2	9r$κh&BU{%b&S?655(   tJ.0LuuҥK?G>9sRJE]pkym[PPPڇ͜!˚;[slPBaërB`tYWVϙ3[O;pO}#շQ2FXB|>-6ZҨ6hJ%IȤ0+M,Txȑs1Y,_99X\RRRTTTYY 
+Q(8fuaOi4<y2k}Bdc)ið,q0a8nӖ~?BFH5틗Y"J#Wa rZWcuTfr9;lEEVj=ঔ|G/tRBBBHH	  tB$4p+VTUU=#*+Qiw4$}r/޽]PilKyf
+ Mfylb80JO{!I UǛ?_yH.c<ٹ/3ͥ#Rr!{.uCaΌgN(|_(''gy&66"/4SZ)j~;{h|{,t/#v0B}PTnڴ'?˗q]F|~uM8!DBS%OL/0չpǚ/8SɄeoS
+;vX5[Ξ1rn^a`+**D"QBB3"$UUU ,,,66V$$\`ZW^sNyGjZT
+-  W޷o߯ZZZ:`{NЀ=SًGFF~国16;3/ |`A0+._XYB;j߾YJr:խ~fuۉ%{+w/A0&^tEݣcvfQɛoɡC^y7|0xs Ǘ.]ZZZ33'ʎ `ޗ'pu'S?Х44ޝn6;+yᓧ*t:b$޻WЋD֫>Wv ʴzj4Rp4GO9:%{Q#B=nl=;vWW!>0DB(RzoOnqm+WHPreH׈F$<<<T*t)ϟ_~}cc#qEٳgȑ{C   &sW[[zׯ?X[n-ɡʕWq}߷O1[wN3=`Ozu BFȣ1u@_ǡbł!$\tOʴM[K[Bb1;1H*d2|Ͼޓ@X,Y^&O	⬓cB}M,*n:vٳg%H\>eEC=,eee%%%W\T!~H	e
+{B,>uT OR0I7.]vwd`ڜaLN=̇39~𠈞E\Hj-oN..XѾ1|kzk>!"nd GxK+Vo[RWP}C{7]X{|ueM*__(;Sfa	G߿T
+tp~۷sGoeewϞ=7  t6:pxȚL[Z			iiirpa矫TW^yfB	*6<uyDO!B>ҋ%b9\뤙Bbt詧W7a|/OL&g?0!!vLIoG 	u(y{Q}bЬGJp	߭ozy65\i^_&-_+WI"9sA)?GI~	BiѶruއi;k~/>7|X_E|dX&]( ΔI	,=R_o:xpb1@@Lv}Ρ}Cy^#9C$M3CwK҆!ǚ-9ϖ.:PPPEx!bŪ1޽ЛtL.́r'Jjq6mǎׯH$!.^sA0 '  T:Fss;y?R>Z=ujޝaO3&|C+S&0Ҍ.8^E"!tTYYYu~a!Wg=T NtLaMmbPP:
+0DB'yB1Qڦ"B$!MM2=wn~+**Քҭs=ܼjժK1Uθ=~>npulQ%]q
+38)
+ɖE0#I\)=<+c9kj%EW
+닊5A׻gB䩊k@ި=iݳRIiPW_{9ynR ISvO?:p@8A{/-]v!Q;wHaB׫nݺbp程/fdd$&&
+B""""##O8m6N  
+{?аk׮sΛ7O׿;hnvn|}:t'\Y3|g5Art$Io)Bv>t@!	2H$,k29BEY8Kj!$I!altt0qf8 >cY֏?yy6D|uu
+EjjV5Lk׮\Qb\O ǩas"ǧlPk2ُ6Z-ytfD̲\qIg_fOQ_Q|4nҷ[e9*x$\=zb}`j¸8Pc%f$IOOCwKWm5iٳg+++
+Ehh("]VOCᵵfYDDDH$FׯYZvС$Ib?~xDr'N0  {knn޲eܹs_|Ś_|qُ[SԽ?e˖ӧgУ(NlP@54Xj5ݺP2)e1鬵u:L&e*l6GIiBCQ]TF3@B;쳏MMMeo%gj4O?ڵk}z!.j'Νh~mOkP~bAقҨ%FDڪ[W
+>CEuZ;8*һ=8_8rKGFNҲ?y%knfe!D6;**nض<F㸸z
+th3eee.]r:>>>
+B` v"b111\FjEEEٍV  y@p8lX~}VV믿>CZYjk::h~1V-\hۧLbaBwpmײF4jBbe*+=4JB&me?(׭wBɅ%oWBJq~v4MM)hYvN*0D#z}0L5D55T""''gǎcSSdq"VUY	1=%>_i&]g
+XDYN]3;oכV<ffb)zx8i&B2we]XhމH1,Ud7ã/=rx31ѿlN1,jT=Wٯ|O Qpg:һ+ǉ*썍j:""Sp,rMf˗Ropp0B4TTT~QF7 q[ncǎ߿aF"  n;7j[/**zw6ҝTZrqs%ba͝߼6Xl6BN'Ӥ3H$bBfp"8pYYeDyha8i?YJ@6C"ǯ!}'k>`+R~6$%2~qƩT5qK.Y10ٹeffޗ{
+
+I03췐BQDF3R#+HxG^%Y,W/(`N!*'&ˑc%'IQRڸof~f5DD,=2
+.[q,00e9u6.Hӱ,лwo///(n\aaçNBD2|>}TWWv-  de0.]r}|n$uu큞BUjkkGʋri%B]CAIc,!
+!cV}A/<7n?:A/\ "!NV,+r~h2DB 0G$nw}PuΏH^O֯_a'=DL&7=zp8y3bxӟsss|زWfVI%8~4jj|HDi \Tܰaә7o=B=/DYΡ+WB#G;Qv4^P-FNf-ZS;_Za d	-D]]]EEA!!!*J&E8ѽ{_~oe.3f@\  Љ.5	߲Zϟ_jUVVI&MzFA]a˷ZSS3bĈoQPejltJRHDxtrH4jL&EBLfPHUTt: DڢbPHEvA3]@Z,#A4qpxoz믿^n]cc/4Օp8ܹȑ#VA~<eVV<-|ꇴϞ=;k$iTw8ZCEesiYP*o"1E"e2ُ喬plvph!	\,B$ӊ~0sމ+'N/?SW>Z=jdBmnwB«꼼z聤bѕ˗+**(!b=?E	R."hĈ^^^B  :x t>}:33sŊ,>_^ܐDКPx~+//8p`T_Rʺ^xl6HDΦTBQA"IlfC@J<aǋ==Bh4$bXd41@whzmn}'{jM?x]][Ϙ!vqi˷ctOHpV[:>^|ԩǞb(»\R)2[VvACiæ3{IwUuH+n?P!M-k?nK$TSP11,ܧY<~l\L!?|p0pظ[46m8YD0q|܄qq$yWWp:F1((ǧt4~Kl6// RAAdTV(rb  йr֭[lb&Ouu{=XƍIIIW)B]CB<BM$xzKT7@>:2K"ap{վ4Cqi4BuӨkЖm|18Pq!-(F@vOǛIU;vkkM3K'lφ>]&edd췇C&
+r,{	z8qb>{TjǍ{Oc%G,!0Bt/EEz)*qK{@0281$0qL[m#$nég*/Tz{䑣%NWDvβ~錵'`C3u#ɻy7๹UUUop=t:pODDDLLBa9   6	@4MԬYfƍz~/nzz~vŋ{oFVv@/&!_>v'E2d*awF=X?a!Qz!6<L>Eh>,kk۴d1R8b.ow>رcy7T*qޥ[Ŭ຺QPPz{FLB?%I"X]^z3@4v#S+/s_XϞWlNSHqܐgzPHIYTu`N>
+XL;%qӖ5CS'b.\AyxH׳o;փXڼn20b!ΊjzX,H$p"  t6PMdGYpahh7u+-%ݷ$y94{!|URldi^Ebb aN8B(<L4iӷ-B^T\X@J1X,˩PH#
+0>^GQBݸC3yhBY9˲tNo6py8ZKK_=:%%%00ܹs?P,=0o)S_7/ʮԕ)	Ϥ;,DG<`HmUWx$.<*&-)-mjAQ>9nnEuNϯF)O=?HvHӅűUy`
+?}t}}L&a9s2T ΍ B7n|w5`wyFjun//ە+jK}	o&bі
+f"a|aCzGKB
+c9/v'|=G6pK.9?=qpʤ,B(6{R]`wBE977ٳLtt??7|56[weeeYY˗& qLESfӧٽκEGD{^XS`tn3&]$!L \fkefs
+$IkfEfźfkPZYjF],~2aye#:ʧGw?4UUH8UUO?rU`Cu:f[0q-{Qرwޒ^$&uD.ls^^^SSSDDСC
+1?qʕM69C8V  NzÆ|ͦM""">y9ޡݎ8mQN}las_|}@O(@6|S	!|83 _rٟ*d@!TߟqwVTbM_~s؅fDCvOWO3xĉ<KhhHdrVFfBBjjjJKK((((PduADKʄG	]r@@k8[m@NgtTyqIcQQ5Gx'Ւn^|N\w?ZR\h>ybFmn\(ݻ+}uNhEBAEltF>I*#gFǡ}B||n&kոB,vtE{
+o˙YDB۫W{8㎭[cǊIrL.ftc$%>dȐAA  :'sby۶mׯ/..p*ݽy]p'6SXX؛_<ގcwg87{_l}Ap^WY7濖/z($"jos_߈}uaKgh]"2u}o碢sǎ۸q#M#f31YEF+V]V*!>|/YhJ]9bXTĠ窖ݹBu~+\(B }mV'q&Zo6j/cΡET"pҌN|~|UfPm;v_,t6(PgI
+grϋ_XsbMtX7	>EGyG{WV'Ii1CN'h~#SNŋILHH		1PTWW$R<==ad   % s8|+N>믧$UU0|/T*/)$]}^F$	BB!c?2B91^A/r7_(l)["vjӧ&ˏ6ӏJ!e|#R~[x1B#G***\]YMoo4s<wܺuøGFz\QtW",_<UmD2]R\`:s2Bͥuee:&Ie?KֻWPUq;:vЀs);QV[k$p31u6F#yq	@.,Ǘ(FU%v;PX+sGp|M,]	
+
+TVo/yB]/_6!!!zzpcqĬEEEǅq=Î1(  D͹qjjj8믿?>&&{R	B?E7nDSNR@6@&SN'!^!8l'|W\\?~^?j{7Oy0%ߵM߰b
+P8}׻.ih'?{TIV1-n ֖7666E1蒝jt,˶h."u(XfOPH
+cߍ8CBEcN'"F{.uI,+I_lOOO'GQb,k˖-8?'Nj8(C۶m{'Foo$? wafnݺk.
+SΝ{bx)S<dDTz$E>0_,/xrv$YT%@c4/%փbY⥺	K0^ӗZg͘ Q}2lɒ%K,1ϚRZjj}Ls΃$y>I/ee.X]A<طoCz&&
+ÐuPH̺)!h.îs;λݕp*AAABm	sb8((/  aptA  +Ǐoڴرcj^z((H]^pxzZ-Y0u愉5UC]C.~WRo5Sߠ<x>aHm4.ҸSCpT}PJgdd|29>dcT#;v,''pL>U	'`9FF䌘X;	9Ih8@gsav޽{*qGt4M{xxDGGD"@ ] [~X  :9tqF?Ӿ}'U{c=Nf_l&LxbvRVPtP;w^p0q,KY̶6nyy~06[ b=wyr_~MV?TWM~"(<y{#GCs|3p?˱cfζ\^"1 :2p:7DG̺LP(Hd0>hD8  pOeZq233qOIIy_?ߚt;=k.8qU9BA7"R!ef>q,7YHuBgt$^y^o233_{ǬV46N<(;w<zj2ƗU`VKV?#g?>}G>5ac t&<uxuuull4L	Y2 rrr.\ F^^VqP  :3tA?~|Æ7oӧO4))f_^
+6_~4i3=*)
+C׹[V^GGWYctt|ޓuV?)4h_}1@ޣzkEkcGŒٳU*Ֆ-[Μ9cXr>>1S\GOcazYɜe_vgKMH#ug}}=B_@k4sbe%L&J"z͛6|PjjM   :=t)&hÆw6ƍ{epJTR`#
+ŏ6sA%Au&B2ǅH{鲩g{@[,HG}tٴ4ܹIٵ/:)xtLjժ˖OM|;~ᬬf?b^}kG pᕕ=z"8UnkhhݻthVjN3gNZZVfVfqj,XpG  =]npڵk1<xCpfpR	//,,8p߽-C%Aa?4.(k'+LoT =$	R6O>9u'|bThnvV15Iܶm˗/_~^p_t[?4N0${}ޗs3	p\_^^ojIJNt
+n@kYYY:wQQQQQQFFO[`5=Gx<r鲲i}RRRá h{l4xQcny_]{ܹ6Aǅ.Bs'v¢ 1W{XH!FbŢщ',XS󢢨zWo:ѣ)Zn]IIɲe=ԗXm1$-I$~~Pk׮_G\zmAUװΝs8FFD2.8Fcs믃ndj9CktiiiiiiWи hx͛A =w0VZZy۷kY'Z2N"/w<tPll߄-Zd@|ļiYo+wyN:A8u# _wv믙g}=>^R]M:$˗oڴf{huxΑyi4u}O/>Q51 ܏a6ɤhbcc	5Ƹ&=øvak~~>˲jeY{0N7z輼<ZNIIj|M^^^VV֍t~|Vjy Hjd۷oܸX~⋽Gk5ff9jbna4){e5$Y^^O;N+(*)ڱc_|axpyi64hL&[bE~~~VVI'%KAgF,yu!DDr|9daᅆ___YW}xCCCUUBPTAt Zb=)))-jᕜ|[+Ǐo7zh>	= \{<ŇڰaCqqqTTԿ}wBd{6'ɲoݻw?1#m8V6uVm۷mhZ^}/-37b~QX,^v~k47eOy9bYnק=߮\n:ٜpq4vq/=Q"hڵxldhno-Cr[<FB}߷x7dx?MnvZW}kTG@5;/oj[E8B˻vR,t(!+,,,--i:(((66V$\z,+|/:q.)--.ZZzV7o @q\mm-[.]ZSSӯ__}>45zlFMHȗ99.7o#3Qffÿl֘2c~T\
+GȰOfrnݺ_f}tŲݻ|Gٺu`2{<A
+;8Ǉ83ٳgO<y9TzxTe[3n30۬bj՛k>d<G);xkKW7Vl_H;mgw\?1k9$Z(^TT${쉤8,ڒf[cc#>>>JF܅9s洞Ӻ03_zp[В],܃
+~yyyiii-վU׫ p鬫۷o;5Φ1|?'I'9CFYܯRr/Od 7mɏD{_\ebE|L\bŊkrֻrNHG	8|pfffo=Z9#I/z~۷oD|Z2oDh\hձ6Av-ܥk6o;[oW7i;sǯ~>5ǹf;MMO]u@ (**X,Y颯 jjjΝ;"##!Imc=IIIE)?ל&I=]RW7iTǉt:N?~FF]:.==Q  ;RIIÇ7lPPP>Hjkݜѣ4/5
+XX:vT)DEd?`|X[MBNCCUчH$˗XB׿S	UUv!$}R>EQG9tjM5g3ÉV=!&{rK(=cV_ޙm-w^οc C˪L&SSSP(Br}jj*_RSSϟv1_pi_g?rt:Z^z56gΜt>EUu222ډH x8tZnɓ'}||RSSgI{1~)+[6'| !(s;1dVȥm36 @}Gǡ}FieHLyf/21م[eYaOOgY$dee_AO1D(]lpY"ʷ9=ztޝ$I\3E?Vn/r֓^As2AhѢ-***JOOX,**<!Z` \{:,KNNΖ-[9T*gΜpTOy9r~*)#
+n;))hwʟ&Iq׬}jܹމVɥy@|zz}VW'8n4t	G0ȑ#G)hpONFs 70^_RRϲ,팓of3BV&!+**:d[2@ -t.:-ڵkWhhifan_z~ԨQ/>S(G:z9SuV+ظf3<tę3KWj0&^~W|
+ڟ*x,PcǎSNEjX!񒒒!HD"D"׻l-ewh?K^ 
+.X?hu:]^^_^jΜ9jgppOg|۷ܹjΚ5kСh4K?t:*ThF`6}}8dHfg+N&DP,Uر,s>PKK47OT|fD[ntҒ%K$!h<I\Y_+22[@ˀkR:zU?gO@힮st~zK^=%%%%%/4| p=83Gٶm[NNH$1c̞=C*+QY;V:s̘1cޞ?1ЯRNnh4lzyweK0OeC<d_x܆yVB.j	Ȇ^/N>קչtDssf̐d۷o/..^j9UOx#; \UTTFODDiד>|N&ⓕRzy{Oȸ;;T\lVMMMm) &Ndջvq|ĈOFZ֯0`G+@OgVYUgٶmߓ֣!"dIĊ/xV~qqe]@4JoG/=rWBp͚5۶miԞdap'k1**...88 ,XǯƏ3?($''i_7^b~xxmYj `(x{Ǐ7/Ν;ogn]8P`F7>z/"2!iөllnjjGѴQ#gW7ONTz>}~iN9<=]Ul3z}TRRquJ 08a%%%Ӹb1hgْ^(99933$a>WGm87|>P~)(iY9HWˆ64}ܹ-[Xd2M0aرC,qhI/W(..ѣW_ӿ	ʠCAeM!Q8Bpg!oIG^(.c ǐ:iIӯ~}-\~SW["h͚5eeeV2RcH_`uEEbRuZj[IƯ{ IMM!#,X~MrrrVV_@gѢEմ48"ׂ/bNLOOl6d*))ٲeˮ]JKK}9Fp˖~C8V	tۘFڸ߼D4MW&x]ƚ3g+hEBpp8up׮]_~e}6Bmw7|H$Z~6oެ&/"8sgWg: OOO-1pOV-Zė@NOOHMMj|Ч"dus'ubzzիy,("""<<<%%?b,kMm5zH Ü?>33sΝMMMZ_pP55mOxtНfGPht:0!0YLۜN'B|~ȉEfSg/=ͺu.]t:%%,M{ڿZ^z3g9xe8c @N`0 roTT\.=JIIINNGѷ&d.,(,,3g?E_z1><t,~:RQQ{zjH]4h{\=Z+++w޽rʤxb
+Ǒvi/
+?::	:NĲ+BWd_P&8_RͲ݇JK~Wj翕^_z{	?Y{,yu9CadY󹹹4MO~d&IavpƱ\uuumm		DP~|>gΜQH,EEE|M<\OCYYY-ISNZ`W?r)c-=Zj_HnWq8[lٶm[qqqTTԼyS(n6I%ڵo|||~Y*TtНKo8>jd//O10BSz億KF~U%BIgr14lhPfDknܸqmDon<ڭ+V8r޽{9Kza,woᐯ͛t{vGCYCj>}ܹK.4V[h7i-مz[jz޼y?Y2ć222nˢipKegg/Yɓ3gΜ)/GF[gJvhAZÇ?Z\B2 sg7feH7	TrFD:8;Kp(tp@٘1cΞ={srx>mbxKKK5Mm
+BHF67~5fwm<xl?k5o'\6nSe6gFfD0H~޼yEEEYYYYYY4 .iii-RSS{@+--ݷo߲eN:2}5g	`8.222)))8CEpOQ+Vv_7DI??/tqxDDDEE3%VVumA6:fիo߾ǻi,+u:jmB'߬;i'!;!m趎萙)mpd;hnn(*<<W&AܸTJ_|z_"8 MJJ
+?͍rpOs:Bqoo`BAq'cV[we1P*fHVຳ,jhlϋ[uBr0GHΡ0n!xWc͞~<{n'xbHjkݳiã@&;{w]]ZmDDD"0e%t`}h'G]hhgeĖonn0.su\nWv"#[4-|8]ZoM[kK!Ia'N{,00NVTZVE脠pQŲH$bY  ꣢4]mciZ(rl6tНa8]M"'P*FSc==pcDB`,C3V)M276B$t2Y֭[U*?E	R<#7رcÌ3{=rS/HkO7n7lDFn{GE4[ВWm=h^j <Cj  tr`,ˊD"шaD"6F&qW]]f3BBv; #.5RN\$/ ooq,EFsM!h?F={lOOzPXqǀd24  .Q֏)))m?c  @'ǕJbar	ۃ>!H<<<do#1=w0={jy{Iy:G<PQFbq:L&PD1'ƌ IHjyimۼN=ZOϯsrv0L~&LЯ_?B  lΜ9mfliZ>sS>X*Bt￿!4o޼Th(:M(:"L&BF4ˊbX8q,BN٪(?R5<BH,!.]n;QV"Oaؙ3fz-bX5iӦн
+^(,Zv]ʢ'Lj}||_  ~!Z`Ǐϛ7c=PFV^ќ緞	<`,D"QHHv$IF($f7tVlf91\MF}XXB |,e"u^
+P0LtbAJH 7f5ek֬1Ǐ">^E9X={p7zqW@  @GterNLSffZ/u݅,d2XLӴ@9l=AQX,lG@(pT"Sx0iV(tYư;/ٳ/]龥j쒒ɓ'<* ?g񝌌9sh4ѣG |&XrǏ(ÜN'BEv:@*Bm`2s8x[INeqz{rPFDi4@^Rf7K~[qWWUjݽ{wiiihhQ ,ZϟNܧB3jNq#,X MqWKalD|؈8n:gXӓ_l6CvaF~qc.(-=r$",!$AбcEN'\'=\:??ܸqyЊ
+ju˖6_ߕ+WpBppqF  p>Ӧ|O^^322"GNzjh\=wP9XLSrr8sc
+EܥUE1_HA_U^l٤!@ņMGBy'
+4D|?n>{lgUSӗUEQ۶m&bԨQ
+9\  jj:<<[$@/##cZ6--mΜ9P;AVU*ZVL.,0aop܉zՊa0dUUPHsZjdK-Y`zt3g/N|e%<zhBBCSZM+G0l%%%Ç:  
+yyyYYYyyyjd@% V]hQBힻ
+{:T*Ey{{{xxaYVF"BR$I^4%p sGr8&kP&7&Z1߄0≁>aEw
+
+z&:Ds{*ջvc@^  hSGզ{ #_suvp7pOǣiZ*,a?8I>qR4$$pXV!sjn46NS(=cY"ql	|{Dm/U(.-.wA{j}{ꕒ2eqzy]fe?~1">>b=  
+GjHJJM΃  3pO8`0paAYVN]/f6E2Aw.p"	,87ٔ
+3zi{)B"6,>x~nnd9,6ܶmɓJwl9XС<{=|0X  .ukQap!64-pOcYV(D" *++IևK5#snAoR!Nhj4%%u۝XN,Z얭8#Ieok7_>- 5BhsfKo~5͆;i&P8qć}}n:aJW\zjƏ?zhV uRRRRSSF_஋8|4m=<4­pOD2L(zN dR)f6qra0LMO_5{PV{&u80$we>,=|t)}aPuuA\b]xʕ<cOv&pϦYcǎG}7n\_  uZ
+ygeet,ZjȄd   8cYPqn/uN'GBPR80pqC54ZhکQ#)Ϟ^hw`Rϻ	w|%f+V7n߾	&<tW<<V?~>~1c  \-//oΜ9W>E]/z   'v<=84m2l6BnZ*
+OOOÚm6rݙX(+k(r UTڞzzA71!@H~W_0큯vMAkZRb
+N7y7E)ZU/ڵ&""bСOV5  R:n-y楦q_i N{:EQ! Z۳7q44M3q$١8N[ZVV{{jjxm6c0m6V1H }K%u,pG h$֮]VVV6~{WV7*//>|x>}_  t:Bhxϟrs9i>  ЙAvOcF `&(2,2m032&N3Yml}}כH߲iO)BG&
+=^=0BbA7 B1j6~|A3&=N,6VRf͚˗/wmԨQC			E^  =222B,7o^[WkYb=  йȿAӴR0iBA4p hZTRE$ANe);QCJTJ=,[c#G*z&`sӾ5BҥJ b9C5._ܫWOOwS!yh4۬փ;wNP=zȑ!!!R  ܣ*|5OӮz?  9A1#Jv;q>>>jncvLrfFPn8qXԬ6xR!ҫK^;qs"B&-ϰIccbs%]Oxro/_ܿ'x `Vl,**֭۸q)c  _9\= N=$d2a0	=NBJ&6~]:]s@B@aEg҇N|*J)6_3ՄlAK݄Uu.;;;""ilDs{`Ztn޼jzܸqsOTTLt [0  :1#X%Ita$C,-=,l6ʲdr8EGw*3M}B&˝:},_%¿,/
+Fϯe4b~>uoo'i\w϶힞ssss  BϿ_u:]ZZZ	>  ЙAaZqX,v$I	8n7L?wCއ{XRpdR*p- OMc'܈Ke~.ܺu?<].ܳb 
+1ڰaCnn.EQ			JA@  y[/jy)]  ,X&r@P__9Ŕcw:
+L&"8;	 N;ZԴlȯ~X+dL;&[db݅:9㓒򔏏M'!zwލaǎjU*t  yyyYYYIII|"O^^^T~}k   pgYVѐ$qD"J69m%Q[40;TYmhhx͇xgJRjj,VWbψfk͞?|nϞ=Rtĉ#"4R]Js)㒒&M  Z̼֋,ů~=A  tfx|$<<<hS18XBH"D"l2l6;MF!4eP}FAY6!7 -6ʗ/_zGQWT'T[ϜͥizݻwX  v|ćO>Z6%%=  w`t(J>bP"A$hwq` TXԻG{,;]\RӼ<ۻb!dJ V322vرcg衩tSxP۷olG2d NBjvyq  ԡ	hO8N,[ֆD"ѕhAb&e2qaq6z!A*+3[hh6444;v~uun8w]ZZܷoߠ k      p5xfÚND"iaV$v7fJRh48N4BOAKM:oK,Bʠ9dR߽Nۙ-[tƍpO˛U_/^ܵkWEEETTԀzV0  >
+-Kq1ٞev  tf0x|.T(beYÁX,a	q@n8CN;Z%536op܁DB!PܽXN=[buEEV}bhm3I5ٗ/_		4iҐ!CÅB!t  .yyyGnYxh"~]aD 3pO)Db_tAK۳{wl6fz	1>IAO>>=w).Yȑ#C}{zt_yN*5Tjk[UU2f̘	&D"  ̙zZ]+4ϙ3'<<r|   :3`qAF RH$"$II܎q'4p8`Ŧ;J`roTJZ,<'UgΜ2eJ_=Up>|{Ȑ!CX  ^yyy+dddB{  R0dA"ڦ&Hđ!3D"nݞ^ pOQӧOGGGϜ9s:AMM:uH$6G2  n/>"\-ٲ;  =.!8S(veYP
+wwc4O+#Iq8GXZ=yyySN.ܱe
+}qeZQT* NV***kKC0  :=q\.qt2Aat	`YbXV# Z_}{Ϟ=&MzH'փ]-oܸѣbo߾1  y6Ò= <\B 0#ɤR)A0c{òE!L&jX,4CBЅ+}OٲeMƍ$q۲yk׮\3ydV͟y   t1|0v  p`*JX,HR)EQϡC(D/߃|fX0ngY!y}Ν;RIfuﮬw϶͆C?aX'L0dȐ@w} ?>vOصp &sfV!DQIE!o/1MKRF#N0 E~?rfǎM0}kj*8'HϜ9uf=ztbbZq   ] ;{\8@aADǑ_+ 2vߕkwaZ'Nn%sÆ۷o			CӧO@@ z  j,W/-  tZq	8EfFj-3NCn^
+
+ a^oB`Ev \xY:gjwzp4]vݻ{G8p`PP@  &99֪28  z M
+,80bn;N$QnU{FjBnewzXݴf͚ćƎjjrO(J'%mt)33*&&fĈIII 
+w  :-Yq$I$e2H$qin0sjXV,KRT2vC0;v3##|N6hčFwl$={dgg=:99[n2     N&s
+ruY%IJq;\.J|i 0>Nr=hzzfƌ6n0aӜXlR_
+
+
+>|Qb1t  mڟ̕#<<<<<<555<<  {\///p8pCd@ub!:;êNV^ٳ3MlMMٺUf<xDTwРA!!! Pt:]^^ZNNNtIIIyyyn  6q!La@ iiZ]qtrC~؜0a	XIZ6l7n<zP(0`{hk   \"Xffիu:M  m *Eu|fш3r{fBF^Xj p'Yn̔'ONQD6IZ2={N8AtϞ=GP(R .I#WJNNj  )bH4@.#f3EQInX)50(@@M!"}^uza5jIPZFlqIcy1ER*8,u/ǟ8pkɳ""dUUn:yzfST֎"wރ  ;Ӹx7*N{   *qoooBA$MCW@gYq4Tq,0;|o_Z-2)a}=U?ˣ7"={rEs抏n_:tHTΘ1peUrKh!cl߾}'M  wBddd͛7  =bD"˲"H(J%r\!eY.!Q_oj%MeMÒ$qe9jJ)h! DBuld$7ǟC52@!,m'vZBDp7LH>H/OYx?g&dggDѣG?,/GXR.s9ݻaz	  w-jz+-----wjj  }	hD4MK$n2(t,EQL.b4YN}tMVJaSTWt:˕#A5qbRIra8cJXLu`lvxބU(쯺zMgvǱ(0O+1S+Μ*-m*.i,\$!S}Bch6-L?uV<f̘'sOJΝ;r^OLL5jTRRR`` } o&@JJJJJ
+BHL.  p3
+0\!~fHZo^9biZ.+Ypvk֝,h۝4Ͳ,aE!Xe`q#IPC[7'B}8Ʉ}B<( c%B*m -l}or8N00 0(ز܌
+qfC/nܸQ׏1Cspzxdˎ;x`ccctta  {p   p9Nft8,˲$yb=&H0pL&FDBT>^䪌5NR#/6C#(աkñRaU^^ݙKB1zzzZ6s˶sfPXq
+fzʪf@@DEzJp,/6WeU< dy77781bqL{GFF:w      78N"D" D"qVh4rT1۟XV$BE5˥Mfm~[uBQ=7:'(P8ęLvb6;.]T
+"Ɏ\欦ְ+"M$'DdK@c)!>7NoyyƏ."{{{EBaMgV.:{q\iYSFD"jWdܱcGeeß瞞n0aӌJUT:}:;;:<<|#Fg  \9  @WqqH#v;`YddC,8.
+g{wł+/HY!$Qz>`1ɱ*dYppH4,i{ϸ_KQE؝]!3G:{Oz=5j-Br¸id@  9cQU$#B=zr)kiiB$jNcvMZImJ冒ÇWVV;vРA2   #_<;eeeeffBc @ǵ
+AA,˲RDvwôzf9pl?|d#{?:ѱ1Ѿ-1Aatm,8D&&dRmq+$_+-<4ROi;iA*dyerKB
+[VK`2ЌfN|Æw s[ǪV﨩.--۷   fիWkګM  7)J$if!{,I8{t:ݭ{N&Dm@@$iCysܸ1<3e9ZSk7Yf[fdRWq͏+9|!!i]9Pc%!/Oy6O!|FEBH,c~~ʘhoo9mhx3g'L0U չc8n2ٳ@>|qqq
+  @\j^攔V;ghI  p)b!Ij,KQBj
+BN(hY8G6;_\Cr &=a<qܩ[۽ҥ:fgIĂ(ã$&&\q:K˚Ba*%ju?pވ
+]WIhnəU!D
+RˤBRls'L)ròXwYwxL&ٳg###R)t  Z&saEv  plƲRt
+FNX,MMM&Wt)rL&khhpyjpW/*t8Szͱ~Eō;vovБbkdFD	\Xgebwn^'O]XD"HLrղ4^,X{!B=|2{\y/,])S
+V%փ2zx۷lr1Ç  i  ЙAUpZb8eL4a${|.]
+N ~)egr]\臃.4IŽ<w?,w싯ʺ`Byyɂ"<<g*+M&u9bc|T
+89TtT9BKG%oqc%W
+u`<ٱ{OeG²BGRBlŁ\T:qBC+;֝'OD%&&5Jzxx@  uAn5  {@UHRJU]]Ͳ@ C-n &X!$K5wU8y6aVm#i ќO.`V.2Rh^~`U	͉:{uQPua|f130T*hםhE\81CN'c:lEc%	DtϬG	E]x>ۿT*9rQQRl!T*nt	GѫW/??OV   @j  tr0s HPE$IQ4˺;$i(J(Z,z|vʉV2+}3/VfUF_GWO>6FG<G@aʢFp(bq^Wx^!Fүoh`_gV9ZR*Ž{oyu0t:k+Y,&fث.485:9f=X+	+}novv6#G||@Z7<<yٳĉG  (n,6  ^C˲6j
+H.J$p7glcBp455Y,iF@M5VE"!3hn͞}v:	R?@sP~_'+!$bux`5mvg&UH]PWoBEEzoכ2XOs`L&4z!SM|A"Jª:_ؼyf{g^_YݑvG+'""v8~bѣw	s   Czn  W6.I8.HB4Mv٬0A8
+-|Oq(RIQn0!!.#Ǌ8qT*۫g!rW-^zR-B[g꓃ޛ&փɄ
+JϐUx{*I6d)@QѻgPDHDJ+?*!޿[XLn7-'Nw¯ՆHDzL
+T÷ٻsrߕ$v$Xb1H./]U[˝{'B?L=LLca^阈遙jvU1c HhO-gs鬔$L	#I<?_r1:^_<z,˻vv\11!,k67.ׇ~xm۶m޼VϦ 
+,&b < wfS%9ޅo۶ÇlPUveY\/N
+~Υ;wUu5O9_}w.dOE9;h4ŗc!!b2eedڇGn0&XR_XUZJm[
+!j}k,pjHd2y2K]VADCÁ?)MLD_رySrdWo?zؘ<9&J}~xŋmڴfqj  IC! M=9d2hbpbs=1F!^ёB˺jeڦM#ӟu8u[o S]]T曁Ѡ>B$I.>$|j_r^޾ǾD,PjÜܷO!V,/_raKwX f!W&n5y~WP$~b\'_Ѹ﷿;r`SS߼|d=Y,=.׉'N>}7nܸppn  Yr8[KG.
+?QWA$"t:G,hEbI-~>l:";v>eԹtIiu}UպۃH?'j,HMg|"<:))v6\^!D>sj;/B֬^d2:e㱭|ɲH`l%~{7r`"߿/9&S
+GK;ݻjժ7xc}"!aӊ}ȑ#ǎw^uum_z%ũ   
+qOhcvޚfiK!˒Zv299yaEQ0	-sqܝӟu	!4MHTTd=
+GF_3phc1AiylVӂrlp8,[ok[bi艉ȑ_+mm,%_~j}Ӎ-R^Owv`Ͻp8aP"<Ïb,;onjjzl[=w^S\\cǎ;v,Yv3.  Z ˈ{rEwEUUl0D ].fk⣪Bfs"!	\7PeYRUMU%EEDӴߎ\5ڲ~%
+Ŧ{$IȲiB%Ÿv僚p/!lMUu%fwwz܅LU+/Z05UHCBbb=1U\?sҥڏm}}y]s8N8z[[[wx   ,_xpl@ h|yùsyC4jZGeeD"XL4o|`pd2&IRE{A[QY|uc!!%ojߵ<Ng>jFԙlڣ(Oouu	!*k}Ԟ\gv_PQVj\SY^]CI"ۃzA9kj|%%Oۘ}('Ϙ?ܾ}{ݺuߟI1X4zܹn_~ ̺ 0WPQ٬((Hdlllddh4j9jbq\f9'	UUB9SX"&lz&'k({Fc1h7mۺra,vÓo!L&Cʕ+lHnū_ZObϷߎ
+!vӂrwu`gC+WG/v#X"^G^zd2\r˖-L x5H sRUUjsrajUHo(jZ}&MLD$P{=u%M\>Fc'iڙWx (-qo]c6wFϺymu}
+9q!m,ZPJ6DS}h{?w8/_yǏpB<_z;,< *%I?C`.#!
+L&S"BX,UUQߛ,'	`6UUD"pX+7,KP,9jc᯿P|+ZM1IU?<4$}hU+w"]!*m.)v'i_38ѯ	UQ]]XU]egPMWo;wd2?mn.Ox>QǏ_~]UV555/  ?P 0Q!EQS񌌌h4ib>9dxoxxX4!
+L<r}]K=!h鮺%UEU^ŨWV7TUSU_YQ)J'?뵜q?vsj=M4MCK0;`_\}pLf34VS~7VU,[Zp<qCM	U'yɽ9W/_׳Ѡn\}Ғb'⧭
+[Ò:{x^ysȈaᒒ.?̙3xyǎmmmV A =9~eZm6[,Vn+b3R"?22H$Vk<4P^*-u&A6<8ccVW{+^hoDCC+_<*)qoyakaXhBӴ>(mzBp8>6u{AdؾuiKsMj399W~XtIYʒbG뗯Zm,zh{soR²2p$x۞7;ʽb1vZײlify8P'&&:::֭KOrWKvZ~z  ϠnIO. ۈ{rK+ʲl%I
+BкG!,˕`PFUP}u,fcMox\y?(hĩ_3by5"Moi,t'o#_mxfэj!}o{Fzb6JD}o~ph8c+5t-MqM%䌍?<r#
+!/+_[d{Jյ}2.\XrYTU=[$k?\ÇzwOF~ye~~DqqgΜmmm/f B3 ˈ{r+v4MYl8b4^힜pE)rY[7-L6,=^k1eYRUM%EXXѸrmSek4MsuKJEv=B>a0h"SB>8t϶KZ$Gn>hmSo~ٙ;zfu~^b.~{}''N%dIQp8Ǔ-Z^ruO?QG}444oD6ݷ7o^xqhhv۶m7o$ <=@ sqOnEQժ"b1IU(yh4(J4$Z_՛͆,K}ght449ްKIzkVW_mHa]xMLF:/h8O[ImoI};}iM"[[dO&,zz$ƪۖVUA>uRx8K'&"Zn7Vm-/smzyǲMy<6>OQȑ#k֬yqXz<__xuֵ.[rqn  OD}YBKUm6>$I9۰ȑ<(,E"FYO,KUE{~nEb2"CTUU,lbǢm[o-*&(-qض̽|Y}}}H<9s<XE|kVWX^jeEBOЊW6]<uP(tZ~m6sScD)Mӊ}ｲHݻ	J,p955^nV,/_k=[(RoF{-YW^yj5aJQ=o8q֭[5557onkk[j  G 4➜r$1$	rC4u8dh>u}艉h4i/~A6W,/ꂔ|>u[6n*VUW7ojTX'1!//]]]MMM:>æ5m9|ӧ.\q+Vx^9H  ܲl6p8NUUC(E<]I$
+@bFM
+i7qY>zE/eeS\C>{zm۶  G{$\5@ni(nWU5if2$I2'yS-	Qeefјx&b~G_uCCÛoa~
+ݟLL\ph4^zEEEF#q 3ߦ=  A=%IRQQ>hl6x<H$dY󰩪ʲf+))ѳ`0p=3xiSg/_z?SSop0p**b'N~h\vׯ__UUE EV Gܓ0MeyttTUUɤeYQ{˗p~OlH$$Ih4>]ęyGϟ?oZ7o18,=eĹs_a֭+Vx<d= ܡ' q\W0Hvb65M$I&'%ɲKx\F&d~Y4W<<,7nR1<,>l~,_|YիWoٲu M 0к'ׁޚ`0LX,f"s%`ZM&S(PEhw5ם{ȑ#ر';v<l=\Tt:}Skjjn\SSp88; 3 \`0!l6[4evG">zk~ˑtZ`0C"x 	۽ſեO>dlllWohwɓ'M>\6m7  9
+:sGgRv!EQѨ(՚\BHh'Z	O54a)o:u*xi|\%%O>?D"[nmkk[|l  r#] e=9._1X,Ů($IC#p''_o8qbbbbӦMoƖx<?YpܱXΟ?900PYYq͛7/^fqn  yUR 0pX,I]F"Iv)Nf~||<L&!k3+{><44$GGDqqyƍsnڴi۶mvs :s-99L$$ɏF1XLRUyDBߍP(D4MÊb4gNÇjjjpq^{.]R[[t:v #3 s{r.Hnl4MT%I0[wͲݣ>cccj5	Y&݁|M]]+y#˪k'O|AqqqKKΝ;׬YSZZ*
+ ȗ\t=M&S,X,x_UUөzJw.b@B#9M@6ђ/r?~Z_h7l֯x`O>9w\"hjjjmm]reII	p IUUm hݓ[z֣O599(ZcccbÅb*ө$dZ-iNA1x)O?.//ҥAHx˲f;wɓo߶l;vXvmuuu(  yQeP 0)4M4EQbXqqŋ^o"ey%{wcn>AB$8S@	Iב#W_}uϚ5<4lmێMN^ptΝvZzuII	Y Vt) hݓ[z;YKKK^oooo4pXyYCx8$Mq!d!!Sg;}dя~᜷BȲ'O~i;wljj5 <Z. `.j!BlN$7$tjK)t)OLLx<In|f[hfNAJ{rڗhJ@:/I}0uJ[rMӮ|ꪦ+LDrɩ624z3J5'_a{ҧO&џLitfgz&syebbƍ~ٳg'&&vחj\Srܹׯbe˖577755-\ Ѻ {^_A944$˲>)ޱKUձ<TLNN8qAQ꣉9yyl!"3m屉FfڵQc*ϴK:-i#d3-3qbltF?SD(CEeҎ:F~{ڵh4뿮ǧU'KJNL'|ҥK[[[ׯ_dķ+ r) ˈ{rKH$k]}Mӂ`.S8\@GG<88p8z}zxvǞ3J;uڬ.hWɰ˙܄jM@9S?zD;111::j4O"?zƸsh<}ԕ+W`MM͆f3_ PL sqOId$ixxx`` !4)T5XQʕuֹnY6HkesOlғiey=?SgPfq6mܓ9ݘz2Eo2ɰ3-\lgXC=^L'Nh$Ν;ccc/}|R>ْcʕ+nںj*ŗ* J
+ 4M3Lz^IFGGjXL.T?qqÆ,"iCBKl]o', ːe=ٯmڸg䱑+m'3ۤuڮv#)d3clE!M3KRe0hO!>__pgҥmmm۶m+**K =!P @brTUfUUU)SaiOSϮ7ճ*}VZ3AϤPھO>1R4BYNqxsFGG-ZyM6XB[/U 0P 0g
+NGh.++D"G")s'+0OyzB$>={ŋkkk[[[/_xm   `#9}+ө@(J$H$C5j'}-Y&SuӧO߿^ 0wd?( y^dPvi[,bB( Ֆ-={j^zӦMF#<   'CܓsfYQ}h4ǅF#]fx<gϞ=uԭ[dY^t***l 9,BM_iE$j6ğbcTg>wĉ7oL-[[>\ Yt9'EX,Dp`0(F1iVey<'Ox$I۶mknnZ `u t9ѨZX,[,D$IEx_X&KJBgϞyf$Yd/ֶd=  s$I$> 09(\4bhM&DB1ب1+~-X,^ySYϯ]H$VZ\SSr(" ܯR 05$I,'R/r<bPHF)""!/8s̵k7o޼aÆ:I	 K-B {AA,Z,˲j F.K_xy8}ٳg,Xvڍ7.] 4'E1LFFV5f3E8bEE/?KKK[ZZ֯_l2mR < et9 ˲ a}dqIU,U'ˉvcN>ZZZ-[VRRB 0/Ш Exj&	hX@`||\Xd=@3c>߹:;?SRRaÆ-[444  r ˈ{rNUUŒH$Vf$)b1? v_pٳgv{KKW^`J $Iܫ 0hH-̕s,C5{<(X,6M4EQ$U`~.`er]|p]v׮]k׮-//7L `>^5Q EQݻw:0.qO>CKۥL1(TڵgϞ|rOOj]lYkkڵk o= p8?CKKˏ~[WqO>~Afv\x\UUMB h:;;/^e0֬YT^^N   d(++;qĭ[\xŊ<qOIcZx0fyrrR_@ux\ȲBe!H_OOY8˓ȘDgz<Jig+f^ؓn72Yfm=y2y,x&%S(%,'!{Ν;wq=yW}>f 0sjF. lnkk4wg}_ڵkw~WKJJ{0{&)D"qm0TUjJ(J'3s_%'jy;u+/x5?ѮTcȰũe>kLM=iF'+[rJH@|ﴙ35Y$)S$˒i2oI$ټ$ynܸqԩ/rttt[l+ 0\l* 0H^{˗Go>[nݼy7lhh(۱=yzb2́@`pp&`0(e]N{h82o=<ⱑMϢ 339F6DM'd\gUhQbqj2fs${kׂ5k~kUUU|% `0(P0?i G?ߣRUu͞_ɻeǩ䪒5ild:$o!m?ˤ<dYN+iLL
+Vݩ"MsvjYVUUYS7ñL[J=O{N=if4>q#u=L}[N>I= ǩNlԂ/3YK,d~?O-a>`]{uu믿t:^Gmkk~VSSOD܃lb1x"
+;wnUwg\6@$wyjN3,~<-D<{^o]6q̬#i~I&&&&&&$Iw` PBD?BYTU-B`!?%W_,ewMH*}K0diMô?%_ywL݁.t`걤OkPI]Ur%iɵL럚tua<'"CafiHYH{/D2L>3g?<M.+SI<rʕk׮uq?00-Zd0ۻݗW3SlC9xs4r˲$s@ H$NgEEx @aHv
+zte)}?a\,ArӶPHK.O90m,5?
+f\8-(ID]Z9I]:}Hhgڢv&%%ѦszJ/)fndӶn0Hz||`򍗶^z҅GL0Sӳ?%?߱3B$[KMکi^z$nwf8)55R[{Iڦ$Ii+Ok͔֌h["Rx<\rŊo9d?nЛ6E+P&#Koe/0SkY	zЯ*qZ<g~x
+YCDv1e9z>d555;vhmmu:| 
+C'/G"q
+/={(STbPiaHZL҂)XkNחВ뻚̇n~lLqS{>Xl|||```hhHFiҥk֬)s%Fσx<ӣ(if}%L0>n6Ynz4+y1<L~(|dOtrg=,Nk<gYɗL&f0fzL ($CCC6Me
+]MRCKW8w35ɰ?bh8iԕ]劙ےLHul
+S,Lia\-۩HqVۦv,HV6a֜8ݍ,xs&_8IjMt'3]es8g걗E"o̙3'O{iVjkk۱cGKK.q{!LNNql:OfWY}E̵\td{'l6vŢ   "Hww'9
+֭[}o׮]+Vp8vqGܓkb1!YN/gg~$bj0t#<mϽIel6    sħ~;\x1mݺ_ollt8Y{g잜3t     4w޹pBEEŶmvܹn:;S@     PFFFN:uUV[`&\	q    cOo!4MFZ,zt=    0/fv==    0ﵷS t=    0ﵷu@L          (p$I____/=qر5٩3m[~펎~;lرc|>o߾}~;vlϞ=%%I߿={ttt<xw
+    +_]&?ݻ7dsssﾛ?%'WxѴm>ӇJnIЁz!zdԗ\tIPh    /^tbz{{^tҥKzpfzkK.޽{ږ5ri=*Lms!}wGGGtСCkNsݼOP    E$	!Ronn32Y{wwwb>OP[H}};w^owwwj!y!ѣGhm>{c=z􉶞\g~'x뭷GգG6JjiiLۨ{5Z    wΝcn9{Mz;Ik޽zG9~_|>irI쨕<NUoִYx~'dcfG!a"v    ݛ)-B5I$^7mt人N}bSGzz2ݻ:'Mz_0KO.    ҕcr͝ɸG    ^hɁod̯ݻw߾}zNO=P`{    {lLLgjm=ɄH:Ѡ:=Px    ^DOiI&SÝ1wR-Ӟr8ds!}`@    Q{{fST'-	:xgj[^ssN<xP9ñ!=hڃC    /(}bѡ'2HA99WzrC%8:=I9vؾ}ܹsΝanO$9о} ;vl	ݻ=y3    ꭷ1}|}inn>p@b{sδ)/~gYn477zo|~;W`=4AAbf    ,ۧL;"vޝXޞ6޽{Rkoo߻wK[tM]]tvvͷgݻw';=bk#AA4M     $!ѣGD;x`]]]ww7\    >`N..    fN.6    ܹS__grTi     fI'm9;vn޽	P      {      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=                      B     PP{      
+
+q     @A!     ((=       N!d    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf ns-3.21/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf
--- ns-3.20/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,372 @@
+%PDF-1.3 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 550.8 248.04]
+/CropBox [0 0 550.8 248.04]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+550.8 0 0 248.04 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+36
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1530
+/Height 689
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 9 0 R
+>>
+stream
+x	|eq\Eq]DPY%UD, @@n@9JSnz@S4{,U淂+B
+NCg6iC~=/^d$4_                                                                                                                                                                                                                                                                                                                                    (Waa#GmۖE      hܹ?ܼy
+     nݺ5iҤ
+y&     PC۷T{e0f35     P\zuz|iӦ5
+Φr      jؗ^zaÆx77nܽ{b     0?c߾}իףGxyy;[n>9s222%     "==}ܹM4ܹҥK|I//7jwϞ=EEET     ߺukvrիmOzzz>}4nx֬Y     KMM2dHƍ&,ǋm{.]ִiN:%&&      \Y\\܋/cǎD1	
+
+*((8~>rʜR     +KKKعsgffp3!!Aɵt;vo߾=5     ʊfsiW```aa멩R     @bNN      D(ͤ=      n@L{q{     MD     PYE      h=      .N)^_ݥ\=      @L{Cv/sN.      +bڣhԶ     T:ud>     RjL&[rB.Ky0n     KSjŶ=     p*ʯŸ=      D\      nq{      \htdE      Wc4jYmܗ=      .h4J3r;srѶ     (J1^m#Q(eΜ\      .Ez	mq_'&&Ҷ     uԩSG.K7mq     p)uԑdM۴Gݱm'i     +hd2y{{Q     \4JJ2Li,F=X!     p)R,/eI{      \dS.aGif      Wc0jB+%,7#     pNӝ;'     Kp)
+FSGJ{I{      9{*0nl.OJe4    /GZm9-Wb1
+
+
+"NU*    4h4
+Rm{ J%bC     *6Qen(̀G˴cL&f     J Neroooj    PߕbLfٰGuE9 ']b#,z1     %l59?*+dfĴǒRZ     vXvy{{
+,'bڣP(t~    pGRLVG(̀Sَ    }VϷnK\3     @~jdf??4Fi    Pb#+>OBBBÆI{ ')/Ki4*
+    ``~]Z>j-6lEO.Id21L&xK    @$h4
+"i8J3m{{Bӑ     c0jz]q{W˓Q}     Vt:U#xzz wBS    `jNΜ\Vr'    6RSG"`fnte,Ÿ=     F~6VԶġ%T    8	G&	J%     p5v.a|aN.      b2d2T*Ri+]jCTA
+   @R?jUѨP({u:]Ӷ
+_rw
+i    r\z@GTy8'iP5=     gG蹼\bj i    ?6sm\T$    8f0;P    X=c2ɹCO.jH{     Vi]z^]X.swf`    pR\.+%ɤ5)'P==     g0L4e39{	m{!    8`P~P(Mh UC    p5    j9    L&JeoY UC    p`9DTPRCO.
+H{     !M.ͷ.>mCTi    RkRYi=*     TZ~y{{^.WhTi    TGRYbJMJ{hTi    ĴǲϪ=Ti    H{ A    >12!Abb" UF    >Ǧ=Ҹ=AAA=@e     O׫+Oث̣ǋ=    zrU@    p5RO.WhT*5'H{     FJ{XFQV+J?NW5	Gh4FA    p5bAG1L*ΈU8R)Cb"    jhX&[LTd2Rh4Rj^=NX=     WS
+BRFL&[ʹ`0XfP=D    p5d2J2Ԟ1(JgiNOLۙǁH{     FL{i'^O\P&ٌ\.TP(>VAjߓKWJX q,    BSR_I&Q{LV+`3"1&́sr8i    ǋi{rY=r*ԍ	+;¿z^\)Me,    IHHhذQGXba".b+\.XmIH{     "sri%Bm+)P==.    j*ޓKP#2zݸJIw,    ILL¸=Uq{	i#    "
+sr!G=.    jH{He9rE H=.    jq{j**5d2i4fG&qA=     W#3nj5YRy{{KO3C=.    j*h4z`gvT*Ngh4Jd6V(¾aKa/a4Ds	i#    h4X2L
+L[[CMUBH{     "4GS^jBgARYf8"$}$Q*Ʋ#Κ
+vڎ(i    ՈiWzrv#    jSBڃڍ    j߶t.ji    TmP     \Mbbb @    p)OH/)	)P(/=     W |0hI_
+    6im{(     iBC    p)=.]LO.
+    P1nB    p9(    {zrP(=     7 a
+    6i4S(=     \
+i    zrQ(=     7K{B!    i
+    Ķ=C     m{(    ;"PH{     n@lÜ\
+i    =0'B    p'C     /mB    pqqq=
+i    m0'B    p'PH{     D)    ۤ=P(=     7 "PH{     n@B!    xbzrQ(=     GO.
+    6hC     2	\ԇB!    GCO.
+    fim{(    ۤ=PH{     ÃQ)    ;P(=     7@O.
+    i=(     iBC    p)=^^P(=     
+    RE     	m{(    ;mB    pE}H{(    {=P(=     wJ{E     )mB    p=
+i    3P(=     7K{E     ܀4;m{(Ҟl6S    PfCO.
+f)**JKKKMMϧB    @"mBSdggGDDCٺukzzlZ    B!v۸qv͝;ͥf     11Q)Ҟl6gffرcذarI&}z*   KJJb
+OMM]zuΝիK/͞=~u   ڽ{^#uص}lΏJ܎q7B®Br^}-7<Ɩ7=	H*Z>-gXR:2ln[gmY=վ[byx|{V/ꀶ/:<+b}[
+E|>
+8ue	Vk,FriKqw^˕c! \oY{J7q ]Zc2.-OKt֭=zhذmN:h4!   o !-%˛6m*+V
+ҽii3MKYe,.Or/3NzOPZ3<?C)#G9   ٷoL&իGyDX/.J]Ҳ-iKͤ#Xz,Mq/#[V/oۇKzP;[j3TnՖX=w;h[ҾeRrKZ:IGz{j29zۚ^}ѥgmz"V'`ֵ<1۷[C}mk-geYju-ZFgU澶^2ڳ"qwxO07n9   ٿ?Ot?Ai0p@aYr{iYWL\P(, vd@VZ)iK۽,%lȖubUK₴,m .H#CjiN!MdY	/q-_kyI
+o[ ՗6k[^һEL:1˚<xbVo<q//ml[oVpb[CVX-+ˬ7;OMZiu1Ze>5ۓ
+Y^VҎm
+oFͅO3RZںuk^^    jǏƟի.\8[gΜ˧O,ٮ!*x>sI;G"-Ϥ.)YG꘶s,6((enc{2'/=qwՋXfWg[VEjNtQX=#˫Ro2_)}Ky;UZoy&Vnڹ_S/y~]vT:<4֭ۧ~wެ,<     @{񰰰>}4jG޽{pp`y&     P\~}ǎM6mܸ9si     PTg}SNfڳgOFFFqq1     Peddl߾}ʕ̴     Pܜr                                            Laa#GmۖE      hFqСٿ?     Psݺu+((A?c=lٲ7oR-      5?о}OS{e0f35     P\zu\.oԨQpppvv6     PƾK6_oѸqݻ'%%SE      5l[^=zT*ݺu{G̙A-     smҤIΝ|I//Fٳ     p}[nm׮\._zmĴgɒ%O>75kVzz:u     RSSҸqaÆ				O>ҥK6mکSĢR     +{}}}wؑ/YtiAA}ٕ+W攢      \YZZZDDΝ;333bTXXc۷疢      \YQQQvvv^^lnZ*,,\~=555##\     AĴ+00PL{JJhf      j"      w"l      ^SJWmw1      .>     -1h4UvN.      C*N:2ji     KQ2Ll#
+,#"     p~~~u*@V;sr     JW           p'     FN?&Dm=      \hrLf1)s_     p)FQ̴G.WdN.zr     R)&<`m{5
+     Q4m#+sw      :urm#nS^C      RNL&ݴM{t:m{      j
+qf)ޱJ{L&wEaN.      W ҬRL&e#,Q>Vi     :;"qY^rey3n     1L~~~u!%lP޾bOOO      b0jB+%,7bf      b04ݹ#      "R(
+i     K8J3      ѨV-TG     FFQ(}     L&mVXJ{I{      \NS*wL{     eIzd2e\EL{H{J2	    D@Vs!s`0ٗ=0L/|𯬔O     %V?}Fi܆T*^j    jIL&x#m6ҞҎ]'5    5U.ےaN.M{r75    58~~~i#dfaA׋<-    @#>rm{<<<tbcI@Z    =Je2dfmiBЕbu    p'¯<F#c#LO.    PZm;'^/s)af#    mUdQBBBÆI{ 7@    jN߰aC///zr5]yi^>(    pqRSG"L98 6d     eF}Wo=gi 8<lȑ#+U$=^y >
+Bl#Jey3KĶ==fT )^:sL-J(5[",R)Frql1︋<q_b8e.[mluE'ouVe>;+.,"ժr׋WEiFx{}  +v.a|W>srQ |PP Ν;קO.]D'ܐl_Bq"ڶm;t~f+ d2d2)STJ2VضÃQ7Vr  VAAN{Wr$9z\˖-?| @RkΪNP#XjC+)K1n ˗/Ϙ1gYiFdЬY34.
+ \.6G~O{+Ѩ@ (((8tP;twyB^5m۶999\# PMwgubN.  L!g=㧨bSry(uJN><~8 ΰ<wFjC~wP T.\6gIVBblHB\c?,3ìp*[b8{ÆYYY\8 PkҶp+=Li 8IQQ^oӦMV:oؔ<mrߴhQ,,wJwdIg}?g7lJ+<ځ脓bR
+g?O5hw]\\u 8nOyL&qr6"H{H{ 233׬YӲeKՂe)ENwʕ+׮]RJX]\ \[5v2e{',|@_aU.؞3Z"ݴ~s,Pׯ:uj&MF琗;PZjaÆk׮qA@Vi]z^]X.swmi@C "YuرC>cmopL[K)9>bx77kN*N47]ِsU])`\ӫg'[?ٓH1uAy;+)5wygi)yyN>8|pAA߮R\ R;"\WJ&I+kSbѓ9  |^ӿm5ʹ1pDYO*Vs\>FX\;kW*ak~^߻?,Ϗ.[]p3la	=C^;'
+ŜQe7yWroN)6g+ag >4e39{	3==  W\jԨьO8QGy%:huT/"ϱw3ĸMfRWe\;߫6~,+^8f+| pyhީ2=b|Iۯ_q>Ѧ8^T	\捻8 ZB!4'@C Uvo~㮣Μi+&`Ҵ9K/=q,5ݏ/1sZQ3VxpиKkN<=`o!kgBwK׏UM7?ږ8oSܮ>>>_~#%[RUL (3== P5Zu={49/ٜRݟtEP2ӵŹQ*ɻ'kxʻGRM]v^8xOz})4갵
+s͘t}0K>dmRCD'l֬Y =H{H{ 222̙/:u-mM3{RAN=O-zl>VAI[1GX%_5s1[YaV~5dŲq|=3֦=%"6&SNڽi %%K5kvJ p&IRY*o֭
+=H{H{ իe˖Q'4I%ypUmtȢ+4ody`˷smN{bK/ɽ4oذѽrndLڕ5a!b&_5ibrLxFԢE޽{8p@xr@f0,ܒh4*=2i@C vܼy3::u*'8d];%*؉Ӷ'*N݅]^޼iJ~v]:[mLavę3-ҽ{Aw5煥_
+Y0o譬GZu%䩧#|[;O̡O.iѢŊ+ j4iuiu)l == P|ɱcoSN[;^wwމ[cK#\0NICʯ١BX{+b|ܹ}~qn 7N]~ܪ^xG*>}@{0!-[~ݻWxr@c0lVZ(JMˋq{  
+{ѥKo/V6dsuGh9?ҕ3S-4uSד-9u|6s}޺zӴ>&zZNVBE; ,漍v5$v6{):h*EW\*EVȼ\/+u4mi@C %y~+V4ivl'J)^;&uЌ3kD@>_v%zƺqʾ]X}ʽ2㓁'-s1煭Z1[ɼΙ5Ƕ\}ｿ:!#|ZnݵkݻwБ|̥8P;Je^׋m~Г !P	O>=a-ZjĦ]vuhkP4wc{'/nQ߻
+rGY7.פg6v_ϯԩskvk땯84I=OV\ Pn\I{  O֭[?csL[ڤkY:ϱ7hܩ1}3	Ϯʽ.a	<򈧗7Cٖi:wgrH#$]G۵k׹ss@L{<<< m-[ֲeˏg-M<Q?o^Ӻ/>sAqnzƚ-9W~57M(%Ϲs#];VuICo-ZXt)| F=Uf:T\ iil6=zO>͛7_eFv/5[W3uqnί^'&Mx]ۗzq9>JaYW
+nT\Ў1_~]r@do~СCǎs-> V=H{H{ ;w0`vB$%6gɦ6Jmr?^ּs]bBmϟekrIh%%oҰVZ? pAz^]y^vH{H{ K.}/TU@lJBP~uW/kK5!HڷxDƽ㭮T$>LnH6Gşڵ_M# po= ii vȑСzAA'<↏~Pdѭu'	xLV^>!kƑ8Ob^{mEbL5 oo/  *11q{  ƍ/rϞ=.;VJQt⩍'9ZJ^1[>oP\0o4;!|OoǮ;pwΝwO  pKҸ=AAA|=T5l6͜9X鐉+ڔ[kbVnYZif9afhgN,5+22cڰ'1[n»zsJa߽U_xy O||ؓQ 5ZAA}|}};tq$g<7T-V/KgTADε|fq6ljŘ:}b-Ëj<խ[v%&&1 Г !PCݸq#<<Yf?49V>M9N9o+i~
+.9}Wb:l7'21~mǎ,ސWǦ**-- pRO.@R\\:x6m![mszf+Gǌdш}Kg˦S3NlO:tP~;2Oի_|t] Ni=\FSTvր@q۷v5*&y9OT뗮-΍"g-'-oܸѢYW׎SŸ}EG.̡r;ĵ:uޟiR070W^?~' 7H{<<<hXFQV+J?NW	;
+?Å#Ycjd22 Yf˗W\?ũ6$$Nx_+֭[wsB~i?T[p
+C8\8qT޽7>O={u  5=mL&JU|w9t24r`"!P#秤>\%xiP޸)>8p{n݈-_G`l=~q1rrt>.p;oût2{᪘49T񬅍56mZjjjQQA @C-)2LTj4})ZwqKBX!-|H{H{ w_|ۣGo/Ft̛w9y~dΏ$FPc{쑙>O<>1ؾ-~Zɺ޺Nc^oV׮]k׮Y 54'CHABp`R`0F˕hxH{H{ Ϟ=kʌkgN1aBL=nAJ~vGlx԰g6;<p}EouZݵkyKêGbSP~ѣG:u% qiw=P(**:e#P*8ruSGCݻ۷_Ub'δtmĨqՋw'6iPn^[÷\Im_מ{nĿܤvqOT_#3o/իSNQQQyyy|Fۤ=&IT*CǑj#ԤF]VG|MI{H{H{ :7KN9fCΝ)ȉ!"z+a;17C.:q3߿_Tѽi_]`Y!PeR<~8= ǋi\b2 M뫓3+Z*ie\.-{{{;5h4=== \ǩSNڢEŦ9Ӗ6%gݗan^ӖGT\:/B;KOߴa7;>il^.F'W֭oLLLFF\ 6lhfcL&lAŻ	+;¿z^\T*ms=rg p={ٳ]v_ט<4T(hї_݊&
+pT9o oK])r➄y]x,jYL17*8{Ѫؔ<LוRYf}ٳgg,XnJwvmAmuʞF7-7.9ٕYv*؞mDz	ϟ7Us9l\nRS]t:m#뤴y *@4n駟ްaúN촵˃?=oOGieW3&Og+	\?~SG:s1Z6*uꫯ۷Tdyɒ%5l_t<3˖7^ڦ\_?B=ST)SOбgk{
+֕yZ[֭[Wx<AAA|wYzr	z^l|bji8!mn&JǁiwI{H{ Cv[lH2;)ٔ\<f̘$ӖSꕣ>/.K]5~^Lݢq9ubsӦM?AmL6.|F{Mt'S(Exo[o~iZZ_]XmBP%J娴Gx)9]v6m_ڤkNj~$fk׮Ǝb-Ǘys?Xrtsά·I햫OػC9Yҽ*E˂Ukٲes)	W69{А4\D98A>Q^P<k֬t`6k×]yp5%\Rb?xԹ=bk"f pYYY;vرc6lذ1Y{S_Ñ%H &Uf]:uۤf\^ukr6uuO銶{u9z\lJn5{oE'lݺ:44!ew,˃.\ "i}UKO])8rH#P(xH{H{ Yflr̘1ڔMŵeyoo޽{eo!p`62oP?ՌϚ_á3۴y!~\*ꮗ7_ژI)Xf#<"M{2p:e!ͤIӧ={oCq{H{Oe9rEH=R#|2\ii qm۶k5٘\줴gsJ'|+$XϬ,%}{g<_Nlr#w߯˚UJ*n[L[OռvMB_X8QAݻG3_8qɓ'8Զ"4S]d*>د"%W3h4D=== \SZZ۴i3j(wҞuJbvСirĊ7:vaáE#w~};mrEC<<<&|ԯ0{tr%%W͆͛kO#8!A
+=jj1Je3CI{IH{H{ |N'|uU$'3rW^y?lyʿ߿[ANgv>)ۜ2b]:_ߠA{,TÞoJ.X裏֭[wĈh6&8cu1G5˖<Sz:v_CT'j5)7J%T8ӖFSYC
+BW^KX/\G84eīFC޺p5j4amNkޣOرro8l}9B}[0L\N޿@SigVSWN-y[T3ǋC(~[u:ٻwohO?Put*9.YܦM^z1PMѨI{,L&Bagҡ&N#]iUںuoݾ}͛7op\S
+̘ߺuÇ"K5D//7dkW7wEC?^",_8~?7r^mn7?eKJ^uO/߭[D2gTwbSc+#׮]|KI{cCSfjBgARYf8R:$(JFcJKFXigӰUTTt̙3g6mtNJ{n>x{{_9YZRjs~Xࢡ{͜~~v>vt*y{9Ο]Nu9%L_裏
+ϯzbSn}2wɃ>XnѣG;uw}W_۷|0Uc:;.ѰaÄϽJU?]^BXާO_}С;DDgk:ujׯ_Zc ֭[}Y=wa3';vlͿO֔#.N)9ΝZe^ayvԩu齷&LOSΝӫ;~nݺM4Y.x;B6miâKc9qPΟ]KZ7H]z.5vU^/[pX3uйgRcxh&N|6T4*6+]*_b^"D2u[C;FEEݼyKim{  ɓ'O.QɹD'j׮{Gj{pr.iWRE+VZ	_㧨S{k?p7|sѧOgOSNW^˖-/\ۇϺv%tc=4>VXP_|5,'+ 'TXN;.
+~z{
+8qB^!1?9+ٜ>bgh߾}_|~AfYim{  gk׶m־}{oo퇝7zOLJѣ[h|`=T~qո}.9i{:*rJﭼ~G4ižLc~dˡg-|G<<<JfCDi?{u7ndnvmz
+nX6OϮfǕW~6vyS+,^k3?;vk}{ںҐYz;2E&z|SE~>`v|u%&&V3))H{ Μ93gΜmێ1B|#Ӛ$BzP{=l:Fz%AóPEN;fW{ju.%^zx{nyO޴qO_kΏL95}1tc݆&e^^#mO՗|F:Yp_h
+/z/3zYjl+lɉ>E6lK/4ӧO	3  gȈiӦM۶m7:m-)yFz__OJ('-}衇Y9:@TJ踧zJҥKĮ3s,bu|1Q(UΦPs^%͋ib\&=ՎI={߹}I,(ʉ÷G>?ql??fS3]~0`@%9ϙM߭6lXÆ'O|1@[			u TÓO>I r)Shb̘1ռg7G۶m;x[7Iq6
+===߶u5I՝{ki7̴ib6ҥX&|t->Y3yL4alJ(,5iO®IoyN%rVLcgNXq#34frLA~3ֻX;w^^eч#f͚զMQF>|w ۴E}
+shpKT4jԈ %++>{77oj7$ּ'/}ڣak#|Gw]{Ju78ўUVl>i	oРc=wO(SY>3gSW	!k&Ȼ.;s݂y÷~9w%Pu;-]IleIJ*RE(}:3fl3oThB"{IeϘoȫW<9l{~O-N٭ΞhKP11"l%9fe
+3'hN8lH?Fݑ-
+@.PT\!y{{GzՅ?    ЯF7nXfUVG6JϻjccXs)ߥL6m^E-%,,puJ),cJ[Å5j?׸΢-9{:4$ӻʄ!enXirD#{w6T'ݾqœ"4nʈD9ۋmߙggg~˧:?_\\MrK8r]	6~ /GcccffVҌbЗX`&rT777iiyVQ'//)W1\hv"YCC*֮uG]RMM.(Ц	W\d-uCA{-dM{=`olL=n99t`㒷/b߽ܱdAw0N|l3bÙrn``pر&U'< g~{   ŗ/_JJJ֮];ai7{_*zzzYzC_ɓX%G&
+
+Hvɓ'wHu5[6U;6mzuf#wxb7W<[B̽u-&q@0YX[ZZ'+]>~}+U{  OP[[h}=222[RSr\,$sppz+J1zhe%޲eggҪx֑qҤIEAD↪["6mX.͓墭皛[iTAA"$ȱ->>M+->{jk{3nzSo\M[)@.v#!c̙3fHOOt?
+K.P{@P{@  W^uwwnykRyyyssX+bc|2y䔜+ܓ.ƆnEVJGh K#n忪=%hpy3j_eokA5G!.>YHh,N8a^8=z ld{+VĦPbeEGSQQP(=@QXX   QYYʄ=3z{lmmJ/{?
+޵sUDbgǙϟ>in58z]K]Odm)ɱ.*P`Lͭ(C/OݿGQ#YgccϺPٛ:t;;)SbSceX-A!'Mto<	'LPpv+:شd˖:ͫ^P~&Ku={422Be@Kwozʄb5t#FߥB*v>8wܩSC?Cj  oq㆛UJJJ0R{H_P)˗/-^AEATVLi*%rg=j5ݦ)G3#=}>6oc;)(DFz|I>BEx ;;Je>NƎ˻%${oef28 SJBt666mmʷ`S^Yrح2Lx0zŕpxukWdmJLظtI&EYӷeO!#$y|i׼THbȑMHo_env744󹅙 rojj~󃃃=z]-7\  
+*:cƌ9sdddc潧FIIrW)Xه^nt`COhԇ~Oh6m>z4ߩcqiIԡ:kdqN{sSkfL1wa(1rsFrthJXo.|*Yr5jz	;/AJJ
+H1=΄ZKpϢnhk5Tތ+<iO:op~m.Evk^cl4ƚ$Gӧ-CpȄpj	fssiӦAam=  ˗/7o޴E`uC
+6ͲLLL>e}mSMe臝gU<mSM\98lb;Ӑ))"VXT^mp==\zN2ЛcN^.N3QZ3<E^=˜5kdcc^J/j#-CM>=6-Cw*$$Tp>QMfx+g=6݊o|EdEB{ЛB=H"|io62oǿd@s>bc|,YD4&L/..nkk[=  PYYI&tXSS3%%=M+VPTT51&W]h,Ҟ8f'`~~nӖ.W<h죲@FҋFC1ɩ֌a.<{?JƉ"6X!H		qppz5hG $L2B˺߀pQcMRs-n6m6-ף&5wgz#$_{^ܻchQ""vD;7̽Ϥ2+=5hҥ7ncI֭tqq|2=   _ ++UTO*DI-lO_$''gffP=';LO|r³c??7J{=@%
+(spro6_C32y*:y$[x1]!Btς<wރ~ ԛEk¯Y,YB)%΋$M6v6~i~a!jӞ=Uv;JmoEgkL2RI>[h0N͵f\bˤI]]
+ g^h2g;o++SN}`ﱶ   KmW]܈Iz_gB?+m<WP	:%$hcȡszȋ2Q`жULRWIG\8ծxn\%WUtys'jjjJ-,zԩSQn
+
+
+	X
+v[֭F#axfd&ū-T|gUW⭭{1z<bAxdʷ/h/'mkH=v*|CLpC577C/=@ =    hii~<1Fs9Gh,?9պlT;3lc-̕H#&Oy'=	5݆mQgQrEV&GkAݸڛӎI;v,''^J;/Glٲ3DM].z]b]L})+|{;vuY7!wv'Q}pv4<Cڭ9ɤESʱ6HaJJJnb]jj=  x<^SSS]]D"5vŊrrrE7C+{n6+566|-`0`˂m,ܵsݝ\@bR៹Q|C訲9	`ŁHMG뫲988ddd(f-6|]~A6/c%Pʒ2bQcw~iRIk[tڤog/*+ӴSb:-?HlcD>`ggmeeߛz0EEYfeddAwk{`O. 9n8P{    S477KHHX[[gV
+1Yރ&D"QAAM"+,hP\\ͭIJIEL(}/^XϽՌ(Sn\mB%~eo7Z?{i[-z9rTTT妮lz=dȐɓ'_T#=n'7a%bB|kcuZEܿgD.bgglٲIrl(3P^߷C@k{`O.   3	3̙C&Ӌ0YC5$$$
+=)ˡC9O &UKsm{۞oof r1Z+t~ೇAЁly$:E|,TNVn٬
+6HJ&'*Td͠nFm8882bhq8|666}}ʷ`	߽{(K#D~S{D';vi]*e?}ޒz6Yqۘ-rMI@z\\܇`v@Y\@ =  {{{111[[۬:6{R	{W\ٱ9}Z:":b)݅2O3[zZjee<R.Ǐ07UڼQose9Y)9r({D►oDvf_CgA~OH7`gg#$.om	5c{rX5̋v;v)Wڟ|#%˛؛Dt81Vfi+xm}=iffjj,65r;''AGGGFFf۶mϞ=tЀ~ ,@  ͹fΜzF͹---`>11%u M-u	ɩn.̖3}qSEyt޲u󂟷/RWX++)L+/'lR#dp΃Iϥ}7=mu4$,?ᝠk?̰5[磏8!ݺ!++VK+<ԋcs[98$ܤCŅ[$XHJpuqu]a}$
+Z_izoSSȄpuPy$$$ݻn   ZRRbmm-//1qqq[[ہ9W[PϭС0s?sqYYYc6-'Ϛ5k>֯ᣲh?ߕN<y{@[%(ymNNNI?lccv[n:@j  hoou\\4@ͯ/_r*}̲4G]*fӛH_'ƌi&1(!!!\[S_+aNeW[`d̈qzn}z)j>iMMMEEEW^]PPg`    @ߠшZNN>TړVԎԩS/_^	V8 {ju$M\\VqC?GLB"zz<x`		KEa%KtRݗSRdy4O1>>>z5֬Y#""xܹfdmP{  @MMSWW3gNzz:{LMM/}M7PqIÇMϥ	zjrrr
+ڒH)Gjj4ݖnb"!1r\]e668'zݺӯ'1yҥK7lؐ~C͇|뫪lٲÇ755AjС   ?Ν;ggg7i$SSӬj"6{ҋv)0{VWfnTZZrA/וer7n?vF(ԻȄcrrr&[_q	q.6={#x5zHObz.=6ef_reqϦMDEE¾}0,@A  y&&&FMMMWWD"a)=˩s*[]&MB=!;R՜r222(V?aSmRHЪ6~Ht_o,Gl5ք&:KE?D2m-RRhTȴiPY{mhhhook{C@o=  ` ʕ+666򮮮Y5)xiK:&\nHEq!!hRvo_
+mV92d˸Ւ|J^QQ_SE,ׅAkY,_"!Σ M9Se}	;XɪHH==]>^\@ =  ׯ_'$$̘1CII)..=ƒF4xI-KUUu穧?e\RPP@DSobНHnmW||?oŎ))NWϛqۗDVp>h剙qj>72 O>K. ,@  -*D*jsVZK UIݲV;[A;ǌr1c~_3e9-`x$g1q`{Pwd霗OAޒz$yU<y䤿utt"##=z9     ,xY\\Ϛ5D"rnwG_`5%#1=51#-N>CC1;3X2;gTiRzrRnzvKq=F3u]]֪)F]YQ><<<F"V;*k[;..#Fd%`:>'AVV66`oYr1T_Ok)97|Hظ$=Øٳ&Lw*l˅ӜεkPCp}]chhCZ	2~ @Ammb
+4uppȺ\bbb"""&L0:{XYr>CT]9y23>:׊%78,=lScv_^v7U0'N5
+h(I&Qn'c%N0Tr($g^>d諧0ۖ4+=>J]<YOO/2!zB2)ohhϿaÆ[ng FjXr  ޼y&)))/X	>Y>dgY-2q˪s}꿟C]Jɵ[`WE{Vh5W7|BqC|_3}E	ppphkk'H"fffWPPs3<?x5nKӦf.s|6Cڵ%A+߾	0߲e"fO9>FNNйs   0܌ƫWVTTD'$\yբExxx|H)'`d'..NjoLKsD]_.)@st{WWBC+f]pB___r	mO/^g\@   D<x 22RAAa̙=  -S	{ӭDDDh[BAڴi//sŶ@`cMRHJnn5nFs6HKhhssU+
+	43}0Y)+=5H__ۛ\sq&.C/?^^j  `hoooll<}q㜝AOf7l;v,mg͚| r$T2c}DOe+,t6\(6r,`ui'z9ꗰ:kHMMM;;D8͒B?~=pk{@P{@  QyQll~zz:`<r8II;:}뭁ħxLgQw¤:\3jdd'YCnݪl``SUU=>G\@   h<yFTT9 {4qRRR6a|'$$/\5Z4SQQ:=um}U
+ٿSw%CfT%A[b6Rs㌍	)eXӣ\%͞=;99۷~BK.   "Z[[>}.//D`*9tPΟ?nVr
+RUU}h</.3IOYprL!q]&uqhԂ^p!nw<^2vBSLԌe[[ P{@P{@  =ѐfٲeY 5 C.X Çwss`ܕr'9.#QYk֬.>4WWRɣ["j^Ԛ!{`oRF>KZIq_j>ԛDϝ;WMM-<<4@  0p<_ZZZUUuӦMi8r'#yph́wb9H8f"2Gc9֓jt>=ow2{&߯ģ|CCCԱ*++'Pc4[CCgԨQHm`5y0܃&ly5E5vSbSE.~GݽdɒŋǦPa1BsU~[ݻz@ @A  ə<y2) wx
+,igu$=.{A:gRWc?X~=}7zȀO恽D1)2n钙oXI^IY'C',]7t(ݾ\ֶΎrQՋON
+		9rϽ{` A  h߽{[HHhر+Vpssop #!K9sq`9L<wd)~L29Kw2ܹI;_>#9sAS,wB:`۹t0agg<x> ]J8q"*M6al6P7J^gb8ֵgN[,6Rt7*FkZ!5AAAD^|ʝ={鉉] aO.P{  o󔕕EEEAorrr]NW+G9{E2i2B6?<xÇZ*HfffhB׬Y]_+|$?[eע斧GI
+ۼl	Lݻ"vRp/Iڷoٳ̙C<D^'OKKKCC#%%Ǐ0$    ~<x 11QNNNQQ1>>AVy$>d>>>..e˖'`Ms!yՕNpO-	nkJ<,۱c$
+KϢϟ+8k;搐QQQsssr	;>ܹsGЍڃz #P{q@  ӧOq8膆V>Hy؞~//ښwȐ!g98OMDAGX3xz輹3x'FH{3=?螚 (KL8ֵh,Acv<N]OիWal fm=@ =  ~ׯ_*++58 :_35"7ё[GG'@+LNF7Yff puuU_?x82q_iڒ-%%-+ndooFW$>****Μ9sϞ="""TUUgϞ3 W{K.P{  @EMMΝ;Xzhݞbp@tsuuggg5k~_>SMA}:u>{kFkgOO4NBBT{"u&K5'MQGõ:	ޔ)%%eaaA.p7.k~驠t744 A  8TUU_FFFd݇ZuuJ,v2vzI¼yPYa6ܞ/]zU+;:,GQ@Ww<`XT*IYIjnʌ^II)$$zK=sp6l(..nll    >lff&))$/ .+ss'L@|v)7v,QQ˩_[H0flm=Ϲ{#2ƚC\&{5O%y}PUE8hd^khh'bz^~g0 }vP{@P{@  퍍hrJ555kMM 8Y{ۥ%%%#1]@H233Cȹmi0ll!lhn6},=2."ԂdFrVT8q$aYZe&:¥¡	?7PçMfaaAn\D777yyySSO>jXr  uϣ3??Çiy
+}"##Ə-z+$GG!C1bOV[euqSfڇQg뽗;ۍn\7N2B144TRRZvK` ; (,,jϯ8 ۠ԩS222ǳ?䗬$)))661clܸZB"c巙r₺xԔ_Oòp==0f\[3.0GGhFtJ6U@ZdX{;}vvv\Ks8jf\wVQQQWWI a
+)..NRRrx<ӧ0x \@ Xr,˗/O</++kiis `</_^f%K>
+,,,Qz 777H[+A)߁SLؿK#MyT>f	%Fq]o_ȡ˖-#`iY?}\i
+		@HD]vvvEEl=	 Dח8::Ƞqݻ[w) 'u׮=v͟?u-H?gכD???`L+ԛVt~gqslv}=%Gy|y^<m~W'tpp0	ӷx߾}_|˗/0 ڞLinn>|-[_ @AcccII	~N2\dr˾}d-""biiЁ(}203cvg|ewΰ.v{䘥2{2zx-g4lUSAAA^^^<<<}QE/'''z$۸9(,HPPp6Y0?d}7\?3UC>%X:tat={)**fffRaRfLL̳gZ[[a8ǎ/@ =NiooClmmTqҤIƨv ׮]SVV?>Ln{LȄ	;0^4cϐ9UyvNeOεbɍ9q[Tסs{Mwy'rqqꀌۼ>zĿ0442dYډd=T42!]eY}9uTF/'0jKtu^)^S{=}M͸"""/_w274q͚5ӧO;wnvvvMM( ݣ =ZZZⴴ8YJJ׷~	FGGkhh̜93!!W<_SSKssW^u+UE|:D{0PS!=)̿WJOk&?5nva$^r8q"ʕ+N$466\xq<^&G"&O:KVUNs.Uk.++a#~ūw/c[K/fcM)ױuHRUUUׯ__ZZ
+]ĉ臅{*[#]YȥWF :89:˒92sV#39sz``ʨ*Ke10g\kؓ@Y*e0׭s杛8T[83Wkaj;ex{r+Y<;nڐ9wXҏGqȑ|ѣGYBz48@Ku]9ZLqJsCRP
+0אQsFx7_YB̜H?H`4Bvvvhh(nݺǏV _ÇUWTT:|+:x+/zƌaaaTb0<xmE_i'Kss/_9w\ܞ
+O<ygϞ9lmH`,<^h.7U|$ڪuFP322w1S{qKpԁ*((DGG߿E^^gcc1WtHĩSF)2@Fs4zrzF8#%-KdO|!OF3D\i+K.[2_EuN,9|/uSSvc/kҘd;|9,s8,7`#OݦNƁ~}N #%@W`Ԫ3W=劘v.eĉGÃ\\\fffW\u /G{{ӧOf͚5}too_SS^繗訡W.)גּ Y]x>|[[[.555wa\K@3GtZZZϟd~m!UTcR.#p';sbU)=H?CΌΝC]CC={|𡭭=DPAy~LDǝɈȁ%,pWz*朙%E\K*FDfɜ%$g9˵wSbeN3a-K_ K%YJd)}ֺu0;|Rθ˅Tew@t0Gc|2Y"z,ٲe||É]\:keΙtX
+yyy988A@@@mm- 
+h '0k,UUUJ~<|<8D{xxyyyUL=GRR^e~ȑ#fḢO9!@z7eܿKWc]ښoó+sUڍT`` qQnv211QRRrqq9|ss33 
+  `nnnaaz #%s8'sy2g;3珀u.K\UQ"fiiɒ	QF}oܹ222cǎ퀼|vv6t y޿OP,X^̵k>Aeu4OߴiϺ>,σ	&]yyQG[և<#eee-})7cTĕ)_[Hpbnv%K3.];]fh*G [R/(((Qb		AH:::qqqO>mii_QQQqΝǏg{?ӏ3BP΁S1 <z􈑰sV+(5gIC?ŒgkS󽄌ev٤=<;?E,7F^3׶VOZ?NcKrEo=])HtC7Mړg	Knߩ_yFnݺ㣡1v1cƠ~p֭Onooy ͛]v͞=[XXfnn{zz<Շ4wvvu#ManA.?5hР3g^8x<M򼽽"LpD0_qiQYSL)ޒ
+wWhhyi"zZSz8uT4B,6    Ν;8h񂂂> /)''~W^]tP;:OÁhl\rW{s͛7h Tgnjܲe_ĉ̦g,Y.s	qmp͸j?fL6ߟRxʝL111''.444    +jjj:daa1uTaaammm??º:X =O8all,--xᶝ;ehhx!pBOQ}鋨(Jj99tA+:($2pn̸vޭn\pŏ={Y"##޽c]    @}\YYxϘ1c'O	 _+WJII-Y>:OSvvttܹsO:+[7fff!_=xpǎ2227mDengg9tPbF
+z K~i"ˣ_Srv'PIW8qevލF0    
+1c***`u Eצ&N4 o߾y틉A޿y'LCX\GG!C1",,}'11QVVvРAÇwrr8O$'`=lذ𰍰쒵V\9m4___j)q닋؜;w!    g  }]pM^^~ř-{[1y444Tjk_8okƝ9fixo2\}"̤'r\\\óec'N[w"Hjjj\\\|||h~6CNDqrrۣY-z ͸Ro@]Brr26VqQ	UUU/@hh{`       |ΝuM>}ѢE	olT/YYd2АJ~nkGuxWEizg1q\`>?XӴ=󙙙s2dȑ#---SO?fvvK}d2j$Ș7C鵜p9EE%Kٳ0       /--]v3<m
+ >>~/7ChNΝ	nomnw#[hYTMu~~~<<<5߲gρ={̙3hРaÆΤr;9$*xԨQ8Seރ~c,;;;)))___vٺSLA6'Omg       Z[[^ƴrrrjjj;vy˖-SVV		tËOwCύ62X͵,q&|EAW/G<x&0ܸ;44TPPݩ+VTѶs'zP, O"b*'|ڂ͸ӮPAA@ P`eEO _&n۶z卍0,       n
+И9sfLLLy6773gNdddCg_t!ͻ7hm$0dR7].bQ{
+χ<q$s&W/lڰo.k`X[5SƏ廼>zRS䘚
+
+
+vc39.#FJJ
+]&>yHB-[MLLRO0\_wpY99Eeffz
+%       ^ӧh2w!!!hy/:rJmmm__wk1%~wߜ|6X㺸hn4oڻ3$Ys~,LLL<yA.]^˳LR0\M|fx,.?Boߴiװ܍N]o˹s       hiiyIHHIKK{{{kRz=NNN_1uFE82l7W2a[|||Ka>jNs7-|my0Ozz}dE>˳FE+**&$$Po[cߛʚ:uj4}ֆDDǯ)s}Fů/_)]PRR"Hة=KPˣNGzʕTWWC     g#_z=m4OO'D;;;ϝ;ay^<WWyܸO|drlп|ˤ'Y@@`W=o^$o߶zpN?룲WkuC***4HKKС>ڥH,PDG
+`%|ٳQY"""'%5e_/^-u	A{'gvT[mM߲'NM^i܂؁~Qکd͸$$Z
+uONN~XCx??A     
+'##U#>۰a[y`R6;mxOfu&k=LkIU{FE]1>xfoqc$'Uwvۭq0ϱUUU#>/}||&N<y>X-6H?M466Fe	dǀX!;2qw2k,Wgm/O W66V-
+5;;;~Q *6+?ž|r4-#ŚnC'9:-u	pg",[[[YY-[Pciu7);99;wӧO0VǌÃF QQQ`    7o޽PZZy*rs7mڄfʖWrۛO|Bh=dnwC; /ϘN6lXNݽ=yBx7Kgǌq0{+
+,{T.K#lz\Ό3- }Շ
+P`(d%Czj{?Ş>BeX~..A:)*7eyLgNzɇoyi<)sj{BMɓFƍ8t('"7#xO0W>λqQ(khhbMDTVVF۷oÈC())QSSϿ`Rx     ݻy扉YZZiݵu4WES]]][[ۢC-Du5i^^e;:ğիgIrb|òO⯗X޻qn*Z3'æNxE6ԗhV<yͽPrnGS)S!\??I&Wݸe#bN<ܜ/<lcs?vW
+a:}]A)IWi&ĚE]EM\i<]ѣֺ<QnQHxOߴeKhuta@jt׀^yQ%\fyuu֖G__aLf\u7o066N9Ќ^r1(QO͛6 zJ___~~~^i񑑑uuu8     @#ƚ]v-^XLL>:OaaagF50ޭNNι޿I8q\liDk>-xә׶B)O<͑gP!jhfRH($4SS_EО0rG>,[d	,O0!&&ԏmFE1>l2("ΎM%:?z+!tataDz8àxޜڐXSY7*<=z4*J`FAt"F^JT`mϝZ[)s}PxH<kקY+Wܼy3C3.RJJܹsQYGE6^ =GSSSffEnaa!(     :rȊ+$$$ٜ/YY}DDD̜9sѢET*KSA/opsh Z\I`r2n\o__ FFZRQ;م^S{nstlllЦl͵x7녿a5E)}Z5G TTThO&&xe"*M%뫲ޜTtΛM^N	Ϧ̃}|=YhPUEiP|	(\]mrI񦞻nmHlr9ɣ34̎[ /5޽[GGGKKQoaZB
+@ﲆFhh>@~ucccnnn}}ѣG:	=~~~>|V    wBee'lmmedd.\I33!XiNJJB4P(wamhKV+)qyb?jӳngӜdii5&TbJ/ww^\]>2UiޞQ&CHa"cwvvvhWϗh~~~I9;"[ZWUf!{bMƏ@<rPtsNۚo2Қ1Ed#x畕6;*%Ib!,~ѧj'},, ,:RnwZ`A~~>VƒSN9;;O6pϞ=^1稨زeˤIBCCǍ9~xmm'O~
+     UUUyyy+VC~=H$4~Նhtd]o3nOu>K&ݸmP6qDUiGrnCi\ӝ ^)@	;m;z&Ft`?QsX=L*sss6ӳ!'^t2H̔r?zhTq_.Agdq7K}.;Ύ3yP>Ŧ֙%6yPNek~!u謁tT.cϕt#'F5~):bi=.kbbb6l _"`&+<gTѣG.hiiVUU2eJ\\܁jOHHHii͛+**     @C4D<qℋ4jii<:O]t3gΌj~lllKhR;6DSo
+	=Ȣ:qƨ3x$TU$wo߾9yG7tI丨6"l d =Ꞟhɹryy}篿Bo777.nw<fMbhLAϟYo|[4&uiG`k~?W۶9#4; m(RDi"" H#%HbŮ;vEw y(0gr{?sf&;Suݩm@e3vj*|@%+SLlq&	_-zbM'dY{tIllݺӜ?ո.j蘘GCU+4&9BBB...<@r tӦMC611A'N?&LS[[%''wɎ    `؁W\ٽ{)::22T32F˗	]؝}E =uܵ[)7)GZ-i~4i¢ENz$`g'埙\,X	'JLP}xOgffJSkm<p̙3S(s>'gݺuqBテ`4: oF;qZ#kSh_lq/55V-fWFJ\}{UCj*|WfA]F+o-cǎaffmTYy%LLLT1g3c{(I<<<.>z2*tȪqF#Z@@@CC#++b0L&._<//HPPPSb    0+**@)$urVOOjH+,4iҹt>	Y$*ןWrpqsTUbY|#B^Ny۶mȁ
+	h{*)[Yx@sgɪ9\k4l2|9o{}(/&YYYǍ'##CLH~~K܎j96RӛfϚ>DSZg)箣-Lyt:"c0O>^&qhGavآYTxq^RSb7pϤ˸wk辋ΝⲳK>ոna455â 0</_`0UUUɓ'jo{{;B322ͥ -    Â梢"			OOwȯ %))Sk+,AzJ͟G?ՋAnm~*iooonn(lMt}_5nɮ.ڛ"幡mA3ub!II6l0ujw?]!\BBB]GGZ>PE{J}'L)r1,v >8:0* 0FhF#	jѼ''l5Z9a@]Z&NJ*ffIX|MOW*FZFJ5.\rr2sedd=p3FuuuE*z8p޽{---0OGGGCCPEB\	~h1    ikk+**Br~~CugaxO8\Q~}޾&w{2iD67nܓ=N:m ?](}lxZzTUU
+5zwDN
+5DƍT؋y311{ӃP"SK{4d'{$;vlɒ%[l5b877!O|1v
+u%<H	Ax>sFxФHK-<}|^YnWc0O6y2	ci6qIX[sb{eͻ4+hG-M{c޸OѺB{=\W㰱5S>c&zyyikk41D"qͼ***X,jĉ>LU{>u   _Ǐ)))ʺ$bc3> -,,5ڎ`j{+DMZ=zy?S-N^&/TC}YU"uV#L(gQ_f;C^n^:Z2".  Sqq4Ƅޡ۳Dڱc̙3YYY#ynP	>Q5Fs)~m޸Oabj:_KI dYI)6rY1`}P}L6j.fcfśr23v7/{NVZNL;)xoU]ŷd63swc=ʥt۾f͚ٳgo߾=d,涶tRMMs P{    `!!!+V}F"u$'3^繑obb"%%FFv9jc+k~ԩSBv"fqL##-mS+w~ƨ͛ĖPgum+111]RHnbIIOI$;;;4Gpssst=5s$&*js3-E8y2v^hoj.G̵FRPTko
+ϓ4D{C[7
+PembԘi&?ΖXzΊ&TqO"a-[&//yV -K3    /KggyxxLMM|`۷o411yp7JE66T]om11^ǷxAWvwoB=|ĦcW#&Mp$Z<jE($#)T
+ݼȡ@c{Zcg=ϼy޽;*&qy0k׮;v|ĥ!iUFmVQΫ|n#a.a)S3k)p''y=?$$؝
+=w>NٳfThʔ;)5>HGGG ɐg~a^^^uu6 ߯    eddϟomm}@LLd|d{{{yyy%Hgû1_8Y׮3	UX~y*r^#ZrNJ?Vs̠iD kɪ(IF=GZv-~Ν @$sqqoLC}H܅!|YXXƍ丽:#{l
+JM4M|Ne^ceocuUןzVͽj^Kdn*{SՕzPkCRdcf@_eZaAF73&Q?J%޳lۛщ)5q_~ҥws?=`X55ŋJ 	m&&4    y&11Q___@@ -$:xFDFVH'OduƎ~Jԑ ]:IQ^[xgr+,r7op/<{)v=:ũA1YKKyԩnnnM99	???j3fNEU'W`aaaee566|FWyzysJ%fNRXrYx~jiZYz1̦ lh1~ՕGuϠ1}rBյgND{X-/#?ˉǡ]Ş>hG[.nR`r5mNY0ꮝ+;;ګl^=vs)rSS/[.\0$$$.fjb===>\TT=R{     ~M:::>~#""iӦyh,ƽyΖ쪗=2eŚֆSF[Yjyy6=>RMUBSCuYxGsw߿27[&=}:cT1 T{LUB&NhggWO 0^n͍2eƍqXǳX|OͻX[.[`u2526LLݩ-v4z}NJ)u"ԊZԺfN:N]3}Ġ ]ZPPз[Bsy60sSY~SRMkU<cOt6iRwu0-0vf>9R4$KJJ]6777QUB5z*++cت*! j    T333׭[h"4LIIi`΃Ѐ+W&&&SROlECQ>u˝bb"/7or[7bC	9ArI=Q;M4Z 4ȶwofff'OcLYvԓDDD ׬Y\ΡrfobmmmN̬<Sk6)u!8Dγ	]\NMo2
+dn1{ċC?)e ݍF+x_%EVcM's!zaKgw7x~'_AGYwsZa=4<{*d͏ﻏ路ѯ7;DI{G'`UUUEDD,,,Μ9G?J8q"=    Lqrrjhh=z%3`)''88XQQQ]]Ŷ6{Nk6D	>UQuΝ9hfI `zRA.
+''keջ|33qM<Ș`ǎ4t%1...ӦMCC'}ztƄԇ<R6C74yT<HV>mIEjh5-D)u!#tUALm>: <lgĈJHHtW3dosss8pƍP&~&    :^]]z:o߾}NK)<[rePPPS]8Ƿ*+%bvѧeucx￤&;_C$qOhkk;y1c뗑HNegkjj033+++nUev=*RRRw`HmKrwwTTT<}tBiP	0'N011B7cLLׯ:C    ?sڵKVVVCC#22:?:Okzz||l`eaV:E؏cV/ui{sq;M1GvFiBz׮]Q>]iiV:uq-[ f6a͙3IJJ^IV|`ڃ7nܳg͛7U&87119<LhPߣ@    ߸qʊWII)  :?+6:O[Zڱc455<Uy0~vwGs锟>
+6u
+Maa|SML_@Ѫ*kiDܹݓTUU?p@&+++r
+#""wCݝaXXƵ]-2&$$ˋ9r_2TI{aoݺ秨(##r喖Ы=ߣ@    )477_xqϞ=BBBnnnoI$Ƹx<W?p@ջ|6Ftc sgrpDlTNe(ved4HKc۞VʊN"/oC&܏	C"u4÷4&޽{jUNVsi--3gDDDxBW{X~Ijl    FquggKzzz"31zj			tac-%	]7?㮵F#[5"h>]\u)))&eĔBa˖-Dʋ/>q &6q!H	FBHF[}_ZqNڴi''e!$*\puH$Ree% NNCvvo| o    0wzyy)((WH?Asgffk׮W0
+]kL9o+enq|Twh~$((H튏gSN"رcLLL\\\ш<dnittV$33y;(KLB'+.oyܓk׮KKK<xI ???vvvj''__؇Vfr   PRRR&'''//<$R'`yDXIFsm6>;VV]yf;oo`d4㋎HNfLL޵k5μylmm.bIA"#LTF8
+3b=)II...XjUVVVØ!efft555tWVVvtt`	ϯ!o    5]]]mmmw	?>rÌXobb"&&iӦOPy(.RJJ(-bK7NN%އH}l '';ݪh$:Ced0Lvppdfffgg777="7qQEs	{X~L
+2gx--_~%gNx		A?~QQQ3332[2899yAl    )
+ǁʂsroL߼yV41VUϓ놖;oq8Ν;]BD`O~-̜9ӳ)'1DgggjӧoܸKdbƎbll\.}8+9JJJ=^^^͛3g[ZZ`&    ":::o4nۼyLF<ѥ$-[
+d0+{NyA,Fa
+/@}J֮];vXٻwo]^cJۛ/z̙&&&GGIQǏ0aS2UUUcr#JשS%$$_|	ո    Pmzzz6lHOMmOMe|<_d}xyyuttNlɓ'p/>}j<$_!fMOMv&=}L644daa7ne%):Bq]^ÇXYY~PUkbb2atիWgg8Zx9vߞ+bn1t[+򎃾Aa?kHul})ـio]/"> ""2f--C9.&**jժUt[l!o޼/^8'@M.    tuu}-_{驩pkoI$ggg99kŵ5x;A:{1W=hݻRV`6ÔXXXXYYΘ@A^tjUUՈЄ!rEEEѹ'X/=QR/@k]\߉:h'_b+_<tedϷ顿ODm&  cƌAޱgE%)))&&x䌣!u^s2SM<yb{    ikk{uJJӗ-[֜xz!  @YYYMM-66)e!AxC˻lu4mmVVD`IǏgccۼysyyyfff^|y0~R?pQ/ik>I[3}1/cx^t}۫I{] N[s^g#}~^?߾/{xx۷/aŋW^JK=
+}=P    W^kkkcw2U幻Xbڵ>k{de[#X;q-_,(2̂c2W~O:u*33]"À)]qqqoaee3foB	&qzĥ1Z-fЛ}푿bo?Rm>=z0d9]/"TUUѽnݺsνRXYYQP\\\PPylZ؞	&    _KWWWUUD233QWWj1>',,LJJJHH(<<._ۥ9t\kCdMME|XXXn*&L6ɴgdhhh;MFF&88_4``#KO777t*((߿ҥK
+qCzh?W{kTTT4   <OD٠ NL			Q!00*_jއ+߱]ЕgNxQSکF>3sZkm@cx4ȗ۴jjjR&QQQ	Olڣ'On޼Y@@@CC#,,ٳgMMM0T{899{i;m    ?+W̙3$RWl,uy%$$hii)((xyy|/+~DLlIhřdE_E+,,1ݢjcm0gl[!uط>3gSSRؑƆNx0A<J(ĬZ
+>zzz0S{P{    !ԠG޽{.]Hd4<+WTPPpuu('}jWyy:٥丹!HE旿
+;E?}tVVVU}Ӕ͍qqq|mܸqʔ)ԋ-ڵkW|sݻwŋ5E3MTWW     tuu544={:]Qkmiiii֭䴱)/#}j43xڴi7Bkb&MtOSm$?/~AoT,Ǉ~K\\\-VVVԳg޾}{션X6'{l^^^IIh}BT]]MeCاd2    wﺺ4z>#ӑSkٲe{<kԩJ+߽Gk.=/@)h6~%V`ad5{{{w'	$-:رc.\ܩ'\70111577}EP.s@a&    GKKKQQÇ$$$o^L$1XA^Ua^ޖ-[="KKv|-:)kΞrdccKKލ+˃eS}ueHJJӼy8КΈ	{@$g͚eee{>N=Xոnb/,,,##|Śn>***-4    gbIIɡC888/v$'3U100@~YBgKdM%M~?uǏ?fG}m68|Ȭ	Z컬~Q3f@dM~>cg$޽{ϟN=e##۞D&<411斑	~[[/R\\积OKr o    ЀF_JJJ:::繝oiiǷz3țvYcu.;܉z**oXvUTd1@~«yjjjG$#j~j tjuuЄ{j\ht&//pBԷoB``gН/BU{&N    4{#GTUUŭ
+	<u*!m&''e˖vJ*x>32۠ຏ
+233-wv<uI&{-CرcYXXɌ鸪@IIqojjj!;X),,tqqC|cc#b @l    '`YYYll*??INzz{ZKnEGHׯ$:L}FD;aΜYk4uu+/Akƌ˕]kciwnC ~l``0~x4744dP5gg]YY9$TfImnn.))f͚tvvCke W!/qrrz	0imm-++mnϯZ3o49ƛWݭv65,,cJvR"o
+-KɄ	XYYW^ͰHA?lGYttteL66ObL؃c	&6ŋ2ehjj*/\-???\_%@l  u)NNN/{_ 3-[=ѣ1yMkII,tcƌQWW[Bwu؟}Ǝأۛ#kC[<8>AEE6>jj>ȣD.(Ri
+
+
+֭^KvZ=h~9mO/_;Tڋp/y>Ӿ#|G侽mz}^_~ժUhn
+tWnݺBHC5  D}YPP@eHYYY\\"z{yyUHzsԞ+//dWWךSwu[~+33R~Y??Byy5CL5Ǐ~l
+5duuuvvv4H@لEDDD{遶Lk}`m>o\?Ecv;S:.h+++a$|;ԙ\&L,  |gbA Îo&$$%??JHHHx#99//OCC=zjϰ/M@\c"Q}54P7o7a߆P4){C兼+V$%%Q֛= vލˋ5ԧ6333+++###2mߚڦ]zt2GMfWc8}~/}^`63f[9໣_] gs?5f999hݞ7ĀPc{`&  ߠprrC Ñ'O/YD]]=<<ǌNLW8#,,s۷o3ܭ1∿ԩe[̩yxɓ_=y^zDZJ{Inv~k=x𠔔RLLLkz:>'=<<䄄lmmϝ;ŋZ4~&v:5GzC)~'1޽{WWW01jT5rr2334 jZ(((J :;;ш=MLLCCC<xԞSN[n̙6mrʧV8Zc,-͚59YL&tΤI^<	}%K;:C}qAh7ACzaa:p
+WYYYBB:??Pr  {&jU* /l,0 A=XYYA ÔǏ#:֭[]W{I
+
+6nǷe˖/vă:Co32	o!W!-0PyK_v5nmofk]lÇrs?EG3{K"9;;e~~>cA  =Oעzx??AE= A=9P~TUUX[[ 77KFG^jaatRj>?}C7
+,x-''AiNKTǷVҒ9}uPi煄|||	FFE&M6ׯ)  Bz/Ы=g =0utvvڵKFFFNN=5'`]fcc#**%قuXۓ&9:6FPxشH)2?u;<7)6]8ixAA7AӁ}SR544PX^+6H		(!!JK  @g0?gϞ8q"  `TQUUu5ggg.\	c|l:iqq={Ν|򬬬J28ڮ\dee
+J[%J/cbbJKھZjz%ƍ^(47D2888WA"12XSn.r=uttRRR?z   ~[23&ԇb{   =tuu:;;JJJڵii?!$vܹhѢUV:=N=ؒ{k\ϬY욚jK;vg֭
+^+zt`_e-s,XaÆWdrWl,ܔ!!!ȗ/_  0t''P@M.  GAUTT8{bP֭[^^^UټysvvvLQ:?SBBBMM->>9akΟq_2y3'V*N6mʔ)8lnC,!Q3wZFFplξf͚Ҧ&x   )}ܒ3aP{  }&g/;;'Ϣ͛1700@D,Yttm^ѣG)tQgXp#y3fܸqIh3hMk͊ZH6(j}pDnhhXH tODeT՜[nB`  P|.,Ejr c P{BCCÇdddͳZJDpXXXKc&8ښgϞyoJn3fϞqSvܹVLȺ`ܷЀ`I6mZxn~F#3̷ɡ&pvv.))
+  Q\\'..yM>wAf  @V`ØMMMaaaCC쟠<  K@@ 889pi5],%)<[m6kó?NVHpqnEgoA}qWyᥤ32:Yu&%]͵AO|޸q*p  m&cZl=  |'ہv mmmeeeQQQk֬?%o%+]e>\.ׯBEEyN_q+J\n\u>	Əs~uoKUe?ZI&*&9;;KIIihhǷ10|[F"NBBBFFʕ+@  
+zU`"0 '' Ckk{"##DDDttt0L=ԞG\RTTã .w!O1ӦPm*&3{֌kW|4F8f͐_k9x𠐐RLLLkfhƤ늏/!奤oߎׯ_  `՞yz=P !33Y y{aByɱc֭[7c		ngB.[r%??={ȟZ![pKΞ~QKMUVP@Oq
+0YX̜1EYI=-6hdGHw^^^⒒GadՉ߾}q-ھ};@x][[<M   ,oh=  P3ӀIIIJJJsYzuXX"+>jO[FFzz+ϟoggWTT0L'57քQ69>uTVVֱcYqZpkW9ߒ%߽6+'744׷6/R+29
+
+
+q&߿   d}}}j;;;Z/9s/b{   FWWWyyyzzUnܸ*4HNNKKSWWڽ{׻Zc:ҹ߻}HR	EGZ}ޱMkKʞ̘>e{znp.Ƞ	\]dIuD](<G   pѧ Z  (_ׯ_geeYXXe<XZZ\ƫ=艼i&aaaSSӋ/Bl0ΖW-&Mx֍~}#R|U:)9N'42Tkmli:`ó xwdhF0z$p8%%%)))WWwD"Di)''$$dʕ"""7nLHH(++"\   C899YYY?heSc{@ [#=ׯsssMMMeee^sԞ$2l``x͛7;w%h-Q7rrr+\si^wgIJĤ\{VkcPmID`X{sj!cժU\\\;w|F"1.|t"hjjG}aW  j_/^S@8q"  `T{`cc#,,,$$<˗/31}ZǏ-\P[[;??~pj25Ieǉ5'XYYk?Pim8`zHcZHOTONv*I	u兇hhh666  1prrR6f򱲲@
+  B޼ysm۶qpp߿ޱzŋuuuۛSQUҍjO'%22̂9,d[G3-2KnQֿ~";[ΟˡzzzR"	4ٳgKHHܹs   dVFo25o  `QWWwI_pg 'ҥK;v쐔lIow8Z53o5lm9u܋ezE(`?_>	M0(Zrn	q֭FFF':#5gg#˖-sss+**jjj   |q  =92+V$II8::)**uPvF 4dJ+?Oλ@a<O_EsP'I; -9ʥr)''ɬ~QQ=ii⪪EEEuuu   `w==0  P{IGGGSSӕ+W<==yyyO>Mf|l'֭[vvv.\|9kw8z.U*+%=YiXmW򳱱_P =CǜltJ=Ommmdddx<#[23Ϟ=kiidYY\xu   `0Լ=婮b  `BGGG		Kv;V+yCW游ޞGJJ*$$.ag]-~[ǎwtceez͚k/gaaIMOJHMZP!Q^wڅFMLLL ܹSDDDPP   )ʬ"[:h?g٠   j0lnn.,,<t萜܂SRR	SVPP& aV,)Øyojs[dbbJw>sk#]-О1C%]BBBVV-Ξ=cǎ%Km۶-//Ǐ  EPT遝O  =(9VȻٸqclllCn.
+Щ==WPPlwY0ї˦~lU_&eC#9.JֺyǏ{   ?]Y&ĉ!o   Ζ5kHJJnذ!116/#WСCUy3۠MV^nb	AYA~0=Vzbc_>>>jjjҦɯ^  _b???G/_x1^P{   455=}4&&FOOOPP==###43>oOttCnn``??ӭ[>b^_Nv^
+u=6-0d`YYŋرDb\/<x]TT4%%nmmg  L.  @F]]]'O455pʕǎ>rH DFF.[͛3iSlloY3jP
+6ʭ)#&&FAA{ǎOdM&*I$8gmmgϞzH      @v466>}444TMM;wLJbӖ.,,k׮?5egO311ik.3\JnZ3455mQ=x|U~~``* WXzx:   DmWuk0j  `Tс\8mmEz{{?%%3kii!Ʀfr;u+	{S|:mZg>#,,ljjZL$v&&2@$Ĭ^zGqB  Hqq1}-X,  =(=޿jdd$$$Tƫ=iiV066>sf؛#B:#eЭ櫏6j-9:::h(nhhXH tJ_O p8t^aaaEEÇ?zBs  B+NN|6@l   ^xaaa!%%zOٞŵa2ْ1I*B022BZJJ
+#E\~OUUW\	\   ?KӢ}A큼=  BZ[[߾}c111AA={G*IID"АOWW7''0i]7ffffHJJjMOg\^^+Vxxx\t&p  t$..zNNNP{    ɛ7oΜ9u,]iitǣ+155$_69yϞ=BBBǎdg3`(YY99۷o涷|ǏY   =NNNPc~h'O=  NZ[[+++eiiI&[23YKjhhthNlI=e/I{QRRhfX.ԳrC=P;   Q{q{j_F 6***N:ekk+,,tRx'6ҥK,@n 4d}jlH=e$gggnnnڼ<	;;;~~~333իO=IY   0ԞǏSgrAf  @F.]rrrCNivvvSn.NsEKK%K(((DFF6傃6R,(jߒHp8t/H}]yVVǏa  =_K3   |ҥKnnn
+
+
+KAo8\QQdeeGXK8|+㤞'$:*:͛Ҟ>}	   fr+bUTT5} @<<<:::ݙ4~%%%nnnrrr	=@cǎ-_\HH̰N<ݻ^^^222|||G}9BG   FAA׃X큙\?/^fRfa5_@+k@ڢ"ooo		p0l=ztQQQiiitI*Zq)	\Mu9QQQhoccSȨg$R``ܹsUUU;H  0=lll󣨮vrr Ίj `r:;;_|r^^^--Ǐ#/jSRRZ@/?b_Ҙᔔ̙aÆB'ϰmʕhΝ  F=?Pj)VVVX,???ƫ=hKNNN'''jTUUUV^"giԣ2!wLRRׯ_jlJ=)))jjj/6008ݙ0z+W!͛7   hR~uu:=2#k%ZN[@F3---O<\nzPPЃ:+Vؽ{wQQSlHzzzhXx!7=5AbcbccuuuQf  F3~&#sޞ8 `=wލYv-r֬YvٜbUUU_y{uPn大3LA֔fff&&&|r77K.:|  QL8qwrr}BbU ~~~ j j ڃjydrrr7odkKA}͕+WZq^nۻ%ĭ[.EYY9..Ű	\M99驩FFF첲gϞ   Ԟ^TWWS''''r
+
+
+!mFU&-ڃSt:I@F3?ZZZ222ΝbX%%lذH$vPw^R[XZZ:$$!7qROnnff%O۶m;uTEEt   ǏS՞frQZ&=Q%#ZPҒV\5j!; `4888\|--y{999Db;%_uNەtƿ9V{SӇ譋J<IRϫ۷JHHx{{WӍ)$	$EDDLMMSRR***(
+t   'N̞={,ͽԞO= oj7쒙IW{qY#Ӧ /_fgg!9hvvvcHNfL|}}}CCÜP{").%)1КpVWː,*\fq{^I<yp`FI^Y&3,^1%Oo0\KTpppm^ä{ޱcغuk^^ޫW  jkr}prrj|C-yKEj\/  P(o޼ܶm$._StRi&!!!}}n9kv%3:yuAMqsMdAr5VpayI[[0jTz)qXлRs26T}޽-x̉@v<M5czODiYYYwwJSt4c2	ե͓o(  0\h:Ո^MNBY_hM~zpѠ WX j=(Dd2y۶m{{'O\=.~~~MM֦̈́tڐ{cR_/̻p	N:exdhaI<$盚Ȥ%U--䙘Prɹv-wBdY3} }ł]}@5-{G@(]b(UlbA b_"ׂ} 6A{ao6Y<'g2sg0wpXn0uh0З"Lb̔Iz*>o۶mȑqtt|btuG,ӏ?#6 %#aj;L_ӌ}1wldUUUgĉvvv***s΍(wgС>>>8ܹq̰]o׮M5VZ!A&ڴiMW5Fz|µykr*&:wuݚ1offٙ:h9/ѳx;r۶K:cj'713Nzvޭ.))p;		l4OX,gggbM4ٳgeeeh Z8䲰ۯש䢖744t}׬Y;= l6ŋqqq-={vXXn9sVBBBSSS~roM3=޾TQa//!$As<Qk6mp\*:C۷,iatҞ޼ٲi|۶59%u5йyt>`gѰs9سxڵ譯+9Tax&rd]5ڢ=6obFS!|UvΜ9)		Ձ"jkk8P__ƍ  2\_][d{q ۃl|sssO:xb%%%)))sss__O=/_^|a455^8>3θ]_o.>hy!iw/s^er}}YHgj'hdgm'h۶\RU_M ?JjT*Vq&cd̦(	>{ʅ 2SG{pG*ԦMk]߶٧ ###QQQqqlm۶ѣG:TGGgͩh 3cd{Οy5r0= = = D^^ŋl٢=l0sss??4MNN^r]?~=$2;;3<kM{vفݩKk++]Yi~;2{2b=7-;s+;ݧt؎*/?؜9;ql[WW@
+/H#aFBխ[YV5QQjff&++Kڍk+Y?^JJؘSXX&  (t~Fi(UUU:gPg{M7%_ ?Mڵk6lӓ:u/9&SڵkI~߿ls+;w咗kǔʬŧfLWo"wJfmTi*oiD]v}<^p?Wl aR삸$$.6|ƌTqҨ(zJH35eup4b)C{  ͘qwwGƀF~Lu!-""u;3恥 Rw=EܔlOff&uq)BNI]d{+))~Ν;I*--=i$rUf|,_^IIIFFfժUofܾE_v0ЗǮ5Rτߛ%Q]z {.]~;+vQBd+f?AԫWgqYۘiy{ܖ__!ɯ_~K.L6UN#=dH s\4i+DEEǎ{ȑHʏ?~i%\\\.^  ?Wr.VGá/S}١nՔl=v47! ߿ONN޲eѣk_,q{~~evvvVRRutt~z|`u;޽Z|nEta}cuUXc׮ OLq.9ԙ(ڷ*g+vs`䒏{-ѣ~j5GsIQowN~I|[GuY1666ZqqI&<"",,VEEeK,9uԫWИ  ?4󐙙lOGa͚5G,XüCfSr@$
+'U"O#""= kGi.--viC_^$=ZZZW\!-]v̟K&@]xNB4i&cd¹udukƤ-^Zu5X,Zqߙ9kW;vl"8+HRZn@߿Ъn|TO,yG޻wGAzHŅϚ5KRRRVVkҎ1 :=;wq%W  ۃlܹ榫+**_[Gsy{ݷo߈#ȩÕ+WZfߞ8MQ׶TtfzUVj={v;zuVQ4\nqr
+SɓVZH)ő,?'Gdpw?yo<|uH;)"zG>fzSի啔<==kzd/_iTTxh-i$%%ß={V^^f   d{큟UUUUqqqJJ'MDΡ455nzMI300PSS?{lUipy\659!ϝ^z޿2w0.]ړ#33;rlۍAߪUVݻwtwT_,zJLl@V)꤉
+TTŕW	u1R7R7Mc(u5Yvm;5q[~/7nܨQkݺuoY,e@6:  eeeh G}{  h˟={dnn.##GNΞ=[(=qq^^^ƍ#5oٞ9E1GKZ7}}FKݬq˼{<N\'Eٳw0M4=ztrf6'Y݅JR$Y1ǵKGǌNcc4LtHjdfGvNߺWODGGG55իW?MLd	Y	K6%++;sl  _o  -ViiiFFÇȩk*CCݷ+++ȑ#}555.+hQ%,ӥ-]=NbO%.Ciqv6e
+<bjiS[W̭/Eb'8iԺj"=`2@Q'MQݫh>P]hA«<܄l̷NfmٲEJJJDDdٲei		Ž2$͛7o=z4iO~Сtpl4  P'O61]8  ?(ѣ`+++#G\ĉ5Wr	jU:SuQr^iffR^ܫY?TN&*G/~W깗r*$k̿b2jڵc4,$КIDV'K~q&yT6#FeohmnLwX߽5JjqxKرcalmmSt?rqqח555?ݻWTT  x l=*--̙pBHf
+:s`yDDddy%9
+
+jQ}{?g;fHK2QƦSURs5F{unm[iEIyR)O{zS	.]O/=}G[&R{7̺1EϼEK7y_.vLӑ!:hظ$ӕ%=N]׿a|ʏ=pԂnUWOh[6oެ#--mbbq"܄  ? CUUUedd?~|ƌrrr.""";;[ٞiӦ6lҤIrf͊]4p@7*2uRbܢ&vyC{t_?.6yiI^3u؎͙=y?[t$;f30LmeSv7:OU]z ,%~!smHj%'۟J:mۺGNVg;2ߢWO0|O~96:(H@z&&zxx5ҥK߿G  g{:uje"+d{VVV͛+))XYYhVFTGEE͞=[EEeҤIGl!Wrr9CJ\ht/emzqy#:hO:憊"cPsͦmNS#'wa}M|y>RuCO{xv#dڱR};ݺC1ԧiӦ)((FF
+,{wwwCCCIII6\rǏ    Ul6==<11qٲe222s΍*(͕,k޼y***tǟ}[Bs` aj ܶ~ٔ߽t9JJmZHΝҥ=y!De@nCz_0OnrM,ը슁ԩEC&WP"%Ł!֤捾뫷?ft~:A͜~b;#^aG4i_ITn啛p1hhhlܸo߾Ű  'NPٞ[MA AZ${{{uuu9sSh	9}u^wܙ}y̌hM)]vU[:כq4rZekWwn͘knup*q1cϙ?Pwo֭r'71Ҥݠ9JyԛN~dz̵I!"=WMnЈ:Rj%111BBBjjjqq_7{leeÇXŋ>|@  1q{큟 ۓC~tttTTTyVpppMWrwҥŋ+))nݺ555]s7wHGdpwo(Kg7%ؑٺ:ԘC{/m{py{on'sdUTHN9o5>aBB<&s\8ucA?͘IJVTT߽{wM7?Ώ7oⲳq  4.ӹ󯸒@hlׯϞ=j*rz%##3q}߂q㆓GiӦJO{_vX0Oʙk@_{z1X:m۶3{D֣͍+nڑtם70cT.HKS$o}
+S3 B4)Xz޽{4ZoiTT``ٳTUU͛ٳ24  P\  -SUUǏG%""bhhHn߾],{|}SRRIe6lp-vO޷@TI51C֪WV {AeL*Ǿi=i1yΞ"҃kjGi^-n۶5U2}hnaYWXy܄zj/6lʪD+  @=Db ?ׯ__xqڵF"Z&&&;wLNN#؛-޸qc|ҥKe?}[|m
+]>={vg;BҲݍK]0ZOܩGNUHiTA:wz)s<҂=כPu}7z.zR[1|az<Lc999i"D`R=5#۫IKK9r$--3  4%ۃQd{ڵk&&&RRR:::۶muVeh}hmm}|}7V.ݿݽGR7MeR*WT #p+&b^TiZ's
+<9#9duv頄ԍKNf0KȸLL*<eKTm!&+;B_zK/;̵ٳggj|]/[Dpz$''zG,Vu@`%QQO^d2̙3}}}R  h'{r!o>111ccݻw_~]|}𡫫x߾}-ZTUӷm3١tqj]HZ眗no=r_/\塞=vdcz_ w]ڧZ*)׶TiCDz,K-Sq)e ٮ[&zMyeG.xNV[0Ga8`MG֭ÖM_<Cym<q\M/a,6g7YOvleݚ1]_'_fSH+eeelmm3X,9x:(>emmm=z>}B  MJ.}{큖,##HNNn̘1Ce{tttTUU-ZXQӷ_8`m6Einmڴ{'4ZOn$^:Pew޽,+c||D)C]7:|޵K'Y<nxyq]7 zӉVo&ݗK4g뫙[A6MF6]qRiT=b8ZY#V2a=3eytڊlnHŋt:#7h\'m'+**Ξ=|ttu``串yHZ搖ԁB-°  ЌҌ@ ۃlX433SUU566޼yٳg+~	g͚Y=moeF`ѩ?Q
+uցzUQa22PCܬv0]Eᗾ}-2;)Aw1Fh承Rsw^O/\]w\XIܦMs5&mhve6x*ٺu.]ٹO.Svu[H1#;k[ƯFpD~n<QRR;w.X`,ĉUTTƏcǎ+WW  4zd{d{Ǐ<ؿ,9ﳳ#?5}{211>}zTTTyqX#ROͶMC[K\VA9Lm۶#o{vhȠuC
+@_j扏6r_\6g!CDzr]r`xt耥={v62>`f`r^n2xx/+D0pGSqf
+1>>>fiiZ"٫^$&nڴI[[[JJ޽C  ͂C\AZ{9r|vvv'ܓ'OMLLdeeJ>E}.j	-jU҂=q2qqce4uHӑ0#3J}ڱg\!gg}7W.ܳzXc:]Ψb6s4ȫ'Yxl;ݶ.uwtRR3T+β%zNÂm3vieFfJ\LAr4HQcalGכZ(74SxJKKO0ѣEWgX{ӧƍϜ9{M f== L<YJJJMMmɒ%o߾+=رcfff9|09-m!B0QV7p	&Xv~~9,N*--LZ'O?H  @3Ʌll=bUTTdeeϛ7OUUUEE6"" .N}{,3fQMhl把Ф3Q3g$_1eeeooT@٬xb-N:UNNNKKkժU,+77M1  4#oɅ@4:l=+//ILL<9\padddiTGi		NMMM8.s7[/K:Eunݚ/nQlmll f{r!ۃl@EEEnnndd$ufkkZS OyXXBBp%#&"nCC]ves&߿8::.<|M*`ccC4  0nl=±쪪Gٍ5JCCc޼y邾'WUp'.\@jVSr_DR=AX%##C7n|b.]|ٳ=zݲ2 oAWr!-9Ύ[lȑ#%%%ǌC	!s6l͛7~hoF?~܊+422,,lٲVVVh~ ILLD@d{%cٕ/_dXdpذa]vJMMO=O^xB+W^vE ۫'+V˓Ԓ%KnW]})ѣ:\\\\UU  ܓ@ 6˳gʊM4iݷnݪ\AAW^upp^j˗*[1z=MtqqQPP4hТE%$T]z96vڵqwwsN^^^  p%0` =ӧO.\ؼy1cTTT&LvpaݼysٲetV".D{@4"Փ:}ӦM;]$rITԹs֭[g``:e*\RR^=  AZw]vm۶mFFFrrr&&&ʕ+ك#sƍ͛79ɓ ,OOϱcǪY[[GFF	b34)4)䫝  ԩ==@fo߾MN͌ɩիWkJ.r榯/##cccsY\Ʌ@40KHNNn̙%QQ:W>g'L@RM6]vM.   }%==@KVPPp۷;lݺM}{>޹sgǎ#FfXho{|ʏ=vظqD?
+&bJJJ:::[+*  m=AZ]vM2EAAaĈ			aal??_WWWCFX4?z
+?x{{ݻ .7zyUf'&;VNNl?|eEEZZ  oB AZ2rӧ7n8p`	={YxK߷'--O8رcϟ?G'J>E/a>{{WOFFeˢ={VVVk  @q%+(**z𡗗CLLL@l:'))inn_\M.H[[[WW׼At"[IH8zo&""ҷoӧƒ3<   xۃ@ ۃl .,,|޽{NJNuuu-[WөF/CM<YMMȑ#c"$ekooI֭{"^=O<9~GEVVV~iQQX  =[&"ۃ@ ۃlXdmܹ#FИ7o^PPPFFE6cǎM<YFFb>^];@ ^E$?ƍs%$4 iFHcBҰu 0ۃ+d{ɓ'666jjjd"888;;[43ǒC=G#G<x7ݻw;wֺS/gַ(	rRIj],Qy<1{XG!TTo:a[,y0X%wfddܼyѣҥɓkz]CCCEE+==ÇhZ ?oQfWWW?}4((VYYYAAa̙<t򈈐uuu}2775k֜9sfZ1Y|ם@lWҠT9W{]Sz-mY GU;c^<keccC#jjj+XZZfX)6611q'O޷o_rrryy9n  yWr!ۃlp%%%><~-9mTVV:te{y1ٖÇEDD:u4֠Z/8)'[s5boPUt\w9Eq*k2dȐݻm***]bV^+//obb}+Wy*  N:E~;v(=@VZZ󰰰e˖H={<x:0P}{bc7n8eʔ9sXײ3C#V.Ϳq4\{jĝoGxƣ/{1ǑK}s,3y&x9VνyϟOX,^qybˋ7ŋ  s'N=ۃ@ ۃlXl6*++˗/޽}||n߾-KBktttbbbRRҙ/jgpdRRZ<o*%ycWԠ_1)ylzٳuV]9]ǿPȣ<:Mf_ىXgVX]vUUUݾ}իW߼yîv  [= 'O?grrrUp =l׵r]ƭՈݻk2s~4zFJ G2$DZ^kIrss355TPP?|^^^UUS  =@d{%#ho޼ILL\~1c>ydww"4T'_@ x<_z\zuΝSN%S||W  d{d{޼|ŋ6m;vƍ/\Ps%qR@  퀯o6sNSSSeee==+W&&&>{c  ws_A AZ.lٲeر222:::7nvZyX=*8ÇSL9r}DDDvvvII	ZQ  @@Pnn7oެ/!!aÆ'OFE<h{b9rJVVV^^~
+
+JOO\  \= |-WNNիWlbbbB~ҥQQ5#hQ3cEEE%%3g?~D	  !A pO.d{ Jrv%OO	&2DVVΎblh뛗jee5tP			KKK"t  ۃl %??񇱱TTTVXYKNp΋@a?Ɔ+))8z  Gt떉 ~!ۃllvqqw5~xyyy---r~Us[."-o/^ǯ\ROOONN5%%-'  |ٞN!ۃ@ ۃlpG5j΢E?gDKSzj###Fyzz_h0 GJ.Wr!-\AAÇ=jkkbeeExWr!-+Ϝ9訥<iҤm۶]r۷l6&  (A AZ;IIIKKːǏWh9Qv-[hii:x֭O~]yy9L  =ۃ@ ۃlpeeeǏ5k:\3nNpWeHȝWWW###QQQUU+V<yٳg  ?
+  PXX`mm(%%5~xwwP#-˗/oڴ@RRR]].**)..F;	  ?\Wr!hɪ+**=zNNDDDvyʐ#?}o:o=5#-ip.  w`Gq1` d{lмJKK_xq){{{r'))ijjq`Ԍ@2=g8`ii)S&***33-$  \Ʌ@J+SUU3TTT{.66^SSSEEe۷ovZEx8N8>lcc3rH$O333+  ?"J.A }EGٞBooo))3gFEE`Lh"سg/ǎ;|pSSSWW׳gV`ؓb̟?_[[[KKȑ#)))   ۃl=eeeos;wUx͹sV^M>]ɉT$HP<Z{aޫ׹J6|Zt}|uޅS%%yl5tM|q0yWϏ[O|n:4v9|%_W,1k,bbbrȑ/_a ɓ'1J3layyyqqqiPPPnn.vhJK.URRݻϜ9s֭?xݻw:^.{ΒT;Eo_.4bE˜Io(<we|#>]
+sNFFƽ{ûv"?"Cڵy	M"  Ю\q{d{~lAgMMKKK]699F{J>o֬YK.uppXzZi/YT5̅JFUjka{TgɼkG<[߫WڔO{E}.}&?+V1cFNW^AAaӦM7n(,,D{  ?ӧOM#!fx;H[I&Lbeȫ2fŽ0)!©+@o*vۢaάG	3yXu.27ǱǺT/̪ruί}o9JGo7c,a~x?tO8H?skQ1V^嘙]@|bu"YY>i-Oّ )5Mz9)R
+s̊?QQQcƌ۷o.]Ԗ/_YYYF?,--}]׮]guC$j7M?mf,;:8uzn3_-H|#^ſh9V'JII_~!VZ\͛7h 'b_;AB\'yI5~J^fsQS9Zr,|*C?pTc>c:s<̧+ydw/;Žz}EչuL4W>G<*u8ZqL0w\ǛХq|U7qqZQ~ԫQk1fnL3GŘbց={'x]/Q3G
+ZqԓYU]8tٳCmڴ_-,,nݺUUUvĉSN2dr-4SЌE}w-\[м[tZh;d.EȽwU555iii!!!aaa;;sΡ ŋlOtց!i2AMS%z;%яt	s81zJ,Y׷ 8֢7ca9cuK2w[>uST2r{9*ɱEwY:?9|#{
+p|t+[nµbNPяL99dJ(:)i;vЁ<v}'ROBB%9֭ʿ@ZűCDޱcǶm۶nݚLlܸӧOhA?~ŋ/_|ݺu6||Z4M\er̽:gS~}[i*<*խ4PV˯@AsWlgOW?$|~Bo֭[W\9s̵kמ>}d  Ӹt&Ŵi,--HMP3903%0',,,2sc.=Y>AA_js395Nj`` ''קO***222N:uĉs\=ƽX}|u[p?ݯ:r\ߡq@5:~\ǡPA71cZ|ޥ.zɩiii^o  !qϞ=}><~zPӏ=sb3bnO>W.p pלY:].tiP/q].|e[~S\:)wS&y;(Xǉ{4Y;q|?u̚ppǷwW֬YѧO޽{mذٳ?~iA
+_~M~
+_|Y%4xmUK:/k}&{K    (--MKK;xĉ߭[ѣGر#%%}ŵzb.!1w_0[l?|ɗy    MAAA\\׭[wr       ~,l6;##RTTtԨQNNNgΜy}uu5       111'O     {^? 
+.--      V        pĎ!        lr;        ?d{        ~&d{kEDDG/U=y)))|,,,RRRǶs(k֬!#|~NI/X@XXZLbK$գ$&Ȇ:W!˓|||      ?:=LP/-XJOGDD0K`DO23s(Teǆ|||W*tkM-j:33JJJ
+5       r#)>ӝd|*Bn3bdu*OB^m\ϭsԟ )bhyfʈ,CD֭pY:{
+       }1%}Z
+GoEs}{ t*%/%P86JU^        ̫]h+&%%y/y*RgRBgfs2+Q&}ANt":E]        39IRg{$q:PYi¨Fd{:L
+Wf}{uuE0>K       =;p'p,&_&#q1Օq      wzP#|l7LG -33q      w9#4%{*q#:2.       4:CqxA?{ϧ.[w>},񪪪#B       e+PяG̙|f䅸խn]ݩ9uDb{}uTg        kJN秤	Zbtz*]2um&s@ff|nsC=tUcBbɊd:3UEv"       ~4%󙑜qK\a(ͭ8Jg&8(ϭ!"""L]q       |W;XZɺ,0dz^,Cw̱u2J/IJq-^_IiuQwݢ{2.        ?>Q}{p        `        -6       dff2mF        ?@ǤmĐ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+endstream
+endobj
+9 0 obj
+77022
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 48
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x[WHg{LNI:0%/8&	k`0ě¾y$k[m0@	{.Nꓰ~ anX} [f+<\Al(ꁍl:z7^6t7crY)NU&{\Nx<dۅ%<[g%{Hh4NIՐW,LՐ{8CjVT*Ţx<t:wwwjgq3>t^i^}qrˀp'''VW|^t=hÀPaPTi0c(8Ya g{{.H sK\OHaϡn.! HfmiqHT!4 srV-k\v-UxA%tQ ȼi)61IB+tX}	{G
+|KC%-WgKU82&>}Bx}ZXB&H^Mޖ /	afXfv,0Ue'A]`llliiۯVx]ږ}Nsxl&s^90L7z?8ހNTz->M|۷wY=/E$➐$u|+?wxA3xGv:J]WXGl3u]>H 5en^04?$4kl`%EYF f?J' (+=-y4ҙuJ?r@ I],EB!e|ͫ#Ao.UktL&V@JYF
+(9KX jjG{m h%0PMм2Y͙ӟx?7a~^6VU%;/evQq:W>W	%;{Sok+.mN urAID^fH>RSR
+:#±cԔ'=[Pfy#r߻~\t>n<.--.eoJʱbi e==INiK/u2foj-Ap^ i) /?Խg͟1 i1%,<{s 4%q5,S+%>he\U	\:Z j (P&
+f|U@
+K{<Ti	Hg)Ϥ+>o	.M'E+6݊б*b
+@CT@ !WGNKT!-Wc6mJ@@o,W5HEY6"|;{l-n(I~"{X9XJǊ*>V:Ǜdm?kt^2*.RyUB?+Ku,ň\(Pd*{n+@62«V­lBcҝGu-N/,ҹ̾$"KNbOݵ>ݶ<|m/qu)"lE{\v9wXu=lY@nTr!UQ8s
+dinFloJ|yg*ӮuٵΆ ;~qs1kown^͟[&=Φ,''FJVVǶEk/]cj4%YD+CM-ke@9=xxo>j+{^fN|3veIҕ2-1籉瀩`㭒,Y覠S	OgK&x[ 1T_=aX62Қ~;ކbňH9ܣ?zc
+SB?/a>\+;5$K5CfJ7J\ZEa4@<H\ZW<<o 9ZT*˽}M%	I5Ocںdg=;hRo#1,Ƕʍ<v5ATC;y
+f&Y\\ɫwvBPT: m'=Hr-s:ϫU
+_<#YP^^-`eFbES8$1ID:#I6_>
+=`hh買mEket}wKj9[:Ɖ'fKكZZވK!Y[:K'T/:GT$ygQgUZ}Yo	>T&fh(7,LfI*U^Gyl@ɨ {ao㨣)_Ts*lo\ֶcߡkgɓ-WDbW(JY-O{W%RGBN .dٌԀ\bUN"v{G~dB&&&B!wt8F"d2\;u7^mB!!W0!jJ^k6Xۍld~f,`V/D򱿿XbrZ>Sd2i[p{zqnw_Tavdq 4 CLG0"R	$Fr##?Ȥ?`?z@'U6_):(ӦQ+KwB-0/j^nۜzqO_:nfk۫0:8{ s_Ws `0ʅ#gGokωQD1^n
+/ۄ'm
+T/wy*ܩqUI]P|*wj7gyC(4-_o%a,A`"
+'q4ABL($D%nJ&w^S=ց)A`W7(Xr]^mmeGG~%֘Hȹ\^+cّCW`/?26Nhroy_/qsS9׳r
+ls݃pWF
+k\u5z|P(tU<`iͶ[0+5\
+=.ˎv[bѦV_iìMMjupmmrro	>v|_@vK|.|ry
+h`xxR[t]oWaϗFQy.PDbhۯJ}AQx,t:ff>&x<C}ZVC^_
+endstream
+endobj
+12 0 obj
+3382
+endobj
+13 0 obj
+endobj
+14 0 obj
+3382
+endobj
+15 0 obj
+<<
+>>
+endobj
+16 0 obj
+3382
+endobj
+17 0 obj
+<<
+/Title (fr-strict-frequency-reuse-scheme)
+/CreationDate (D:20140609020217)
+/ModDate (D:20140609020217)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000310 00000 n 
+0000000398 00000 n 
+0000000416 00000 n 
+0000000454 00000 n 
+0000000475 00000 n 
+0000077680 00000 n 
+0000077701 00000 n 
+0000077728 00000 n 
+0000081251 00000 n 
+0000081272 00000 n 
+0000081288 00000 n 
+0000081309 00000 n 
+0000081331 00000 n 
+0000081352 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+81552
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png ns-3.21/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png
--- ns-3.20/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,272 @@
+PNG
+
+   IHDR       ي   	pHYs    nu>  
+OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
+!{kּ>H3Q5B.@
+$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
+dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
+b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGwǈg(gwLӋT071oUX**|
+J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!ku5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
+M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
+yg"/6шC\*NH*Mz쑼5y$3,幄'LLݛ:v m2=:1qB!Mggfvˬen/kY-
+BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
++V<*mOW~&zMk^ʂkU
+}]OX/Yߵa>(xoʿܔĹdff-[nڴVE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-6U#pDy	:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F VIDATxw|SsGJ;^)K6RTp0UQQ[ݺ'ںE[CZ-+e6+ɽ?5~,}=>|ܛ{s$EQ      M      P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      
+q     @B     P      +=      &    PM6mΝ˗/ѣѣh pC=    kͱ;v			
+
+1bm n\    0))iEEE[nϧY     oٲERT*՚5k:(
+-    ?tҒ%K<hjuƍw޽zj
+|     EEE+W\tFi׮$IݻeY     (JNNNOOիJСCǎwر|rB+[!   P/~w6ÇWBM?{;v4     *))Y~UjɓCCCxxx=h4=## A   RfyҥgΜ2dȸq<==$IԡCczzz[QC 	    JKK۾}`4i`P{!I#wb 44   tu޼y͛72dNSE(($zB;     @ڴi3m4VJ}<==Gڸqc q   Jj__*$ A%   r  q   OJ{     .G㘈  E   8f m      +=   @臕z+%    ^}    hpL&S͞H] 	=   @#MLLJL p7    h8z^X,Fh4_h4W ps=   @jX?fٜ\~
+GD {   Z*ّP n   h@΢ pg   Hy N   hfd2f.!{ N    |BHPT @@   4 f9,,99Wy򿥺    xG}2DEE	!L&SOwV ;#   D!DBBBBBB;Ы q   аG	O {   {UQC n   h@zbqLUWzdY G   4 B2e>A ps=   @9>>>(((66VzFc  q   Ѐg#1fHxxxٝ M    4(d2L&G.^o4+1v     d2pdBj 7Gg.   
+
+2eJbbb3W\ Ψ   f^/9v>9~0!**`0,\T    HBBsr.!#zI{ WX,&Iׇ[,İ0ǐe!   }H㗕(Bg.uFc\\\JJJRRbMp{   I$)))33|X)=, c    ^z9v\{P=   @ýLNNNMMMMM-{1@lO$pd2%''昘   hXf3)`t\#QEb\U?GEE&\=   @R~\HyaٙuIǓ\   1͎z}LLL5S'GCiRR;W   h;LH^_g9{ <   Ѐ$%%9OG,Ә ඈ{   %222!!!33ӑ8:sƆU0jpY,2o3   @9ud2L&!Ds?;Ip^Tx~ɱ   So0Fcu:s9F3"[]D]&   2LɎr'Xaq;))>>9P   aq;[7]U8:s1|2e"..?"   ҏDFFV.vgQpǛLA   4D89{#4!υ    HdddTTTxxx=\eF1!!O#   rjXRSSzh4꬇`08?@u    d.=#B$&&FFF&$$T]; I> Έ{   bDDDX,?ÍFb1L (99bT=,45ssR>q   Ѐ;U<f966699955599922MnYW)8  $99YSǖ`HJJrSfv' N    ,J\Ws0N3 9   az*p]JE 3   aq̿^oF n   h@"66Z,xb9EQ q   Ѐ8ILLp̼|.]    HTTTrrdJMM3B嘟
+ wF   4 z>%%eʔ)fsIsz( wF   4,Q}Fq q   FXB2 P    Q#I5> Ψ   ?Ωz}uc. {   zd2EDD8'rHNNNHHp^>    sю`0;zC5    >3L>\qqqiii))))))۷oBSe wF   g2p9YI    ʏl4ff+ q   P9nVi 7G     P    _llTWRE+\Y 7G   A ih   3qqq5xV;IdYmm    Yxx\{ љ   @u1vO[# 7{    \6e6flv>n0"##/wm%55GɱUz>**!=    .(t-%>>©ͿEGG'&&
+!É{   $ZaX"""L&BGFFF 0L5+ɩ2eʿ q   Z`0(G2YOdddBB^w*<<<&&_*,{
+s   e3b1Lz><<b$&&9hYϿl6;6,!!h4   Ng.dX<x=!..2LSL_8IIIIII]t   BF2RSSMTTTzL&SDDb8۷`:0 n    ,깬,c̿8uX,z>%%%---33Qc2*@E   ݸqaŒm6i
+U?KLLt$$$83!!ǌ @   2T'>>>((("""111**겆AӢ2AZ    @u9zWddd#0_FёT UT {    TJU~l6W3s$&&o?"   P]j݃*F111bxxxe%<TQp"   -<<\[,j=eC &j   P]α{jZRHmfstttuw%''3$3D   A(U$>z>))1]T񉉉fBDEE9q},Kll,j=    jYdddDFF&$$>z>!!A!CBBbccSSSSSSPX-**ʹ)SL&bIMM
+
+l. c    .ggXeƴhG*)))%99999P    ESG7ٜ(qh4%&&1F9՗c8G)PeTSddcTiPNל   Tӊ+f͚O<el6#""hL4;pIzU8c    <C#   pyd"vGK    <WXIKї   @u\rPc݃    T,B__e<pupv   Pտ'bW$Z q   &t E     P    .ȯW2; Ո{    T3! wF   H= Έ{    T3K =    .Gg.I q   Cu 9    E uq   CO. ps=    .e> Έ{    T q   {"vs[#   P]ON 5    E uq   G3 3     q   bf. {    \zr#   P], {    T N    P]Ιh
+ pg=    YC    3 9    Eg. {    TW\4 /    圙\ Έ{    T,˂\ {    TA 	    \. pg=    .$I wF   Q    ! 7G   ɹ O4   j( wF   E=T #   p      ^!   P]!{( 7G     P    .G]r#   P]t:   @uQ uq   #I 3     q   = Έ{    \6
+|     lT ;#   P] @@   ಑ ;#   P]>\$љ@ݢ(,j    .F P'N8p $$`0tz{    T#衴@RXXjժz+,,lĉCmܸq>     L6o޼I&k֬9rΝ;'OܹsgOO{    TJB(B. uN2d(K,ٰa_wq˷L   ?П@"IRPPCCCW\߯Zȑ#4iRnݼ[&   P]B]9reUtAEQA,	8/\Q*]**a.Og!R =:6N2W|ʷJ*>X~Ɣ^a~+/٥YYeڶ|[y,*⽔2ɹ~,U.+߅i(,G҇˿ʎ﫲svٲeeڹ-PTZBsZ?h,srH+[n}޽OII2d<ЦM$E    _iNh߾(<hJC70VYCWK'Ve6UJL7L*ʅGel6[AAA~~~IIF}Ѿ}   P]~~~z>++ãe/}W^2+BK!D]Q*(reKWTp2u *|z2Ao1K(8ۭrM?acIQyFu`%\ju*LO+*;2	BM+=+߰2s-t=LVْ$Y,GKZ22
+|-)˜OT+/STQ(Dwj]lY.]:wJ   $)88Xuرe˖9ˇ\"nwe#!WeQG&巰ZSǍ#(u
+KߵVL2E
+2e?;L|V}U979K0g=XWvGE4QTa.RaG<Zmذ-_z%,;YCʪZgIVء̡R&n00*-	Gʼ\򕽵҇AcX[+`瑩V2ﷲ~΃+:_RR}/
+!:vسgONWNt   PM.\x񢗗J-((())g/"(T6LhĤK0ev|
+
+QQHɕǖ^a鬡:np{*쉥˔_mMZ͍/|Wa */h*aibn*lmUSpYg
+^>>+{UL-XQlxEEE7n\vcEڵ!CF_oơ'     \QQQZZښ5k~7TPPзo߱cǎ=s>>>ҙ     g999ŋmVTT2tkW^>>>4     Po)r̙ŋoٲyÆ5jT߾}z}e:s    ,##cݺuǎڵk߾}5jTo&\q     E)..eã==      &      O{           z     ^!     W44   jl;w\|y=F@ "   P]'Nx~.]66 7Dg.    RXXoY֣Gnٲ%??f 7D   Z߿tҌb:tHQZ q   vҥ%K:tHhݻw^ pC=    AQQʕ+.]V۷o/Io{nYi" p+=    (ʡC{!IRHHHǎwر|rB+[!   P/~w6Æh4$hbׯ߱cn }    TIIWZV'OܹsgfFl6     2K.=s̐!Cƍ%PERuaر֭sP n   @Ҷon0&Md0ӮK$1bD~Ξ={bZ ܁&    P]Λ7yCt*0$1`*h߾W q   JifڴiZV	!=8~9rdhhhƍ=<<h. p=    *V}}}<(I#B9w       
+q   rFi    qz%+Q q   =ё82# q   L+ysf. {"   !Dlllbb"    ^%:::>>h4VBO. ps=   @jX?fٜ\~
+g.:s;#   
+kyʫl,gz N    +_	cf     =   @Cd6M&l40si    lNMMu>Rz`x!Ddd`(\GCu 9   1aaaɹKLLtĔ c    H||#뉊ھ}{JJJ&§ @@   4 B
+'ew<XYC @@   4,QSl    ab!Drrr    1Vy_
+pV ;#   H!Dllllll2Ԉ ͕ur= wF   4 qqqヂbcc!!!άh4V6E= P'    ^OIIq8l6QC nNC    #1L&ѥK
+ggweYГ q   ЀL&wNv  u   $666((hʔ)U {   '999::c @@   4 			ɹ>{  n   h@CLL"##W3qT0T3 9   !2QQQIIIsĪN. pg   4hz>**JLycP    h,Krrrjjjjjj[`0TDI{z ,,>**>   a1Δ!222229seE3PY,n4M&SbbbbbbJJ?P'    HqyF#η0qqqBԈؔ    AT3qrCK̇{   b:rDFF?W$^`"v   IIIIJJrL%v=(((""">>YSGʣ(JŭPOX,hN   @tSP>+V5kVvvSO=裏j4t *TZ~   4PXGa2fdrS)o)yh4ғ>!   :^o0F?vr\@`0q   2Le1FʲL"   GUGqbO p=   @Zz$IbX,SLq111QQQI]D   4D\@]듒*89$'',w@   4 QQQ5sP@8!P;&c:h2338_UO~51WEqdY޻wo`` ,  sHLLLMMX,z1t{!>>>**Ҟ:hp.]k꫏>JVDUE$#(Y8ec:Wv]\?>UBJ	b\f2kU?WC壘ZVԎ=Rqw* ײv1a>M6 L&Stttٸ"111222!!RiI2e"..{$--m޼yeWl~[>{੧o޼y}z,KD' aX7d29dŒRӝ=c& @gZs/Ny[_ZӅ~+I羻N3nܸoRz JYO\\\fffJJJ\\\BBSSS+|y#4hg::vL عs{:iݟg[h#5h^뮻;F  9N\\\LLL[!))1vOcf.2			?=uzjLsʊ(0Q]A?sL2gΜ)Sx{{2 `fQj򢢢RSSUN@=f08E ꕂqܹSͺoslYXupxgǮXg֭ VճWgbGiUd9-8q;	W/Kkx.e[:R_bL'ZȮn*"ߧˋIi뮻Ȁ Z  %>Iώꗘ~m un?bbbv>)(ԊDR$W4ꅤ.Hmy=(bm߳y6$5B9sP1VmW[5A?v+V<Szbj hPlMHH([X?| uqPWeff.\>?ߚoUgKVK;|?vm(XE)㟎Ae)sXiiiN߲7n;bEQ<<</7_:ujV(=Uoa/\UW,߬cYZ3T*FsK?|Vuw<~:e3f'O3 DTTTlllbbl3Xturicf ps=@c8/[앏?6)4*.h!eBŕ~S-WoӋݹz/s}w
+[qT=s~|:vBHbwǛ6jtq/P푇so^ؐ/g[=d%ڮ7>gm3F._<66O>Zv7 /JNN6LaaaQc2-GEE9窌; @QRR:dȐg}vl/aPliOi^cz_"5:m$Jv_9e }@?զ_.[),(V
+||:!CΜοer::߰m'U-gġ|f&͕mT.ƙ3g~gΫ¼- z}JJ31ͩ|Uϫ4 psT uŋ?>`漵6ewhYVz]iTg!
+{<{ζ|Τofgdʿw39x8{`<Z$ժ_{Ɔ~G=ҟΉ@I*vQj6|fUϳj:_D_|UV=#aaa^ p+Q|h4FFFV6j#)a n{ _=cOz*?Iإ̷姵n?͛8Y6:o!;ݵ炟Gf5/^VV>ؙѥK۴c?zlƝ;uleXޖbX84kVyaި;Wn!Jկ>wOzL h4111,GC n\;*))ow(W|@q!g[Mo'kͺv.κoyz{{hvxIc/]!cǖ/~]]طٞ=*|,Kh3g, QI׍.?}dZ47P}E񜢈.$wޙ>}Mv;F @; n|@ n%##'ӧLe_%]B\t`勏T۟޵K+,_j'xnB-.]ڻDJ-*I:}|Ai'-MxYH6]ص:]yإ|.3[wGbFmʔ)n\5C 3:snA6ŝ>}W{KVwM-􃛖zwh7}~+,ĿK_
+mvҔH	ʽ<?q3
+]*((Si)R%kրß?ygWX=:۠z|ʕ+{W=a< ͙L2C''''$$DEE]ڨ ;//F$M{vvw}mۦ8fy\Z%KC(VЩe%
+mBbO<k׮y9(,:R{IBl6$}@֗DLzMQN^a.
+z<h
+5pΜ9oVvv6 uWtt#1ikPC] ?ߡ(ݻ/`{i_K%᧳oX&GzQ:Hح$ ;@$OS9ݻ9URD<WqqI^3|xoIC:pDH#J
+'7W}Te^
+sK!cW_}5yիWu. E&d2	!RRRRRRo߮ɗ{#$?
+ w4p^zQQQCny*v1[յB%@9,?y'w:˒r3[w	wqYG8X{6ǎMK{xg?@;uW?>!5r
+
+)wK|r|"SsE"
+|hGwy+/^nq˭ *QoFΝ%-o}i}xke㟟
+>^0GIs\;]i9;m۞vuj!,ˊb{zyJJxC;/O}g+ޝ/ċƌR]ԺhfJg.˷;]켸o'Oj*Yǐ4X\NFQa6k qr,9rhEϲ %@[tv;pv4ՉVտG6gl6BF})#gSKU>Zܤa3gm<u 򂃲?eRhM[V;e>:{233\H	u  \f-[h4FEEqZjsVYzwt]#*:VFl_^j@XA/+H⒥?e7irsǒ[3mk&$pǒ{/^޴+/ɵjC?_7púuhd hdY^ qٯh\4zb mw?OK}>z_@:mN]l{f^,Km<="7yy+V*)B ZB[#sU-(0ӏ~k1}{e>%v(׃כּf+R| qJH|||k^ qPEٽ{70dfpgg^x C?g֯?C|s˧w@/EvNGgYr俛ZjzKJŵ?Du+~жe:1@>}+̶zvC/?O0!%%vvC# ۢP;~{I&<Ih"(rMp%ݺ5?L
+(7-ٲV8#gp??%KɍTBIe}r㟹vTlyXVl\st'>ĉO޶m[ ܍h-= {+u7xcٲeNzkV,׼F)<u*~7ovNan1m9jL4 z3ljhrm7Ȅg;vM #<<Qqmv]3'OiФpVZOɵ-[!ǒaKAY>q8{.oµ]Zݶmןf}Is~̔KW4zM*z[/ꫧNrГ =e]xoݦMc?ϒم˵B>Z~im}CQ"DIjSVZ(װ!]32
+_W=ge_F>a}.cb#%%G4 @}z 2.n;c4d?7YR3WV0{W^\rc;)_5&_ȎytlmeYtS⢜\f-2b=?ynꥭjh)Y>]{w됈{2 WDBId ྈ{fZ׮];|Sv2]ds7Zܓvl[﹣ٴ[l˗j}\,]qTSYM(Ztw?6%@9w+,<ׯ4iʕ+
+
+hg A 7F=P܅_)K	!B>Z*6o:?:QPJ*vNjݾGdevN>K[jO3vCηk6]XBgϙ3'222::}3  u=@dY>tдiF
+tϐYK"@#+=7=۴q,T^BX,K#oﯾf`U);ҏg2.|%թ+1f+\aճMHݳgmݶxBl ?H|YbbbDDDlll ߨGNNիz-I,jy;@u9~=|R.(MtWn={7׋2wn7sjC W֗JgxĢ.OG_\~9svJ;@](
+jlNNN6f`xx`ܵY,Ԫccz=@K/Z())qVpI-RoGw<]۷HX7@v#|U.dzxH3Ҽ 5"(3J?쾧c&?fg+YaUrϟ=a&B-%>>>>>UnhR$.ЕLUV=1ߪrDZVu?5lĮ^B0EU9ײe>6Ƕn=rŜ@V{o_33FLqU[Ɋe~zeΜ9ׯ={vǎjb; @fX"""L&h4!dJMMZa6Ycc&l6GDDQ	=h\x{{ɠ"|v)lf۶mw3;\%Bd(7٨(Xmkvmǎgi݈&r=ץ<ڤ&NnJ_-ц^L|񳣣̙3f̘@ ":s
+gP:I	H111SLINNX,QQQ8!:~xBB{7އeh2/ҩw5U[*]hղS咽ҦٿYSK>*	z~M0"J|lѶ??7-={)SyP `0(gv xG&[e4؊INNB=13YW^=q)S;߲;Nx.Ё_ݛMu':m.,V+Pb{hܣ{U!!!;w[U%׍$*z)ȶz>}z̙yqq1 b1Lz><<b$&&9r`0UY&iʔ)߂]u=h233/^p&MD[PiiE_CBzlPVB"]P6ff݉^.jI7=]P(4Ukm6븇rKjEd[̏i?6o23 9gQ?v2#551xJJ
+蔚h?dp<`0X,}vm@BuÇϛ7oĈ暱jiuA@m܆m;Ż;]V.ߵs`vXKC:{6%MtId`gZ.|Z+3Sk1(=rȽ޻hѢ o$)SÍF#=e8;uX,z>%%%---331dpn\yfKTO%%%k׮}7322f?a߲"5l'NXgmAju><XE@m?c[ҟ>u&(P=x`'s;~_3k}V*w茗W}\7o4iRv4,[#*H:/ҏq<^ ]f[U+*ڶ|ހ2-@Ʃ]WqXf!T*եK۶m۶m[>\S,*SILLt$$$;LHHHMM5͉.9>>l6!	 5V?U*3<c50{h멍~Jh涛;tL%BjŋmO]>yY͛xQÉ{åkL}ƒKnzdVmP[M3/X?lԨw@2KU5;*[AJS֊RUqX#IٳgVFybccHWZ1OrrlW&g2%6QQQ	k}tgݐ^1 {P/A7oޣGN'TJ%3SW-]
+hZwD$	Fs_a}ZKٴQ3;մӿ)ݻϟ??W*O>ܹs3f=P	K
+S󼤨CK~^dI~~̙3۷oO W#\xg(+e4O8~jbvzu{PtΝ;-_|ƍBnJ*D>|xכ{ʢkWffqFCK?8@~nO/._a}|3ϾөS>}%W-[pOK}1J@[}I;v9s&OܲeKx"տ;{#%###E(F@U0lG쒘xumʔ))&&Q{P&MV^gϞ~uUdEo۾Fb{\g	E'
+}|<N$Ϸ͸ׅEW=sAG[]}ɷ~~5j[VJV9^b]0=v,idT<,)/wz׿gϞ:uj6mۯfW_d0`4?$''_VOJxj7VvEFFR9=4|˗oݺuxŒ:|o煟v.Ư-mʒSܣi|us;u8r49mujl*'?{ͶnOk=ukU%**jЬ	PRK{1ܴhߤIFݾ}{5>(?;j&<<\[,X`0\5DF1!!9 ~ׯ^_ljW-Gq1|ZTR)(=Gku!B}U6l:ߦu]&@V>ݸ++PeYꔧ}szp'F>޿`vvv	z衃:wP[Os6f9:::;
+\_h40dP~ӧϨQ5kn:O9E/T`s/.k˥¼"O!_,3B5H[6Œ8r'/3漵.[jV?<?>EϷ݋}ڡmD<__[o{ٵkN#""h!DTT#ILLt\G.I	#d=@E1徢weGሮiL%+BkץK[84OOTԂS3}|==O煕<ѴwpSh؅{쁁tp_#lok契Onϟ>} ,QZfuѦ˭sNx#..gϞP+WYBIY'%%9Ǧ)->>3z}BBBDDKWrr# r$,fd2%&&::***>>ޱb1&)555111))ʧ2LR
+wUJ.iK$0`͚5?লЦ1CE_NȦ\VVq%ɕQk,xBo/1SKLR%Ͼ9?niySI_\]k֭x!qpY=ua}36m:gΜq1pWYЧ
+i4w!0iiiю.ZΩ+(qCɵ=+*{	N A}0jԨm۶TNŧu!kS~޳_^}`5:_]KǃzGNlaUKKOdoLs󁓦y=>QUyhU澗cn=|#nw0C*"vO[DelɍOfΜ9n8VK5tn8fd/Qe6M&Sh4)qC9j4KSƸ?Rb.~ A}۳gݻ˗/abʳj߾e7z{eWB"3#w~'sKmy	EQ	!Lkևr.Zx۴|^bȕt
+Z{=(ʌ3sݨ̿~ر֭[+?!_}U5Z~cVt:Ɨz{{geeyyyUқQ)켼VZyk-7eӏ{]E=Pf믿ߟ<PP?ߖ^zW1}{6#A}V[jիWݻw_t&}
+mܯ}XXƍ-\vGtJLKc =ww\~?bРA$K4ŅE/HIIiѢ15/{*)ޫ޽7qlD{Y!$U}	-IHUv#I2THYT\IrR׋6t1"'ؾfCAA#=.{3,&IBQE8_b\tϹ-h][G]ky,x|0{)S{bZ. pk=缼s%KlÑ_+.\ ߦxӼ;vVʗD5f7_?ky{xxJ.r7{,k͇8(֓yblI궲bUE]裏:utpZdpGV^MȁA\Y,4ۅզh5sYEŊV+ڴE?}d^/Mź.f?Vd<̷YgOmoTt?Ϝ9;h޼y#EQEQ= @i޼AwUpFq	UW^޵'W%$U˖',UaAAqv6C#y5#_ɯi#I_WrܹsQQQ^Yή\sopVCI|mhztUݻ}lt^U*ds.?QTz9k߰b^}[ga[oɍeF߾;>ݑXUP_Pj41~ܼy7^"IY+at 
+@"	ѣGxx$I~K乨8Ϧ<a]]\EXfC5ouQAA4Q+.	ݴѣK+-k9Ѩc{ƍm;I==۷kSmߙ?4]MQn3]s/BE"$IH7]qnn2nl~p_$87<;Lμ2?gj?QԲ&T>~:x}#GpZ *#˲* P[{ ʲo߾]=.XGQ:ЫWlۑOgTu0zx4|~j#>=¬߳Ov歕Z׮];pG|H?K&4Pj{oժWK"˅wk>u2Hn\۠ S,EQ\פVY[;g*rTSo<o*8(k-{Cf꟞YBל]F>5禧>|ܹ{ 'Iٳg|IV+L-ZLQ451bĎ;~]voS\<ݻwgG6w&+}qvtSU-]\=ɇ4i55oU:p}=fϚB:nGoJ^1!Zzޛ疳7LR	!PIJd'oq@7v0C=mLx?;5}@m~7]?g޽oǵXEjiTs94}ƌ}􉊊
+CP͏ht ei\P߿Yf8Zr>F]zcF[)򧩷?>`ד؛^}}|&$`x=gvd%IVe-|x7tklV5Z	!Vv403>/O#}5~~ZZȹyvviԈgo3e؈7س7íޠgI>kRfwj_}s^Ӭunٳgoܸje0  Pg֭[NJJJVXX\umA??O,,bf_үS,qW姵6~c<8Sֹfͦ7v><2{iޓ:5oX'>|A=<;-ZǨ-r웷f8UԱc+.֮s*t·9qڤsh+ӎvY}lKw÷QM)u/$Zcx2i~V-g̘q뭷X"//#sb wF܃BviZJOO/8u>F:wm6Eh|'{0iC1W0z&oG^xM#StܹQkS4oJ:5'_i߁s{toRR"|WVzjR=%J噼d?YR":u>x"IJ-JpbIf{r7\7Vcqnyc8.겏Ma~a=\ddʕ+8`9S
+Nܹs=?׏tͳyn$ 6lث5J7|pۤI^~Kz+rǏ_W::pUΡU*qY$7x8++Eso!$)Z}w`.	!5nV):ҬMj+##⥢ ]&v˹nFFoU)nU*{Ȟc=cƌo3339`I$ܲ"AVCCCо}ݻwgYt{n<Ex)ByOVZoYGk>[l<6x\֭ۮ$*eEj"PqB^>LUW%$yN[ʹtEfJ%hyę[F%%%R`߳gFVYˈGFo\q[;**k>vO[g޴`믿>;<ةF' #AګWC~p]Oc>ȓǿ.ޱa#Z69J:p~pF3̟?DKrIxj;,5ïGYrw,ft _Felv1./5;ͷ3yk4SkdYvOngeK,*KsKWyx ^ZHm^Z1;L&L_R郆љ14&qU0;6m0`6m2xw!6UAeE@nzڳgρC}{$QR_IMi'NZg8)ˊJ%iƍ}7y:eoÏ.tW3n%8{.;lgf?{{x\s+W8y2+P'̬[o255u̘1w<u\э=Ԋ|~ON?rHv>o%6j&}^+  `D>gB!4.Պ"$!D^^m꼏ܳgOAEV%V9 _UӪjnfPB;'.z/ݢ;M\2_V˭y5p}_xӧO2SNh 7G܃'88G^v֕ϙ*{^s}ڛ?OYM^;pKyB]w	̷dcC\ss>O!M7ڥ<s6{Çvf֣(ʚuG?lu=-ʓc{9oS|'^xè9YWP㭕OoL0ƹתZLѮzkݢE$):8(KI+
+9|$RIb)BѦM=Z+c9BMv|x\Av-}}g!5Bdgݯ%Qڡ乧S'jYˡR<{np5Mŋz뭷v[HH$+Ɲ Myصkݫd,-U-w{k̀#J=~ݹ딷q]=8*ШT.˲RXheC-#7=*ԑl7nBұ?(=/M'||tZMo >o詧nѢ,7_P%	UΊ~߃>sZ'צ\ǎ{y1{jY//&h~CKŭ[yk|h_hFgd~K9(t2RK"==뻫:]~EKMx{X5zٹ_}cac4&PgcE(qK#ٚEEFFvm;wD}EO.qFݻCׯ_f͘7($>Љ=_~2'[:>K{^τʦ*|NQuΓ'Ϝ.)i@vm_B~NMݹwϖ^=zdhub|ި7Om%nСqfW>7Ώ׭[w7LylaݿU8^Ԧ<9㯿ڵ\3W:}^K]*!8eUL1$GI?;bFlesDfkgs윑\;6i?M3muە/vдYS]v|tfE~Y/'47o'_ҖTnTۇ$y܋ƝMcǎ5kր
+ Έ{-Z92==ѣC-*Kzv?̘>99E~fM_|Y3UR~şK4XzƮݧjյ㺽!`ǒvZN1s`w*ҳG˾}ZWQ͜>;ժmۏ/__2jXpڍ[>zҥ_~{5N՛/˛4ius"$u4?/_F뙍e	a|uY:ulyț蚁RteYR)6[aQQAByRp#~F>Ňy"fN<Yw_CNp(]Ih53GOСC`[F<=w'1cȑ#g̘ѿQ ps|ׄ׷wޝ:u3L^R5"c9v}Ŋ>u>jKv6n㪟{>.yǜ{j_,IwwO.r %{w\׿_ׄh4*!s?[qci}Kj&oؔv߳_X[//m=>KOg?nCa4ѪE㫑̟Xk__yUh(TŴb^i\BtݺNt:Mawl߬P#GtOQ?*4rxG7{p{5Π?y@&߿cl`k:|:k~{jjj@E]DtHCq(OO֭[Wm۶Ͳs%vɯe=z9rdϾ|En?k׎6^|ŋyỻ_oֲ}TSe?'OY< ޹ev[|6՗wʴo~BѱC.sOzW޻9r3_qEol;~޽{?XϨrk:pi,k޴G70v~;j뻕7Bt꠹>[pѮ//xgeuYZ	YHm-=<gl.8];׶ʺFImew/WK]z!'N駟9\Qw=; ̅oРA;wܺu%-;']''R˅[.5k?bXǦM|V!G;?r,+Bǈ{Bzv̑gCF:*ql6yɏÇutU}G^ܺ-]1_˪S{g>bX|#ﻒu%G|gokZdt2I/|1c,N}@+Q7㮑K>}&qcZ5嗓ckCq͔v]Ȉ6BMSo֬j_;0;zx{9:Mc],kӦM:HTnZgo9?'̚5kt4 ԁ Nkٲe޽۷cǎ޽qwKެ7۷oAtRR-[Ӆ9E՟l믴K)9ݢy{{yiKJJĠEtxЀBBcaC;vjpmZzԈN%=NkQا/;w"5KE/X|y-zn-/xcǎI\^(O푝S;zzmvEQ=YO.>y⣄FtmӺB;z$!ϭ={>ޮJ*=\1捛jSIr|zidUm>f}n}?[oM>=22חu=!3U2	Аǎׯ_~nS@kmwR'661.h5@/!.oޒ>U;}&k㊢cڲ{ϩ?7s+_w À˻s˱b[-{hY.L'&Fs)zÃg|k\㫵eInαcpC*d="/{-[ܴ~AtAz=lNvTk4FfZ3xfaa3//9mT~Y3Ҵ5Z?1x]{|.'0]UT岟ɵsGG*zwO~7su-+P8*GǎFcppӧGH."+·m!!!۶m۹'.;bXG]q7Fʞ
+K_Jx,=%vl!v<8ɔU]:~"U
+J3q|l/	!FتeuL3_r3vmէWV)O/ٵsfj^ -<[͛v/m3[o5j۟/["Q-jL{//EߑhvQwܾ]M.ݚJxؐԪ|cO?&lZiSkZUŵa}h=w̛t׿;,sNܩ 3ѣK.k׮?t\,ʵ}#+P=>ls^^Zbjxc윢/nٷLk)ڱC-<=$>_2sYOڥ٘.ٚ~<痥>dh\Td=w>syy>5iXzƢk4ѝ[ ;?g}y1jf:~<CzlU*,
+lt>yWЁ˧W/JIIiڴܹs{Itɨ̒\ӯs;UY\i^EIKvͯo;Oe.,Ro7B]:'}}gG嚱޵M6ޝ~7|3ZjVp		@M*h|||tb4>|zgFM
+lݧSN&ӯG{Io~_L'<wL9$)n;k5n\yW_iؐ8|腽:|1m=䚐kus^/?9lHΡMo[s+0ǘ.m9`SQ5	=:vh2&cuvA;^ݻwml>5Nt֌+_{رCNwgWIVfB//XE?B:pNYnw
+m?p@׼<;/#u+.*#mSg~o.jl6,S˟W=)yUrO~ԩSLXp5h&-U9HͶk׮wyg޽Cx+9/BJaoA3;S9EQW؊ߞOiۋl5ߺ$޲Z'O4wMУJׯ|nݺnagS؛W_iӧ/9cz[p]s}9o*БC^Tq(~ZZŦ{>|֬Y]vne]w͏ptP}-ۿ|iKgGwt?ZݢE^襱JR}=pBh`kW1YOro]3ر{I[q֣U	O/x{{ϝ;7bɮG33^شi=z-kǭ];uЧ<yrΣ-,8`k,mMoo[wT9.G%KtkѧO6l`Zp?Cq $I
+޽Z6LZ9OG0h{=Ɓ}mmxdni9~x1k֬:ttE3qk?/JU(n9a!֭i'N^d/d}@֜{W~<Iq%ڗG<5u9s]}|nY+.E!wϞ=e6S"ض_>}=jڕ]Uf}xj/]?,wO>05##;BQvTOLygY%QY
+H$_}eJQR3]6?߬yڷ$+'\2`5|>i~碢"v_ TàRu޽k׮fyŊZ9E]ыf$|ЛGsox}o}E"[J(y?xdlw5jG=x5E=VO|~׮]{{e7]v0˸~t݈]EPvvLS3ZMn~5i`I-]6%9 [-{oVHHC=4qj3 ԍ;\ pԩSnݚ6m;Tر,HvyBJJʝ3f?9ϫc姳^ܹ?{\w@_O7nxmV1׿jSrs}i_]x~>ڌY涭<t7˒F]ҵ/mUr_b)AwOrQC}ٛn)))"\e:s@M ^6lXhhhFFƮ]rNk"U[tm,(eo>b;![UiT"Pp3*((뮻frgOZ$!Kї_~9y?v4	AG!PXh/.Z}PMnh^|pTEE\w^)&w@u/ιgʏS{n}.gԲ[Ccn
+'N'\xngm\;UE!i 	 'OOϖ-[mٲS<Pb"J߶o-6o޼oO@g5kIjxkempϮ]ڷo?ޙ6{D}oO^cjk:>,b~BvqO%ݺ6)(nrO%Am|~}w_ߴ˽OSr#ZELrk֎wxw߽Əߺukfmɲ,(O  Y)e	M h4rssf֞ues*p3<<<z{A'-!xmަ15ǩ359v5ZOްk׮kZEYd,~UVnxsAu;ԭe#l6kYY۵ܺ`Zy5X{u%hb	?aw+r6Gx9яߝ4q7x#--] * *ޭZ=ztffݻwOVwmUMj5eիW?86|hg!?_T,+8)sGKC:|;WW>??~zVv**\BGÖoWα
+wݽ{OeYkkTWZ-;F,+;pdU.kK	{>|:,$nfSڕWٱcvQ#}zۺPf浭ZpIP$QܧXΐtoan: ZO]eO?޷*^ͪ~i	&M
+e/H| Kzm۶{n۶mDvUck&,ѣGsrrRSצ0af9Nuҍ
+3ʶ:_y8Y:lJo@˼ZKT@U'*.*ojeQ]T!^[Y`ZAOl=gg8pm۶w3Ɗ]Q*V?o!okz5z[0/]kiK=gkZm뢷_5>7ͷ7Zrlu#xOwBIӂeqqqQQQwygt  u_ΝaÆ{?L]C2;_C^ϕh_S*V(x*+{^yRɋ:P,N*.ۻR~~СC>4ųJ\3ͲwV'''/ֹDr_.Omt6^BLKN+RJ`sskfo8waȧ_\ΐ'r裨em'u7uśo~hC-R\*ԧO;wn޼yz{PVHXir!h6$|lg:n̙f,W{ѣwqG]s[2W9N7lHH`JQD 1ί[w8++ҥ"I\Y'3\bܺwٳӵ픦H'of<п3gFV^@-Xz >>pk=@<<<5kcǎ#G:tȻ565gfVֿhݺu}[_DUh/J{=<<~	%:pb%'DQu{zBys[*o/mfNUOsejϼaI?[n=&*Ejc6쀝K|=zx'^@=T3
+ ާk YQZje4;uꔖf2BV)P[W͝raÆ=coh,{foc۷߲$\u@arb,˖-[Olޒvyvuݢglۦɖ22i'kAKc@XIHr-?+*Ety13g\lYff& 5c۝K -{i%ӳ]vpBzz}˳{_ߦMl6=3pf%zT*gk/_;7_E9ŧOgh4[o0lHb[p#]!4/.:u.b^YS&x?Lz}Y۶m{ ))dDPAw9g}qQQQ#Gd/r/T W!\ҳp֭w޺u#GlݺU#83mjm/?n-[|[*f*I۸-y%%%/h4&BCT"?ߞ+냚>|xhsn5`w7ǿmxT[Vյ*J[w6{ 1jqqq7tG}t9ve*pu <T;v˖-;j ܸp~:+${C|.]՛oWk4notAeڲJ:wn{ɜ\
+|euuc{;Ö&ȯ&ʦmn	/q1^{I&;Ne  @=	J?M{}#GSQyظƿCxVXpAek{/.0s|QUG{۵!M5e{Ffna8ץ|܈i5C?Oݳֻ͏e_YSs:ѳ4/-8q̙3cr&P ~?K UPݺuڵCliZOE"!TXBqEJ?TRʹΕYw$Uri^f
+W^]d˹X(pS˷O՛QV]n#8rT,2l
+Ѩ<}h{Ix{{۽.:?ݻwlޘϨV1Wm-..Ӷka#7}̗4ZxeǙ\Hߧч|g%I~F}d[ٴ{x72{W/~oɓ'wQB @&  O>.ܿ={T'ZWr\sE\ul?
+-TՌ-\)2Tʼqjֈ#梣󋋋!!!ݺ]vrƍ}}uB{~`->ln<kv:.:#q{QIE];o&9kE}OL6m_?݌^\v?|wK.# 74P]?E)2u@FS:S'yJVx_>(}xD
+W|б@+\CK:.mL$ʼ;QTt92}9pMoUfO9.2;U>)M-KZ޺u;%Iڷo_=Jp{a?3?LPgz$!D^M-?t_;wt^^ }P&gsls͵ͦ
+رcN$W}ܡCnݺ欬b*)c>/,_\=쳷7m{eqYTsy+H5xQ|dg_^~ti9cM<_[nƍ͛7h*X.P=Zt+Ŀ8;CSX$[Z4V	!B;hoqjݹFkԧ}&HMگy:tI&Mz좬GR$ɪ:qD~~~pphl۶-Y*S{W& 8zʕ+?Z}]wݶ̙~W,\9U~kW5[C6,!9{ٙ3o677wڶjY]C5+x|}>ԩ/?Ϫ[w%B4+sCA:Bi68s朇G Ͻ{ߟnil=.9rĉ~ymv#_uҥe˖4>:`De\bUKOOnO?[n?s4-7"˽/]zy֬nIVoXx.]r>r <O?z׹yu낊C&@.*7V[:ޣO6l6[ѯZ}U&rh1STMOO۷U;HIgΜ9qz}fz=W"̙3_|矏7n3<ѨQɓfqn.ν1eʴi<<<֭[ݻ[39ݺu[rM]>uFI*7/ҥ3gN-iо⯴K'ND{Fegh]L&??v):WU*B'NX,о}6jԈ%8B >;pk \NNO?PPP0vϢ_(=K79unh4|ͺudY{jU߬˒S=7/|ETyB:p-8wް1ZbˊĖ/PTn
+#Юi̗xyq.dYÏ
+CCCd+?tJ8sj
+
+
+lܸL숆 pg=h/_xC>nj}t-r񧮽VV;`=\0P4bӼ^JMM=!8>Q#}z?_o]VVsxyl79>M`ӎn]9ݽ{w,{Q37nxbxxx˖-KT# shVZ_ٳgĈDEpAJOeP8~1cze!Ĕ\QNdZo|'e!%Rc<1eK]xy̹Zfj'\vp7Ʒ߯vSZa_׻3}tPEɪKn׮]ӦM۶mpQ uѰN㏤W_s8~A|ģ}j4ov۶mYYY3ld5)Lsۭ<qzJ*bG'MQ(-|uBwgѭKs.\̿{bQVZ=vҟ˻9Tʞ;v,''cǎ^^^Z-ʊF m1T3)5??3gμJJJ>zA>-iu~gv2cpȑwK:_Y{4|Ν4%?gʲ7{=斤?8ZB[-){t8+_g;<?4#3k-9rBO>+MRy-[6iÃJMIr\@oU܆kw܀8CzoΜ9B>f̘>'OJBfYpa~˖s={G~o_RZR\r-.Z6k֬;z'O\lݺZVė#woVgZrͽ7xO,͊Ç===}z.ɥRT@eX233;uԴiSoo2\] Cv{zz+:TRR2q}NN֭[xG}4'''g;9)eQccchѢ_S.]ru=}͛(ʃs>5wko)IbæK{F	o#{꽋DI"hDwOԐ&M/(2JelZZi驨]8{C<m۶?NQ|o(,,\j_|_~>w#A}Gyd֬YΝ{<&&[;:+kN7oQF>}/+rU{z?y7J^9љ]waBkZBxxH*~Rnqrk»G6{2_'j8`zs`:333==Yf7b Ot7h͛7id͚5ݻ ՌpK.]x#<2GwwaQ]im;7i"X{Wk#)L7u5mwIFԨQ
+P,Huƴ[?&a	 2#{w9Ν9}{\$))#FGaqq͏wG[}ytn-sݾS:OG%jӪA:^4f}m'x<V{s5}+.IRp|aVXa481<##	x]UTWM	ZM֙E"Ay)mHHłݝJ)ooզjkdzw#x=qV,''XTxyy,Й x#F8nӦM^jUNNNRRҤIִVqgϞݰaÞ={T*{\.@}zÇj7@8nsmy4gxwrhrjLջhw3tTC^8^]]mZB?G_	7f^YYY6lizqT ɐ]@;gxK諔o~7lDn`0}p~|'Aߟ$S~|)1"==T*,t1,nGDD8=4蹆+JXtL*v  a*jɑwްaCzzիWsssgΜs%9K\|y7n$IrܹOH\A|-[fϞ=!r#õܠG:xb_o-ʎGv^:ظc~vv[i{Tmf^qT[sƍo}**~6j3ϐ$uV65y;K2^	W_]h%A">wǡ&54۴>WF,Kش)S'rpϝfgϞmjjݻ7X
+adڵkb_~:!Ʉbj^ͮ=	osiI[M ewϩ&M7uZݵjqlNDB%vpðlǿM%nylmZxӛնepo>r`:6wk}VmV˲,-o塶o}&k[u%+1l_koz-V<-Ν;['-NRpED9a؟:xͮkj~S;vp{ө;miACm"l:  `ʔ)ܹs~mFFƈ#^z{@wڵ/_\"<}?׭+((6m̐K*!w%|IdX?RRRVZq'IIA,;­[ڵh4>I_uFćb<_K7oаz|?o wðE~_}dvDbŦkԣ@ ڭKJJA@@ s!XeE\D"=HBjm?`B1n2cDy-5?y*:װqkՁܠSXe<jd@lw޼)-_x6^۹w4}!=cͽв#:hWk#-{չԲئm6?rh>mPG$o'RK/uPk7Nr*e(RsUgpB-mZmcg-ijZF:(y26xԼ3g䔗 \CToٲeuuuӧOgUu5*-uq璟۶,_>nܸ/>}]YPt;b+Wty&{LwҲy!Y%gD|~O-?pÏk~{6π3FYF2R)X:vw^0]{fstt4dc)Y["\]Q__ߧO wwwyЁ\MMvGyXEc	G_Z_4xS[=yӮ͎`k5ztV6>j7CPq[~۰@ch5o=63-$\۞j~%qlљ7 [	k|z'^jK
+4kVuD[@NfwD+Zu\WkΖsBhC2
+Q?Zjmj_TNmr3ǋfjjmM20dw|p ƲN[vڵkfɓժTR#fϞ+6l[	B%Aafz1\k֭V^u~f2͞-֭[w1 "u|8}%+|Ⱥjŋ sGhȅo1,^W<lrL.+QSS}||$	z@'Y,vzAbN\ːD۠ORH(	0av?ۖlqj=.A D#^oaô*ct:]uuumm`@xLpa;w[tBJK]уPEPW[">>o^\	֙ݻl߽jTi)bYgr1y2A7n<|l~GT%	1VC	j	uȑ|jp$jQ!륇EӍpڲ+,,իW\wAgDEE]pA(8.HӻnpnzC-Ki5xί*#8;^M(]?oDPqllY:[嘹mEmۗmI;y
+MEi7Z%tpju:z߭nߓYnl7gm<m+\/Sotokp5{[X,EEE8nРA#F3fL||`ESTVV߿ٲe׮]>}sSbfCSYYY/<7-6!z14;;{ĈjD;,񊀀[fMUUUDDĜL`5"-{	mCB1|E###'&hb3YYY7nt  b߿={4MSSӀ&N8~(X|_=@MMMvvUj:T\>u1 3gN Tn;rH.zͯ333_2i55-[^#Bʕ+yy"''11-_(nٲG?'O  :˗m6[dd$@sb=R"""!  ]L۷oڵ'OX,aaa#G2eJ߾}b]Jݖdڿ{ｷq-XO`m-fw鬐ƀo/|/%: p˼<t#GM|!;;ةSʉsv!\XXIIIAAAEE?
+RpL(d\dJ/8v؎FGyN  !]v!#53/^JׯL  pw~r\QQw}wqoo3f̛7o̙|>np覌Fczz~O?yxx+<XYY]:em퇫W7663.
+i@@.&LH,.5pr9n8{7$|rAA7솄UوTӧw>/ aY?
+ϟ?k|d5ő	?ӧÇ(N	u  ܕ$IDDĬYfΜs&4p^8Z)))K.
+?"\y$VOϯ?ڰA>1w
+ǠLRbnQFÇ!+RxxxYYY^^^nn̦aNf
+и 2@:APA@ mLkO6k8m	v+;f0BBBF+   ܭBaHHZJnb;v?_B/Z]_O<J}{Ŋg>zw3%fY;Pe0p^^[~xc5:t[X؈7)IRQԔ抬^_o_"̙3{*F,p 	_疯HG?8)ɤ8cMxܹsBpĈ>>>  .aIE;w݂jr'|W_8>o޼` Fb%Agݺ/>裟<|@\#߱ʲVǋ)zJŭ_d2aʧ۶_H+CħQ,~'O<vXSPЈdrȒ~2hРb
+Nq</;Rs\N< 2?;w.""""1P!g^B5MQQQ@@Q"""N3   ppL&SNNg}ϙ3q76&bY+op	&|Hu_-%,V/Oފ+_+Y|;dp/sXqwEGmgO>}ȑ:jD~|-(T_U[[\\leBHY]ɺEʣ=cϝ>|,1P  B`pdj'­$]vY]]V   	{Cٳg-[駟VUU͙3k4Wfpbq[6'$$|da&0alO\^:adr$bv;f0Ƒ,M|>rSF_JF
+!p6퐄q`}"=|Hs@SS$I^_rի+(+GrIo+W?~DC2u't7
+C>߷oQF)
+   	{bŊ?ƛLBl>&OiSGcm|;ϱُ~k|?B+~c	|c'_zewXo?1tui(/@yyTnAȑCBpv+2n>C(|ܹ#G!4bH?n9RO/^4՘{x4Gr0iuFsXyB5fK	+S7!ÂQ٥GPT   6pp˗W^6mZ̙4-jhp1pB	ow32ѯ_?IJkݤtzl.IA-]PP`SΞpIژѱzww5ǟfNL1C!{2d|gc7aAJ0ҥKηXpA$ai:zZOȇ0_r̙3>ӝCNKpDkk***ƌV|eSNiژÇL.   "6sĉq}9wdOR[uǁ9i௿w4V$uڸ苯6{"X0y˾{@!BX9*^ޱt<b#IDh@?ϫ̿>qߌX"!Ͽ슋'Feaցj\9"77ȑ#g**N:>M{l߁kXŋEEE5QXߋٿԩS{2.Pc4˲6r4"Z=儗.V bܸqD(뤙\!#JOW߿ C\&/F駟|}}P  % crʕ~ǌIr`GIp߹3   'H%ݭ&b;,g+!t7~Y@
+!77l*Q*;vN2 pOm=w'##% ؠ~%4Wt!R*q!A5IB&E7aq((dꕫǎPZ5yr@Sc6d2,	~2NY]3Μ9|؁!A94qaX8a°.pm{w?̽TTb+ZsB%Ia t6ZO4Mhhh^sL.Aqg䔕jZ- nJQQ|WA  @7DB *--ZfMEEEbbEbFqPзd^ݻwﯾx%&bWfiΙG DM/Iqv;b431$	 Q /OSQpgtV
+oo93)Z>V-Z_h''tTq{3f(=''`0<=<՛QWg{pGE="˷mp~r1PPXWXXrq>.+0پt!ͯ<]H%oP(9Ν;Jkr.TTU	Ӆe9wwIx/`wvۮ2@G'
+QEE		$	M0ׯ߳gn;~Z2  <poCuu=5>|yxx7_5 Êm1'B葇,Z٪ړYw
+nG-n7oN;O0t?Z`ӽ	6u,EP;'ozO9;ԾޱY[C8r?-c:͏w}!:;vOPʜG(pod;vGϜ-jMVkI+zՕcՁ4%=@?JcӦI9[muȐ`m_|owznerD(o/Y\_҃g>-qg:}5XQZ@dHHB. 7ŋ7o8}7n]u  d.ׯ_w͡z1ڥ%9t]8΂/zwI"&nj,",^_8H=ĲE9tP~	C|徤ʷ($
+9o]b1&]Rv}q$	e?gXn~usLPi'N_$rDHirw/)))**vԢARL(y&ٳg3'yAIzwMa;kպ:bqozܼC<:#OQĕ78&GA~~mт&{twt#[~LU:y^aȑ$ꚵuf0>jȠ>}|kk.W_XrqIʇfo|IEݝ&Mت\__!CŉbΫ_vqA垞  @v!k4wرnݺ/ťiGbҥ=_|P(^{)	F+mXVn=s6o䈾n|PC#u!}N3S'#4h3Ϯ>,f>rDPYM{zi\\'BU^̂	#	F/5yzP㣎ԨCrpVlt_"-[_ye/T%%"HV^}ŵkZa9}bђe-x8>Ow`Y^QʞB(/8!KFQp2q55ٌ&+GJoΌiq<V[k<|$B!G̘q*]!:FsFD<fFC8566e-xs.T,]vʕe?+>aMfð޽{=Il8*%3|}}}||b1TgXv޽yfHi:$${>|СCt n.ʠk466޽-3gjk]yF_qg9r䩧ڸ6ijb5zJ3^\epЙ%%%C X_v4q AÅBL&yF1(Pa!N9CEEȪ!b54JJtpYfU*)yW^x!>>qݺuW`*0qN7zԳyђeoIqt1qPHuǱq~_4AA*>l^$0e2M|R8Z_XT_Pw-RgbLoBgΖ]\0Əן}7p\M|}oƫ	#GyExI}aCC	uFqڳ(..vwwG|g0dGeee:NTFFFK(B_._VTTԷo_>aXXXXxxӧwܩj  [p]uuu.\hN{~8qLUðx{q-;r7ll7Ƽp!'XCWH#-sG"		__w'>˲F!DQ#+PloaQNO $I!08'pU۹O>lOX\$djh4nܸ1c[q]?CG/럞y~[^q/h=~H Js"t%f
+?*kFrZ?IӾ{cѦ;/+©S$~jEMMULr"IwӨ-CT*\4?''\&#i8Z]]m2T*UXXH$((:vÆΝSգF"I0__ɓ'DC>}ah(  > n]cc.\/WUU{\g/ݒ;۷Ϛ5+GxH=IKKB~~*Gv;WWgP*$BҠ5k@EKĔf0L5WhBk,XlE!w7Jqj	 eZ8{weߟ0̷~&__hlR=cƌ7n;eF0YpJO<NqWM!R4~l䭭u-6ӌO>>RP]W)#=
+#s~}c[>%a\ng+,._"3<<$̬+e'J#
+
+vȲzx8.&&ֽ%5ZƌDIIիWvL&STLf:t(== YfEEEk?~Z.((ʪ jqb9t͛333|nnrT]ёJѸnR:cƌ]KJ1S)&3S^覒(2i*58JiӁK.].z矿Q$e;h
+IX[ۀ mʉEhN==BVcp_~NY_NPUB!x wmf>3C#`]_a^/۶m3Ϳ8Ǆ}L&
+(َaXLovcnָf46dIzpfr/U.8#=U5K2iǳ{y|Ν/`s\7>w<B+_O}Z~#Kql'(+ʰ0LƱ9Ecyyyb;00!EA'l޼b&M*,,t qW^'N=xѣBA@ =~{o7xb0bǬu֮];iҤ=;^}sHȯk
+&!d3ZH$$!dj:~t1!0\WBn*>ys0h,#z!BO>k)~_~
+r~Gw~ҤI
+";;{MnszVHMr{~s$}s]; |8ÌF-dPqTq}ɱR?@yyJǎG|-A(.V.8pvY$O#RMN3xDQqy:mFYsl#X}kLwjZsߟf9y66@ղ,7` (:/??ԩS3gu9"h̘1͵ZVZ  ^vGy^D55偞|u몫Ǐ}r*";	p8LqalN:&-|ǑtKX0
+B\$	ZpbP<Q"k~͛1'Chz({)>uǏl$ۃC	9><kn엓'O>X^M`(oB(\XT7JcYZHaCCU-7P~u[?}9!!n~
+!!}4K_Vx!4vLDl?'kUJEbtngk,6|Xh`֒`GNoc&  $Yi&  B!HEݻ3b׼aͳgF\  Ѝ~j@2/^\n]ff&IӦM{NB]aJw
+VUU5vﾞVPؘn!s;y!!R)"Aa2|>TDbnwDݭ-(4Tx//8	)G$8N|&^97M6+*+]97<={;f61?3܍w`hpѳg~L%''gR0(!ק}b|e%MM6&/pZiT PFɢM[ΚL6-$O$^Wg\T\cDf֜._{l%޽d'>sʣcr'Rծ=	_= 0=;ʚ>} >sVt-/(///  :/00(!"Ǝ  	@vs222֬Yò#<T~I-<=?aÆ.M(Fkp/Ob!TW7TX2^H42"ȱCB$G,baPb<a'O!PIi`!Iİ`dB*8{hxc}xlNYxLM[oΞv}ܹ3<2ه]>!Y Adٳg^9Lu9>rp^YW[?`BBM,J\^ѸcGim^[u+^$<Μ-:B!DMHvic"!ǦO#U'DGyB޴i٬WhxS'LCtuo0HgݽLU糷bA; DD"i}jaXsoL&J!  k M 0̵kvر}v2}g\\/n͍Ǽ=*[=(!TZ7֝$ 7Z[ы&'aDsx}PG@4fT,ⴽi5hΓ~98Pa!r!=wOp9R'NoƃF#rvWWfI$WX/VFs]]n%i3o=sӧOϝEw[Izw'=dPL&=%>>Fǒ0tpNonqE8&	BƎشe*Cb̱Egϕisi46BAGgCRO<YQQ1dȐ*GN܃ѸVu	d0,   _6lذuVN7bĈ'LzNq˗oGŁH_PnnW3Ç*BFp	*JI V邧(iӇBcXlg
+#a/7ð%z7O8wr99uXSx$ Ү\~mM	@]?%Q_>+W^><˟"wS_y奱`seYۧOqW{.VZ,v/h!0\s>i*aCCd!FmsG#;b¥.]B|ߠAv.hd,9g283t>>>BP$uiŵ"  t7PMɲ?to/U\L468H2/8EGӻ?|^|/ܬo_Ξ-pPh`ԡ?45!bxexaa}mb(e0ʲB4B5k)CUU[~th7B5C|aY37~[Gݜf/\?[	Ր9%ù͜1cFccK?veM~7uHĻFs#zCi(Ҽi˹{gyEcQI-%'c3O74t/СWnnEM[^̭DG7w#t/d6^AAV
+
+ay~11ܹskP  77@oݺwIOO:t=_`}=n60J|vR>ހsP(ؾ#ҕysGJ%Ap>~|iabLFF{Y,vXV+3>n	6p<C*sԟsN_#1Ҝ7)
+g8hJYɓ999Ld|U8gyyyIII^^Vb9a ٨H$8w\־ǐ<ݳ/a^a.Wl~heB1xKh.Y,v$I @d=r@txT*E-khM5z*{?R	?R)MIէG:4p_**u?^N[B#=qMc#Q޽f$&vD.66Q4445*00P&܎k׮m۶f5jذa  @tS[lom?3Zǹ0*V0lOGq&ݴ#!o>N}t쇆
+/XӬ6.팟ĠƊH,B<ޟ[9g|u?>ӧ!DWf?q)ùQst_Tl8}Fi
+N+ÈtALPPUUUqqqII	eJ^}( 77sE%1<S#cnjámw鳥Eus+/V?QS)f:Tzy8vbz(¢zәevlccӥ+ė_ߴ\pW؟+dNQĖmu:Tqdyqh /Nd>Z4c5.r89Wr־+9o^F:r)ێ;zĉ$G9g&P#Qvĉ"h̘1}		!=VuȑÇp  tOP0LccΝ;7o\XX3f㕻ziOo琐6}ǪNqn}tCN86oO,~#ޱJˡKJ+YoOozۥGǍs8WXd}F1^#CbP(ܴiӗ_~ǎ:s-./!"B`ovĉ[4=v^ P]<XN~eT*]fƍ"ƻ+ǎ7 B'_<tkExͲl8hVVL&cuR}hAivC>!4c&!.[9fT*3Bh:hİ鹗T_ͫW82n7=G/]t*2K(AaaeZND]hiux{mSlv˗I
+
+SmTVV$P(CCCad   # s*++;z5kΝ;o&$UQ0端rHIx`?~xq1|~Ͼ:y銩oo^<՘{ncM"yU]c53nRcd07X}XVp@7_>.˗#;nTU-Ds.lڴIOz<Q҇$}A"hթ?,O!oOB]ӕ
+p䈰u9幗Քhm6$qudQGʌCC/\8rPs@3,I,>(>__4*ݷ&xRe9Gy"^yiaXRd7 B^[8n`vd	4˲\G Ng(t:<//d2j9)Wcő3_pq.;Ǡp  t5:;:tovŨBoh@K!7,+.޺u@ 9s<z`DO>f3ikt,NR>;8S>ߗj(
+k`>HGp>w7[֬Yg͚{`ouux<ސ!Cf>y"^2䕍ũGyS!VNZiYe[^fcfM؍㫟$	>Zq	QѲJcA`9^oQ9wĲT q+r/boߞ?<uTZ8mڹs[o$1  tGpuW0c2>cǎt__ߏ?`SƕGbpg	3f<;?X$Db=#e=<_W2^g\# XBeWk;aHoRzٳB!s`Uҏ?z@"XbŊᓹscAUnn/$Hsa$çcŬ	G_cxtyEE`}ͳn
+GxՅa2wn :x{nQ:.   ::=a6L(1=. @O {^?uԶmN8T*_yG.>yӊuuu3g|aA_P%tP[n*vϏMmNml* &6n+f"n=]Y
+?fZ???9>d}XÜ8q";;fz@c9FF`{ɓF?-[ۛDs t7GOrss0`RpNp*VKӴ[dd@ x HHH p]`0\t>p<0?2RQW6cws[i2m72eʔ%eUAuׇx1WCUv`YdiMɳY3>ebH0z5^;b7m۶_|1YL3ORqǍFQ0$'N̙gMᅁfs t,/---..fuˣ}m3j2zL&#IR"Tp. @7ុlv,xRR{WU;ٸreMMԩSV)J*?_CםA:ˢ/{F]$j|h{y%_{ohll|גp3S_?M8ٳfA݃AYfu	hs?~s}<ӏ>YE&8@[,gOUVVFGGCE/6.;;ҥKqqq~~~h4Z}OtHAP   sbԩS[l?x<ެY.+Cί񷡗LS _kkkM\ OJn
+u4ԼıC:s^W#-x/T/N<ߧ~{6Ezscy
+ϟ?Щ~zg#EϋǏ?⧶_y`7E wCkkkB?%S,+$IppX,aѢE)))/F%''q{  ۃp]h4lٲe޽&iҤI[^\yTzL&i۶y!8蠮РdF8R}|AF>㜜OŘɹ/<!p,DnݺիVϲ̊~d 7c?f5o~c6?#~9>8200O>sR^(Kߝ;|||] )JRj,XVMQiNꁈ  tgKXK.mܸ1++ð#F,1"wmF'vsdaÆkB1TӜ.~IK>=PXXY^a	rِrgM_ڹT<ðE~ٳg?SK/%+DcSoLLΝ;V^@Y:oBD޼7戾8pE_/y$L  wZniiiXX%)q+jʬV?L-effjZǿ
+
+
+
+
+ndɒv= ==q4Mfee-_xf޵=B/\TFqⰁ˽T©Ælܴ??  w$p+Mf$B#ƁYR`~|%K?̢ٻ.*z-1M6Zdz`CҢcx秧'/?wFʥ:`pf5x#qg1rJyy9a~~~력N^-g @ bvUsOe6%6E_sȑR/[Nf6#"	}5/4|Ukxtv>:A0s|oƊ*+EF$zm۶Y,я¹.92=JiӦO'p cX^Fh4ThB1I0ޡߑ˲RdYaiF%K!  z_SQQk׮[_~shFr@Ҍs䣷Ə6`P%V7fȪj=I?g8JiySZ	\uxi[ݻwרQ2箚L&+ÇK$5kfff$9`N|n,˲ǦM|\9>l62?R]]$LQ>e6[&)
+OOO d  @ ឞȑ#[l),,{=YڥI}U޽/zq8UALMh4|]z===V|XEAp^ş~,
+7nwΘUZX֩*-}O~k׮mڴd2%<>FI]=CMO~i@ ظqcZ溺Ƨ$Z[!jc9w_wHX!tݗsyA::*[w;O˶i}v{n-N8}:s./===77788XO9pX,??退h@ kr)((h4yC  3UWWo߾}ʕUUU~q^CfT}}pJwwE=>[HA.VWo0NH~惏Vq+bz9?
+>FC>MqܦM~7Cy;-|;vlǎz~Ƽ8㐧}999gΜȸpX,n9Vqy˲̓`xm
+ViRmwڬz-'S4npjVoS0n8xkuHm3ÿ;x5ǿ>N;>u%ðS)ZB_~Hom"Y__㸗\.L׃{0г`GZfNIIA%%%v
+   nn9p͛3UΦ1/H|̖Pd-BMGwj|0whlBo۞˫01J
+>E_}>G*YfƍǽAί../_$|	 =aX{ZH:CK5[31x
+
+tmiƭ;-[mxڹmovNVqV=vu4+((hjj
+Rv'}0QUUuV0I=:߼8W[E]R   ==zt˖-W\	裏UD.ڰA&=Csu2C)n
+Ƚlܛu100zǎ]#!P3=?>Hz5kty&=D
+OSuر#G椹zTrBû~8ҺB8C xkֹC	wp<lkn<[{Y])2"V0VSSc4|~LLT*p8b=Z611ɋ/h4l   Mqj9iӦ3gxyy%''#c6ZR-~O$DI7dR1rSڭ8tPAa55V?XvtJ^H$^Ľ,𘻻s-233sss7!r)fʀ`6zUp[ҝ6O>{&IR*L.Vjj*BhٲeS+_/W   {㚚o~1\>gΜ""JKQE+sQюC%%%%?.!T	}tLQQM޾#;=wS3g&ذ[TH.\(7
+tT\wx/8pl6^}:S˫f~qÎ;v1՚fq$4Kh9t@///___eaL5  tg^Zŋ-[Ή_G%mպ_t:_~BVPtP7tzSx/gkf&:JRECa_Y,]ZC|*j~3F(\_<y>|>ZUT_?KΝw}YѠIHI#p#	/**l"G D"hpߜ5--  z:tNڵkמ={fܹsV_@Jl^Ov}ȑ?;׳Rnfx&c#Gxz,VLoIj4KJmvQ5LQ'N(%i'd2\w~Ʃ
+ܹ`ǎW^]b팾G#_ pG1}^YX+<<SRAˀv)JVn%fǟA  	 sqg2;sl@0{9Wm3B[w	&xO9BGPC]W߾#oo֑U+^0w7y]4rOh牓u4yf3!@fpxdH$o|Νjkj_qpc۳gK$]v[nN%<KA ڇs8Fceee0E$%%.^Xնdff6iޔ.ֵ   5z}QQq;v#\(p|Cxtg5e}}B#Pɏ-,,yz\Vy|o_~^[
+bߛ>oذ~Ν4Mُ8$c13^[[[WWP(bbb	 (ڷdFhRRRRRRSSS_Gqd@Y(  ?	՚i0ԤIq&@'U*S7op1Ausg2L&Sbn8B-6]R6sX!OswT pGp?Tzwo^]SL4 1a={oݺ!4xvcHHXͧ1+--)**
+i\BZ\Rx衇kr9ry=$ n=Fo߾f8eʔ'lj"ʐ3c֬),,ӧ_;dJz)ĠrܘG4a,!ɛ1=K5pcHd6׿f.]J?̛+J\j~ud@aÆuIÅQ$c0Q,I(bhGGdffj4GfRV>vv$  @w1EEE۷oOOO/..۷=6f#]:'Un~?X4n	ʡz
+G[D@tiĜ<U(B|NM 3̜n~OOOꫯ~xԹjWy1c͛/]his'Kc j 7Vs#*v{``;~p}&448   
+\x1##cϞ=j_hQUUmo]ΝǌxtPbj=B(8jmA6aG
+L;v;Bbn	f6Y,jӦM+Wzᰢ"=KJ^2DT_YYYM{|<NĈ1  p;뫪BR;""B*BЁŋgff&%%%$$$%%]oq  ;pG+tyy޽{׮][^^O8.;:cԉvXr9BhKJx<k*YݻHqqŏ?wz۩5jܾҏe?cӦM6mȑ.دGXxɓ'iU^!cj)p茴l @';
+qVYY};wFDD,ZLZiSX\Ezozg>"Q5A=No-.q|Ba|ż+G"!Ԡ_V߷4
+lp@'K
+7nݺu^sTjVU=ѫk֬9v9K$	a,wG搯Ջtkv[CYC:uW4T*cbb[l#(|q=В jQL8ȸ噤 YYY+V8sLhh9sĨJK\K Xrф׻!l&ĲQQse8֮ߧRIHWnW{@WJ&Ls̙J-rUeeX|,..WTf* כ}k#ywxg3/ɷjEn ;yv<}voǙs;o}xnͶ:lL幹è[, 񂎄.ZhѢEiii7s  %K 233/^ឞV:{lPPЬYUvuq z9pX裞34;b>K.#Bb1lc4VVVv|٢B][5ugX,4h.3,RVk6kjjt:]ICճn\whnA(KKe%3SZmS">HQThhD"X<ǬdV*jwAEp jNpt1qdqB!f6PXcY777\n2pW`eQ]}#G~Y>J}\9#
+kƌy˗kjmAkt}OOPukvM]HN[SS9tPZ&0cYz	b@Pt׎h6w&@:QA-n:i/Zg6n;\ov[8]ZU=Œ$0ӧBO>+pJerrRT*7#( UZj@G(eY///@,AAFD\_C48NZ,蠞a8mE$pƾY3pc|Ro2Xff3B3N[Dt6|6gǎ
+⡇zxpBaTv'0arNM=^;nc"#w}\Ǐizy=ZqGE/ ^m4MZZZAA"T b,
+aH$r<Bwl*D"8R՚L&(M=#\($AWμϏG2Xtzs?4LU5 n~GJ5o޼y. >3-'СC6mС			F  p
+
+
+<-MJJJJJꠊjs  VJJJJJɎ:> qbP(djr|>ƲAD"777G7Ǒjes.{yOs&@؇e22"`045m6\")H?3%ƹ$[[dzxΝ3g|[PU]sbq7{afSL<xL&~ [`V3j#sS3,X*B :qq\m`&@QB555F!pKeBP(q8e!ijH?& gkGpyUUZB(`>"Ο/45Uݠ߼y^={ѢrW K=<_^RR2nܸ)Sj///  (El* vp1Ȅb,: J$# v 'l2XN}ԣ7u!B&g=8tُiI%2P(0DpJYS4ZnذAO<Xb=P)/o߾}%&&N:uРAnnn/  UZŋ/^ڲp.ɂI  Н5YH$Bi͆lɄ\HE	*qQVSgKΣ-Ь3gCCmlUULo/իE:X4UM|999			/YJʬӧ1* X~c).PZZڂT*UbbbJJJsOU{`2  t4A8N*:(0n#h݉oDJb1&q/Oi#		}]qGUk>RRB*02jMa9顣n1bG W 3n1[\\<~Cmd  *III˖-khhp}233/^AܧB3j 2V֪*ӹaf2hjGHWJZy,Xd2AvO0\aa=>}qCR\|옦,$!*Љv; ?yF,u}nnIee=-k׮]{ҥI&?b=  O~~S-Zh4ŋD R+SBBBFFFrrŋ;?tz9X1f	Bcq_Sv;PG=MsW*(bK{$bE4B-ێ!44D@pHx?ӻw﹓&ETUeV*)jΝYYYA?~ᡡ0  \0$`fI= tFCCCa.灕AfY,fD*HpGvx4M֚f)=N|>嘫Ռ˯va<<T^,|}}\?p>'Oon|z~qqqΜ9lFVGð]vEGG'$$3&,,̱!   gh4iiijzȻ ܾRbkAbc=,̈DwPhZl$9G4M)!H6Y`WFEJ7aB~`~~7_>=lБ44ޞ:/YYYO<Thlt;Y>=ɓR4!!aĉQQQ  拉*УV:^ݑ{  B-Y h,bBq$]?8XdfFag(Aͱ,E~J8kllgTuEsww+,.,RATT{?))i2˺,c*n<uEQC;vlll,z  333[>tS7ae. HIIh4Nឮq^80 83͜LvǱ@dl@\:fss=EYq?oefW!4ztS'ONJp#cdy;wM>QsŎq
+/
+h480`̘1!!!B  ֢<A -^8)))%%!d X r$R&Zz^b!'5czGZvǃ	E|ݾq$IG#BD<|4@&eDn۶O:1oo^y.bصk׮_ðɓ''&&j  IJJJNNNHH-i Zlٲ~ ឮ'$	tEyxxv+AHbdr`'J1TzTB7Mw7uo,C|+&sieY$屳窧U(	V!*+k-=&Յk׮e'߫5f7ݻw;vj4hҤIC~  i^955533Sfff*JZHLH ܆vWg]=]8e)
+njj8jxyWW`p#>P(pgC8|9PuM4mW)Es.jEoLڰ{{m6)eWlf-Ylkڵ)S̏*	%nn/^<xj<y	  Φh,Xr5.G!lٲl @3E~s hvTqihXd2߁8Ʋ2ݽb`,WrDII#EEO-<fԈ7^}gB§DO荇|4܋u1~В*VծYd2M>ݫknfbK^^zzz}}}޽G5dwww]  ΦjZ?jVh4 PZZV^Tǅ4 ouo{EQ! 1<;s4qn7L4M3q$Yz-.PyyVj<+aC[,L/pzհ?C\ ͨv!6n\URR2yyCxyym,--3f_  RRR%K$'')((XxqZZZfffZZZRR8l &rx<EQ&eYF$Gò9h{&mTx{RiWߝZ{>&Fy{I|^Qk}GA]Rj8Bض	auupB6k#G
+
+E^  5BK,YhQ[ׯwiX{9z  {#i\aXCCM2ifCi\NQIAvz:KyV.9,ǳoےMLqY^^bDY<x<lF]Z/3XN~0mÖ:kVZ&j|.dqb  pԢ`s[?96kZ  @ឮ0X,Zyyy)JՊa;1əaLuqò\=RϝaW^_YğD"05,uHM%s.1В<K52d?cfkmigddkҤI#F
+1  J.W  @7ឮdfF@v.bhiU_c>Pm(,\}ǈseRL!&3)d*+BK5_|)+++,,`9i?8wR4i}!#] Xzu!  z	M,˒$iz=0"&ޑe-lfYh4裞D`=jN]:M0B1?~ O2XF+YqC<==N:q5:y$:t#a  ^hh(BhUզ4oH =] ٌxSSj%IznG$8(gZF#sqʕrWZn{/}W(j3uleX`;B1nݣWrfر%RY1YEmٲɓE><<<\,}  .(͓XyYfffL邼  `!ǲcnT*x:8PH~9v]&I$T*8c!!I54MVcPḯBW0E-c 	1| σx=_^^^IIIxy+*\tR*zxl޼y޽3fĉjZP@  h233CCC<yWrrc}vA^  tz8,RH8N$bł	P貒hv0TVX{|z[b㪪M,x2¾}bԩS煅]kF$۷ٳO6->>  RC9Z/((hc=ݑڃa  @wឮc4y<MӎT>փDd2Fb!iڠ#fL!<[T*lABp |UիB?QQʲ2Rb'OizС			{X  q#q<V:=  #@	+gF.;,VE"Dv:nOl6a0ETAgY¢?yýX",f!'´4:qĹ}]T3׹v],K߾}Gz  PjDA  uh9&pq'
+fs]]qZd$r e1
+㸦&a -+plx/PIivi~ڲeK]]ĉNSS㢈3_r޽Ł			
+(
+      g잮ad0nD"aju,X,4Ms!3TRXod7#/
+Vk~=l߾]&$$0iRxYkb=TڨPvrzzzYYYDDСCV0  9֛R*c՞ev  tg0z\.ɄB!˲6!Ԅ[,? px,ZV0dnY
+9	7qBH Cqb9neeejɓ#Z$mP*7geeM6mȑ|>  FؼCZZڲe,   {c@ 
++v htyv0hll4L&8fAbe|1E$$Ϳ0CDTGьj6Uǎ5j3_sbQR]	&L2%$$D @  `GyuGZd  @w'x8 @X,A$iۉ;28	>4Ml6X}P	L*TF!'\:Zr?;|ll3ͮ r.ѣ#G5j?z  h49\-WXoIKKpd  @7a=AGށ0"H*x<juyz 58$<s^/Ν;9gΜYA64fJu6mڔ-6z>}H$  <j  M <8LfZY,pW9Fӎie$I8aApz}F	9s,WW=k?ySN,VǏP(/  tmSxj5B~[b\  d.l8zeR)v!8N˲MMMf# .rﯿۻo>77iӦ=P\AȪR
+nzqP8hРCFFFJR  >JeGnd ;,xH$XL0X,aѰ,EQ!h6h./!5{4MO4iN@eˮk(*==ɓ4M8pjq  pq{0c]L   c~XV.BH$)r||=8(,
+Z,K _ %z~=gX<mڴ{kk]ojˑ#N0lȐ!SL9r?  ,^k'=))) \ [	Ҭ8n6BE$IQ#⃳k훘bJ
+vfaz K>?z~M:uUUq
+ϟ={b$&&WT$ RSS/^# "w
+x<aA`l6' G.O|u_0vCݻfԩS]V9\b~lٲk.N7jԨ8H  EV/Yu_ж] --e섄Ф}5Vj͵t|0ZIIIS q
+8
+EL&Bl./FE.^
+n0:$&UU7o5jԂaÂ*+]qN(,P_ZZڻwaÆx<  nn*s8\]Eզ;{qqd-%%$ŋ/ZB ;=N,vP(
+Vn'I#IZ=Vl6U++ 蹬v56lpʕѣG?:qb@CkBɬX;`@zzzFFFEEETTرc!  Mhۧj5BHT&%%jGF|JNWqݑUXMѤ!RRRJE  8$ID"84mZ-c=!
+bX,L&dZ9Da'=7n1n0K4:r߾}YYYƍիX,   nVs'))iٲeCBB	$$$:ul>FHDp =#.MଖqTꈳ84,K${'FD.IRXEG D,'؇6o\\\ܿfozv	zo9\Ǐ?~|>}    uRRR׷AJm&Z* A	hqq,Xf&G,0<90Bt =*NS_GNNNllaٻYi6>|H.4hAAAB  57zh-fz=7UG<C_T*UJJ
+Da  @ǉ$	a<醆:iNq8l6<> z/^-F7eʔ)XI6alݺ|>СcƌׯJ  ЊVh4J2!!Aզ;X@楯;T娤T*Zŋݧ> =BQNj5gD:ԂqBaZ-r $Q}ݶT:}$BP]}dٻoӧiׯ߸q㢣e2A@   c_I%p2c;Bz-5ǿ:κVU*ɎWkwm.Hт= ,$IR)Bd2QŐ$NF2sFQ#inJWK3J)
+W*Bh-,/-8%|wk$..闝>}ܰ0I׳gQT'O1bDll,  1ˡOIHHPՐs=ϗIMMu$-[,!!e233
+
+RSS0xbFSPP<OT.Y] tqH㸧L&#Iiͦpq,e9q4Tq,a[zpsJhƴP<JAa?uTIXCL[*V4:?נc/)wףGg~*4T^Q\8U޽}РAӦM۷/t  ܳnVI@ϱ(Zn(H}9oH7$ $8b,
+>(,ˑNwYeY8$`F\TP\0,IX#I\)BJ
+PDTFFNjJ~Hu!(P%dRAsjr;w_Lxj
+TxZCiq$qG6].ny|VV@ HLL|4<\^Zd'certçN8nG0`;t  ܳEoOZZZAAL}/jU Y?iɒ%L"G',X@Tv~ N$	D 4-BVձ0dbDe)rjjj2,'>jl_{leZZ~]m poJI>1rPHuadmzֈ_5[4c^!BMWbgϕPQ\PXT69IB!40xА`787F;v0L&Lxz Ϛz8Rcǎt}?>>>Ҿ  ^㝭	\M&99t2IMMuTMvk'%%%%%9-^= qa+s!+766;G
+|Gf555YVl_ZyΔ5ZvfY0pB,2[k8$1dP0{rI$A!n Er+B~
+ __-}ǮxkKm!d`aA`8Q}74_IR_ߺuN;vcFչaws+HV8qѣG6b=  p+Ƶ{1G frOIKKԧ8jurrrJJJs) @77gqe93Lvf,˒`#I0f4!!z
+Uxæ34?rOOtJ,PfMh͕U'WyxK`v#ww4-M}b|eRu:!UX5\Rm0XB6Sh_v[C!B|c/+m޼qذaL؈L/K$/^ܿaaaxxQ>   
+i HHHp,ˎCCC8@78N$	 qf`0pX1@ pjFQU+WB7!w^}ݩGzBK'ƧwOhH L*g4Z&v5O\&3:\?$rj}zefIΥ'Ns'	bktNoL[$E{
+M34g-ȹPh8՚zHă\lUnfؽ{wyy1cw_?]kFם;UYY:f̘cǆ9f  _s"-rX^`enjOZZڒ%K\| Y ,88.Rju<Xsf
+8|3BGǻ5kOXI!$P?		~
+dY8XS"<7JJPPj@ o/Yˀ}W:گJ)`ON OHHZTxD¸Ȑ`?}bK|\\%(t;qc}۶mjzδiCt:`pžJ|KQѣGCCC'N8|pD]   qxָMiiiBq233t:B)))iiicGps9b+A,˲rQZ]y3lz~BъĜ"c(!խ*m0Xd\jhhq,*һoDo(Ud#I<:;:[  oqn* B4mj'B2ST`2Ќj|˖-W\|rb=frwUUVVVqqϠA
+   ]8ȀP*˖-s@NMMMKKKNNVՎOAA#\&Q=ǱV]hQhhc~, ,,1OTjjR	%)`DB0\N$M Z?øH0%IqGVk9Dajќ.ww!wߚ4iBߧbYN3WUkkMfMY31G-N=Vrs
+R,Ҝ}$"4^#|mH$q54㘏<*S
+7fT]󑑑SL	jj\ozz2wJ5f̘1cd2   ͚'suPYT_NRRR\TV,Xj2^fdd8Ciiit\PPHBCC׭ n=NDlfY(l.p8Z5l~il48Ge_CyzHM3oΐCBn?qsew^ػի5V0Θ	yDLH6c3{/4 Brasl?xZM!֯L*t^%'T D"^2 @)CT,'=rB۪?.\;eʔ$wwAE]BTn6ݻ_~C	5   Zjf+ҜV,X -+((p$8V[wPխvCCCju@Zn55#JHH8ucXsFcm5(@XV,vq`jMMM+[n
+RT"YVa8s58;)ףlII等>;v^8rPk^o1˅Q^5.W;qPH+̣Kx},:MTm<ST\I!n>2=μbp+Vn>|pPPЌ3\Av[۷o?qEQcƌr  ?/1LZhQ][i9 PqfP(8eYGNdi0Dȵ	>W|Nc)egr]ͫYKV+MI1.w4Kf_z:#BC&.-՞;_^^h4Zd-SdW8.H!O@uy&qO]XkWs0l{]YCXCMjg)V9tIX<u'e=gΜAwjb=   r   w{QaXP(*++YxPc=	EI$aYO{Svfz͖m˅GZАdכ_#YWJÆ$=8`Pw7F5.M=.bG\(/hlY!TYߵ'Y#ZuO%fBo3׆88qΘZs"x<"2kF"N^W8xX,7ncb&oviаaƎۿ?/V   @{  ts0s HtssS*E$IQn7˺:$i(755֚L{SN)]$ð<1P8!cfc֥izc}tB8aռ"C|8NQDSZ4%G"T*A)?v!$P`i+Wbd+)m,&kEj^MaQ=ca	Q37bX(z_^p7nSÆyVW i(*##̙3v_~SN2dA7   :E   ✈eYb6y<@ p|/D"pgl}\ٻ(_̬R@$$@%$=gf݁ycccc/?o⽘=ཷslO۸{mlA$AK J?ҤUR$Q*p8DUV߷~^7(Jzey۫=-h{<F'ΟRG2X<>x8E))3ywώT{-ڰ0iIP8w~yw|"HY`gzgWXP(69Ɠ&0]Zb筆ǅIxS'|Fz뭿lm"hv'l}՝Ǐ_r%[v  v=UUU  dpu:M&!DX,
+|>%I3iev;˲XhBhBt\7E1ukˋ
+KY,+7n?]{o}n}筆bp6adį*.[@w	!,ll,rjǫKVUw{{^oX+["̉8^sɓ4MٳؽvfB;VƻV~̙궶m۶UVV4  ܷ@2o"ya' 7P#h$I]B5V~XYZ6iAԙ^''	!eNƊ%#I;ʩ!v!$I!O9[,\,&~?L8VX@GO|x:,mt׽orWÆ"ۢUe%Yٰ4Ƌ6ahTNLKD/\6/ϼmk&ʐ@7w?z4dZ]矟:uj|||ʕ[n685  EQO<!Wկ~X⑑dbY6
+t:#q\ed;V@#䥘T׽'nBVCƲ%&ɩйWȔ9WT	!E(ZN~hT$(r*]ڼZ#';DMSzm߼/QBHmMa"[Srwnl*ghZgAw~xoߣhTqsc6/EܓޘO81>>{n
+дqVkWW׹s=zT\\e˖-[TVVf  H٬:21U(@n+]QZ sDQt8,Z,|0b˗eA8NUe'^194M[V//sZ"<wML>%2ϋ)g"^oXǝgl(-~]1L).06}op7/YQǲ̢*vڧMS(B|ێUcc3Gw_w\婩G<9a1XH1?{76"gaӒvĉCCCmmm֭Z85     9qO(c2L&ښh4iKBӔ,s&q@ѣG$sq	!B(r8宥pj*t[O!Dy^z<<-IrB?vu.-*mkYֺdn虙艓0!n34!+*\ffi#l4?[.i+ky#A|aQ<K]G5OL&dv>|6۵kz{{vڵk׮UVl6̧   E'Sjf8Ne^0(`Z1,E(NOOL&ax'D19Ͱ(4Mɲ"JJñJEy#j۪wX0t8'PiJQMS\z]]˃PV]osXŇ$,S_W\[Sd00eHC<VX`[LGW޻wO##Y]1Cv'&NgKKݻv; `AwM ,BB,@ܓڝ `6Fc0eY=0`0ͥv=<{EXeb[QME޾3zctzU˭{j"!~:dtLAEk#I&!eΦƲ<9'7B
+JkhCQT4&ܻ?TAv/1|i 9x7?EAet4t.Wg,smɴiӦ;wVWW]  ,A  ^@{2-(I^$Ih4:===55H8ժAEQe*iy)EQG!,K8vxd:-$ccCC^t:z[KUێU%E'g',Ӱtmmju響йj+֯+Q'\q]<^B˜3i~6bz?ӿ\2<N1ɓ׮]cYvڵ۷oohhϧiy  /5H eY`0srE"v-EN}7K$˲xǲf(ʃCޑ'Eߣbb$"<rfw%)r{׏	!n˦ʒ^ zOSyJ:NLLOdOیB	QaץKf+*gvn&?8Ü:uŋ _~׮] *)J?ڇ, ;4A0YEq˲ ȲLb$BӢ(2eYFHD7 MS0<,ʴ?r<E``eYB<EQ,?z웜
+KO_[[6Z}EsNBJKM<Kzr)ru'oL)/w65;1H3(^b᫞e_y啟{<ySSzKY>uԍ7hkmmmll,,,T_  E?  ^d ISvnOMMBX,(d2>9˲&IIEQdAb}` %xVJeNө7+ڏTH'3Ի7dC!dwSEQ:84ENkϝ'le0ڳz<}Wb}]f(":v^,rա"l-+wvYp/V_|v_7۶UOMQPqY> x<]vVVV  X \D  u+`4y`0L&Ip8;C:Ԕ(AEs;aYКoѺAɲ29tx]}IytX	_?p-<KlƁ@t|<`6sDEQ=>-nVt!0z<<Ͳ=iO =m/BYaC;?zG\!lƲRBg
+c}C_u?X՗X\Nf(
+~A[Oz.<:43%pcOڼfu.%㞌~ԩcd=q/^v_nݞ={6mTRR  %zrRb4ML& !9!Btiii("b1YarU66dtFd7uc555.ݨ6Q7u{HuFndY)/wVW&	˿:u	T\dD=<=udpWݵ	cs8uOQ6^?Jt7!fMabøo7Fձnu%%%bɲ29yswq@(pg=͞
+\KM
+?8z:77Xe'֏Ο?[[[[ZZV\z  YA ➌Adټ^(PJG$Nt:m6[ HeHVC֕F#qcP۰Ȳ2?]>u4MɲBӔ$)(?=!4l(mj,_@FQP]]v:LjC>0t,&EZʈ[O_w45_u{0hU/@ɱD=QCSD"|$"hLM͕֗f
+?~|bbwi陙,lZ[,nݺ|Deee[[۶mJKK  ҩ	z  ^p{2+Y	!ht|||ttyJNGĬ΃dY$)	@Q~^g*+\4MQ^7`Q/Ԇ-?,%4mX_[V?úzstl^1=MX$"$µ:]k~aw'M&azGk77W:&-aE"nlWRG|`(rZϷh &f0l6Ca]kn^aq.R~ĉ6l߯¶e˗O:5>>^^^qƖ5kXV  XC
+."WKPwɲhTc(Ȳ<ysՉYI9(E1
+IhB>4M:dM+z|3(M7,Ml^yEe^ێU<,G۲mMafM###HTІyVpmX_Z[SXĞ/\[S̱ySe͚abFlSsjX픢(y.^+,ݾ3
+>_xoj*ϋVrpcSyYdbqLnhM}CCCVzW_3tYضp޽{۶mkmms:87  L<UV ➌t4t$h6V+0Xl6%X6u虙X,(/˯C3][SX[S䂤\.mU۷U-nuus=k6mZMPuQZ\ܿc4?yM+F~s΍lٲt@
+  9
+) 'Fh4nbȲ%I2^@!":AZ`0r= Y#HyǏ_vmŊ'3~Vڮv577;d=  =mC]0 3@ W$I&IeEaY((fSM362*--5P(3 	^tܹS__;+.>y!"6ۗ33/^tׯ߹sg}}p @Fj,RR"p8Asz=0 (ҴaSeYivլ'
+=Bgpy)ug}}}NFxR]lw|WW׍7t:]SSΝ;7mTVV  2TSE Cܓj4zeYfYV?EӴ$IC55t$SM30EQX,
+=]řX
+Yw~.\0۶myMMx6MwܹsR__cǎZݎ  2 ROD!@2oAQM&qz^Qѣ1d֦FTVhZ%A!X,*w5ͷ\p-[on.2*Fcf?Ӿ>ׯ_}pv   37hz"
+ {2ZT4ð,;===::hFe1,ˆᙙI bw냡O8(ʮ]~kW
+eazܹgώVTTرTTTf  hM  ^pgaBhb4MnFEuNCKb1PyaDQT X7Wm۶իno[zi̙3_(j[VUUL&   C |dҀ"(Il60nlbbBX,&Id0d3!t:ur.!X0'эg<ҲcOYzq:K.EQǳcǎ֚^  |ڮUV%^D 'EQQb$(Itsdq\yyyѧp *ꚙٺuo](fpBooXii-[m۶rJшs    Aܓ/BqEQj.Y(EQF"$cѴ^W`eYBU(Ǐ;611E,l[Xݼ3::uֶzɄs  Y\  mס(@(H=<O2(Ѩ(HD8M fB]رco,\Ί<l|:4tʕǏv\YYiXp  יJ"
+ {2NEͦF(@@(hl7Ӵ:viI6&jñ?wޭzWq:zhZXF\~̙3?knn޽{q   Y*
+s к'A`YyAeb:]6B%ExWڄHЧ~7ߔ?X,ӛV{6}16_ҲvZۍy   dY&`)vJ!+к'ԬG+HdB,TY,u !q(^= 1Y{7W;ǉ(fx˴qyy===gΜhlhhصkWSSSyyK   K_4* 2Fd(H|^^ʕ+N(4M77g{oA5pl6u0I	q R%Gg޽k߰52z8\x???{Y~F  F  BR4t:cX(
+HBiup8#E)pЄK@<\g=w˲o/&'3ޮBӾ.9sƍ444޽R8  <ϻ\ xqpX׋(˲,jc,qYʕH$233366f)yhV[?7/Qeޛuj/#y?%iO%,9M<yU|gG7-j#I6VY{m'g}jZ \sR//q͛7?={ŦMl\[g%ƍ<ϯY466  { Q) ɑoA211AӴ:)ڱK,,3lԔp0$O'J)u2C%"smeD#E|3ԨbރJqsRμe;kD?Y=EGJg35:G)n4I8ꄂt@o~z,~ՓٸZi:ve3}}}@`---6mZj˲t ~B /2=EQT4y^(
+J]Ƨp@ MH$rҥm|?{>˞V<-Zh._Ю.ɰ˙J݄jN@\x^N~Nw٫WB͛7{<2^V  xՌ
+  /4=GQdbjR599966F	!
+f3,_qFFtrC	aP:ЗSOHOff}~\#EϠ,`6kܓ:H>_)"E7Wɹk)֐zOꂗj4׉S_(z+Y2:+5ruݝéSڵkwRWWgZ
+  ϗ*-  EaYVeIQBd2<OU϶ί544l޼Y=Ed0k3W(\/I'I&zY^'̚y_	;z&Y-z;ΈN=/4+)4bӮ7/]tիWUUU9| s% qϲeYZ,B!
+
+
+Fc0eYflNp<Sďu#"/AKoE~.\a3),/HŲגBӢjƍ׻bŊm۶mݺV[  *+rq{P
+
+}>( DQyrщY,,=BDReeww˗GGG+++=OKKKMMn     ,w{2NbC<(h4{C5r'}t4aQܹs=ׯomm/((@  / Y@d&IQ< v{OnPXX!    Aܓqz^$uX,&!De/tZS1ٳݣiz՛7o/..6" LY qr"2qE^/wscҒvvld֭[,o߾}ƍ  /-Ag.%ف'$I8NE0L("DE1 xiqܴE(t̙˗/Sx<Oee`@	 [SEEف\dYv\yA83h(q("&pOݷn݊FVzWZ[[WZ('  xaQ*+ځ,9PY9S%,rL&(7ꫧiҥKׯ_ETTTXV  
+  K!(iZEÑhp8Lb("M]ׯ_D"555۶mۼysUUbA	 rE! ځځ"M4M˲gffbj%Rdl>w\wwdQQQSSӖ-[V^p8PB  \ qOIĲ(:eX,eY6XLQD /RSs.777oڴi͚5N?  2- :se04MBH$l~?%˄, rM-ܹs.y͚5n7  ,Q @ N8~?!D2 >wz>=u޼y
+
+   d,ǉh0F#EQhyax'^vŋ&yΝׯ/**2("  X.ԟ((o Ө?/SctŬlu:!8Ѩ($I,# g?eu<l榦={455,B XkB! YF$IuVuuuUU%EqO60c4#!l6St}deQD J6o75uww5kִ4551X;  ,Ϛ* ,y<H/ۿ~{ǎQ'߈ zfYVAdYV%c\M\/_gfÆz    ^B\,[\\\PPu޽W'?qdEQ=AP(z} Pm6JMB&Pe@JD©_J#cuV2*s|zꕧK	/Oq.XZ`fa4{#w,'͒Ogt^EJ-	㡡>߯f=2x [SUR `ꫯ~__~}߾}Fǲl0F@l6adY`0P%IEY7k|A-og]vu;[L^,)I^\{\sm7g=klJ6_ռ;;m\Ϧ8Ei;\&i\z}9y~dd͛gϞo^oQQQCCKKK  ˗jMF BQڻwoMM?/޽{nzwsX=YzxZz>;cǎ,0$IT/EYZ>̚qzyļM/ S39F:DNG{Rd.	qϳ*(85II>^FGGG>|xP(aÆ~{޽eeeH e-
+B$Iw7N2MPP7*YѦ~-iVQO!Rʵ;xp	-5hi:f}0>$~gW&ߴW%mrY%Ve7űzs\ɏzgM>鏣5Wi$΄3>oKh4g%\I.tx	הOoP{)yRk>,,寿bvߝ<yeEE:HNnBqBH8Iu-?i"S3ןTmi6&zzKd҉cκńS733333#EQ]TTC  ȁ;[BH,&7g'4%ʬm	!EUU_NѾZE09KzZmYEݫGvL{aSګd9>O;0WE7 %߭9=L$|ijk?֟UaX@ig!D(̔5?	S]F;L푹J@{$(y<)_2u6kNߕ2>EJ'ىR⃘p3!0_>̷_I	Q/VK,>EJro2SW^~lܸa=.u@ѱ1˵b
+a]2oPY\uSlCgh
+rK$30EQX,;w|7  @n:sÂbhUw-E%V#VIrugZ$ھۆY[ǤXѮiX0	AIB=_䛓'߳$iϵEv&.%QϔKks	;9kma(-pOP{%*aK'=>HJx쇩oݸԴ"%Mk- 阵yWB%[h	ʬvhˊB'Lx`OE[|w?,j$fJhFH(`HO?tڵڧHpqq[oe2Ry|2J(E#ddqI:,%)FxYbfgwgfCc4axcJs(u&>e}>XEEŮ]ZZZ,>  7h_yѨ
+(O6'.^:9IS%$ImkzZldY>z/BRwSǍ<&&&iV^aÆ\<Y $IӼ-&VSSNC fYY8Aɓ6IϬ/[P GRwJstEӚ ieF#0zt:NL  d|||bbh44mXڽkZj(	Yjs5O!I$j+?Y[j(n$aPl3'ԙS,3Emjg-4w>Qm[|YǦIDe>M)v>u)Xx51"ޜg$xr'Y7=x6~Opkjުoho=3g>|(J]]]kk]m6[ΌC'` agYzg_)og=N#-Rue#=zd2qG4,    xADс'N7G?ڳgOmmlεL$y!YF+~3lg4H^"]Ϣks/xiz     ^(333O._Fv744朼{=0r       <|/^,..nkk۽{ƍN\s Z       @.:{Ç6nܘ3q     2vСzwQ> EQb,|УB     +us;Kc      ,{( P!     Xu 44               qG(CUWWSOutttvv&%,^uͽ	ۊD{utt{	uut\.>/x;;;߯-IQTuuC}8x`Kq[ G(      l5eNVlooW:p'O&l+:m=as	;Çk:NmHw}W600+W>|(h     R|?rO9tڞ^ʕ+W\QS3R[x<+Wx}ڲ&}in=aP&9GU8?Ç۵tѣko>O 7`"v     \(BHUUUUUUGtHd\.5CњB9&&V8΁&Bㄐ'Ojhm?R{c<yrA[֙>rB}]H]=yd|# MsssoooFW8p e=      ރ:(yg=j)8F*j?5K,ͭJ먥ioow}w֬<m-7f\     $tDJf!	t&\UU۫.-,%IsJp4zRؾ}ᢏ=&Mj_0Ӊ\K      ,{UUU/s%t0o~8in}X葪xz{{GY=      /5m+k8xڇWS\c      ۗN;t[en"uL[TG>zzPC5     O	'rp'a̝x	|Gz&Hw=.M3      0JNGG9;tPjS$ȑ#jEl=}G9	!ZO.4܃     %U:::Dȑ##(ksk=z9!QIJgg<xCa-ntA5H|OۧRoƛr     Իﾫc|t\Lhx><x0kJ|9R]]]]]f=x<~{.ދ?X@NP      ˘ڞ%uuYGD>|}AU	C8p*~\:+W9rDKmH7a4>۷O`&ֆr(
+J      S(Bɓ'D<rHUU #t     :\      Ü\0v      <xP]]SU       ERI,;;;8M0{0T3       @N=        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S        =        9q       @NA       S         Pp"1    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-arch-enb-ctrl.dia ns-3.21/src/lte/doc/source/figures/lte-arch-enb-ctrl.dia
--- ns-3.20/src/lte/doc/source/figures/lte-arch-enb-ctrl.dia	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/figures/lte-arch-enb-ctrl.dia	2014-09-17 20:03:14.000000000 -0700
@@ -1,15 +1,22 @@
-     ][o8~2/頃}0ob+w۰K^/I9˒/")G
-4]UǴy}<9?nr5[,ǳsHY6F/~8QYwgLjŷoߒ2]d%YfK'B_tqUj^[V՗Uv6MﲷW7ٗ<j}p6-ξ?\۟m.6&ZdoRun=g˱du?ߺ>kW-Eӛw?B{J#tq3nџ$ p"1`J*$xsW͚4knѬr>[xmj6d4Z|YӉb0j5/?z۱{v;w6n/r|5xv{?/~;v~![%<d2v<<|iyMŝnח]ԋ/ښb}O0}+Y:\><{̮W6}ަY	d<z{oiǧ­k>{S} >'~Tx@:dČ %<&blfr8[LiaYv5JBfUq{_l｣PT! 5͍[\Jփ_Fe	ݏX&o}d5U}ugq.\SIX6q]'akDU,d6]Y5]wɽ~sty~\ݛN/NW6zh\6K`Qm+P!7CLo4~+aF\VA<p<HPP?p.\Dr]?oїI0 'z	rv1󝡐:f6r84C`Uaz/\hf7q9#~5E#ˀPGHt/>-":yt_Ơo}2J#|&|w%g[ X`Bn:-G@#+-ߣT$wXpjBsB8(8<ZYS
-`esRy[O4a#S@qp	{j{&R9/}~o#	̦hGhv'x^}bz`,0Hr7GzF@@c
-nRQGKv7Ej-w+(EMB]wXiʹL`?<f\NeHlwQ];"awO $q0f2In`F!bВ_jM:ԶjƝQՐcFw,|JFHaJ;q۠"w;F	03h4L*4Vs1%mCã{9G5#%x 9fX]Φl:8|pe30mEeIwGtt.oՓc[_Nng&R-o[O*=[/gS*Q|5_ߞ<M=#zu 0Tj #쏅\$rGH>db«@>1C;*jĢFQ#քFLcQI}Pe Z[a;C#1Q^$A'[i6~W>w
-ʈvz|c,}Gv&$Ƞ8M1)0QĈ ;~Re\t\8)m\z/0{ t[H)ۓ1v*@x ~b>U`ˠ"wŝuzю=(`c֬ĢeAn,PP67#'N N'p!QXA,<8pSd]eC@$, 	E@BD|Æ9D{8
-!*TGCp(jNG*N8+iu@˾T,1VN &)O1$Q¥@RjVCetԎ9
-l?QRhm;J n( @lR5BpD{qI/"v7ɉ@88ǄL+580.*MagqsKqd0,oÁrn"iw7;3FL{Yճg?crXb(aaSaYvn&;L|f[sI]Ԩ!xPzV@>Ra%1=C+Uj
-3;6	+mS_lMcшƴ6K)brL.Ǥ=u T( =黪$>toqX&M6dAY&^?n7Df2̭C{ÉT|AΨ@?51=כw==/F7:-&hݫoĬuU tڃzB5E{P^ᥔo~m`RL#JX0p; 3%8l)mQEM0x	jCmKeof]\#4BaEٰp5	{}8Q6M҉yD{x;QYhkŐxvr[m"Kaㄊ*]>0wK?9ay{ǁE~ẍ́iH	ExgHW"T 8Ĳ+lLwi].>O$X}koJ)W:'㞻={ny=u)GSvò{ׁE~=H
-X>Ic/
-#&mO"Z"4$rOŐ	l$$@p;ɺ a[E_]`{;8~EUβE볰OtF1\#!q@cjJo _'(pza+3:3BB\p2\p&?"5	juQ8|oj_͠&7azg4!^=,>C+ojY,#Nq5YAFajr:Oi =͉2 Ez+i~90c |_q'h^}"?uLoQs2?똫}hU#u8x舵.1AaW0F-pF~ByA(n_0	(qyTe:cU7rW1&9h	Ȱ{c}7JH"\q>zsDpxpސPD;Fgj욾kkJe}swelpŔ@nW(Q2²pE%So3|Z
-+a7(#t`ʶ	AL3	v. ow$ۛmPVsVlkT˦PaFH"^nY]4ߟ$y$C!UrA$OrN{"]FD.Rܽ;$@غHjRfeh,
-w+9M!s	a0)IÈy1a0DF m(8d5؆"El{=q4Ghk  Bۉs2jFC$o`&F GyOH^\-hHx	hq4!$֮!Ld*v({u <QI`!Ĵ7`K;<1lޡiif735z@aS@	l!n"x\z<qKfJ(Av{^B	Cm%bIyF܍<)ܽpӺsSbiQmn{s6&mhr%rr,7^Ⱦ4ڀInBsEQC>Y]1g	C^>CGƪmZq>}I^b6bFr6؉Rzɠ8isW@ϻTNo̱w-X-UbD)W0Yjk$^BLGs{X,pY֐{
-	Z8'D1naDp>Sg(=<UTW1u9'kO<5ʁ;@ly<اV9`{V9`z)'N9]=A*Kf ol8i*+PlT2CRwỈCŋdGq*@Kt-kܦ˻O/1C('Bj(GC;ȃL>=h5	9	JFCg!,O.[yb*,ύ7[smMxΠBjTN$e]݆VdzhcN~`wV΂4*˿@" @^#EIo^.B|S_99#ĿdR(Z<n<&$dx JGb_n
-ۀ+:Kg	%!Iz $\e@tVx&|N5:O4P^ZNWt\G5s01_"Pl}>ZtzqS.}t-!44QHc6h!>zNԐQd
-[0XDHF4Pg#U҆YFoe)5,zuȩ:T'}x&,һwo"Rb;r 
\ No newline at end of file
+     ]]o9}_ax^$o6YfA2,h[dHJ2~lCn$[6đN(x?gg&t1pM׋t~}ivݟ1_g뇿\\|WzDW\_6e梋?8[gͫz^}]OUv||_z1[,Ͼe?޸m.j9S}kl~nrɲxjj.Y?>\Rq5Vb?oi˽h}wf)B0VK&39Uf[kn|X,l5yX&<^~4ff(nf:_~c=v9wܭ+*}:^]ߦlRu?}q*a&|ۯdu`m_Sqe>uu?X;q>|,^O=={,wr]\~^yBB?3w3xSC!'~Tx@6M- ̭#nSy3z҄Pr&j;畄"MwۓfZ,Ǔ ͷpr3f&Vw%t0c!q|#km',΅k>	f+flmֈ
+8Xb.j_?Gl~+Ydmw,_?YDZƌigB.z;ke_[s_ю`="HB]¹r	vdu6Y&s@Yb@%#޻:n3sWFN9TO[vo:2p.6IH80KF҂ꆲeD4]t	5<zRC?l}12Ζc|fӇդءC].@7?srTv'\p#aw|!_(iTkRz(8<ZYS
+쪶2嵋p-m'8X4R[Qǘg<Lkr\>.li6	EhMG)Q.!Djӻ~mfk|sUPr?ZܮS)h_yE)
+ớV6"nbƂooq;i!H7CwE8t*H_O@v2+aY`Fc[Б_V5& pj[5CN(_j`U>!wS2ctT|TB"`	vSQ+̈́Z
+{9fk*{|t	2c:/vQqE	L"Dpf7|~90Lspf뇢~>̖E/g~&Rm&\z;)v7(^8{n^ᦁnQ!G.`8S3Hi7{ "cap%<	"cQl#q)?$Lt|=4zhA%X҈uU#1iЈu,iikx!ZE>	>2s=4zh)ʻ0yA4I⼆XN_SxnLjlNovɷ*tjkݿZ! TEeic+%FV$ L䢷[O
+'lb{e\A3B*>%N؝OtS	2g q;O4{#K}P(40v$1XCt4tf$wkp;qy8DvhꦷcIϘ+ o"qYEL
+s>=8Dˇ%33qpCTd	ƔBARaesfcY'[^˦L eߪ^ia+l |hH*SGCRZHjA^=jL3G15/ֶc+G	jBJnP'>/z@oIO,`5>&g:quőuQ%1i;#P'[$oyЕKt;4JC١L1R2ۊpUó0aaDSaUvi';L|f[I]Ԙax0N@?Ra%)=C+Uj
+3[;6t+m_]Mcъ.K)brL/dM \(o<ä!toq\&CX
+lwFELԡ;D*L
+!V`QOg|dȻQ瞗=nuUyJB41tmb6:qݬkR"jmP=1΋ 5R*~1Voc	*DfUnofFbD6QUgDЉ`}f)TvtZvgP=!-Qs1,Vb{X\ӸgFHP])l(GtGՉF\w&&rD	H'LC	qL]#v=^ɎxCĎ{,Fk6b:Byc5rB^y[ˮp2)z;8S3fJF"J=)pER-\L{b_.g֦<D(#F^N}.}}_H#I:rf6aOnTw(Dܷ;%0P~=C!q$)m$~uqqD=|}TT%y`6>{XmD$r#C	NRyym(zaT.~ap9o)*'|`u#[+|`kńƃp*\7pg׿'\k| jMQ:Ö48E:v%AMn}îzg4!G^=,C+oY,#Nq5YAFaƉN5Ys§̴#XTm|bH
+̈́Z{ǈ-}_ ߅ϸc77y~Oӻ~mfk|sUXr?֝v导8
+1X;ߪa/8_@5h4sC #-	%cƞ0ϵPt_|ժ8FLQ5xwk"؃dD,;5¯f?h&'`W7- π+\vnpiƾ雸FƑT-3gH~W6̦1Yv%D%#,+glxR=%j6!ʷɨe|qFl6 xd')	kv`{M-eUpoŶ>Ql5r+W"eRt`5ܘv.`<%Q#9\%ť}R8TnlPsJ1`m)
+,9d 2v9*yܼ& S~R$RDXdͪY_,u3WJz\C]&aK0R{)a/Lr pthsl#'lK~!A[	NcȃV3/y}.	 9${<FjYVDCDPb-rͣѤTĸ3EN"γPN;DݥD9XK%BY8oP|h-Cpy:&јiT3ϠAD@iyXl%py
+JK\rį-3)yڡy	%ȳ.PJ9's7>
+ñs6ljLMER'Gu9 aML*ir6Dn1'LI92yFm}0+RFN!d|>lg,8tU|Cbi,Ħmly
+Qsp6:́rwܟޘc0[Ʊ>[.xH$#0YSjH,BlG$M=,j,o=%D-#\$!M9U6܃Tx9Ou,o|Ce,ISwq+C/rN9Zs#y%	aoU^9U^9$uIǼSN_y
+6b2lzʭJ}FT'|}8t?YHB	̿DW^JĹt&$]^G_$ |~zٴLG9Wc| E8
+2Cebo0'e<!<x(qrB*⒋y\#YS.7z.\5]{
+CqS9=hIvuF-ZS 5y iUtWx҂Ss:Ĥ7_ -	2W)~t Od-	^ySMB^$,V<Pԗ6 54|2rXyEg-s6&Oݞq>P+:O1i9ߘ÷<VUljXyfqꥳ<Vw5 a@Ųa$.ljr@Z:ґmMZ:NtTD<	ѵ,nZ0DQ5g| ڍj^ƽп3E44(bD6Q -mXԘer}۠+Kf!0`-CEN֡Z[(J!).bR#kf|D	"ؘ̨+]BĒq,(OݷR7vzb9]ߥсHCly@e.tD_#lgQHr"$֔cjD\ą0Lꋔ5孞0$nU։n`\:/&_@
+GPedGbkH+'g8t3AyNkeKًs2l=wZFӅdڋv/&q%@2F"4(( oL&
+SY֐j&6E plOBIs%D>z,$)(Փ1P8k5"\RA'S
+q Z^ٖ3֧>UǴ@ge[M8DVMT ley<6Z5+RAtڣGXNgA?nuX.Kt;TA)5@ګbiN{ݿ6QcP-VW	lvOmvFɦ	5c6\:wEY -B=^۫Xow,{,??1nCP". 
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-arch-enb-data.dia ns-3.21/src/lte/doc/source/figures/lte-arch-enb-data.dia
--- ns-3.20/src/lte/doc/source/figures/lte-arch-enb-data.dia	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/figures/lte-arch-enb-data.dia	2014-09-17 20:03:14.000000000 -0700
@@ -1,12 +1,17 @@
-     ][s6~ϯи/	7>N<{h%E;@(Rdx&%<wow!lx6$޼;Ǒ<&IVɢ¼zwv_~"gH{it:?{f0X=$#(ϳ>.~wvfYq,e(}wݵ:;_|<[=n,?5_J9<ʧ>$oRs}Q}w?KZ|5EM2ݴMZ$X
-tO7wկ_sY|Y&f4<YTOmru&(m"&K&ہvDY&UErUWLN˟]q6gYd/vLcjt<|]/oښH8[g,?3yj̮`?(ϳogNvAɻU>^7n|<7W_]ϝˏ7i\_ņ{;q]gtCfDր]F6G}'7yqs_ͲIr,U!ZK\_*_O&e2&u޸e-gRvɥcub׎+ƟǷ>wayi^eּ?Q_]4]YT!Γq h$\nFחF/b Sӂ͐vQowqO*mEE3'9JrGYbS+=s\58(.PAQoyazi.wvk
-awv16bF(6b.zzFDwzn6>)O#@l>ռdF9<~/H8RzHxX?@,`s5gLliC&E\Aulf6?H<TQWMzMq+9:潎GV~@/-VqAZ͕JƬIGW۬Ɨx]8C$G{DJfQi	Lkťr_M;{$ofdE/S3JB85_$Bޤo;U$ߐۘ]dݩ&6A|QrWRtb.D2jׂ.IpZ2^!C,'\(׳]	mOC (/aeycq0FDOmhx}]z#sƤsEE3!~)"nykTm:o.FSXj)vAD]:ೞ\@ *PigD	0)9N#6^6qTF[2t,&uݧP (&dW1 96b_;tzO'v{m Vmxz嫨гVq:l|i/xz]\MD6`>s=_lh~3pYR@>UϿ-ooߊ͂@j#n hg!&heڃABz۶NcDWu@)}9A)OOd먄}uJdH#@\ډQd)2vd"(OĳT6(ĝ_5YJ;p%i7!4dt[!d^ۉz'"`6BBi`Pkj/Q:9&zLd:.#^83V֣"1+\QdjIfPdDKY4NaG. &\8/#7GCS%m0WTP)+Y|JC%4jo3^щ@!!#SْYj+5H'ŮTa %1ӽga1cgQ!Sq3u
-ߨU-jԡg}FWyRӒ;A qmbqRZb!!|c4#Z1 $ 	6zQ%f|k7NSܞaR	j067RsE'4;"^	JLM	+iQՎg]K"g$XW<DfoZR*~yxTX|!_Xz#q!3dH+./G CP&iRc	`LyeqE	q;ۭ5B8L0Sk@8yf>f]GHG#Bj;2~Z.G^x.cjbPn!h8B	ڑ0IiGvW ĽOHoTLz?!NmԤ
-%BeC,a>0#q*LxoYnB5&:) 6^CWb>݀S_I؈Ot,/0U%Xֱ:bYVCѶ<J턽PpRYl2fIxg=_uOS7i>+-q_9K+N;&8
-TK92K&N^=-uPh:iqy`(7}Ư$޷og__:vyug(,C`9)Pw%r,
-b֊0/|yh,oX\rZ`Y~EXnVN<N]gxJ=x<h vK!nc
-9-.v#!b"K8)@X 4:{QQ!l{Z@yK]GNqws5A!y!O30J5d@k`~'ۙNҴh21?|El$ӅX4Q|&l8ʶy*ͦ<Ǜj_mO4{*PL"T
-l01P/*LMe*3L8d"sO=&GԈ`ȅpe g"-w%B,#g ƌH~'ɹ	m+9m+sLX.1:L3+bÀsDGti	SD5r~x-xۈY%Ļ̩/o,|x\@X-,@Q4TzbO&nid S%}]*}-o"˂`^y}tAq v~?`_sְr1rHHL a/IAߍVVr"X#*_ #]x+f}0pb`.`H`j(2V]PʌvP_.bY`tdxz<BU{d9<Y>*?WHe_x<M̧-P!+UggN
-Q瓍:7Ev$?ucF(Mm<	qε34p>pvｍzmPkĴ!;/ɻ+Ҽ)PͶ~q#%d٦diAJ惦.u%!AfIlM0xKETnI8I_^RD~'hLڌ
-ӞBofׇݭ4>} .`|<mGAcx\3bbш[wH<bw\Lm.Nm5SkC w^s[Llw}zؘ!}%gɢUT[YRqBך)?5_s1H"QsAc[	dd#ENjYytAG?їqkAb<觻OEwXŕ3\]!|ewg|вO[.Y>Ȳf5Vc(##/DO!܅ox=ǗQ0ui9DoU2,_Ūpm
-FU]ņ6׳Y|x`ҜZYXCHvdMz`Fqv/Pxb4"{bE30f%k`w86?&I["J7a67}o;UCC硍:bWt}RF싨Wb3jWQta.VD8\5.O<j״Ep[p3^A ̤LV!Ko\)mCL͵()`O`3Q,5eK2d<M.a/ڥU@SrCO,7T;/-Usuf ɇ6S[fЦj-Uxjht.]N8{xd7=Q 
\ No newline at end of file
+     ]Ks8WܛU5TtRەlf%mZRQo_ c=H"Z8L><2_  /l2&_i$/ߧIwEŏ_~2H/itOn0X4#(ϳ!>~qMEq<g(}Í}]\.sqk/:/K6^eeOɟ;T\\;guR4OVo\F+Qvvg1)=?]+.W\֯dygy%<Y!5r(SnXI|otd v(rodZ܍3*5wW<=O,4.dwvn.XqP\2f1;ni36ϩ}O}xk4z~^iA4ɓ磵g2x)EY>~x1B	L_/|ZWӊpq-/s
+3}6+Qs!wdv-nFdX5;*:\.Nnv׾g8w XU!ZKfT%j 7)i'by7zUbC,twY˙=:y뜪'a؍O7E?'w!
+۷0,/kDI.-/h6+N<D
+;AK7$拺	T
+F+1bnS҂M6QogqK:"hړr%9#Ǎ,5Þ9P((<84;i݂n؝F;3X@oo>gbDoĝOJrl2[ ##i`5F!#QwN?RRc:YVjjˋlܟ3Q641M2.:/fvH<T#v(	4fm	Ah9u<RR$wX@ɺH!Z˹0<81+Y_w'
+PQ[)G&0ǊK !ԽK&Z&ZiML-4rg2os^fmqj^$Bޥo;e$ߐۈ}d_oTvArS+Y3):31D*9`=(BmZp@Xlǡ+YH10HrEr=ە4İ@kR,OkX5s7XoPX#ԏ1Bso-~nC30F0&=l%2l$j	!;@meLW13NDfQ:Ѝ6NѿGc+E179\7htN6#Wg=ѹ ʿ@Tb35Έ;`Sr&GpmQ7qRF5α&ug P0HV/1 96vr'*M(	 	
+y0YlEYbgӫ(_/20vUn%\O,=;1}i( *nhYY[h놚7 s &hvK2gm !Pm[e1Wv@)};A)Ϩd}uJdH#@MDΨqb2p% %Y	*/IlZ;p%i7!4dt[!d^ۉz'"`6BBi`PkjQ:	N7ᘈc"_@Bp$	cD&b6$s-"S̈́d"2Dv7aG& Ƌ\/{#7GCS%mm0WTP)ms,>[7o$@!!p#SْYj5H'ŪTa %1ӽga1SgQ!s!f|6uhPR:4ѕAqCC(y'!&Ͳq}bRLnEc},T1531 , 	7{l8BGTr8e8rHa4YaR	7n067RTE'4;"^	JLEq+ig\ժFߑ3}^^	l[x"6-`)Z><Sx*,OR-H	q!3dHWT	]&Dߎ@2!L6ևYO&2!fg	!bm)"W5B8L0Sk@8C :2! >aJO+х<Bp1}5C1V([h8B	#aB/_Y>#Q2jQv*o;&%T,*KSeqKLPa{rZn1I1OĸF?ҹ1ҿ;>XGpRkĪXձ:-+w؞NC>=eS?ALY 8O]?munNs7{ځ6^yΡr'iX@S
+*GNB_eS؃
+ܝATL5qPh:iQ=I@X!E OКM꛺Asrmok`qT Xyh,gF	y"+́o8-S;Xཀuh,eȼWbeT(A:XxY0pPyv.() b$6 b5"f)YӘDN"_~Uy^
+[N(*d[Z mO9otyѾmi2.nZ?&@d  $ "mp&\IֲfQh=EM;7I6M20Ńwl9ѿ-lKGwi29</
+|&n?cO4{U"TcY`bx_
+8hnz,S	g!{<7Yn?FC.\ȅ;.g=`<}P+h$s|h>=$0fdM(+A$6&DWW,s+sL]cu3%l#x8+I"űm=f=3X0ʿ{tϿs3i3EE(U]AUHJ+|4ypI +3n"MX),gzHo@29N?ȵ!!2>%s
+G+ l䆅;#45;FTNAFVta J	`H`j(2VʆXC.낀cE(vp2WXX5Gsv1VYiHja(NHV3s7z2@킬2w5;*xޜZ)ڌ7j֍$j9B`bIx?ݘ^#x=+ghpvｍY!RˠViCfk5w_wVyفQqC4ō.f֓d)911eP|_IpK8&vY`n!CETcnsNS!ȯIQaڳ`aV}!ZWRw<-xD4Uk1 [L[ùo.q'Ŕb0dz6bk@wlc`%bzu|"擿C"-vcs~*h#}FE*¸P>ǓǠh9F::?{^J @6RkQsӠ2+]Cu>?8%~L& g{7OWyAo2+#ҧcy{tgCgsúMT_<gY,Ѻor0D9x*^F/eA/[ i%J[l><IگJ
+7`l
+(6y6q3PV~>(ͩr@ӡ"+\Շ9ZnT~̤Y;`6,؄7+iMrkbN$=KsDhsfQmDLv2LCqU>zRnFSΘ8@YYƞɣyMYԾǱ3PaL*d;U&ZH0$\k,OȨM7zDsخ)[¼F c9lm26sFdkojzf~\m<7]g|h33G%6Umƀ\	W*-c0@2Dz!:DI ZKlJĘh)=V'l[BZ~lݨ>d?,ιs,WLTuty9xv̈́;QxM2R-ңٜ!di|sQfNv0rUd ya@
+ID"baqm%7^26>5@R]41\J@CpV&c(~d ҹ>1s	X"$#|`DZ6NeX"jr%	Hz
+ZfOe|EM 	-cl$POHWV詪xԦWAvTR^x| $cFDpkdSٜ#P#AkgILxM2(T=r:f?VwL d0y)L)`\`ƏnwW{'+Xzcp1PX"mzXY:ԭe?w=E<?%!MS7QC(iƻ3.ukuH^8:3vl~Y!L)+Tl;+"}-(j}fBh!X]@IԔ8û@͢ǹ~ 
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-dl-power-control.pdf ns-3.21/src/lte/doc/source/figures/lte-dl-power-control.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-dl-power-control.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-dl-power-control.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,179 @@
+%PDF-1.4 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 588.245 290.371]
+/CropBox [0 0 588.245 290.371]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+588.245 0 0 290.371 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+39
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 784
+/Height 387
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/SMask 15 0 R
+/Length 9 0 R
+>>
+stream
+xM,W~.JrrAxQ[AD!\IcP\I61tӐQtBVu!*%kb!x_OSuNuLT~ܩꪮtT̃           ?OG9f...";Gs?^w^s7x+>ϱ77|~_6yg6xCߎ]y9lyM>^zWdky{駏(cXC6_衇(/!o^~}Cz	^Kz	^Kz	^KzI/%^B/%K%^Kz	^B/饱A3GSzT8w;(,>rŷY~]zɢWs&'.<0Rzi%<4
+SF~r9 ɼ$u|vR2~Z-2:"2ߚlHpL⛘^Z{]nb偡K|)='sUgGKziWzi;E;GzId?<p*eZ*R)nB/mv'>jq[\K=饍GKo1GTi {ugΐzI/\jzyw q2=23T] ^"+yz1\^YpTk^V/-è#7To饶RNN8fnҚy)}+TfxlziK>K!/VpM
+\g`-tog|)}5,w_ӲSRH/m9A]U/-=ټT/m\kҊyR{):|Jo?#L_&k.nK[%{ΣK |\Gzi;G^rmM#>N{wNWʛKM4^j;^jy/rGz&K%KzI/%KzI/%K%^K%^Kz	^B/%z	^ڢN'>ײ'5|~77#lWڦgO}pC_{y'?϶?iCgy|g̻w}3nBg?Iz?x˞K/o6_y;eOCsj߲SO}lٓzx㍆3jji}eO귿q]_@-wܹiq]Z}{%z	z	z	^B/^B/@/K%^B/^B/KK%%z	z	^^B/@/KK%^B/KK%K%z	z	^^B/@/K%K%%z	K%%z	z	^ڌ~7N7^mt64z	Y]jcݭQȡkRqnW/^B/K˵JSzh8%zic^MN.0$9,bJF,cN)oxbzکzz	^B/mF1ƥ~1)/	RLLa:O8ifBs3ɑ)^B/KHK1ƃ7ؘF{f_g0g>lI38iI/K襵R85.m4#+xcz	z	8lRB%x?{Ć.eک&^B/6K{C(e)ʍT/nJ6DZ]L24Z\F;u/^B/K쥸f
+W׻zueYf$?ŖۆA>.y9Ook
+?_K%ؙ^ZaPK^B/Kz^t:a2%z	(RLz	^B/AfɤK%n`/yGGG}z	^m{iooO/K^^^B/Ka,=pz	^T/bI/K%(RKz	^B/AiKz	^B/AEa^B/KPM/K%K%%z	z	^B/^B/KK%%z	z	z	^B/^B/@/K%K%%z	z	^B/^B/KK%K%z	z	z	^B/%zU/~CvpK%K[q֭'|i]zw^B/^
+Wvs=z	zI/z	^B/%%^K%Kz	@/zI/^B/z	^4u:^B/@/N*ݳ^*.gz	^z?_uuŽtgz	^KzI/@/e~9^'K+3$Z6t<B4@/x&,@
+e^Zf,*Z/*KnJ/%$x%Ǘ.[^U_KK4Ah)P/l[rH/%K%Ko]+9Բ˶Nr%^6Ka^7 
+o;J6O<^*-;߀60?^K%KziNinKM-YJ,;FqyJ^KzKz	zI/z	^B/%%^K%Kz	@/zI/^B/z	^B/%z	^K%/.~oK%zR1Fm}/E/%%~^^B/^K`8hKOԆ>z֍JegY9^ CªK.;^lZm)n^K%Kzi>;6Ji}0ǃ2TlԺ٢Fog'|EKkPKz	z%,kIaHǟ$z($K|zv]l/V]Xwr^B/^KlEKE(|k^_z)%{)쒽lKR^Bm\Κ\m|)ˎ/E\/7[/%%4bݿ黖tA{)ez)le/eK/%%q%/uVNKRn]Rnl/gNn^K%K7X7KzI/@/%^B/^K%^Kz	zI/%zI/K%^B/KЭ[^x{1K/|WU/@/0K%K%%z	z	^B/^B/KK%%z	z	z	^B/^B/@/K%K%%z	z	^B/^B/KK%K%z	z	z	^B/%zADopˇSdWu9\z	^6i2QJ}T2zm
+&^B/eF/Uù&K%K5]JFxmZiҬLz	^B/5FiJk/U߽ϟ˸L.(K%^B/5`Mx|q*Km
+&^B/LQ0,_6xw%zI/L^Jǂ^eT-#Lz	^B/5f1/(*<VH-	&^B/q{Q5FdD~}KRrl%%v4z	^8z	^d/bI/Zm@/@/;tpp鏎^c=V
+nY%zK{{{a/߆<^B/q{8L&㨦K%n`/qvv6K&^B/Ka2%z	^%^B/Kq23%z	r4tqqaϠK%%K%%z	z	^B/^B/KK%%z	z	z	^B/^B/@/K%K%%z	z	^B/^B/KK%K%z	z	z	^B/%z	z	z	^B/^B/KK%%z	z	KK^K% ^B/^B/;dtvz	wvW;CO#AUg%{+ZOa;zR|rV
+Nï8,r5v/]kϬ9l^V@/h/O˝jtըo\9lvn^B/Ѷ^R9+Ty*δh7]FpRsSޞhɲSKKnRlGJ	UWp2ϊw,ïE/۽]ߛJ\Y~䟕ӧ0=={&^oa|).pULR9rz	Dk{)}vytR=3iLdV=ޞIכl#URn/|4K%>T9>ω3*{5{&4mP#z	^{)qeRũr]KgEZ^x-soƗKb/΅r~ɐEH^~=REl؞=Skj7K͕ja/f{iE;zKI|7*.R{S}ԫT왚TsZU.~x6iK616K.]qrrrxxKƊ{ixɤK P0z	 4K&Dz5 تB^it j?쥽=q 7c^d/cK Y,% {)%^0}{3% (LK% K K K K @/z[vTo;^B/oV^==4<3zrWݞ왫xk=z	^b['a0:7[Otk확<M
+wچe*%*r&]5Z{ZatOmǃ^B/v/NۃE<V4`̮D#8)oO|m4cbd%7zWʣM*oh+8g;
+xCfѢMM<k7^DK1S{Bɍ&+<y0g+LmO|Yw{*LMR\
+r$Jce;*C":6mj!W3]a@/	<s)
++Ώő׹{fzqӘȬ:{꯽==Sk7KFY?_iW9odW܋[s=N/^"{,3gyeTt̚WK=SkVKW_6(++ԋfKz	CDk&Ɨ*N,_=+xڤURnkqğ{[Ulz~|)%_;@/쉢pH/4=q>W^Kُ_SgjmRf{)RS-la/h?Z/wN|n`2[J/%KT埱<y4:TzV^bܤ͏/e7?p}lˏ/|\'ג7%vnK^:<<<99g`e{Cﱑ/%v4aL/!wJK%B/cI/&O/ KXK %(ASk Uz^K`M0\8(gggdK %(RLz	 ^%^ڝ;w߿o?_|ݻzv8NOOz	^gK%T%z	z	^^B/@/K%K%z	z	z	^^B/@/KK%%z	z	^^B/@/K%K%%z	z	^^B/z	z	^^B/@/K%K%z	z	^^B/^B/Kz	^^B/^B/KK%K%z	z	^^B/@/z	K^^K%uv&z?̠W\>$W|MG/@/6i2QJ}T2zI/Ll*WU\KXլDjߎ/J/:I0%^b04JT\k|x\er@z	z=3	c//~=nAResI0%^bcte/-xWPz	z+Ӵ屠GYC/f7¤KXS!͚c^<KQTx8YWK^B/^b-ܠ=h2r^JΜ<z	K6:999<<K%\C;jv/gLz	^(RLz	^H,zkankM9::
+%- ޞ^B/т^
+cX/K ^/K ^Œ^B/ܹs}^
+cI/K%(8==cI/K%((LK%z	%z	z	^^B/@/KK%%z	z	^B/^B/@/K%K%%z	d?K%K%%z	z	^B/^B/KK%%z	z	^K%%z	z	^^B/^B/KK%%z	z	^B/%z	z	^^B/@/KK%^B/KK%%z	z	^B/^B/@/K%K%%z	z	DΛoyppT|ӟG>Ҳ'o~gC7O|+-{R/RC?=\v?~eOj6Vs/}K-{R?[KJ]7r|k_Gy!믿ؕ6ַ";	t-u$K9ַ+|=^=z	^Kz	^Kz	^KzI/%^B/%K%^Kz	^B/%z	^B/KzI/%zI/%zI/%z	^Kz	^Kz	^KzI/K%z	^K%z	K%^Kz	^KzI/%^B/%^B/%^B/^K%^KzI/%zjn~X/Q[^KziGĆh?!w]N3=XC̮6rؼ8f>я>                       oS
+endstream
+endobj
+9 0 obj
+7740
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 52
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x[nWe$8#
+pqf8.MӖi3v&'ccf{~'mjӦEHtyMaՊ@4CK4-CdT:dv(G	Au*_bLJNQs&SfCPX,rhVir\gIt:,:PeFp8T(
+NX)qRrb|>NTFY,2
+N@1Qa,;9Fܧ"t2##4I˥2߱;z<fyzPѨFzݮjFކblիeYIB>j{4xW 9j9u{g'L;;E551jx
+.2gFͰ]H($^/̸1>X>	Hs!ID"A|> qQS0IӀaT#HQLo	`l<rbjVXLF)H3!0`"11Av\eHIgZ,8KF\.x54
+EQHO^Ʉ䝅XZUWIXp 1uhCnۇRI0b/jvA_1)z
+arKIݵ;ϫY]3%cZB3AR )!A<"/G#4E%cQԍ`T8Ѭ,s{{7`$IJq`lc޾}ygE m׽3Rc*,^ǀntNr#Ӱ>5DZvTLR\V^%Br?ՄUn;9WIT͵jYY[GlFY^t&3źt_B=z+\!AϦD1eJ)Mdr-ԓ'7DDX$iQ%ydLPOI7v?eݵѯi׍v6Oq!qC,d/ QV˕2JY-
+J*Wr" 8EQP4A=n7N8:0<hSxXސ_7˵f3}&r zbPoWh*;;f/eKcw"t!`)cH:9h9LfjKKKIAU`Bq!O5"tl6DjBO:y:yw^A}8 1_[zyPVZ:zV+]vMZ5Z}r	G5u|88cq"!H8Do.<
+pͅ&&Qv I1nGlEK!P<>j2_8Ad9Z91Q1
+@B͂0CHpHDXBEBISvCX
+"x1,.*nmm)Nn\^/⬈0N rbG'7N
+ W?)^Iw[ϻw ʾ3qPJnR.ʕ^>!]wu;dvڰP`\uP.@tB! $pZKl+,ֽ|\_]1lnm;jB=v[jwue6ysmyKq_NޚFj2>ͥ{f`q޶bj/f˲	\)fIvyPF]ۍ}(t6`^ċ8u{PaXnć:Q4;FƜnN̋y-.s;fj왼~bB!HfhȲ<9!RfTB~Q:yx1I>CNӣleXc-ԛ\.P|=`rK%X^Awt'ɜIlu:B$ڦ	6y8ʿz8L 3.^Gh? BKKrD,Հ"rYKI&sB9lư3uuHW(h4fŻe HHOHljŎeBt:_զVLMMWTiHVᲈElz"v%f=zt7nܻwojÇg?}4>Ν;nݚZM^~e?~<1ǣ ӈݽ{ۧ{;ׯv~ޞ?Lyb&=Fڵk:NA˗%bE+
+/^xωgϞҭM>y]A7od"/H
+blĖ.k[p\
+endstream
+endobj
+12 0 obj
+2404
+endobj
+13 0 obj
+endobj
+14 0 obj
+2404
+endobj
+15 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Ma0
+/Filter [ /FlateDecode ]
+/Width 784
+/Height 387
+/ColorSpace /DeviceGray
+/BitsPerComponent 8
+/Length 16 0 R
+>>
+stream
+x   mH@                                                                                                                                                                                                                                                                                                     w
+endstream
+endobj
+16 0 obj
+316
+endobj
+17 0 obj
+<<
+/Title (lte-dl-power-control)
+/CreationDate (D:20140609020309)
+/ModDate (D:20140609020309)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000316 00000 n 
+0000000407 00000 n 
+0000000425 00000 n 
+0000000463 00000 n 
+0000000484 00000 n 
+0000008420 00000 n 
+0000008440 00000 n 
+0000008467 00000 n 
+0000011012 00000 n 
+0000011033 00000 n 
+0000011049 00000 n 
+0000011070 00000 n 
+0000011575 00000 n 
+0000011595 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+11783
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-dl-power-control.png ns-3.21/src/lte/doc/source/figures/lte-dl-power-control.png
--- ns-3.20/src/lte/doc/source/figures/lte-dl-power-control.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-dl-power-control.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,41 @@
+PNG
+
+   IHDR       9   sRGB    gAMA  a   	pHYs    (J  -uIDATx^o$]&$%'%"uLyc K]y#YCԘIzEiPna0/3/|!nC^Hd6f{^h<1^[U]=Nw>PtSO<ߪk%  3#    0  (L   
+; oos'x".\fA1?3???|;0mo/s[V>ż}gy&?=yOLLL%Kg??S<|yx7|}IƯT^28>8)~<S~8{*/@s?y	F|SMzus}vZ|\G?q  &@   	  @a  P   6buf,br[Yj>0gZ^v"}cg}-Yױ۲p߉.oLj=&"Wjc{1{+F掿8ʵhZZJ}z̻ѬETK[ױkVc&.i%)w}JZnˊ߉a"2>;Ǎ7ތjyRϱNյ_#@TjQ+T\$[gc~ulՙ騧b+iUxrBa;bV
+8pvoI~!1}wRv.lr:ձ\9?竱~lU
+CAeqH:}9y-'%}河QӻkTTF#Is?RQkZR=㱅nFqM@a_
+7i:_X3/c;5A(G}vVw'FE}U%D˷m3zz{O?ݖ99i~t+}Mѯ]z]}8{m~ϐwajDٔڡ?jv6*yb`jdz,'Al6g;+k/ľ!5xz!춬G1c`c.r?y(GC9m7FXˋMYDIZviC+VxrZ	X{װ_Gɱ]>C/oWqf)j4]<82mXzbv}ubTx:e탤BW(GN_Hfzhe){ԜH~)7%Z-w7,65/`vރN";&m߿9fKՉXiݏ-hG~a^=~8{_ͧ??ׯ_K`w7ST8hxxG(ڵkO|"{4sss7{"=zǳQ3c   $@   	  @a  P   v0}{ߋ/%t{w}K}vܻw/>%w~wqs;s?o}[yxꩧFzg]_ZZKg?|r^BG@moKH}ߎo~Yx8@ſstmn'nwټdp˿KM>Gߍ^z)y晼____?ƽ4KHy+++~?[}C__FǡۻuV<x {QpQ>°sNv%5}QpX^^!  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P 1B&cllg\Xϗ.3IfVM;${};gcL.   1jʵhZJf-Zz!b@˱MF| l|6+ͼ`HUjQ+FPZ]z  Iz,L~i}l2Wcfcy:/}WbrcXLדEDyr4tSZ]G(ZWg%Q  FBH+Sa\JS25kk1 nDt#.5;^PT1N?0$ŕ=Qm㗯Fw;m/yA^l/8]d;'YZMgS   1j(uΌ6Xj6وJw;QYy8[XNϫ7ڨJWZ\\,~b
+73~9/Xvls1{k%JkcBL$!9  F5ٸg+]oƦ#N0M$?݌d.5cUecQ6XlD/ 04oעܨͮI~O;,Zk{.mHpxZRÞG}̴v[gJ՘X,o┆|DF `x,Sӿ(SM[ԧ7YWiW1 :3騫G\;ܼ^_x!iw[(XMSq%z6cnT^gV;*]J  FT֢3jk6޻UVaŧT5;cw*;*%Z-{"llF'|$~=uQݲM0hXgR۵r:7R-]gLՊ: Vς#u֭xA8\6@c&Zz7ވKΟ?F#{awΝw^ŋ=B`__ Q#@ &D  ؇t|K	 081_j|3^z饸}1c 5@O8 կ~5/8||̙3_`d~1޻01һ0s+ė%!@0jH^{~z^ طNxvZ^ 
+ F vY F  0s Q%@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   sȭ[#bmm-b~=s;wĽ{G/^R1 דO>gK`w  '@bx?>FE|sz+{d8~@   	  @a  P   &@   	  @aXͬs  P164{fN| 4YV+lO1/:MNƀ D  P C(;?|fu+z,L~muvZ_|<Omh?u  NYf#J%Yw7DXQrm.{)ovYc]v[xO瓧Ŵ3Q=Չ,=~ OA?kVnR'AߍF9^Ofڍ&Jkx?64>;s; Jqj9KwFݥhFR1uTm@kD'eb T `H_z]jDe~6_f@rԚL^-rUc=%kT&@J#nތF%0_^1@՘FEdu7/r#7N%/,lF5 8	w2JS7hTl~B,nQF\w6]ƖJ3iˊ1:;.wbJ>~Q-mT{ Ziԭ[#h4G(s\[#Ν;q޽Fŋcyy9{+  @a  P   &@   	  @a  P   &@   	pJߚ}SV 4NrlqڈrSDvd pTjQ+B5娗k15 xL8U.h,馴\Q7d)f^|ukY2mtj}Wcfl2Vb2{o<{n']gqsy{:m}:vi}1;n3 P Qn,Nv}!nqx^Б6KQXVMZLR<o/KJ=;dkQkn.oݟOY#c>{߫>m帒-_J$۬J%Y{}7R|Jũ#f @fr\-7b)OwQO(Gm.ig磲>ڍQTX{n_$t> *+=Ӷ7;uJ^_^{޿#f u:Iͬ{ݥFTl6{5Z36aqS6XlD/>t{gߎz}Ǳ 0Z8d{gnFQC{SvF?jLl7kwqJ򕉤~.9^_꨷ F R{O^\I涑wuV`wT4;DzGκWc&}gGNl3 P T֟?=5W:ơ.CS~ٸ]+G}S~#.uF]OƖJGc{75ԹQRt m^Hݺu+<x=2\Ο?F#{">[o=2ܹa\x1GH  &@   	  @a  P   &@   	  @aOƟɟ
+?G?{ `	@^_z={6/'?G>0F A?( 5   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+ ؟|YˏLmV_0Qi&vNNzp?Vg? 3jDV+q΍~;+עգ3-Th[6kCr=*JD}v Z`<fh?gxX_J\YZ 0Izsz,Lvw\hOד~w)+I`WQ  $@Sviɞ?iH(EuZLO.$K+Hߺэh[4Q+:3ĕXKo|5G 0gj1^ڼʰ~7mȳnB{\1{fՏdWbe1ݲ
+jKǶq   ޏVǍ6g98usuR5Vj#⥻!B  DಳL9j+i߽5ZK|$-TV-Py  (,7ʔwyunK8556ʫB6?qX]~nL  N/zz+v[ZqckQkޏ٬]nFmky6m~OD'dw<>_ҰRu"VZ7z/;"Rݘ՛  X+uV<x {H\,..hd0ܹa\x1GHq:   q̄n5fzAO-
+ `Pt:]y}_O~駟ΟC.L]50O8 ~뭷ҶwOs0z)!@0j	Ǡ &&&_	Q3f~@ׯkg  -cv5! U{  	鄈g%  0x> #@s  `  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @aphz?>    &@   	 ?|ܹs'= Gfuf,i2B  dHܜ& ͧ|ɠYɣq#75[jݏG`0kldj"C6fWc&iOJ{Fs#G01S~6 #B o|6+ͼ`Vg6򒶩Vܟ=e-Bc~۞#uȕ/E)z"@Nk  jd,.dզ>:邳qVx5٤i$h/Ym_h/nOmWvtROwow{_ن/t'4QZ}9&㣧J3N=
+WoGOs @ G!+gtQ~YwNRT'6(ݓ6Xr\<um_t_>}#.e}I^XH޹i[߬o^$/˶=}4etvXWZNtv$R5lF1dOWuڨwQg0`:gөn*+Q~7IcqnEip/՛QmTbS+Qz,w*+ѩ+Ym7>;RM[lQo7yPz9_Zn~{`WyH9.#oܟĶ8ͨ]gw ɒ7$^#qMI2i ~?ې4W
+U6 8]r7{+]rţmST'tݧ{r~);1k߆Fn엪1uV@gs[r @ h wWvvӁqSsIc835mN˦d]J}:wnspԯm8߿ǽS;mqa8Zl~@`	orgJT:wI;6Ic~-gmsy:_b1z;7ooލggD0p71ͫKc8{wec6WֻH۵rԧ;j>~6 jHݺu+<x=Ж^M*U'b5:MthdrEsIx?z/r>;  8㳷]M-W$jnnN`O '$9=	pE  n>A_ W_|3\K/o61~y	 8||̙3_ q 4]fffvxxWK_ Ac   葆^{-_& pڵz	  d   gn|я~ρ  @wB  ܹs3؝   &@   	  @a  P 0Vgbl,&ca=/~3	YI~3q
+ dHܜ& ͧn X<~?q^Z?}p4^s.r-LZDtj$Xi3VSH=~qa<?%Ng3o\ (Ha3>f^3QOǋSyIb+Ϟi!1{?iDmϑ:~ʗ?=}p G_;~N^z6v2Vb2wҽc5٤in/Ym	n/nOmWvtROwowFw_ن/t'4QZ}9&㣧J=}Wo({?#]L괝>]~ڽΉgr}+_iov>ǫY+\k5UN~++|kUI&U٪V*{[ngo~Fk=z\޵ܥe޲ֿ>-0p%5l
+۟U:7q:-;ۿmcgϺk쵍SS{v?8k}/#&@pЙDo[dFVXOCsڍy˷Cl:nm|iن#_6[3볳}e=̞u۶ԻgԩoTͲ-wi ͨ1=mdI#WFTK5ީi ~?ې5^Kr\4q0}ݢJFw/;	`$0Tcv-ʍjݧt)ʱMSqQ_m's)k߆Fn15_pixֳZ9_xRN(v96v4H0 `wڵ5~9QjY;c5p:g`k>lM]Jcky7s6
+ڦ~=fWa0p7ܾSQCtx\>Vc&ٻqs+y\o}zsݥultt=+JITv
+.wIo]^)gF2iOm.OvS{ZםoJ7:{dzO{aobj1Wk]SuX+d˶7k!YߍTKI<㷲2.FjD|v:6O{'٦HØp@cG֭[/z׻R
+pҳDmZ۫^]`0]x1GHqB077=_44 `g	f|v""O[H 6c&< Sڧn>-R%`Tq:c y}_O~ KK@C8 Q㭷KwO< n> AtD=!bqq] .L3]~=^{8sn `8hk׮	   D0Ο?z>Ν;s GtBٳg  <	JCV  2ℝ;w.  G   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+ C{ 0  0  (Lacc1O3yYIֻJ&79NXXLG @j̔fZdjƥ;7\fVδSmUV6^۬ETKT*  `QE9^cSj|v>*шͼQĕŹ,A  `_]Sy=&	uN˧vZʕ$0K pl
+Sviɞ?iH(EuZLO.$K+Hߺэh[4Q+:3ĕXKo|5G Ia1r~/m^eXKr6[Y7R=Fv=3IG2M+טnuq܈c8 mj֢q,>A{u_JfzcJQm$[t7D 8z,|<SZs@gwoG}xR)?iq3ImKq^a&@Ⱦ{{ͨ62]zv`zMͥj5`}yV/ @mi%6MEy?fv}:Pٴ=p|iloI:JՉXiu>K ݾH0~KwcjTo(k9Rn݊d ;wĽ{G/^R@ 6z pJLO7xEA9! RS}g-n
+%D   `B&Agż<3q~>Nꫯg>|^D(1~1~y	 ?q\ۙ3g#E q`waW^w#E1 4<kq`t	 NxvZ^0Ο?z>Cx J m={Vx ؆  xm s &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   &@   	  @a  P   6J~^BÇ:Ν;7n܈wy׿^__K_|np8%t4wG:Ξ==yO^281st[ZZ__~:/#HoV>7: *=\>Ŝ9s&T^28?j><}/o@}o|zBڵkyW^y%bwsP]wϠz*xGloϟA1O>dF ?c     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+     0  (L   
+;ThZ3(1èc+ 9pxꩧ7ߌ1os=ET*emɴݔ:|8hΝ;?O.i??gghozgQ3r	  (  0  (L   
+     0  (L   
+     8S    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-enb-rrc-states.dot ns-3.21/src/lte/doc/source/figures/lte-enb-rrc-states.dot
--- ns-3.20/src/lte/doc/source/figures/lte-enb-rrc-states.dot	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/figures/lte-enb-rrc-states.dot	2014-09-17 20:03:14.000000000 -0700
@@ -17,8 +17,9 @@
 NO_CONTEXT -> INITIAL_RANDOM_ACCESS [label="rx RA\npreamble"]
 INITIAL_RANDOM_ACCESS -> CONNECTION_REJECTED [label="rx RRC CONN REQ,\nAdmit = false"]
 CONNECTION_REJECTED -> CONTEXT_DESTROYED [label="connection\nrejected\ntimeout"]
-INITIAL_RANDOM_ACCESS -> CONTEXT_DESTROYED [label="connection\ntimeout"]
+INITIAL_RANDOM_ACCESS -> CONTEXT_DESTROYED [label="connection\nrequest\ntimeout"]
 INITIAL_RANDOM_ACCESS -> CONNECTION_SETUP [label="rx RRC CONN REQ,\nAdmit = true"]
+CONNECTION_SETUP -> CONTEXT_DESTROYED [label="connection\nsetup\ntimeout"]
 CONNECTION_SETUP -> CONNECTED_NORMALLY [label="rx RRC CONN SETUP\nCOMPLETED"]
 CONNECTED_NORMALLY -> CONNECTION_RECONFIGURATION [label="reconfiguration\ntrigger"]
 CONNECTION_RECONFIGURATION -> CONNECTED_NORMALLY [label="rx RRC CONN RECONF\nCOMPLETED"]
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-ffr-scheduling.pdf ns-3.21/src/lte/doc/source/figures/lte-ffr-scheduling.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-ffr-scheduling.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-ffr-scheduling.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,221 @@
+%PDF-1.4 
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 776.919 650.932]
+/CropBox [0 0 776.919 650.932]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+776.919 0 0 650.932 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+39
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /FlateDecode ]
+/Width 1036
+/Height 868
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/SMask 15 0 R
+/Length 9 0 R
+>>
+stream
+x	teڿ]Y:!@M(AaT KUt3 qA0wQTDAGP@-	o!ݧ^UUY;uϑtO]2                              gfs	zfAqqlo̕+WF/^$MQJü 5رG~6l|!Co7\v5>IMMgDFFۗNi@+w֍r}ƌ;sZ/9p}de]v|)<~zYKqN8ѯ_?ځҀV8#8#@i8## AG JGpG B8P8#8@pp # Ѫhs0',~e햓F{-YwB0ԏk^L:!n&GhPvrxYQuWz-痃#eOsdͳ5{x:1u;[w-YｐPĔ/s+~xV$O}c2Ǧ3fԹK?SZ]sw^¾>ߤ,\ 8#hR).T=VfMg`[A7$imK9ôs>x3S3n@1nձJ;BGf:>,Y/|vO?_uCu_?Vb~98B]AB-LxﭽtBQˏMś'	^ZÙC<KYOÅ?[hUWGGp).m?셋/uoL+kB~C>kC̿/gUtuϓ]_ AKqABBڇ'bşŦp7\qpI?!|jPubŭ_98S7iȨ3bPkGЅ]ӻMSѩwX*ЯCC^rp9BH8^Sm,_ns~-p?A63hMWd>Gppq6_ʰef/u~*}Qƪ*	^z2VWpkGHC#8*Kp&wN\#1B-%y|6G#DMICy3{PaWnnarpztڛL\VKA~t%}ۣڵ휪fuPo&IUlOU>Uj.s'O:.u[^?t[ w('[S?!ǟQqcv:yBw*-}_~U>U"GPW呿vعqAwӫGDGq1AeG80?ڴS	}ɨ;oػyC0sC_i}P$hԶݽ[/G7Gtx'Ull]`>,CN7[p'aik=XhSov][l0\e!fo+2; t~t9c>Ψvw-Sl0M6vŉ*KE~v,+}rgA8Boa֫GPW
+BVfg/g#88Bе_1Ww
+0{]v#\\{@/6PGFZ%p6nwy#7څpݰT_P7GI{ǆIs:B{fs_99}>ynv?As&oՙkw|Wy'~v,/ʹ̞;F]G6dXX9YV?ձWr2;B~IGhG5jV#4#8U_vvvlVv{Z}Qkq%[GuyߗNc1](?`wu _bO!fɡ#{رJ=5|໾
+8{-/8}qfXSF|+NIPzrѺO.ҡn.=X}v>-Z6yյn\y^G9|SpkGߝ8B;e|䕡:ᚧ~〈S.V}1MGhɎPf.]|(4V:gMA;pC_&tM^98BAz?s# d,X72}ƚSnynwtW'yAw^~k
+Pl`5'3W돤{-vpVطw5Y/ЉJy^5#X,5ZzC[ڏ{=>_n4kņ[Ӟ>Ǫi}v9=lG#.HN;OXd4<3@jSTZ#98#CB1)Ɗs;VO}ζR}K!"kv|#WJ.0bb
+s~^4 Ӵ/,)d(ӫoEL^T}'ܥ`Ay^8:F8B-d*߻Zo}fG Oΰ5n{5S]q?7#L?,SGv.=[U_vg/Gp:a,);(mM[u%}vQm=9ZQe=tmҹk_jہ^9opU+d(B!쪶ღ̾9|#gGhгBrff-n+# Gh
+S,:y<Lvz@_t*+t϶*>suƊls=vBѻypV֑S#pp j( GpG @i  8#8ApppGB## #8#@iᑖG65mٲG~6ҥKkÇ?-in֘͔]M||wv5_|l;uZ\ӧOoI[4j(@HiP-46o~F6jݺu<.//G-[6СC1KnkG}[nia_rG~3-oWcJۨ)J}z9sݻw?w cӧO+M; P#  8 A p8̟Ӊoq^Ć-[Ǝw?<Y׼0uBܸMzW{~p2?].La/l}.@4 G9¥
+:Ŏla{oڌZ~#M:;[I6Y=$dYz/&|`o];g&&<?g܀Pcܪc³ɮ/8Qy8_з!uG  8 Bڌ?̙z׈lV
+Z?t8DUzUXqkpW8Vlo QgQQVQ#\!Zi}p P 8zG0ϯɿ̈́O[S?!ǟ=oӕGv۵cuM/}갮#;gN/#H0}Ԃg{3?8t:u7U>a~~~BqۊQ\$9FD/g~F=8SeB`1O=&N;G'*QZi}PuY¦B #4#T]:cG[]}QZ`,;>9mU+X-K-ZuPy$z]{%W1膥+G^>(eY;5Uz^D~Y|}HJkvw߰w$UZ?LƊ]kPvAzyYvJlp̗3f6 @i вA'H2ÓzS7<!3Jz/);|~I~]̚~DUYV=ziձW;B5Â?:XzmEG~~Qqʹl0+Nhvk^<T'm*W7+.WZR#zƏ:OVoG  8#{رJjۗDwAI[dvŎP#pK_
+gw	"Z#4x)]}vY*$gmhҟrk;Bhn.LAeGLbxPJS( >p[ ! Jp#ةp!BƊGr+m'qKܷ'Awu=)1^˶}j8Pu}cMT^ JS#\پBĴ-/w2mٯ^g^ʎ:FiLzgWLi}N4%{_<B #4#*%]1194/h@`i_RtC}*ˍ_뉝e9)d(̗/Ι'Z1]6_}Zog}U{k{<ģ^T܏7_O|˙VZ#{Kw-	K @i  8B9T~_]&tALʎ`2\62]`_j}h^AFy0&$]TdaOoΗ;2n{5V	]q?Y/5T?=#׫KwWD1#1}DdͮTڨ>g^>Mn	8 ( Ghj<WI0:}XcEAN*4MB%R0>z|'kVu)7
+S_&G  8 8 ( G  @i  8  ! Jp WG())Y G  86x5k,# A p #  ! Jp#  ! Jp̎p P# xbAK yw|AjB R;BhhU !Cv @i  -ݻZJ	5mk! Jphpܹ;4G B #p P# `Mp @i  8O&,# A pzfB # @4 G  G  8  8 ( p @i  #  ! J G p P 8# A  G B   8@4 p G  #  8 ( p @i #  ! J p  #  @4 G p  8#  ( G  @i  8  A p   8/?6u1]ўj@c׼0uBܸMzWaʬ^H\}\4f7S̭2UMn<)^VTqdͳA?tbҲ0j$-ZV[`Olȕǟ\[N[a(K>[QU_?}bܽRVo5$oJg\4Ǝ7n;SA ( G Qun_q.^pֽ1AB??o3}sfbrs:ƭ:fɚś'	H5ά_LśB'(z髻NAǏ6_G>;SZo0meZkC5xGwAh;d$SwܶQgJ¬il+$3PU1B'~ɐ`377;1i钧EC`VZ
+hYkR}$%?ؤ!BWS! Jpۄ]d+ÖQ׾tTo'V<e&nA7ˋʁ?odޏ4Au/A3:޴Q[qpI?!|G0~@_YPk_vzh-_T'h}kCu|m⇡hڍ,@4 G la	tCRv3zUO#Hr1}KhlyX_`e1a?w#'i(GY>د%bG0MMvϧ5ӯvT#8#&Q_R{ZWڹwS:\*ʁ @i  8Xc7GGiП_ۃUl~w߰w󔳻LFp50ė֟+~>sic;=v$'kO$J%.oƕ*W<hkLm%ϭٿ]w20^06 4nS1@4 G s&oՙ&I:3yWc#\퇌d#U(s!Dگ;XZ`EP}|TPVo%***222nkA}%U,?M}Qվj P# к0>Sx,<맮H?k(>;Y(?W}LO=_?_9BŞgz^TQPuƍ7sn{H|uGPD}IMai@4 G 5a,X72X}*]W3FL="
+{+DLRRPӣ]OV}$r?BWkLe;E]gpQ-Jߏ Y2ƴݼ,[tgv.+t]B #-4~.tPh8clSg-	~3gJ}U{rߝ#cbZ.WpȷZ>:[څ"OΩwњǽ߱ƺ9AKob+>ԐnBЄ[/UO{Aɇ*Vo{I4lǆbٲBC駸c @i  8`,)v m(j|00]q?Xou!쭰~F?QVVךŴQRWG0.Vd_fS:]C#s5/Vo{I4Y=+_AnU<R#@4 G PYu$x^cyrff-	v.d-TyG>%Od\(\)?'^Ng# 8SRu.|;ꦙQKj P# #4?v<OAFg/eM3(@4 G G   8  ?>}: zH G p 3fkA G p; bM #  8bM #  8bM #  8bM!#@s!$$$(((ciW"** #  ͅ N:v ̙G,'O&#@3F-5ʕ+! p G !! p G A,! p G A,! p GV.  8#  ( G  @i  8 ! Jp p P#  #4۷o_B\dIٜB~#  8 ߦs\G p z)))III#  GG p  ##  d zpLB&zp $#P#  8 pp G   @= 8I GG  G 2	## @&zp $#P#  # pp p  @= 8  dGG  G 2	@=# @&G G $#@3ǓiB	ҿĦtL[i6= 8  dGEy^-ä"<!A>"o5G  G 2	ԣ!IJ-?ڜ\ G L84zvR2I pL8z\tR
+\& G L84zZ~W-$w?7p $#P>ˍƮ^)E[ep $#@G.>CaF5 G 2	QuHTT6,# phheYeYW}̑SƁ#  # pzyp G 2	 @= 8@&G G $ 88# I GG p 2	##  @&z6+y? 8I G GP҂& [cQ6u|+ G 2	@=fGSyu|:u{#X7BsZٛj# I G=ҵJ:}s4+ G   @=B8-#cQkFabI\bs
+#+Dhm#=_fZw!
+^'ϱ[֭IDqG $# #hZŴrs䔾s4$82ƷbQx$/I4F3ApL8P8KtT]<B͟V>DmY9n#pg|ܖzvwu@}pL8P8kU\#?-=q1U#x =:#(#Z-Rεk$cuZGkp/G $# #(zi:r&VljDaU}deGP_Eyq@ejϲFSHj~:M-	8@&
+RTr7MlBB8x|GS5]LѸPKGpL8P8'(vr4EĦ%<Hmo}hOc'5R~j5gpӃ4$M5Ro"G?# pqhl8@&	[r&mF#  8 8B㐚:vڵ+#  #@] P#  8  p8  rssg̘a4q7 j l Xp7 Gk 8p bM G ܀#  A	1118phnU H G phDGGhݘu@,'O#  j Z3FfAr
+ 8p A0\#7 G	 8p#G 8p jhhbA G ܀# @ 8p   8p]  8p @i  8 ! Jp G `W#  p`W#  p`W#  p`W#  p P# # A9+$d4L2+i'[[[Q##  j|{2Rv,#8ǰl5ċq"W6uuV\# p`W~ 濭9).ʣˆXW=reJrNkhNm # n]M2t}~dk#H1Hqpp8|ET­-::ڨuO-ܵÒ(w\QQ7GhuGp&٦6/p G pVV3-xm=<$gugk$B3uuO6ӋR# # sg*wd\$\geIVgswvޞ!i$: 6L8 G v5M۾F (<cHyNUCq}:2(g /7Ӥ؃G G ܀# #h皙#e:*#xۀ# # n]`;.
+O\Z7GӳO>HjZ\|ʣt8 G ox;$WHy=
+3Q>#{=xIy{-iOL G p  p  # n  # n  # n  # n B # @4 G  G v5 8 G v5fn襺QzYnfE8p`W>$w+i"8E8p v5E68ph|ZN'z"p p 758#(/8c]m4>MKSȻ~3lCd2	 oQPwEUu"^Z?i@S G p`WAʿ%fAX2bɦL(]-9Mj1e\MHo5 G  8i`ap&}%GQm4D]ęe{Hu4²u%V,[+ׯ#(V# n 4mtXW#	+[kl&QVG 78u{HptOp]G}6uYW 8pZ$1vrvIGxYOkMu2ܖ ׯe==Am<*HzK'ԁΎj4 G  G P,AX!7`<GMmH$S:HG}"*'"yDC[ޱ<p p /@i  8۷nDFF.YlNaa!?Ǫ 8#;oӹsd~#  8 @=$pL#P#  8I pp G 2	 @= 8@&! @= 8 dGh
+GP{Y]hy6LV# pqmϻjiٻaAҗ*(e.~jp 2	#GdroT3[.V?R+]bq $#PJ:{x*#4PZ~d>SA2apu[#  # JQC5z|4#a/AMԴD[j1W%c6OI$m2rWI~D"aݩ޶Zˏ^3 8I G sQnh<-fQwL">̓o]]\GPmIatl#wJޤ8#  <:b7kɣdZnDdt=μ+.Ir7VDiBy8NSp Grqqn{YHҬb.c$g{݅=\M⦔wYwŕu\Q5#jF]:#  8#x^y9:d(uP!\=6\*4 jwϲsj6VUAeCj]WFwk.6{2ֆ# pE;G,4Z{bkwA{Л8sݜ+&_xH* k$0qA$[/=-GﭖM'(?ݹ;G $#@sqPO]*Y]K­vAx)q۶	?2!Z~eHw:Iͼ [-)!1K	e[\0cш#  8P{0AM<08Ś#  8$Pgߏ= Ss:VA4t:G&77M G ph<GP_j/ 7M*]2uHf.jK	8#  c!z`/Wh`G6M G 2	@=6#_Ѐ=AAApL8Pj	pײ*Ǭɓk8I G @_#5FfAr
+ 8I G G !&k8I G G A$8@&Gp # pqhbA G 2	:у5^q##  duԣ/8# #P-b`]_NgXl8# #PF9trA8# #4z0uplZm_i\q|#XFu`Z9Bm<I8#  Ghҍ$;ddQHebŘ-9WYj+-G墀#HE@~?J'$O G $ 8գoQҕDx۟vQj~AuQj^-|A#  # RAUUGPy6y{ۢ/24 G $ 8B3q{m^4?G'G6呕Au|#FS7}TA0#  8I p_GQHk+;k :uYWG9)߮#  8  8BGSxdyV^dYyK=-qF)FVk2cs<|=
+w-H=DeC<MG p  ##  d zpL#P#  8 pp G   @= 8 dG G L88 8I Ghք\r6#F G p qHMM;vxmvp G  @i  8  ! Jp p P# #  ! Jp p P# # A  G B # A  G B   8@4 p G  #  8 ( p @i #  ! J G p P 8# A ( G B 8#  ( G  @i  8P/l߾}u%22rɒ%-fs
+ 8 8B#?|Ν;'''sp pl$%%#  d zpL#P#  8I pp G 2	pp G   @= 8 dG G L88#@&zp $#P#  # pp p  @= 8  dG G L88 8I GGp $# #  # pq p   # #  dɴXbbNڧHP9G  G 2	QlVK|` ч6p| :yh 8@&GQW 6
+(I 8  dG]"JI #  dף	o<E#ēh 8  dG~eIpL#P M_M"pL#PI#(+=8 8I GfV+<e/{iM"T8  8I G^;w-kt-R{O #  dzl#  d zpL#P#  8I pp G   @= 8 dG G L88# I G G L@= 8  dP|ӗ:~̘S.hOQhԏk^L:!n&f`e{/$>T.x盉)_VLGӟ?O/Ui8Yېx:1iGNW5WOs{-YwBƪmOͲr|vƤ{som=Un_N=Dc[ҍ͛?ɒ'[e,lc4ĸ{?3qŷ٥.
+ԢUG G pP̗?nŋκ7&HmQTuqBqUo&p@{f.Rf).T>~g-?Xa]ABXːIGzM#V_CIy7vg=&S/gOyŔzkrqv̻55^`xPfKBƉvWe#t{CvtSn"Рh@-Zz p G 5.n&<"]̌d\ubŭ_9Pflo QtCڌ1QAƼ~mAT'4tmoCt7qLo:A(^exǅd,6;Y<3GP_Z*# #  j3nHʮb{*ؿ}RI$9FD4rw<]n/G0ϲ`0;#'4ث;G~-ZC:=Sݳҽsta|/T_.WJ= 8#*!BA2oVٳA~SnqaDD}'_$'Ji֤\97=68n5w~{C赹U.}/xNʟ.TK":߸2׻2GP]Z*# #  ZKoY<g҈YzNZYaNoE#tg6rG=GPLU_9g/17=rŲS5?~J/snν?ȩDo؟|[.QQQѷ$TVJ= 8#
+g2|gegGx9J<~ug_#u9SzIq)7,ϑv1[{K`6]rFt-{o^5LOދlPuƍ7sm;
+ԢUG G pPXndp
+pOݠJSqԈGDl_!bږs*|zwī{5v~q\|~oGtKHqP`!ww󢅮~(di2׎hUG  G T0.tPh8clQ}ֲؐ~~<sX5а,=rEzK^YXpT9tjMbqXJr7hmTp/gMƊ?-/gZ;$趐n#y_N&MX5R.'Z|KG@-Z	[r&mF#  8cooN^vдU.lCWهKz߭;G\`o9Dv0ɏʴ5dKi?9D]T}䝽m[Jl&q-#Xwtjh;}#@-ZIMMvM\\ܮ] 8)Tf<WXrff-n=S'.7V]:[oB 8м$h\}EM3@4 G GhIxε_ʚfFoӁ @i  8  ! Jp uG(,,ܶm|ӧO @i  ̂pu׭YfB #Ap P# p P# p # A Z9]vׯacƌy@,xEǎ=. G ݺu v'7Ga#  ͂ݻCx} @i  -Ν;W\\p P# `Cp @i  86M G  8?͚k.p P#  # A  G B  8@4 G  G  8  8 ( p @i #  ! J G  B   8  ( p_P|ӗ:~̘S.hOQsԏk^L:!n&fXe{/$>T.x盉)_VLGӟ?O/Ui8Yېx:1iGNW5<}p.I[d	w\oły.<!WrWn9Yn[CC-X*|w~wfJ6Euz4W@'X)Kg\4Ǝ7n;SA9 ( G 㥭s􏛽pⅳ	>y
+s>x3S3n@1n1K,<MEqf.Rf).T>~g-?Xa]ABXːIGzM#V_AtT\1/Ӷ^nK~M~ȺR.mdc[<jZI5힁mݐ}z9Fo6a̍!BANLZiucPh0>&Po I4e<Iт?c:_MU ( Gh\0MxEF2lKG+nʁ2e{J7Gz v̎f7Ŏ
+2k{J98>ue#~ ¯M@m(~Vt5t;X}WM(}kCu|m⇡hڍ,@4 G US̈́v!)!`ݧJ#1B-%3vrc}9yǄyo:Bu~m'n.;lm{>͗tuϟ~`A6hEU~_{.}7Co0B #f*9:BN4e5,w{7O9[AjˤmQ_	:I|iI#KcQ+ x|6mԁAB_2io\r`^M(㹵7Nfm*.B #rǷM3iD,='ά0]\{@/=w>;Ŏ~N?P#T}̟Ktr!kc`iwܨto壂ڟ|[.QQQѷ$p3X}W@'Q[Tu#Q][ 8Cy3Es~z]ЈώrIug_#Se9S=dĶV?=Wy5un`NGLOދj:3nڸqㆵs`O{rDuQwM!l@4 G c,X72ΨX}*]WgLzD+>WG
+=ޭ͊=z\J'>1`pZNuߏPy䕡:ᚧ~,uSَyBY?\GlKf#HW#L(C1mu7/˶~V-]㙢
+@W# 8CB1)Ɗs;VO}ζR˓oņ[晃>Ǫi}f9s11sG^YXpT94e;ڍLTT]Ղ!A!eǽ߱zs# $V&}!݄С	f_2VED-6=X}W#GN#ǆbٲBC駸c @i  8B+XۛS4mՁ5o+j|0 ]q?Xu!0;NQ`(L;/[ Zo)o#Ȗ~rFI=:Tw%%G0KRXrh;}~`^A<Ƣ,_ճb|릛{\ks-5R! Jp0ʢܬ#\c(s43lI>6P2S_.d-Ty]>%Od\(܏r|OF! Jph\}EM5@@4 G e;s3Sm  P#   @4 G [>ӧ^7! p G ;c& p G Z#   8#    8#    84#vw1clC GB6m4czաCڡ\d杻"#@sF-5/*[.#ɓ' p G Z3FfAr
+A G p GpA G p GA G p GA G pￋ #  8 ! Jp G  P#  8 A p B # WP"##,Yb6+#  #4aaasܹsrr2?W G  GFJJJRR 8@&G G $ 88#  GG p I GG p 2	##  @&zp $#P#  8 dG G L88 8I GG  G 2	## @&zp $#P#  # pz G L8P8 8I G G  G 2	ЌdZPCBo1i'd$8Vxt#  # pч}Q~08>OHȀ#[@js G L8CH?z$Ok6'iq p   ͡݆TbwLp p   -m7("Ef ׾FIq p   ͨArUG  G 2	ԣrkWxJF5VcG  G 2	Q~Kx} pL8zt?U1ի=M= 8@&ZF=oYVkYUsdT"q# @&z}pL#P#  8I pp G 2	 @= 8 dG G L88# I GG p 2	## @&zx:pL8P8JTX8^؎:˸[e\Ǿp   ckvk8Y77gGp`_i-sͩ6_ 8I pdiYh9xPp  #4#>2f&v%;0BvQ:nm
+G:d~4O"nM&2D8@&GA+*}k%I$1'U6-_qܥzk$T.Z& G 2	@=.PEw>W5zx[4l3"U
+mgGPĢp6WvxD8@&G5ʲ3X}KO\ELH.HO{Rώ >U/Y>嵿Z8M#  dz4JA9FL6N5>#/ԯ#(rxM!x^4 G 2	@=JGuTW.(qelbbgG{}?$\#tG $#@	[r&mFQwiK6ȥCKM8#KFVk2=a<HFұ\)МMҌ46yH#  8PkRSSǎ;|]vsE8#  #  pp8  rssg̘a4q7 j l Xp7 Gk 8p bM G ܀#  A	1118phnU H G phDGGhݘu@,'O#  j Z3FfAr
+ 8p A0\#7 G	 8p#G 8p jhhbA G ܀# @ 8p   8p]  8p @i  8 ! Jp G `W#  p`W#  p`WSL2{&	شpp8!JMmGHP/Ɖx\ Օ.Zq1^n& # n ~ 濭9).ʣˆXW=reJrNkhNm #  8-uS5[Gw  i4 G G "[[utQ#Zk%{5P魯p_o 9߯8n3MMm&7^# n]MkA+[PuItqUBx:Z5xÁۙ:'lq 8p j|ܑq哈o_pu&iZ<y{ԿL{0# pBM۾F (<cHyNUCq}:2(g /7Ӥ؃ G p $xxA;=DN,k?o9Ta5TJpp]`;.
+O\Z7GӳO>HjZ\|ʣt8 G v5	Pd\Y#(D,*3ASBH%infJ<1G 8p j  G 8p  G 8p @4 G p  8#  G  8 G  8 G  8 G  8͔Kug( G p-G&װ[MI-4 G p v5E68p`W>-Q=o 8p G v5vά
+K;XFeMyAc߾|.Ym 3{(mlUVOp7U	bK:X$d$&M+P4s[0v{Ae4&WsVUc9*h
+%j#  q LJ ϣ
+i/ipn"3=">:heK YV_GPXUխ G G B!k/A,H#ʖ#ac;IǾ Up G մAP|`϶		μ& KJ6<  G ܀# 3ڎ /c	NF$ǽ#^Io)U:0[^mq8 G v5uc8ITi4J"L-#4 8:hPwL"ZCZiZGPoy\#7  jiyr G ܀#@ uǪ8#   #  @4 G p-۷o_B\dIٜB~#  8 ߦs\G p z)))III#  GG p  #ԫ#ɬ.4<	fqL8P86]le?V|۰aKU2z|Al5 8 pZ#X2ssGN*˙-e}ȍBiҕ8 dGIGhɢ}dfv!G L8.85XlEE3ǔZ2m
+HB$=6 $~y%Hd؆ww\~\'jqL8P8f斅Rig#HB)QwL">̓{E~NH=A%y-+kGl#wJޤ8@&Zk=ׇ֭ܓ)A_AʛF4LOqYdK$syW\[nV҄rqplO]8@&]F'f>qG#q$qI7#(Z^p8oCwvN("3 8w|ԅ#6@ J
+ZQRVhQڊQ*Zmȣbx({<d?ؕoFs.܅*M$m߯.v4A#$~ %ǺXU6BomLݾFqZMԿFQվI@#hb#unc]qbN?#T>ro|ר#5<*=+_#|Տ1mnh$hF[Twܓ:LϘQ%=&|AlW,VUuq?5w%:f#X	^P5<]=*~aGZq34axkUpfLcy{ v܅8
+_IjPv&|ɲ#'<Gv[#I@#P]`W>0U+o#Pmܸ?a$h4Z#TZ~ڥN!m0Lh4:ߙT֡KxWlԻFF@#8X鄟j<}I.1LcLҕWxGHtz噠h4Vً+hF(Ʉ>}h4v4ko*kiT*/رF@#`'A#`B%|Z.i<ht3ƹFh$h!Fsyh@(Fh$h̣F@#F@#`'A#`5!64;	8FNFpZn_h4;	i+iU4%Kk44<Pҿ*cB#5B/SF Fh{L[pz%+m/iV9E_{@P鉎;?I#I@#4yvO?*-p,%;q5ү+v	w˗,{^&rT}=Bjh$<V=E1noKYm]i¥:ÉGHx1&W},*sqb?FNJ#+:>됰7PHpᄍl]FF'd{F@#FhPP	ϢIϩzNN!bGH75kbLMh$<Ɯ#Sm-:W}e#VןµhjQkk4;F@#4yy*l"W9GTBٵϸUDNtQG?\>K|_5˱oj
+h4vF@#`'`h4vF@#`h4IF@#`h4IF Р5kl̙R2D#hGyۈ#.\F@#F"FF E 4A#@#F@#`F F"F Eq@# F@#`F"F4Eh4h4!0h,B`4@#XhF@#FF@#`rhh@#`F@#J̟?CTC޽ۏ+F p4klRoF@#@#GJL:uʔ)4yD#I@#G44yD#I$hF@#NF0h4$hF@#NF0h4qNF0h4h$hF@#FNF0h4h$hF@#FNF0h4h$hF@#FNF0Q#@#`'A#`54v4Q#F@#`'A#`5h4v4<~>cps+;}ܫ|Oi4h$h<-e|+!s>P1,)~IF&h4;	h'\7BlQ`/ ;	<V;L$hh$h<	UWⓇ1OF~IMcVB6e#Thh$clB]5*p9H#I@#EB?fY#@#`'A#汨
+*oi?vPeV'U|F FNFc+jS4 y<h4;	hF@#F0h4;	hF@#NF0h4$hF@#NF0h4$hF@#FNF0h4h$hF@#FNF0h4h$hF@#FNF0h4h$hF@#FNF<j4h$h̣F@#h4v4Q#F@#`'A#PK͚59soCh441}#GG6bĈqE#@#@#`F@#F"FFh,B`4Xh@#@#F@#`Fph,B`4@#XhF@# F@#`F"F4Eh4h4!0h,B@#X0h4,B`4h4Xhh@#`F@#F"FF E 44!0hh,B`4Xh@#@#F@#`F"F4Eh4h4!0Eh4`pg|{~<wg>SHΆwfqG{Ք.dު'o91Xۛ٘_Xr۟\W|-%8<g)7R݋^m<,7-e~2;[MxJok㼙=w앷>챛~z[c.[)z'B랽ʏ'E	z痓%kw,/`9^qCɪ\Aw *!0h4	wo_+In<+tJV/~75kF4vëxC"fȉG^Avhh311^g{_:+%npg.}٧nhl.H|,8lN[l}rά݃l3O@Ap;nwj@??Ɓ@Ol,OJInA2>MIbEq](=}o(to6	LO;2ڷvߘ+Q"FF /^<yѯ쉔%ü+:&{et3_Щ4ًOj2lvto#T^D&GQE^׫Qs-7B`3[}޲߿G2?k`JWW` h5|v^OVW֨ە(_û߼2qۖծ߁8Xh$_;eĩ3ʶ]K!+RZ~W@%\:o/ؔ!z,u7B'/Kj;(צInъޤ[~%n2`yG3
+>UPFH|bF@#PߞEzewR5B)1]8b@@̹FOw?y(6[Z1OR?ǳ6I8'/{w%7W;רIwk;*o?"37U!8E@M"Yk=~5[n>"7>z/|QwBt|mbՉgpe.͍qIxpuǳO&59界*.^OtE/0tIM=2Lxz}~?s&}]ri]رcҿ5eInm!8E@]6)[HW~`ʐ['tL:U/صx_FŷwDwq˞;oON0NPzҶOxp}~[Vrs_[,-3u8(wkE%5X/_#:jU,B`4hznhj^]qN'{޺$0cM_ƢnH?oW޽S>Nz=ƽXZ̷m3}^\msǒu=o}Lnq_vDbW%ONڿf9|SY΍PQ"FF F	>奻CH55(ZFC$<ѽ:ÇLJ9EozFHWZqOhMMآZoHަ3É]-N}kCv cKNL	U{Q[zjI|GNP)0{dFG3w}v0tm_(J+zɒ^tZV0}%M^kG3ֽMM$ki^8E@"~{QV2-5;ݷY炽FMwWnM5iQnt|(1gU5H⇾LuPl@Q#TVcKD	Oٟٽ5N?G+kUVeٿNP([6;զ=ϼn{k߁:XhԼٸj۳l᜝WXeXrtwmX̯gXjEh45Eʞ%o<\5ym5E%^tI~߹б@#5_~ !0h4BO>^pXK.q"F@hݺY4!0h4BI F"FF(F"FFxA#@#pرc˖-c,wC >}oqN,B4 cǎmI&͇&O|Yg9ԉE4K.6m˝kD-94|#lݺ5gF@#`F@#DGy&h4!0h4B.F"FF(g46lఠ@#@#`F F"F E44h4!0h,B`4@#XhF@# F@#`F"F4Eh4h4!0FF@#`F 4 !0h4,B`4h4XhhE 44!0h4h,B`4hF"F E44h4!0hF"F4Eh4h4!0h,B`4@#XhF@# F@#`F"4Eq F@#"FF@#E!)20awB]Ek{U4!n]v^Co~gϞ߃z&ڵX4!FCo^zqDΝm8h,B h !0,B`444Xhh@#hF@#` F"F E44h4!0hh,B`4Xh@#@#F@#`F F"F E44AɌIוxn7VgF_<c޽p_`kSo|pqvOG2_+\@L}qc~9
+=3õ=0z;խ.h,B]d:9̘1^0rm\^Fe6<fs#S`S;91
+U|h?tL8qEhkC.s`qo큉kn6ؖF@#`Fh|3˖-Ok;sw(CpF('j)(#7;WCyU_#yq>Zrrǵk;6N#$80!CewY#hE"FC#4Fsn6([:-֧~k?'cOp@@ vky=kGt'bE3..9P$9}C~}q{򱋏khc]\rHN? y'^ڼ|㜟R)]Mzys~[N?EZFw充[_5jhc	W4B^y|"FC#4FhԨWw.9F?:^.tT귞UeVLF-)>&'j2_F^@Ϝ޼-oJk=0Qm[6@ ?߷a̓aKxgL=OKvP$qG6աhLFsf,-yn۔-˫t˛vyQ1o|Qy_yNo,~tѤ6lsExasa4PA#EFhPzwp/ɪm#䯺_%U~)uhGOYVHζKg#y{>_̄{߱4h[gLy뒼^кq<ֲ]p
+.rJ	7e-'gڊS|g{i[N|QSWxˬSR\0j}e6zT#.xvK5PA#EFhx{JMaYCasV!{#SNsxf~uhԓg~ a΍Ov:czYq#|lsy9OJ~7K9>W>YV$zɾi#^(Ϟ~݂^>(ɽs5i{;oVG80=+ύ^wʀ6T
+slы;%h !07Ba΂ғs7uO={th=6Bh>cG6=nP|ߜ]6ʍu}g4MeS4=ҝcRDזS=n^{˵mW^G<6rK-˦M}&l?ê4F qQO-Y]dgn/oz`ژ|'GΠN96ەn/(yg}zM=ɽa(9wb@ImUڿ~4[Wvn2M9ůG8{#^,ɀV
+s>399[^J]aAvFzmZ#ĿЊOt_F?ꡡ-}^>ɇW%h !05B Vn^QtNaaxכן4hֺEM8qq0g1R[wHkG;F(_&%8#ug#D2>:]m:tEvN-:6wV&?;QZ&;%V[.'.ȩ́xq<z@V>Mءy6}Oz&N4XhhCKhφ՟ZfSv=mkVݖU9c݊y{7ݸ'0ldڙ1~яZF"FEW/{"F@#`F F"F E44h4!0hh,B`4Xh@#@#F@#`F 8h,B h !0,B`444Xhh@#hF@#` F"FQFxI&]p	A#`hf͚5`S=ztTg:물<aX0|>5\8P']tٺuF"F E44h4!0hh,B`4@#XhF@# F@#`F"F4Eh4h4!0h,B@#X F@#"FF@#EF 4 !0h4h,B`4hXh@#@#`F F"F E44h4!0h;o];Op~qE|<Ǎ~፯mcά;wQcr%eO=w?о=3%c޽_mh,B`4h"{߾WR#&8yW'%%\M9:uc[t@|Џ9 ?}q`3]3꘦#^WǫOqǌznW.s`qo+,_64!0hnf+{"e0I^o#*6ݜ7tm6/b ӑ8W\&TPmuB_Щ4#ًOj2l}u8WqKyJvm5B}Xh 6Bk8uaF٢k7dEN;s)X>}vg/n\xbZQ IW=./gDὧy͸x@ӇM~oO0ק{?ܮmN7ѭ2x~Knԑ]}U-O ykw$s^_)'Z6)EWeؤ7qߗnY/+t]~Qc)? ycgV{^!moGV(ǯ4!0h4Bm.iх]o_4qڬ?۝_EJ3JV͏{V!䄳W~TZX.͆= mߟ9y[tgߔm{~a$w>1\rqUVަ?]۟/rwGOY*,a-ۜ'Hc:к{4:-X[2ܶ)'L[WrqEf%k<[1+txsM;>EE1gݳ%ӏs؇%siEƼEA$T~u4Fd]\8oQ,]Ȋܚ!?/~ާ
+46狢39. mHޞ>3kw,-ބG5o`Fx{Yf^\ت7~581wOoв)}}(=]*սnt_V}./px묁=o]swߔ>ߟڭFx	o̹Fe[@#kpήM ~#2d7mkԠTiԓgo+hÜk4tI6FH=E l}rj>-^38M.@#U|bw	w(]/ٚeSϨ臽s5i{;J^IQ|OJ~8m/z7t5!0h8hV罸✝3Nu7uO=lЪ{	5BjMF(Nmq}oΎnk~ql/b)n#ZߠGrX1+2Kk|1]tK@y;ɍ~(X7/L55B;zGTׇ7؇i:GEZ#w0M//Dr~ȸ]GVx#'<`[?9:x=B})%ROgE(A#}6wR>,:`܉&}F([:f-zo:&7VUn|h'v|I)re|<grsD7/]%dն¡wHx+ZKK^Tj0thgoNQ#`FM4^ԿUL43RBo^B@Ym_46Ǖ=Ьψ*CM\Ě>~#{]z}ԑ]ຳZ~W~!z+pif&;Ljwobtfew<kwK.wڨE-[ВHao/<wG#=ߴ(7p<Hxs)}F]F"F JK!oUWݞ]yٰ>(5q?QM8kۚkegl^]>UWXe_?ePtlȯ{可.+}7آxhC~oA殝Wu5!0hG3^Ϸ<fX:F"FFDrVֱgo?>4F"FF E _~={4!0h47BgF"FFm@ P=4!0h4s#TEaU2A#`Fֹsnj6mQ	4f͚E3Tӵk@e'OXh89׈Db5?~|AAF"FF@#F"FF@#F"FF0o*@#8z h,B`4hF44!0h4h,B`4hXh@#@#F@#`F F"F Eh4h4!0h,B`4@#XhF@# F@#`F"F4E@#X Qoɓ'_uh9w='fff֓?CN/CA=sg/:u!vxڻwCA]s5׿ɏg}vucǎ=ԓO>i2Fm۶hΝ[O~l.rߑ#'?3PSדnwAhժhpF5kXEZ#PW=z?}G꿖-[jcǎv!6A#hhA#hF"0A#hX4FC#h4Fhhh,B4F@#iFF"0A#h4FSg44F"0F@#X,Bh4E"0F@#X,Bh4E"0F"dhF@#h`a4F@#4FY0h4A#hEF@#h,BhF@#h4E`4h4F4a#4m7kժFw^!99wD#X,B D;QEM˗/'?6{33dȐz3
+4>̜9ӏM9F                                                  p芭
+endstream
+endobj
+9 0 obj
+35380
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /FlateDecode ]
+/Width 106
+/Height 89
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+x]IoFN	AN @\3r9 	FAA&ezfӻݶlmNmDRIQHI$Uy$miY2UWUXU+ɉ$I6R4M{rhDĒ')n<::aRsn/d#-Na8ut:-!r9atd2&|`@+CMNn뚦'$3t罂 9 r4XVO| m6Hw
+l&g4˸gaYd
+E1(pqpJ')²EKgĻNkmd,a2_+gD;A:|9[40g{*A=p,>Mڹ|ft2f5(y=n~AmYcζe"<^.䏜Z\`6-ᳶt$lB	WPB.r5K,׋T JW
+U@
+2lʏ\ 'us`"]` pO"\
+Vj(wV/KNf#p'/"$$c=Yo߮7pD8vZZ}=؃d/^yubl+22a5#?5?ptg۰hQDSX:aPn
+j)!tcaR&hRŶlk,TIbY&>kla 1v0~_@hg:^~*"zb	OZ3)!/q,gX, )Pݷ~4~+:r/Lt`{_8QE:p@eC 'XK'%tHذf<!,E?f9dޕtey (1G+ul'p~t<!௃fڳ9^eE1TځKUX=@8M%-Tv)Yol6_K?HlXmLȀ_kgw6^mgڮحVG-{&>qvNWN.c<_^]W"ޡzN\w
+]l2Mu938ޢl3tZ:j~#yW&nOageYG2CLڨ:D!ksi=R-7-sk@MÝ4Lך=lyc5',tolĽT҅\m"B3Xy?G3c%Bxz Cx]-hO]y~_ѴiM.t1߅콾")Csm-u4-P]ݱ3M3@ծHC,KF1ë1/" v/XˮmvzmlfP{x,NDEDS;L*Э֑2QFM hmj#E5/dI.
+G$S`P6,Xj8<t>#]?
+yjeA
+<+I/ȳ{#NDxq[K_Ôo/gQJh$K9$Q
+v%6gI*HbD8		LqbY )γUL3|
+Fk	ج^˞\>z@]wg51-,Sto!d<[l2yqg$,3BfwkR69(<s,^U4Z)J[TCHJb'l9yv_9E	.\栯(":ڂxOQ0}HVtKElr(
+j"\UX'O,LbEX39
+RTUE17E 2]z~3X^Gh&MmTIi-2tD3Uz1di\~B)Q@GMGz=dsFmX^48̤\*"Z%iDrk_Q)EQkǒ8cDGTVZG1`EFN` e2[n_^hdY:(ICuې>sx`l^{/1蠍qqlM\׳bCrgOأZ-֫l{,^Qdٛ7clS7eP:lLHZfXhvɺg^0G
+UF1|?(Գ\r}]`e)or';ʔ+Ag[0M\[>[s瓱A?|:NfӢ9sp 'p0?t0Zbm˄a}|r<?:\퉷7Do:ރaԯpY@闳r#4KsM%7i4ڄV&7q,^߃2MK42}[0;0H')SH<k}^o.0~28G=JVTKXai*u(!vD[iY2|(
+Xƞ'0rAz6v]zH\sŗZ05U</2DG'똁YЭnt	unxLgf^GL>VwJcDɃG$V{uOb;JD57Ty2qa-CSRTygX@ N`-{uU3mvm#4,:Kd-Ӱ/r=b;;;yo厬b^O,R6^*2רbSjގb n˲܉ԢlTF8CTKϪHb$PFc@ύwu~˶@u*/+Fw6xś6E,ʲIe.X";#VǑ=+)])-Ԑb"O܈8*{nDYMQorܰw!{=WX,Y,ƭgbyŲ
+nl\{Ǌя?b"*V&I/l
+ԋ~o{Am;5MTRj0ԛW!#f8je۳+61Tv]8mdΌQF$a%{W8z=0:N:]XT^^QOj,ab5,E}W=/̎ 0l1MQÏj	M>qMմ8NkX,JffXz(vwcD<ەMfͨ'H p_{׏GFCUU0zw}0N.EYy`<#ï\ܠ`v={aXfb%$%MVk`Ax(\7}.Jhe(m1*Rwӕj-UϏ,Xo	H=;NogJ ~G.t~㏯'B{^ʻ{nD~u~!ÆpΝ۷oG O6 o#}*;|/x{r {h4xwy ?^O?4}+
+~uK/r뭷z L&o},駟}'o浂og}f/UZGu:kꫯVi	.OJPE|5d2pׅi*J(¾aR߿V
+$gVU%r@AT,
+endstream
+endobj
+12 0 obj
+3993
+endobj
+13 0 obj
+endobj
+14 0 obj
+3993
+endobj
+15 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Ma0
+/Filter [ /FlateDecode ]
+/Width 1036
+/Height 868
+/ColorSpace /DeviceGray
+/BitsPerComponent 8
+/Length 16 0 R
+>>
+stream
+x1    g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x3V
+endstream
+endobj
+16 0 obj
+894
+endobj
+17 0 obj
+<<
+/Title (lte-ffr-scheduling)
+/CreationDate (D:20140609020337)
+/ModDate (D:20140609020337)
+/Producer (ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f 
+0000000010 00000 n 
+0000000059 00000 n 
+0000000118 00000 n 
+0000000316 00000 n 
+0000000407 00000 n 
+0000000425 00000 n 
+0000000463 00000 n 
+0000000484 00000 n 
+0000036061 00000 n 
+0000036082 00000 n 
+0000036109 00000 n 
+0000040243 00000 n 
+0000040264 00000 n 
+0000040280 00000 n 
+0000040301 00000 n 
+0000041385 00000 n 
+0000041405 00000 n 
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+41591
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-ffr-scheduling.png ns-3.21/src/lte/doc/source/figures/lte-ffr-scheduling.png
--- ns-3.20/src/lte/doc/source/figures/lte-ffr-scheduling.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-ffr-scheduling.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,136 @@
+PNG
+
+   IHDR    d   3   sRGB    gAMA  a   	pHYs    +  ?IDATx^	|g
+(("bC3Q[jlEEV4&RAccL<F 7KbG"
+rIB&{&Ht33v}w\I      ~W                A`      BѠk֬і-[9y:uҐ!CZC9Dzrڗ?\~34cǎJMMuڗ]viٲe>Xx3XovG,Fv`i&[iiiyz,i?n;Y>pu-bƗ(33Y~L6Mz+yDR=TUU,A,7-+|:W Z?"v+RGu*g	д?PǏ_؀E;~mo&M>}د@4/_>~E7-+a      B                A`      BDaǧkW;5*O_Vzwz7Ϻv]4z~56[}luV?mCXX۝e>,OW,&RN/yP,F]~&^ʾp~wVh_nЬ_Q<ݠϬԎ/{Q7^\_Y왺o>ԼۯEd*tmݍ֮{Yw֢owI}Cw>Pּ0Uk ~D{UUm9ֶu~aNֿ!'hw l%JKjЏWځUte3SKoU+=3]7߭E9m婺wߚ5f)o4wyԇ=u;UԇZ~֯[W~W.GfʽZ~ϻWZ5{+pRWY.]O,v_tqj}UOL	GNE_4n
+zv ֜nRG7uwa9NrM9ͮYWeCA`aÌ֔Xwu-j9V]S;fs^']fݒuW)n,کOVnM?ZHPޣ}HP	7g3s%zM͸9ֹ57vfP99.vI`|s9/5}zi_Y˱FյzhgMuuժmNՑW@SWm.aS~Ժt*}+Rn
+A;C`:8@IZ\R_eOԢ1z1,tqPnd^{E_Ӝ#ui}>B?ei[g{c	ѱ'uj9@uU٣ukjgg*aj}\]í 	Ԝ)ќYn<%%vQ<j)]Oկcgu휨gNSmnkzv:ۙӠoЋvhɜ:WGuEO^ΏulΛgvY:yZn^zt5A㝟ܡ+GTyi` }KْYGk:?iMspdѠue~NHҳJ4<hJKć}Dw{e+sde:w۲wCu+tʎbݷ`{vf>}a~yzk3fL4J=̿Lruz$zrp:9%=4u*MI?@M/V5T0jWK.փWMk˺;tok]qzy.m+4鵪3{䮾BonU^suY6^]xyR[mh??wmjW@mR_պͪݪKs/YAjizM*yE{q ſգdRO{}82!qm͚wg4WvUשCLc~'^3W5J+-Q~>#g]#/&(u;JE?G|~]VG/;\RzQ~>ߺ!5᛹O|; ZCUZ!]urO}jr~uY;Tkm9:Wu8 C7<fx.|QIG%hݲھ%忝s.?Kn^Wd}ZrUEJ]~;MmaVF/忭s.Yn֪t~4d]蘢	̑gA@L){-(OjZ|]s:-|kuͿ;!URV_nw?<~'ҟK}W.c?3_PEf}"U]ծwOޣHPֻXDK?BToN핎Jwx);8E25iUZ<k~VnԶE]w<}*}mVr_ߗ7A=KBwD󇽾ί>]FO+uՖoꝬ>v!F+}q?tqOǩu<t }r}NAVθ^M*ŷ.BCC`G`:ߟ!n_}ޑuFg<=,n3o|[[ES'^v\xнV~'G=_g|n1T9zv?/LՏ&Ƈq$(鈳ua27ܘn _^ѷ^U#tkqF{ڰ#	]zO7kɷۺ-y8p)e.U͎1$=uohsV7kҜB MkRee!E'	㿾1m\UKhoZZu[t	5/A|וi.Ԍ7L=;	wrkҴJ7g
+z|#s~uȲZtt[m{ *F^ХӞ_U~֖/|gBÎ8CcRyjМ?M-DCQ eY߬S1M֢-2B|6Kw~Zi[ލ;aYi]TM]:`huAV?8UOxcNE@lKĹn{r5ÿy~Ǉt1zN[^c04tYhG0>@џN9D]\.u{(M)}A:xNѸS
+pO~ udm/Z Ъ:1}C$:wtݼw{S>?_wL/t`Sr\4KYˮU}9}yּ[>TOɇvv0PO\K.Ԁ{IZ39.:ELצ>{stu yJBA1A{2~#/oe궯תU_kWJԳa@xk~moJuQꪫ%hx?~lٲE_h׿yg7&MR>}v~6^;Òտ{pZW|	+^-xRGYعKؠkSVoԊߩۡկ[פjYϾةÞ{|r}+b_hE9.eDFZW,dg\YrWib+0tH#JSjo|%tA##4;4Eaz:TiGn}uDj lX`Px %F@Ժe2Kf#ÂXB`      B                OIXnK/YoF;w,ܹs`uYΒꫯֳ>.Ͻ-]TCQB?kTM6iٲeΒc۶mѣaXO=E"]pΒnУ>QF9Kc<X;2d5khɒ%߈b7bK/ڙok0:ud?nC7*_~W^yř믿^_t:Ks1裏vڗ_~x'(''Yo|bbꫯTRRM7d?!#F8seFDoDdG={/^l`v#zb]aaSzAjjW oDl0     A`  '7ꚫǥk44'UESeֽ;tʾwD^xM];ݘ귯(cZUik^In-o}y[v"[~܋5=   e NU>}xC]^׭+?+y#3^Рnr1VpDЖ
+_mohjn?KREcv]ah撝NjֿU-ڍ=z_>ҊwnҢG*x  /#0 tzg9=\e|S3Of[Q]뜿ת^4]?'Z6]ICyMK^XSMum5˕tkz){ѭ/ПzB;cEO]^éݡm;"  >  L	ѱ'uj9_5M=;YI9:(ީO8YξR&*q:HYkE Zuڠإ:vVXGv,u}WNpPw#MZ=Y:")Q]&Q!D'5sQLBtwZ^P=]|ꜨIJL&;V^xصA:.q-;-t1sbz84M~9ǨοFk_    PY>s0Q?<J=jWΓ
+V[?_{cgiݶ^K?7կ^_Z;꥝]/.,Z}AI]s\՟/WI}Z\
+PX'nJa6kKtMڵk^sqz{]JVu%>	?m~~v{~?/:IQ]K>IEki׮բר]tl.T5;?=VW۾T?PT5uќ>
+6?:nƓ>j[  m P?G\rYS'=zҚvι,yVn袓.;_ޛV/CS&/25S4wVjǪW9"[w]*W'zR:juCհOݗzm;:w)^ e^yqUסwn缓sջMQ;7}͉}գ;+"|n]{Q+gkwܩM_nVbnl\9u=4   #0 gnE*,Ͼ7՛ÿS٠3mܵ^OaN<D{"}PWm꽷CA:0[WSupCþ߮WVWo%줾C˙ٵI6;|%z)?CԻ~*78<~VԱz
+>Iw頮	{P}3#&$;:s{I-7m;zI>`uU:A{6ΨҚ?R-   ? qȥI<tճSa~}#]Zmܸў6Ho.xBפusJY{	^{~j}~׫V~u@Fk6ViWߪ&q?a/6a7[?PpC`4g=LwءP?=Fy=oUljw|K45ֽ]ڸ=i跗<[e[ko3kܦ老^u_   "0  )'zaf-r9mm	s.ӝ/5k_]%sօ)iݥVw78@gIiZk/;T1O~K[:N-7n;_ٳ֗VjPNe3gY?>jz}=:Ԯ3QŮZUj=Lߘj<?Z.?WzSա;vHvVkWBs矠ݻq7^z:"  } r\4KYˮU}Կw?><^uS&g=Io_rW_ѳOTwkqoZ>G\%N!]:+ygwV}Є9nLK;:EtqեN5T/(u2Ln>OzT:xxn9Kg>]4bWtA}u^;}4?l<TMՖ|[<:/EEf   oq&oٳgk+(cƖ}3}s_[2FXI֡ߡ+uA7gtpajT]W׻zh@ =*lSA:GKL6\]ipn~Is~Q5zhP!
+;QXXد@<HMMUqq
+ m0 :סCvdK4xhjhX`I覾G6X:4XÆE~Gаҡ!J=N:T%qH:2|X`i  `B`      B      ̷~   !0 &n9s     
+&M   h *    6 h5   @p&oٳgk+K/T~e]ᩧ= ~`F66@`xӯ_?mܸQ]SNjjj4l0  ~#bA 0@zx㍺kB|egg;s@l(,,ԂW  ~#bc hկ.		    h5	   *B    6/z tY   !0 &K.q    7 LΝ    7           A`      B                A`      B                A`      B                A`      B             -p%Й  ]      09̞=[/_x0p@y<:}af=]pȺLW\to׊7М7c5*]rRvVhδ~쭺${[7ݩW^U#[5[4nX>)Me\JS?Eu&>{Wy&E]iNg>@G4rCL{PnS:v~}SuIJ0~wkFّ)K{Eج57nR{uyz\iTjoڿӠh]~8#j<u켟.FϿw~<W<UVGL?=Tݼ%IMMUqq
+ mK kkcU5dIZ'&W/jb՟i%iJҏOӁte03sv+|޽ҠVEޫ_lWyzvz6軚zs|>=ԇvu_gTSGO}h-vj缿(3gjUZ缗ԘuV=g*w֜vz:uŰS5֎鿏7.UA/DθZO!ǞSe:j-WP^NZCՉ?>D;_u^Ykg*xF;4]ڶ}=q/4ԩO#ߴs`RϾS߷'߷M%dw  h]f2.rg}0֬Ya̙IFs3suƦ㍾	Ci;jcYIF'womiFBëvs:kgv1'~Xhn(j$|<r$gb$z,ݨv}q.{Gue\NݰMcAcܬ9?ȧ[RdpYNbƢm:csc\iڠv|t0ozޜ1 1Ɨ?|U0y\etMi-Fz.h~G4N;G]O6|__zqd/[P77yƒ%K9 oDl Ĥ%vM;ߕ0s.(U/ӓ3)iT]qLwF\?O/M?[n?KΕj}N=t@K;wv˯\/vy`}msw빝giumzs4n %jsWj>v|gOW׌pnuAgL=c:{Y    &MUS~@??B]s[^pi'huJyV|pl哰F2]5^ט1cWe}w-/ԔI4oaSv
+Gu+e-h]ZO=}8O{nh.2=>mިӑg>!?HkQ#։ձty'oC`KI7hSUj]O{&ܠ]+C4(_ywg)a*YC74$  A`  1ۏS骥ZU:z5/G:RΟfc:[QǠS>ׯG':+}%KoZZN}"p%vQݹk{>fmۧwܮ)ǷfiVٻB~:ME;>le߾}5ि-n5A:تs\'Xֵ{ɒZ;΁PqqeCښ5KeQϿfO(zĘCA  "0 XT]V֦NG	S4مZqUӕ֨һ^+7(xkuT;4NO}Gܤ'_zI/M?fCV/vPZ55WN.]>kԺnn7hйdh'kkw<FS1Kg%iM6:ߐdDkj̔hٚyyJZV}$jMOK/=rnJ<U/ZVhu͑խ[5D>.[bfZK>{  !0 T0GW$q5?Up7*=eA>]3u[%m[[8_d[ ԱY/E_a:0_7y?t9sG{9=iyTU_u襴31˝?^.Gc,F]p)ܩ6g	zom}nVo@s.?@G  ?< A	Gꊬpť^;֪/Ӿ:CEt-7nٳV+Zfӻ(;֩*K%˴r/0TKLTO:O<TsN#z0*pǇ^s]kÓuJ&_ms7ov7GtYWhkK^5,[ޤ;^,yrƥG;KWzMK7ר-QݔsWK6C;G{ZRUzxZ鞠;zш&?뼿ߢoШlSMmf{6]f~+ >yZZUD᱊͋{fg*}S4g|LZc[3=[c%G63~b}N]cHĠuS4&Sck#nc8~%x4U4e!Q-mz/a?ӯ7;W/6ǯO&S3YtwG|$]/Cexn|:c;3ߧlw2=8cqQ%/")F6?ъfϞŋۯ@<8p<}O΍Zbw8P%W]}*zzH֠ߎP֭B&֡Qjݺ>P\ݩZSrHe=S2eN>%55U+ 7"e
+	>te{PQQeCtzֱ:(^Q1 )F66@`xC`ֲZd?TY Qx]:Eݝ%-Ld J|^xN3@c @Smz gtϸ_kk|0S>ۓ=C/	oTY5    ZP\r3Ďj׷cD     _j	    ͙3  Ѐ      >   @h      /4 O.?W͞=[/_xеkW*r '&&:K`?JƙkԷo_[<c@XoCqq11 0@o,bדO>W_}վ
+ĒUViСΜ矯r ""0mm 
+
+<Baa,X`dʕ<x3͛Ç Alc   z       >        @#,   0   \ ?            0      !\dZx
+ăد@+,,ԂW.Tyy3pN{PDx3F}qb  Ė$uY4gyFW^yL,Al#0h7'/㢾~@`       0      !     @            0      !     @            0      !     @            0      !     @         T)˙rJh\2e%x{7P}Fo .   {Iɕܕ2Ü*5lz4YˬyTm.i7&%(;,TPlnF[m+Rn8    Zrk(_j+әJUdkt$T61<Q%OE  k   ڻ!JG3kGV5HTFMWA     {ʷ(Ȳh[ ZU_QhoQc^0]Mm      dTMea*d<Jc=*xr0B @"0   !	UQ4oG0g Wr=h~=9    bCYQvIS
+<E
+dsڃa  8  v*/C{zЄbvH%8OI`pD ]   uBSVܕeU^`\ާ%xrgD!s438" "0   2A[c`awDh1XM ~                A`      B         vKiKHV*޲hk   ^b7]S򪜕<o_nЇ֯5(23QATO;xC`    R嘍ìr*Com$\BvIcSIvQUܔ Q사2 &   djPMT̖<QeF2}[&q>VhQ(hMΖ<΂p25:Ll|o   6U){rPC1,Cwuߕg,s?* >
+]KsBn[K={ݻ+yJi~$Qt3Z筫R:^방:Y[     mjʕa)|DVc.Ei]+ʲޫ%f1_Wtw7'Kϴ/{7f6=Ilۼ/ȚaBꣅ(M5) Z!aÓ_#<%Wt&D X:(Q[,9D4Y>%     hKf͟]s5ȓ.wC+>Y-2aRr12'ɝQo1ǎ{7m>L3ZR$ da`6Ӭmx߁K|,xouB#!PYH+{   @[Jۙwn1אteM^S_c4%׿Qcͳ)o7 ɓ>Vv^`ir(!Z>,{x1; ^mx{?3   -%FWhҧtBfGb5SrVҸmp4yX~*/4WŶMڝ|S>3[ݖsr5%W[AF`    FfJSWFG͵DERWQ=*1CElߊ(̶-~ApG3
+#pPL~oH @3HӐV   ُΫ[~;Gη?7˔;OAh#`qonzd)('{so)m#j{^2VEm)2#|Oprv{K`MQ?L|@?B13.>;aSA={/^l`x<+
+`_hS~ڟƧ(HRSSU\\l"xB`[t]ws=9r$)A 0@!0@<!0-ӦM;Ｃ:8Kj:餓%@{B`!0h7'74 4߈Ơ   h C`     hʕ+5~x{O    @̙	&    @T     j     "Ѐ6x"UD<᱊7]v"\.g	xd5kjjF}[occA 0@!0@<!0@0`|M~8j*:ԙ:U^^bE`oOo`8x`g̛7OÇ'0aa     /,HLLt V     BX_     ",?    &׏      d=b               "JJJ۝9 @<!0      !   ջe  ?           A`      B    "      U)/åRgUKs\r)CyU֖~    "кδϵHt+F&&;/{Qː+#<JAJ+TZG:b   Jc6RTb6w*179(MC[vQVon)7%%.SYP@#   djg:K2dI21tJhY$ۣKQЬ䉚-y**djtP/h;?ʌ|s=΀@`   5@ʞ`{5<|y{A#uS>R뾳wy\42')VI`>ah_%u߄ԙ4s2(o 5   @[ZrkXk=V@y+HQnZcJwBV7%WrWFճ%`d7voU!JGMv
+VHd7y|EZPYΘܻh'   ]%
+fznkWW']գ~}WìކoZɾvD
+M6!EJҬm{pSsWwΜhu    ЖZ*G)~]W
+|b`\^mo=Tʝ^ף"26f eg*	*βvάc(-7QE   @W``ц}nkyl=h`5`KgXը=Аsr5%՘<Jcͺ{c~5FI^s5    m̾]2h`U^Ft	_r#ìu2{q
+J;OIh.xqxps    Vb?¯R,[
+\J@֣Bo|RDV(RI߱[4\k&0q:LZ?^Rr=Q?=Eu{0 .'V5{l-^~xW j+RSSU\\l@0~#b=   OI E`      B              ")	      @   DS  ~    ?\9\4G.W:|]֔*g!{    v_U]i041YޮU)/%M1Y/7    v_e<JāBS=Q   OI@T҇)36$kb!#?әoN1W/7   @s[Sc}U^\yf	Re2osSFú-wa_*<J7\n-'.`#{k{ş=z?/yK]nBYu-8W Z   $qֽީ$@YQ7禕n4GUH}bggKkٲ0t+m4WlɪȵZeeJcUi7}^fUh~7Brg| g*(n{=<~3KxY5y%y]YDGo}VQ G`    )oο=2,]*_׀mBzUⷃe@@c=*rJ=ZiWEmn_5_Et'5+ydeʷ[-:Kͽ!J3أ㷢"sYמ
+QO%   tw)%h56lgZ*/JLvv:\f6yx..Wx;$3o(-7y]x F`    %+,HUZ[5Uӝþ-QP
+yڳVj~<>GNar-s~c)7?4h=   ")	mT3Z s̃Ҝ,޾-@9*H⽗jkF{;Ź}!wF>]"aV4۬dIxx*Gsq7Ƣhomv   Ж'j;]Y5ݒq}SV[Y%f vk<J|ǪtK)lη?D4<~}ky?!^4_:iIqVٳgk+(cP,_xb_֣;~#bA 0@!0@<!0-.Tyy3pNY1cƨO>AU^.\ 0mm   XuY4gyFW^yL,Al#0h7'/㢾~@`      0      !     @         T)/åRg}9.\֔*gaz,   >(uV*/i7NApe"	4 ]JCQG`    (nUVݜ*RnJHhP(QvAVPR\*/goRr̵TVȣ4iG`@`   ڠti\&nAhpdM,3LْYNF)R*M4ȏ2#ܢ	Ô!>;   ȶhgxݵ{Sw=0hW.:*0,	w=eF e5KUlO
+a=J3?V=[Cԣ	
+מ_   @[.iNmN%
+ʝ)ʹ*+"|Qnts
+wI;w q%>/m"#		F5ٓ$_*W@fyn`_ܴz?_gϪd{}H=kr_]@"0   ؋FMgݵ(lo_J&F^VC&#{?4͹Ӑ:`i6N#U|sjId2KB,"hz}UW']x_|w/  ^9ɭG%]4["w6
+ɺrgͻm]vo>+SFrS"wAnlUh*N/	_#>eGCX*βf71Qn7e5_@   6
+a®%
+hG>m`7fsfɪȵnn]ϯT9NW}Vzt^{N5J]`#/w{A}e>Ȓ5qjF(Qn~74/[4/c%xЃE`   ^+u#!b17+Mݭ+ycG9+e;bj_A<4@SAVcj~h1[#rP=31hRZrA83k!iuV{#E	  ޶W"F϶ZpP^o#*;"3n%U|VގGԀhGb?s`NYAPhօ˥zZg}O8w(zYh8b{8ܗ5>Yo;5BEk񪯯wYf_~3ľk֬qo9wmU-k^6*Jwz|J)p[Vt!*wS6EMnk
+oE|sۗfӜoESL1nVgnoSO^doܸqF]]0<Hcɒ%b=   "kt
+gXtE1\R".-UZlw!~lrJuΜ90a=  @[
+mMvwp>s]^$ʆusݘ3ϻzTiS]Tf*֏9Np { ~nh%gŋW 8P~b]aa,X`}PJnJ{$KSڍ$'V;s^ƍSYYy:KK F<!0-~v`P46`!^.g	fcMM3רo߾z뭷bA 0@܈'߯Jy)8X|M7,êU4tPgWyy	bA 0@܈'/$ ^ߒ`	b    %U        @    I#,C   Q+ԙk*޲tڕ    =o_nWe2oȫrz+CH     C[!F[M		%.
+- 
+  @K2̷59[TT:f  "!0   u{|{3~JsD,WJa3{Qldއo}PUH٣N\g    Q)M+q*.Pʹ/ei~C,oVݓfJwfUhLݾN#?Gڶym_5]*wD
+f,\\yݚ+bnU.sT6Q!U    Dtr=*붟_lN&ɝQ^5_Ete6G-WGde4oIٸ{ۀ])ҥFvSonfE}vIca?_>Bp%.1Y8Eɯ  M"0   h56]v#j~<cem8]{2z
+y.zfQCF}4rD#!s[E8l	 o   $yXWɫ4ȣ;SH{JJt;+"?m;W-Wgx{Rɚ8m\C9^IrS    hd߷_{=*1CEl5^<Jc=my	|?CٶEo_{85Z>$Q錠qSb ;   QvgFUVeРyyGG`P)wyީO0sfܷts- aE}%cUf++#
+az,Cs
+`7$ 2XhUgŋW 8P~b]aa,X`-5uTۯ Tۯ=0      !     @            0      !     @x"%C<᱊%))Iwu_=ܣ#GXEccA 0@!0@<!0-ӦM;Ｃ:8Kj:餓%@|#0mm           0      !     @            0      !     @            0      !     @            0      !     @            0      !\dZx
+ăد@+,,ԂW.Tyy3pNY1cƨO>RSSU\\l"ؒ:03+Ԕ)S%@|#0mm   z\ۯ bc                A`      B                A`      B                A`      B                A`      B        *O.\ΔSj/T^F㲐)#,Ѩ4'L) h   bJrRr%w0Jc.M2k;dEK捲f	g{%uTrS|}x @ 0   %UUtm
+54'KnUn<
+D<qQE  Ю   Ē!J33DTRd_o@%OӃ    @LT W %ؽ2LΟؽvg     bMf3@<)r1ڈLXSVAJo     b5QV
+4=M,1~	     ĲQ}2eSPP?B5A08 F`   C2azдIn[=?4Ǻ ]D   b?P
+,h[Uf(ol{|r*    Ę|ߘoɏ4@wОM                 A`      B             -p%Й  ]      09̞=[/_x0p@y<G7hzV=u,]vE:N	KxSO)қ|1Yt%']l*L+V^xtuMctxzdڃpkro*t[bm\M=Ii矯SU½hͻ]/4Ax:Z~
+>IqW]`ʗhSf}Jy48y7;)sqzU2rxa2?g.:gO>:=Fe:5zP'gTΣ=2O|6I=YǍӨQg6~fkoAѝkmT/ԩSU__oRSSU\\l"k _5R!#4bHV=1A';}Q딪gs/QZJV~|\+5윙Z*V<{TlC[>*Խk*;=Z_>pj꥝O҇ke>ҫ^Z-Y5%}o'Oܧ	:T6W(oT;:>@/RLoj?蘔_趷vhONҏޮL.Ϫž_u/e+ޡy>y
+^Rٝ_?\7{Z[km'_o~igVcuβWG|ehN6QݓF{9 } k֬Y_oƚ5k9_?s\㹯%Qi1o1tZӜ^gԹq3zض{*cx$)2v{fBkFVDcӁmzK(Kz#WLkE/hU[HԪy'u6:pJ1nMK0|X0v|8{'7XFݷd$7è*"g2;+mmuNdrU͜O2]7]d671 1Ɨ}Zj7!&eUNb(ϵ5>ǽ/Ԕ)S[oՙpGK,qka  q(!U5\iN8`\<Hֲ'gjQMuwX^^({}7}u-הzga>˞EI3
+X)~*~z'Ԩ_ͮ?*)a';;ֹ׮l+uŻ3u_`$:љр'ڊ  {  :6MJSPknSr?U'o߮J*O|Wڨ_*.Wǌјi|hYPrNѤI4*9JyNPr\kòңUdZ)?m~~i[)!,.YRףoМ/c+{8¨]roXѾMߨPݑg>gwwh5  C`  ۏt]*-]:|5O9:F}S׬rʷ]uЭ:G_Nԧ_?lur-YoZuۛޕ.vݟZc&cW:tS&+V۷Ԩc$5?':ڹoWin􆮿Z4ղi">^]Fڱwխhr l}6}-չJ  {  iUZ<k~VnԶE]w<묃VJm\/~Վt聆~M;o$}KF^z%y={9%ª٠ʯ^,S烇wzUVj7:^*mgn*U,q$ܠAo\
+9ǺkD]zDP9HOƗ	t1SYgk)iZmރ$5wg    7_S	/髆	J:l]3~/qWw?ozVӳ˂n:ƷYԖ}P7P֙;KZ5a><Yy.b>B:3ճ<_}YSK
+g.7nҜӛ_VR4_B/u:RsW/_σ=sm   =.kCoٳgk+xy{SuEhد։SuY޻N_,zLh*fT=+ti#tƱѿiuezOӵ[ڡFԹցcu:eumm9#.}0q7K?nuN}V3n[PF~GzAz{7s`T^{Nӈ7joOVS}Fp:׬#д9yxsޚ']6DzWMJSMOk䀫thgzld![N<^˥C*ӲUE:,kGWSq5KX\y'&8]}S5vUywު_C85}-ZwFw|5~BHJJ]wv=hȑ:uo*.._{ A;Tw0)7t讴?g]c6f\i-w{->0?Z%~7:T|B7=G~OSu%7ѰwfQoh{Nz&3+gsZX)-zw~=k4yZPC2t_ܺ;XN[uq5IE+">^7~~ה(SZ~{Ӵi;CVvP[[ɓ'뤓Nr  v~6^;Òտ{FSZk1@ɃzMkUzWH*n6\[][V_|އ>;}4 4߈F`oWo%ohٖTH>DgvE^e[?!cw e
+_	>te{h h `Vk2RXWg΂ۦkN qxcS]Wg_>ubbO ~#b CݿFVnlOKweܿ\5amO5LX`qׄyT  { W_}?;
+u%8s    @S˖-s    ho *_XPQQ,    h5   @ 0 *k    X6coݻY_B?9 6kŊկ~,bC=db{QG9K Umm CсO>Y5zh>C-_\%@lsz4|pg	 4"0mm f*))Ѹq8K|egg;s@l`4 4߈ ZEϞ=ꫯjĈ    VӫW/B    F hU   @l 0 |d   6a't3   !0      !     @            0      !     @  ZK.Qaa3       @arF+={/^l`x<+u|YwW[#t::%L۵'4M}vu:eJGv3m{<:V<ywՁ1G45&	ea,M*ruPb:$4):[4}t=BzYjWU/	C:;evuǴ|39QR|߮u켟.U߭eGGkP'oQլ_h+h:%<T'qR#:j/=2}bГGkܸQJu
+h>LsmZqڟu5[4nX{~2<=
+GLX?=ž!55U+ 7"5/ @R5]sܱ*u2B#$itѿSB՟i%iJҏOӁte03sv+|޽ҠVEޫ_lΚxB]՘M|>=ԇZk.[Z}ѫzij眚Tuor},2B+<5a[ѫ۩E9Ss:}}yϨrGjkiW{_O\;unHS_/'VOiU!:됝eۯұW/WurfA58j={~|NW:ث)|4wMn甧xgFڹ!]04Ugj	ijS$,yrF  a5k,/w7` c͚5~h_?s\㹯%Qi1o1tZӨ6dt|q:%,[woM34^06h8__;?hBsXq5qtPFgb$z,Ԯ/1:et|Yf88i#0ƪ?1:</6˸o`˛Ƹ:>Xo1RӸpuƧӇh9[xnk/:nPkl{MokdK#`$al=צEHwH4|x#=~a<vGK,q   c*aj}\|;濩9Rb2=9sLtwJXkBt޻СYTZ^Y:8@IZ)_u۩3_w{:ϙt syz;5{oqtsn+|\w3 `h\}a_]u5Et{4㫺3
+  a @um:r~Oׅܦ+~NC	+YRiõOitpO{;^cƌi^uߵ\S&i$z)Nzuԭo4h7v=O4WMoϹAXW׮m;Rg'?gv
+ꍊ:yZPv;oc`M\ÊrjӟRUu6}>,%X=G(kTREq  hc kHו骓{Wc7|*!T]Aݺw?zQ~>?Y`._%KUZ!<Wb%jv.u2TCw>EfRٻ3Bk~Tg߭d>rlk_;@'ߡ-;wSCA۟A߾}5िj[zDk\ii:mWͶj)1I]|o_BvNN  / )uھaVo#Ϛ)¥9|Q]9Ok:!뵾rChzZ\qwh:'MO^LG7=}͆J}^: "qC'Y[Ԑ4k.+\EKt
+|9ru@~Ct^;k)Ǭٚ=vNk7UOC25j(9xcfϞKҺT o鹆>Gܤ'Ŝ,WGz6P]К-a"ZeL   @,Z_MxI_5tٺf0_Tic:odOU{V˂}gƷ8Kҷzp6ҙ7Nsā_x vK%<E5t엥?=UCݨn?},myeU*_MA9瞫sG\{9ݻyUZ-t9fsG{5<ќksvwpNfk_zmjm`.;@?h  ĒyE^BN{NUZ[VKrN6=[oi5۪lp=Ϻg=C[ӲF_^^-ÓU;ӈfMW)ZNFڢ/mF~^pvw0[[䣵=AwwOu7r=rκb^[Y55f[z:Ꝥov7GtYWhkK^5,[ޤ;^KP͞k"رeZZ>O80JV*<{=mun;'  rVcox>n_itnOݍ01vƆf{d72x}<VK>ChzbbкƁgYMx/o?'^5lSzbqioeZU4keQmzmی#cWɝ_2n;WN]_o)|G{βۇX.Ŝ㻆y:w7v5tqqqra4 M7"1CV4{l-^~xWCwjZ<,Y^Wi׻c@~L6[JOYuZŷJ}-rn6=L}*߹9z$lײݚ)2T`ߐb  TT2m	Pur=1-Ve[5,{P;LBF}P򆖅 ӳUVO1 )F66@`xC`=Zd?TY Qx]:Eݝ%-MeD#Q+^XN#ktOF? zRVO1 )F6= gܯ55NFQX`鮌&ͩ,3tucN5    hB]r%;ǉ     /Ԅ	     `3g      |     `᱊m*"_=,bWIIӧ;KphΜ׸qTVVG*66@`xӽ{w~ԩ]6mҖ-[<ڏO?؏ЬqWo a66@`x3p@
+:뱊,_~ܹZJCu?| Alc  tԹsg`޼y      /,HLLt       |   `#,  #0   h\ ?   k׮             A`      B7Zٳxb_XWXXدh.\rgL:U9993f-55U+bA 0@!0@<!0-III:묳h#j<󌮼JM2Y7F`oOb_h)E}}
+ 1     A`      B                A`      B                A`      B                A`      B             @,S%3Ѹ,d3K).n*/#d<-< ] 0   hJ++e9Ujsi&Yީ$,]0oM4K4*-.PvY6t*}V'4hq    @{W\JQfՀW3<M/Ir8lb'y&gKJg     wC&rg4ʏj~<٣df @#0   h2oPe8@4ȣ>	ɣ*`܍#A  b  @,̷t˓" JUUVC?yƦ{T4?(1*7aJ&'/ E`   C'@ӣi`ߎ`z$O4zXis     wJ5#ףƧؓ:x+YZs&  q   \U^\9~-?5	*>nKq    96y<r+410#OKΈ8Bh+1hfpD @E`   2o)eF)ȷﲉ
+ح=b豚'  0      !     @            0      !     @         +qɕS5Jy.5Ue    vOʫrV}A)p^^!WFg\TO;x@`    U1YnUT9VE)9pUܔ Q사2    djPMT̖<QeF2}[&qm&gKJgA8T&6   ^S){rPC1,Cwuߕg,s?* >
+]KsBn[K={ݻoTg>;[W9ufՁaSufʷ3@!0    *W8Y妕4tWt+n{dŲa{Q1nN%re"oh ͖m{2ٶym_5]*뽽# M($pxrkʓ$_dk]%ʖYz.(R_DS   lkNp|ynheZ'+;o%Kʗ{9It|;t9vuݻm%e\fߟ .Zmh%a@&퐼&`fm4ģD]e{*?%   `oItx;{Fel5$]YfS(T)ï1TM֨ͷUI+;/4mtP!; ^4[C     {K(mtL+}NWq)jv$Vc1%Wi%7HGU}J<Gmvg{~Sv>BzDTiyݽ @&u-"ߢ`o@!0    FfJSWFG͵DERWQ=*1CElߊ(̶-~ApևYϗWwrnhS
+_:(. MCZz+jB={/^l`x<+
+`_RR.~{G#GԩS%/]<\l\AW[^=]nwr>z2ȅ}4,5n<{T<VEY{{4Of#:<OGSY46L7{{bTXY2@:*}֠%Ru{S3FjjW6@`xC`xB`[MwyG:tp MɓuI'9K60bA 0@!0@<!0@1 *41   [7       N&E߻`ʕ?~%    f͙3G&L 4#        @    E|݋m<VXExcovj_Et\ j68sz*(6@`xC`xB`x3` qnժU:t3u竼\1   b=VqΜ7,7oN`     5_X,A"0     D      EX     MׯaA"0     4z*aA!0      !     @   D۷;s xB`      B    "w       @   UrJV.q岦U9cZ[~@B`    ogZކryUizAܕL~Bޗ=(Ueȕgyv٠}fDsl#L1    Pm5S$ϩGi&(޲t*}tK)_(QvAp:u__X     m4'KV6?Y╙o,%L&T08Fzo%^]f%OlSQ,'S4}D1Wf[u   DSTAְWww7:>R<e#l;g'UJS s["o 
+f]5[RMhAJs>'s6`_D`    *WEq kc_5vt+!޺!}o5|Sr%weT=^FIvc^EO4ydh_aM{:WuQ.ULv    d4*[/]5_EtZV]j{i%mM*4l|dc*Iqz_/aN]ߝ:sB֭h[   AP]e(7ůRoQLXkë-WJzTDfaL3L;B;Yՙu8S<    h3ށ
+=0pr-oa]b5l5q5BfGilYwoݯ`(I۫u6   DĠ{ξ]2h`U^Ft	_r#ìu2{q
+J;OIh.xqxps    hK#*.Q$h=/t'%XKmκ,ȍ{>~u;A%h=CA?ȠX.%ZTgOH@S@;22hUgŋW 8P~b]aa,X`x MIMMUqqC          _         ")	      @            0   @D<%)uBP9rr벦U9A &    =Uy^.w!(dgyV6ad     "&UVȣ4Ah/>1    KؐeLg9\     mnnMM	*Uyre%|Jci>`fΥ*O2Y};@**pcXgwp{x<=w:;WG|.އwudy׵\ 0    ڌոKQd^vT]xsJwɣ*SfiʳJglYfVf}U˕6_+OodUZ22%ݪW؛>_/r*4^[FV3>3Mw7ͽG%漏l.,"֣Gu>{C -C`   xJ6s)ҥ~&P'[%~;/Q
+TM46ݣ"'1Z^ѣVPp5\UUI{R㾒'NV/pY|U͝#$nJ4{{=:~+.i,2GuDY@[#0    R@7Rr=Ί֐Qcv̬4lai7evaG)reMPCB0SFrSܕE   OICVXorkt;+[}[ݣRg].(.U"y||)̵Z
+/ISnh{"   ^S-a9?AiN
+juoߖPbo5ˋ5ܾ;#BX0+mV<JyAAhcc     h+5ם,_nɸ پ)ܭʆA,
+
+
+Yp;5BN	cU%_W
+M6["m}~>5<`{l/If4$`ϹZٳxb_XWXXد@<7}h=͠RSSU\\l"    Ļ*w%,@\"0    ' q      `67ߊxe*//wԩS~9K0fǙc66@`xC`xB`[:,È3<+RSLq  ZqQ__o 0ua      B    ?*eS̶}4%˚2W,lu_   6J]{UgǬpSFP=\HklfB<M/HҐa{m    Av{o7Zݪ49Uܔ Q사2qU_Xk#GiAR>    $kbHtV>fDMΖ<΂p25:LiN
+PlyF~MHm    hK9]3g}U2WnV|{gdy\!ўo#Gץ*'ͰzÞ\XPo~`ՃKZ?D=zxk[nr_{~P   @[Brzg
+rnʥ,7{2]Ü}y{]m]=}d #s$$pdgO[|E\nYow~srӜ:oϪd{}H=kr_]@"0   a^૟͈(loRroXVb4xe46'NV
+TG~ i sx!=00i6wU|sjId2KB,"hz}UW']x_|w/  @H^n ]iN2o(-7iv/5-?a@AW˜6߽ӈOfQ9;ڛݨǈۗZ̚Oe   65J]`#/w{A}e>Ȓ5q[\hI<Jcӥn=Ծ|Bzy Q"0   $GJX
+Uc˗^;¹G<%{&Jgc4ioY~=X|O`V_gʱG]_vb~Z M#0   hZ2RzHȣl<>5˝0c$43Am8G(/	
+6|7ɪp{H|??-Ђsľ`z?΁9e=B~|Y
+,i}O8w(zYh8bnp4/+3뭼zBhuf2.rg}0֬Y7~8shWIytCnҙm+p-Xik;>cnxNK9h/]ﷹu 9p/ݷzhSL1nVgno
+S>#4,Y!   iH#{GݽQCg*lѷg(g m   ;ޮaGJK}Mjb=
+J c{ {V\ǫYx@`   7VRnv#nVk&FY}/(ٍ{/ vҜ9s4aB8B`   |]7[Uޥu͌n,Xm͍r?O#p*-G2 5   Y{?%7M%FA#ȇّ҃FWIFYTHdMM2U9(~iw˰Yٳgk+(cP,_վTe8Aߣ$KԩSF
+k;s^ƍSYYy:KK F<!0-~/v`P469aC6.g	fcMM3רo߾z뭷bA 0@܈'߯Jy)8X|M7,êU4tPgWyy	bA 0@܈'/$ ^ߒ`	b    %U        @    I#,C   4%WN3).5Ueڵ+aA"0   ߗUyrs2򪜵^R @   }Iw0d=ܨtK)!A@DYe  M"0   #Yv~3$OlSQ,'S- F`   bN.9ux3K)+y[r\+S;E:}zރO4CUy^ eB:;np    Zj(7n$@YNC7Ӿ]OZMwORfm+
+hzU2MLv7bw;hiE}At1)>.xrRrIwkMFV9SDT5 9  (oN*7?pAP \\ZFS+96MTfjf6TjfVʔYcTj.
+n r9s{νa=ÓkIn=g.`R;1IWbߺX:_ogsxwQh;Kf:Rx@Fwo.ldӽ*KN+*X&%ptE1Zz\DD*F P&  J:+ibw#zyJO[593{$ci_{+\orq"آγ*#8u>\LoktM @D`   P"zSg[x^?S{]m+fnl,tW:oݬ˲K}DѹqsePWh`oI%4    D]߷tH/*~{$͛<YկsyK5ڿI=#eVowgyQSfyIK'Ǡ: j  3R؝\niKA\&͚5ŭ?l ύlw-R{Jzg-ymmKq[N5&C%ԇ{YK(>΁s*~BDYL@pB1c֮]5AXXs+11=Ggjܸq9 )**J			9<=     	     0!0      &                 Xx"jK*z \Pabccy"`ొ
+!0@MB`Y&LիWb%@Vyu(j6F`PP&!0@MCc @yFx60      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &     dF%1c֮]5AXXs+11=Gb
+_XBYƍ!C(44(wީFK@
+!0@MB`YԣGèرcf#0lU 5jgn <c           `B`      L     	     0!0      &                      `B`      L     	     0!0      &                    Ouxy˘,ujjeT'-Rz.Z|l    <Ri;\"᜶(zgi]Z.vn:xɉeG[w6{:%N޶(|(gnCh     lݬ~r3X:CziV8mYt&P\ģhaQ     <IDbKwJ%~AI=o,%bz @@`   Qzj+@/] wrVgeYܽ4XU; F`   iz4謤màk5k8*~ F`   \8ĩfibEzog(ǖJrnY~' G!0   dկJ)05Ah5    lE^ş}t'jBzSgmt떃Ί[  C`   A܏?qzWܖzGұDM`}8s    9hLTv#߽S8S3OߘV{                  `B`      L     	     0!0      &                      `B`      L     	     0!0      &     dF%1c֮]5AXXs+11=G_~*^Sllƍg 5[TTsx*@` 5	g0aV^-b ZzgԩS'<A 0@MC` 5                  `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &       30p@K         x9ר$3fڵks&SRR{v͛ٮ#
+V+zU}-\>=Oۭ߮ZtYNj,WfO܃('MK_i;ޙ~2{>{Zmk//Y|(YqiUB	whP]\(tNԗV1q:I"gls&5uڝ]K.NrBΎݙ8n+&K7gVoC׎tYIZ6TOJhҴU:d3Vi?[kW'TGm-j+}I۝PS蘒
+ԧMyUW#Oަ֊uݹ8DEE)!!=ҸFx6n@d?LwR+tEdR>EXm@ŴWYҫS?M>Ӕ渶9US>(	e)o}ż|TU]^,۷W~owʓsMǍ#WOyK_ƞu7*umƴUWR]S_iT>VX)NV@IQ;&?)"fn+&}2%NO=X(vc5뛽*p.\V*Uwiwv?zvkkgc_.')yrW[_'pnq:6ϻzmrlEG  pp0@>}cС7oصk c~wG@/،v0qcoǅ;ry::9:_GV&nYksx;bNq89	p\#X_Hv'
+כ%8zu~Zr~v?CF5ͱ6w[S;Q7Qz7֔i}BƶvGȀG1ïs1ط)G7r\ԿOVvd+j9|;LvlpUr<rqMo;;fӱC+ǜGx~TS#\[;߾Gz^Kp-L~5sX"8~:nR5}
+ke|8kΑl,@I\#<= -m4{׋-<mpVܩq.SK#тyxCfiNR2*(
+Н鲒-м7w|=@VUwݫ52ojz緜BKp-{L쨄_mڽU}]/MEM%ai}Լsz}  b 
+qŦhlz
+xf- Upڒ"nME*-*);u物RmQFO_&ܦ?%;[nJQݘ޺s+x;F5Vؾح1JT'4fPẇ}ʳz٢i\VF6/ [uu#ylkΧ  T Du.cKS1zk~=UCnLޡ]|;TgN*V*ԨJNN.6m}O+Gݟrfr+Ū|x+CYFP
+P1D1=m/ThӏjUѴFfn=ɮLgUQvm&qc5nIlp8S:2T   Pؔ?E;R4vgZ1]Ƕ~؃iOM"ȞEM?"[Xc'>z/6-ZTlRs_b40߯-RHFyYj<>kV W5|-2k4m1WҊSm&mBT7EoL
+kl:h'bc:7sRt-+)#ShdC9iWQ&;CgдI}/U!I;ֲ   P3e(]<hhX{+zh9lUzA.-MnENݟAFQU:&^7WSը%:*<D*6x>lS(ru]'Cf.Ԝ߲Er?]?_?_U*0p
+0FloG<ON<LQt[4%^3W,u,!nvR鱞   Px7P^^0LNBȓݞԕkq/t{VOuܦw֌yVj59*~zq(gR$8M;nlZXaQT/+V'vtYۏ&o\DןN-k?[/nz6VVN{@'OzgԻq^)MzߥIKc9)Z@zz:>nkR֟ ux]=ziW??{靾=4l2m</{am]kQsMN}=  85-MեeE'8-x6/5!fF^L^^oUnKhd3aGVttt)*V/-;oNî*,oI'"nUdNTL{E=Wߡ9{WC)s}q\x^q>~'hkK^Mj?vl©VID(%K@ku=MݧТc2tГUxV,Mu;hL<O,~.zf&[^r#S9  zdƌZv{aaaJJJrQssҲ-*BMٖ5WDRcl:oRT'Z5ܖeyDRlǴne7QuuR爷lFu g&**J			9 5³T4CڔY3#uC+[vD7e@EKW+d&]
+AlX!T5 5³T4C[G.?X>a&(8cǴ-*so~;8[.ʮN_FMFq84 kg_"*CJEolw*kv.aKYe|{1aK`79tOFX  @G` JYF~xx8X  \ *+,޽9b    n TѣF	    @!,    <J믿    *V&44T9992J
+EDDI&߯Ç(i N*z6*@`yܹ?nVc	_}V^g}(<i 8%F`PPӄ׸q4gT9shXD	h ( *boF	    @!4    <JEh    x (4    *
+Í%         0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &                 /J?T3|WڹsxlCĉՠAwllTx%&&@M J٪<0۷~'u(|۶mѣGu% 󕖖ƍ%@ 0@MCc @yFx?$08p{ UYfZf{T%44 kgc     `B`      L     	     0!0      &                      `B`      L     	     0!0      &                 5:1Ң䣲Ƕ_zaZy.7*N?3Vg?ofOo<qiGiGKokj|Xo-RѢZjׂqʪΊ)m+Jί    ;1{:}0eX[iiiڛY=[_>mh`ڬWhg\3_ZL9l
+gS}/iUJZvNwV+9.U2JN+{2:ϽJݼZEoj=_igXupջMղ   x:%D?7Wg_,_wߥ_FMNVZ@k)/؋?=SCDO]?S;?cS'Z2İ[s,TQ-Oֲbq뿋ݚSvydսڲSY场%z=7uE֋ߔWק-?Oe.    /Ԓ_|_VWږ:W=Z_Uul٩9J}.񑿿t|\_(\uzkn~|}%;L| _̷Jw"od]sU|UO-{NR_~~kbkN:	WϱߝxߵQ7?;?7.]OWMx7sºi;c"w}<?]tk7:j;]NhZ~
+t~I9vFHIhW	vSq>ՠ[˓t_    T&L]x?C5u8FȮJ8~}{2!5Ke(ԯy릨%jzYk0)iwLYu,-YԘ%˵pJ_yF9;ek+4oyLǴ=XˏOqn,+t_ҦWG)~[}iO#Len"՟HVr4`_yHV9%=9襵Ct7y%i]TϵjSF`;FFcyEM1آHnW%C`Akv0@Opf~d}8F5+    PAc}q̪kpe_ڶC%~H K.e?Uk"=3Ynj܃{uȷGiz`][KޡQڿ=]>
+Nw~d"cuFK~SOku3k'W4Y,bf$VO[zzz5K	8rtpXd蘵@{,Kz^y^fkuh
+XTrҿػEo雙    Lbc<A+ۛmGγ點 BXMkن>K¶|NjoQjI:hs^4w_`+?Kk}ޚXuDA-ukVa	0E4,FmIR$P+TupِoQc	Zl\O=JT{~yN9uݸh#N7*<]_נ:r~,}    T;>j^mJ=R /og3V qہ5rmw*rޥEDe|`F`ݡ[ѼMY/ߣVuwPV:wH9MiTeޢ>AwNtPSRpկAvܙadu63li]g7RLY'](H{t,<sf(|e膟k؈/    y|)kV%'';u?z4I7ȾmlR[Xp~j{[6].l۔Yj\rl(󘾙6XWPj0R򶽣WIO/OWp]n;Vc{i[)so R}nƩ/i.W<_^V\rS'%yR[ӕ_va:wN~Պk=j~Mjol_޾c;}M]r6Qq.}N~AO=\!jėNt    #lZxߕvNuuC.r(qDUpȅv:?j%ѫ]-ՠq#Ѳ9 {jVa4.nwX(T>D5Wf}[}FZ5l՚lU_7P+4@gTGm{tQQJ6e.}W9LXfIW'ok_ZAhc5y/z :B_    yd}sT<o߮uZ*<NS {~u\[)۳eі]"B͂l۱}ږrPOOuU5bةԲ\ҷkAB[G+F!9;/]۷˻IZUveíYfZf{Tx%&&@M J*9?5Pgxi6QX)}3\,MSx^vj]FX0\F>,pXo
+&,    PmZ^7QmjWʍ     0@Ӳ%!d   @                `B`      L     	     0!0      &                      `B`      L     	     0r8ĭުvo7J<m۶iԨQF	֥K޽[͚53JD	@i\#<[fҌ3Tvm󥥥)''GF	(j 5³Uy`Pk׺@M$tih (                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     	     0!0      &      @5`_>ҤV=55Jeվ1qtn`ױus5QZff=;Dw[ҁ
+?5ÉSQUSޣo-^V  2 8uhpz?%PW\Ȁ}0.<9m٪wzotEYҌթ˥
+k1Vi܁iS/ťW)~=Y})9l8`wZbr\]*e9lY|
+c   @` <wXN~O|S'NiՂedfo3[U%~K׎Z0bgv%6˚sL9(/;}^}`S^^=7=C>W㉫n;zyza$q`J-O}-/8{ueJ^0@MUp}Yf[K{YWC[v*8ZkY(qs@(.sOU   8 s읿iѢfžրmjumۣIEEǮmA߬Uzz#5Gl}k]}ο^Zw@?N7 Hj}<|]{>f4G!PԻs{DM2ZɶZ6fEȿsjqXd-O>Uwjܰh^1B-74p_vZ_>~
+6R_tu6LN1?]ǿ|Z$*}ޟi4vR]UwL!ϬUW9D=:_rʯuzkn~%~)68C?Umc+y4VW~c_BPumK_IIG   *\n?N)cչ^.?K7xk;*<[LHE3tMEw!XSW:\&6gjZz%zyžM)RciJ^,S7M3z:٩<Mg_^ѨydsXul%!Wt_רgi޻Hfճlp6a՚4}sQQ$[[RM]`񮫘޷s y;6@CVY'鉀9%uzl~OxOكHa47RtY/#YsZ]z0^O>&k֏z%nڧ|iYiZe,YSNQijP>6~=Tҁ}q~vWtۀ|Y:W*];=[Q47S>uW   ! :?)χ5x:D^Xm'5i`,w6UsG^9_$:vS=QD}f^|rj!_5hZ
+ܟ죈G_tîU6jw4ޗ*sA[wigz?鯺#G^*ȳR'P~\6W|rke|<Bm6OA|#bTV.k{zAmݤnD
+% R'<VGm=A=c
+(-u~0h6ϏWrze
+X|`<61~"bV𥺣o   PI lڟSkSAc5ژ~L[vs{o4W}cV6,-TVko<%]R]肦櫓T+ogصimsf>y@W_]ui񆪝8?5l {/@Vi~NVnNn&~:שE*rDX<.lr:k!w,u<A:-˨
+_Y󰼛DRhd,GvԼ|ew}     y͞G]A?;@mn~XG;gk
+MF
+ll)#8t<#ݭ ];;zFYV}u\ۤ,kiN6x*j6#+5=]iNm>x8بH.-҃:_O!Md?'SkNe.PӺí}
+5TxUiOp4UE#]X3UH :ĩY3C䩝љ   8y7հ^Z0^M7ȳ˞k7V"UA+5oӒ94wc_i+lsgX*V}@!+[*o0*Vz_[|k>亏®C+˺UY=q1X3~+Wlo=_S觮WhdQS_Z]u~䦷OT1(NyJ;"k}W;m]w󖥖r+&vmrr\Gg{j   83 o&󝥚mT-P'뚸z YиaZҿQiCNvR-ݭ԰qCn9ٕl)՛e"[øLCYg4&=U_6PhGң~E&ĬkKM5vl<z~uaZouNzΈ.5_ݧB[V},@]w=yp*6E@5J'07njeīK<5   UdF%1c֮]5AXXdMiʶW
+,JK߮GexҎTEBlYڳePDS4+.Nmۓ"ԴI5WDcu!'8;ڜ0OC皷a.b	/i뺸ԟ~e؃(ϜbkeȹYeWbb{QQQJHHp4 oj}bڙ0lzjqfa%H͢ګ]%.BZv
+\,j>FQe.~j~9,pc<7>Є]ԟi뺸ԟO
+-+,pqpay   $ bŚ;/A#oNW   B`  (;B<}m\J=.+o     qz%  @MG`  @)ݺu#4   5  _   x     t    ɼѝPf̘k׺@MЬY3͟?_M65JguR-_\6T||s&RBB{ qlU 5M@@c ՗bjjtO?'ơ1 <\#<A 0@M$\Kޱ7` ͝;1 <\#<c  Pa  @MB`  )    2    R     0!,    0  ///   '     `B`      L     	     0!0      &                      `B`      L     	     0!0      &           x9gfׁٰa:]%(秉'nݺFIzj;u뭷*00(A믿^0ןkϞ=F	lٲEwVllQ"E&LP_Ӎ%7o<u]F	tIwO5ԸF'\#:0p͛K@x{{kѢEٳQR}c3gTLhhg,U2
+.xGoK@\p:zO5gtKB:uW@vƫxTL@@
+5@kc           `B`      L     	     0!0      &                      `B`      L     	     0!0      &                      `B`      L     9xTfPT
+  Pu`ǏˋSff7on+^ڶm랗u^LLeM.aaayu'Zy11jR˖-Ex3\BCCsx>Lg:x5OH     0      &                      `B`      L     	     0!0      &                      `B`      L     	     (E+*N]    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf ns-3.21/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,316 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 618 305 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 618 305 ]
+   /Resources 7 0 R
+>>
+stream
+x+*23P0 BcS0˥h^_a 
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 618
+   /Height 305
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+x]	|EIp܈pp}_!	Qt]޷⮺ʺ*ⅠrfLd2rLN$sg&	h7]3{_M34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L34L3ʹ./JpkP6f^tIL34L3횳+AmpAm.#wPNo ǖ C_T~|hqcifi5]9:&rN7>5l֪p|98 Oϣٽeեgs~r/Rs_44L34ʙ̚do	2RUq;ه>N5i
+~.{ ǞLz=FϪv3KJn}VOL74L34Cvv,&	[~bg L\4BT.&;sȏ~*? 5T;W\X#=WלI]CgLPƂ(3#cL34L3;s3PHG12BZ|(8벋@MY̥Мj׃C}oE#'zd3[ABg%w4Hp{nt7L34~Vw]r++]4HďLmAȘ# %d2@X`Ҽ(U!ٛKdOW68jRіcoAу w2H3gM=|fiv.)PjsE7<l.OI/EC)\79I:&SRϥ3Vp
+l ~B"OђNL34~v$qHL lXXt-]TiJ(N,
+][ENP LEDdt*+G}GW?tfL34~#vLvM
+NBҳsW\hof-{!pp֗hTLR6ʝv~G;3	Efij+Wr0$	*]xQ|d`g¸+orS>(PgSP!\J3{$E{fS /=䦙fi]v?2DP(b鐬y3Y;P%C%T[JMG	5FrStD_RiELRNO[<nb/z^|0d[r{=}f}!!!ڵݾ}dٳg VX(g.UBk=IĂaXbhO/B8dp {Dx%lq)T?0z5T'Cop{ݺR-Y2s !R[.Dyn뒫*߾g?mꁷ8ŋSR}ʧcfoȾk#))iݺu|Y(&NligudF	Uߌ"aZm~ $V'R%N4ZzLRt3_`u ܳ6\!Ii.qnYu:pCФ^:z^_Q$ژ}׃SCADߊ"OlS@♖♠8ټtvے?GV.ĺ歿P?~v[qq13ۇ:to,++3Ӵz2D
+J&m ,2f<,|$fePv7)(L0ǳjqS/QżW^JRSd2942&i&TEϫ5; n⚩)FFC,9(sͭx~ڱ
+^:umպ8ނ@M&!0#T~w.-XngjL3ڲgϾ}t|ZWW7}O?>64ۥHaOM:q*Բ4!6qMʦU 
+$%Ք]Ś	u<&_JKGWV5S˶H ^6n_]9&fS?+O@|!P<	f)Bx`Jܲe '(%Lk,[~}`` :CCC-Z4uTimk`|pk^HVQXtj#>>J-IXT<%9^epsΆWB{P&|j8o}w.:DXPtl*GCa/=pwl?w	2e&1*[*?{Oŷ1ӹ~/c~hi?O.--MII۷omm}tRQQw04Z^Hyr?_^?9AINlUrL^+O]n9V%Lcp8Y&Hz9I,S_Iɴ:}x"/zaӮLY,w3i[>ۜq8"3
+Td1yj58)zY#~de6|un_zRpBfV^bG>}/ִߧ$O(5l>l&\Y(D8W%?a<qJ1i;Hۖ&B!jKľipK^A,PrBF.sa!;Q.$-
+1$@QMC
+GWAџyc7˴߯AZ{.iӦ6l8{l)cp8k5wjCI.S郁c(~~T~NŃĨᶋ\!ŬTT(CKҬ]Al:_{<6dZV&O]+gdFY\<"Jsp1w}ֲ\[sRO|	|8T\f ]9GG}޲e'Nؽ{*i5͏VwKeᩑ gȿlj%Bl5i'/GrBC>tzhBGCLљ@$#D_J'Z$.z%#2@Uˋۙq``Elż0D=n(R=z衞={[nfڽ{|=MyC'	<mjI}_M!j4"*"6+K<}]\Rt-0 Y	EÏxyt<o	g &HϙHp(uֲl滲VUNli~7|enM3LηZ'Dj{(%>sD3d8dPej0dzCɯ	2HF\8
+sdaSwy
+,	NEQ9FE4*":_ƣpɕzbj*Gho 髛i5kGW=SuMij$"uK{uq#WgV+ѷ:ddZq呶rEdU٘1I٣PҫsK@PfrgS)]T'|ׁTa[p|8*?~bnﰦ(_8BkZ#BOni׬0p(TͧcѷQP/ppz-dppXIV/n	=n&[+ď)V\( ^0ҘQ`ʖ>H[ĭ&Sn%|s*82Y4J샹~Wjۦ2^tA\*+>T.{W!o'0p[{ۗݲ$>p}^v䛹mԔ_9ӯܴ0||u=MfڨCN"q¥[*w8C'fhg]ZydLNea829U޺i*)3*q!*Z&?&/$kI9.}rRU91%AX. 蛎z	sөXw  ;1%$ib/: ]Y-<?W}6os=[CiM4횵	
+'.hxY_;ȡ<5|dZ	*Ѩ$p1OMҁ}r&Wٳ$PB2DZu!HAs0Hvo(cjG/JuQQlC^IYvwNSJG s;h`^C	%D򧀬!>-SL3jWi5kYC 3Qχp5?1<p+`t$wJ\ϢC\dIS,b &HLkFg(^|*x3?dZ=\4#]:}b)	Tn%UsHc҉(B?]
+;_ ;gJUq`$9Qʞأ_Lo=m]v*i1F'P[WD<>A`9M²hBQ\,bmqe#p
+Iʚ4Ung&J?Q0
+N}%1
+HWx&9[EfXO.2`!02X)w)&"TE뢾v=}K  a֘Ncwnniצv8"ULxCN蕅A4Z`fD`b*'Rd2"_ʕ)N)lNѝ2[1$iRs=H/G"7QKqo|!xt>$Nd4$z"Dr! (=IDQ: HWzq/>vq }p1ͳA;W7Ӵk*>~^HlJѐ;9iqr95<Ӈw BZD*WݤhOYQ8ɡLwМCxx>j)\Aө)R/}w1o.pYPu3ed${v!+uw8m|U'WkO7?iRWW7ӴkӊEyJG9ig"Y(d/]O+@-\LN;-
+'{Ap|hJM`NDb5)134"Đ|!<.C`ߧ#ӕiEHV.wlujxAc^;345w4r?0򭲂CCKk*xw_]?z~!!!ڵݾ};޾`aÆhѢk׮?ɓ'MYXhĆjehEa%3h2?*U#QJ{~άri|*L+~\5` cs4	}'< Tۀ;GQ%hRb:9C؅͆2B(qudGu,2KQ*Uwj=+V8ɓ'we'5t?##c7|<i~1HF<5UBUyW0cOh|aIDHSPEX+#>ψ!XY-*f2PJT-V c*ZF,*G~ѻD_f3+wo.=C]涸q߾}V
+p>~vr0Y	+5(d%ai5P~+1z#<?x 9k4G}[3TbJaK ťg)ڥa/\
+nqX*	]\$"!GwHCr,!C<20^,{&g]S]>wؿjNT\<Vc^b_<{/ЧOK.I^Z|y6mtN\-KmeO#w4&E-U#H$u4@[xlÆD߂{ѷ}p%Q~UKaOn%Bk8%e#A6,GN,Hޏ#P	XçgI?M;HN#LqY'.\r>Ջۦ*▢siZT<5J#㑕ݟVwe6Ͽtvx5'}oV}w~o~^z1b'>VuEׯo	ݻwjU{wl AllGBHJ>r$)$#c14Զ	5ƌ /}'<2]ϑiI)*n͘dP(}NXj]?Q%k!Ėt\׊R.dq7]׆:&ۺKU[j40ݩP7V#VDPE{T|2jgmW+Ϥ."Pr{[>9޿=?.Ht`=7A;?_zB|,--MII۷omM6eʔ24g(ucV&\zBQ# JSFusM|c Ik;7F1dqQH"JL"MDё"E^ZgS+hP0*,}C"M/-DxS	K'>ժ!K.teŹ_i.ZvG!i7d ZQ4bp[p`Vǣ%zfg<Փ̴ QxVח$,+䮶c^g0=!V6kliLL̸qX<54-o Č
+hhoRj } j<
+{asKM\@)LTdo-H9	sgL -.ʝrP!1L90paW:PѠp3q.$bFZ٬/@ߠuA(l	ASHB%|'!^@nac	5|G{.iӦ6la7b:t͞=ފ+~ңpN+q;1<U50!;@0:NX5S\9sQ,rƁYHȷ܂U`Ҫ4e eH"QKP	K12HwC5r;d0Ĥ,)V/z>'ť+]a(x.Ihrd(`hts]IF7Uo@2q@aWwfп|u裏[lY~ĉw^UUUWW7s̮]m$o:tpM]P{bͻ#=$[l-v[R1TqXKȡ&Rʓl5:BQReE5NvԛJG҃P_iˉOK_KEqĉk5$å$+y-9<$Q&8{/tsX&(GvQ@f́^}ñͳ~@IDsɟOH~5Ggٳ'9!̚5kp4$9z7IΡCnƲ2=hWΝ8-
+T-nz&Í`(&R(a5nzI<*Q?F
+]O9A}`wl'rC4Z2CJDEOA!=eӕ`wj)_a֤YɷP0nlURH
+)SL8B~J+W$~*?hsdݮ]#^#ʿRGtp{~)|l_҉_<_rw˒;oݶ`=qL6'.4uafFspa_Sk篎JFҶ7ԋ0*HJH3nyq1T;)84NJ<JR4fJ"ei[?[ED	22iJbq1OѐUU"< Mc3a7w/oCUu*{1f*&zjb΢EN{ZM9y{ GCt:'3d-*H,I;\z=w:wDbx`l5=Bn<<f$pf/%4?g"ȿNԠMq3KvĐ87]~/UϭS"\$a t,ޱJn~ЏC8><)(KO@rvq|r_ȩ͍=38xW7S:ҥKEe=Ztisf}w)b~8PbPM0g*Vj$r=Mk'xP;wR0(:'s-Rc4C+(zE3FP~"Ԧy **ҝ\(p)JhIfi	7kEqb곹d;|#pMޭNc
+DО&~]Y_#1p?N|YԖ0v]^Uc(κSQ:+-K 18z}e^(ބY089Ğ;
+dSu:44ACgSVQOH9rnt\ 
+}K3wjmU«(} (5exJeBlntgRRr7RcREh6Yf~i覍'[Tg
+o87Rvn'~;MϿr!Аϯ36<嫛:gϞ-en\`t<WϻNnX[Jhk2n2
+3PSRTC1[<A	C,	(/	X>D(IOh-c R!Ⱦ<T3yѷ!P8$*jH't/ŰQܽ"aѠV0iC؅T f(-N̑K{?1C||m:}\}pYf Xt Y(SEOaj8,_\BXGp;Cϻ&7gYBzT*x2ضT85GÑ=O)L	9E4{5F5}ǀ>DO~~oQ-vbВU?pUr:)J7ߊqȢBV^ehM1Yny)	hS^ݍ=38bLԶ{T) hq{&94ن+$!Sd"-xPQ:8,4Er	!`љm=6UZY8&1@))=Whi^j=5.%G%4D	dq4]t6]oENXLXr6੟BiQW[vƞl{~?}rgĎ) Vh
+>P@ϭz*頸hG*ݎj#D򪢺T`Z$AOq5c`U?-C]v%}xih(f^A5`cg|uV֝xz$|0n}T'sEL) 2=nR7(dӰlW!K%h)dq49G*ҺgrʷKS"47.*ѽ{1fp*ϯ=kŷR6q8Eϼ1\QM sQR1z:o"-j(
+<-["\k7NEAbՖ{0m1p8Z?GW]A`ϫb!8|q)rH!qLa쒣lgh*h&cfpȞEB`uɕrtfU-{1fp*y>}]`Aݛ5k6}tߡѳ 썘w8yR7%;
+'K Z$T5t':1ٴm'rep1ĉʝx(t/$ Ftf$&v:h (C2z~R%q;WWcyO}KFg6xjLfUgM˕K[RW$|8LCN6veBOj\1g4dT_]|te˖L6-**ʕ+yױ6e{_Vd(IݭNi7 zFhDwejk^Hqi:9/|x5H{4fD ~#[ 17?ܣhRy#<r)b=AA4P'x
+c
+R/U,EgUs1Y^fD&2O&L*Rד@+KսYסC>3xC,fu7W/Ԟ·n Jȴ3N4=d<- MRV'#^it(}$	YCƣKFF~p)Dʎ}E$jQsg;l|A}eJT^-	쓑^-Qw3\I|*4~2+{v3,HiU; TUY=!08{1.\\f}5<<|~ߎfɟDxmA8QY8QIzṇg_p1x~PU&aQI%qbČ3T~s(aFdlJ.	Y5]J@9c2 .ۦHo,[J
+Kʗ5h=w>GP|O=pzGuY2Qcj(FZD S0*N՞Z 2h?Ɇxƞoz\za4+K7ns=e;~xw@+w,3tVQR@`яznϣiD*H)M()dCN'CrJ3=6ŪgBEO=쯮@9Qu]|Mk$ÕK9C?+Gc W%?	~6s̚"<L-u1'·PbU*[ƞh*%`GUkڅ{}]fY47jB㼽	nL=ߧc,*ry:bJ3QkŶ|ZME1MYYJ-Q(kEqnV.5( A1ӯ-BaCVC#ESGSdūhSHJh<,5r<7YAFK;}1tޯѪἬwX[G4p>vE=HKB2/rJ{#t0ɛ|Ovv>[cOQNŅ}us([xΛ=81^`aZhѵkׇ~ɓǳje[wyȭɴzs
+#`J*;I8MMAWtfA-t	[-!	}G&rK$#R4F4x =+(/]aM>..#D$eٰ6n~#OT( _[zp$6D-8,&+WÑiIO@+yr@a7;pcOTNpѽϩ믍ԩ}u㧨qo/u5I'Qt:7oC8m5X2#jFF1ΆdWLo8<-MCcA8a2}OdK!YeѳB)P<HAA;R4ì;}zNpP\.?j,}? Ǘ#i߬.m;'?ƞMjce充ӦM߿ocjժ ۭ8z&<3,E1ȴ:}d
+FL	z?bm:	2$ā3603.GCKqݓDRN)M>P4-!9)?@s`l(Oo~k#RT1{QUWCig-\udfgospcO[NVG?k达p#P=c,y	3iǮ}zw=r"@茷@
+zN<%$m%NCvhi1JˣXFKMKa.\|iDO]!P>>^z\X\71ohV5N[g?.U7*SYRl5TTT,߉={0c}k>װC?r1kR͛2J͙?>%@t(OP$0  zN &,s06h\8ҞSHě%=-0ڲrM~.5-Ӛt9<UC@@=_tog"`[QQHo)+#9"T?c?[Y@J'zuF]?YG8:FuҥI&qqq?r1}0О2eŋK'һ[b&-D|S}!tb["
+0GgS";f䩳<4)i1&&E	o/aĩiF9CԡR-V^-a罠%]-ad1ק:N.⮇no_]~DmROTKK"D*FQ_0+5dT;W6sO믿nc4&&fܸq,km/D+Dp?	e oÐԞ9jb[\ֿ}T7OURҶ-bKcn꿵n"^H
+hmOBNh'K8NF:*p/.\Qkd0_rK.y/ꏻ==jN(_K5=58XZYHHȿ cM1FFsvwf(Q' ѝUv=pkU4xrKYEƭMT"qQ,9cMŷg~5'0tNp;ckKdf/%ӛX.~Hʜ(CߣƙFT&ǉݬZr<Z*ëj2r7r*^S1|kg>~6mڼٌ㺺3gv5==mv]]M2^JnYzO
+y=sF)Lt*667Bmj;n ltHa\LwI_diB8")ȣGQ5y#yx%wD 4K%x< N
+S<DI&0UIlgF~)iF3J}^|jJՇ%f>hUI;#kiM!z>w}Cz"(rϟ?/89Hs^9g&cP	3Ӓ>=2}	`#L(nd8>dѡ(i''ć_*
+rB7yǰbyu=Ŷ~MlMR)!UB)IqǠ^`z!c":ܻ[)svܧ:+T'jSWf{ַ^	V)AF(|F3|=o5kڵkc}^(}yԼ )-xľelgZfo|V[V8GOJ*AYS_ _0=g:)V2"$%IhigтH]j$Z峙Z:FL<pFM}s2NF-!cQL_DA0Cٺ(c˿wHolT3<Fuߒ	Q*y~~TW?gaxԜ9?v<y֥wxj%7ygQ@ϡ)ۮ>;>lvE xtL[۴`DOҡsҊ^	Hמ3C)=Rv$(ScVpʯ !sxTQ\.\BpLѭt<V1h-Jݬj(є+T)1-MQǴsһ=xʵ܆Z3BhJauu`z.{H/KDWӊ$ݭ^솜|18m5ѳGckѾtϟܼW8OTM[cAOk?v{uQؗw@*$%ߒ37
+d>4
+g,	N'p}-"Yh)ҨK	gi.zi#;f(Q$iؑr<-wu"_$@'^<kl5veXVU*9DϒS琟P<JNW_PT{*|~Jlxi|H	3np*ƚ\MGҥKHHСC7o\oW,ӧo; y(#oތɣx%)7KbqX[w>ps{<(04i O"!VYV}%qM%S~cs!ynVg'J*7:!4=<'kEcUj6Dp\O[<M=v-I4պ}hIb_޾\Mٳgܹv"Qt/^|YQg;Ѣ869nN( zӗ(MumX1`ȳm
+u"Qb(jiG{IՋ9h{ԘYh=6`IEfQ'IR1n.	LVU=z`yS|=v]~?2XB?GӬo ÅL<M>"ݮTӥ=_av[[_Sqb/_ݻUG|뭷˗/7nu^гܖ)/'=DoJ>3Mnb_k^o"Q6Mf4+(])MGF_ȴ:cE3x-!0z<!0emS:8FNBP-r/f3)H5Dtx7_n-$J ˪OO&
+pO9h+nb}dTlսYu^ziĈǎz%Kڷo	_g+**/<h_rLwx%r2:tp%m7_O[mؿ\1٦\t@'7f1"قs362 I4Ԫb#.
+\H	L.bD(,fPj
+rw'^\QeQׂ 4?CK=b?#RߦDO<mKD=LuSh]ߏS\nս%f͚ԡC\_A4hDÇ;w.,,^K-Amu_pݛ5k6}tCk=\:tS|*q6丙?A)Ix9M#>CZӫ~[D8dNuǕUĉq	;N:[:1'J]^)Qm#;dPe1)!Z{)==XW]>Fao5jZMO}58EgD!M{xW
+?Xkd%bAHYQGҼsͬ~ vOLmvQ8U9~Գ+oCs΅`jZa/wp"۷o@@@TTKB{w~͛/:6^tٲep(9_wR}NN_IA
+yQ(.#zݍq2+3o}\ѿaFP,k
+&OCc1)DM6P<z6T	}!JWVw#Ȏtbd"qV)X a] Fdtӥ#kl/{-^|p{Q4Psk T˿eO/mr^ɷ}$}4:cwi|T>\1k׮@$(KοAff&x;h?]{С<~!btt)Mo#I} Fj6?"ąugqg"Ng?g\`EM8KWu=3zU="Y
+f(iVL'\(S	_L9J1ȭ+RbIWO2(VNM)q!cQ,bB甬%
+ԊF.MpL(w,opE^Oqip*^]|400pݺut
+ϟK<mَoڴ	?aW׻fjxx.ӧJl'Ƣ()hxyH!=Wvz(c`'ݱg2N_.'n4(hJC+ERn
+=s	eSRI:6XmmS[ARtq:cxURJ%w}VYVGPt <)]s@JT-8R+le~N⟖SiOIDw:)>J)Yqt6I_S\u5g̘	ڵk޼y\
+
+
+ѵR1|G}a4++#{Ni:]/ǎ;X0UPRPZթ~=;>SY9Úx=<6i&ۥH^+%Crd飜zyQrPBzRssܰ,cp(֘4x*MlFGS\IT%.<pW6WDRFRsBOD<4 q]҅~`|F8E-9ў>_WD
+DeŃ}#aw)NkuǏ3gVK<x0ŭ?<31|G;z,=۲a1Q4(*1D
+;
+XiM=oe<	Фu7)oBџUfcR'H|/8&tP0Ya(3{vKt>h"ڤ!.Nlq$T84FXVQkb1Є:mp!IKEeWCOC͚?e_սy==-*PTw0{vq|S8^Ϻh? wd
+g	i)'W(д}%g*Lvś"lM![cg96r.
+G)3;V{<&J!|O[gnE.n]Z&o(xLD!UYd#-QA'҇+k2"1S@q8Fba8lsezzߵJ>F**9EZaQI审^Nkp*^^:E6vu`]|s[6*zVLo>o@Rd͡z7U]fO3_O/PtfG7{ic91gQU:=9J=gC?+FۀAVG<9!	~1CUtgl@ML~/9[%NuqRsŦ#=hFXk))3bqX=qjZ.ӧ(CyFT%,:+Ţ͞ݻ9N?v|GOOQ\Wұ|iӦ߿:V
+c[+19$E($-%7J
+7,ak95[z9`MI>mްEQHmx`&ٸʝNT}gBA_߰]-j J<:\8^X[6!)IA2QfyFԣx8"%e]ߒE48cޒ1KF9#'Z3"D^(fTX]I`5	(s¥+8%kx/#zU`U3ձp#PPzoɴ{ȭ!bZF+,	aznޱӼo}Iͤ+j}b%؊co=bNqRa,%UXSic竬aŕ<~gl'LH7y/,6D[&u.(D1|'Z^TYyL
+Lk6W~O7֜QS^ѯG6o޼-[.Zܹ֭9sThzv(<iE蠦Bqtqe08,MۇjՒ69lm	>]wl'-vJp'(	(/(&}%\WMR shzzHܲ>t[H͒jR%C	?o0ĈP\8=x&b!zM=1KOLZ16(XBZ\yYp;DZvN.A8*GzWz$UjELUGIMxëp?=%4T}=-[nbcG3:q)HL!w^koa8:]V}H(SXM7BL+@ø=m knkƧn鲾bQ:6	IhOch{h/{o|ln^~X>]ZZ1Z'Y/FR]p~͆q1Q/1Iɴ%hR4#g7c{fA9RW+܍'ri>RU߫@%VRhwՈU`Ԩsi|=|ǣf
+)H	zPǌabpD7XYb/
+<zD.\hITh眡hbMb*IZEkiU⻋:=9-F!iɢi=>UJWdqDC$ܡ_(eל~o'Ne([cl9|P؝DJgňR#x:COw*97zoa(fSƭQ5Mm%=?p>ni=͟~48Fnݺ5k>!WZu7t~풾ޢne R(P/!2I4Cۛ	!{[lo !	{-uҪho&,%v(-a2Ii)mZ\dQyJDYN^@-󊮯}BL7T$g$W܌Si.6 1Hcr'B1n˚V-@)"I0jSg#Xrx|8EExo	Q^=)i"T6$n=T>H9k}ܰz?hp*JFϲP/VYYjFG%0HALGKr&)&o΂ڡO _ͤfaV|,hAez"h[Ƣ2S4W4)M3.,+;=tsHC蹹`m2^{}8x{IVD0R#D5$zcӓFxq,6DBG(	F*
+D:M֋OReXu j@GU^=ni˖}=|*ڇbd>8˚ԛ|pb:}TľAV%`P"RYpBk>}$pH{['躻X>ٓGO-~/}s|fu0VY#';nLO@'$v9!ySB)}9%U3)PmQL!EсycMٷh }ZUjr%Y[~rzK_O?L,6lX-v<ysXR6mMv/Q݈f=ϕn5o|풀Ǟ%iX,}70!uBh0cx3=)St]>g4ݱB.Oz:=*&nG9^6^ŷC7G)L_^{݇UR»s(qm}-Rj:S(4JXqY׏|Z[zbpʀۦvR,]m8F.$HՋCEcmU~4TJRq$PUBU#1lZz?hp*<$G?:Xz7<}tCsIJJYhQ}5Ȃ3yh.2m_㒣ZIhڙ!]<I'	<ն	Jφ5ADoNyc^058gHRDopscU]wLǭRL
+^s[761[ԛJ1ԗx@iniXF/mYxX[FQd";d:+Rf360sf ;28@իK+bbiuz.Ka*'ןhҖ+~^ONŋC
+}t2Vv4yf̘2xz23jvUU#<U]E:.dZRhhi#;jc%9[@OkIH&k1Z(А͡9ص(;Fd㶉~VMaAo1ݳ󓫺<6+$mݐa}пﱨ`"+HI_epSPP \~gp3du>mY(b6=r=8==Ob7a"n2}
+FFFj=}d|vP퍀1zhۏ,(OCvޡ۴iSWWwW_4iRǎǏo}Rk|T|^z{;wnppz=2n!$i3I- `RoRM1I~ՊDMm[&J%CMQ{KM"K,͉{#Q+iAC[ZCo>cE?jVG'^WlF2\`vB	wrmX[]8[9o]B5ㅔuLB߫EIC۱JA:Fk겼H#dt/үwt>n^~ѵӧϼy~%+5o|0胏}Qccȷzo|2ܾqFb)*n&C'GV,DRlh%qeNr,Vۀ)C%7dRގ\->ME\@ʇ=!nzhՑ1X3Luk[Ú&5KtKܴ+޷|v'!N02eȸh~WVq<{$D#:},4.+EnesdMn".0&(I	5$'X!1t'J
+QaDg5H^R=2#ZZe4%CNtlp*^nw´iӦLƮGW^16~饗Fq1xK,i߾zu@ϢG&Uet	2B ؗ:-
+'TZʼ+IvZLb'7ւTE-<_(LMU<H]f"nXUo9n-I|m!KsH.)1IBhmO|Z"|b!PYJd)0e;^`+̭OԷ?_[oX#,Qc*e {BLR%6@5"x{ueZ?@t<V]Z@FQOyՀOwW;m`Q_$Xv[BҚ/]3:5f'}tC9ΘqAФ[j>~yml+w0k,8nAAA:t(/d7zPd\mQh|mb%D2(C@Ie4 )WVa\.`%z"rr_8Ehn<H(CaU%nB$XB	]|vŲK)Ho' A/4h6X~zQ6Yed_D1	\Hn'hiXl}{4 a˵Yv̪zC\OJښ~AԾ\[/~C-*<F[I]뮁8\GOl	}McbOImܹLVkQQ/ܥKÇ<wUǏI:o>2'%bIs<X
+&!gڈNRlI/OYx*׋rhF,PBh3H+'LV͡x]A*BUڇ1:Xhp>u >'ӄXLrbaY+"^ԩ-8^rwǔ		{/io$"k'>dE4*@Ԑm2"rUYD; )) $,[ <z聥Z?to>=':XxņQT^Ss>8s̮]ÀqFaΝ;_y啐ztd555;V!%Ë]v-"oҦ쪮Sz(~;%7a݅(7Sch69"+wBCPX)ж$>P/n"BYGixQoB@P܉#S*k&DA0BB*XPaJe"Yq{=ҫ$q"rF:x.+.Q_MS%v;HXfR1XaJ℗n6$zn!WouRCzUD$,F.F%M?SOeП@1ÿOrC*^l]t`=Oe|R]}_J5S:s޽{|Mhh(MEb\\_kC<\nҷo<f);]tCU9<>P>={`gBh5͆	II86q13n )-m>ٞ36Na/sAdWAb H6MՄ/baʏX^.	ONY%%
+{^ft@.A&Gt)i?ЍRFIA*T#Y	9!J)eSwϭ2S}j%]
+F:RL	Q}Oroٓ$>%i{/tQu|ݫUV*.?緜/~]+uwީ#k3f̈w5o<:}΢#-z=9fIP(Bz}pc(FNٶ|t	'5=Yℸ=%jVF7VfG($aN8T?nmCݼq\NF@3׎!i _N
+7#PPq/@l
+b~/8x>f.X_ҳ^+҅\%Z]Qr(gQ!yF`-Fc**F/8?rcaZDo!1+q($(>PBV<tO8Nd|rng/^FOp*w>uGg>} ØGֈ?>g0x`6}^{:7϶9S3'L dIma&IraZBh˄8xsE܄cb[brpKL,Na$wFaD zBxy:z1lГ/6q28c}SP~/ŭ)̢X,rY緝F)!tTBznTNG)e@_QOzCѣ.hoWV36ҙbS*b
+hxɁ[U<׼c%(L.%>  K-/*]%|'P8T7|Xc]}<f]םν}HrDXb8EC8,!'5=CMQH +#`/BA3I#Rӽ82m
+kralMB1<Il#\fXQfɮ#GDr8GzCh7B9NoGsUCLu_Kf|AOZc|cیx.&O5La^rwװI{SD	bL#XQzVvKT@*;:	7i1ءB!_h]>k3A\YNrr!=y2Ґ=߼|sMlp*W_}ks>u4	7k{Lxs$CDgY(G7{iQ붫!D.#&tǪxM*knK@Bh|N
+cY}(L zLB%hc5|
+]T3/1QaMB;0W	AՅQN?cWt~N^uV
+1EKo]+wcf4-toQ-V9YiQMtgm$W5DQlHP1XLap[jMQ:^<UA<S?X>cm+eO[(7>tWWlGU+op*GЯ>u4+ڡChtݺu;vhSҰhͷ/nQKk\SdB4ăX3M7~:fh?iN"?OeRP%|q4KZrh*!%
+5$Jp¥^A"fZ%ME+'7c&奕q<U3i=P"͡ݲ.guY}I|fG7F<P4M	yZn8Q[Viq^ʱpxFoqPw*^fRT5	 `M驀jrJ۟,z! ĖKOq!8dr41&e/xy9.}Cp*~=Gsa͛ӫ<xp^4ZlŌ-q~yԯ-]a.[{U;nX fLzdLV*AN$r'̒~TB kšC'CuU2*nM4azfEakX ñj?[zG͕uk=G!)C%M(Bk!M.GUNM *7::ԸXkX=i?Ntq4ҍ[$/iTg)e0*8/8٦^PB+jGΧh8[p}w䑒~YS|k>X6m&MBkѫXx6k(Ja'-JLbG0u)$%$ZXC>ZäL"&\nX@Bh<B]{4Mwj=zUǘ~o܏kq#	mK:f˵Ia1ͺ;YBh[--Bۭ3!Z}LRܛ>| Zԛ~:FSJkC~:
+	&Kr!zlA}IA^j!T/\#dmT9`Ԑ?Z,>|U*ir/ C$_,㋞	_*4~T</~}'+J|E۶_b\"R"	{93yOKSے)nrTOLB
+Hd3LHVX`:cZ75M9usA1  cM[8%G
+M3JJZ\v׆j2yoS|	-{5Y3jm+^/}	W0]ޖ?IiO>wK4(!4H9wp3=5Ӗ[?7GO/8Ph$xP+RmRZRÍ(qi'x,ýOuOK9J
+>@0+{OT_N	__-Z+JO>{+Ox(ܡ@w`$_.͕]gc['Gk8%V7lO{3X>RB]9wh7y"jz
+l&HҊ[mk8V-|/b[tG!z1)N[{%xA 8Q(f	ʽ"Qcb\;^L£=c-,zfGO:T^[#ܯkJd&ۨԦ&|o=V#!Ԧb?TJG?Mmh+VڨQ[}xT=^H!$4A(鳡>|齊 @$! 	-$@B
+wxBI"MiJk9sd2sg&M9sܽ:gϟٳ'e˖\={l񒇇G֭Ş\(5ue.Pt⩖[u&\]r`ǦDYkzuR7+THnWB*.cfD͊TMoQ6.+k8u
+:Ȱ;es{%:KG
+eI(*[A969JB19i]/Si@ A5B-AAeZoַkNjY/yCz\cYۦԠѢ@U=eAMϲ0bњʷ@JloYb~O.ӓZrԻ"A6wMnuufHNN~w,ɞ=5jDM[\\7߿EeO uVTrsΘ$x'-ǻZsU|FFS_oe=PiÜ	%_Y	_z&(@scOyd޲| !εԾ#GTČb#-WJ=X>UY V~PVTsR-ן:(*gɣڢNշY:.U{nﻺM	-5ԕb\[)"{2Zw]Ɣx.I5JSSW5]à.UEPD\\4ܿx"VɘgG嚯ěq]"O	xٓ㉏ /ۭ[mw
+Ǟ6hD8L-?tаNBF9^Zrl{
+iRֽg~R&Ueo>w!ҤT	K՞0/p=+(V$$ܴV"VCd96=id|b*/q?3eK{vxezvW TJ|V{B67!\%j@̬xyEs661?2}=z65鵔??.wI\mSlK{ª"4iir+_쥤NeZES^?!k'=zf8{w_貸8ܷ0{.\4j>ȑo}ÏSsKJN<	v<R^mAyu}6kT_MJ@ۍM6gpU_ՓʮYJMf}f$R,(Qo´||2fyZH5י,E90eW&5gͲs
+oA+MF?1ѩ;W]L[VCRڂiŭCyu#-j˰zoBղsUQҳݯͧ,2Bqʩ㈛8uiD	ijXdoŞbs)YiLMaݢϟߪU+,fOZ6S2NNNs9yd~pL.SwlR
+Qp\~QU[Y)`T	<ߓ{nj燵~=|Z/efE	Lh@oZs˕}R.?Cֳϩa:We9(XUQ+XȗUjJ.\!ӶP`CoT:,@xWPkF'#veܔ!,KqZPkU:fsx^5Ϥ"m.(rkPe<=բ=O'<*L9}@rlKkm͗jedj{*T'/Ӟ+빧2A)nSft>|@@ 50{Bx.YcǎK&MD駟Wﰰ0ûgԊgYw?_Nq(xV+{fm}P,IiIIT*{3tDjt2gZBv[3xV_9-HE2'Fn`T'$(([^F>ޔ!Te(ugygyW#奪UnnFg˫$+qm5Zed;6-eOd5i?PV37ի5Ɛ\}Mn'ϞFʞ}(r؝A7=JK3hKo쟰yCǹ]Co
+ɪ&OULyM!+סh>enNx+=mUQG\ w$p͚5ŕrpss5j=|;XS}oP4Ѿpc*C5xSwxY"5hfhMaOv[잢.G-'%)S(ʦK<Ծ枯왼յQ=%~g
+ pѰ9j$\NZʋP6
+RJidpYOMY.S*Sn
+j4[YJ`5>X73%Lnk}IzLUNV*%P"]K46b;oW3oRl%i]5SV-Hl/5 C/;c=oRSܥaosݢ޽~.]2@TTԛooؠA<yRk |?yxx=Ľ+ώ]vSg9v'u
+AGB.f#l
+Lljo.vZI@X?ƻuRU~\So@o3STIȆBFΔ8jU|s8*T[LL5\JHT;ʐ*eq`>%\fgCIۡ6!ŅxsQʕ*N57Z}.p˚.d=$;͕oERZ?݉<Q#_=~'^j.+[m-:#+X>(TSi7n<,	۲esΉ{d=7++6!!ٳCuvvkC,83.sפ$4|a	yyuQ|O(O8zHsynM/`c[ TQXG=ry6$MVFY[&+~KoV3jj"	RI" a%eofK0ez]RMY0++GyzSo0RR\VDswM~5GI~CyXw5sm(Y[=ɛ6,[O1ɮ{3;3,=PwX+ex3О٭[ZjفCV
+U}ӏ.[,,,	e~bOM<w|qmSf9H[|#ljwU=;+}ƤVMovY~&?ƻR?Z'*3O]	woS.SBQa)Kj;ANVn]r8r"9ޔm	wS	WRKʞL˯f,Z΅gE
+^	B*ΡMBM:vW],O%35;aSRۯ3mǦyN皠q2}24 -Upk]0_TJ1bA):جn}si	g;WSZhڪO|]+rYU]Sxr¬`EZsr\~SKY\e5<!UދP[w`E1^PcR.Iǆb72-[7V?AAoU}S/)4&',[\dRlJ8;Ap
+s\vZk;~8㚍&,,CKWX57ٹx+.dMUt{~Ѿ}֯_ߥJ*!!!NTm~?um}dY$<',J~߆w7yN]-VzRUZl(RXu]D	{xZ3~mIYg
+JU/yCTV@8|pO<Y&$қK{͢H*U۸[ªʻ3,rś3T8	-fC-iȯPTwΐFJvm.}f&[ӆuTA:o讫v"b)Z4biELǕLUh{nkkשSGJA>VĳG_;x[ANs(:վ}d3V^dڢA4N\Rrs
+"es~FPbRUxWTFPƊm,NXV/3-WL.0ޔo_ꙺ``Z]Bޔon*=<yTմWKՕwo R6sԳdm!Qq_j<ٺjM5Vǎ'2}Uʾ[~+ZR\/`?4[#FϷ(ʀ
+}W??w>>뚤fǋ3X$SvԨOqRTm\;52qTʍw9sJ)Nz{s05}RULѢdBRUv*<YcwRx+=[jJ5MQ9Zq7-edq+rAP9gyzEdCzěZPW)rN&{kTnCpF[kjQjyYHo3zŽH)nWi\IIIK)xǻWdq
+5^HMo	5&],\Z	Mu77Ψ$kBF=NxTX+3>YaN9Gdjw#WVxS&?gM\Rro<*PBqQV0Jͣ![uNߛ6ƴrϔ-VUYo㦐F+NFLeM?";VEUa Sܺoڞ<y%{Vw<==O:eqD>/\҅v<Ֆ[2eH
+gDhH2U-
+?t*#;MƷۆj҂^RGSd24&Ht2Ü4Λi!+OF'Veȱ_*qF*D*zY+b֢#}kjIVU0-\n7~8X*	eXQ3VXUW GM Sn&*=pww߽{7{;xhQA>/N5ޮP{V+Xnu"fRWQiqjOe~V5lZ9{Г͚=ron&GBg{gs,?Sm3tӨRTҺ}Kܬꘖ#hΙan
+6^
+ICyM?eیpLyڬZpEqCҒυ	W,}$2vQjBGlvoʞw)?X챁*GVKQ"T9ߏVtJ_xONNC9Wb'퍙!;ϕ}5% )Tp|prj'cϪ,Bk
+B]K<VLX+E}'#4_TtZ2LLA>˄NqQ%ÛʽW"3;-˭KSBRԽTUx4uKZ~4KVH3G-fn	nbʟopzNJ,{ ҮWݭ}U$7􁉷
+mmllϟ?xRx>@\Cs$ry}a}AS,W[z]([hE"-\]!Թ3zxUN/vX0on~%3,OsgZڂәU*GHaOV%)x	Y()ZQLp*0mX2{H^y&NpG}4CelmNJV=6ڗKELqJx8q9XHnlK(^`ͧצVy}Lǳβ҂jJąCRc3^P(\ ORmk~y3}~Vݺy"LT-.\*Lzfj7a0,s%aKZ>gT%dNUdkd4#Tpղr߅3z
+w~p94[n8fU~/p9*tr\Ή҉Z_	S+3`5[süʕaͭ}qT$7ě\Jf+Í7j׮ӫW9 V7p=_`l޼y~~~4jN{اN+WW-ɪ
+)jΔ26W&n!>_c@
+cշwU5hBmTaOU^T*5
+bBwԂvbh+o	w˒V5XgJ*rO!zFr|P<mz͐UUWw	2|t)n+}gYB+:ck_	0ŵ*Ex3ܞZԿiwq|KYDfݺuqo9rS"{SIҾ1#|Cǳs:A
+U>T!j9f	Jk#r?٫Zۺ	p8W+ҮnɬT@#+z=mUiCaAx;@"((e{d9*v9婝$:faMZ,\iWtbhi-'QOi-\O]0!Lg+>oL{oԩfO%n7p0ݻw1BBBf`Uvf韥}%]{Y|7OR:d>}o&zM멻/fϞ=wܿR4}&	f^((O'/Nm?Wr|{/>`KG6Ų4)R*+(Ct!']e53)z'\骪[?HCӴ0*9xH~7r0Sc=ϛꅧ4r{m39|x+UT3f?=w¿؀d8ͯd2dK󴳳Ý-[㿈\"ʊWW_}uq[TTI;=H;!toz%$e{eqE杂4]rH}mVMgxov۱U|vˁŞI+N\#5Ez͐e9YEP+iH5U܋TLBWTLR#ThYVq+sgBVPckEiq Y훪ѥևf-jN
+j#P$5$hB)++>o8995hЀ,s#s\bϊΝ;!{j$Q_6oo/k5>1oŞQKwUBz4,R_x
+?&N7A׌"M˽~X3#\T=aUMfP/ ǭ|Hrbt[TV<*Vu<
+#E&ǩ*sm>Zt#!:nf3`:+>o&.߽{j&3uس GqGq}_Od9`f͚(&㴧BCz֐zFS#,p=st*m	͎̇
+h ]Xڭ%ɊƳRB6YܧMBΌЀU~#UӚ?87N}EPmu+jvmz?G4DJЖ-[iii"L%,הfggװaO?tɒ%ǏѠ9ȪUݱ!ϝ;GoUoZ^AwTjdQ;4~Kfk|RkQ],j:S=&Nm͔9/]E2,w,VW7u]RJT)yy6xŁ_$͛Sz/+z7+@CJa@@ =0
+=-/%$$4h7..ҽ{o7ʲnݺ5lذR믿)G}sbѼyY*\I|D	RUrz8Mm{Sp_jNbS[jg#Diʽʆ2NEyUŃ0Ԡ}f97)Ui
+Bs5"oehsE(h%vGR_K.w*XNw[&5z!Ɗ.朆LW8EG^=!ܹӫW/Lm۶y{Lx5>bu}$cx]	]jzzݹ/KGeWj]7mʺj"rd뷻Y"nsy-\;f]҂_:QEϪv<kU˂iשsV	)
+|b}d~_^6`̋Ξ2޼س2ػRI{U({@]?nXו}F.2kypCmYO=w6+1k%N	{+\r^^^P68ݜ7803L<V&/H=ft\X.BJWӤĉ;NZhQ7X%se5=VT:{J`!Fg[vzNruNX-8<\/WRP'R7em{.jɷhS#3zN*ݍ![
+ըEm!A(سٳop႙˭[FM8 Zfh^S8@23M}ʳEzx;yYKerabBV2dZmjX*o&Y1mİ4bOYRrI.?%m[`uZ"E_)(/8VW?<odoq_[]ʵgQ/.2A*LV}mS4[ۦ{ǜqKgxYښMD=e	,=wرjժ]vv%ѣG=woS~RRR,9=`-񸦗'ΐqay	JjZ|nXo(,=pan
+T`Us!սꬑ_͊/+.Z>,sxq"}AٚmJE}*]`[=˹+/2[yTm*Smٓ.\kO	=k~~~ժU5kuch	>\rݻwz
+ZC}O?$x3*|roKԂYsJ5pT-NR%i՛h;vS^[nСC``I0p$\[J=([V";iXqྠU+iOUЛFycSɉU>2~,-@9F+fP:8O)=-GDDD5iҤN:kzǏ[klO><yto߾2DgϞ9s7%{'t̟#k:b%mZ]r$-x3l/_`05jԈi{2F..mʅUSZpw9?R3rhsQ=/@CS*| lWƳ빧f$KHiIcǎuvvn׮hYaaaZZڔ)S/^Luts?2⃠cǎ믢ŋG:ɔqO99	Sgɗ|}4̺/{'MqJuPPP=q]|,4czX9TIR\N/Pj̋ʈ Ғ0!KmP
+"8j "ƞVu3gFrstd2(..f;w>q℁Jr
+=zPW G| Ç}(|;=Lɓ',=Ꮜh}D=3QƧ+,썝o<+g'7'<L]a?j	gL\4մZLÌg:e	8@W
+*by&%U\e,<2xG̽GM Aal{gΜc:88Jfffc!s#F5{I-`0lQ UVYfH))zém6='[ܵk׺uJ1GqN9+W{ꡖ7Ք`uWK`?=}9mha(}PΗYJ&3Y8P]|+?{"sJ#ĞUVcǎy/BK <X%_mϒ8z(~7om^HeBqq!SMa;JCC<t #ٺneMiոmh|\ѡ^6gz+xR?Dk'֕Mn|h҃I2Al{Rbbb&M-Zdyѡ#GO8M8p`O5SsyoIG>Xu܄;&0]l~s3T\VwGs\DZ"*R~	El{1_`Z	/ D&V8	%~E~k׮|I=˃6>}J]Ki7nX2e{Ijs8}tI	vc_u7^<ѮpYyq@u\u
+UgOzk97>Ͻ\is<VAEZEj"
+R?ǢZM	憸$o;v_JHHo>ƍ{zz6ݻgH<={_zuٲe)G {yyywG4(n)qvQg9Q A!ǘ|>i U?|4)OZ+[&Ƕh^1{(K]cq'OH`]ޑMbO5;w ɯg{egg;$SNqBMS;ћ7o]|"pibaz1n!?ﺛ/M/ 7SSU*[j6tJgsAfH)X__}͝544wڴi3cƌm۶]pmOKP*ёMbOq1HKltGݻFGG߿o&MsNvl}m>lUZPPpyՕ+W<xCǉ)z5LKqRTo/\Ր}Uu
+H#WO<Q:`ZzrppԩӪU<l0Ye°0<?b̴G2-AB:Ii6oss]3ݻwY
+_ϛ?~a3D+/^?6UoݺvٳU~ׯZ#-\|:qԹ4پ0!?FV|'U1-NfZ]xRXBe=y{lvtIEI;vP
+NW_Iq9jժm۶ӦM$r3udp<{,11qƵkמ9s%ia@pܹS7sg"?}ԩ'N@^QNձn:͔>),,FTŽ{v/${CdW"U$&AQ3zs[˽+_yUǍWЧC,W$j5D]|$Q%`@F}M4Mlь3³XVV?!k&DOoƑ~@ ܹs 1+WJ*}uyuR\%{29)i;pϊ_ڕ>|Yc't$Q۵k/j S?`ڐHNX-ZcNc<ի3O>ݺu+=LHH0%|\~sW5SRCS 
+%/g>T||<h|ܿȲe+?<'MR\L{ލۉ;] ?>f̘AD&~^V$=us_~%<=/l۶mܹ&SL322D,ħ0t#G4GibgΜ11D.QKΝ;e=|Y#0T҅R2dHٽ{ЭZ_ϼ؏r7mYe<Dmذa*UDm߾=|WIJ(Sر7\*{^*]Fرc|믿*b.}4YS?
+
+
+( 
+1::ԓ	XgC[Ԗ%;;#ysEpg0ZkKBSuwwo׮Ecuܸq!IԠ pIK\	XHIMۼysWWWhpI&眓SָXA2R-ʌpLib4p2MLW^f!>eϺa襤$]_O8a#P/x`I1io		_$Cby0ٳ5jTnDʖ7nPӧΝK/ݼyj@f
+6mDCTkU׃\JfΜi-IG׮]P%E=jtOՋ^rXSAemȃIԉ'ߟITGG@&Q1c$Q%	p|ALLL͚5ʮ[κ	(&33[nV&`xi9ZPxvǎVY}fJ?~|Y y!z*baFEEuCES }#}qăITH~\׸D5j$Q%,{㏫TRz:DGG޽]N3
+<|J6mْϐ.[l!0ĮXΙ3GqW.]Ji7o4j$ktP9ϟCގ	,J`u},mڴKj`Zj`IJ0@nܹGǎ 96kWRd!=YV\~bz\
+&_D\txڵoxU#Gh8pȐ!NafEVV֙3g};Z7n/\]]4hW_ALD$RbC5lؐZdFMVF"		9/_8q"jF{葠X!qƌ?E#z~.Y	J2®Z73 b>tֱc'OpЮI^~,D7ߜ={Iٳg\T8nnnl5!!Ϊ]$x''4zSHAR+6bq4#@n9)OZ ³PՆN8a!	P\\L>x?==}_~Ŋ#-߿Uj%@366V{@'Od^Z>|̈.m]ݻרQ#44IߠTIb',^bb9iy:i$/^ 9sDI-]QFKo߆$^;v@ib8YYY~ g_\hpy
+RRRlBCpn^'O6}IT\ 
+#cD>}+v]`c/TޣG)xQرcmhXr6رc>."Z#:C[ϰ	m*7_<V`qW\c>&_(va#T&D-qƉ29{lӏ#޽{>a.]jgg !!!5kքDhݺ5kLWHTP̙3w޽~zM6`Sr!A?^<o۶=\P1cZ `+W&#cСeVN<y߼gbϝ;wiѣ8Qϧ!I։;-?fdd hCzXҍUgLy&IK6mlQ:u|||lmmmll`o)xݺu+Wf[`ϯڪPfH왛۹sg777{ᘮAAA;v6lXzz#EEEt\>ŋSS8`!4=*
+2APƍMi)1!?^,d*f_t(**Js/lE@+V@(_\8NDϯZÃ-aƺ;::֨Qw,ADbAQ*Dɓ'Ϝ9ϼk
+C96o޼~ْ݇hదW؃Рj|ATYɷo߮(ܠj=ua͚5P1.<z_6aTx4}.{K,x]92l8q"=d-0$0fFxkժ{:a^l|[`xLDfO͛a1P]S|F)mL*d:ؓ0~gn'kA'NP$pyȔ8pB~\Dk<Y5qa`?>%F!|?kYP8F\50˖?ʊ
+ʞZA,`3<XhM"!t؊xISqQ=>t$EYw<xZ_򵧶l٢?[,1t<~h*:ߏuu_nb[@޽mѢū''MT^=ggg///IV>ٮ]zK׎`"A=1w߱cGCLAaa!+WٳX=Fb_:4hArr2%c1we?Ctٓ(݌g`9;Hf}͛7E&
+"P*kby|P_X\`l7of!3nڴ)\}=TRN6a.]zCl200١CR=L{i1 'එ
+._@qZtȑ#TO+nݲVM)0#Bz^h9`	&5Mgu^^!l'Oz%e'1BrKMA>*~z*pf 'YnL1cƴnݚy>8ѥ6ۻt钚
+N
+
+8`*{Lխ[ֶQF{ȸtuw`HbxNk\pYR ℔*o߾ެ0$S갥Q<7qHffkG;gΜ1.|}x^\\$hO94$]BMtyiϗN׬Y;{{{D#i	YILcv	
+;
+rΞ0V;m߾{Ͷ$		.+)[0|!+K=HII+QÇ|1,}0<4G[PVnn@oяiӦR$dә3gZwHqbrsscbbyVnnS/"iKݪT3&-ƾ`(	cgS.!!A~ #?W'<yRjN=ϧ5I\S˟ "왝Mǌcx:g`Z) ^itÇU)k?uTz­x
+ްa'Ss*A1W^e{E۷o_vms%X=aU[IIIF/܆>5	/Yfõk @|!r0epqBFŪXEh~+9	Ca3W\[XJ՛f5kʚCJ^aRࠠ (MHZє~{޾}{ر...;|`̗~onȑ"TN ]n/& /]b!d&ۋĘO:5ydw=O/5<~g2p#]%*|92t=M/ǏpnERDԹ蛦Cy(nnn/rrr2.CjdF҂p<˗عsgcdddi[夣;w@܃-KLNN>l*ի^@>}m	˼] rQA=Z!b_vժUYD/}p.]z~FiɩATSk	fb;j֭[ZZMyիS	/ ˞Zm۶upptY[^rK;{"i-k2 D.7Tffɘ탭cЉ5Ql hG'ƥ
+m`%?@/x%ri@\2p$>;	Ҵ?<cǎ1IFQ[K Şk֬i޼GPP3|3ܹs1Ǭgh֭Tѣk׮Ԡ xNp-1-3ITXE֨Vj𼉁7</DEE40DDɲ1`O5ްa4sܹrxϖ=a
+-cX	GGG0)BiaJ(0{Jy嗫VˇݻwÇ9s&C4
+#8p!\MPk0M"&j?~d|e #j,X裸8`ii>y. ;+f)e\|"έ[Gt2dYjxi7xZjSNDk桔H)Ñ#G6kޯJ|7C\V.4K{nSi	$3|iن[2
+[!}I~TL`-7o|k< t-Y*O>mH߁22~ܹ*K)	rر~~~">H7n(p9BاO?5Х.4Ӑ 5׼-ؼ30w~)u3a5!'c؏{5[Qll,\zUx%⪡?)%>bv5k|$|.]`'=y({J0+{½lӦGΝjY~Æ#zҔKx[ςXrxR٥۷IyN?1,?OGXv!`O^Cg%8|k}x21QVZ}@Ӭ%Nŋ\W5hЀ<C${\?SP$`&<zhǎi6$v۷dEiF~iҥK6aT6/@g@ѣGR<v"jD(G|N FP&*^%K<Cqcٸ6Ν;lmmA:u0a3Zn~C!x՚r~y+=aL@O-[5j|9kQ >L_;8q"q+-՘C:6"n;M<zȔt&ra3EYÏ"xc;?~IˈY(:.e7#r-_LI?BXw.cǆIׯςyy&K WP3	P^[CP {`FթSg̘16m4i;Ӽys(P///0skxԖFЧ\ ?3qY/~JH/..6U9/$Q([|XjNb- fot|rrUZn߾mx̟su׆vߧOgJ	`Z῱xE {8zh.~HӦMkHT}kʣg0ៅpqhZ`{L7:~_UEEE+Жϳ}	DTrr271zZ9M?߸qcqqqmeMkҤM*UPj:IxQa
+{F۱cG;}$UtG	bgL݄	(FZSA[ߍ7hxЪ?c\O.F% `p֬YC/8 24tڵ<9
+5."J"64Çq~^~e];wnҶ70hY?ƱgAAAΝ;q01߻w/!,ybkfŨӧ~DKmVę3gXѣGaR&Ol{n GS*`o;v,t)sԝì6:C6P	|e荳!H
+?8,Ǉy%e?bvP姎򉲲',p1
+\+h"*?(V\Y"w s,=^EGGS}TSðr]3D,JJJ2=Q,$UY(oT,!˴nz|kt٣GⴰK~֬Y5CgKN#E̲NZ#fׯ_os(mzJ(',ٳ_yxw-Vo;B`N:-X^Db\Gh?{72sΥdONeZI3fhz*~w*<3hJ&/~&mǤ~Mнԋ~%s1oɇȠ~C/(!j 2eJvZllgggooZ9bQuÊOCBBp0um
+RsANO>dȑ6/]~0hD
+#d'xA'&^͙3}`Bi8:5Pnݢn<(Q-Yah~n*>&a,u޽;[ҳZre)DÞwޝ:u*p8lݻwǏߥK#G,en`<Ǐ)^Ma1||G|v0z OQ~!#9sf́e˖Q)ݻǉ5:0[D`{m۶R- d_QPP@wF8	S~z=suĉCCC[Kx=^GvեΝ;Gy)SK,Q[G3`\\eJ׮]|Zew}:)Ce
+wܡM^'<@%[WxsVVe8pAc1+6ufزeV >222))IsF{B]${رN:`OCC~,Da~IV\q([UA6$*7o6_1#P\\z"9j(tR޽Nd)k2CY2/MCp!sP>D"d駟zy]bccc \bXf̚A=n8zIpYAFY 8-d޽= 0'/;aki=]%x>	@F|PwϞ=ݞƑMt*oN.
+ȅVSƵkX#FvbZۚu0S;va?=z`bOp-Z0בO&ѣݫTR&L0`p@܁Fuxx+Fk6G|~daN)0MV)C%iP(,q9).]F?{{FFX5.
+A6lX?¹ZpaHH#(g)/܎l25	/6~WL6̀ xVߙCEEEo6rH=Rޮ^Ag4	tzz(TuM[GXJ˴o]iAvXu:	܃n>2߽=77WP})o4
+>NytqqڠHKW_}Un]k\^C۳gӻJ֏u*XsP*!ҡM(hQFK0YJ=zXKQ446>-l1(4u%.H+6Ev@
+ϟ/?%Xd;ݷo_bOv˄	y O>22211d9ըQk$xh#iܿVZۇuvƌx!
+Nal0*^2E-ZduaÆرL>>++S`֬ǋ9JQ^?U pAÇ0&ۊ8@0cǂ7ad0@=ׯ_f8~ЕAAA۷7%O~W\\\U_`"Q7خ.]~)!0<De֭Mqap[nРA^ӦMqX//ݻO:uT2p#={.^h
+(S?}H<𕉏<CK JBKl){֭{7Sd63g+U[`LHKKkٕ
+>kȐ!E^G}xUj*
+@F3gCUf6mzgrr;@ٮ]_~uzW[bho&''g}	_:bxUVD8p \%M Cٳg[_NO<ӧD 4يHOOg9'
+|?l)_D`(֤I}HZJ{?HmqLp(ys5S'(?#_^zpax=U@$c}WrelE	K"cv!KT֭_2 
++puue॥K7Ef̘ab,`:p0pzOy Sv`<zo߾j~~c!OP>L;w\jdX/ޣ8|"DXqэ={R102}eԂl|ʔ)lٲgϲt.X'%U׮]aj8-[$oY2$X6p4M&}bϛ7ob<x?rHPob۷SSSDmѢmhh($AHTo3SJ}YN3$!v֯_o!ƚ(>|oIرSZq7~xq8*sk.ZA2dUWr1N>xҤIT	,y)W^ƍ94h4d=oW1ttVT|r]vZjժ7b ̟?UVUۆBʅ\ӧ<=(\3g@~p*E$*u͛7wssDY&|Q&Q!{qRׯ"L߳gO`MOD'^2PZ,1oŊZK)0L 4!%, X޽{c~ꑓ%LЕҩS'S{{{xs8T{i&vN<{5iJ*_~%ѣqc}=aaa'Nw1p p.BE5k֬Cw43n|0\eRʄ-[;w$WS ::Lۂz38{6]׊(iӦ?^+i+7BJ<zjo>ҽ{w___\|ĸVX	]vo|sp%G̮ʕ+Ewܹ}6.j0x5"PիwY LU8fje˖$QO(DňOaݺu39']L ) i=p%l~_weȧ(;c<|Y~Hņ8'OW95lV4n߾vVo.#`^{5]ˉw pBp+| b޲P^mDDʫY8䳢0響PLI2
+qmۆWؗ	c`̼e]cˏr 4_P)&65/_;eZ>z(2YXX(Yi1>k޼yT8>O-
+ptt4>퐇}آʬYv0}{3f|Lcgee1qB*:1k(f,
+ͣG~w!QqsQAR;E`OfO(,bЊa]?C(qIdm3wnӾL7v$Dk
+mIST񲔺_~]Yl}0>?RPD-	,G ߧOMj~gϤ;;;/(?-['jǌcPV8c޸qcϞ=|O>ITSN J=Θf]A4n8KBLjvlgtbƆBEQ#%xSG~a0+wa)00uԁ<yd؍N:x{{VSxi	p+u3KyȑM6;իW	X ":v-ZDg5
+{$#cbE,)	#<x9Fk׮]+ӿ.[{?'Dպ*dddlMq޽ǏCmYpVE+M]a]t/700?/6@J>^VZ=T`oSv_Xbˇ
+
+g!\|+wɒ%;P\LC6*v@G_L2>8X{;sҼyHpi9uor
+X1ɡ716{;bPA5uuuN$PzuZG駟MG[Lbjj*,πѱnݺ/gE9By!w}'8p9B$1.a1:~7xϏ墂pHp`T|}m{رC=4#,^N4	;st]kJ Ч.	Fo<OOj?1550ٹsg/bB~>\K}ygۛWG@20.:v''zA|2Z3RuiOZb!㧷9$*hWɓIvI-xJ|(/pC><fx\	(pKL.8ގ+Ĕ9	2SP'VٳgvvvIIIJrذaZ bŵBdϪUb.9S9++8_>Z%aP^gggk`,Aǖ`	_%ŋSyk5v$`a^N2Onݺ%F /Vq&z)8	שXd	[\/zҐb͚5DWNV_EJKV''Wd {5@q|z۴iӴ\	eByAIC
+gLeLDFF+c_Z/Ǡ'OԖ-[aLL|0b$luQMIFtoi}с+V{ŗ ظq　 (#FQqݳgoo%{w3 ݭm`0IUL,PȊ+KH1xlxx8-U@(($61^>$33hȐ!"p=T8Z$@Λ7O臠{;^%jaa%[k/f8{ڬY͛7=(Pt=_/^zQm|g_DsS.((hΜ9<{p{<ĔƑi=|ʕkkJ=xbPyf!x&Qa$jYi `p._\b_İhte>(|v>	NַaBiLfgg.p#ZjZ(Dm]y(/WPw}GsZS g<N2}bbS8Ğ9X/^z@B1118QPժUDD=~֊@Νܹ3Z2$!qެS)SȾaʕ@S=a>ݛfX/_pl.i6Rq!Hɶ4Wnj.0\bbÇ7o9ԁĞJJ4˖-3wLܹ_TZ~}|^pyz{{8bU^ --~KDr'*DCo;{#GX-hPT6JŅ=,% ~~~|>t<{x?'~>>>0hĞtKL;!#cH➞%ZÅLu1=u@@o.^R&O[l1.ė6*!Qq͛7äcR`"A"" %K0K/5***''Ǭe].NOO';Z!͊BMf'rWXAE'mԨ~Q$HP`8^A				n-@^^^p3pDPP&M%f?g7nL&~V\IA><пr}g4~޽{1=<<Ʀ4n;}elH A8^={:q/ֵkWPsӦMLS2
+K)Sdgg(QAO;wZG}D"Xj?,WRy߽{$5%<F&r		њlm	$T#
+/WDDYXX8l0||0Ll۰޵k׆b*QϜ9 7n=BPZ/[L*3ihBAA~8ƯZa]$H,"bBPgϞԡݻh"&Q5j$*?OdbCa!S͛+V+D={0c}||sUvI @/YCWw0t/`1ACڶm{L֩S"$!C)΃?Cj]"bǎ#zp5/,њ8LۼysOOOC{9/%A"4eM20ZpԩS;w/x2++t
+ĝ;wfKk.atEqbF<<2L?}4&&M
+d As@aÆFFF:99Aonnnb0ui}ou}뭷L=afܻw:9ȋ5@P7nܠyʥ§9r9sN8A=<'nԨQ6mT Kv	$qCa'!9)L뿛d:890 >&Q-5:::33SD5j+巸u{<𥬻z)>'K̪@~	$H0D5_0DOX.*$jz -yDR~Llc:CՋZӜ.={?&!]YZ%H L0So۶mt8f~~.0_0RyC$Dmڴ)8|PPÄ	 ̱Z&1SSS}aZ?rҥK-?@{zyylVdI 3~7lQFОfF*fu߾}}墾KU}TgM/_Cۉ2D0VY$H DFUVVVL!CqXrnfqB0xHݻAEࡸ$/t{1)qԩXS"&&׷^z Pk
+dI AhѢE?lxx8̔j׮r%## &ruu=o4Dԩ6h^#Zz8	3gqM <KTmq|A3Q[hASE	Q7Bh#7p6S"6ЪUA=?:ps8v2}?vF\sݏ&NV!qvF]nZOOO{{{$ill:d@9Z$ɢ}SKiV1իWu9y/FnB|}x¤555:+E՜JQ?JX]]]ooY,ʢ"ѨٳgTJ7_q֭[:/_g2t:lmmp]6 G92cp=M1MH
+WCri 5j~ruW;wÇy{n~~~xxJMtuv  
+АgbrKfݟ>}Rb=}Y/XiH~͜ﺺzZZZ4P<C	RTkyhkdR_5h[[[>)۝HoެV F湹}eW\Qp|gff_ST@'Oh5ȎEOKKKk6tJ=}.M^^&E<JQ]9Oiw||ubIfG|	 PEYPKM>}x0kjjEQʎE}VWW,ȩooѥ+=E5^pJQqccc@9::F_zef2_|(okѢʆR®.sd28Pv,g:b=}_ܪD"J5p,M౎JQ...X)51v)?uΜ9S[[t)Qo⸙FYr@`xuyyY`vʎEO ٙ|rOO){b	r{oSS}ir;uuIQ׷Eooݻw]!դL&r>z(HhWSnY |=z*רVnX@EOCRGݵ~,o}.-|N"۷ou.]R^Ki~_\4z!Jijȫ>K=ellLF#%߾}sd2IbaaAŌ卞ڷ߿?:Jhwyqq1fwq=<xkQz޽7p=5_xqhh(ON	S`ssX,?Tu77 N%zYNqc_7M=)=N={V]ݹsGC N.xoxi"%'   xlSz BoSz%))k}X]]ULz}* JB}{;\t.*  @C3 @8
+;9x,R (Zc  'b  8\;Q                                                                 ^
+endstream
+endobj
+10 0 obj
+   56348
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000057363 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000057338 00000 n 
+0000057428 00000 n 
+0000057556 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+57609
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png ns-3.21/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png
--- ns-3.20/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,307 @@
+PNG
+
+   IHDR  j  1   C   zTXtRaw profile type exif  xU	@UEJ(Aʷsd>eOx5:<,ͰBDzל<[gG]_Xnv۹|IlQ[%FIX,NfA  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="618"
+   exif:PixelYDimension="305"
+   tiff:ImageWidth="618"
+   tiff:ImageHeight="305"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>   sBITO    IDATxy]ey6~>;fx!$@+UpCNoUVhkժZ b(`1	dNy~9{z{zt7${$9쳧\uM̌2,2ˬ%,2,>3,2,2,232,2,2,>3,2,>3,2,2,232,2,2,>3,2,>3,2,2,232,2,2,>3,2,>3,2,2,232,2,2,>3,2,2,2ˬ-e ت?g7ٳ@zo7WVrdYfp#fήBfGd}'h` is$I(-ԷO|cqu,2Uj'^/:   {
+ "`u:`NC rҟt'_DN̑(,YS?A뜗ݦ2,^19HmDD0pRgD`۸ ˰k KG ,(.9µmU_}7G
+	>6]<Wfegf/o6^E) E RA> 	JX !k P9H̫*k.8Feiթ_ȏnM6	DIp],22Y´4i ZGYQ]t}liC+@Gm !罡|{xzWg%U'>iW9s!yeYS*o3;VW$0$0if&؀V J9Qgw'J,WDRJ}`cZ1q lFQ<Eml4fYf(=_Aq DN/:TRIaZYZ,@P9]d%W	;X:: MH!u{:N5=,2=N/Uh]		HP
+.R>H	M‘ ؆4A 0vTۃS% Ю98Eο	@s(0Nb>Y;)יeYemyf@@H7£ذh%0̓4x+PӉ:N!{|@';O9:va{6zKVUYf>3{VIXjP6)ʈZEɤ6!r@.
+/T\v
+	P!P$09h2sL`pw:j{agYfek} G8!@ *'l!ك:MViN` mfuq	:q`PK@\:	 l) ,&~;ˤonhG복ݿʞ2;v-lذc^z3D=+Ό}fvd͉cg^"`^`WID
+:P%KXU\XB0C:iT&)5Is4`N< cT̵|~}&NXn6OlÜD}q%k/<{CN?(vX\}zi)ť'k]g5 twwӟ^j7pE޽;sɛ6m,s̬}\픇`.^UUE 4@^ePP YBD= ٮCZJ.Mt 8-ypTGw0`^pڝ~,/ֈN: `dXً|׆ڷtV}ىeZiB"\\	kJ']XunmUfZm۶m7nܱcǚ5k ߿syO=o~W^ye>3;f<BғBaNS&H$+IJAӁ@'<xhU I@:QVߗY1?HZuHI [ `D}ffzV~Nh.^s[{nDkzF3K_z
+Fe%^u5ӮM|4jl0i(|ǺS٫&''ok׮\ 3'>q'n3,=/~T!:ɀ@*XBpPdrók[At3@4}ari?z1<SSM׵aB+@! gZ "H?r޷J^Tн>sr r^n%ĳ`ga+N\IfG2(YgLm3WG?m^z<|+_R~C:ĝgYi*KQ\R =VMUJ yMY	:]"`V _Cz}$qyV(0rP?i=v$8=TV	ޘ%0Uܸ1yIj[܀ky	 TV 4 kAm?ic%Ahm?T4":,i=xoݺuppK_[-[<x?~>3KB3U8WDa!е~TxҕTU{QRp!<A5<!uOJO'{h$@֠D `}Mf6_g
+XQ^*1؆ r\ '+E_	]]3
+P>s1:߱'{3{SVu'9뽽-˺ꪫFm[q<0XdXuXPۇߺ@](-Dy*QGe9J6f%I7pAU̐u -e7)U♃/qZQMaCu A `WaAm\2h;gy'|l)]Z,Cp0	ۄV4u(EŔ6@e`KH X3a6^L<ެugOxf/|eYRbxn۶>wc33bt8qLm@K+(Ge%KQZ *d޽*Dۿe\Ȼ8OD-#rm'P{	H!EtNzHBA1%NxT@.ir4Hs#4;ܠ_Р(H0m'0FagtҚ:֜=yW_zK.wyxV3|WtB(v``1h(.DiJbʋ  ɞJ-rxpeNT@ 0e =zQօӡU},Z)Kj'^:QYD/)S@;7aJ.MJ,vK9r9P.`Xխ$~~83Y'a(mG?:00ps=_jooa,jեg#qS)pML&(C0PG(/Ae1Kܩdbw((eϺ,~8}w^F~e:^*.r`*!mw~Y 6)A"HTrN0A4!orUU)nu@%}0®cHQqfv#CI$B`+cE~`HY#5k>@1UR3=6ؠЋBT(-Da2Uu Kj#V<Udk LRE[ *	@ku`R K
+Ax(
+.>̐:@ȕGA|%%=a4V{>6]>\'Y;̢
+RRab+T	LPjYKQ^R?*Q^"JA׏vbuw^/FT
+Q	(ct
+{&)ŋ*S(Hh92*ԡ..
+O΍Xh%Ԉ2 򀁚%Ls[ZOYᯱ59}PZ]gl}wťkVR63><qSʠ44
+L>Ty|ԏΕ(.Fi!K`@".p
+סT3NK=x5GM%^7j!9[reCF;~-Jݏxi]
+<Y>c *	[qU.]=6YC++еc	D雫O1t|ie[NGlG{8"te^+,=пūʫ6j_1g<~%}f߷t`/viF+)&K=U{T2^6ZVtrn:)ZK}6EMa2+vJL*ª n	F gW0>kVx<>ti_i7'j9iEPM텝}	ga<*jaAz^o,
+3#:XCaPZˢPz9dmiɥ+7-ُ7DN:蕒3=43kR's&cuE)!Xr%H*0Lv@J]Q+PUwO^' U͚7vFEmіGPpNo>Z[Y)vHUhڪAhtÜ1[_cʡizRގjRˢffUEuڂ+>:ԝteJ5c&X{2u}"Jv0ne{@~%Jˡu`"-| ؆SoGA(<SS(=P`ZAQ̡`o:]
+`샾vEwjX<2فO^A{R	3x)\ W"
+  T1HG}e9:2 'F	5 (vgzǈYϩdYؤmxfj"`ζj9ԆLziL
+=(,D2TVe(+J-N$VzG"P^In'#4E<NikV\-*jנ.ō9WH!k_EZ%Z R2!@E0+St/[(=]*(TZ"./$&mVսÞ=9j㰔|&+x`p_
+RuMApv4a'$K0׺ɯtw΄J(.@JT U!x5'9*BsÛ*ݔ0"QQnd7|^P׀4MLN~(ԟ$
+
+0G:fEW)Z2 M<|)"^2nMu>Dn%dݝs>IC݇ {LGC|fSRLcXlYaDmlvx:xQcQ^Ε(,@y7UW9cxJep r
+wu
+]&ھHBP. Q.I$/$!qN <
+yFN6W2w?r^#<DAY (fg~Ԟ`Sh :WTƮ]m"}}<7woRTgW|G3+,d[/_2@G2X	HBB	01LD6Npz+6>lCq!JP^Rmj^c'cmBARVLWs]$I(:y$n9tx\(V-=q:H*cR$՜U[J|d{n~گ!ΡdUr-_vU,9/|6l p7~}g/na|fvy43n.V<|қ}i?)-MnJ6q lYf4ZX
+c% 4et m`Z	$q	 aBRDȕZ-^ybP$Lj]uO*-©w=ؖlZTPr<Nxs|d*mkrPw^.WZ555u7<swrg}UW]uYg_{k׮ô2d"f[
+lD84P[J2b](QL0
+Y3f\}_tc	c8fLQ+"׍Ε(.Di1:N@i!r!wq| []g~KPZQlwpΧkǂ Kg^
+x NP/nZYEQ,3Y@ %T
+&w{ EeG1ŋ7nܸ{5kl޼YY+jr9	<\^[8IqD2
++=#fd"gN\NrchZ4X#GB桰 4NP`$6~V2;)mewVrZZ@+G\Q	+7i
+帰QXi֡A9> c((ACqw溗N.,:նƼ,C~ڵkWJ4U*2!v*qR2q#a4(8k:iFXub3U(̨Qу7acfhQGe+_}
+T|2
+ ⮟Z&)Yj*޻RjAc!f鹐Ưsύ4U "2Z9tz
+|JR@%EylĿ4ѝ`AW^{q(#ڽ!ӛ{_/NQ'?oiiXZrJ")}:я~t۶zx χg>D4V̷_M0n	4Toyiф"E	G.,<6şl6,F6	?\EXȣ绕qLOơj}w8G+ Bb`)2MjuLJk2D!TDJ3͙f|5cgb%V*Dg؉TJ0Aꐆ;6Qct	mH"ۚx;#?	\.'%f-3ӟ_jcq委Vn/\~|0DtK%_Cӻwҗ/nٲRqg~eI)B033~{IYV'ZӷUԈqLw7\#ܒn[3DEt, 2VA0PƚƑ^iKl+mX:r!J8E peBmLP	BJp=DcyilT?W*.EH<4;`N>0z_)og8m#?>j#?[DPfffOȭKC	|~o"ڧzoo﷿wΟogff~Pmfs7kv6U*|lkMr|-^>:8I,lCCi7Ѵt	?XeҌ3.ƍ\_SEput4rhyo'0WsĘX<cBm	kWǪOUHs ;YR- 
+=E]k]<G9{۱lpuj֪̰YM,KJY,qW=sW"|uvW~ݴiӕW^a~m&R<e6eC
+qX	"eVYS2ً:l'Yh+Tg$ix    IDATYJq8Zb%eomxcʋQX*,rHhϐq6\'gJz?p>$KNAFp(T6lA*m٧s[4?2 jW1m6s;,ǧ9PM'Oѐ $}({dmLD}AS*&`*?)]W_}^tҁ/}}}w3_q[lw!~O~E]t8nڴipp 2;ϴ^a-th;g-@Ab(B1O(d`GQB숯ԶeQ.SEHD#(~ڍP>&Iy\RDi2  Bx#؛3k9Gm"ADf^55t8{XxLo57LRux>\X(*}	Lw+UKp	!@Ҥ@%P9=@} >mG.\x~_{/?r'tRۏ+9m۶7رc͚5 9<çz7͌}'ljxGL<83zte-D3d93|2杂Z=?EmQT%V\-(zڑg;NonoԆ_P2݆Rr
+ߥȥTR sCCډ?9Ci6@s ބqKʧTPHE@@U%"mPb%ƺˬ\pTJ P=i1SY{aY臭t}_!FD{>y;Yl`Y3t0>O|':BfM?-Ei%P.U BE&Nhmom#L8\J'kP_Ai=I+iN7hAF}(t
+NQ^(.BRBh!տUIЭ8dԂmB+}|Yy~Op4mtco&Bt6R<
+ٻ~ -s
+TDt4ǂL%0б
+ 	lLJn{ݓ/¶P?5׽T\cdN|+R}C쐭--]^۞`UY-]*ya%$
+xH Q'>O(2|JҊ;qB#QcZFf9v[V` R`%+_Gi>+Q^΢wCeA=˫uW1$B}!iRS2RڤCu\%hvtYሪz?(_&
+Qg^42D޽PS;0Ʒً12yDߺuөַu˖-g?ϱ5S¦٧矦u_#GJK tAx&)sW ghUkn=:}s|ZbLG⤎*amא@rH1O > &6Њ(/GyKѱ>@hޚ{KT@t9V$wu5
+  v ҂ 7Z1Hy`{\)(5"+юtH7`TR`cp'sK,z5gWWivi{weYWcl~׻ujoo_9۟YW,Eu^$FU|'ǳn40Ek+Vz0 '(AK
+LBoțhc[(u$}t̼CgTEe9J\b!UrļI
+]&j/ν2]TJUU[Zp˃I(caUOiq>{OmA HGI)"
+?WPI 0 A(lm03t1ϣc~΅^m6:sY%>;7fk`HjӬπ]rnC0>rԕ؃XT61(@k}'VͦI:PuesU`[`aLi>eoEТ!;qfc \۱(CrbCD\G}' Jw=kJW<]fE&m	U~ZHv+Q
+<9\g+e00'>3}9KQ˗/_jU鱱{iF$CH3
+۪Z2C4g^NũOڭDҐy>Y%fEf/":k,22%-$J.
+
+vM	 (D_T}C91!ȣЍRK`?$-*W >ޯ"UsǸG.6WQ|^x)ް#%+F R®	ZLn[N@; tu| ÿt?NI }Yc_qةaa{9{?oxn{b bQ1/'&8֣[#Q8ňlZ;_DP.ݱv}JIp+cd#)DA69YuO,L¥_*&(1cW(?M_7xlU~Yix]5wcL(Hi@sgm9~~8].?J B\R:O:"DA9 yl"ٱ,ynkM^GfWfǉGdtdTH$tĞ(z}
+CNBr+_	Ǫ_u~Aԇ'=6 g|'&SLqwAƓC%<2OF!M?9]Ep|s{|tQr!WC4%}J$=%[Iӯuy{!-D.}ٕ''1y
+5&ށ?3^9z1Yj6v}m/k6&zSNȪLQ/!oAшR|opM^a!`%,ibHo6se>i	mHG5R+{mK=at{[^*ouL&/<7ӼY:#\#N-Vխ@hF O+1:C_v-lذc^z3<u7._\._|Żv:Ngfm><O[FթMgO_%#O#(lP@a+Q[9900 X2#̈́K4  7w,f&쳭'1v'XqZMp/ҩH\
+F;f`sJa*Q\
+Tyq_f	rn6r.{{-n( 84GNÞ``jO$ _]*L4	o}[ԧ_{Oj3<fͶ&s7軞aUqn8`Q0"1&RX᚛B"IM5;Q(xQhJҊev yb)Ңɟ"QlLB'b0Eh$Iqo."C@	2uٵ KP^"t@yK|\Qx1Q.< CZW":ıeqPJ >E1 ʓuh>^xƍw޽f͚[oꫯ~o_bC=tdyԫc~c?n2wFD}4f̶~vCA(&J"f;Q&ß;	E{:I_#@nAHrRqr+hu7
+[miKERbaiD˨ey>V6Pݧ|{.QYTQY\o3P
+Z	Z8zlUrEo[VF <3`azV-IyQ_ЇfT	X]׷nOڻ˖-[n?cc>׍;`OQSRB1H+!$
+}]}">۞6}!H3^ș&IXMX>}%ǩrvlMASɊ\n侸8qL=lFe{4~tBar(o'5'D \\p}ni@)>A2jc=ٛzr̥?2|%`8`v__M__v|6_13;ڱw0m,%r4U-"-kK@ST(185$("yCQG0ʲ,FN6\Wvtxt)J=OAPZJ<[?!8>$S#r<͘-H5b,ړVC`h|*KQrQGa}ޏ:$\zH$ u62I2{U')%Q1׻ބ$u䐾..{ϥ\xqKū\p[m#߻~Md3<#XouC"q*SajKj$zDeݼB{8:n l{0;T0(4SSK?V>+WjHHxGP45(Q-@CHꊭF0My#4)(2L9nf0'0Z	E(/Fi:V؇ʲhà ׯ"1k9fw+['w_n/89-GI۟6..{ei6<<o3<<<7^?q.Cr׾]vs9_ xw}K.nXpGaWw }i>#Zmąg}Yb	h@@bˑ6?_9wѓPO؝AIgQ@morN@Bde"Xr7 !łx2̠6 s֎ )Hq1`Z&PXa#Sm0-J)S$͠6F)>tw7uT`vO$PX2tDa:V0/eCz>$č%Uc.xr}b3x衇.r _Y[xKIyW]uYg5<<|׾]j]/t-* 0Q>OSsϠNQ2R7J|r	h"إut
+O!S&QE Q1I@TzM"$1j5q\/Cf20Iaκ%h4R8	'=CIQܧ9QE$&oBb7Bm'MoW(c9}z
+f*8JavN_ˁe(#5\7a7lpYl%C<R͛7+V
+6mkڮm0[4;̑di愕#?hSJ25CJ/=VIhl3jQs^li"Ez}GI%5Ārጩ	@`/N̇H	7lF>HHƾ1|c:ɹDplО)jAg$Y)"|ʣy&gppooFGG7s=sh+V-5T*7)ձu?o1v2CY&'٘=_ω2|$vNT󯟷e~wil@z]`XՆ^<9BDEaH/S¿HQ}`".F"n!@Hf$MԂUKhͺqMDj߂xLA$#OegsCG>H^{^{!.w]^Wt]?,/5Vߝg>ى{4٘bw>Ѫ93>ԧm8_E/Id TxւśS(@ApP!0u0FqiX&}FJpDa$i\.DqfqYćV QՕ8āO5`ۼ[`/Ŕ7&,
+~-Tm9)>#br^P IjlnzywXG=׍!my:瑶g=::zE-_-kƕJG+bŊL}?؃ٮì%w|6
+G`e||ǒڂ KL;M >]IBheQF)gG]JPNQJZ+LP{C]?#MaFߝ؝DbWUhKb('&Ŀ)V$FmHyQ33F@NVO-S|bi#y$x3[z/
+E=;t??TĘl݅곬h&ȠIJ%,yR[[gvudJE3R´BX9U&[Vi'>ɧ(iNQzґAߑo+?
+
+'@ܛ`69>?:P'(SgƳDnbƜXɐX}:z$G	Mf	_HV^E12p竝}V*F/5`W\166dߎ|HuHW̬1G9Ȯlq9J۹zʼHz`fӘnćϤJ'̓%TE۝@יHH
+`@IA_JS3mLL#X(D\Uu1?56rBv8o#L"7pǇvx̰W9|vm966v{Pb13_q[lw/:[_ӿoQESSƴ-f#iFqX/4,LnQ.۞/ [m356̙C&?&0s	]S&,G#xOO#~CnQg4oU8O&v`U&Т%ǶD$CcD2*[SiTԀƮf[_k/2,(:Eǖr$34VtM7tSXj\^ jwO:,~w.LQDO2Ba*&ֈ%ν~Z EV,,CN'NS@;tKJI٦AnO<v)Vh
+*s=(3۰&ЖhAsHuE&P"ȭ+n>mJI`N'CEt5
+ڤJ'FE6>]F
+kY}ًǨԹ`HMef1'_ϫzѢE7|8KK1(/]R MM/Ӵr)K><y\Aicj3@p63)yÍϚvvGYjBt#$Fql-0o)/zR=Af+GH^.&ٸ@*3/<X&ABeNMs`,1L qĉSnRAL)??M龕I2U_cwE٧z"Dgyf|GUklY,%l2N۠$/HOK_=6>^e_b[	ՅWXҳcR^!Eɛ!Lc:sX8H#sYDhAszI>    IDATiw߳uRRBWlwM a0(Ijؕ))"D	A*NxIA#fc.LxYFȃ͊mcr~BT$xBW)"υ,_`2n_sjX9S5ga8Q"쾁O<ャ`' Ʌd~:D;4U0rZCs.gR5Ƀ=|SH_|al2y/2\ƅ?%`UnѬR"g0=a}I8ZJ>m|)G%w9(M;{7 s`v3;1n]qlR	N.:^GF@@Dw)`M+:}bۍ7׽sҥ122>11~pɒ%g}}w7moذA-޹뮻^{nO.tdnhvxOV/(gy&(\XU;ai0&5 B!
+q>}Vjdb@7^O_t;WQBU!a'p!`		Ԧ`$?]H9iElU1^JkQQ! -@C&M,"OF1314cKhjަ)c{G%K|_˟N8h/RtdsɶHBm60(z̅C5[tO0 $,("_%(~GPRJs%-ԧ`2<E	D}
+m)8ZbHqA:9cJlnF^KxCAبxABT2sAXUoȌ8	}¢T	A)Og:ȎKRSF$3]	Td>S,M)}}{7?M7=SG	>gggo~<|g%ő'*Mjf[p%"obD(ts>DΓtW%$$U@}f3(DOjXY -;j
+.Ilu/_A#b-NsL>724b.èֽ 䎝w'SV>pj U*%Q4ʑɝi|v|gzU+/Wߧ~{W_}u__7#>,Ѷn:99yyWpxxnb0~,XB2Cs)ˣSaI1
+☾EC= M9Ap'jVѲ%].mSᤫJU2*T|%[`Y|NMN̮6n69Ko[Xtcu5OXm4X&(`jQ K`{SmjYS/DcPcY!^¼g?B=5+Vgf/~|;/^zzz޾#o~wܹnݺ|3tD~"6.7x7;#f_eժUG87|;G
+v%mAA``rur3Mxj33C{ll'oE#9rh͕^/A8!,!Vq%okhrC5TeaGa@3t M0i@)cIp<KTSCLĤ_69KЀA%	/`L	͞S/0N:Q:Do!C%Qsۂ(]~!zr|ˮ]*=!~c\)ۺuO~ŋۿ_vê~SN9e6lx:::I)a{={e\s=ַu5|__~u]700O8͟<gFџ|ŚrGۂF:ӀY՗NN\L_|*iXdrO},lݺ:=e h.u^drTV!YYe!hyY9}ҞI*=1ϥ3MN޵BKơ޾Vkql4EsZ!gKxo_R 9S$*jXԂFR8㺀h}%Z\Fh$+*W>v=+N.3z(ګawuvguֽ}'>qdۯ믿Gyӛtwԧ>uXoڸ[oꫯ~@+z.Hosd|q߰Y6pZ:=1Chzӻz~ݧXM_ϼ5_!"tC"0}a0k.`Lllbf v*s`MPuMI#l>}fN^0r6)cE1J)WZyZIc>\4XN+J`@9B
+72UAd8mPZ$"n1̔zj{1Ի"e!cҙl#9)<sGG 78ӜO?tyqٺoݺֲe֭[Q^M?͚`)~QYO!f LY,,Z[월ԶJߧ"Ew8,`j,a{^ˮ:G}n9ΝӷP~ٕl,$XIԦ$KAטb%JNJ3kHsrTtHt)ħ:MIKJU}G8çKPbJ?( tzD$4O>o$Y)X,^xӳx;cǎ\rO jYB}۶n__~\i]EӉSd6UjFxa6icWo8< <Ffi|%M(\ ۂm
+!:!Ngk84W\+/@b6P9%O$ÏTLfnN[G}ʠQ:uy4@f]$KR󯟿ds.4)E$$XIY$m{'S0
+b4K0Nx*na#
+ǻ)\%pt|,>:_zRwq׾Zn3<h?AVK==2=w0죎cl-q$Kg[]{$soH/Jqdͅ\+TiHDjU\!p䟏L~@7V:	ӵ
+G/S[- &E4'50/+۶|n=<KahaJSo!˥B49&;M^ߎʂ'"8anITLO1礁9	RN`|Q;п=\x13;}꿝?ie_vem&ʾgz9m4[?FX+DB#[2ɕRyueգCӦQ^h(t#_
+KrÓ4D:[iBtGr}-_Bwx"lR 垎]B2 }~໳dUԧ<>CvJw#XGhN'*kzDv/#T2(zṖJ[#P@DyiTTcN
+E$("	ѶWNfn@\Y2Qu,܅ڃϣ3%7\vX<3z/5Yq)'~k|] ^cdCJ3'k%<CT*OH`xv{QZ^ fo"sO#DiB6$s4Z4<~{l*QaBI	$+׵~	S"_C84RvQe>Ƭʶا^OPSiH9	MB\qrWI²*DRu5XxxjqLSImۥꐠ
+1֎_:Mn{U4%$	Nڈǉ=t~u>*N/||͍7>v8.G>kox?oذAhDrr=;	EXq*eض;dX)W~.<IK˲]?ULZ'X|!jG(@p-<2ݪ3zzO8mJ VFG//8ճzi'1S3f$!+rW|KnHO
+m.k:;z}bb-_En׋$@>}::Cu{0*}x};խ!UI%$R	B Be!_8H{lFE@idNB%d*2Tj^gsnU*E}Lz׻޷ܫngaCVxeX(q,ӡʏb\jvm#!pOЮOfyWA/~۶m7&<U6}`hLy0Jmi x9t<F@N1lmBp3*&@@bŧXLoY3\ڏK}im)49"tx<D
+ЦTG_3kFOe)8  i WaYSٿP؞U]n#]+4)B;)sk'Hּ!
+wmpc>#_^*]CߡB<p/{1Fa*X^Pl-$q$P0Ax.}D'4Cu][n.줓Nv5\s5׌E0[]L@U%m@ArnU+ѱ@'aXB]gBLjoeqQ5O-sM>ݰx| ٚ-<UM1L'1aۥOJiM)TV}!rw|5W<;VM$P
+PizH)\3E/!	.RnJV#\Z{<JWe-*q@ 2 t˶[`9qye
+ t@eYcD"Bxo<=a[cۨiIx&3#YiD@dغgOnG  :묥K677
+iwڄxT۫v!K&IqUP'۶];SztSDO6)A%S B6 ЉD
+{LmG7DhIֱH}̫5~,ma4ޙxR]}İS˥J\MB,0:Wc0` fw-&$jT"v~"(e&(Wf ) &8CtodY"">|'bsD:PGUٹf/':|ڶ'e}l.0<pZ=JeN![A! ن d859@"(F,A7@wHr1C"%%@2@2SL@ 	U,/P)t'iz/eUnS4lދp>]݃E'ohzj&{k ā)B(/, 0<ћ*2czIoš+,3#b4@ܵZ?M5JLRXI(pɉ}6t`
+CգQ=S|^{u饗vuuX"L>_~v2,6E/I m &٧0re<ɓIsdgID
+c yvI  ]1A[S9lf`rԮ5O}qtݼr>>k_޺dkIѤc 7L1W 0'ݢ!_<VXW_ASjq5b?\cL4AˋPoSaebqg47.l2 +C}K+MYLT]|y-Qc)Fh}	'\y>h{?V4*VICu,BdFX(YH'%uS̈kf
+Aa	A 1O^pDz*U47T18$k$,/+
+j>귙/}j[UQj}RAC":P "H\2o\u&,6A &BN?Z:b`IL##^"ΚNp0sPjeVjH"8(
+q0rF!/\ca^쎐Q=%|r3fX~M^x 8Gӽ;98+>Ǒ܄lEpy+dj*ctwP{>U}P?d`X/3؂NJC./\dTf``ZÇ4iLDyT`s^9Irvt|lùvnMD QF%IZ-| -P5ГvUDs#SrǢ,"vChi(VxʛUj#ce"RUq{
+xK0vn{衇V^][[{)zMMիUVz衇\r#g}/q(+D[En'! yQ_pF|TagL7A
+țWq>TL"U" ro@VD .v"3< =;G=猢{k**4P!Vàz>BK*:vpԞs:{\456<4 ([-U,!|	>URؤWCɥ+	4)Ê$YbU,gAEX${'$|1(DB;z)!!Rc|;;;;? -YNodx]}*siQihiI2Tȑ48MoHklù!"#NNG0-` bșUX@h IbZ^kscEIvu<`=_6FA%1i-}$ϥ]aDa#A$	igdW:{/5!\*XI1'Ҩkz)/$2
+`mBVa4  06FmUdTY*W(,Yݺa\`){uDl$$KƎ=CV@rꫯJS-_X,RoC[E]>_mlER{W;w7xꩧ56".Rjג 
+yjz](VϽJD׈B.{ nLU H`Sp8U
+@QAack#B-L<k={mm5M^` X^{._.Q!}UR?/+<
+,SC.S?˦=X/L& NdӒl}+a@"kBv`j		<9Q>e׋%UlqXDB6`
+!~QlY#D^Em (7usoS~Mfd /{wΝ{7q#Au}!N-D/^,۳gv+Vwy)SXvm5$*;	5O~*Âݑ} !*N,$ Ȑ\]ߙY6S[5Y1    IDAT.RUS
+^1L-_An^`	!%	vi_3Msa5~36L$Ib0'Bp\^]έы%q}Z1rM@K@6]"(kD	r/IVza)dP;Od(T!QynC* z7+l-i5H;|+>,jg
+kL}P+_+Ό[co>Xx9s7JT*Jn%K}wyիGv\#,_<˥R,_wrD"c~(|u- T%Q*b=:W @8}PPD$ 5AM,gp!InsԈ|hBDçeYvH_ȕ9M	EjI5˴f,\h)û1'irO`$"s+ʊgϒ1{[>맘. ی3A@LwBC
+\W-9 ]kR5K9yiV}yiZ3I<\%ǟXʰeG>!9u<|{}'7rEqڰs08!ēO>zPd2{#<⠪---]t\vxѦ'tO<q%L8{]Ǖh89]r$/Y jBN60tPXP\ B"y AsTT8e,<F̈G9M.OwxYPЙYX1
+ƺ"u/x=N?-r6*ͤ(I3(
+hs->Ͱg̃Mk_GS0/Iwug~(kI;sK|/w::H^lْ# ^5( b_g \`92E *ޒUX/80lB襲ۛ*
+ְ>nqc&@\eY'fzwY]Pb,wgg]*V\ t:Ι3]P2Ҳyl|7x㗿e'~ɪ='CJ jl޾$HD"F9.!DeeB#ݮ$GMz2"gC`4-:j ƨ NȒ4H[Z[Zޚt;5 Ad=ku!VB* ^zUkM>fO)Lo";-&++"fNAXnRo=IXEcQs.bR;)L=&~RBodfi|
+~CK4cCєӈ}#z(*W%=N*h4" ?nzV	h6MjQ0S4Kkn"h삎i˖-~`}ᇷȺu:ꨑ$ӻ'xIc='O}}kUJ  c\ŎMkέ}zX9V^VG|0=y.ȭ
+ 4ée`7?
+R1<yWq 
+S#Q$N`P	@KCDP!nD2T\MD*mm؞i-Bki/ dүϛu
+  $_&!fj184v fνF~<T87WFEb%\m8<	Tc׶޴ˈLQ6HMi"i6y:yc"m*\mT3љgkm ̛7O+Wq?,Yr]w'?Yzwyr˖-{wiV\,Ld2?g|fΜ9+Vv],v~رyojohX&X`=B$,G4	% }wF
+ Hd@I53?o?14e>Ϻn+HG`M%k1@%/Lw |Z='VL'ߞ? 05d@I~ `[ m*eLպ^Gr@H yBmQG}`";$% xM/.2ͼNfM3)})}vav&;kT5C:k, {n馭[.\oYʰTMMO?ظolt;ɪ(j& ;{>4;K־5^o[|ǡ	4i 2 FPsisü,k_BJu,:9[pȓ}KϜHxoxёšSTX"7H@]$TIG\'앓@-0K czѮ~5v\rz%4>Lq\4D`,ڹ*[`w:$ߖb
+B4駬TP*j<ťF>4RYjD t!@蒕|'"@}SQO3amєYZv`_AEdr(bŊ+VlDwnkvD˖-{v"8oM<uN9唏dfllZpx\~ӺwK7}+7bށvdQ3#9rEUAi%IZSI( p;Mo]5J{Y9--e%䚪 $Y/ºI)#X%\%%lRU՞fHf %[Y8QGbW3i<'[fiǲ&4XR(A|qOjAς4Bx(i U,zLTwj?}bFKUw⠲TEI)d/ ae b^JP:ȡ"xf{W'~wPH S̉di?i!Iڤ&c>yGK---gϖ~x'ft{\sSO=?gΜnr@bMWi}m]m,J̥g%w8ɒw'l=_
+W`j?f3T8°6J~IP,t)#gNq%?@ܳ4(f 2xO4v&x,$SzNvn| W;Z 1r6g,L{q~5nD%	m#߶]ۯ }8WiSɵRK^6r#T-A*;jR"Fa/xnc>TВd @eEnId1$A2 SYO<a~x6M(;#YAT}tft{ҤI{72>+=}քÏbq]aSڷ_Ԛk},}\{S:0˚a,<tqmۮ_'F6o2!a59"r=/gQ5($	Y7KRmad"&PxTvI(0_@>q	ɞHUE}Yഊ`fP  tw'j/֗;m{W.8Npu-"Ox-M=H-ݷ0-/plU	=-K2טB*#WBC*߭wОR5b٦
+/@RJwe  eu
+$Cݭ; dGf(sk8@q#|N%]s_nyMMhu}Uiu j{]F62Hɜ(Vq38vʱE$L,>w0}`z$x'1[^$!	TD;-zZq@`
+  SA  1)88A谭HJSL{Ŀ̜nｬ6T)/ٙ'^Ȃ`VB&A81Qe9t4Z#-3.K
+˰8W)?L?L(Fŕ!HtC	~2%	LXT 9߹@of;kG_N)g
+?5kV\	 =XKK˼yƃNo8aiu`02*MݬkM0P_$݀16G%n0*MA$X_bh3IoH8vǆ``!X IjH(D1Hs}Kbw	 ̚JH0Nu@Ogaᢹh.R9boN+GYw\
+{.Vf! yVCgu*x| MZdP:9drt/VHב*Ûr:C[SLQXk-G#@p^;r T4RmU$/g@ #	^"(]
+w݁u|xL9f*A #Ųd@Qijj7o
+HTǚMXN/
+"@b  FAW;0DY$`P @108PAW10Ųa=Ё8<sι "NT(T! Tm)u+I7a
+D[LK5h-T30aҟTKe \o)i5ā غleK|Ñ$8NMhhEBݜA4-d)Z-;_4	pĘH&UcՐV;Y6 QFLx-%!CB@$6~A3?8uNM'=K.]sR>^z׾7:..
+ y3%8x6sD{ŤqHxJ H%ґl zdn7*J1@˓T QGV P0nɟ|eQ=:,ĆlǙ{#TB F0YH@G I$P{E%si#bLU54$
+A@UfV:Eũgv^2PX2dIVqdtC5%.#!G:#{*"Z
+BvՖorqʖp󱄺/bw	/" b*9!,G-Ȓ,@`H}ں}=c3W$|p+syMf}=#'`2PB`#.7?yj%ypH hWvp^ȑD
+$U< @YhI'H1(0f:@L QSu]Kà#g;Yԑ9z*k楠 ψD@(PKzoWdEb10beO4ÞiX|R&֧b	!	G	4tCp&a4?1`	z/~ڣۊ(*|!_2(
+煈*1ӄt0x~UUqP7SKH%NmUl$tCD	
+ zsqй5'^]7`}ofId{{窪
+c4{G-a:+5
+n &p=i;U֡kfMkSY59oFP^Aa2y,R!).1 )hh#DS!Ym*DFPB>D.0'#V1"&'ĝj3	 '~ ! SNLpy ;1(HAMD:A0w]'5(<C&|DZʑ$䂺41V9mdWF IH,t/) hԈIU^XnD]ֳE7(&~Tڹ8ѮûGǁ"`[  uWuYv`\Z=˗/衇x˗Q<îiӦogs̮>իW_}իVRUC]rC."F[u,D],9y2w=}CW'ڡ)u;H8>*Baw	dBJ\)$yΩ(p)::.ܨwadL׻pŬXB# ơ	GO#xu$ʀ
+	(k'Z:ԫ2x$CԢʼP*N-ֽ=`\E}g%]2HP4(WBa)!Ih	]|`8v+7YV#XNjg2FjH	2īrvhp|Pv>hg<۶mK$FP$|>swg?Y p-Zږ,Yrid2o5άUX/1(XL(y3`WH	β+Otkg֥)4mlNU;!d^~l O@i@,9L!No'^dp9[0KW}g~WCD˷ L pΈ 9@	|Tk๋
+t/@*Bq2A/#G4Pf0#nB BPDR a*JܕgKDVAaz'a6=U/t~-WD X:	`&a2	#4KY߯MVjGʡԶvRJg) )B=ˌ~a}5NR˳C1>_}UiiB˗//2OGGǵ^jժsiL&wwuutI3f'|7r!r~6:\!y&(ʭqX&j
+HoN!l>haQUuUS7kLea)KsP_1 gd8!o9O=$wx"@26!)2*!\3&2z٭WS@W"|`~Hd(!&Hց,\FN?4&i*Iİ(Dk橿c`+}SOA5c3 "(@
+eqr?V
+J/b:{4omYӶjͦ{F"Kx]1,Ka82}{O%Nƈ5@FFJ3KpUݢϦmEMD_|u]k$?}nN⋏;wygܹ7|Gq5v =("%3221*{#jjTEPʴ[Lŉ뾑I>bxƶvTec9WF aѩw
+4@@ "ld,M(U ,w5g.j!qbS`Bd W0א%-j|o(@qDd^ꩄd2AëIVϟRiۮ:bU0(V!^)
+To%v_T.7QB,FCٽ',舅&׵w3ֿ;ʎg
+"IڵbJ!8\xZ3wTcӈ{O~!??fG"ACCO;/pW,^sι-T*u-,Y;W^>Tqnڂn?x&H$H>>+B:eܽrC=oOHdeji/\UQmŔnEtrv)/)D$:/e+leÇ"BmA`S0)BRhl
+QQ04Ըp$ T(*
+ƃ@`m˫=haU:؟?a{WrÇ7M?ov,UP3sy    IDATGة54;=(m|꽶?])>m7ZF]C>6yNnt<\W7EgJS񥸦W~Fq^~QG+8d{uh$P(<>諯m6"d2syF*GNP(d2s=G !DKKE]tW%uah~ѻBAy9&">\bw+	LǠ B;adVqʒ  I.23<#yEnKjڇڎ4;>TR5h掟G' f8qNlKB b )("Зb<F EUx,*AQQ)yjݮ!8GPjer)vܒRq> !bM^?|R[mr?2chq0bu5sD4qo-e_6nu5]WU%W-+ڜy/nZN: (:&҈o6LN͝ȝ=ڡS9cNYEM_|__n۸q믿>.J+Wuc63dl޼
+ުIC}.5LH A G}֙$vHeӞ "kFɞo˼)ڦkkuenNhkL44`Cۣśy̷C休9}8EUnfR%kD$Ϝ+:
+47[{92 `
+)rlk9bzUJj!)rܞܵcAA5/3?Mw"z+wy2Y0e{VpI;D<Pk8Jf7yCh=Zmyy݆[ג!mMCtM;D]Q aD儫kRMf7PP}źGr)o>=ܑL#7O}}}d+w	Ѻu:(5ɦzhax~ݳ% #n!r=kPUTnW Dڲj(k>hjҦb-ұnG[nUPתk^0
+hpOQHŭ@iYu]<ym@nA9S!lF|p#H͠^èOlXz"~6ZE$!"T-)e+h/*DLC?hviO-ًJfg	Q;ZwK>2r' e*wr~H )	2'Lڥ~zb~gȰ޷mUVHgsҵ/O=3YUr]ӦMw}(|~[Bc=;hiiu+<3~-Y䮻ڲeEdک[u_(nSz	:DX?NrQJnʖ dN 2>hb=ִO_= 黫Q>k(զI\2t)DEfDnJ&ܭsF!ș1̣Rp,LU DLSzBfO5qu_Nϐ궜yK*- pdRZ:EzU<FM:H$DҲba*pa"	`Q̹αY5ƺbr[z="$I>S?uR\ꥳq_vWS1>x' @VqܣGAQK.y6l`vccAtg_p555;y4e=sM7mݺu~{+{\sx瑁?"Y<ƈЙ/ӂr?]c(2ÙNc??n__LYM<E$++|$;`n>$8rkə$6Dx$;*S\K}C$4I$1=2fk$3U?`u@9p	R	/1IUw3@ӕAK2ŲvÜéaC_{bt$	*h˖Tsa̿W0>?Nn!8w7w*;wuף>qF؍;[mSB
+IEEP(uu)NtN{gL)ϲr1bRW$ƯC{
+7ʦN=)uO1Y/HLേRcR+#>fH,@ٲD{T<뚕V})E  Ѕ+pWQ]
+z[=D	0(elj3L{_ÜcX->-"m<S=$li+1_~co|)ʩ\Nn7pn2Pϯ[0EQ񱧌	-	7M_f̀
+Rx i]sgr"S{S9JՔq~imH;n@rţsţ*GU7kvTn;j]Oc!Y(/r
+l!(D5D 8㹸3hA`24?N`1m	^*BB(o`AiA	&P&ߏ)Esa-Ƙ*K\BZYD*M`BϏ؜H§im>s+V\p(u4fjs}nhD{Oy$׽DH0$ i& E^98Llc>x:f^tBBvH̫7?̜r1X+G,4e}QS6>Ǉ6G HB&@%blDh1BMRahƪek ˄m=DZ)ǀ=Fz B}S<?W$G|#`@7
+ gSZX6]d"+wM6=@Oh5M>DI&Yu,.;,qe
+*>=OxꪫVX
+&ٔSJ,>o/@۟ײKG>Tu/ͻlOa<E	"V1z1-RaaEJbXHh֖PQ6UmO(U@wL Җ; #(N3ESB@o;XV#cmVr(LG0/q feK9{ 
+0o=^U}+,"{ý ēi=c |S{'@ҀChshDiF4B[ES?XX#7`ءT6Ƴ\F^/Gqy'9^};j_'JJJ:\H,d+0_߃ߘp X\PM"IB4&s)炐H%E(0:MeA`mm~q)WdRϖB%/s7asT
+ ChGH}G|I_JXo)KW7E`'mI.z79ڢ=)r[Z`]T|"\yn߃kߎ=ؾ>G?WUVpb0dhJJ13NHeެOeH<|4B+KGq>{kt+Jle7t"1#OB $b16uuݖ f
+51*_)Pm]nc0agJOucroiD+µkN;U#WwH$9,ZV SbXgb: @U %a8z9e^єErVOl9yꩧǥKU<SN9cC4vP4&FpXlG;VVuw%_|Ul>Ŵ%WeM%ΧHʀleO,Enww}@lGL!4о喾RDJp\O(yo'\b8܃bqi'mUlad2 \5
+Ȝ+vѵ@Z,)XrP> *M+ 齹5calGT"jh\|d:4a>nz; .]zw~G>vvܤWw~yc1H0Pm?Dz}^_-KCIO4aip*7 v{ EPS'ڡkTOY'8^'G#ۀ]("Wd>hi`@<0v?HbUb_z\C֠qſyVY/QM D@ap6KτZ4*D=@)_87wiRX76  :pZ
+5,'<|"bwwJww7Pt}jSC[06P|W*%
+G"dx%]\4?Ƒ8puX] ҎУ$j6)h%lhKp`BW6ꇚ&S؇
+o{ܲfܠUV 'ok$n&aD*pe  r(0s<!3Q+#URQeOGI+H#ڀvos13y'J/aL94\76?'<|\y===]t {w|=||c&>zv_ֿy@ERXhQVT(]9)\L *~y<;ӟ_\LS*+%1k}8 y^$<}
+FAB%H#L! \	7iYݳ8,$1LB+#n,UҦw
+J
+A0T+^(  $)}ss"*N1]T9З	 1^܍JX./ҥKonye޼yVǞ82'ff~'nS&,l{&?z*K2QhL6+%W_%=^ԟEah}Z]5'8nڴ&vŧ?@љؙ 	^(ċ1I?N䄀sW  Sth-!$Tf ` '@!ÄC 8{n'>fi# 	  Ml}qY!;.}a(DEQ3	Ee>-BdkeÀ1W%,sps׆5kִ9!sҥ{.{$cY<5\OO˗/w WU!<%?3:
+	THq# sߣn_zХ3yZNk^}n'IJ!~'J[n!KU1f/u驄E6 i-PYJ%,q7CD
+xbL7 iHc%x!/: ys)_\ڗR<%aw,Ce͒1?rR@Ne"	c~}U28wm}=q_{Ʋe{~ ~}{ʈ+_oG__w__ӦM˗>hhh8C=PΫhihh _~ĆY=o2E/0X@r1l kڤXM:+.rEQ `e޾{4{z;R'g8GrK~0x<nL7t<XR.]]k
+ېרfˢ=x5DA_$$4D]آ1 ֻ2nO ͨmdj@bެ!\Lkﺽ9"FRD@쩜7*JWX""<If eZ~^>e,׫
++
+!W_}SŲ;gstez?O-[o|nڴ齷G},Tn:sE\iL&^LV)ҥ>uSGgzzz~_i˂e
+qi+$EKkKxA]Ƅ'5QW7;+qS _ r@ߑt 
+"wAI\ hHSNdrjZtjO"˞A>OIxTZ_ED"1M;+OΤ1#Ý/^|9|ռKg:5kosH ks9gǎO?t6S63?xsk֬??^x׾Q+~jgi]h		Kd'T5=W{/+^	C$<TȦ"sڪIS>Դ6M}GWD+xޥ2ǇC }c  E2I8Z0J^߈'  ͈.6uaJ%#uX)b/`hC>7paqB'|/
+x}9-uuuxh)<^{ﯯw]d2y=T9>K/}g~Ya?_?{zzN=~ȕ36<5fn8'N<;Ҟ$@g~M<er'4QQܮxDA(j,TN.R6cYƜlɽrIM˘XnV8\I|PXSoIxudZ>VFY:α3eưk~Tu{||솃|믿mܹ~33{l^ݬ( O>m|}M:cq۶mkiiqzy&"~!^tM
+'d,BE\DZC]Ri Ga;j6t*בsP=.	h= C"BXAFd)hGktȶ/@Ud3eX`ME]ELdy/y;eRZ{CruVo蛒jW8L/
+) ƩC0MsٲeO?#+˳)S[~ɓ3uq<mGT{mݺqƧzT*[;O>1>[o?۾}/xg;hv@z=<mD}YLfӉg'_aYsssSQR*V^b.z4	z F@h  BԖEs=ApQ?P|ŔT}Z'e*hImbfWR6ԧޮ7h~c@+ ~K0 X,SӴj0SL-[Qַ裏.^+8cim`/|3<saQ&|6foWo5L O0Ҙ+QM$DSۏf"qy²*wYsL&Mm՚Y2e>KRKJ.0yRP,K":C)Rn یDP'\~FP!	DDK	+Px/oh%W'>j){ LՎ}ӀQÌQ_N6-`2>wWܹs_v^z饅:SO=U,:묝/Q?gܢ_(y_%P `o|vPxB8l,Һyܴ/]["I\4?c}]MkO&O!9P87wͧ0ts*ytTdnhid    IDATM@8}n=)̂mU"duwj55jC$&u}2>c<|Wz/+9sKWW׿ۿtM??ϛ7Gi/##TJU2vj	F UB4^(FE}?5e{0j#g77}l+G-:znys8,=pQT<S5F3)C G!O@)as0HvɨMlL5Ɔ5=nԡs%c0^|[n_>묳z ;9	 ?s}}}~҉dc>}v??gâ8,ei*B	5h0+6$?cE5%+6PdEPi"Dz-KY|͸9ϓ<;fgsmkk		fTmd*Py$N^}!C	U.sOv5uirrr񬜂=R7>b(t;ymϋû#xP	%اyֈG8*`r$5M96cFBA3Y$*	e#ड4mEL<PNQa`:\#.m"$O;y˗ݻaY)i|qIdbbQ,]R&L$ d2v=|GIu(!
+9QSr'c	45^3~͈ϧmݺu˖-y(5Tg񑼻V)vKOo|PTar_];e>DW@,T g(TF0aC92v'uĜ2>	$ 0L//K.(YTTdll<zhSSe˖YZZj),,477?ddd/y󦪪JesssQ}CO[I*)0ՍGHtm̅ukb-k\Al͛7ڵL39MRlW''~OrN֏'EZ6
+.|gH܍!s0%59yEr%a<FBH36i?p"q 蓀rӧOϚ5ӧOsܒC~233mmm%W.\8x`o?b8pY2bĈatZZZ!	y5.HBH
+xX@@Ca"ŔjR6aؘ1c+~M㠠c%omqS0Rs?F|M]h){S
+)>t8A"'h*(%!$*v5&]1}JbBAAee3gݻgkk_677W EeEFSS0DtttILL?U555=iD;wwCW2^1ZJr"GH$d
+SwCN$$$=֝qqHg'POٍާ%Oڮ& T I.`,:HВVuwg
+n`~YCOzwk(#.p>'Ofjj
+|{zlwww?cϞ=;qDA󳲲/_.[[[O:&#˗`>hkkwUH>77w ***rNwnIJٶAэ+Vlja.ҧN?OZ%Wg	P`O"N5Do"Iiq(I(>$U`Uj
+dBVZ<AǏ]uV{{CJ.jhh}=<<	P[[ޭ6===..n۶m VRR"FM6@sss0Q\t9|̮kfwW@-aQ9P8!W)2 DA	!ʱ:0qD{5,RS  댄$&x<ݻw---7n?WVV=zTr܉ L܉ ŋ);;;++<WeL2-N")eee?JH7oހÇ܉ }#A 0$|:u9?"aIE#aGQF0HH4v$!;N@WS~U#}qB[O}"$Ɖ'Ο? ɒ%K͍A@֎1<gϞCA/L	*??ٳg{Ώ؇HFi$SI d9htCǋ+7qdSi~mUWV	ذQw?G["+DfƒOF$o*zWjkk;vLWW7###>>`mذaΝDmmm/^666V^^~ڴiDDDڥز5ks0(''GUUU=ݻFFFP-"t: jjjbNjHImBBPCJ[x|_)^ԥCC0#0UAo
+p')ȃx.!$9^<1ވq>>OQQQm۶~| \.W^^
+xθq0?~|>rxFee9ы8233UTTuyy0}Wo61	u'Lx(]b_34:ƙA&G"P죊M˓1&<L581ucc#D2dɂ&L`dddhhH"	|YfǦH-	(RRR<<<"##̙ѷL&399yƌ`㧟~1D;&R7
+FI7;v }
+
+
+::;;Q0` ^E_Z Jr	#C'yb>N|(g)q.3Fqߒڊ
+77[n-[򹹹999:::|󍑑ј1c,,,pF}JhBA}g.%&&+XkkkiϟR;<
+ǏAaYAAAQQ $iȑ\.ʕ+Ǐ;֭VkLk(a+P%&/0	G?D?q' F 5RZtHc
+IySm۶u֮>l6*;;;'')ZZZ,,,Ν;i$"H%&)<\Ç/qF{{{Y섄Yf͋/.X`7$%%z'"RSStuu\;w@k B%Ǐ_v)**BQTjt{
+hkk0L]]A%VEʓ6$#<%@O\HR'WR ъQYoق!;w޷o߶mzrҒMPP...ֶ222233=?DJ$Stvvn߾ѣK, Nv횕4EQ4""bѢE%p\x1|La:K.DRI$nGQ^^ WXXbƎ]T]]-Q)
+	5<EBY<#0F(o8{\eXWWW	k>feeh4***N:uҤI#GW>	3/^xUee媪*yyI&3f̘1g8NttԩS!H$f/^(q			#F Ƈ} SZZrMLLU׮]_rX\p85ܜg
+9&r	S"$hD
+2p<˗pP(0Æ:u*RG5j(^V$ST8qѣG˗/wvv7nx*///77JSSsϟ˓O]յLNN/,X Uvvvjj(( H-//GŋgǜF(+nbb"ngg#GΜ9##1112IX9Yt~__ia---e~ 5--d2YCCL&O2ҒR<`G^!..VKKťVOԴɷo߆/ף(*r"~III}v6-#//1= +3//<_x`0d~nwtt4777nptt/UTTtttd
+
+
+ċ2èTjJJѣGW\innrJ'';w{Y_f!?E)ʴiP=q`UiΝ9>|x"܌oܸ!ߨ[
+
+Wgk۷q0j@@ .RSS={&]JIIYtcEEwb
+n:mmmMMiӦ>|BlA$o+r.]s޿Um-d2dffFGGo߾8x`{xAPlmm.ݽ{n^ A Ν۶m~GaPTTԓ ի|ȝ677󴴴)S|N\.ʕ+juuudQ8q)Sz5ck%5,,6;;DKKkڴiFFFGIΜH#G400L&<]~}:VIII0#wiҫWd|ׯ}	_Nrtر^}&!!nn߾kt833{K 522sÇAҥK<HDIDޞBL8q̙VVVGӞeTWW+++ƻ§OݻISSSjtPkkk=zhD(ouuׯ֯_/>In߾mbby`C!!DAX,Vkk+U0!G8&%Ajxxxmmm}}}III^^ޠAN޾bŊɓ'A*}瑗gggnkkoԩ<qℬBa|ݱ'qqqiii82]JЂ?z(""<쬩K{q^w`ݻw*
+
+.]tڵs ~^7nܯ:|p]]].[ٙREe>eHHH?~<ċe:ob5555qyy	_jjjF`@xNOA#.%y&ܼr
+FÿVf<x˗1JMNN]-FXRXصkWgg'x\[[+e/PjjjY&''_;w\rutt+..@ BPR //zM0<<\_C[S2227oǩ2<***ӧϞ=;vXCCŪ'9Nwpp ?TLv)++˂\ aXwkkk}UWWnԍ71?633o/ >H=qLKJJ|R`k]]K/2ǫWZ[[닊 Nakinn$_.,.]r8>~W'W+>axҊqI H=;`-Lzɓ'[-;v7mD'A2CKKu``4lEEE&o߾pyyy?9P/_(,,LIIym!B`&$$  #*@UOgg'~%+G!Dp_/}x\SSs-?7oHRF3jԨ8q"!!YZZ={6:::  `ȑ,icc$A>sss-ZD&W\9sД?A4=3@	{SvB9&&ׯ%KJJ=ikkt..+*vb˅Ȑ'O@ǥp8W'444Rߪ*E3f
+
+
+`|[UUx(رc*f!BffGellokkwgϞ% `bرC7nNx	K3t:`&%%O>r'q~7o (ٰS֎kIzz;wݻw@|ݰ~-..?>.fAblǎRVV1b֭[j})A*++߿*QlvNNN``ɓ'Ϟ=or@!|
+p>5lvvvÇ577CN Jm˗=Y܀*w~#~~~?>f?}?\h<\8,͛썊ɳ\.^'ͦ&SHHD0at`3  /!!666})Y(iӦ1SEQ|cݻwaYStexӫ`E۷"ݻ0;#+ЦBGfffR׃Xz{{~p(+fOgϞDRzz0LMM#%{7|C"233^e2ϟ7o^bhA 	'5jεkXwo:;;w%?޸q]]]OԫWJ7hЂmڴ	r4('رcJJMM~pwwn>\[\RBȣ(
+}`jEQ/֖OTknn2Κ5kʔ)Ç?}'UUU555mll\x3z*
+ttt .>IR7nܨmkk+A;{bbb/#s\}}=>{sNYu	Bqraaxo}>zzipՒ.Q\<A`466³155 ȾNĐې._52"""Eff&BY,4yNOO[U[ZZo۶MWWW^^~̘1u떯oBBBxxܹst%KA';'蓠OPYYࠩ9cu^^^pKV>=!11ڻ߻w&Qd?n[K-[FhHMM!uvv0&88Eѓ'Ot}DDD̤$(
+%x˗/{铓GQl6{ԩ[l9r#==AsFEEp]ɓ'			w_x,}dgg)((L0a֭!!!Nq\fggT?̺li<Apss3>ۿDx<(lAAAcK*7    IDAT:88{VVV=%7xYYYW\=]M]@
+\7o޼ˌ0(od2YKKx=-Fstt411UVdCCCGGGByKЧikk;dȐu]vfΜ9xmiB1dmm->:D4==
+"ޒh4/ 00P\t:@vttV%QAvgㇻu8m&۫f#BBBΞ=ۯϟ?s233===QQQb֫ٳi1Ӂ|,A_}r\===###//n#*
+/Y)	,Ӓp0#h4ڋ/#Gkoom-R֗ 7I.mLo߾&JX}i(+/ُ?y}Ia[lwmkk|򥍍ѣCL'A$<==L>gh+QsJP'F455;wn>zHb8JCP(Ht:Bhh$899566?D*F}0;;jgsF0h.!.S?&&{eA?|p}}}OOϮiL($G477-\PZ.+|xuFvv pvvqχզ/^ϯ?d~I!ŢR@aa!/KR755k	"gXm`4x\YYy1rP,1F
+BV|`;ʠA8iҤx<
+& ,zڎ2});88hhhA $$f޼ym9LkkkꖖɓUYYY\.!X,		 Ȁ...`K"d2Eޮ`OjccCĲKyyyx	511WEK׮]iӦ¾	&,X@EEeܸq:::Ν􉢨mz%&&Ϟ=3d$ST-ZHIIiӦMbD[x<pe2[lٲe|)77Wb>o"A>xtB8c0EbPћ2₃ؾQbRO8fqqg)|[F}}=lR\+T*kBI&UTT¥k;Jrr2Oѓvڵ#F zzz?4<Af6mATUUgϞe˖.ɤ)E@(""$%%=zHd2<&Ԛנo*`O<ODwīmat+<	R9XmDqq1~R޽{^
+2~~~>>>RP0vBYYyx{vH>3iҤ!C\zcccoܸo߾gBWJM!i~rtt30(nڴ	[AARRRD/))u_Д_qۂ\UpNa׮]Ft$avdBCZ%---6m42ݻwR騦;]]]777>yv>	*}tgggCCéSR(!ctݻw<Ogg衆xFGGýMOOfG`19rIK \{Z$a-ڂKxr<Ϟ=͛2##C!]=ٻIЧ4賩eذa&Mg`c]]]HHHobb;{{{؇Z\\S䗞-ӠiiiG<Qw+VS'oݺ%Ɂb߿Ĵ48Iǭr2~Ite؎R]]-IypKRЏd_rرcȑVVV
+aڵjjj+V '(})Y,((X`Dq|~{5`KoY!>>>򼽽EU7/_9J|:߿DQիW&N1}􉟔m6fFFa'778S%|}}߿pBAƍ/4iR||lllf̘!O>%EIIIZZZk׮:^.
+E-$k~vRnTVVB3\徇
+t<fۋ>7''?ƍ}Rəᗡ7o|-x\__/`e#14T"^~0iҤUV?~̙34hh4 PI^YY Ȍ3mGiiiIA/A_<}(JP<w܃ˊW[Pe2џ	@ʦnmmm'&&褼\=`qqHKޏf1|?qvv6)%%EtYC[`,l*M۵k~e>x511XAAHЀ \PT;v___祿D _E@R;a1c9r$88ĉgϞ6m`vQdd$1hkkBiiio!|xwؙ^QQ!ɟ ˆ%%%in
+RϜ9%CAfw-- ?Ν;999ޝftxfLQFikk{zzBz,YBR;;;w S"驡1eʔ$уwEqb:towN.yxx@5QԚW߿}>gΜRyrwwPg{CEESal6 ]]]1=߿QR`5CbD'(IyΒ'N3f̕+WJ]3;;믿&H򋡡ܝ${>prr:tm~tvv/]$.!I4:%RPćwǏJŪ\JJUWW>|DTT*UsR?KǎCQrB\%}	{Tݿ_l#<;
+mpi[[[ZϠ鞞&MiAߓ𧥥`d!씔6l ^)&NkXȬ$`ArkL&:}t~~><//m!2))B<ypH'$~>'VUU%aAh%x0;chfE>IF~\\\N Q<x0\kkk)`ݬ|&_BqqqK,rqqw'  ~:*<d5:.mQUUىݡWjMMo߾p#nhhfT.?~;h_x=|~??^%Tݻ'i=gϞEBhhM_xQ\\.sM0AAA/F<|͛7gΜQVV&
+}>Q믿&O~I!D6jժk׮RRRd( W,~6e.\ >&}ųgτ+$8r䈄vGk׮Aڴ4Q:z9gop807NfrVV\ĄC<o%yԩŋϝ;wኊd2YMMŋbJkk~'Μ9#{AdgΜ7nܠAՕ/_|-goDOsP򂧾~.WʽHjj*>)}aO}}=,[C555AwA4݋xn޵|s H@w c'6nrQRrrrD	AROf```llnv)))ǎ[v-ބ611Q:ClZ&	Ex=^(}</JJJALӧ}02ʟ9;;gϞhI۰5;;;66>˳ŻE>;]
+(++/,`4::NnGQT:r_6iaaann@!S)q
+v 
+
+
+ }:u
+Ƌmq+__߾SWΗ~葀)/>	U/ogڵd~{mmmמ`m||<~"Ԑ(FGG=sg711yAT 466+)~|՘1c?3.JH8p a߿.ge|\~~;{l|ˍÝ;w`~P(***֮]#΃Jݩ+8֭[=>|#
+
+
+^z%$̌3|fyyy#$$$
+bcc}||DYLWWWXgXD111$IBC	ݽ{WSSD"M:UPQUUuў+.+|{.g=y$::Z=Xh?~,h'8|'~|DOֆvo޼E4M%j#˗p}FMM1L'''殦
+o%BÎ;ڟM6	ϵkΚ54>O4hŞo?a222OfY|YY~YFF:&&&v}͛7 GkkkðG& ?~eee}kM)--/|s|CBBf#<i޽d2Y[[ӝ;wtcؑRYY)ƽco&(OqAy/^ȼ:f]]]Ax^^xY(hjj/JZWSS"+TTTϞ=W544K䂯A6>:ޫ*|wBkkk:l333J^n֭[[[[Ɣ;vXz5ؓ۷Ԉ(},kٲe:h:VUU577߳gwLLۼ>۶SU999nMB:UWWwARffX|SĕLHHK<WzoooI..O	
+NNN2jjjC޶mbh`0tttLLL|||*[cFuVI S(zyy988X[[<L&ر̙3qqqb)477s8]v-VUU{v% b??ˑW^J擝-.:>,,NHNNa >		]:>|`20o7}߾}&)cF_PP%iiiqqqѱtπ ??۷otӧOO<YMMMWWwݺuc@kjkkX)بϟ?_e8߹sy,--4556nFP{(..޼yzII$ZPQPPЫi\eq\HH4mϞ=xps "Czfv24)++nk	!((okY_wXƹWUU988=M4O x	|1iiiy耀#G.Xw>|pJJJ>/^<i$0fƌY&<<͛7.]{Ç^^^NNNCQRRAӧ+ 			K,QSS믿C	0b)2ĳg"..NUo hiiEDDHyXgiOcCw[10T8Ç!9"l6[k$CR^^~a>544YlCqq>XL%}/''mSUU5|H4\YY X_~=޻D:A={̙cii9` nذ֭[K,>|3gdnp5ШJJJO 
+`l۶+}ADnn z=\3~])}h4|3͛7_UU%yLLt-nmm}a>NP$=o;(:uot__כ#@Ru떯oBBBxxܹsrA賿5>}޿_]] E\r0H}59s:sxY'O u֬Y$IAAvΝT) //?tkOBCC7a  ]|NǗ_z% »cǎiiiGQQQ0rIRT(X,|'Ʉ˔j׀>}aÆs7NEEEKKKIII__1==AQ֮]ɓ;w/^:}2@\t*>y;~%KPN{{{A8`0QQQ9o߮"QAM6p@MM͑#G HʒĿ;w ZjD{y<Ry<͛"@>|aG||͛7{JANwݻݚ״J-!$$$tLL0fFR 5j÷n4ԔfԎj*===2lhhH(od2ϟ?o޼EEE:::p>k$///:tN#b
+x3522?R?aÆA]WRG}}_^^~Y0Wx9_Qȇ	UpwwPiP 8fLL,qm۶ɰOL̯4#L`vyhbAR7n8tP[[[n[GȈH\x3m<	 ^a`0d25pyAAW_}egg'`D%b
+;w.R/6H-,,_ׯ_/[/4mll=-J(ѭ[hJʜʂ))).]m*QX,X{fy>`&]*))f{xs\IX7WTT888hjjZ[[w
+϶̗/_،=Zf|b,YbeeSFFe@&O>u4<?,X@SSzF.%'O]Tmmm޽TR29ZZZ:F*0ߋaܯyf X
+\.}v(-yGGyy9~HOhkk襤$|d~~x(QQQ}8t]xZ^m5k֬A988.Xd2%W'/OEmmmuuu ʹs㏮\@@Ç߼yseerrr٣$QAoW-iF 
+СCs̙6mڠA455G1g===MM͝;wE[B7 (liiNwkRܹYJm5776GbRQP=w,K?yߩ7HnZZZ>0kkkEЎ ma6<Y~L&~->̇ ooooii)><x```hddt9}m###UUU++#GHT<TӧO7o<}˗>{qssI+}|||Wvѣܷk׮*t{Gx+0۩  DIDATNNN޽=$%%mdUee$~ss3ܽ|PAP(Rwx Ҙ1cV^}I__UVkii!P?~ܹs,{Ӯ_>(((11188x_}K0 Z0Huqq5kRV\)Qoqqqa_{{#fQFz
+R555'8\V_鳨ψ}_p{BBB@צl()))wYhj```bbb1%>ILv#Fd==~IK=QRR255wH$M ކ\?~g>lH_%	KBmmm+?W7o:99\rĈ ݻwkddd$=zС<pU[[^qԩ>$ЀN%ǻx0#ƹWUUcA٢ӧaaaqEEE2QQ5770`puSJVpVXt?ˮ'OhkkرoPVV633}>x??d6lZ>-IXfee:l;vﾳ6lI]bAjyy?f͚>"""`z{ûͤ|zĉ*ɓZ8Ur%%%kEp*Q|V}UACyy544K~n۷ۗgΜ7iiiA+<}ePjjj`aiirJss󔔔>`cҥ24!SR^膢qOgm[$~KTXIݷoɓ'a`kk;xÆE)Nnnn|XARQ[[+XyqH!B>O=?νDd^f͚nb_:}r8PEEtϒ33{vnnn@.$}2+V3f̙3޽{gll&SWUU~%!DEE?@yoə9rD
+Iƍpa_^zr,&SNAJSS|hoo,08w@e
+Ja͛7ᱍЎ-&O:p@UUU^}<DB" vNkkk&%!rsFF m݆}Jy<)L矆RamV\ihhTkkk'OFDDHj@@z9ϸfGOt1@#޿j0=..;`Bsعs+ގL8QGGg̘1'NZIwҥK333cbbӧ&}䄇O8q͚5='d2Od({A0L
+&g;wZGGGSS~Tq&8"o߾,Px<ݻx< 0JRijjxtq;w6Hϗ,h3gAСC0uT
+r?*)=|OVWW+++w0,<<AuHL&S__x444ӧ2Ox666"S=z4Aį`j^eeeAV\)Q5TW^
+T333eee jVwww}};w7crͫWaCDFFɓ=J
+x/^Zhjjrqq2d)	~S;JO[0lÆ0?-}v ðk׮/>h;UQQ AĮ`jŋKZ+?BzzzZYY͛7OWWWSSAjJJJ@vvvvvvRrUFx;vȶ(#O:op4?}߼yjkk26unT"??K]Ο|HP[33<}l###eeeH6mN?AIBaXGGǀn߾-i5Tׯo߾rJ%%%|z՟YKKQj[n}",hC'Oʄ[ZZ<Ib{bb"\l%_C͞=@A|n0A }㏃611y!I'!Q%?~~ƨQ,Y"8H?988tfeeN|R
+!Q[[+_.qllkkm*&7Yh7νA*
+D[[SFî"!5o?#RQQQ7oAرcAkxxD;P{1~?xb%qZᦇ,0ݻ@7-v'N0AAA^J
+}~yϏ^^^s̙5ky\\\_pF8qB,ᢢ"|]TTT=՝8qB.ݻ>
+Eo*PURRRWW_p˗N81x'R(!TR NybbbH$ROs9%a訪ZZZ[3EAKKKLL̍7@:~x|zԩ/^2~#,,z.ҭ˕tP]](0YPEI
+
+:t萅AM2TR $Լ k׮5kVO.$|QFEGGݻWIIIrzjZ[[Ϝ9HKKks6HʲXdmq=
+7߼yCc)e`Ȁ h`0,˳SVV^zuOYx 蓀 5/BK laam9X&hׯ u	 H1cСCUTT~'-Fxxxdd$\B={,$$D)ݻp˂bALLŋ"_x 蓀V?+!&>;]vYYYxׯkiiɼ:$$dѢE͛>}:Rǌ3k,Jlz>7߾}SBx5c
+BP`fֈ.1)ʴi444>,I	1
+y<O? [$&M][z(hcqRIIx-sT*^	lV	 蓀D ^޽{jbb)_Q$FKBXI@jff6cT5m4&&V8ð剽7:x^Էo:;;?>55liiqqqљ0aze%O A$b X,cccHRTT411_]$QKB&ԯ
+RT`ccp"..ccczZ<RSSe[dMOO߷o_|bgg{emɟ >	Hb 3Lyyy|ߺD"I0H]|9I2776m>HbQ--۷8@F,?-[8p>#+nK a߿b𤹹9L믿oܸ?B"G H`` 1bĻw:W_!2թ2|u뜝l6AUUU HBBɓ.\aÆC޹sGCC
+ٳg***Æuuu$ ƍ31199F={,'''==9fСEEE@%ߚL&/[,((hٲe0b׮]+]zKKKu~A^^Çʞ?W;qE- n!!p}}5k@r	zzzU$OKBQ]]rJؓ:voV&r_%>ڴ4\iF*LEXe bW$޽[GGय़gLfZZիW6n8m4%%%CCCkk7?~<$$D\r_.[YY&F799K_|Y%СC7"@O}ǬYN>-566FD[[[Zx1g@ Hz	|$,	{zϠR H]jI7nR{qY##uI.~vN@Nܓu0Juqqֶ9rMVV0.UQRd2UTT})--mѢEcǎĿj*fɍ?>##2Xx1`iiy+Vg444~:[h8UXE6%%AXL_---ݻzz%%%]]]ݓ'O8bŊXӧO>}:\TQF9rر$	UΝu7|8i$Kc֦{۷o8pܹ&&&nݚ7o^XX؇TTTF`#SYnСŋ5- j>Ea3Ɗ+
+f0eρ%!/KEYXXDEE߿_^^t8HӒPY RW^{RǏ?e3g,X`РA6mʗJ޸qꫯH$Ғ%Ku3HOOG'a! aӦM)ykiirJss󔔔>ҥK a쬧6snSo033SRR:tիH4iLJӒPYR*((q㆛M&A%ԩS0`}O#hjjڇI@l9dȐ˗/gddXb̘13g{#GۜL[TTt1mmmD&޽[UUwE?tђe͚5\KKkĉ'O[%UxpK.M0z	!88Tr&>	Ș>CPPhyxx̜90:WjL8oRPPVOS*o@<l0=}T cÆ_}ըQܹ^zZdff|frD!O`	fcc#ȝ2L>Qiilff6k,%K,^x]dl2&2jrrr}}=t3xW}vxxyjj*FCQTUUU]]Eɩ8L&WWWŪU=zX{Xx˗W@O;::?o{ڵ>&lii)))Ύzysss]]D?Y/<jkkxyyy1o<«+8vرcN>]CC#44/#@$H1@
+::YrrrG9uTrrrOa)f/_JFFFE ̧ݼy3KHkccsIxȐ!:2k֬p8򘘘{%&&*++O0EQoD{nzzz7o0`].( @'~sssիWfϞ={#Ghjj&''Ϝ9?h%aI~P^^ֆ H+j''333LkkkXX˗/$(PAp%$[AP4KA5DA8AEm%A5V""EKM7"At}A.ڛLq9>!fu[[ۧV5s===?&˲piOOO\+p8H$iZ{{IMHsss(3ܞ >{566...TWW>??<~$I>?vvՋbgggB͖|xxe+WfVr]x<ymmmoTdX,Аonn:\񱼼
+$IO$Ikkk`fd3|gg'tttx<Gޒ?vݞ7Wպһ@t:5Mme0ׅP(Ӹȱm0L-\r'dP=m/<Rռyͦa/B¾o%YQ[;33jz555鋳RWjLz\UUSjhe"U*lޢR'''e9EŨz<!ou=x|jj*HX@|HռƋ6߫TzyyQUUQ!]8eJPEjimӿ_LŇ *M,4kwyy900(j@5S @*NOONTbP+RY6oJnnn]~R*DZRWWe@ʲa4]ZZ
+&ibbbccO  J   >  >  >  >  >  	  	  	  	  	  O  O  O  O  O  @| @| @| @| @| @|   "S>    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-1-rem.pdf ns-3.21/src/lte/doc/source/figures/lte-fr-hard-1-rem.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-1-rem.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-1-rem.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1261 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 636 388 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 636 388 ]
+   /Resources 7 0 R
+>>
+stream
+x+*236S0 Bc0˥h^_a 
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 636
+   /Height 388
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+xwULyL(0!|ל"bJArfCA	&Ā"D@DDQ_=up}]z}{gݽ{wS]᧝?|O	>'ώ?lݲe_\ޙ|O	>GpGpGpرo߾_~eǎ6mKpGpGpG`npGpGpsGpGpGp=G`npGpGpsGpGpGp=G`npGpGpsGpGpGp=G`npGpGps07Ƈ8i;*nքv?;g﨟[7G\Dpħ/۳GoW珗kuo/+v]OG|߸:_]sL|(9믦=FolpUvv=r?ןjݽCc>QWYQq3_94Wۣuwv@Ϩ}vp'vJƿ'%w{bRn67!i؄뽣vT5{`'$7kd}vX!Po]0A'{FƽIsMC؄nG3m1Vjx̻t~dT=:txMS>S?3<_P-2Gľue@o(ÿ<шطx{aFni7zŜ,IQ#b]:<q	*-˼4Ik*.4"'<!45uLhڂ#6	U圼3C9'Lo>,ǆZtNhѹN٘=1eO;)9,2ޥ%ag7)ɻ><'7eWۇμ}JhqG72|(04W_Ouҁ.-9y3Bz8.%UtN*_zK|j^^E%<´z"KZX7N<* L^Q&?yjn>Wfm18e\Os)Mڪrsu$Q+=2)f#o4'|4GBTd5=&&&*J),Jy2Iɯ2!?w^.xt|1HY-2c'%wfP7Eug^1m C*B!1V#'ϯpaLE%CeLqsGoAmInaVOH41!hrnZI]&$-I{hz8&>2"n| ^e(qtTHũxF(up/iLNy|=v!Dz;ڔ;'<Wy#@%j%0I5A9n7tcЁ#a
+%VxF%'4QWqhkb!ͽB4QZb`aq`L*9Tz&*[dۑш/A^0b|*m/D=_1<v	шUFT6 q#p+~:y%Eqr)_9%wXol&kG
+@fj<䔗 v{|0S'T!mhgL| 0t~NNy⅖yvYgv@%ܕgM~edxʃ}]-&u¿pQ'g|QocMJK?y5A.2Ĥjxc2 44f9xe^ .oС$%dZ~l;8̴X@LR(  /ʕ{Ð7}s/0+ܻVkeVkBAU F%ღ֨5wThUt,l?!2s?GPsN#'Mj9(t4uJme7:ž3qj2aTH1D(ϼ>U9'Ud5aĪrNA><2#CW<R\ey.:ũmjȺ1碝dI+(ɤb.1IEDef2tȐ/HPisɣ;H,j6ӏn0ps{V!$9&M_]TJ1%> sr UA<@<aM @f[0}*="n.ađc@ }06ze.N$hRd-JMN}vẊL^4mE R}0嘖O_`soۘ sO\?@&u%$:;+\ (.) -">CP0Jp -Jxvuh8HہHr	ðMhK?!CH)O1 ]!C84Z=P"t
+ 
+]@+-oFCAC
+@S:J' sn{s {=v:Q6*a0%a&đ(1m~EfR:	7iK;lD0b0>\v!}ctȀpK#,#K^E_~;:/TYƿS9䅁|Wfc
+n"A޹[s24?`X/>Ps`Q &*1d9nYv {Kah܋ٽ\wԼ9`VPKO(EK艟'<>8it[\8g((m|=;@UYsP4: 2L*Gn9E+9'ҚFԽG#䀒.0Po}" w{j^6/8&?	ur3..P$&(&U(W3dgM0d(EL1s۹ Lx$%x71hv}Ϻ!%1=F9DU#fvzM(l"sW≂!}bDyᄋۉɯMNmPS#@/ /#K>?.a,CB( .*%vqꓼP:YOE@@6Wd]ƓB`ׄ~bkB
+|~GhC{s} s7+OZ\Dum#$Z:{-R5l_.
+CTlLs}W!]%)	@ RRp`xk'Hb0G6FxP# 4.CAZ5?&DJ
+!XK20.`<YW!46ʉ$͠ih35d]gDLB1͹mbvB	waC$:ں&U0U_%%h'hj婟f|HtFP9*Ĥ,Nm.hUB@;jU9'OI)[A:  %QNp4䮅Zk+.1=sp+ 6	}|P\@7?`j~bkkj@ܥv Xkp&	h噮r}}vs;ЂmTaDX4rNcocRP*_ceɆ݌,I{D*@B/&`1Z/5Gj,8$oׄFeKz@z% 1uۦrpLIz&Q'1μ⊔]6D1Ȗ2ӸyofS	-LW(r[iIcH1+TRr
+J=5Ǎ6dD2{$WRB7&Ԓr2ѣ9&Yy9D̈YswCk.v><ǗxP8}>טrh>Fc7s>Ok8>L3ejWԷ_Px*}ֹv̌Lg]J0l~ESO[wm2u;J->#Ң67'#Q (0{ۗz+A":ہPJ^	hgj3Wv<:Vi|)nG9?9q1`Hπ?i[`< TCE$a&lN@@ +]by
+j[zΠ1hS]ݵ$Hde	0Qq3)x"Py0Đ,$|~ڪqvklW)i# |tAEzՆYh_j ?ɶPQiM0ז2ȕ[[т]_2:ϱ24vGW[gryqEt<͏2}+<Q&pBFk6N)=" eTfS{O۞xEuUΩ oUIegz.0pWG %mRڃ;rb30sq;}QW ,ǧÁ)N|1$dr2Ǟ_) H,Lx$UďBQ"<XeLceYkbB"*_Ch>CLl(i[`S0b @M]/d 
+/NIZj3Ŵ41JWe~܍G@\k2eA7[+<1[xe:TP̺};`aq ma7VX}{-1Aȴ{+w0Q
+A[D g)	BcYM1dETEL}/	UI@.f>8{"v>%#FxPx8$d_j3cDYnyN6b]H2/U/7vZ1t%jU??wX{aDz|w1F$0&~
+<aݰD_Ԍv0̈׺ԟ,Ho ݆e!N]u	,:xXtM^*I{l( 
+&kY'>	Kq$H 7*),rTɿ`:h˿Њmӊ5V@wͯxA3?QZM>ǾA?</M[<y]S63-=oȨ.ZP}L{=NlƊ[l3W0	Z[L9Xef]i*甒GQ{QFu Ay浀55saTQ~Z;U02-1,V2@d&$C|,7c,)g#Bqjy
+Rꬋ)|3-aC	szg@@[M@RaJzҽ1	LHnr^&9+jìv@A:GCcEQ|\&vw (,]*˸175P:̕)T4	Xsp?P'ˡpD\:wX\R8 [*\]L^7:bC{X&:20QQhD7LQ_A?b	aNZ%UB3c[	2[_P6ҶMdLhwseZB CȁzDiQ j~jhE(5(k[[z`(MO)ZNy$T	AE) ^vT K7'r:"Pd`hg3<á2h!C2N3.	nJ}7e<Te/ #󼯈[ʞ pF{gQo9Ⱥ"T\M~2P;9f|Sr% 1=۴KP!}/|D5 MXkڨR2yݦ^`ThaV!5SGs@LА2]l jRnpn><Qx+iUW֫(8kIÜ;JZlˢpemg^f&\ym7r4Sj y9~3xvmPEY`JP 8I ZvA. WK @LJ$ZV3dlj,KBO@2К[93']LΞQE4MZti[Q"f) 72sA` H\1Ȕt_2C:}dsL(xFE\:.q8"9ChOʄGA4G1@(J*ϣ9XÿE)/K<!߸
+OzӃݹ gakjvrUYİm7?s<Fmq	h{4Kyu2}@cH3Poj+w^Nt4Ϡ]Fn/shjpNZڂ>jՖaM*[O+p@D#XQZ/zwHc}<rTECЇZݝCbYM*((HVo4M_nFR2A@| 	(wwX]l{ⶑHڶzf[TėreB"f%^MG.h1eR$q|4g^;߅0k`% ""]q=6%sN`)n8*	s|ؘ/2\0-4a׆?գp`-&`x
+j+
+,
+x/ oc=?h0t뚲oׂXTP"'R	wDGhU(C.EU9}wi9PK%e74iV>4i噗OL@0	Vv?erf\PA6
+>ũ$iLȪ!"v2?QɉB1gQ
+BmPVҘ!0A{:.zn;"!pŴ{cK'8&b\XDH1Py^qO͉5\1ePD2S"$`fpbR_@˯okܢL~TblB)@	K
+: !0E*kuyiVzKI̐ܽ[`aq
+pג8Xf%\}Lz6g/Q#-sZ"fh|UTPl_FFrA7BrWɓ4-ﺛ|@F-jw=/
+̗:3[]JMXbr9D .ДBJ.?t´ʁw.igoyt*BK⦀#R!Q-Utj6Q#D0N"*s 5a0ۑ+UI=3JF2n"/A&ãOVPH׾P[]@`C6wV5kbHy297kTK#g1ͅg)2'f7u,7vY~rPq\Mmm2[^v7p`=rqk(Zqv%żϵv,-{]RN|t\kk|G=וYo6d<rN.Im9#sQN.F*,:
+􆡢Pܿ&?řcOAB0㖢L&[Brf&T	ym6܆_^lnNf"O}D<'SM~$: RƇ2yS~mf锌(@<QrhhReRD讈hХwkx
+dnR90P>!q0+- /5uB}i2 A"2mEcZDCGAPZC8=AZ67hpXu;#x>'|7%V3jj^nu㟆4;tϿbb7ʽWmJDlJ`V-q-N
+}
+pz&xLWC: ܧŜР#5 (8FqY"24"x?NXVķrWrWy5xg]6zJ J]'PFʶı3CM\~;)!dL@q0~-PRae6VZ3Pe[7uXvy'b^.߮_o^~z^5[DD[҄^WJ"!;gӰ̭}|Z~!݊۬ '6aUVsUCjDq~{W=dT-iJe{]_Vz,6Upshs׽R;t,rűǁ1%a	5T)hdlӽ%c*^	
+*4 
+[3*I{l<J&	TyL*"2 3n39mQaksPvrW@bf.	 "ebtY#[rW52)ԌLpOv4{hdW:!(0%P =vl+$amRY!2Q+._t^N atvDC
+"#ɍIM #ਮCaA+3T0Oj򲠯NWd]-r*WJGU?5=ښSmA)wP% Yf̻|?rPY5y\EfA~;H}ӡ~=,^kJaCmHUfw{8c9>c.0d[BzԶv,!!mi]	F PL/`^*l#0YG3`bcJKl|
+EsN`P%ivyͶ_s[n1ohzk!(XG|[ͻSu>J[;P4c8WhKhWf3E	*a*!oH&H8o+n2fL5>38r^([0=1.1L+]ڋF92%2Yha\VGR9ml&9[ ([.
+~ܐ_l`~S[yI9cp-nK-_-+&K/PKt-2i.mQƬJ0jϑI6:YZGҔ)K+2%9,oZ17 PsvR3jVyʪu	f
+)ϰR:Nm4QҊeY0 4hC0,R܁,c
+N7oh}wFE^1DaD=zqDTnKgm.h> LN}þ!OHV6h*D{Ͳ|&%wg<>Ĥ %F'Y~_yθAH-茐)>5!y1M7?ܖ'#-C[C<,OޓS̳1c9U2P>w.uP?ɽ:K$2DA拝܄b	\h4J9ݓ׃==e po4\tȓkt/PFV=*{FF!7^gm5j;Opn 4tT#~dKi5O =
+oAr9\.ueN68Цk:L?spP,ܟ.2 ͍T8)|FEUT+}qￌɃp4JNOGn˝"Q;i2\Run8vuqX<S{j^6*r<@໐_f(VHuڋë{~~k`W~[IXkD\_,q=95s~*|VFkTZ7]6t~bW-P0_j3as
+D<;'Hz42{UfXl+[ӶǭM^=ڲEw|ȼ* ȴ8ЄsI WO"`9Q&& \B(U#hvpA$v8bxĕ2TD=D$뢕+B^fxnPiݵ^?I"_q#`Pʖ+7	JdT2'yE֥"=[ |W48'~HxbHWd]+le1h@&ojn^I44!/ JڙErtL|J-'dАΦ~&/]>(U-ft^A
+35v\$(7F_ZMgeݔdP?S{#L|"#?Ք/O^AY_~!֑?GKл9 ﱈ5!i4PU]e㳑?NFs]7x B6Uz4fZFDn)r'Ƚ={~߆Ǽ׭*Do6]4@]70NNm&Af$UW5B2L DZ
+{C2TBsdt
+"3)П/iہ`cՃ*Q@^m!ŝVϚcaO1Uw[.DP~Az4ij]֙К'Lm@L+zН-ޔ;!uǥ$!9j^.]_хrNv^s2:uEvÇ՗}+tUDPXF P(˸8;ǥ]x)z'^0+EӼӢ䎼q$&*
+/)qZ~y'@<eCib &ϻ٤,Pa!.*n&9Sǌ0b/+
+#jps$7Y=;ЩkPHmY1&@<U	uSL%ad'ZɷQ_] 4˃0i*BBG[,MWͽxeEPMNy^!_4bXiގRп("h@\]5
+"ߥ7BLQ$ط 15	08xMP
+B)@-z<ufhtqDTÄo-jb-Ry)EgY>DYUF'<OW0$mYwtF=!t*zH]kkelS
+@pq+uf%lXîBA7y"(" @8Ln\`0GБ's \U@ͨ	B3A&$\g2J|bnaڠpZǇDϔR%לA3OqLp9n""
+2/~x9jz+	h4%u^mP)L13mU@ʶ#*ž;ڢ:Z!|u	L4kU*P=m?UgVli1,9򙲽ׂԆ<_+fvl20a"sEuppZ~옄Rx;0Q(j#3-&`!LR3;\{UPPJ*&;&g1b(w\xָrXQ#%!ےLE$v='s?UQs"2|>	zNIcyYKA4i<ZyB|L4`nƌ\8>q$ZEd3|3\($Kan<y'L*3F9ˈ1GF_CT!OtjGCo$s.F!u#&\A-\(5>@4xZuX<A]]>3SEV!-nųp _BlV$j292/LLꥻ`Yfl˽?/ntB	(OBj}s폦S98Z B}$~Ⱥea> #&3
+%!CD_nt^hk4]eɱKb̗stihNJJfw/"c1g^ͼ(>|/V)Ssj&?zkM;ˏ{ĐB4zX*K$du%//
+x'@ۺgX}w=z"K;|Z%&zNnTZn7Ϡ. m[gȂܸ1C6[梇Mg?ܚJ( #C=|<E`V w"08A`@Z.ҽ(
+\	 [8( kࢡ@Yz_VT,^塸_VQJG_}f{!"LNEquW\	̭Hڀɺ2m%.iP;2\U1zf|}lYD
+3xeM~*0}	3K%ojM!Ç72%6 ?bd%av|DgP!?eJ]$cΡ WXOiIyf>P[pdy5MVi6#VaYr !7z+NQ+:X~2f6'?Yu sE>}OuX4WEU($Th0
+ $S:=f,* Uއ^wUfhmGo>j0/#!2mX.S (bާ_ --yZ8QoX)z[1 aZ2W;zKm	}jLP1uoG<LcG8Xp5B_z a`CzͿhHz#<Hf0Fl&Fн%Q_#w@^AQT4hz~Y)P<
+(C.@ZEq衶E{*W=|:j/8%Su~;hC7SVܦ&82t[~mh¾`:&_?oOg杨_9-Vp3m^jh6 kQ-	قHiKf|{KXkx*x=]\P!@P ޯo,ٮC`1K'jtY  ^ef*3,|͟<D@scnoPT?<Sx9)P6?pAy|e2,_flSFBKeZjCUSȊakvRE@6z%,?ߵP(S3?gBLs̨Vf7>qLN
+0)26#Dy4&&LxIZKrT\-7/gsv^=hyn	+5Nɵ̩rܕ	08<iO_G,<DGsA|AمZG~@b]|*r;,0-=nQnPH'K>$'**m/2%eL'%}vUp/_!/}m!_6Lߔ.N|V<Ҹʤɚ=:/\E,N]VLL2⧉ S5&Yx;:t(S
+h-hdE͢ΔgLSzxV"bhcFtIY9]y%<Q~;)+<BE}\q<j<jT^&d('/PdcI ofJ(@m 4PkfWb˿`((	mj|״F'F @V 
+Z=1cٷt=q4[o4
+t==ڕET==Μr{bx+ַ&IkVd]f2WM)Pu>
+`Qr'brNOOp[!bZn0(h_
+:=dW 3{_}Ҡjg=(r.M/
+زVzY!ق>u?@*ae5 '0JUlWq=*n:O
+
+t@\r*ϼ6d+Ht|P۹A$Ueֱ!L(I^qe̕pi`A[PϰOi[Z:H,OC/	O-ޑr+פ,,`b"Pv1y>vš~=,^顖uz&;GUn#*>$aG|]hZ6pQ80AoiK  <MP-zcw>2Q<v)
+x)BGu/|'*xKξmE'Z>F.-*QAaP"ncB,Jx#Cya`|P^.523oCt'E`68c⍨ 5ߔL
+c20.^\Y@@	0%*ɴz@牃OB'-:0Z/%P^4LD
+H4D5e_vيeSiC<ZζQT]]gl[a%TByn~rKhݳ-577uJi.kk?у2ǲ_%p<HfFu	p?nTYO^pW }iAmp4
+9=w.
+^ylVq3sXSx'SK뙛x#CWfOF	eq#T-m"1A%a_ۑQAOx"ro-vOz++}Jk/)f8p	(V360R;!0(%\}Ȣ4vW0i1vt>Y%XG a:R3כԑ<m)R*҈[~2aڟ'D#4ŔF `F!vԦ.EѭC
+urHq9@TݥGi6I,hjKBS(f~IXKfׯGWӊ)qxxscZAly'	08xMfb虬ZM%=zݽezй:kaRU9O	_n/8`2| C!U^'Ac1h 	 eP'({\A#w!<_\Ee/q͘bW!UUDDoUE	,<DR&ɩmyx	(2?؄"㲔a	Xֆu+(:	Xh?=#hlS}R>`_uy.44&y|.R{<H&552VU[`>a{^@$J1.jaA]kft9wkcΖ>+&X>/2}! Jbt69VShFdq<.7=FCd9r^ t2NyŊX(˲z6zXhhRL ej4@݃(b׊dCm$5C1W$=3Mml1~=С*:"t#FXâEEE{FYR\DT-(P()֮f~kiCU٧3 Rߥ]@0(`[D1 d=W'a;s*:Q!)B\S[FREϵTJ9'=/V@V+1z )aKq+ ݓ8qRp酿ybr]T;S[Vf<k(RX88XN6y;04x G 7y	a=,#(6=&wy6zFnvˊܒKAmݞN9Lv#z_Va<C@mF\	0P{A3]JnAyYZGJm-TJu}v"
+*@ylW"kml 0ݳxqy 	%@L: YQ	%72²+4gqb>EgXdEWmiqQýۀ˼m 0<.,e=`")mLDuo\qWIZ= * >mm/n,4\UWc
+Bt@M+T"-w_c5uZ:-(yRTnL^.mJ'd}28:-řfy 1e8'xv`)psdz	̜,+Sc[FcY޶N]'פ̹xHYZi&SiWf;*c1<y=.*"]zуf
+טY5Xd	ZMr(kPM9U!yy7GrֿQ[ UԐEH~%Lu	t\uنcܹPEƐas+3Bf 2iS!.?5-?EjiĮ̺8.xS먍:Od)W50
+^U}6O}A\=W%LQ'a1d9)y
+/z='B#hX!$P?	uHmC|"l"VSz-XmV.[XĚ~p{E`&:uP.	ӣ`qEQ.@19hygmQKj`#T2'hl=##+Ӂѵ`Hafɯl*Մt+^dRr7
+-S5+㻎]Iе9kڏGDwF!q4#~ýtH#{	&0;{Yʏᜠ-+[G"Xiข6I2S7wyX-38ptB}=kiW9x:2HqM>~{\phs/vՃ)Ȝl5xєy>m K͜jŻ0l5߫
+Mf&]$m+MXh@hf4?yd\vS,պ#ay'!b%,
+fmRGz0;[Rͫ{fC3cyTثw"R:V6{?73_%ۄveVjgv+fo2Z*TLfj))!-a|2cW@;ʳ&?) 	}RBP:wKe:YLcۭ>K
+c<R\M^|So3+ϼ ix*lz*c'&fVOf'4p!(ŘZZQv
+շ2<WsNJ5OV,ӡP EQzrnmJq9pxMtX۸ʓVTl)w[`1C{X&u`_ˈOGtrlo2s8dȝey 6?z&OVӂL.g#mInEJ.nJI=!	 91vS{eFgk_i0j]%K_@%L:b64%/TK%7]	1 0+(;%lZl'lbS$+Q%i,k_@mS]#g"7-jeyb<΄L+6+#f[>=416a2znNy*DNiC=Bh^0(s=!CB@iգ}X@4A{R+	b|as).Tkc@'jOivWjC;֡C3pdfT-!`*C:Pc[ tgl͞m[y܌WԎkMҰEv-v7̴,	2ѫ9xHCt{=绗2.U`5gȸ)S
+R2'%wB
+MoFFL??wҀDseSW23eo	Ȱd0LYHR6-Rxd) 2 M "12)hCa=;S".Fm8BAVJ-7ԵT#g0J&&֞SS"h"r_Ol|3̼9hh2HxV\GT d_!DW GO2MP(ðU
+<w]rRrg~2nڎ2Πv,EDڋOq~=,v*$|lmWf. |CvEoyBG
+E
+{R{nvry]O/\O@dDV)MZ9>eH1AS6׌"&jOƭ5eݯ|߭dgKjASߐURcݟ6
+SRm Jسz'.u~?"n.#~#zt星9A>4B5һQy+k)hw~
+3lW	mqm2&+6M}!&A g|/Z/Lmn`.1j!sX4jyQZQfVakkY7̔eS2ʰV8!]#o%MZ)`Nr	6	+flK=.WT0P,sTѢeyPeKq,jC|L{ЃIZYQ(qtb3nD-MݞP
+AM""Q[B.	-dy3@m"J0|>8Vy3M8F4Cs^[9Df#Wm<5"pݒ唦#3dNF&˖A~Lk/_
+ifU, kQK5:X[:WeyBR?B y4 Hy!Q{>J,Fr,Y-h
+uX*Yqat"k%d$Pꙵsw/=Okpl誨DD\e>mnb#Shxو6N<g@ t
+Kb+ESC*_]؋k\ۘ;Y2[B[aF2(·?@GjP9
+x¶te4{l8aNAg GhlBzruy(fyUH=KA=4sF͂&Z#Gz@8uNqB	5S,UV~7 XmMǗ5L0@Ot/ZW*A^ =\ 4Y\K<m~ L3]aqS~qit:=.+HdZX~ݔVm7nH1{=A3;5VBޫ)Zs)jdzr5|AOmA
+<sߛ
+L]hp[gs#q\^:iEcE895Jw5p\yJb@&0*R ɣ7zrhZ`yr,"8&z,Ϣ)ѓNz1:5޻Pd,(DJȳ9'08A)-i<ВWX0[|n H
+Ⱥ{y#M4ȼ
+}/^
+dVy#V"NZ+Qè5HIhwN:L`I}rNZp7xgK}I$z0ܔo6xy8_a~&'C[Y<~:GOާ-\'#}+
+ϾSX-GC)>ONAwt|%ȥS/Z:$HH`B!jZ[~n 1%υEWA)W*χZ2-(?z,X8+J8!~SsI# 1'+!|1lcC&׺܋!&|UYʾד=)7jPR%#G-.VJ{8Շ8$CaEbOͯ.C+@hkיpom^a;`z+?i2K qaUe-ң/&ަ܊2maw]_Iؒ1qv=-ua:4w>Vd'v),68 o z?|jzRWGNCG3\phR8kZ~|$.d<,hUyh`l2R:xN6?
+;h=B!s^Nc=noTxpA=y@q@<h0A4߭PX*d9GaBp&))]&ybdL̘4J=ֺox"nF"zYxAREVG9ofq1U⩹yS_ayRƖцy~[Wd%ũmLjx
+RD] -"P9w!{`L2rqS
+7~F#?/<Oka=aAOD|W4}匀ɿT;ݳڊG{=W
+ej6Hxˈ.#-">d0	UoY
+ztm,6z[E<~3P#v)*.J)`|Dc Iɝ,6rB`1'+설+{ZՈ,{YYr;Z0%9S9;ȮOL<  ui>:&A)l+-:¹q*x+Z7Z %p-=R{o>hj
+tS,&\(ndwqh^
+fd2Rjw{qx(mcMo%472EuSvUtUɴ]jy/?Ҋ}\>-jyv<ߞ"H_7ڻpWZJ"k]M[tns/{4ȿdfLuLLGgɊ&B3bTfMy%*BEQ(bMI<Ab.)c10N(eZ
+uy;HÕ'VɵGxW#y':)ө<ʱ	ыe8ՂHi/OC7 Hu()˸J:.^.a@MUI6K^'}L-s5ӆ1/!q+hZAK+bE֥vQx+U}QbBȺ^O>4ޚ4HfPgm'=LeE)/C5,>5_턌 ࡸ޵  !J_涗*bⓑ[m}xwˈP47tv$C?v22sMUďF|IU#g
+yNv,Xw_sQe41粒ZLQ .j,vG	Z]üAǤ'yh8$M 0Q2'C$С9-;J3,fYY(ja|0oE@*ϢP6SosS'-'mh%g)-5wPCPta`s@XR2n(P0mBl!ȸa%+Z귯Xc^랱+\_[moڎpT߮Ė;mi59KU[I<S09=[-FVp?x!%Ͻ`ZXb4;{«M]mdgUlI[\t[*bؑxeLI9`a"bGߪSy;$O̫IɯZXlBDeɝf.:!gl_yb^&&.̣B
+OqVoVXa-w,b9sR61yD߶@rc<qAs)褌6ʦYͶ5yJU}e8W擔XTNu	gq"hBQh,j&<@L*@kZAH3N-Pq8frsʡp\
+@ʐĈhTfd"/;"v[--O)Mu_P-Xn~;P?	_:(2.z+hQ
+>7d\W0w>̿᱈ L~0ev{^XMiRK6Y[V\Ke]4n|U'_=1Usc7psԂK(nf_YBߤ	B*8|՗Д[iզ<'E%e1rMLFցB] E9 y(| x` m(f_tZ.?(t6`ϋMW2@@nm122'ſokE܈@ .ePz͹G\ByppC;ۜE䄏/J+=A]6XUPمcVp[6+0aB^44Sz,h<XP}^lwⅎKe'eT^\:AQr'KGgAJ"!oR%sC"*k{@jbq3۵\WLL2k3ro =x:31-mbvOg`UA7,f{*@λM.elP훭%bA?meJC zIct,&_AuOF,,{-{H!}}GׂC'=tOHH&x^ũAgs(Hiż(yCh*W4 1w׼C{X&;G(|G`v3	z\	~9NZG~O1meK$yϽ(2Q؄ʆ -{z N)v*:Yhw!V<[=|>UJ(y3v]*2/G? < 8tWuRr/fs(
+ ~R,M{ WAHP=:)e>/Y| `H
+"\ZY/E'4rn(Uk7O7<C@(N'}040d}6ms{ihLdӫOTQnKr;n7ޟ1&~cJ.-
+/FͶn&kѫڛB	p.Q?ȠViS-=%,r{@Jg8ǹmh6fҗjuz? 
+|gLThP+1OPB=2	]_*V[Jůw| #[~ףat[[x>G(3L=FAq@I1N@B3xpw"|~^
+4܆fcfο)sP@U63i|Nt	PVd]khŠ)E#
+C(<a^̌xS:4(Us9I:P	OJsR3hb>Fԓ&F<'>omԧ,3uO=D\ZI}E$c+8[v?7梜"Aݠ'7gwm /hHJ~_?[-#6c u# x?ia)ۿV-G ]_ @`Qwe .n/-m<Tn~TQEaAP%-_BT+Ǽ[u>@2SYP }ϰʢh8+UmĀP]Dӯe\]xEe0\$ci
+{µP+6ZהCa8
+V{=*}%γ<tqꛒEÖd?=n4`mCߏ	}?0VCBRXh[jQNw0,qC;d<P804-s衶-Gs3a*Bja	S
+%fQoOUp^?0IM
+73:/Up3V oW]n4et˰@\A.ȺOiCgZA;a</*43m(/SϑF.@RTT扇d&#(OՂ~'*s:bcλl=|h<-r92~&EYqܕ̓1	" 0Lg@HQ q}-T5ӌ2`be<3Cb^.)2hAq
+S~rK7훙S(iy<+`P%P͔5y)h#9hhJ"VHMHP(ccz!U{%ٽ	pRU(͌Y0n}C{X&'֑߁h9[gSo]}E|`'(~[.A x'|q߁U;,VV=loW񯧶W̫M@ ӯf4	n¬V`ܠzm4}sM OHr4~X%776(,̎Oc6WDMsbDw7^5el+bSk234]CSdοӽ篪:	%Upu0:@Ǟ/쁿-*qaaIHAϟ1.no08Srd3Ey)L߯~j( /輣KP ;o/ ,mwmf|ϟ+z}
+9Px
+KwXhTM|[SR>*G5S 
+ ̹Qiyjnsԍwy4/*G~n^/->sY٧39kԡ<bafҙ{ũO@V?0E{Gܳ ]Z޸{2ct*z52nӍ)kmQ,	Zhq?̝j[6&2k&E4J4>`bT)L@b"O*pהrx5$DVXp-S%iT2557/8e&@-M{],g^BnnƣAAP Uqra@nh;oЩ@\aLF́K04*'# F<.4Hė`(tWZ>+bOnAD]0-#{^.ԿgPW=HJUy+JxDy7V=vsn3ŠW+ljEB
+lPA[d2Q7[||׬Rs{-*l!̉ɯ(}uoaLB2'jU**j*#:+ L@!dAPQQ QDd	3߻ZG#yss9}^z^]i:W] ~vDm!6[֭̔ix)@/֌_ ^սxS02X)[~MZK*9V0cw1MoŽRA`wx˱*	zb.C_vQpp$1%d
+RxIf5@CxŅǚcǰSpkI@~VpAr2eJ˷2Ph.id.sβvu"kno_)ę*QK-[IQfxxGLg+yWeٙe{F.Zs+v/'7r/7ҍ4Y0
+\.wv*G.p='tӋ*U휡A" 4GZjWj8Zξ&̋8uu.Z^v^_Lg-1LW-Xő-9YWGw:8j"Zuw]Kˣ6UZ\t+ɨ-@,xOKµ99(䆠K`+7b-\JJR@~[LY}e%vU	C[Q»Mq;mos;dS_cXL5}f3ZuBcQך;>]i\/'ϭ<q(0b:s*>ٴ{Gle6&.XU+%_IȆm&{e *:4M2X-3i|s\`xk\B##9&ǲ^8%tE pJ?Z%3ҡK|(PG!*Im<>)_v, ͧ3xU-Ja9|.:&ʦ4x)h7C2"z[l_QT'@	o&-7l[d֒:<-I5>ȶݳ$ua[d9;CZ!{
+<HYbOXJ15YsE@c.@JX^P^\ȳa";<+8XZR}
+0oT`# 1 &c8BY8|͑ǜW>]"Fx(V$i&8W:xeo)
+P^ eP0|/cV:%j5c-?q޸^MxS1B!= jY:^ľjA*%օx8VEJz\(arQ䆾,	PG&;R*qf,"c֋t+c;>
+LWrȵnNN'`Qd_lZ4cK	bA`Pp)WX5KL*3*v|.? ǭuo.c)(=`ʦ ]'f͚qqq4ڵk޽%\ڠA-[ڵk^=|Z*|WOoF Llőn>_Jٸ:@jC-=Y*zޮW*N^X[T%a1uH|~A#w[5}#zYv@g@J@^oY!,5^Mh߫vOmll#cgZj*@ؐ0f8/.>EOӀxF!9bu# .fNHvM
+#h|oF(jbg*k7+L?1]_%+b'2Їc)W458>{P\ta}
+D? 1Lvϛ@ط{Na%A^0 k!#vd-rdga\	0S` Ŭ[ӯ֗r&M_@,Ö}	n:۠'˟կj4ۀ㕺SU{apBp
+ `*\[zԴf*o|<v~DYa[נc4+ |-D7G$I}AǦwu-}23|/-ps6,.Qiq,ٯc /&]rAa|[\7˩>OS3I0)xp^<4h#g'GU93C7Ɨƪm ~.Vps/}^b91!SPUU{n0IJ!o1p :ڴIE[mǵ[9-j'Khų-2VζtHͨX"]ǷO'Ov;_^^^VVV^s?sUTF1cʔ)3vVZ\p?2{mGCkALǓpmiuW
+C70%-wz\̅~}r7`[ep}փ]<qlsfaL;XR0HJ^e3HX*'C\ÖzAؖgxY^_c*xs-8KBEzb[Qv4Nsbb/`-P*1DcgU(Ђԫ-i朓ajZ5(-Ù"u}3Iq<3\KZe UXi^8̬"ʮJ91SIuBm^`+Pe(-(sZ؁Gv.v]r|>
+p![GkK t!{E5Oywi^uҭSqئAFzj|SU1A9][Ui+*wAݭv}M_hGVjJ\/4[\pH|!ѵaÃkg5ΆRMLnhh;!1ۤgzLeڶ]k#C@
+[Ydn/?mƔ+,M]yx&LÚi^%5K| Tv
+7[4"QZG_1gg%i!(R[1墌D:^L܇oUEI ^`!Od^5=D'a߅GXU'Wɋ%Kq	]iv%gyV?C#kurgt٫</'GdfѢ>>PZ9#ה.)E^R+2 {[dRGo{ :%KoҤI|{1?߆Bs?gցP&Q*|74qeJܭ&	EA^-l39MEW?UYRXv@mX	8V tTu[dV%Ps0; ;^, rle.75ep{Lt3kRPZ^Y" [wDlbߊ fc'U*mƞlk.	ZM-p<>95!aU^c{s$f 6DCZVUlҫBcL%tdRt@(x _4ѶyJ} NR NP׃sdmy}Z]"w{	K^F+!]ck3З4e,lyJ)BW?\"Ȗ9t'}fP	 \(W:Db`jXjUlWs=?3Y8Y(C%t1Gǀ\AsTrBEfDltuQntieX 
+ͯ˵$adVR\ +C܋Xhӿ6݉N"?3}JzP`-䚖lkW[U;Hr)9Vڀ>9@s|\VvN~:ΖC,L;O~ePNK+Σ᪌s4ꥊė|0Izʥ+t:-lNo. 68^dz	\65,e7T>,em,l4 4ۅO<nƍ=zJ*UPPpUvYNZ.^YԓpoiZg<zY[mZHн'-w:PrhatB@LYtV7
+-PΑ1Sz'1T+X*5ӕ'%ɩr3lX.2-i?)<*k|]~/ȋE<OzmVȘ)gX;q4}Mg1qx؄rvd*vfZz%~'&ן>MpdV4N(7RUJY}Ԋar /z15޳(d> d|fOA[v@#aۻ8f*p^)e`׃_i
+#azJ`eDWmcW z}@$Ji$D?cd~{_ $eci%^1yL&xK'5{xPָ=lE`tY`}+G/7{d4X9->LǠcw+4̸_`Wǉy' цgσ#bAGM\oqt JDAH}[,LөT-~';sqH(RXJ0Wr3?_Ay\+t#tޚc5_]9>ZHYHZlUAx+A}ΙAXW bI12CQSiΖe[3>t)WЪ3,`Mx1~pRl)wt,f1; =(v
+s?ݻws9?<|7N[pw?=?w>:^{Co3a"z}AlOWiĢ|b٬;DKwi!QNɕUU>EYf;czٍdDNtVf=-<BN_z`
+ӳ]hs?"4ۿ*=@+1}yIOB+Z1V|m/0B-8-'#W bM!@m&J3:ϕ1Vh抂?qxŰW	W>9=	Ya^~E&рnTX!~lRGC`q6<_q{юtA(ݮC߄8lR-}[l*Y_vh, 0vq@vc_uخYJkkԨi
+{JL|{ zŽBP"Dӂ	+j.;dCǼȯWɭԽ׮X0A9AGhnB7lʹk,l`Ǌk:/z{fp(+F}Pdex$e,= *\PJ|oݿjB:,WP
++'!zA\;|CrKsA0\SWCSPA7j|+c+dӥd\QY5&$ZbEI*[lϊJYJ)l4~aZU4+5{J"K855!ZN`Hr>Y\%̅×ARgezD^-ymSV5j
+MGxX W;1{l0B`kժuu<x)2P;ݭ~Hno`wɮ<V6pN
+p?ZXQY^V1&`h7E oSHMN,I'0 {vyqꊎMͲ`+eبqU2f"n*HGe.-aFeH |TQ'R45
+ _c'|CcķtίpsA8&Uwh^z-&]/̎'$7V)9Pq	4AaKBϳfUϥ.<1>|VӴЋ{&W)#5i^WC UOV{Uw
+L/}}zv+h>&ÛtPA˳s]q(+⭀//q>WJ$Fm(@µ%EeJ*-	kz"lMp |`mUReIl2p]rԃ8|kI*)v.U}PAccG\NV~֨@Qu*gXo		Pc^-+sqU:I1:;t!@/T;dwhڄYѥop*<nw%a`g
+
+idT(vRNؗ&%Jr+ߏ#3-H`O8Yk:Tg	<8dU` ,
+ Pzگ*^(Sy?sN1{ж*,O%ty-gY7ɚT.F.˧:Z;[汣il/YcOJgO8Q̝t)e? 7zݻ<vH
+)=̙̎$PЗ}"|;948)uk^fw[
+kR'7k/5`ԳMlhOW>kh 
+7Ձ`^i[,;fߤP`5?(>6`+Kk\Eؑ_*?6EP>1sPc.4abک5\Qũ漎Ol].
+:tQF+ZKZa7l#L
+fQU2}sRz96[X7ԿY\gF>zP	~QoԿ l4p<M)C=o΀;)^!%rnS<mx+C7X=+3l(hI[FVxWp}F0b~3\}֊Uj"~=))e+ħ
+Y_yTwyIDQjH[XIZ[69:0r!kOrDjЃ9nt6;)-t`<B~0 =<[~&?PSh~@խt׹P&Er.'tN]_l c\Gm6Ŗg#W.Y>_p.d,&93xғLn؟n52mae|S+pFBaT_ZLz梬L
+r`.W/
+äyx6977ÌO3[Ǖ
+7#DK n)eۛoK/ݽ{WP5
+-렘Rz|=mq	?B{*Fe
+}\z
+zҐtx{28j)djHֹzK[1^:=
+>( ߲V~zHS%}X9'y^)S Ҟ&t*,g^kpzA?Vy1#MEbO+-Tuټ8溸J)_Ʃy3<g%USĒH0gbs-gZ؏V1*٢W-k-[6b-A@uV;1]=#;U0w_p%z=E3>3U
+덽-jwJ\|{h:@ <	g{M=mJ*`y'B5|愁/L^%^|Zh|Uy$a~ڀ*>>2T\4-?CE߆-4IaX|'˵ QVʭ?^XKWFky`
+LZJ{%6Xѐ,KcE/;)?[J-"idl0 8T5	BIz	>kj.3ڴ-sZiKDhsczn˅\ꙃdȅҬΈ1Uj58	 Ѱ]`ՆJѭG~ȘB5Cɖ0.[u!Ĕ]=71sL@Դj3x{sςᯚf'=Y[$F);vԴç0\>>ͥfϞ~IIѣGԩ:7nҥj:+Cd#CJ 4Qh9oc<޸rpK,gMЪVtuuApм[]ľLTWgYE76#Fdj,V*·ozżIBخq	!C8^U\R"+7Ĕzcǘԡ.g_aAM[+]035ҧ^H/PHFʧc5{2`}ll+1\RHb_SJ 4t0"ȂQ֏f0ʑ	X)yCk;Q\s2^h/\;n7|pnuXWC ukPb#_jApY
+͚^_u9AXxYO$$2	]Jz0lMyeڤ7;MՉ v=EJ#O\vepF@iGL'L?o,te׶46R/WyŞ.z
+ʹeS#_M?ssz2v]Kqx<lrZ,Hu2W-0d_C` ).gzroiVfMkJz(n-VYRض,NhF]KW(.CK J4V~OΫTUhd($^U7A0;Iy&/.4Ė{q	UBk11lL/4|睒Zctp
+e^k;;*WEf)fD1wn0/KuVbEl?Tx9؂ơ^2Udȩ,z2|wЇOe^`^Axem$O?iSˮui;φ !o2]uGzSk;Ե `1.GeK⍌)ݬ~rvp\0;&hsfZjo㡫\rKSEMuAXyN|3>h/O7`m
+
+ǰxXWä̭$JV#fp_R,W|R28oXWN#(-M6> 8
+yw!'vxѝ;LY"-8S;ą9"T}PcO/vt>5$߭0 ;L .^@*{l?|O&&rDSxD/R҅/XELR&[a0 ٨!̓~CgHJ'@@B"\k`btuo[10Dg̧6Ku}n%2ߤ|rOVϢ1W=*}ٗ]&Er.縢_C_-Z69 sP0puY9,
+1ɦYkjŋxPԴpUՁl-~GT=:QCڹRʤi{ٙ{5c&OJ7&n~nYw\eSg-Nsv
+s+<W/|nI <e3'8#:)00Y]4^12X1ܶb{w/3뤠-AS3(.@2 	^xԊ  8*g,cl|yEN|_+>Ӆ`4yỲ>`UidZ Щ~XB+~]rrY iͥˆNKϘCoWt06aqƂjysyQ[i:S  >`\ eFKi:#O<C3G~Rͻ_eDO;&+b |1U9xAJ_?Ift	*B`.k[P !=Ǚ,Ji:&\$u0/.䠴LLxZJAQ*AHBH*9N\ByjZ5Qvay[h6ErH{t}JȾ'wGׄe4Ȣ'{ni%S`#P3
+zVtV{EZӵ/?tx~;oѤaO-pХT G/}ҋs&Hk0H[_9Lkl]˯w)bbyPjʧ&\1l\א6T^R+ƗM5_ϸ^Wq+W<UUu$[W9'~@N|eQ-׎Kxwƿlx6ĳiImPGG&0\/v
+s+xLMB_0_:z0䤔TRT8xԓ.OI,lx{@г}K?~nZPл-w5Krq$<KG'D6r Gnidj!RGǍ¡L4N*_8<fL7^nVtt(Zh_ay-[I-ίp[Qۊ*8c<)VmaϘY*.pyXVT`0Xwef(սV)'5l+slsWn-ܿ\A?6SKCwMMCoty`YUEɜ)"»gp5`f_%~JaQʁ	&VWN(sC,Vh\y. ҪLRi|SmdJ$u9/ag(z:ʑp^&0(c=s`gt?z/;b+bA᫷m|/uhP2"=&$7MV Ќxn#up!ojo_D=-ɾ׶?S~}|iz?lk4ؑT#k+i7{ O8<*xJBW](ky-E|Lq<;O|֝X^'&O!=u:Aiұ672"+haY8|
+,ubð	%ZC!tsC߶5)c7|lˉn>WZoFGCB
+n $mRDZH%O[],FgOo~,/vgZxWZF<:"[JK]eJpBx1`@O|6)Co.X$Vamxy?*X-7G5f9C}2ękk0r{X йLW0څAbW	lsRAk4yĠc2r c-{t%uB#3(GlK	r\#Pgl:_.q[dS4ԏ*c<z. y.	z=`A`^^ &Jm<(}-4$ ߴ5Yg`G
+	_DL^M~.Hkik5XuW1zJUdQm,_\	jR O(WvO`py
+WpE/.шgfS\66<;&F/k+tVҥ-LQ|mo+c'b2],k^fT4ivx&j&uT@kS\8GʟrpAўׅO
+#uIײj;Wʋ.VKdyՂb=4=#(#+/ݫǊ2)^uz?+ 7ŕxԴn<,SiJV-w(L-v`l|wsC,L?s%=euǝ'p&OdP'^;fT8F4؀ر{Cf'/0[h&Mr\'~mxfL.ZL}Zoo]0hʋAK!Xڋ8H+Ń@ h]AdW:m>X9MPl_لƝ4D-__o`#6wWV {h[ؽAQ1//7Tڬ\ʳ#soٵ"?[Z2ѱEa"?P7$Vh@:ށe`Z]D7Z9k{ܜ~*w[;&<z^ZZ|<п4h`x]I^WU(,:p_@rVZȩO8󺡻7{O<Eot3 m]Um*͖خVM
+ PH.6|e.;~Xbr7A	+%ZRvdj_6XX,0gRJN-HnzM7XEу
+z.8{~w\Pzi[%`4%F}u'9; |i}qt v>o=׿l>{̾Ǟ@B
+A^trq +{ڙk%.iZ̭+TYi8GeQߗ=ZUnG|Zӈ^(lXydT4ViP:P;5ݶEq)/b9&|BGyZ>gaXyI*ǳ>%t⹃nv^AUVO|d.3ܫnWڱc`â&gPK9Qx1w˰NsN̽馛G׆ ev_u`  @*s*v{=|CVhЇ`nJaݒf8Kæ[*	uz^w1hl1CpRghW(`MYcs*JL,MchXBn6&ƧH90jUeLVօ_Z11SQVf_ÄU)gV<FoZ	`cV&Hs+ ~^ )kd3}IWY-Pf0
+Y$:_?jHG-QNBיVƫ*s-j޷=ǖk=$W5;
+d}UW쬽"ֽ$a۱5lJ0AF?
+Mj wmҀ`. ^ɎFs-^Yej̙gڏ>SD\Fvxl*[nKL+ _α=82$DO3uCXŸh:bV/ЫWA[hO@!6	"q`Wߵ*cV_DҒ״z˱]P].HS6.Z޽*E_Z(!WҕlG V-&	B7񪂾ΫW$~/2gDOJ'm(Aʙ)+kp3pTAq)4,HuVÊ.WT	]vxhV
+25gYqY|ir:Zn~fOp|(P
+2&n8gF8Qz?5I`}KP~mۦ}J`3KiҜRot~8J	rr8,os?LCB];u5A}c+
+}0 $#𽞗I%pF>T26q+W[+__,YתN_߈!9Bs%8hS\_
+D887z10Wvvbp9!71+%v*QF_'$7{ŕOx ?0uUy̑R(po5s D*y(e6^	fݟ܎n7g$.4Pp4@! įƋ혢brªfb[ m'f˛[	h$!U_WB!=`I[]"<]	Γ{^}byzyf}npp<n=ʭv-,p̷Xq/~Zms2_u fc5:Y|z:|JK /y0	E-#hyhA:Zo9MG#`y|U|r2iP3tN]FtBe3STՓs9'8kpDx}_AV<Ǥ=3<٥3iU]/:{$d~/OK^%mS|'WyJK'<Z2p^3O'=51!Twz>l?Z]s)<Gp;dܘܹ͛ /a.3sۘ:i*v*_(Sbc=L[m(`{by3`.Df[	}ZgM)ȸN }{tH0Za6vUio	x8~阸!7~}J@*7Kğa9!f|31lM- Ojl|1S r/0A6ld;etϱpcߍgOǀxS3m%<(iTUlݫ$\YM;~Rm?ZL1%+8V^t pdޕ2Vz˶-VS<W6 ;gƂkR w:[0Ia̸-csZ,v岸FVUĚ'~:1WүS<bK?.ˤ{]Sg/A8Jraql);*}U:l}o$2N?M9qblBW:$ŮV~6|1u4O3Ymc,xW.J_y>=uTēgSb{K3Y6/[hO!-+ZP#LG`1w%YPvY}eg=wivNQ_/vZ5:y(> rk O*ƝO>/\ĵ&]@8K-^P*w7G,lrL+GǍ%OP+xEsp:Hu^(HMl7*vh%s2-N
+bIOခݣbܟ<𧷟;q?aŋ5*==n%~m8)ԅ/@U3V;m|53,^f[	uA[Qh`h<UHYtg1˺r	86c$lFncʼCށcIאDy'7 B[<w|3+8餔z qvD˸yâ_RYF4qN1TrZ<9S.r/kxyJ
+-D,;v@oBC}T\;<0wr)m?G~?.9p^֓Di/D}@C}vS[@pYF33P	O9
+`6t5}`"hF<K5kR[V˙ B<$:wɜ{͊rdzQ`U\/0Ep$;0-<Fln$(=IyAI_v5s>ϕ:*:JwͼFD0!d)Wcݧ,|Wsp@5ȯ&WQQD>	W4z)(ShO6]ۧ[_'h^e$WJFrMʒA<)eV&h@eL*l+Ȧ;dUkf.7`rd 
+V=*4jxUxb /W61]`cEqxeѴJigHٜ<Y&t${tdzszIb,X+W<߯s} 6|,M2|#@Ruc">2iG,̳i+g#wz_v<Z>ePӾ!%/2	4eTmƎalu/HUfmk^Rs/EV}\Uf;bUzܑ1Ӹ.3(1[M𛰨bsJrglcA5cfxь2!ހd?}L@|{CA7M%5zjY0n,xZ_i*S%;3Cɮq*SM2{_iur#[5
+&e~~
+Ac틚2.i~& +z:)l RjK^bVdZG8SᦺoE
+jr	\\W|-˰buM!	#̆7c
+?bs&W!'sĤ¿cc&ޚx*\IȖi}~HԻc{OznIs?tSuCTF|-4ڡo5L*UqhP1\K%C֔u4GBպۧ}-]TV~Hwk""PƸS(*K
+DΫA$kAsR+whMV\W
+Xy˕|`ULi@qGV[pbf(6GUw!W>moVͲ{]h"̱	/;9q斳xnB{x<␃Ѧc Ù#V
+pl|w0o 2Nrb={xwΜ9'~Ób.	Åd K@R O9캇C>s)E6NtXqCmV᪞C+Zos;e)Pi/%QLѱ2Ml{YS)WX0|zGlm+ξV<5à`OlȂr QPlDeDL1jjL0܏/f+S~0;:n$֊U1z3ޏ9z18U6	M
+}
+ B'E1,@ߎBG*n?5_}p,q8uJl k» 26E8&kBL^Xe] Â]o}QOqel"WYM뭞ݵRfQ>9^F{VmMQfĹfzb\STMSu
+RDqVvmHa6.d,\T>SDVf/heL$g`䳮Ԝd$kUjvAM,x>ڂ55ދrC
+`&"B2сmJ1v
+	PTZƭw9_Ҳ"U-ΫD[32O:T/AEkiW	gx_]4dOdDCiuy|'=iӃ*SMpcQF'\(cyBrsh<8}S\([`bLf[@<ǉ8@c
+DlSt,yਥ'}Ovょ_>B?3K)	z> mA̧L8r	잍C"y0kp{֥cs6@hіz=K-d# I\"*1BJՎer2{ɡ>뱁p[(;)q!uB#8(<rG,sLm#c
+3~1,[rUMsKrkaNXjEʇ?WN$[9rwŦW0#ܥD{mTA}(=!6lڑ{|(qI	
+_wcoqZc7Ku5ųF@ ><HȻi/4x(tPWeARË@<5Y"ܪ(j?$G>RAꟍ7]ƅ3b]	h)cfX`Ȭ	Wv<7P~VJ<2ﱵibtVme,󠨏vhBQO`LPB
+]5h^Vx-잫e\0W%#sP`NUdh^Tvh4IxG8ףy"v	`bZO Mu5ܤqSRN).wG (#+<QZ*i[Ux.1ԓ _[<)ύKxS yv^˯CZlK@*y9\ӷx .&1A}	bO
+s~SLYxѣoƓEa.BQ]<
+iR%-÷7}A77-WoZ`u mZR?Ow+33MՊA[;k9 ~R =}#ζŧt2^ȋs- zVOǈPHʘâtxP!_o8|(VWCW^nv~:U5l`2>R`T:ԗᙛ 5V5"&蛘p1ܶrfm$XMIܔaqigv8A
+cB`8
+fg۽Kzp>
+g玩
+ªT (q(ky1tfW4}@g`e	!AÇVg}w9KrJOV~
+q&X,.VW8y8M06W%TڅZ&gT-\&U@0"gK7fV)d?n34-0ԲsDCGZ]Bn*]kފTEn-#>zX`ޕI?9g8^dN΁z*9sO<3W=NݪA[q.qM0w=׳DGL`b%q\ΪxvPݢ녶\H_3
+14%u>tR|U%edAfmɼ;)xbk7YgOM ^z@-G sXe\IӅ1ٰ
+Nlc ~䶀r|S?W(<s&j+VXt38e˖M4xWτ n?4q&=
+s!Rn9iK.fYC7[a 8;ĝ#|Ԝf
+fjSlݱi-o5$z1*.aXf2_8yqqM(+vU^-C/+7jYdW>Fx78RcXeN0i|:p1qC{mrrgzq	q`%{@80byfvvSnPE՚h`|_Gj6PQ ^U)':Z9#eaP-䷝.(od-5s.l³qP u6|]Ӵv\~I|aGXDL],Qu+X@[h*ta9I_l	,O7Se@I_|igН\hV
+gۀ2z{*KoX㭣(XĖF3mūj8֒ruokC޻DijTʜϪxF7nBK45A!	-4K4	_W>wިu}</h,* .օ'$7OkZc.f(嗿_E=780b&^.2:&<MU8J|P2᧼56_j
+"̓`}$Ø8+F7e=%t:Qq?5߯sۛWlUnQY m'޺ͱ@e/=Rv,850;YfiӢv;K(a*Oimx ($bgk{.
+ҳ0h/W)(c))&[]JWv-#kA.0YXuhVKsAy!>-VhefX;7,lR{i\oiƁ}@PxB=.ڳ?>Vh?*-y- o_(G^Π y`s/ќ'T}z_M`؁sJuMe1KZs"4]?dMU]kBdrm-骮еȘBHOtDg 'VrS)X_[vn8uI)y8VUDuHi
+[3gy;
+ai7sKg#׶W*-Va~ 3H]$>)e2F֥r%|{+^hb|k8%'( ^j*2{Ԋ1ixg(쿪Si^2@:x%8})7'v.#Ȋ(GLb٘	]c
+<n	#	>Ƌ;c|V1W'?jVZy}.Kue(-[oo[-/	}7q*C-HU@,I4GCpJBoUѷ^deCGa.#N0\mL"[{ElvblU;:C68j)#bhbxTl9PQp4E5W1098\?0&Snϖ%2ax|15Neӷنb?q+Ƒrfj+G嗿/C1uM8j	ՔE¾}x¾N?]\x%H=EdObs;bkgh瀟2(/[zAz?	R}Pó:aMs cEA-5e;s_h'^aE[גPVSf୹2LM`.^>[nbf^ғt*[}(`-du/-p+Cq	&EgcM|.T8c/l$
+7o>wӀI}&لО6S-ŀ+2AlL~]njo]$2={5538yUve9pr\tUVߴ7״J.d1
+ϖzY.]ǕE>#3&Ó:!M
+y[]tZziAꕌhpvr<#eŻV\Tôt<.'n $L' s)_~m(Z@~:]Yơ 1vP6}#lvz/([!{-B5%i {dp[ka;pˎǲy\ZNc }1XK`/ēxP2\Y.p2j/[\
+HsiUh䵒@3fBrs,DRkLHn%yIOLLn
+uobÆ0&*UQ\FW1\	==
+4Z[3A^^;?Ƿj]"x{U2BKhWjAݯ
+wяo2eaO,ȫ/to6	)l?[M2GoRrc h=^P[D 2I
+irGCwk
+2 ʓRʹX/=.^t-}'bðxet!:n'8gKl4cO &>?e8a|bkXğC|Aj?xIWA +#aZZ+f:m'A*nzխx;PԥVo4KRֵ^kcגuBU)f͟sJ=jDfyhقZeu蛖~CF2\ܜ%ݫ2*.m1&n'Zۣ<2FcXB>!	^{1qCC=暻>_ڽ1q'=5[AaLgb"$1@a]wz'?W?%>?4J5
+rah)X	Co_5/J'&$SAG^aVq @fzήL[d*ZbN\CԴAjљ[o7P]7R/aj-热D&0S0aNʇ36w-d+DC.Upy#?;<mƵ
+$tUE0ӗ+H|?QVz[g ʶ,KAPN PiKf[s~b&Bd_8U0(j L>Io9`,o>edLzXr\X?Kya>oY1+C|ru#4QH<V))iҰp%SljMIkݶUb8-ӼTJo7ɋCXv2m%N>+K9Щn~e3dgU JY#\Z˴BE;
+ <	=u5u z+`9<Z{%x848꫺2\IkvIP]BZZƮ;X䢎<rO3WTy^<;mT/aDogYmc↛iyIOTo=o2{jJܤr)^1_NfTjrm'`恶
+]N<A(v>W]dM/X祉>[2=z,6+XhCiz<|#6-;tB,+a3-Ɉx,
+h*MnV]WD\B2;] JegŲ,by?*hʿ;X0_ )HK5~ =WQrA!QK@U6*6wL@74iHV"&7|ݑ1 1>z[g|]
+]Wm_\jcޏ+o]	7N-7eueTeS;]3鞢1^}Wҟܭt]\*udsE7$0d| `(7mMNRtF2k-,?ݫDZߪaW=a2ڶP+˃WLH3z>Ș".S4)垉)qjб!=&7b}2%â_Z:ՌދHcr~amr\KlsQERx'h~ہmеqܛt
+'Vū/T3ͥ(3 <3ul{HQ4{I\ZU>O]g9s/CXeOeU3rSP`!5ѳ.725ո@b&;v	ɍsćz,8/r+!xRxSp|3ih]}xy 4א#Ym;%Kn'>kuʾƆ'=}q˧0׃bkwO57>y68C7cמR?psaB3M]):kl{3M3qdz.OPfP\,^_䵳4^es	Me8\nῘ5@1eĿYf'ެIn758"f<Ĝs[	6:帄´ߚ;	`TMz^56gTxcQojq@Ju!#;Kγ%k%<L~)51\Z*ߵJ.e]sVjWcݷTǮ"}vB]`
+ݚ-U[<Mk«wA0Μ9*US3vN"M^]aر^ISC6YgydFoq*͉#MlO9}y6:Ce{Ϩ	B^ťkO8~HÛ5@}\6WB#9-0TKDA~mbCT[*jCimizyiazE'6!uMSBx,2T%NuIXAHϚ\&EFBP#pK8]XCϽV%U:Pقe$O|U3=#ytȂ+9bd ӱ	/{Qy0cϪ44U#WzK?W	}2|'iKP`yO0~h)'XiUcC`ה`om/u|(2ֶqlur=CQHd7Ho2mna(7N·swVw٠P6ҙdg%ĳaUpE\U76{fR%=[+u+pߋ3-0eWaxA[qt.w8a@_o&&7pYw@T32!	\xz208H.D> )Ly(eA]IS&dt'=
+,y]z.v,r0\L=̾称"o%+A|*R 	{60)U{YJCxҚ$pמ l5$r+gtȪ7q<J:ǍAAMxd|ixYHG`wLܐ	M1$2(өw3Sh	(]cJN?;3>)LjJ?`ߩ)qc<SڊUaDG%_r8?GiǴw1f@uy@
+.ͫD|pZxa5\_-ё~s^"U6m/BO]կiz :	X4GׄYtIPƏǭZ.^j+8ijMMea.i1ϿEESv>:zz<e zl|w%=U|IOZrR2(q	/Z}7E/3'o%=cyy]p0Oa
+s 9`evK-wXUNKTY
+-٩iyC@*d07dyjZViH5}~pL/RUPkzK@bU/H"rc<ܣoeل0("PQ=f| #_74̈Tʕ^K8̅Je rͅ|VnB{ ,ʧB\\/(_C>8꽉)1_Q9_=<-=cJ?bR0JK),0F&{~lءdWEYQZ	rf}둱Χ@-!j#%\D8l*@^	SV#O`_Do1 &z˭ tJ[|Q;,KSpҪ<5zһ7RTĢv0Xʧi~2<.YxGLT1Fxw+l{qP, F%gq}He#Yyx|n _f}M[ځ?<,(IO2\M#>C8$WA5mLbX]~fr{`864}'PtQk
+WzXӽi^.ia^qY0֔{fJy*a_UiKjܴMK%rI3*'WaZz´G} Uǌe	#kU|*<+>$ \fv>ʽNLr>b4{o]ey $!sжj[:֡uUk<(2O!I 	""Ψ
+~Vi^N<y=k_1&,-W`ӧwP~?Ǝm#mQM7(2J=7^x+KI<
+Br[k_Ko_KK8UŖ*È.K,{[Uww+vlM*]Ѵ +CTUh,Z-W0fj0=Dr VZXA[6˽#sázcbv# ۅDGsNJ 01_ɛ$~'tPWp|]S[2KKoEcf*	v+ :z)ղ+#kp7cI2>
+XOxݸ$>@}
++}	b1X>*6ГI+n~k$_̷x@ට ~jժ2qV:Y8 cpiT|ʻgHjj"d_3=ſĞcOЧFɡd3<vdƈPλ#?1q9`·2`D40m~Z˹h+hoF/￧媾&=1L0}lvoc\?&@hOږFioċ5ǲCR+, XG4w?[cqrp](id+$5<xۺODIOmAV`䞿=_ݓRs ÜTuXec!bj.emJ)W5 vi.ON
+;8Zu68$f\sY[i<jsƉRWOFe>뵊U3*st^|8v"fA/K|{(u9.*ѶbnŏsJT9",`s zi+C)CNk[RU｛l)1x+kޅ_+;;p|Md!-27r	N@}zFзnWp1ʀC"WX%\eV㬪oH]R5p*8yJrC;AmԬn4ԃZpD˽ 8|蠴9G`Ѐ54sy_mbfTI8Զ,3T7]Dˬ}9U1-Afօ6|7,KՅy_zoXϪ%|!Hz<BBݢ"[˒vx+eH,r/"c@O9vkgmV#hiZ8-KbAI+{ƒ>NN)ˑ|.ۮm=&|*Xbdz_1cޭhG=uk6+c0JlLy3_%+Z Ņ ќڌ'=i@~˷*!ӵr
+Hpix_tBY]y-{~J|n1}j4/H:O 
+QwP|G SSضֈ%kUr-~Q-KWIN4nZ4M)Yv|iA%ro`Njw6$o"ЛCAxAp:Ou3̥$Ytj	o+pΈZsf-CyCd53\1Ó𻭘}{w`n0<zA+
+$^uR{ SwI>:uhoa%0leqY3Xb>"}.O|dk1+2}Z+uh9`w.fDO6uM]\:@PZ[^.Q+Tv\oUe^U1phf|`V:cH2p[i!\+;Y}<ȫd[c(U}"':jsl(:)s~b0;X3.VUvJ@LOs㖷 5/mn\$}Z(PG`UZ64H.K7°58 (>0L-:qta䣐ªXR&O\6d?%7Otu(7gFO_3$snÒ&;ح+8Vy#22[NJ{[cw=Kx#B4-D,^,k8x
+Z-JRՁQoj	=Uh'+Q k(p+>-\wsI<#Y5KW'gGɱ+[QY^x<'k`uH^Sp$tX?8YUd.)q9=j9 fmUl%?	#]Ǉj^G./"sSOGxBWDq9LqO	8i.amk}(BoMB W17*zlQMXƯhkCb#EpXGP67%fd9K.H<^P
+9 U-D^-+S@[.ꘘeJk׍\Q9Ťm"vZ	j=!32CB|\BI^kqޡI uO	p<axͪ5A>`d&;Z{-e
+Ji^}䷰":[saCQiZFW27-r@/ʁ/X;8J{s+ƅquB	t?2tمQ`XRX}7WwSKü/k_ORZL9>^QU<	jao0.\8<r8=?9koW:*>:ث+F~@-47Syvesgi5\bFVsY&OlJB>*aṍ)_6c؋h8M-֪2JUY挹*)QJ[WFvy$c矉}41u84u0^/=|rTt]tMu*+R15_h[ %cBUqQx
+Guc-OwһGF:9x(wp5q	l#EUJ"5ޑҧR#9;Sڦ5rPSt\vJϹpxzz[	c9pT z4wdfd$L?`7\	;2czsa%W쮏W7۶Nwgm+݁B/K| vׄ2uK\Ny *,n& y92=c,/;-c@EW9"T`q˷e!/Lg]xۂ$^+ +Z_3*Zm%UM}󷗄"y"	 H'mdv84{K]fuOnE+mh2T	yʡcH;?c65vVv],VGd] zC{8U(Ja͢ d	&zru_߽Hiulo+oG+ #p̫Wv_
+
+G3*zF[ðcZeXd~$_F;`
+s )3ⱱ	AG&U(txDR0S>WËÿ(Js-XRR
+s&P؁ff62Ԯ_nis>éDM/qָ2B6{1%e(yb2U
+H`(zQqF/cr@ڛ^Z5`/z ]'W*q]z42$"ހ
+zpE7'kv3^qZ\nwpO7d?xTZd,I	"n*,F)g"mXNu?SK!\N^&An[ SJ~\>b|ޥE,ѧ獥LQ8N4`]1f+8vT z
+7jLY1!"ct6m(ڶI)/k;n%V;,!-}Fn#پ 5YAH.|$n6C'33\xj/J8d-:ۂ+.O|ęp,>Ez[[+bbݧCu$ 3y]v5!+Ucv8ap^l䷀&vga0aN1p֔Z;t´jmXMm˼u/Zӓ}}VթZg9XmUOWjOFe Me9j%rZb%s	Ci(=٭F2(w/	a!,KFٚ~AchbyͧGׅ/F;h2"0d@!\|;3\(,,Ax50'~iĪbapS1$k"Eb!? Px5@-4glvȌ8]Ihq*9N?կB~1(mNuTy1`p29b  'W,sA[gquW^Uqhg%eFZ>DΎОnpNqn]Շ{Qq8}hpoGݣ=V|*Pв+s33{ci1c~B^K.m)!U}?F̬#2jGgFMuh319-s&Ka6x~]ml(nxOyKI֑Uhw V<gUmܛw(~&F9I)99{`}e@s!'>vKbR@bv	˿x*'̔"Yι-v	rmoV.o,l4B캖1)&`J/[#0Gp+=3\Eƹ9AaBAj­55-cl*R?c
+[{5/Fe̡2b;6mc@גZSYV]ikϼq977&k	}7G`0'~,mֽۮ}9H+"Ǜ߽"!xyed(՚g) ;$Vp-j*  {<.Hc mcp$:ΙrPsYF:$p!x7&'?]JXi9u_/5ҊeSi
+!6QN͟FdzNm{zvLVIF2z㛜I;A˛\`.!6wajx^JEnJ=n2lE8yh5 3cd]0>"N^%ea`wx)&E,j*g1i'/tD^ix0G(Bwx<sv:4YBȫ4Q/?}ķs)9|g-`ksyzДLd0@Zyp|li'~N?\b|4jտ;0eDWSWp4gF6fi hhbg?(?h3!RmwĶbMs?t!(٠N<G.QKЛ*~{tvaЋw2_xOC	OEY)Sn-Q/_ t";<v?|:a =Ƈ*ꇻv]Sl!ħZ#zU!˅38%&縶M-SajIıXH.1+F\wa4XEnBctEB5sANy-ݴ9woPWU!7j컰	cfեZ(A!hNjwҘ0h LȻhRX$%nJV*>Qu2)VxxFɓ * Q`Vc/F$faU D˛]¼/8NmsX1^A݂AJ,'9DH:*ނlx=fkLU͔mB~a:\7۝XZ
+EЌT/"KK9do^9 Po{^xCIV* 1P!p/qMe3xX~z޶vn6~xzl:5RˡuJ򽯸1>,v`ۧ"H$hZu9kpHhOzcmjE
+!V;WBϩB:,C!nq2ѕ'$#=(w	So,)ᰣꗺ	?VpuGȄpt,_X;U\^{
+y@vr$'Y@F޻uj`1ws?t za%D]h>FoAc?^!*dH{$ rO@eSJN0Fn. kA;p@q FL9æC֓d3G8YՋV@-.W3O,ARz.%oG3nZ/t`-
+0I40Z*08<$j+0aXSB3&`I0ZfzSY.~>Tj&paN]q5ư`0SQ%9gXYZ3H*@sR:.'-й քŒ;bvlZ<[qmmd~]Hd'w+v۹dN-`8 |yOn	bveN2yB+/2oE),h
+`_"OK]6:ko.Kw-m8@SW0WvKb2<s%^P]`9#,Zm1ZGumGҟ[1@]g"Vƴ#[>օ2{Y,1f 8;`g % E7Ze{E*teXpVa\Hl:>8f|ظ3E^ĉ>"!,F)I܁{ou*8hYysO)QZ)`(/sܪ9hزP ^QOd/<Ge>3xھLy=LRڙkVwB}[qqnȌ*KG1Ifjˇ
+ǘ3N}K8ށ m	5 tr.VbVrFyUTw7%u EWA:^k[kUq6sx <*CZ@aЖ|#VTjWqbV<8쇴l}Rnc:B×B$&+W[]o?:rix:D}\_ȯB5o,)v
+TwB^G|mad71:RvRmflI<p1]k"*iYFE6`ɒ4n3׿X	@U]}[s?$^pNstdtk.҅|~a^HK97XOoa>ź[dgtbR}0z=*mDb1K`_%S	$&=2s(;Z~_И컣VDL?׵\QvC~tf8c^?oS.o=Ye-OVi+ZUL/_v"Z?qNłJ;$-[%Dam
+5C~CWIN#ϥx^kڍ̨r(Lp-
+4dw \ſ/K]fH=\iAҘRş4ڰPNdM?0`֢bZUԙDGQSUzb )oT⊇SlnQMpO,r光\ "	\P64|r@[QNtG>/1&5V%(`^|nQ1z+Ǚs!m`[`B{F>c^}%$x~ 10_N֞o88[i3R p-]wJ	t
+*/cP^ .<Odߥ |Yh,s9CLg'<Tjs՚ہR H̐}
+?O+1HV)lH!߽pʪȟ]1&Bw<Zlh@cC:`!aqv*ssWBlNwr(vrOikL:_g?:Qb'p[	Da.jdШD	aUBK<7`
+yib9SEWɉO<^"`ͿZTRodWMB{=Fg[xxդs2-ZnA6^sǒb0HFe>nߡ<0\qԠ&sΒ>mVEW!qs2=2W{@iѬܴ*Xq#>_&}
+U-p}.a9_p@[G뚜q׃ڴÔ_ЉCˮG
+ORNS4#=.Njwba}T~?hH0]O]+@/D)P=k=Xz4Z3CE+cx51xqVw(~T?7b Z/UvHw$ީyfLe.3wIP,	z4(Fb'^t* 5T(bֹ:3W@-XK D=/->Œlo@I VPe3/XE&\3|Z|wo{P'NLV uI۷#¢J13h-V|Ϙq$8xltxNoMq	mY۔zk|,8H<F'*u`W6cncN[>: uh Mk#
+3H.HTu#ކ0q=dmDFHs;̳?2i9έ,(?eI/ܙQ`F+8j:90|?7&E?EN2PwQ^	~M#oY1.A~Z o\l{`IUrY#ޒVހDn3Kf]Nr{<*o@=l44]=:'erqN,ۍ=n"{$[XL{ي6SۧndsyINd9$pySi~Ca&I; P%vh.f*'݃\7uSFfH beL7AL>' _-fPRPbG[dL*ƼpPۿɝT6g[1݁?-_xUBU(W8e38`IkWXkЖsl9'+by @9R-|	'hT.y٤DQϷR #M<[/0uy+NTqWT/z}[_&~S{}b]lJXaKVŦX]ţoB^vDY NV:4vkօ&W8X7+U1pp3P*T$)>ݨ$/1`.7<U1|
+ʗ½+8"\{ݒ%VvaskT{GqUFKU@R~?Wp9j]f..2*P~5pR욿~9{)EYsUS5N5=27$<W/KG[k:}5bsp$=	y6䦲l5ixۉ:Mm,Lm1@x^9.fmYV0h<]JhFXLqYU@NBgZ;vkT&fx)*khFC]U_	R=@l.kJ!Xb,XRg")$+b!lӕ}=QjWǤA
+j3m.oUN9qQw>~5>u]p	SWH~4ˤFeCQ_)%۝s64:?_\6:~^ɺfN「roWGdw!*W5kbh&:2s+Vr
+ӛD<ayG2a%7G}{Iev݄`F[V1Ymn~_!7o#F˗$!r"k<suy#*6	c|7ΖXz
+_x*ٟ"UH5{D]L.DUU3zmtwp!̝_㠗32=sPH:È(ME[ 3U׼~$l.oDxiG*|cúC80Ĉ7Ljw}>8}F]ޓ"|pBiY+bP9MjqqN<-wQkOuW9xZ;[LON)#V(1Za_o/~o:-o2`1emzF0?gFܱw';&$nj	r&v1J'ˠ.tu{h1Xr:TFHc	xDYg`3pv-^ KAgL{*4Er@md08ׅAAxb>NGڄ=!ZKݺ?ϖ-XZU?%HƒoΖ
+8]"$uGrU)k|EfGT72sbs~Mv%}G`1c!tꑙ
+KӉc'_80mgD̸ioS|Lr}:>2(YN{zB	/Owy@(_`^WD\?sA8826Nek?wY[ 9i	]J$yؚ.jP%)mv)G!m] LUo2Rk@Fa*J|P@1f
+[d !+q
+PI6p5gv\1_g0V	>#-WYS8y'
+B:}<1MAɮZXvrV11/BcbYfOkgjcXC4E{nřWcZ!ű[2" D(]p~Pd90`U,,{@{Z7֓(/A`գktl~'g~D۞&%݆=YZ)߫|Rks9kчķ*'h]@sUjQL.m2Ӣ[ǆ Hv86
+m䆴ў-۝"`!zjlvt%v3a鹳Uc&D|H׋M 5o2dtoaQA<9=^Wp<mU_k3 ߕ f24e2h:gW5Bup2PN^igZɱ^ORG}Z4
+|v|+lr4+pcxyr-p\{:%';hv\ ^Tx%y]e:K=LGߖkWAisT˂a
+t*{g|!qq"YZt53Pfl#2qw?MMMGuTfffԘX۷oqqqV9昏?>Yx+. Y1RVZP]e~(UG`1V̅./rI,Yfw2)"Ȣ*0OyF@J"AUhtf^}]~[[z`(Dxc7n,=y9_Ch{:n2֋SoXql.'E<b^wNj cU&hwiw%
+ƌƌ ɂYɾ+j2flΩJ݁h 2;OK|e`H%ŻurjFMN:%ʪ^~dW=?Y*)*nKF^Ʉ/`8B/hkFƻڝ@Ͻ|٨ʴGbP[q\?&sM)krѯ8YQ:P=:=ǓӞt͸AR@PJ6:kgu@$@WٳrB.]|^;"m#a0wIRL,v78M]8*s sC"b͏Gti("8[`(>\.yJ/EĨi&+8n/<0cGmȰ[w~rwr *w8h>s3Czc!N? ZrT0ŵNj.tTcr*7 &j<1>.Oi߶tJ}M:_#1vcwVw=8I	[ڳ)kq.r9^VWWw}	sGղe1cƼG}>>˒fȘ%/HHuŽN*27r:X^%^rYZKH\PO 5:gb[r
+.1gzcXmgPqMCbKi!Qϛ$F!x]מ{FWwEt\nJ<> DXꂞR3߻IpW"g#ɽvj3#+/6BQ[w^ÓԌ\KWF9#.бgZ쩕aYYr+8uCid!"-6L9'ApOnEnJ"&)6;ujUUe՝RИU ;|Xa#H`nA֛ r?{L>'~;䧓
+n0@=}Q{%K
+\R	%HƟF^ 7Zj'soBRZ|^15,#Rw'(-nMp_cքPEV&м,ΉzhmCL#)&.1gE`Xwш^ѵTXZ2!x%燲hY&Dpyϝב ZҵK{qδ寈m -5ܤ'@8Z(>:>2:^_x́
+011w2y`*
+V`
+	v8R{٪}i鳡Z_仩Q2,Ue;v8LFhM[0בD9js>輽;0;w<K.~g%8_Y@]a=Lɨfyb?S&w5N7FOI}Q?U++$' %%t!̑*FPxlKs+.kaehP|%TwWm]v؃ (ٸָCz0LL#ŬubKzVQsNy9ռضQaZVO:1з-ph,&
+EU+ogR4.*S(7~JC9{XZn\@ppzm_;609.UV}z.݀<(]ղx<'̋ױwRN&+s׬_$+-0vOp"!KAlq謇fW^ǐLkp#z\MMe92&J
+fePC^H9	W{|Ӊ2r%3m7Sq];#G.N!̵/t,Q֑pD_3l9ϬráWIN1h: 8:>xbiv(SXp$|]Qҡ7=i
+Z6*ܡB1]P
+9>ܥ(AT%Y;N{rOyeNٷCQ᭪ey +8.ejg +/.ܫpR8e&m5(-p+u^~=#~6r-τ>kK1c[1݁N[Okz}qጪ5ɀR!gVh*z"Amē91EJxlJʸ2WJT.͵viRbR\n]PEVWqRdAKNf^8#p/q(S5]CbO#a9y:V9E	)wr*%^g'2=n8U/pwX\IV=KjxtX`g'`,H$BRb#O/NL	+D װT{Ug	,ڃ|K PMx(j5
+y\Fr0V#H<s-܇e#@
+}<:.q'cdz%(W``PyIfctL+ kٕtI*B*%.5$b^x$yGۣ[z`cWW>5lr-8+!h(vpy9.٪K俿_l~ ; X&ɦe
+[:މ Sۧ@sQ!nEc`K_nqHe8T~oZP)]nEcKdRyڦ20༰`TRs/.ĈѮ5?0&nxdYETk!\#ж"݈Ps$Ujb
+i~gP\%qȋr?WϮkP"Rzo,E3l=Cd|oJ
+	~U6ߒwAj4AbP,5*WŇy2>rCgٸ}Ŗ
+e wN, ]9@ynb_,/s1L{7\C-P)偨+%ɤ,"X"/ҩI
+
+KފUuV7n:!Bn7Et*5mqz3v^aHU-`gKZܓY\EڼYSy,{بq7DCPWbB`dMN+-}vc}"+*C9OH$/
+_9,6^-}b!J(u%O_.&
+ay˕U\CciSWo,-=%\c'D"AЀwr	x24J_Olw*	yE4TAispf&]91hY=>dH0,eJzj֖N!@UbY3cb.^+Qx|nmڝ$A5PZk|0!(--[`n4K9v JtM>:x-nJ^3Q+Rӌӟq#>.<ci~\MyEjrnS퍥ŸyMN)c24198<ܡZ-Yvhd7.VzڪxJDӹ1H1V(RY|h)Wq'm kA0>o(}ׄ!*'aOjVq|1w{?+Z\g4[T
+a1N<z״X*r-UQOD%\5K
+޷FmL@I3ˣ"
+r+&,Iq(5
+V}OV]A)w,Pdh+Yi7vTi惪6ӪI훭^졬Xhc{A%VC73-vJ	^2a~ţ9'd^Wmt^ܥ@j\La~n_>zª᳜'5# l&= . e.kag>QۉMTR l֖]Nu
+#WYҾ0T4=)Nssm!O.#e5]2t,$Y&e[B§0D/PO}ܦZ!-hT}a/ͅ}s3\#2jjsmo%&)U;W!ݶyL=_F"ܾ|yCņb2yWzƖŝk Ϟxt6(쪅Mr(jq1}ZԀԷn;
+fa T:2CQyxۉ_IMU<x(P{y$dP@6 *";*a.V0M@t-S_}'+39ǧ?gܨkq&;mZ<F>A/
+j`~1جLj9x	Afi3<ڋ!pPdܠADk{-Z)̲T̻lҼ;趵s֖]RBƟ2oВ*{=0^z#^TQ\+
+`.'n*Kq:˅_8ȉ<*vƂR4󡖼"BE7+-,QzfPq"u-{	VD.cJ;|[ypgT@rT[x8mZ	 J$^uhip+r#fDƸ<}Zu`Fȡ^U	w$-3Zj}Tam]R0 brϞ,f*sw	EdNl߽b8@@OPBm3{ו;-@Q2U0.
+zsA<:'sjmD~X[1eVij@xޘMq@UzSx!ttD[/#d-Aklޤ!e䶴+eim('.T,JM%q7Ǯ=#M2ynb)-˭RWＹ[<cqA< yUnNm3FY!wi}8H[
+-AӠem>Gd59]i+EKSsgv]?9 AS{Tz@[!-=8]KT]~R^4],&t('ԯ*kyq&W@0!<w{QJ)ĆMhR'c!D^krC҃p()83Bun#q{w`C=A"b1,mzZy^l	l`] :ZOTbw[sBy@^VuM
++p>:X>V<OcėW{$jWQ>7|eCNCv|p?Iye(fm)M݀xSB@EhuW-GGI*ۓaRk":![Q]T*WYWY01ޤ5X ?CgL.DӄVƒ\<M)$Dř}c8
++)^G:zNIixBiBNl
+v9Ypc:A {s,C<\P=wh(WX5UyM c%u]}hph,(}J4z`uOjw
+d^-Iz_4?II#6T[+tJIm%5i&^z2c%Fx˝oxIڦY%^a2-Nj#r ԴZ5xG_ͽ6O3ݙÁ6@-]
+t{ûh8eKˏbƒrz
+/NxPц'pmiXa&>kBqO-p\ϻB|J
+G♁i[l	&'M'v*{}1N5seP<5QqJwGԅ-hC*8SpV>
+^HEQQ_+wͶbs>_f̘իW}Kرc_{>zǜm?_YUb B795	)[aiHU;`mh?^b Z99W{؍KbKs`C0>⧱1wELZ|kQ):z[r4srke>}y*q
+G0*?USc-yGKk8oZꎫK7T;O]0.UYUa|:8Hԍ 2m3~9ݬ$;TD'TMl3Y*87KF8ioB^QUytPnl2xG=ЦH-k?Zrx#yk2mMeY|)
+9C$@4by+#?\(W"耧Τ}N7m8CԽ,{|^'vpL)ދ3AU<,[="caΏ?Xu>
+_PWJ+ڇ֖U̽-WAV[Lwk,AI ,omC-}׮UHwa*5oghWhݒs:'_xܿ9.K,8.g?'kC`;ߔg~opU.ѓ?4	Nqg
+b|w#'F^pnMV:9g\m"P{)!
+;Xj21oᬪHgLQyfZX#tǈZ!Mſ}:OsK];J}/8NqIME[!dQRXZ%uH{Fިs;0_MfϞSTTq?-r߻@3a"8!ER|K-aw9<@xbo"RYIxr`כ2,M$]^`YK u%srKhn_F1G\f=W^]Zb^&W8 JF9)'"/Ky#r\MQ9i|	ꥵb^X#۵4qښs	58In܆[NK9<;L.}tփ8Scl9_ ]듫vC$ѰgBaѤ';{8.f/bB h٢P,צ_';#/o5 ^%=Pn_Z<I$4	ܙrۦ e9Qf#?Y^Uc
+XZWCeJ=^PqT<	fhXh}.0T]++LB2w)%QpZ-%RJq:wr='1/ԫ18]mqU*uJR]^\xw)LkfS-KF(ds8Ma)XïN@<tuk	_B:c'5ebgFZitVBkg2v8~#abw*!\v.ynEЪS*3ԕ:6nT#ƧtW]@^xH+cs&}PxDR#k^n_wi/20GD&Z=5T޴X:΀Db#gƝ4b)ZKdDZmnQ:il=02)A=@f٭+	y%djVm&
+CCX8vb7({] -.ImVݔ/XQWЖ+&n?/\	=A%4R~RAB2^Ӯr~${Sw
+GS|o!@Xȩ[ƭX~6O(EbUzrsMSF$'@rnێ1p9:򹬇
+P|hbKo`͞y##!IN̧ u h7\Y><E	<:G7/͂s_92i0V 2%:ZZ)͔ZΈ0δsG=XҾ@\9Ty|_p\pƔ^:pP&	6aj.H~1PEՌgY'e;zΓ8:Q42Nut_E]WMMÓde$?ܬ >>)NL礔$ޔ&ox,t#]xg)hjpWh̠G"Ґ\ɈrH<s_9}9 	80Ke+Fd1z 8-:`4s!ia-PTҘm'ZH\A\ fD7Tsr>cl*Tg>-t?}zb7^!,''Ć9SA'ҡL7+a)4q#*^1߹+-5_Xi,ŗ]Z,݁:*@xhG6f;Xoռ`%RpMGI
+ =ϰ*_Xasy}*P-{>{(Ig泜U$@|K;AiC24vfǏ9`Ѕd*f9@EmvR<˃iKM/CA3LX6:v>ڔ8Q5rOBLǠ9ڮz©Pamr.>>b>!ڐ{=?]R`rTaޖ+!&*8}x	x4'ks5a`R6yN*8V-Z2{۷FWt1PW̜=)M0V#tq VsYvr|
+@dD<!vlv0PWi,\ [/<âC%t1ZYҀZWUۅu&RV|'@9mfNDeY@]P!9lrqu~]ge]^"kl޳S50\)M;;(^)usYnxjʨPky'U:B<z^cU8rOZl0`Q+9/Zҙhaĸ	Bq2^>H2}RAq|uXO-@48&B}asdaz2Z/b^4&W=QAβd_ά5-jxr^oмJޠvS+uG^XisBcb[k?{{w`nVXW*=&,ը\ǖ+C6Ѳo,~2/mGF/f6V`ܢ:.X/*](KE]PڂUjr	R$U(hy;p?b7Sfr2&ilBΔ0$>Dglvq!xXRï:bS]<Ƌ{a?dcJ;@<"c;)>|$+ر:c`
+t-3m3k{8nnƑ+1I6
+v:^	>/h~ 1d|7)2_p7~'9DyZ;'sm(5W\a1|Y o VkCЛJbV(v N`'	 5ٕ۝*I#ǧЌ8Kա;/foFe]}	W:;2xz.lғBl}H+sa^:J<<^h[:xrN>5e/NKsnbfļs30gs\qk),{h6(mu-J{܀${<?-ekڼ^>"c*0l5`0_
+Uj0b466V!<Yqbكӟ\zH-CԵn/3hϳgWҡeNrw"RJs$ejͻ
+듸AhOwњcRf)9:֫5mw0&]UATRpJYٚNu9t
+Ct5k*bߌb׫4Fd6R+AђέZ:=JJ&~{X\bƮo&E
+-|B+fN9GŎ;ub"hϻbBNV0кAaBl2ip\5!?tƒ`j	[TZO`ܸ@Aљ즲05pDJKBB|g!oGÔؑ$ٱ0rF/}[P?;}ʳKwS\Dd`K`_,툌Z"wr<UMNoY*F ^0gVq"<dwv̟ V9 {c<ia>{iRSƿ<?҅+B!?st-.5VNyi9Yy&g \P׵#!uz[<U$$/Ĭ+4ȽRȫK/NDY)M']xb	r9i':=e8>v,n!	JgkL>zGr4c_j7N鄿v!p7TA ŪC;JmY14yB9f80L3knwF7I̲Toa$EOuy7IP]cИ+#PgLR?I!HEkupfĥ=_;*19Bg.B_<F/(Gpmwq4{WYI?/K|`q2זjc*g#87)1z78VDYD4&)s=|kMiƙA3{yEC;ETZ[j;@?joLfS -d=Δ9؋iV̳M}ŜiRY9[B ԁ*WmJf"Cl/M6Z"wo`4Ё=.QZqtp~\\~0qإPutOXboSi=an*-DGYf(#G?ctÀ
+zcn|qgSJ~ƿpAH*OCr}ʔ_pgif	HBdTQ;b?u7%xB6Akj]e~(KZ	vFs$gީX;ў'Re@:4QA+eb/NLZ)俥vR*OK9;̔RNK{noiu:\ԯL],`J2PWbFķaNnD%Z}JN-+|LWPzBĵ .Jmza`7PFh|Fξ[}';8;ϡ/u"ŏke=Q>X\iz[g,\b2
+Ľsӂhs$bo%Hߝ2%</H<)1"ۊoQM2^Se1Xn.szoHk0e"PI=64X$٫VAd9%GJZ$sp/Xk53,5_=w`By@$KV&MJSWQY
+຺Lg7D'ިVLq  L=159d#bK]s7w"k/a0&`bnQ b;{_E/&qUt`<&K+y6	*W\*VjUGVϺBO rO`p'#x/^rL{Ԕݝn ,q)<3f& 5ƙē\ޒ1ͽ>ssnkXe+8vtV_wwgsC^.]TAWv S\8|5E.v2(QY~HxYM"JlѿT߁BUssY+ouḺwwmzPWm;%4J.u酉qq2yWh<'tisb)OMה;&^>;e6y᳡<wA,9Ow-7[CLw]@@:T1eKQ8JI,p:0qp(M,,(QWgcOisre%;Ls7V+	oT&2;Ni+4WInjn>#Λs*0^Oig\i%T5_WKHEZAlӟi˘b]Ja=^7rYjCC<%q"mG[8{:[)-6>{:҃׶H'E=RCBN]i33hj	)(kU]uor"ޥsw]<J|j}[tEeVHS)ׯo>1gjO.Udڝ &   YINXsbX@iQeqQ-΃ϻ܁tmYe?Cm.OwHv螭Wڶٍ5M*iH7#8c XC%@w6*Kbw9# Uv/kːـf _֓e@0EEe"nt	𚜞h)sQ7x_Xr70Z/U`'J bB$^c<9]c#' 5>ǖbJXe͚h+x hF_w1[RpXGKt*nxI9DӮj_x{QU(aPf2hZH_ E|{~,v%b
+~7%dTi{)DмrޤIia8~XR'JTUF?px򤅗H'bEQPo;Ěbv`0{ꑪ#M>08,4 oSmWIc8`(]':Ѫ1ILAsO\.YHHI۲ZKv+35`1;jR&8dV*y)`a\b%G79]NǓ0٭SzUF:7dFjW%Q\M¸e7f+0mXS;1P,V1SJh*͓|,^H}S+Fx
+O-yBMepR=C&"^w\m&i_Ϟ
+%tz{hO2b:Q(X`x<f+Kzk6RP*[_ߡdmԆFJBE=Pl);];xjЕZQR<ץHGQ]zV[_G|Ch+f54m=פ}s #5npYWb!7>8?6XB
+=[+6coU9cՁ|w(84ڛՊFpahEsd! sM,3^"jo*W<x.%;;`۵yYKy߳R 0_QݗL;%e(}Nik]^x6)[Hkc1 =^	VNU,A/4(\x;wBj+aVRj0`7#G;$_s۰SNSR;3sq\j/Z˷،zL{˚9VLd:[f4\4eI[6vUʆ{YEk)fM
+)x8 $P)&]&uPws>e{w`nb:Lav3cjdHqy768oXf2}fϚ
+DK\}˪[	X{0<C`2Ec4MQKWEbkl+HaކaaF" 齉"hu3|%!K2su9}ֽ<jd^H]uZ{M iTi`v7bEp_
+^5ճòPλeܻt5ZXc|Y	h.w0FaYӴag(=M=
+]}P^M̄2ȳdERCD:dC;ZY>a5%myoZzLQ*~qqίG	ع[
+7O(uȋb68֝YҁFS&mtT!b#\+D#kz!_e9+ڧڛ2}~%,1T.Wdλv`(JInG1ӁH9|##䮵K4<ip7]Գ߯Sboi@Vf}|j/̗Vr>*SYRƍSAmlMW&#% eIK-gc22@K)~dyI aǒT]ɽ@ظNp2&x X56N]3qrgzr %;Wi,vIJMq%X)0_1]ȍcZLٗGVv%WZ|색hXy]P	biYac奫p-)\tpYUnNvƴbvpdZ~sϻ@??r
+[Ct<\obZT;&JX^
+l{w*m'rHP{MxŖk<#	cjD~{S.:pq..zvFUyU,`7BǶ0BVP>;_	HSMƀ@`9R`Q	m%نrTy۾*rZZauI#){f]Q 
+@AF?XW׳sH@sVkS3l.ڠ\I.}g' Ƥjۂm4_Y_-(}&q8Z"?_DHҘ֫W+gU\ҫXTaj58˩)?߱òWΪYw=ib`r6aJԡmzYWl0z'j콚9iHeY <+5wjs煤B|Glﵩ-#=W oNR:joO",u?5P15B6NW^rHdĕI!.JlҤm8M){"GrkeJyZVO^΢Wi۴Lcb
+ T@'ľiP623-?QB>ACg8I
+Yw2UR~>h,ORYf2J/DݺsdD|kƐ2S-buIvk㔐s#qy<A+sKj!TuO4ח|_̽@??zX
+	<Ӹoz;z}F9^K^1UW ՠK?-KZ-S}v:ݱ豠AIf	m}1S@zPpx
++wJ+n5fHFzx^z ^l2xM%{A=}lD .V&(Ck>wF=)sTbO%KL=!rABoKs3[AQ-&$NqtԀ#E/҂W~Ep8,| :&QxП^&iSKrʟy%Mʿˋj.zn'Bbt!'Yt1+LC(RA Kc=;G;i`0c6M n,e>IzScZ)/Gn! sbNXݦO#g{Lζ|ĤӍElN[S2v{r|&ߖ,,wU uׁQQj;פƃMTW*D3f5+ ;exxeI˓ק;KyURLɰRˁi5pܣ('E+x.d~Zes1¿yNݞ[&z5^#s$≘A e4l/ERFST.D`hT>/Ifg<0#Kz-+l>?dwޑK^c8
+E93,郵Qפx4ɸE꽛Rz40w_%E(¿ t3y4Ίj,ݣϓ*z&&cNH9Iw~NGK~k6^;Gk$<;NSA/(k8.jk;^_i;S+/0@OP@sO2$m7g2mI8z[W\.	kXmLàZ̍;'M8ͫ
+䁉SOL$\;I'<H4s1q<cP`z)A)i9na 7u B[Jn)b^OB,H"L%j"N{6NSO)ŃTY:Ƌ~zfKò -tiņ0+Ⱥَ~BG}ZI}idI	n?'X)@(|Z#h~ц{Z!_ZSQy9ڶ򳡫ܳ/uNM+vtN=̍v!>&PK苄X"4~cjyI.l8&
+<8{e2
+8/iύ\␳@ͩ9lP[4ԇ4kR:om\*^I;aTf6$#
+=UUQk@2̍Z}0^QpPN_>$V0X%By^j?M97"G&>3Zk0jFр,
+8&)ԕl~b接s=EgMPM68Ig..M0`hXH|֫t#y)|1=(D	tc$_Mh{EIS#T@8֞3+VO)Ԃ?O9UcŘM2^pG־2BQ($1TݝaRJͣCplC&	om<Fo }'BP?K~ۑ1@aJ3DV?9x)@`Ǉp1_9C`pj×ge@4s.3-Y3T{sa$x'u6 -:)x2-Yi=鍆׺C+256x=9vu/0L%MܷWUv:~smph<͕Cr*ҺBa_[Z,chx3#7EǷrlU}\1b&Zɳ=fX	|[V  gSѹ1@grZ
+dzF-952ͼW:
+Rl1T1v8x<58'Pgj\tr3<B30;~q, }X?zBߣ"sI'N,p{JtʑǞ|(w0^pvmuJg2yEI2KnlfkBVִ;j~ %?5OMb?RM}vM,i2Q.eW$ne]ac߄|pI?m ]eYꫪs'(LurL;fp4kf.R1ἉtڧBeiw+bߏiot
+޴F7:"K g&GOay̹w6</xL)yTp+Niʣv07yy6CCα΅R~b`F
+K(Eq%kkXBWuFOR_SK\0ނN91c~PN\:;@pbN>5ʯ]jfNc'mko^T13k
+Uy(xFE<BH=ǺO0W:'VQpZҶ߫\7I.+'[P:Oblet%Q vL·8,1")l%7-ȵxd@hfciIM=Ϯ<w`N.uv*} 6+ -j/`KJi_,t"MNk.cM.5^/׆%<@!;@%"s
+g*bKoj1֛<h.N:թW!\5\tz<݁<_oIws
+Pl+p.vZϜ.nK}o[o7<Ӛn*/<w+L=R+3*WE ;q<Ҙ~c3ЬE;,y<Drwoh7v[S9Ζ xEhΓ%JnNͻ#y
+wD燊:~-Z~|0YjN8;wg*{T^IULvqvg'b[M_wқ]*GA]
+*?X6;Vu2zoEDX$=WL>+!^pby Y1ZFUg[놽-#j8fHؚ;'ʁ*w򘜟e4tzSfT?ֹllF^]c' pc_{9:sl8 z遡V-~Ky?:;`,]yN[.i\Nމ)f)5dRmf`ƐzBxSnC,6Y-_ʏknk?O,wBGؕ(oԙh,-m9;x\.OCW)N^'Ǫ!\*c%t~if@ϘYc)o{&@{W{F(̵1#%DE,xf]g0xDXVroPx@Tw6Km	:Cƾ7baJطVɳ \{YGʣ<98VSJ.N^&RdyI%9%IL^z$xeפ^i_z_tppU y$yN5vz;PqQHXfi\xέXTN'y
+ODyHH9@?K1qZںWagrE2ơMaѴtV4!GRe2¢%35E=UTs>C;찖-[8pĉSL)--ڵkf2228ӧ_dF:puja:<Y03wb6Ѡ!(ePHESZH+dUp0)Y >_qᕃFir^KӢUI -SgB'gKU];p=[6ٮ =q!5^|ˏUȊCkvS@
+E-!<ǋdM?48?x7+Ku(Ɂ+?M;)8)
+O;%mS3 j>*
+@9]IZc;?D) Nbcnpp<Y>~d)9,A=:ڧڛN9[5@RXFg6GdKݤZACL @}o`w4J~fk	mv2M0~)UEWۈ;K'mѠV}K<a=coO<sfd}coP^zsk9IX 5b'!l5rߗ^U*GqJ4	CM	\`mLfLAOl>l"M)O󃱤DQXvA17IpKn`I rF*< M1i8;40)]v%[ȽV+ˍpf?MAڋ
+Y|,Rm=CCK3erp4Y-bG
+[7sb*t24HT(^Z%yȥp]MK_Lq#oINoJ?gcdD@d:-NK'?sǿ^pSNkڵ+//'_?*m`NJ)-aȫ܀QbsDw)tgJ]s`0@*u*1KyUX]llD☗us^)mB.t8hDާC^yрTvQ)aNEU{.ShZ.bJ(mTqLQY3 %K@ֹPJCvsَ̯yM;5}؆xr3zyadE^y2Xu]vg688
+:\̏( /k̽$~tn!Sp QS~t 8c *_w2*vv0ހJ#ioAce%/q/2==wzDzbgе1i/uv<UA@9TGGHRzk(y2\?&N8[9)9*t);{D<#D_ (lD@HljdA=܇ʥ9ӵoIcM4R>Och=
+,YcKʘDS s9[uD,ЪFPv:$rZ$OݘH\[M(Dh3v}j2`
+n^tvff?5 l/\	D``֢sLe-~ν<=(L Ĭl:條;HQzӴ0-MumNk|tMjI0!OMЈ+2wh|1M)֯ސ@>W+,ŀ֞e?':@??HŤE񑵯Ll85il5h[1k, j0}:`+!5i`n3AC$T9>=z ^0_#EWd bj>#{x2l8WtvJu3 = BK!/ԏk0y5^x9,s1BeZX7|pvW+j'dvll5`@$hOn\ι0peYjXxu@.gBcAM9jƙQeN$EDSO
+j ,2|J^,s2)Uq㔈[K
+̘G؛NbPmy^2BǳЭ.֣6RR*ۜF	Ber(gD϶;?gg	cYl-S=U0s/cD^;kpTHJ _8/a弴bc$١< aoLMAjI	o&iC&ear~d_/ڢaq[
+ѱW&#9]gU秐5ͫ7fR=PYI+pB{nF R }a\Wλ	%tұ%+Sf߲ݞ	*sr`kŝvS_Yhgs䬿jX1x`CPiwi;Ck=Og=$ݩfXWpn}9;9֏_F.qoawT:tX0h<k[CzƢ2D#jx,y$D~dUm7{^i` 2R	`ˉ8{Vz15`=: c	򠌁#j_v<OZ 5*x~tDQu*iP3[[G"+[$J֘r|PEtЙAU%'ɀ`ƞB zV(5ATz ,ӂφ_EA?Sye6\8  YN:g&./~WVp[Nʘpn3 oQ) R}>-"7$CUg^iҡ\U<u@=)ҽ @
+߰!5@6aܨvr^9}-XPQ!]-f3БC1ˍvԃPGT˜N@{Ayj*HGv0D>aUQ3$PyV]ac qi%t݊$SDkuO"I)NcWd)ܘ^Vc`v	 /O:c|ǃx:)65d6M{^́rjZ#lV6RS[x]
+"<ϮRIn[+ݝ=[@$l+{h!¦Is\6xNᖛEWco4F<`Njm1>ܠ {9gHr6z_s?:@?%%%guV)f͚gɩTgbŊS۷mN;ꨣ~Ehv(Iݝc; }R}H/jOǵ)QܬLy@>&"MCV{Uu+ {Dp*bM{ΊVZ{̕nPGH`MX4c-\+}YZ4YwSrzZjUi^TКL>(tКFi2!/WXWӋsרD/+Ⱥ3aA=J.Gͽ([9>dm] X=-R~ Q`؞$UM){̅y@gůT^%7Y婇C0c:qN2E.jaYwi%~,װL|ixp^4,;7gtViN~I`N 2&( (WIHmҝutt2w)ۅS>Ha2_vRHƻ"dJ,r㐾i1@W.O<K!ǕOY6v15b,ÉFlYr+HZ@l'Ha7yzh+ؘ_-2ByW$C=;G,Gda6n\RLm9@!eI_NJT{]MSxQKJR\nF qz:\&#CS+y5p3M0/Eri|ZNLv>eFt$OsԠl{rԷ>/Mz*CSpJrzĳi}\o搟
+G*dR*ܩOĵq/_m|܂^xa+V7sƍ 
+~h[s/?sC
+4;SCʯM*UyOcjw6O7|+y@H~*wl,i<(3MLU`Aw160V+wRTpZ7Vec$<2c#Hnv7m{HeWAŝgp6^fB	RղAB9gllso@I?a{&C-AFTu_b30;;(.N=1._g_WJ.(Ǫ_
+~\*z8;urIP]@]ꄿeڥ^'ֹa@jo1){(x8ӼCj8,Q-CkvjvYK7GHuzԲ؞̷S7JyS/h丝[ٙ;hɧp_^*q_.bI%Z8X5>.I:,4860r44ǻґ#0A,*Qq@X
+)gT;GߊE,uZIኬi{yYc;ِ2^\fy=jW/%uࡔtv+#fFⲜAl?]ҥo8`IF I܅)00$7NKIPhls\ @<7eJ 	SjIL	M "yko~ |7wZ3Z7b,ZrT/ykQ{'3BZ*=߫h&K3C_wo|Oy"5
+ͶBPRZi=ƚɗHIaamϟaO0㏿뮻vT*VReڴiShv/b6{VN9HHz{A)tO\ķFjf$Ay`}F־_%Pj˫ =̏RXe<0!Upd)S(lLnCN0ǉ?Fg*gtֹ$Z#pxۼ[Ұ&{:$tP;#Xdx2}~>(yv&5 ;|/88`@-
+|ʏmI?
+GewEmXPgOU	8ٹșˆx+5Mֹ cJ+v/|zߟbaH~4]%xr}B[GDqK͗7%?y!X{vl]bvҭDi<#;l'jX}zTENx[id4hC4.׶`^ Ŧڅ<gsyMmjH9<eiMv1DG1s#;}1xup@DK\f;j_))? <,)SQo|RT[Y N
+)[DT$CYDnyj*ehf|h#wC4R5Z5[ZG/g^Uydޤ'
+fzʗ{(+ק&{*Uh5uXR/F\/SB5e0ex}cV%68BH7+6O>@0w׮]tPQQѾGydNV@s;	&|?O1bXrj*c=>%eiw~y4q,dL`PTŁxUnXփ
+9By&Hǹj<`	ڼ/D>ӈM\c^Uu$:SR{C9*?ㅩVT;.w)[0	CRguʪPuVXum\h>S0
+]"G-Q`R9e@%78$BX=-v) #^q묀x4)JѲ2 `(P!`Z70H(>+wS@aRKT)xd%SP0Ns`PˮO2'jnM7*FyvB{xM-A~Y.W٩VZC7(ǁwWYCr+Eh}0"nM-]%OLXvKjڏZ,;z/XbXQwpLz\ȓ0ե6pmno_>LVV_)F ޾ yULno(JwoL-<^(\c5fU(WΐK`ثɠdw\^=,jfܼ>DNwkxM7E.N@^R4k1 ifZj8ͨ䘄KX/%&"fG9pAvuMNo_'OzwΚ5K*,,\dɊ~G;.b1d*1BE?ȯ`ïu'|'?3s~iO駕
+;,d^4N;/iw
+ܻd)nwU\WPɐF־_+
+ ~
+z>: ՗NQ,/'n2
+׺cL#s~+Uqa>2MW\BQ}OX_|
+.9Y<DV[t}|@[Jv%{e[6ʯig[S0z%ӝ̽4>D'8{zU,s1wZs4-9mB;ّ!5Ӟ42Xޯ%t&o~̍d,`)إ]μb\ _zBFJ#^{^اwg.z8XK]ma힪	m",UJJ;ɱT{-U2\B:ʱ&VDoNBpՊo#[.Ϟ`X:*/#creZU+6gRVUk8i5rm1ai|]G☶z	&kQ&k3 A+QU&I>h[v|^Bp?0V6ڮL
+?F+'plFHNVLy34uMjt_4$?pK<v-yW~VN[-sbJ1IC$$[	C|_u
+mv˙޶/$rw'o3_o\0@n_O>Tk93QֹUZi$1Ž} ݫ,̘#fuJ((h& %ާd9Ì]pQ:W%5M{z8)zz:IGEӮė7r:F@
+'j`Eg|m=,u q"AvQ3\ Z>;Q>ɀl>T«3|rE:SpV?\Jl/i<ν,nu15
+|J%l8uٝQ!i[Yj&*Bj!ܫ
+Z9wv,(Lyr*󔣶S~v<:Q~df<nJdn)앪x}Vװ1a$;(4‗5F#5dY:*r:3>vwA^墘e},x-X3JH@Uzv|:FD	e`[v2eo_eZ]AA<6Z֎J֚ :E|AWXA+ C+9-#T]9`<* ٮHy.&Ph\%ԕ22h 20~_ԩ շiJٲN% uUNa>&/h;sRE8;`Ss:5$^zÂ6GPfN̩qfUmFk@Zk}]yp:M!q˯VȤӉs'a-uQM6;w͛s?iblO1Cʼ6Ck>%e@Qe<vk݌Y
+~КObon2VC-@2zύA7ZSSM  z2Rl!laf"<~C./0:4}4Yu ayQH!We)R*Plרr!)ct @E٧rhГ- ) ꘝglͻ<Riqf#ba(2l@[z,g粻uO5퓥wĹ	dpODǄ__*F9E%àDb
+u~e:1պJwaTΥfcԂJyk5GԾh{ANڭ*ul&TnzkfvJ'1}Ҷ);]_WZWA+V<Z>פb/6Z3@f	}D.l'OyH.!Ll'ȓٻUpN=/jj
+"J%<ֳv/d|L"?oJo1YkU:)|P6`=|kkccύ[;p;jIBeH;3%
+jx%mM5(O(-6KJh+NҒl39sv[Rz
+X/Rǚ#ݧYp^8CSS(U]t֓]
+[B*׏
+r˴AV[(вfC(hb&V3=%nGAzWyXspUʕ͛\?fw0,o$[Aa5 W郫lM׊=U?:n>:ȯUe_gU+^@Y>io`VR2%jx~H@X:	sx[}Т?\7 ~VeE٧kb9Nǵ\3/Bq/\
+(LӠ 	AlA7O<+Pi)`+BW5*;
+7PO v@{0z}g1]|QJ
+tGVAfv{Ųqy^C1q}}\peGDEb=E4Vf1!H Ac/iKx,"#3 W:UH*isg"S^iz_ [ZUtt9ȞBN/0^ym_N(rG
+(8(7zjfǘ$ yiNALvJ0J3gn%	@cU0\y;]h{T9UK	9bKU>$ǭͤ9d'uUm3PH?W<5ڡX'-48 ΗVXz'clۄd.9$R$Wjʿ٦|cn'{+|~GjMY̯x&Xެ+N8aG;AI1t~) J^obz5@`L
+r$qIK؛g%-K:(kxE2bpv*
+|(yAk&ykmaGƔB$/@Sۣ?X3p"lNT88:|v?1~sYfS~ĉlرBC裏7n|1K
+]qz~G7UH7$s/'y^
+1"3Y-d@3d#k7:"3z_]a Jjk:'RGY>8[\#h0dT3&g3̓U^1kc #ṣ<(c F PR\gUܑhcxghc;@Yrf' j	|öi/nٕk7jƸE77	S4:[:lS-gjMIX@`gOl:|qR6&kxD,Fsݘ+u^xkG$#j4vy.p@n+=$)$_6c)ǥSmg;1MAeQs:4'p\)[M7"njT2EˎX _^K;>KԉZ3С{.MxfaI9FfU[yVCN)H9"e YROo5EWj2v,},,w5'/5jr{a"94;iF'+"^xTSzYJOAoZ`ol1!dYEȓ-jMV ANJCw:)3fפ& Ռ\.)կhJ(dy1lxtcI,ِfx[)<eԳc55-((oKoܹsz@^0_M'UV-^x]?Ǆؾ~SßnU^IwbCy71A7.ˁ#4(0?k BEr;	b-:I&/uT  7]К	pc\DpJq+&!aQc<H.6%=Q>}i9}9,A39f,1a5;,Ը ߔD_xul(1YpUίՂ`%ABAX@R	럎_W=`cGXhz4\Lzn0J{3%k;aƯ`: rk|qF\!L 17l3\!N\U$\8<qvub5f8FhCo^UO³UlP("3Αyަ%nK@gi}uh2_(엂1l#샙}6y4lXZ /h? =B/U|b9@I߬0XAywUTOEM`,qyuQm1{W{/qjR&l)Ɯp~Rj'}ӼJ+UgpF^,21Mj_3|"Xqr1:S8
+R=-< %6|#m4;䰡}Z Ggk9F`f
+&##q<v.j pr^,)$'!^tsp<JX/OpI8PX3SV&O؋-/,Wt[PJ/x.̷ޝձ<,HVes*SPy?ib!MX_*
+^4z:b</؉׼4z?`Y5sCy&#?q@IW.6˸z 
+.9
+c91541E٧6~T^}*dWXjHdQEAֽkDU+XA!5^,/tA:6N;IlC
+)QWh,i| w=O״K>+0F< W~ +PǮiYv}<Q	?(s|v-m1`kRl45õ3ʔ!?:7$#c'Aٿ^Y-'4.YFGFԾveBa)oB>:{&6%MXc1` e{I9`+frjrN=h<(U=FwVxH*ReE^<+RL@@'l]廙2)"^-R(*]|yy=sؗVm'ddjo!tiZ Q-줘WvMTMzwh3<z;צeeb1kJiv
+{C4mT;udOWʻnoX*)*ZQM/ە'Es.)saqPvЕRnL5!95J[t`㌮MMZۮ<7y.XsK:hx<\_)NPh=CA*3*たXʯFV0y,	D"6h4
+-lwxg<~isr6`*C,5$!xVL/HO > Fq*bq;K2\0̕<F*<[A˖ղdn͇Od4s #\
+8B~JgΫ<G)FֹEvS5D2?(4⟇ςm# Lc
+4P`hĲy*Xyg`%ue#Xm@g 8PY/&EuO%_	3f	WڶZ,[g_}.nvɍ| \mq-
+u"
+3+W$Gc䀹4K!)<iɣi4UҠJH/dtDgȫ?4y@U]aq.&z(zFCr1g rπ5۵;mCmF>]l8wsí
+	b%c	
+VM-jr;#@
+	'N[]	:c[kOǔQ)S'7K)|<#e~U`z)d,{AP<J`^z@ 
+ O+AnS[xhs5%ީ<nARKXI"˒ޭ#t<zNK>,4"5X$Chvz:d?~w~#%1!Ma͒1W$8OV{QE^3)瘝
+[9T:z\SX,E;|{4ulaq1Ȕ2ژe0/`3A+j<˞\<s??eu+*)fv~;J)¢؞8H::?gSyG=;O^gaxҋ\c(]?TiOװ꽆Tfx6-j9H"_Xb`&`)2  1C:(u#bg#}^UmZK)\WG y@Xpmd,=Sv^	,n|1>BOie?Pp;4rڭCPPԍ݂nLTi~SMoNiPό3b"X)JZوhLMmmdg$.Pu_-,ZoL:a<3^:#f^SWOY$0%ĸASSjJ2	6pT/`U-Nag^ 
+0@UI]UAUNYcTq7|r+/WSEө</TsAOCG־N> }ftjߴם&)¼WY
+:K$6Ê,xZiEBB5'bf~%*e\-k$]mJ0kd2cl@ ,5CL'P)4-l%h	ML)*[H?E=/Wl/><+!']nƞv`'3Zyd/˕Pɝf*P/?A_83h-0Rȝ 	.ٙ|լ=%WKc*W*3۴oM,~~{au͟?k֬?a<&%c!oS~:oف+
+|$*&`36U5q[Ұ&ĖWbAهkq3{qQ<]P-L=m C,@FIìq׮?;bOel P/`zoIyV@6]_l6<trգɶ@$y\1Ao$
+Vd˱nks_)'~]zGT/-.
+7E OāPfh>Qɳy\n.{ޥq0b cylJ.HA)pFyF#jgFSG־1Ұ̇be?itɔ0nh\v
+q`h8F2VIg`ZlhnG^bFH|Dy:EI7KyOHT9V/xUтԹopv sj`p>UtNƫ}&ypQñ0^އ7VA&lWHp@p *I 6rPbS-WQ!39eWqC2<F(C)"jLjZ̻:]>a; 00ٿOuE^	4pNZҮTYTo>(vB0$C&Å@RQ|iR 'NJ'^\H2P¹\*nLAh
+| [Xql'\<&wdk+Z|XI@Ri;]#yu2g%PM^NR0?`9s.'|wOvҥ}]w~W.1i1+/m(T܈y1xn*|3;p4.B9|!AX	E!f{/{T[^;_]Ҡ.ͣ pmeY("*m#q]9a\4N͈bp7&	.0Yg:/&gs.	ƞSִ	|T.1ss @Ca~AEb@p؆x+ .?v(Twc
+Fӡeg>>1_ }*F\'r,AX\<\!򔷶}_I̫Ҝ[#RR'r4JaD@hTs$|Cz3|?AkyR+/Q_%PB<WqV
+ˉIw;B(
+o=%؜A{P֡؂ tz_A;VrF^y.c$`ԞUa]uNyr˩iJILC[<6_:l3dd"j<G=y^獕Q%")L|\`KNmHo{R1UBd0#}OV߂;7pbvRv)gH$ m{ExxؑsavCCg9Ol\%%7OOnh=p?&mA(saҙbפ^c+>15єT@pM	zb4=%9y(hGOw<]Ycf1-,*S@g皤vRϤtLC̶0q0_L}48c1 1k֬j?#~w-ܹ{1+{:W@Z>K"cpRB\IuðGꋲπEu6Ȇ/޿(YR3׺m`0=^t/vm%922fN.OJEނHS!X Fl%M<YwR@i	8ʀXSҠ6`~dLBoa 0
+.
+yp@C[Ԁ< m(s#_N$ݽ6&ԕ2 llƐխF$[37+͏2N_N5^ql>.}mIAd!!׬$,#:|ٝ@.U4O?#UHp|.3ڡ{azqί@a~e(Fwo-!K{ƧB5%Z)8	75-iMÚ13[)q8I%+Ma(҈DJ=ZGޕv.uT"%~}橩@˯|˱J{ D!7$eswhpJWK{2_]Ʌ?}SPr˞8l[Ps$3Z?mU3 gC<pUh5;3"s%w?.-oP@9C;^\vNw_0b ite4 -754VWKW̷V[	j&Z)kRKlpV&+i4OM{~ґ%ϟ< 8ޒZ]Cl_9ks=̷nBǽMV~
+5t	!<#z`rϔe}n")Z!6/t?1{u0xLϰr c066Ki):bxdSXS|T} e(xRx0OcҋY)ֆm2, >K/
+#GX]EU ߏzu:?BU< kPx{LPw+Q_}78vccJlUUp0n:$AbPx'<>+/^@%F:hNg}|$^n`NsXJR1i(6eҟ|s%WdCuQO+;He'8bwYL3a ^(|#t*5Gg\\WOc{dQ#?eї@LoJiBc iNO/e_Ϫr]>ht(#z +t9Sʙ@kSyjE'z,3Ɇ%Rs/H' B<`N`d&truQ6LgżPϟC! h.%*/}:MDCjtR k7	d	d!
+]Isti=ӆm#bPE8CLn]*m+@LyZпjx{DdYbe޽7[9pl!5Y&Dv~=`?$/pJ)s~6^f#sM</ZkV]͘uROvTM;G)pxyL|ăꑃܣ)LrEclɳSl㝊x1?]AV˱x.!NꞋQ]_=@?WrM7խ[J*0W^yeO>lNNNJ>akcm(;a1@5P1C[f< ?8X3Y莨"&Ъ]4̗'Ȕ4(8𘜟`D#qDsFp 9Ūр&nDku-9h1:&(ʀΠZ0A(>ٸlb{^skZD10M@7`>u`[a4 
+_Lc0ٵ8o+lz~fy0 jARX*3p)/^_7pV=lx!.ԏ-p#람$o)-s>LG?2V	?y43h>	o<\
+^PB؁	-zvH"UxJ
+( (N+ns(xf1\5"8-J#alem~7	}XŢ%TkUѓ\Hoӟu+G־;%>XU>U|WW{`yF=C4j+~s:v<(7m8(@'LP(3p@\|
+f d}N0zH./M|	UGAXMMr&be
+=NThS2¹15f;yabO<5A3\:^t y9b,J0>uw
+(HbwqPs4F#R2YFGM/6y<_
+|#c!ڰ 5dHXx-42sHA=C0y&7I%S{s`mjۼyoŋz衊+\R]yyy3glܸ/~Ku?SWK3eRf1l?:wQR>Ka5;C<ʓۗHEbd9>dhh]$ĦkTbJ
+?V_G=J[*e~py14Z!|e6kb`1>T%='L ,P~n$wa@tgAC8,ŤdLPkia (`
+51!jVBcT@9`80^c1wVuO[ItF:	]rc\Kҽ8v	ĭ8KkŇF Z36<)@PƧHVuٞPu<wL2>r\J>q[!L6PVb=R0bzgۗ{?N*|!ˆZkZ6ރ:hoR!;;TRXϯcr pi,å*?_h up[cHf-SD?F83[Y$^|@IfJX%?aY0Kc1BF&hܯ#^syvR[5K;&glxڄ#%y	Y˻WYSs%VG'sv''X,swKHOnDm0UaÝ57>(Y[RZVpy2z/OpLFܙZ&H椰"m,@;Nlc[<lad<qTwPPF9V^T} Ņ7٩k,OD#ys~E2c@c1P\sǷh?9WժUO8ᄇ~xܹ^};v={*T0nܸ?uII^:M;2|2[c7:B61 %uǐ/b}1PaUaMNmSzHL>H(k&Pg? icԧ ZID;I1$O Ys*{b p'򿷌`07byZ,{QIZXNzN(nOv}kFw/F$^
+ۥpHՔOQlφ#lTT}Bk0zS(7/`:} opG! .7Q-۬, B͍A7}wK!%1iI6hmF>@m!7ˈUi1ȏxތc;Ҝqh'ff}{`ֳ|f(фabHa;ʤ}Ѷ B%Sj	v:CI^y\jW6,#SREdkJDjRgP*Bc;R0SϽ|M@Q1|k_Ұ0#m^R	!V0
+l\iI:fhݼ+#j_3 }Tv(pL [j<@{! a@(748xg|,S淴La.#Xk~Z\+CpNte2']aeIS3haSMNIl
+ɽ)5K)qߣIspg{YIimbU, #
+zFZfp|] ]#Y4-sRA<ŠB#*mK*XL8tyfO..Ec msx =;e˖8q)SJKKvڬY38cwj{x7no[f͛7KkJ&S|E
+fHUlltޏޅi
+׺xӻVڤ& 3ɌL|) ]"9|2~
+mPښ8l##8	<>TIR?`A(t?UgHuB2 LZ
+xm7vܘ=jzݞ^V8>4ٵ$VrBpbNxϦe5ɞI;?z唨)~53
+ vdNUqƐx54!	
+C{9%4@ؕǍs|޹i*O*/h9#]ђEٿ@:M`LT' aCİ3 `CjRhOu	%$bYc<ZHtF,訨cW;bA@;RABBB"EE
+(B{~Zdws=޽Yz^]=Kez*RBMTP~W^΋P-qPzvW*f7?bcw fhqG0o0+$O[3k,BGu\+*ZvSlٮVNk<lVyJS*@	Ll]*i>Ky%onqSWy~m35~Vo.D{;r&RhjZ[לB`k`U6@3k,@K{mt*zswzy}Vx=.^;4]I--OX K}0we4`c<
+zpUtKCV79#,[]2(;҃9ɵz#L0+®fZ0'`%xG 24`70w.3jԨ~~11w۶mǏҥ\x/;=K.;%êq`&S"ܶսH;]|Hx
+461y`2F>pyRņ{Fɪ租k*k!:c}5P_@D2Z	+*PJs,AQgX+DRWu
+ iٴ`~Z|v]=]ء=ö}vx!9~[胐ӄ[/gr2Yu#0ktT=SW[Y?IsP] GV$Vy	B%fI*^?L{H+FM#|t\8/ϰ`_"!WO`V:80SO絼pr\(F^qdtL= {D|9p̈́A,,^\U@d>n5wTY;{&,C!MVt]a,\ #,9;bE	G({84n/ѐk6n?3*'$߆	eKl>pAF5\/ "\l2J6͓6f["FѤyȽC
+ԉ)>[SVڔ2{ZW`ڰzp&rY(f3޳/x! GUeY̳%Y
+h\]/6-RJV=|l+ӣ"Vba\^h|EXڡ)-apao3p|#$W/ޔ}Ia`.zij*B2	}q71.*%1W]+Y A3N~6kV>(f:"+29N3?w^jd+*_\̭^Cp:|x?TZuԩ,x'SRRV/3<`2PMe2zWq{]~81m/ +rc[QX9EW|?"c1o+g+,l5;paV	 faɗ=OpW`xs^}1ՃH^z-/A>)c Zx(lWx+  <ɦg!
+jx\@v4۞OD1]+0zP3pub!YW	pn1ĖKMsü+
+Y\g F{-s2ov_,Y^F)@[Yf3'6h1_^W2 a7l	/4Ir-a;a)hÃ`a }WrX`:Yv&qq:tK 	pX&ڥc^yXZF,vҊNOAStOJ?='FKɷə)6#qH&$6oOHۭV^*W|Fn
+9fl֨*7*(Bcv~04 LцiՇōij+gߝ(m^1K8	Ԅ
+VuM{jmOg%hKYVhit2*gSC겜*$:Dq8otKXV Kv/}ѿk]1-;kw@x#5St61M18f), jG'ۼ}rb&5芝&[V{JbOiDkgmmp5!\e(3c5k/_~_8{eoȑu̙SJ;vG[AżUjmŶ#+e EZ{T*_1[xclOL/69oшbc}j䤇*!2h)@pNpdT~|E@ M. A/9ǻs 
+nA kz6?k >
+m\grs ~9^SðhA-gm)>0Xg|iHY(`+P[
+#螏>p|]Y^ #M)K7Ri),7epëia.?+4hl{yqof¿_~ X Bo	'cၡ~Qshފe|Vh.tݗֶM,L4N.<z׊KIZ(R\ǖnal+r/"dO-(%q_p寥JxYi[x6!NqGAa#?S	ΕC^b?IP]Pҟ-!_ ,NiRA~
+ig+Bbav+g-Lyij܊ 8*'hry0mR-oz=Wnk.0^J!5I?=t.ޑ'GdAjȲYq]aڡw>@0)VWq7JyIvĔ?u7:
+4a^#Gk
+Ai 8,ec<s:0.VE[^9ʵ<;!Htc=x)m`;5kA vi%W̍Zlّ0e˖-W14??ؑO>1ǊWdܳ?nI͆8V5o%&1̝qMao, 3K;ߖ^K;^GL4 flwPUYeL
+Ue02N(߹@@[΅?qN2U0b^N[,\~ZV峊m$>`Re?jX0*< 졝C'X##?ظ1p<].#%b;
+pspZXA[g凁{?SP.ɺ]G+z;TYSOiYm,om#7YvC(F+\cBSа]e]$KE{45]fqNT?~BgV(ӄr \1W_	6ul\< z6f0b]n+fXϗZqyC@Xl8u"'V`-sD6Qs
+8U/x@F,3ǡ^T*IPCEZvoSx4mOoSrX	Klqn5iWtO.\eS t( ;~pKߝT;?*Nl8<~wpih1	Y ,7-h_Z%M.V4gU$\KԵKk]<@?4䎥$Jyr6R@aiU4-ҏB]^6麰t(0m^):eJ|C:0Boӿ40cG˕8M~u=Fn242aӿE^xPWFX-72E'2i:9/7zSə\Ŗy&(&:OKNNnܸ񩧞zUWU^^>}YguT=7GS\5k֬V̙3.]ڢE >:r4'?5\s+f(aa<re-1'm9jIּbHM> #PDagyvVQlm`Td c"eo&ϻXG>R" ^jR,,2a.ݽW+˛0C(&7>(-B1tvo:;&dv	gNhCvp[ixkAW`b22οaOU8+ZT-ib,|..^l,UYb_;hO/x?QBެH<.:jAe2ł9A,G@ l`[7l8fbmsl pN{]˘uEe\e0!:,nRlYFeogWz$[$.(˸<ƞq3Msi9j`s_[Aq)+ #+4wZu'!sxՑO"|;m㵱
+s>`J|#4)޵.j,
+44=T^/(^\fZ[5MUi>@ok</9bU$4	x>zfW{mCs-2Px@м~S]0yJtlHR{Dl+[63R]?&<k-m'݂ud(Ɋ]x6WWnN>X9M5zq>9[O1MI?uD[sܔn]b_q`,.ŋ>y睷xb}ͣFJLLСC	>֯_wM>y]`kbX!Vq`0K-IO2%yMCz|N,1qgk^9/~3f "VEت )\'=ct|>,"R-p4-%|tfpE
+$O?mvmWsxX-;JY  1ƥ`X1! Y}.?0ij)jl2Nݡ
+^Ys"iX-TBQU~uRž')̳Zr/.mrUMzRu1f
+6(Z\ x&E2MZwUf7mACƃ bT@̐<s>5jL4&+@ΰG6 \@=880\^?%g{y:ؐ_ 4TXrQV9Sg:v_\Ygkǿ>U֚.37*Ǿf>M;K#MH]5BaZOoZdT<gQn[h[E[8vlӰ]8#Jhpzc;:H/$Cy-]EGR.șɤA;a9jq \][uIo
+T)?ҋd΄;ܞGTw\q4SAcD
+*WX'|'oq+lލQu?
+VoQY; 7xDyirqw\c@-OHNlIsCЧ~eʔYdS-8p ؍9ҥK7m__/俌Ihod`sKb,&%&Uc`roi..+jl&^qUm093ip51&>æ鵔XO6gjKT}z1j}x&9KTY/7D[tAa4A15=O̭p!{\q]vٍdgmv/Ξܽ_XReѻJ5/Ta~_Uu~uX5\\/i+=i:\x.=[@Q)@BPwk fʹx\(
+Ij	XmzI+:Ol8Ҋ̇bżf_v-kA%aDlAHv-ji'Lc姟:10DSNLMߧxTV1|Ywl~_Ļ.ɢyLqdxxs$v1EƏ.SVZu[-=Ħju=dSunצQ9¤[yYгP<+3lU v֘/ز&5H4ydI JڊXc1T^*͞3ÖJR o{unvhO7	mZO~ۢ6T}NY5~	VXNz 
+4~:>93S	a4҃{+J,611c@-)rT7Mp)7`6}ujs(b._t`?vڵp9slٲ_K=h.F)^:t	IwsaFWldu wݴ1ciXF)#}u}z`BZq[WyeO
+-i=S^%rwH'\n,o8 ,_HRPm#	d?(`g·kF휫Ps*>l?c,k0v4-[u p:4O̠𦑂]0WQ>"
+/cY oZ^TKg28P zD=
+U{ӝتn8u&4WzjF-8`p(-t脤;1)8w¿@c,'Q#1=OY[ J~; z
+&aW7o#
+bLScOa>?318'c+4.:ǥJj1]4_OEN5T4hfFhT{Y+~)N)-34v"~㟖ްUc fWzpt">W(T+A-NUHʸǡgAU(!.^lAB,\-mN$3md^V
+p3`vqMڷvW2)E/]8悪ᦂ W?ֶL0̭zݧ-wKShWYp|J'IJkUg3#p>I?\yU)E/pzʅ-z3Wp.Ԙj3!;|Bڒ:&y*oK;O o77|?σ?yOkk\c<)aUR $laQ^N|mF//K3J]{<\h,aʞÍ`aXu >γ[-^%y5LUw=Wk.t}:e}MKv@ڑOh+[wޣ%*snϢyN~7/Nr}jzZ8>| X=_3<|V6mIw0}+ZWǗޫyf	U~V' xf0}h?nDҩ׬f=JbFWH#_%X)u7	Ї0!1	17v`L3lozvTL7R
+S m=bV+>5e?}NNQ 6W^p}v\"{rF <\j3ql2'?wyi|\HKԂ"LҪ?HfKp䥝SUvGnA14<lMFuygCA.㙀UXg	8bmi洔NV.e@s82Nˌ炶ۚP~DBkso·4=]	5|<wB}/FUx\O/qOxۛZv &Gh]aVyw5/<4^,#ܐX	&oHXഩfT3Zp)@,{?_VLDJɶso^8a%X-Nb-bQEh8")tVe$г	I0IORmk-Vzij<䥝"^΍6LV&'y1\L
+17Z]U̗*Y	P`?_K).{ĈzW@gu'ОO\N혡Pq)
+RޘxK@{l޷LgB7p@Sl"^֐Wm%xXյ@/ ,k |&>219bl`MQd`f[;h[O6nv>xEWVg[r/\봷Xhkza)_zLoɌfyJ6:xJ0:ϔ@1P~ˠe>Vɐ\7	>;=Ä1}Dp~5&5Sf|㹩5|AكsUE7˨
+=xsl&L܉+p`7?ԀY 6EN=4݁Z=#6uQ.>Yy|U/G~J@r]3*4~&\Uk
+F<,\=m>zvhڃypV:J\`^E-3	26J9gfWrge8lk%	(AA2*Opi.j4Zdt_>57Ö8ΐMpQm`Oט=w>s_[7Cb'NLS,z¼ԋ$4;'x{ӕ>+O]jGNy9s;SMN)G&(oh5x$|8yApkǿi!YKBF*n
+3.dQ{e.WÞWExך,Y"몿?y
+7֔2diq`K*Q}Yg+Yz/KZOI}P0e0/BL}ZT^fg@I3rx /)ȔWZ\5DhoVLqk4iZ]j+yNdsbmGĿcL5`fb	]V3˳׼*
+<rۃ9Xk +>ad;ŋ&~r fʥSlC'WN=.;qBXJT2oGVLcL&>\FS)\3ĻD-3. 0 F{?:YYE۴zDlVVAh)7\[t`?%B<z>oMok^jn|ahOv2@a0r喼^a+a?"] -TnOlǳ6F~5>q;x&t9m>s11WdO3ݣט{=w+|cC$7iM5iy3+ǛwSh6br̵*?warRnP[o,2)&\Yn0-]pjrGcm6QM{,цKv^?Ei_ԗ]V$?KS'v8tvz}ۉz-:6u׼ m׻g쎙4[Y[&(nY)zt6K:z``fpvUGXaKŒyms@Ԑ;?kL>6M9!s򯦗Aə)./&5.
+/Cbaa&<J|,3(O\341.tTt>J&CaL㿁1 =Rh4ψRV1\Jo)@#RȬ$LL|r/E3¸q1zkS.d
+?26eR鯪rĩ-4Tԗc@閜2R9 %?r[z hS ɝ8@ScO~Q@'V~n2E}lvqAw~ژ?XzţG	=3:mlw'wo#l|͉EKxi@Y9hD zM<'aoԣAx')}8m{]!M,Ⱦ4Q_Z\K'ӕ3a)#>7X,M\jՂFHĔcZ4EbbSKtuܣt|Q(*Up/rڵK-V]o5feq:łJeWkpyv(I,n췉3~e2qf&lZ-!YO`"BTa]Ej]h (z^TGT1.M@uA Z[0vpk k6
+_3@YqE\UbyC<w'
+R0v~@察Q,W
+~{2.4&Cў<Ӏx/np!Yg=bL
+qN7C7RJѝ<,n7ƍm9r)t(EX鏄V?_r[ubmml¹$cXVй}iVs,8rԾG6/ XT6>ʞLq%]o! b;R+2qOZ|Ż77@mϮP+P$Π028ѳӫz=1	i7As5^ɲP	.\{EL; 3*Hxnz.0K/+{Dxz:T?jP-{] |V@'zj=bC}zuz;`	ZH w6#!>}zhdey8Hj^"Qh	<1HN[]@'qg%tm++̊_?>ˑSKs˓&M:gϞo߾C-^o4hP	/k+>+ż*ˑaw؄&Nz`bUqℤU JEu)*Avi3-9)s}V0H>Wgx.(#n$*uxx:B!Mv߶Rз Ħ n Ԟb~q<~;r{"&i»jgK	B4yA5 Jּ`z 
+hhh'74`g&,'W]'x(HŒ%k_tP;"_^ڹ߆pг_"8搣&uDhܶUà*0>K`>Y2#}NQV13 ~Q{FڗKq3/?ET8LBgr l=7Xv-/zVrN(%-r.7*'r_bFY>x;ǫ9ɵa'qRz)6?H"	OrK*p;<Y4>J'Zaprn5XpxUE?/԰#er*։@Xnڷ-k^x0S`uД\=ddrS/I=86sIi^isF,>!-ϐ\wPHbO` ;R$AO5}CJMj{z5S&g&\ǥQ:\=4bb5>_(&J{	'|ٳgOժUKx`.'k3Έ?wmcI5˩|U'{na-Z']zOaE
++=<"h41eKVnnWUTTØq[8Z
+E& rs}^WQnsM'p(A΄Ղ5|Py8Y5勄J*wRvxwj)nA׶BӐ\xf	5#BoyN3ƻyQKEFjLƟ[-z]isbd$VUx$C#|x6]?)BX'[ij5O1uCTgr[[[d2^t촷(H\c<L=f0<I4ZhԟUMǌpbx6#J efglOqobpr`Oc:?βXt-|i絪k.CZ!ʱ\?]ɭT1bK~3%6qa9*^8cOUGM5L*U)s˯T栥&͂JXGF/ni$ G7<a:BKj6}	eՂ\ahٝaټK=#-'j3h Vدp)x<On9.GKB6VR2ߌqe>HcC|g}%p"ћ3lZLE|NBd;ik\[܈
+^8۬Y3 7??_mݺuׯ_	3N}igv!w:OHgd^ռMHw0YEUZ
+22c}ɐhƭr42}<.Ten
+4ZPҬDCFFZҲAreVw|hzd	q='r<}v}\vC;n4-C)b+ĞOȫGgV~yV= IEb̞Uj_+t|֙~ݡиjV;@M%eЛVMu!V0/+1<68f
+XJԂ~Q<ezb[jNr2*{!m7k-GM7x@,(z1?	:%ǮCWn1[ZG~TSjIV]]Y`+4jҎ`ݜizRy&jKL,%BKް@}%[GR0ݦ7rE8_	Oż]}^.:oI^Ύ4r|!;6l,VIq/h1oKH0XAew7}/y;4OGxiRBx}z=U/记<at%c1~8%1^br`"b^s=rxI[db8@TaoЃ2еc(ъ |wx}3Ti00ŁYAQD*.=/_o?r-~̙3Xpa͚5kժUsӏ-:tE]|%784v|^m韘| 67=SE^rD|?ra=cx2sp=-T%ǼDO+狹JZJ=tQńo[Z}ؿ*J<R9W [_|=NssJry4ռU͟o-50#Twyc5mLJyUizA8
+MeRxtaV$Qfx~FQR8-'&PUؖ8ZXo&rl7YLf_Z&rGX̷O*LYQ{~6VZau4Ր j2,5] D@ ~x.8&NT||ЫE-Cڹ%d:dA]!/*KjnF\<^
+W`QpOML|/946{rC&>&(kjhlN48V;BWGJ#W!Qs> ^U|O/qK忥+֥i^ЊC߇CBg{C5-߂gи,jxkMIW4i=_DJZ2xFݍ7ƶ7DC;^mJGɆG:&:}:ufy=p#-T9?\~\1{'"o0w˖-u9=Ut֭%lq0722rŊ@׭[%܃ܞxVq٠-7;|n*0\n@KfEhpjU3͋mbJ}pc5.r=Y$x[r;`*%AP2F^0z
+[YX!(Y7V@/kԙb?oKG0:ςP]ij}bCö wj4[6Ӳ,_ӤxZ2w 
+v)dkzvU	S%]c2Ff'gr=@tx
+v%v ,6<K'·CǼf+/;ZW3/d^M~*7U&9UM#6i"2	>y.N0@83h}Nk bo:nDS)W! ֓zoax|lrAUgS"%qrż>K 4+pGV]Odb q^'Ӏb;޻*^znvy5]÷9|V^Lo|0^Т6@%@avބ[`j@QLL=EUxc|4&F@3Zs{7\ pqD>d6\
+{,p]W[|ʚg6cID7HSw;W
+:)x^99 )&\m/?jq1n?[~.=Q.X=묳ON5ZjsΜO<G?n4 '7ʮTuㄸ!V,cBRm𬗏w-3-3^55YgkzkAp<2mf8׌1WRh">. ń?jЁ,F\"^[G~Pjǳ}˅hy-Ui.R]AgKJf}ߖ|y=g|KV<c<A+'ϞmnO?
+ưR٨/KlG^ŵHOk&Bg|N39L)^B8f3~<y mS`SM6o)]lɮJF:/$~ίifJ.?uұ>+|P
+̝IgrԮ8勋JYHsYZyi36ꏯTZn_Q5.1-5n&HhvR@[;J;,ntPZX\Qnq,Di(jsA8*
+f6IhM'O&3^c$Ƙmd}}ʽ4>V0y1y]/+lPs#v|{|V:;06?.fΥD]Qx&IsZK-~ߗt0?9Q6ly0+<@ꨊ]&$58f芝C4͸ܸxŹ/⦞^5rahY.ajQpiV\bzx6;ȣV&qc5|ެE,$&?->})֗?c+|G~̬C{7#/-ڏ;ֿ@PSK['dmaEx24/moMyZ4WƠ<`0*TqU0BO~plaN-2ϏW:e>m.[ʷPa()|hDv4Ih= \b+Ĭg쵧/4BhW%J{UG-p1\8LlM>{a{P=v>»nk.'t^
+.[19~kx!KS=
+ICFS'gV6+vGhanR؏ji
+}lUdUtV[V#? 
+fyLz
+$?GVτ񔺗a]>i`k"OMBkTꆡe:t ۛX.uj`U\5ۖLSPz8X&[qxE&щkE*1tћć5b!\~dz5XT.O"ku
+?Os\TvR=ƂS@tФꪛP\bkb1wK/qŋ+o߾Kn߾_A7Yˣ&hsM_}s+C_5PPJxH<϶z9L<b4\Bֹgk2Ysi	Jr7F@=4Saۦ +D{~Ў+lǫ1{5
+7&dn )&;_AZ"Gk@\Ue`X*֦A^\q<QulH]p} l|*DkI^\,
+-*@<;vHJ("3KM7{˯v(Oj%nKUǘüzG^,]2'\]B0,`a^ˢ-k3aۻD|^C"wQ/7
+|Lҩ{eL\@QJ׽L#g_]T+B㎀z--Z4	KZ"uȂ*97zU'5 g8(4ϤsoInecO?yLv+v'+?<~iUNr>㖺Crgm먂+L{s7Whe?*m:6s{S-HqrWQv)KrɼMhsy׍8MÅۦ''jg\Q]՝K[$P5`3}C;Na0hu1=P[R}<O_M|B.DG{>; rP܏?n*[^ظqΝ;ٳ]vu9餓bbbz͛7/&رw-((t_A7p7gV ymiV[ErW-"ǑUUT\!]X9qj0`Eߒ<㸠-[/ee8tg5M2e0^#nH\Mٻ{_&H9^s{>a\vT$ t|^=M},ՒRR: (q#b^TEqtyaGx].lEĕLQ lr;]րXQX~KK9{_ťDυDC\́	BmE8w|//%[ވD2߲bēeici 0餋(讵xjRa1hi+(rD񁚢4ZgUƬl㹟q.9vkYBh}7n
+q'6tݛAIh5sLscZ஌8"e{GxmK\[@gpС~ח zDl~68)ۺahoo
+0\qhUR
+-O	}B >Ki_eϟA|*5 ժm5nV0~ܳX҆V@cMeʧbV߰sofkt5lWJ%Hx54YZ"䵼WУmۢ$o=/C54;AsR|}~7Xr%P{ms9rE]T~1cڵW.GGGg_?&F	V	ɷqMx0c{0	4UlVc3[ؕٹmX N}I"|XEuUUvwpӁ5A{\?/vY[e/I H%wT<C#5MxO/66ͬ9hMs\1UY6ɝz.8R#O3m`aq#0>=#6X:#`^]UC&k gÑ槟26ى)1"u	J?L9P~9Z ~3ʦ:}X*?DHoJ kiB6+RQ84~Rczkq-Yre'ijB|ZU(Mii+yݖ>+fy\4.̊MaqVaF>Zk+pA	=sk奝gBR7j5<b1SL6UUN	]=<~/ Aq˭}׵JtZI>jYc
+M7Ux~ Co1~h1IέmAyr3]NdҧiU7Mv=A𹞖2(!E[&4ѭ߶4jxRȏפ B5bФyf 52+RRn?dȐÇ?xM+շ9qrd~lV+7qR3;٥`
+`U	2rf;s~d2r*7Cn\_Zrڀ]SX kv%K80D
+d&X"*?)e%tlJC
+!U!t 横I?5ojwfO0R@KAy]M>|˨/ c,uu*s}#aƛĲ08 >QJ50J__<ک9BaJ	lxӃ[[VxeuS;㖤V̗6(a6|<2_7YhDp]}W},ynT5v~/XiI^h2Ӽ+']z6c	J00M^
+bnŶ/G~6$6'38pplQW+8O\%kl;>&kV?tk>|+Q^*e0?_?F8$ΒP}q,Q^N9AWy:4/v}:9|~k=H
+2:h-u&\6P{=BGJ1Pޞa}0mUxV@0jz'tmcnllo pX_dTg&U 3[HU7990OHVSPM~3&23vLgT-LUjI5Yo@gm:3en~@70/@eԀqa3uǁ[&h
+qg"_g}1fKp#GIԕQ>Y᳚G-xu
+_Bꈇ	\["9k!ңmt	t=
+]$
+m~oAo!rØ@+b=&+F֭2v쎈̡߱A1F~>"_n+5?$z֒p[5ڧ]bpv|2t	f~Lw1/e4YkJUn+C-A?s^6C}=6'M Ѭ0VUs6!0+҅RVMy|WzCf+:yiLJ?0++658M jycfZ34n'm-6CbszQvxPU=mrДÅ*?(-t}r_hTĩؼMAo$;54v 	V`<>Lxj|GC_8rq®y4L&qM\zdu'ޔVCrK	ƥLU[ e}-7g|Qa#j%qpAM#P*0c}soYf'zXX-/6[ ;itvp{p|&WǄ) R1	+C*LMyp2gzƐ)x>X[VKk.}c<,UMֽ$V1%X#6 l.9Ã;^a
+ヷR5="Zm+	b4$*3jO\u~_E"5쉛M@ eS
+^x~YĔ01qǼ|3?	ɷMh?
+Bkc˂XyaqcDϞ~j4~<ˬM>6-kpif?DFzw/Lh5tl/K2a?5v-^jiՕ`HN%<eGoG8ouuƄڼ,r:$v,a[cF73BOBJG]nܿ@5,n\2#?yƥ:Nq~j$Tiq#}Lb[{G:%9Lu{8V{qLFkz?E7w4]m#<(h+R+Wt=Vq1ӛRn 3>2f&fR}oxJ*7NHEYqs=ݣ$os۴iФI^z9saB5GKc^y6蜔+=PX9!ʕ>U9+r\bF<yML+`^$_ɵzL뵄`R|<L	7Y
+TX|g(lB`Q0yR*>T
+mGdi g1>lUJd`If^%y#/a9;tk뼺B7,cc
+LjRҪlX` _N	a~al{{e]. 奝}ao@0w>x\n䩇aJB*`ů[QaEmrUe~d4$J36'Ai>RQ]u;[x} Sʞ6zޮqy-B'ܞxŒz3#|#R^P1ўvӋ0^sS/B0M??j^vR#v_J|{X>E\S+@jv@{	}tOXa@~pZt1W`qeP̴Q)v`z
+whǛ"Z'n5/"&u2k␚pnfi)e8EX:nAMT#AIGgQ<s-}pEL}9fϗzƹ&,}Ǿ˵`9sA7]|Kv}8[XU[\gn̴ny[#1¬ۣD3R؉Y[P3
+9̾D2|5ʦ'@	*<m-M!:mݽf|)+ޥ:",Ҷ[:<)H{T+6uB~Q?gsa å^_:/Ȩ2bg&>9wia JXjUc=aw硱ZK念 NvL{'x8lc{$]ֵ݅´fTzZ@_Y-vY룭V/V$}ק+yv8fTc/hLOuj׬&NS
+nWmsalS8x*
+`Wzod|FS/LI'g&Y$4{ψ *h؄g<(f䂡@!ϜFww^|K1WޟuC_x\&Հ2zxT_ݺ~Qv͞og\u6Vmwh.g,fxhEZJ(n]	%
+XPgI]i&yaKƤq\E9,!~).G)EZSeK";gΜ;V
+irFJJ)ך&[}1V;#a6A8ʹN}ˀ'!Xc`p<^ԕ{PbR,4M{#p{BѓM# F)q/?,~u*VM[IThE2/r<`h=ek/1:B
+|{Tr6iLeӧyQB8{̠Ji7JD-ؘ2<~f؄}#?#bKײ{Z|eDwyUkqGWlo0}| D&K=e;=ZU')P ?W Z=&piCHny>JBPC޶*n+Ϫ~$<駺~/T
+>ieLQ|#+%s9@'eJNLwU#+Ŵ0dsg{nvdUaq#E}B;v.s{K@]\VEy)eu-E[f暐Of/p5|T~k~^~)CG1צz#'^e휭ю[3GOj4{d4xb1A
+MP0ked~x@X5Lxju^QN9W/ScnNN3<3f:N5j0;&Ԅ䎬л 3Cnsb#[.3g]txs?@0X6(,E0e~`߮(\3da+9thwJuWB/}%;QG#nǇae#9NröhdBdzzRԕτ Z*1KLw%V]9zl~FU(?AЀ1SF~	)zp@AZ[\Y`h2}/|D|:jfrIv#+ͮRM 2$ߌ^XC^ 6j.4Ւ4]*RT&<`k`L1Ήtڂf$Ϗey^2/\ϰ)e3JZ!S|S<(ə)PZO2m1&90<:,n4mjdfZ2ЧGf`#/9]G} 1`ΡGB_]"P-Klm񖍻aK@uu7P1oBl~&2$6
+ 2.W ]B@i=-ߛ.v7SaLx.]%#]#q0J^+E+zU5hsC_y(賂
+Ŝ5̍-b/
+VZLK.hРEJ~ݺu:uGɿg~X_3w(g\>LH]*3:p/q:A=m^۫aJQAazG¼M/$c[F3H»AZ4:>淳.?uxoPثHcϾ̹x?/nZKA.AD
+_6AVwj@4;Z30@ӧwQW.DVUu}5[(u؜?[!c`{AQzl1w+QBl[:,sEZ٣F91ϹW0$dtAgـd7KŠq`wK|!0E'\Zm+vw/zNPĒKB+
+"tQP	f)ajkY}rGT0]B"1usLsWNH3'&P;.1Kzƴ[/W[)mT`rh/#bӠi?-JL9h\6*jO|lx;.;|#wMdAϼP[ST^n{q@p
+yD+'$>C]sU!`u5n"Iϭb
+F5\z&ϨW<sՓjosuuw7TZUV2у6BbZ2j1䩺bL11N/b]1m
+/9/K.?oZG*i7iWEfኳXMϮTw;$uYcq3xEu-zs۾5rEE&6	ԋ*sk@λFӽV5Meg\!|љ4-Xg:Ks@=K)uqgJ72AmV<fXmjep8ǫ̵tV{BA xf+aS8q@n2{_9 z.QZ8ڲ`JjkZ_(F#އ1FĿlbί01:!gsLd={>5.G74V4Ҽ!9T=Vj+M-tL[  s4=WW%jInnpE8+DJ)|j"xˍ-'MAFhθG'ˑK@4uBҝpLnAUo''&ޜƙ+v~)JǼ
+>JY)A1o<ӏ/ie]|Ž`nТ'w>zbM7bQyEO~9r
+@Q8,Rq㣄pm/<-;ev21_fN]@yg4UŲ)\xDz^5U:,
+Eݠ>^q(Øk^T:;^??We˖]pe qv-OL67n1ۍKl<4ni_$t| 3}LBk,v`IΕ_Ts>7dK9ÌLưAjZBmK޺<pǹ`f&?\Ȳ5PTdl}A`2_
+)
+>!z,<S&)%fׁа
+`{%M^%\x	a>1[.5}UQuV5JR}эy{vHl.lԪԡVu6X~%rnF12yD[.p<GVm2Rǽ\$feh:F\I5P5O1ګ:-slsH/FMH:qsS%
+UJ*Zr4)* vi(gTqeܔ4Ur.X'51OSahljہ13R/Kx|F H
+՝r /{W#b3QiyZ8fH~Q;9@cÝCuG-bT[~4|=/ơK{4|_^hu._U{,tvR	u<]%;A8Q4]ǿRixJO\+>O?׺@gu
+"?/@qSǪuN--|P=eUSrSj/{/;93K$QUJ-%~RK.RJ(SsgǏ3~-s1f|;-/X-#bpWǙYSj4ܠ烶8ꪊم>ƳZ`Xr,KyQVc`q Mt@E_ CE^mr'.%Sޡ]Fg{ho>SGf?Z`avjOIrcJH<dgh¥Tp\*vT*z*"8"A3egp>,CUqxϔBl%_9n\c>W>.)vVng;
+m-82 YY3AIH=uuk_,k/k
+(AE(UA[ $ E.ب>gD߭y_d^+dyf>S^r[Q꣜ -Ұ=5.i,̫20xc	oŋc@AYYY8sƒ`i2:Sٶg¬Ɗhmeh.<W;JE8"0;~0XGE]!3܁ʳTYZʘ(@i22hmZտߔdܠBNe_Tw8~YuRjIi]! Z'ʺԡF%<?c-[VxJG/']-7fsG! 'cf[U?F°WJr lsTRw tVUιR[IakRf[}ϧt9C<8׳zS(^ SUw٨
+J7SBjHR<HAFY϶72Q^̔.~Lfǋ[4^~-ϽZ쳟7'Ac뀾pp?B-t%3&(gںc$UHʳnd澋g<G$P_j!Ǖ\tPG[	CDh p[.BY,PMv#j˛4{Y5NDq?lhm`!2]
+2+Z{I_-{R]TY% ϫLk#I z%SC<@CyYIvjf/J wdQb?SI`J۬`N~1P㻢Fs>Jtc~@ʇڷWb clh4aENkfho3l"ƧG<(}1VE,*se֐70G!֚۫vTej%?kܓid_eb"Z-	@<ؤI %:.ytUAi%P{8^~kitGIƍEݸ\0&xlqI&Oi1e-88v٠HYcw|.Xygv9!jSOˌ"XUCYG$R!`P]T,ˡ@r;4n1\kQk#ڧ-:җE[f?ZD6јWt0ͲlgKЃ4tQP<# _9M{M -r<3y	I׃^T^Te^bNbnEs;{?kb[8S,Xݻwҥ\rȑ#4iuabIfO/Da*Țҷ"X'aqȐ3N
+Wz:_E(4C\vϓb𠡷DJ&pw˄)&g]٣$-	[w;^+jA=UDUOl?wk-?XZ]+~bgXD mQb.停!l<
+A@`gio]$xjp\?rIГ΢{i&hb*R60v%z|A+|p!_IVk׭Vo1:Y0/A尚 7*G˩rY @2$W5_e`[+  Y/}YZnkWY]?m^3Qs$N,tB+unS݅f@=)ugxr_Sn?(W*;	U^<)7Mͺ'$Z1,ۢ^mc4Cl{ZJiV	)OMJ|悼 %g}tb90M{{ǿxzgh[y7;JQhEΨm1;7u`u`1'8ut7U
+5:{/8<	x}AZao\&/񵫥b=b11=V[_ `pReZRKX˸vN4NBǩO_mƧrD?'=W<ҖH?JqazPS=n?rțo#;w__5 ђi8-!3*.J}bSeؤ,y:6Ì;)IQ%V-HHU,r͔;(F0\s/V:#a,%KʖpC+ZYA׿}9Jݽ&+- ySGW2@kr
+j&.m
+W"q<C;V[KE+ r.WIi]a)hTڻ#"Yi eHl5<QXw-P3_̗b?7U:S^\{[[VhY/[f1UYz_Χ5h7^|,:f/	,;p"ړğ!LZOI4lڥ4ߙ?V#-E({3ON"(kS݋i+;&dBʓYy_BH.p<9Ƀ='Hv
+[4Yc6KdT#؂tg]N_ZKW`eXmEmŮ>yu!v?U(-OY+^+]}Tora̠Y*̣R&cP6Z1d
+^.QT%:=A$#:ZB8v1|_kאi)b|$cscbb.\#\|Mh(S3 r<!eИҒfhO֋n6S,aaJUa:vEVQy)']'W{ؒKgiS.3F<IUelkn!$!BOЁG*3CY_$|+L5qm+oK@~-`*4FӠh7>C`D3 ʌxD%YoZv[Y)^)zZr޴dGK2n^PPUj9EvXtE#'<޻nX|ʗOfWA<Xl@@I`^3k/LZ\FTe/fQk_m+z7i
+NP@ [ }6Aȋgѷ*l7%i4C~
+2m<cե*~\O9.\_og jMYʼ#ʼ'0VHs\ ,\XԂ|-˾P~1S90Zw̨jԘc|Ʈ|2fJ(HbWCg##? }wԎ|Q${WwDm5XiV~MHeǨm63jUcux(^eh]-J&og)پ,CWLgZ=Js-ӛҫڰBXP?9aZ<=OU5`+uzZ.zCDE}	1@|&RC-=m?~޼&ۨQ:j={,Y.+ω19.Ĕ>Aaf[woUA&svbcYW a,79REsgnl[*/ ǅAma2Arrē_9/\h	GGK :Sqɬ:EF`hs6gK}U],C᲻+
+ߢr O6M|zq9R]Fj}?<LrzigY˛\/;Tw50	
+6!e`Qj/<cGy:TYywhdR+QHAl 4h4!yЌx8Q(ɻa"W!;X>uY7v8L
+HcrLTvs_@tjl1l/ j<ixve%!?>ZyhJFIф6-P_7X~˴6<e橹.?1=.:8vlI.B#LaqM.G'VҌ%F&u֌N,7%(?E bf^7+(ZadZo^W^'`+me#n
+޿7J`.]ჵo<x6wrʍyjNŲ\o&a{,trw`$=.ؽ$\MXWܟy?YЩS*UB-T0EI"e򴜆Pm>M4~s7oܬY}StP-lٲ?ȇ*Vt>luS2nا尻	DFJT[}Ot꺵=U;4R]U3b 9"%\PHNy,jxqp8i xJtw%M=_(g*hb׋3߰}w}0ܳVD=HhEr![K:fw	%*M+gBU>prcؐE;uPr/&§<j(a34	qE4;4n|0}Cbb9Sf5zX4
+|NOBJC˵ʲ϶Ghvo_x59 Y%aNBU:;4/e%nf07x ӵd/%({|[f|bO
+SQZwne?ZGҬF$R|=Q]cy_[	KKNL-/BD9hHJ96hjPݢԞGLhO#7&uy"z{uif_*zq@ib]9wD&]-ブrsbXu}涨F}:x}u̵*Z>dg -0=`aa$E1"U}W_RPHWsI/L3уt.Kgqcu{#Z?C
+Er'9Q=9ۼ#arܲswږw5`C=ty~>}vYhvGSα*~!홏S3AN27?ļf.s-l^~5׍:[4l-en8?^k3/W^홰-\&$Gi~*ݸQHmFn]|n}b*`&x8m_x6GgwB9/߭Op^96/4j۰U{9UQ D%a@yo^:x3Oq}.
+a+kK`qyiP	)sO<(Q8Kˈ!ݰl*86ؽq|=SHqc`^u~'7txzj okf̐(
+n3ފEBa'Ư
+#^q	پВ!(/82ȿpd(+-ո=Wfȇ~Yێ82?5a9!+>0yZΙ5LqĲ	)O(hr41zиQU|<1szΧY v $`Ol\%tPO˴]酇:tk㭃%G)n|.XIΛo-D\ \E(p0j:HpJ8@K4}Mցps/zR_U+0S=-^0ڗqJG;M;J(ud37ui9gi- P؊LHWSͺh?ٳgagϚ{o?´YWMh4aL~7R{:]e}ku`@[澄d	azezy-o_c(YYN0-19J,Z *_Bգ`(EҪv\|?My°Q
+aW	U2,\lvK9(W
+%X)Dn;?~|U 9E(J|J==#|+L=6iS)oEj^lG?9wa43h1jY㓇
+s%27yϴNw$3^n/Lu{\t0\]ׅ*$7WÕVC@EƝyTp8(iCz62p4
+<91?5y:ڋV0Iӆ m~!T/i0 <IӞY}+Z=< ~\Ԧ#,ٲ-3z4λ؅;bGSd^=J -C0(_h%X&Xm̿9>}0z-=4n	DY'Еt+ڔ
+cpI1٤i[:\.<l.d7W;p+/wK4;9t|c5O%Н^~|QjzAg7mۡC>m۶!XPZ-խ5/pܹ//袸s=w'///&&OsU ,qJ^=-LY4,@rNcΨS{/=)dsJ/dÐN/P#âKVxidqgJ*BX|cИV+Zn(wx:u+(zeS<l^U_y5OJE'7]+?W
+LY2,3O˪oQpᾝu
+CRݭV_Yr`Ĉ8߃T,7V=Qu݃Z	Q+=YK.X)N8&dLbɀ:k-= يl6hDE[ ^Hk栗j5;c@Σ(r!T%zl#þgʕۂThVc=ך+(g-ECy)WWNi #i.U3BknjBjUA&Ϡ4Y0}z~]SflR1jLIUdH~N(#\"Ǜ>sHn~w_#IF# +h;5A+_BELy`lTܒM}78viڻhi֘"vюAaϒGۢ>Gv]TA"Ց	wDmi$28?;<[Q3
+4Na"/[
+`*O<tȤ7;%YP;]2 ^:)B;waG=Ï[_}ӐLtG8?z͋S0bnisA~^&W~iii{ޱcGM.&۩S'e˖ہYj*޴ysy饗䘋=qEG}4OO4*zJF+@Im]yGUtHe TVNZU"LNx:DqyΩd&ZzBAC<9*z%=M(x@O+şܥ2ux^32~;nQ`PS@ߗ_[v-4,֧_˪A=[u-H!mю{f|zbD̶qhf׿`zFH#n
+ t
+xj!'#p86+7w1`é(;r^~eݟlFODoPgmH] Ց`{ Zު"MAhkq1+<\Fs3^?_oLII-<[Cwh++/ gZy ׯ6tk/2khX˳ZJ"Xg^ףagԍCQ*L.ͺh6Z#3BiZ=|FW::iHxE{uZΟPuF%Va-t%Gc6oV#P{m>4ViYjĻ2|
+uX'c64=JUm +7/CiHH5h>Xw}0n'vEћ=/u5>c~'Z۳[x,tfXhZ*lNn`z5p@d]he#Wjd(ODk^ǔqƽPܷ[;s|Zxb.~n5뮻B‡[{jַn.о}{_fM<?9w?V(~5 5	s^:5:!$br꺵&c&WsiJ^7yb{Eʼ쪂Dl}d.	 =]	"蔺/a-KٵE^ptAa[ B_
+C\hgv_6Yxy('RiͰ\!_)QtZ}r*fN&j;Kg}i8iqĎ~w1<,qh)U<f`_,$Mj4LX흣+;F}e^+"A7>#K3>ynjfH7(65)J>H%,e֡&/+ΟgⴁHۄR/طcØ\O ^Ot3+WQ|{VI49큊<Ӕ^
+*\]7ګzq-:ЌVrSo#AN'$QSSsA.Nsž?6iːwR{NLm"~80v%J#%mi:_myD[4&:ŃVr
+v #hD=M##D^<=d=Qn`骾<2إnޠsf`>hXŦU
+ 4늩YW(!qh(1V⹡eB>1@B{z҉aMy@J)h:Yx3eBG8\L"M1A0q~n5D [n<տ󓕕hذ/ժUkڴiNG7-P̯Ern\$4R?쵪 !014?0b!cx]pYe~0\|H`(H-fϙw"|`U/X)Deypime* p=9 w
+Y
+Aɭ#ݫLn#TȭV2ٓyPN*XeYrrw&]wci@cbȮ{Lln#:qyL8N[/o,y? UӶ Cp1,v(N]jQл,P*9X>2ᙑ	sq7*Ðإ)VwcT;$6ܪOإ7B JB^и uIYE_.k,y}Sj,}ECS`NvgT:]
+z+qs(%SWYLf<gFjRj7w})$4UGh8FL΢Xt&ï£hvtP@*Mj5s?ہu>0 %Lv@:ELlfE
+hy C&n`j"62*U>v龛OnZo&5a0,ۘZ:Sɕ#+"GϭVY.LE G.f:/FB@_/[>%9^wt8Zz㳖B^s-ŭT~ |>qnPy#DpgkjSLyWǎE9曓hѢ0;w%ԩ3`ŋvm<,X38oG91% Ř;-ҲP˲3~'#bJgs>3aۊ3.jRUd3M~?3c^:1#
+<.D|ޖK]=he]h Wdr>`	nп+ZDXp>U9lkox}l^{_4c- 苐$(j=Pusr^0M㬄A|վeJE&@A""䒒sͥ<B<⎔EBgԍQ<K< )+˾JeƐIc]	d,J54n	|%)=b@mWc^D;[ OEפN@+	ePc-4;_3ǜ~(ꡗ4]@bq|0袳ky^X~˽ΐۊoN-	C2P꺵fJ=e<Y\nAJ'5aBʀaq(<6Wqe [<Nm'<.ieg +[8ΎHxv@t(aF]_/tL*nv;+kmQbNVwFmaK%#j-]1:xv`L8pKhZhQ%7T ҤV*\"´z,g`*K"Kr .]uvg][}B)˾e#t@l&V4)9`d׬ŗVXs
+, >OZ~/0;vM*w޽z?b.qldf1|J2ZAWQ2ͯ/M]@169)/*=s&crRZ93=JȹG0Pe>92l6WU0'Ü
+]ǤU-tnUMR>7)B+),\c	wo?:/,h_imeF O0Ŷufi`XE_[eM5M-C,mrB}He_v@8<\sQc/_stLܿV>=k wttnb"-ODo+J	ҏ}O4dSS{ȇgݐ%~ћVrۂӓ"{ލ"Dv@XRyInD0B	U+="<'|}Z5Diז|td<sD2&"P*~ϰtRb!,`y)ZiD$ d6Tz{-T1Iţ+td³OY<$v)ȄٜI{JF-`:ki!qpoi^AGwd. :{wr`ʮjcbx!F+^ &`)]YMFB{9@-b.@~_ua9Eʙ&݄ARx8V5Dgg%.`#FXT˻ JG
+Zsnň=ǆKs?݀;LW#-S3kd0믿檚է&{evi}6jh?~|}mڴmˣ+J.f."#k3,lLJ{y\}	!(+M~so+,pECX7LuFz P>ǆ"Ti(rK蹆Eƫ?Q;^ v/,nD<팧kVb\O ,{ƻ ؒ3WݾY/N9NSОr3W#B7K
+n[j}w8\˿[*T.^a5cb4߫6l|zʲ"rijt7OJ{h-
+5,\:qDg _t6P搸E2dÀ|Χ-H]f2Z{̗z^65)t A`3\/](`هIx$wg<UcB;[k"G<k(ŵHFYe3ƚ?p!2%fT@sNӐG5k|f G-lᅷ3+#qFyɨ @(RǾ|୓:{譃cc8O{j1|W4u;̥cw=ԡ=0~oInPZ+P=g}m|D/> vهo  /zW.EI,Cq컪
+Q`04v*:+o-l~NWgم^	uVirOyAWz Zoɖv~^c̽m?3ŋZ~w5\abZi@xk.ӵg	 dY<9&o|y8b%_i浾-.2խUylsL'Q?E*kn:F|}{Q#\dN𬒀5,~WUa̶9zUM=_b*rIYVix}5+E7N*g_W8'Vuҷu5=BmwaWX5OAӽ{E訦*h#ш4:bs͍39xB~8az~!027y3l,h/}t4x+ud@75*-)b׊Dgc _*w ɑ /1	TkoOŽ8!?YsNncN.?(eSLq'7iFh7cn-QYЭО $4I#CTIia5E,\KumoϡfZIi]s0頜O8STLhS~'mq˔2,~j_}j4/}_̗(?[^g/·=KY.rUrz	ڿOv6[>XrR5=2G:(򇆶hvmԳW]̂goqCԦD*[&*mG2^wM0-^(3[-QY :;Sphg~{Y+
+&bZ	9b:tO9Zb$ ASGeѿ5ܻs!x対q/\u@?5ooJJʁxYftAÇ_|wg?TTTܟ{GucDTW#Q 7ȝ\{|-SsfsKĔS2F͠B-0Be	dpnhצ(LtF^(1?Gc-I3ReUCvxV=$f^z2mӖ(P;񻵏}px'йqCZ fOe
+;&f}j般ܫd[\ E
+VM߅wzHjBHd,+=V0=aPua	W/ޭNI⡎(*.%ϘIVVN/1^`ls2d3 oz8(꘤b'[D!f)n0( a:#	ٹ*  1&,2x{Ȉ>	k6;ox"T<@Dk=2gJ^4@1?5Paj`)Twa:442sxf2s-t{JF[f߂p^d,J}epY31MymE㓇|Q_4LRؤI4,3s&/nQ?KG'VB};0v%4uD/=^<-<٩wODow]-}
+KpdQMN8=rm;ye!&2ȝ<Pk}GԖ6ۢ6	ijx_7r=jTb5RMͺ,&qi(D.?lr6WVi|? P/25j  x>4{-O28,NеI#iVCmܸqnnnڵ9䐎;o֭[_覛njڴiqqqM.矚`nV~߀[3gΜif~Ǝ{衇rK/?N끰`s_l6;1U] /#a$-S`l-j'3Idp\(sk5=pqkeQjwc9|u+lS^ˡay?Rfu&FaM5f4|q.$4zε8?(Q>kBЀlHO25Pِ
+<oiy/f4[eb3)؅kve|4tKV7eO]S8Kp՛\}F4#rYyHzwKx]  b&<59HĔǍZW9ȼ߃Dg *	-p 'Ԗe_?Q	O;X]ȎQ"G&<2Cq;B=s^pHipQjA+ 08B`Bzb%Vy{0][򖈇2\`Te_`1q#իZFZ(&jA |&Ku(jio3O#f+(R^SڙS_y},;$m(hȘ\UY@KF$<KCc'Q߫_k
+3@}c6^ٿ-saI{2*[",^]?([7 vwAxjqa[:P-;P-hO[(f8&<<XwlIf[Ѹ<ԑf xyBw8%.Gj4=MO# "T'
+aW]O!׆
+<> ƌ7	n߾uOcm۶xvÇG1fn&"&{DJؤUYre]}~eoQR3'݋h4V}|oN}|H-l(!n1b쓇9;xv}lqSx-E0##a\y>",%[t÷.J:?%ݬjW(ه'B{\6p{>}qf/L<VeɯxhK-ŗ߻Cmg( W	
+1'BS2\rCT3WC*c?(W=>K<VMɁR#.oNUX-J3ֶڒW=TEv#j!#x};
+2PVc@ۈvcJ-1I%(x %HQ kBn֪MRI\t󩕹!Kx\uKYB7|TĬl%ſ	Qiדh&o{Zym>&׵j98S2Z/u2O (@\%SusD-iCdUFGE<#⟃Y#DжZmGpu2)-qQ	S31&g|r#sȖQΩ8f7PxAsyKWZ-ۺyCaȖcWn1ap[\K˭Ў8:)uo7k@mxed+i< y^wqCP,':zhbT07"8:hlR!߬ KtUa
+Cp?MOYmci%U(lb9*A%+(`3Ad<jS`1k< ΀k~nsgΜ}9#~׮]?ycoŊBԟ$2%(#k,m&#1aTʇ=pеJi}I=2rBnՋU%yΐX$8;2S<"	{V@?-u9^k䍒(߱ae.W<u4vGYY,>{ACIbK5AVPPN _O	m;^1W圬ze- 
+7y_A
+{呾Yb5	y_,EnT0ĒQM>h|[t3Đ㼼67Ӷ0pLCGpLʭm=E;*Vƅ]_]>:"1$NEUhS@Nلh*dV|,#SsCA[mo]j"9Yq#A:-k33̭w8Z[y$OMA9W̭VJES}nnì{0Ì׷K?Yį;0'62_U3[pĪN'OL&wьyiOr&jO祀S'3<6+6aqCAZt't80v% 4_`99r_&Rp2}탵{s26V`]Q_^8F_r?Ƒ[OQVƯ_<sSQ[1u0*x#GY?`lЛvi.kz;LF]U mpkKtoJOJ늜%EozbpN.˾ֶjMu;:SfhCS22ш5DFGG/]/B-Z7U塺q(9S}1 *"DCnЧLt#J!V]/Q 7L?ܧ,\$-mtkqpH`<8mć0񤈳7ʱ;B Ⱦ^q0(JU=I 2*
+e9@v%9t~X``^gZ! oevy#G!j-;#.|4a.0YrVheN/+(3YRi؞nZV@bp5üp^%[F9-trQ37Ծ3/SXF`x?
+sn2)DxҒX"\-Hf$<h`ڻWpeC-d lUl9pWȢ6 W?dljZi<cQ)pҬ˥uAԲ86E>dh6 ͻ7OLzQQʖbBʓ(`+̚ӌh_C;}=:$'fuP	M&3y8ŋ k!BŴ!<$1P=ؖƦꔙ-.Z]f9Iւb@Q߀3=XTwfmX}edtσ7^06]-26y܏0Y/ZZoUZ^A\sx!ju,yYd@훃OƑ7ߣ"_<)TxMՙQ]Pꭔ'V-2HhDYqcVULi_JBTw5@[,)P>#YfK-Jf%))<ܜ9s`|^scCz&Z3K2#J-^-$r =7$3G%VgNL}QuxK/	 {ڱ'j<9)]5{3("5uh|=$2e(	ҍ=z00$ şuOT*>B+Geݹ9-~X'NYA5:z(b0u2?sh,@Pcׯcym/9T]a! ,*,he%iB{7VYbXo&ԲO^glJ,2m2y9PwړrQ/[Rx0zUU._w>shRA+4aDaZ!sGYtu<UϤUȍݕPAÉZ/y*B-*XNWA7<p'1!5@9悏`%OUsꈄgw2&΀z	d{Q#V;Id5(n;8#s} @4GdVR 8\5(C(2$gܙ/'@ 
+Iyib3`E`f=|/of:U]ZM5Re,W4ZL?b);DmV[쀌`5ɝjbxᶝk}>s[>Bo
+>hs[5ҕ(T5Ws]l	+9Y=b8Nf#7WG}*AbdZ~l{yGs	LK[TNK2ZS@0k*ܖ8)Q6S8ꖥڳV׭]Cs;ۼyN8a޼ywsN?>jԨOzk=I.	"UHT8`I=9>Pi
+LGW`}	bOҬ+ 7yD:Yx=HP=1NFtg4>Ui]aY*
+e:byi<6n<( x&[/7	b:9e̽(!/R579X/˷jǫQvhil|O4v
+1M0Vd㭀)$rg+_UR"s>PIDL!櫻J1 ϟ:\Ճh,D^z"mJ[XgWsN.080aFXCVV)_DfUk5R P<s8kG%TL]XU7YDYDV rg8t҄ 	Þ!aLۢ&L\ο@+2|iK5{ DΌV6zy%j[|sTح ĪZC
+Q8\TA`9;ٚxԬklNy0и`(ft[$da&ri	)xQy$7[u#٣V#OX |e"VANCP{ PZlhܒf@N{!r)ɟ-fS]7AC/V;fW[mDk%낧IHy`Ց"7AXt9`Gi ϢV	P}cB1 p1+O)ˣI*/Ȓ҇x%iqcnHܒ	Ƀ,4i%)}Fg!g0}U([*[EBM<.XOɸ,bu4hOǗ;}~mC2I,M3p
+Ȫs95o
+锌%FGYLQlR l	RL/7tԴ3,mV[Nv_/[ik8Q(cFw8wEys9T@	'pٲ3>FtoC]]U6"?%0@Maza!#LۮD<k6O0nk1'r1rZ^t|w"s1@3_ާp[t{-@ɝܕK\&;W
+^+Ew|X`6yG/5"r}+ƀ'Cr/e(;Ǒ35H{8C1oi6'.Kg`i?4lY/h`YaEmJ3V쮼)X9u QkrpRvF? TBΐGd/_/Ӥ$z6-b ̦P'TYEd. B<$KӘo<FJR 2@oL3\>a<?/8s&;XOݚtL3ZΨV^6|ZՉ֪<>*<8\lsAL$!
+,w_nlY/# KYۣ6:R]F!ݫ# o ٹ6RA@^yAÅo[*{I,Qf Zܤam-4ജ-ޚ2ee0-_~'R4I2lYμ鷗e_H`xUYb.b6oS>6mBVP(bˉq)3*LG@8bhC{Y5EhVwWXP4w,J}<qH$=Ld(|U6'9qkUGOʁ6+]dpUPp:Bne<(W)ֲB zoE˛
+@a%:[7yR"8|[H
+ة[ zX&4v;¾t Pn7ݮngNȳo?V9E
+?/8&߼%6G }:d7d<08,/zꩲ-v2+Cf}˅oXe^92	X
+D
+\;P42"s`0{x[E*8w0Fp1j22aZUhX*V#4n^=[D\qEM#3T+ᏄG#a6A(!4W	T4C#o
++#NL]+p%*H25J3yqmQ0` "rNm'+A^\h|Sl[E3fF^3e_p/G^N7NtwIX9Ȅ9
+NÂ}7`0PnpLZiOiU0e#UG@ڒVbek"S$Rc4<ʷM"UpgN)xm<ϑQ"2Jl>
+=>='IS{Js9IR*&= eWJ[>DEDgHOLy^CSs<tigϨ%"zyMdH7a
+s܇n2oɩ lE"BcLUv4Ѩ'uTY,g+z
+8cDwr}h%-e(d`zQǪ<%sUiVB)dA&Wx˲/z<{O/(@y|邹sDNUҋ'-FvWl&-ײ/qeSt+*>fmw*n(bU6K#ol ֧ڜ0ܲwn"1 Siq-BWUlțK9܏n6$U|?U#qBz/P-้Dr}Dʹ3f&9[OZB nEAׂ=zwI?]#̪9n5neEZ`],xhՂ%X2X(sZfpd_oy<z1ֹ0̌CP`@:y9rc*F2,HiH:<~Au Fhz#e`Fc
+Ix8*~7*Qmٴ4B48a@ږ(	>y;   z2fS~`ށwlٱk{<2m9]-#izXEQY}@y	mȿ:=E ^
+H<dȄO͂g[/<O`9Q/+_VOqs?=eo{6^P~4rsoVЊS) _f֞ZHˠk3 =)ܡYAIu?2D	5[f1i~nݘ@  1zZkg0i&2<cn}	@ELHf.wO	"s=@3 h,{\XGc4D[g[|px\f#V y_PU92cXe<3:I"7ЀaѺq=jD`:96H+O%QK:+$u`X-ǽ<4#[g	McAq_9vsC~y9;˷I'w&&Nj\`+>Ej|QZP?<ʉU¹VbaA
+1LB_BʆQfS&I6])G*3(o1[EAH"	t!ꑖȼz[87g_킏hh,C2rp
+ek_hWZex@`
+P{+0meM(L^y#K 2eRp-^i^LȷzFo@LaZ-eG%V4eH~D=OL`/x#`6XX45oěu?/E{0xM6N׉f׋7kvڑYG_ztы<J;(m˳[<@@"Dy.Wunn<<CZ}y\3l``Jў^\!Sfī {ZKjYhF)Z%4<qd	Ƀ̪3ԜN9	eF*mxS3U1w~nݘAXeCb2rhzF2$VeDut +C"oUp9S{Z4bYΙi"d@^IuEGs\uO-|[`z*-:-l)e m<<*/Jч(S047@K.d'Ld+zXEL #^)\XQiEQ!.!,	4LyS	 ,Syîh#:p߻0I [GVw`:AyN6<JZ}C%#<!_;]lBaA~OYv9Tcd^)a*O3N?(]q'SBzIK_Ғ}fRx*BtO̙quB	iʐik-z(+2imvsc~Cg&2}램
+8p:Dn6mGY5|%Y˻x5Y%U%w,xvBQ?VkN;[~k7gZyY۾GP컀;QnhHFb◷Z%+{ ᥼>1>NN=!h%RDzC 탵A!Em[nE_al)%aWG&]șFJ.xH	{Md2[ȴˮnynf@%}y[ߝJVŮ\(4*Cx`tQžMM3bſ7R<	BAeUtTz.z7?49>zQC8i?ṋ5kϏouu_C7MJA \S >LGc1Mabc&3A u|x
+]DsКp^P [D7;-4%MNvԥ/G iE #ʲiNΨkJ-|_W{O!zmY
+`|(d  q\s%
+ODQs>8{H<T)'DEna+q`Ww~U!'(0 <6.h<w*Ûy-uO2Qw.KXK.˿p^^c1aj+E3pZ#}G+NH_ș\šqG߲|0.X[R1EU=0a&ayxwݰfd:dڭrZK'>`=~D{v!oV"M-EP&ZK^fęy[}ˡQb-j}PUaS=}wLlՒ/ϾhDsOh%ÀiF5s!IՁW0%`Z3"isnD[/fg`fh|#rQţ2;x$PYI42ߢ-3/x<XazMM,gV[.~8/4#עXo[oK=&=ryWE->KstHzc7%XAzz$Rz呁GF^iMz#E5ӹM"1:1w7a\vtn[$H' hKRyǽKvz4T?A}ppMO2_GG1>+y=L% /wfldLhƵ$ߍ~`<Gy_C7I8D+sz&xCP_ q	2Z?ʼ&= /Q4,;~gqz{\Ȁ[e
+M˴rknWlEe'?(8XMh+.l
+=<6i
+8
+@- /eG[(y̪ ҫ,bӰ2/.:O'e{LEd A!LSa"dVP^4RrSc{ʵ__JB~׀,`ZH}ĸd{*R}0_C57ayeVoM}y]ޅIuYQaث䠺yO?!e}N&^:!#[ B1k3,7C|T@8 &Iؖ'b^:=8r7탖 땑1fv*ο6R4\`a,OB`a;[t/j 
+=/*0vjήا|2&rS3~̭̥jDTs$ʌc&^H{Siࣃxt ϐeўh2܄C+Ar[ڼc"j|Ʌ=NKz֛{~Ҟ`:XIC`p/=H[^֌dѸ֫#EtbEz\)/9'r^^^pY?~ed4_ѿiV~Q+˷]dXbYj=ֆ|nQB^guE KKl\yr`/G,˾섏V(cLs&[v?GV\s}i`A+Y>%扩ZiMޖ32^I9sXg
+ӧf]K7!4,N1"eT(eB鐩YWgK."/-]6LeHc듧)Ą)"yGDB'!<-<$;`.9*ΪJ 8M})̫8Ψ|V7D BP;RRAD"`H{}]	Y[p\''>׾{k\G,+wi1
+mgĺvHʰ]5񌈦GA=vBn<jH!
+ [ 
+U?(&9Uv
+4jlU6GvW : cA۝&? Yo pMKoyY)ekd<Zg_V{U&_ eTxZ1e|ds[
+f@`(P;8}T<{CTK0MZce$/=Uw%69R8Vz
+΁ lPE4ByO((}./d8+$@34ưqdl;Xj郅ڡu,z(4=M0JRmrbB'-6ӓ
+^״*ʛK?s͐ e<r!
+d k$oVLD'wᠣj?hp/ydOtUzg"ʼۀ{<PArJfcjiXp띴
+//OqnzCpދq7A/LȏeA;I[;r4 ^Bf􆃷٘^BU6>NC|y={]ba9ڈ̇0 :	3[j]xLu6#>ߠb???l-++-999}?<&0bJ|<l&8TZG|`8
+*֒a	c?inj_.E9O{a	epg1ҜcBF5^b7AƘ pZeF<T2߲*iWyhg-J"K|[-~Q{( 3/g#Ws!=W}ho..``9)V.0|>3ُ
+ly]|[)7Re9-
+gV	T͋R0AsO->T}qbׅ)HkcTŗZQfؘpxq CODiοӪ o6~ *G><#:Vt5Oǭܑ]S
+Y-ɓSJ WїmZ,klP+tbn*AP1wb&Gba^".8;5 16Wl7ݜZ|$jͺʹS@Gf5C;e̸-(T;A[1lfd@,6'x^W2J4xw]`#\/ʫ+zRZzsN:Hr>.<t']Rk*'D91m[[=(c`<@dԥx@'R?8=zw/OM25M^ץx)<s~2' }>?9FrNWi3=sw^}ebM2=w)JaL/~88=8ɣ؈,ξ#ʮL1C ,~l> |O*<GȣH$O㙇z&HY}?]j՟!}>
+"<z-mz.	,eೲAYwGCsqN|s+(ʱMOH-6ɍ'@G 
+@	Joyrp`+C,8<@+SgAX} x%trupU֏d{`pEB	eO@3vGV@@al@#Ge`QᾀԘ^~&BHa
+J Ύ[Ǝ_`p)GTm|'>Rv_[	`G5Dup;
+ w/-bn'Hn[<qaɋ-d̄"טTf
+l ݒZ2թ97C;|
+m%ޘZjrr'fUBsa__QZNHQQu3ڦ7 %TQBb![dWt3jow93*8잘"0EV2 |M1FQ,xIj|}{t/
+>Ps'80*W1 /N္t9s-<a$Py
+)wrEvgM@0;?vFpӓ@'k2s G]4ܤ?cI?4}'Wj])>`1ػ6A'p9QZ-|.(2%,4;l;υa01e`h{&%<bnKac;Zj9W/۷:%~hT=YgsgbOxH׸SZlh/s#r)>߰4#4=\ZNj0k	>۰\*cTֽ /;QaCzO<(%i3<1`%lGDm5
+ՌG8ئg˟9}A-ze%9dűٌg*.C0ܜɱ0e1hw{;]x]*U
+G}dgD[)7Wques*~?Xٟ;Guu}E
+ʱ^ɪTE2c={pxg`F	ygȝ|47x0d>;7Yk;AXll&k	vL=Q\uClЖs~ps`̱p7>q0& &`̲fP7B@Zj)|hB\'5`*hRTrך]&
+;wvr^4j=q2G񾸸@ǚ0]YNze%{
+e2Uli .M~AiC$lG&|ӄy n8asZua2WE%W`K_RwuZc^3^MoN-N;$T]T-}}"@ ,;
+8	^M:-
+_L`S.\<p^al|!#y8wJ|q/u:s<_Fp2]$݉H8ؠb@Ҩ[t=?y;s6r~;1aW 
+*x(;oeC,`T'`j A	v4_,"*)4bq6mY}cuApE@CqŐKI=+|e>2YmNc6=cd.1*>gF
+F-B5éijHJ1`.jX=>;ah@= 13UIa^r(P`)PY>Vx?LTN忡H 50r!O4	5m.mcg;JK-f󝛊J#0AW"cU㚝M/P8{
+cl3.ClB@oi>i6TdOgFJ-C#&x]a1Th2)竨+e>#	?#yΆ>|04}W]Gڿ&(a"+^z3pX+rpA̐/1ZVjD5K<~SXX~`}Jm50oUb:6{'x
+gK-IUx@ЬxI-%*1M}kqqR~NA ^@^<
+0./ܞq</μKԴl@opoJ-YS`"ʥA^DpabD$ý|H OLn7+zgVnFR~2)RvU;楣{Miukk].&kjvF[#ß}\~/^~'x1!0joƨBU7jUi
+&\ RݶGK	vӁ ,.<8}4Vʳخ*`lYobaa	Щ8Jc/F3U)N"appnքg	U.c\|,0\QUAQ&Hd(x$ݿPbN`Nm<$H]-#s'/
+Ќ}"}"eF(p܂_Wa93d7>'UU9J-]lR>\#Gg5uKm4V%T[ƨV	A[PDHO+",^VeN,
+EzXTCOU
+#P p+uK.c0sa+R,p?g܃8n4GZ-&1&U]mpp].v$XrĐW(-̿$RQW!k1eΫ&LH۱Z2mvBrj`H)E7mx2U"tJzޓg੨'Q:rw2=yC#^B}`@-$ ; e-Ey$ "<oA/dĩI%&y	Vc-ϊ[`#O-]3hc)@pl[}5쭤Wݍ0}fny80nhg1__5k\hЪ	8	x?[SdJgLVsiX2ʏir(a|2>*w{tdQYB3{D =T$P^5q*W
+q%6sZ/P{H5M5nFU*os`t9UÉk@V higGMh`U2[䱅9	替	_3ȋ.Suӂ۽2'cOT8mC'*IoKpE~pf\nEB`up*6#bN<(˸E3ObQͣcJT_iwdθR-Xnhgpu4SjB'Uk]o62x`#Q˂K+-I?2rev_l1&CTc9x|PTT_ztvZ(
+S&kIׇܫ 8O,j{(.劅
+6To/
+s_*B7$ |}ݤWɫj>7`dh.MO1)[	9x[Ge<f	N50O|pDЊ}XfԔ^:13yR%DQmP<*Q:Bx.Tl圀234P9|YUv^2P5^MOlh8P2w=:Ć]Ȱɯ^U|j:y1hnQ@4U̟*`W717W̭~~~er*g#cfC"㐏Da>DDM󠖏2<D__r	rqZXc\^J-_26zk2z|`6UAqp_%9LZYb	>Vm)m~lYQ-ڨoI_Ui4?NVY0A`PǀBʊje4{Y ([PmΎ88E`gW{bǱG/CfH=5Gu4.i	 Ϳ Qh#}1q#Hg5ҜO4E˲#h@ElU.w ~I4̇TvQgjXI]"1<*PbzT/:Bj}QႭQ˝`z*bC0,X1!6ʕn`|[/C s4уXIcN9#ª@Q}fÜAH-H)m'+3T(,ySȱBD/B,q|f[Zkv֢2)$BtFzCZ+w/Xm0{8j
+tR<t}tf8.DbB>7KD	߹1=׹Bj+;P.]BlCUwf g%O\?7a2}xg$pkꐭ._	m묠Sh0|n3pQGTݕ3(%8`zb=Gx]Sx1w~~~-@\l̅"gz;:'z3#ok?엌['R`¨=
+E>ƙ
+_ˁX3PD N3u',*er-01s*mc`9q#0b0ãj@ăjXydxy`0F`k}(VV+>و7>S7X{RUnAr%UYYs*`zq!pOi>ZףҘkIj/Kc3Yκىe9)nWk6 xvҦl0OCl$/"gTwFb|F:fѸl@`{]"=M'^kp8RCt5~;Nb̡KWd7l2e<ՒFdT4{Jaa(0`Tp6wXɨcrN!ƞ?j~)c|ŭaRrxn􌄗(R]p1#9p47	K#KɕnH-pq£t9sP<zONQ_ Cu+ќҟ.+wULqڛ"bK׶ITm@jWނrWU2J$#NOWD0\1Dl<mRoVp4oo.NqV9rrFH~,H7pqT˪
+@`
+=BIsUj>?TݱcYTT__M_$TZv{pU*C҇hv2M2a?(Lרܰ'	 a1-7eQWٗ@~U_7HϢ/h&6g_[o>YA_\;<aPfP&WCE+<-`4cЀ)GDteь(SA) 1,rqA4yFU<0_zueDB<Av<}ꑁ /ev@sl0igс@^ P0\ >36B'ZQRi]g<5wGgςL3EYg@d뛌/uK0aC
+lN!R<sH8!jgel'i)IȒ/fg<eܧxfG+«廪X#}Ri8+k>$0-UGL`\$~Fq=Mzy<%:)fvWXpDS+-(8FB7x+r]1o[1[ Lзn
+fd	n@/MȻV:3l}Nl;;ii*p\ĵ8'ˍu8/1[Bals4j_Il96.i/wVNOt{F 99ᴀU!d-8B&r'19EoEhe7ɏp	1@4W8`ţm^ҿB+-
+CosGyc򴉊|ĴbCa1FԏV'Wir=^̠2bru8CҴV0,iS%>؅McAU%u=N6 `~CT
+FRZ +ޠבqNaZZU>qsQ{?)=/D>o:"rFOQXίɲ;?ұef!uFPkU*Ї =#eCK͈j*m-^ds!S'ğ+"ON+#nױB!7ev[gS{̳ox2!ݟ6uHв_>߰NJW읠ۂ3>zT(frڅμ(N5S(0b젥=e5V̲E#SKhAd`%uԘtV;eY^94_Vֶ9ӏDcG
+{yIw^g{e1.:*4Ł,DzF)9צs@mA.	r p!҃^>%s% ۧ/dC;i|a޲39(cFi(N>)p?*E lxej/HFީ~VI?GYm<a9n=Ȳ2<SԒ-	jI%c~K\X/l\ؼ}-so<C۷oG6XyvW7J]߿ʬ*i3S	oU;Ep1/ ~i3 >FfnTˀ!(+p-֫v%Ć(Vv$ܿP)b=W@p/q)a^4]rǀhKBt\bl3hئq`y-~>A~6bBe9|X`G@ W
+No! OT;>&~= ƒYqb;x:u rNҧ2.qys1_ԌP> n3_vZĨ_Dyخr-ʾ/ZOh]'[*sPhnyh~x)ѫK-\-ʉX/F,`OOs~e#,EN#ñd0?UDl*f3{L?pEe÷+2$0#0X5k)-E]akao1צ0栛:?
+2WcUwE"f-wyA?5A1oBzZBqwHX zdEYQ	ANRf#4hȵೝ+:*_T-dbD1-/mmn^:ʟ/9z4CÀZ}|"bR4vִm%\B{C-;Aҩٜ}3hIvPzQvW8oQ*1$|xrJZEܭ _h$L9X!!ZoG?p=wrȡ:cƌmO-C{$2rFd]5 5n,Πuֹ$;m,n]hJӦp,'fZGM@0Fة%W64 R9
+kυFdv{v	I|"<O :2&8)sFg
+L9"yNM=0u؉aGl0bb_JV7Ĵqy³hfwN.;@L0tٝ(#0#[A(7oq,`+8]xAn4Ks^>"-Q1\nI}lxƹӒ'9옷 .}b#b'THT#FyJGHuqkmK=i@u(*>90<ߘtRemT+`@
+XcKz1?gXX`Q;03rFKlI0KrZI"F	uE`%n'%lUN-وyǣP6{PZWs0MXꗝ~tQ*6=4R5 (%5EP^MT`N kmqLVZ_8ҙ/Π*|_;ȅɨN5%^NG	4Ҝ$צMNOf]o:Ekgࢤ^oGY̺%Ah9uuj֤=f2Q{Cs_GدsٶmT||N~|a@I^˫*{NKK-\ vS2 ߁Q,ĝbOwq^5؊AzDZͩ45\>SocRƐ
+s_Z(*`1VZuH186
+aHn
+9}AQT*Y/xdf>yac/[wTza~g}:&f.2 Vݕz\.O"* Xr@0p^N򮂜Yh,Qvi>*PyL:8>T}qYɇ21M-~i3\>Uw%t6UQyz]yʟUDFr[GFYi[*9DbW;ʩڄIn'+Y3j*tN՚iKuQ8t#J)cqVkUva~H VByy2CqA;MG	LK	zb^V6-wyA:ap,Op x,+xܱEB02)!k\P0>\i#yv[5ޓ;5I<_9r F?_B VAoXy4A:Γy,yI#ˆܧ<}.yvpX?:t;D.м<-.0DUh׈>BHlq^-=/bjΣ|]fL9*iTx4~Kܗ=}>u燍k׮=sҮlw5<߰."7acӰ`*ZT{j`U*Hi=E03 nވԁLMe)ev`U#%OpbVVfxibAN;	.ʾWh~ʹ9M7{QjG/UU}Q ({y!c8.bw]кFS2svX`8c)Ҋ|w?83pM8<r	 k qU󽠳K  2~@ U>A'ed5_QUZ9G[}JY7tJ/Mu;;Zz_lMy(&R2&sy|Xx1`a8\t=
+L{ui6]|ama(fxY \en%zK:oMc@dֳcl5yά2CL,9+goH}TLZxi%L+bYtEj;CW!Ȁ**l'%u`֟c_Z"^%;nZN3
+7qQ<nmBPR֊^Mh0YɓA%Y7&I&Jf7Nnj	T4d ӠW_UW<mN8Ğ@p-UKF_@mqU̫yc0yA$㣱G=8eވ@(4zxj诙y1bfpA-Y</[;Z1f)e8.OFyLXLMrK!Cddd|˗/~;pgŕ\, heeRodۋ,.	s,T`F֟Ǜa}[!'w*3zeDfW4n هg<]Sb^j@^U$yQy:֋Jk%U'p摍;c5?.0qڀ@RqEܸf'm`d$V"5@یZGJRZ*t;ցV81U*X5`w^m?3ũLKX{j\ yvp'FgIG6Hϔ6?g=ҋTU?0:a	]
+l	䙲ǆtp+)e,(U-::4zYC *mY:?3ح*q3d-dgVl4s^A=vڋ2]T0>+p䴒h^hZ	R0SD[pHR hU	4	ձ
+G]+k#Pj5& 4p:vc3kh-}:v JAt_ܤ	\ p]M-^~*B{󅪚)vĄ妹Gu?bx1$*¥)+	Z^RxTxWez4Jt&;A+&iTPU)ZmZ v_*r)ѳ2}-QoEYs)43ό|0sgG=S5;lG¤aOb1$!淽~ Uiيef1]T-)!vU@YT쫞el#2d;|\?idCU,bL:\8Ҝߕ4KI?5@CЪ/	A-8&uֵTl_,xFa!|R?_eGq~9\xqU0f#gA;M)B~frT_Y$˘&g_R{_wqF}#(}0L<h6v@~κI#K<.BUa;j½JO]Ac
+ps2)jXU:ȳV5/mX{n^gTl_b%nA6b_-tT[ Yu1Ձy^jqp WW'9"cO{q_pa^tS:":#Ikt4Z	]zǙ` aFy~"H:76k[jÊg&P;CTqVJQydh@<{П+Hn5Kڪ\S^3VRv\O
+a(":4;3|QR:Dgٓ;[騎qYaW}!V1·3Reۤ*O_b+%M~?c駟jժU[qecUsيr'whV;0*5
+n!L)V~n~>"!) )(W< 
+`LEBYfg(	ӦpX06+>b]3Ѐ}VEʞm8:U/XyגǁD%͏s@jtH YDⰋM<fy!l2{zћG-RcJQ84(3տOƷ̙y\`?9d\Sf;Y\0gdKh>/,x):ui䰌'Fg?aρ%ݍQM&=[fT9L@4˚.n.޺G忿z\W1~:N8d	.l.ξHbPQtQx([Mn&U\w`(+TD4DٌVA2MqB_jJ.5m@"l8Mӌnk,;bY:t`ЂFd1i"emֶhb7p#$eRԛ_enjK32*bg	gMr*	/l)&tǙs^<^DAԌ{26WrՃX`k`+[}/N:}٬tvJB <=N'h~uQ,Ő<VgN:yjxFs.((X頑0َUqYů8,TrY|pjQ}2pfNNq*UviVVL99Ȍ}\燊?Sj9FFLgT8l,T{X5MBK%:o+Y"ɘP׼u*o9칛$$HIF-咣ٮ
+\[1şc{]7V^[߃w<zd.WabZC='<ucn~, ߢs'[2<q{qKX+o3Z8QEM6-05I.Vl±GUdi;Љ%Z5zQ[!\yQv	Gal싥\_kSN|	~:fd#G5~5S~v_4;"ph|T8eذF}by怒KlF`Vf:#X7WsWQu61V`-+*GAdԼ 5wO4_FwV#~.)Gu yiJk^ RKb943`\iR(pתxW)U,56jZqA2h,5dI{tGQyOiGO	Xijoty :bUӪXՒ*ݹ:<^rsܻlwZ(RM!sHm'qjxFlt5>3uZRs ;ПZg_\],WtzU%āộ5΃ӇA,p_Wt>b.w1_'[Ё;ebv F	KlX^a1Ղ~
+ڢ9-X0HĦ6x
+ɫĻ9,Ib>cHZnWJEm$A!)\%_ů-`h @Or3IxU34$ M3B̙c-Ej>8,r!l8A1أ6={LkJs~_sS[X{8 ?	&,oS:'j UljI)_ h 449sZeW-,_@a~j;9AN`9GOh]Pĥ@ #w7YG*Jmtϰo*ÏJ*lGjm	$MksNQ6N%<`mZ] ڨf,Z%hC>lJѨ;3p0\sxLpk}jK\+FXՌ՟vcAꢨ-Gs#%Ly\;*eM +oVrX[a1l,`wuj^řśjr)`F8AD%3Q-%Þ>@MbֳnmSW̏";E$˅hw%.ge-Qo] u~7ūZpf:	R]%yㄶ0't(=oO>rJJ\|l<JOWt/XaoXag_͸_|фz{{aZ䱪{~2Dۑqi%Ũo.Jν4r{J߹|*WKG~bv3i2]);Ǡ) vh &xwTg1*²޼AT4"B8ʋ})[5έ7Le^;x/lHYv--zKA[N; ^Ug|]mZ/䠆@|l0![[X((#2$}2oqPQvup|߿2:MO\u*W8jC)pF4k< w@'a`7
+Vl>Ȁ]eq`U&H>P;M\yb%ɰe~3(~ioȨb}ClJXdnZ6Gw1`c6IOqQa+06Bq"JZXs]?mQ*ܜ!p]q'5;/mʨ{輅QԧH[r5ɸ|4gݪ5ǋ\;ڼuUz
+jn-Cr_xMjM7Ovp<&ګ%\+PaH?rbwgVgI=ij̯Z׊A
+|Z&%xI "[p3@TI^
+0\kG\$;}]
+hnU1T@?{eJ/"(muwM;b+$+7âXٸc|5W	Z_nïS(!tVd2
+CPy=n#rȱ*Vڞ1@L8ӓ$-Bxj3kNDyőcs#>Q{~~~W;7O龅.1hphDQ6iO3t![bbWfId~Û߼kf#/]*;1\mM络}]ª{^Py(IöP)vr_gML,<c4R?m
+*fv8' 1%͏+=MσvlKs~S΃3	-< Jj њz4?CBya:uxY %rlbcki2Y}ij.3PorLi$$=?";)՗<]w%O
+L̓yU1xɮݾ];`gyL`ʏӫXC٢"
+)Ĕur"IGm̞"AJ^
+cj|?L6nr0bMRZ"[V⩸m{Lx #PyΓknU,pfFN
+?RGd FqEs:P)f֢IͅxѹHΈHǎl'㥝>z^(<++$gn"eIg'ti՜@ywKG
+%AV*Uv	[opW>#OѨ`^:|`œF傅*;մW,%3
+-}Jr`ǖV]@{Px|WF/8ƃl_H+MUcVyyJY+KZW<&Əs*+\1],].Բ].cX5>wb_\16IH튌1*!=cnWX!)W)0i^@Г&`*Ud]`ZkRFhwA5i.A91xXaLhV}Ѩ`J,	hüK_x0`jbZ0qNк.-ytTc`̅ޖ8xI/=>6Ywi=1",LuYo8PjG#TbT߈Z#w	aptmfʖӇꍤW٥yيjSZy1}>h`67=y(
+؊eUhhvcr\|^(qu4nD&Wu EI̞4e,ʾOhPje:}6Zxiƿ"O?1`pѷצarKdBy}#9,ćqȖD7XZYWˠQWaM
+Z<:PIiIW6q;=	<'CQ d57M]j*OB[VvdHaOt3hd7Oc*ccpɊ˸NQTM5丷+6~VM >[yPO[Ĵpu{ϸLBqQGZ$
+^2zejçy.jo)
+[R12)]j<l]#}\WٟϏ/cEQimd^t*1toNCUBvHl糇%1$I_>Qgtu+fٵV/h_cH7M:^*[lNJqvwE=vZ(_zهWŬs]H]<
+05c,7/hκ{Hcʺ\E'jZzh2,7ē(9P6?kvRic@v5T}_NXѲ	gfqGd :9$~R'eGbRgu}".(oq0+E+"^px(1xW-#w6M_afjx-taqK\S}8zpH&On,jZ)nz>C9[pK5>rXƓ[=!!Cx(2pqNsO5sI~]8Z.'a{|:jquZ WߔZ.IR MF^^*+n̹W
+N0q7.i\zA2=HUuCv`SLKv<vxY/KIcesI#g|#M|4g-yL?٩M.UqSD7Լ2KxvuX/2xv/ş`0@_ԜGGU>ZZ$D#Zm$<Jg-._[RWuHḁ'R٥:}!p#]i1w~~~m۶ѣnիWnnn:uڴi駟Gz301	@Jy88f{LK~A문P+FZau@U'pށfʫʗ'bjrX^NKlZZ+;Ntp~Ntooa>6~m	RgZ@L5p^ 9Gemv:́8>b+Ze`8Oy_=8oڐ;%]x̂k ._֏kvj`zzK(\L	qnQ_j@4`@5<Ah4	llCёr?jÓT^yjȵhV<) &N:(4q><ɵZ=?edN֊M,Nձ4/>ԂΞ:LaҦ=V{>; [Fgi1@^So)7|
+'oOj 7>
+{ \ $t+z-rrJW6WnZQГ.	d+RoYA`jK:,
+Wa8'ysg%O2jwQDpȴm|J^WLX?{-@,[r4}fpNU,&iЭCrQ.{Y)Y^[N1IYg}j6h)l^[0+I~*emj`3Vͽod㟹YO\K5-&]b!*LV_+nj+15j	'Pv;tP>|9sN>__Q{;1.N
+>yUt鵭ͷ:Kig]4JkEOmu'XR<"a
+ls9kvˤWp2P؇ך:rȸXGxkӯH^.8<q露}b
+ \dp1Q|'߱#w^A6|u(  nY/9c\xZ>/4}Ti9t(rcDf74(IcB_S{Ըf
+\89-LЮVw;ro;d;i̠e39F2TWozg8IP`=TKwK͏Uɐw\fUpx6Mzp~8e_ x'~a=nqBD~uWqt>^F=A|-%5b3U;@qכJmKW9dx6:Ly*FPZ
+/>X]RoIRkS5-0W'|Uwn2ԬXv H8KMuv0H҇g^U.Z]x_tջLSVI"=ngA^O:Nc4򬟩 a3 ~+8T+[)g:6@ϛ Fcl&X,=l
+{͚yl
+Li:vRyιl댩~
+UrzW;*_J>bnZGVZղee˖=[J^}ac[(ΰsN>s vv]17FimЂKsۻHԉE>91_mڲE`$eiYnr6<o Up1J>%ÏbbKp&+|?p>[.{:^}	TtdfWe\6C҇Jj">yY8e~Ue(2&;<'?M0P  2u/ V
+F-Z1*^PT
+j<=8o+9)0n@E
+Cޖq0:JJǄ;H6zւ<wW%t7i-٠dioq6=o|Vj[T^$`( j:ƹwݥљ;r%+o3Ooђ+0#? v|%(Sς+=ӏ)!@~1
+ٖϬš:?*'aiFKMD=裲<=NL{{/n2vIa=`G/.5Hl0,%ȫԕt'CM^/NXHdt8E>Neۡdu~[X$^ţRp(N~ko&0*hjUW"GÙ %Y5VͰO3*@aa+xAxRRfx/(v"Ō:eǄy/0P+
+FԞ۾fݾqw,n-L͠t]aӡI/+Z%)KW8^R+/5ݳgO6m}5kC-,,w'11 i9
+X7Tt;)8]ޯ4ӶZBu[
+V#a[+,!0+Nݑ:_%,KwY^Z	o)Eh=oQm3hbudWǬGCpoɡJ1A:-%5K_*UOh1,>v+iYs cG@M6Bu#<qdfG\CW=`ӇK!*z1H)VYWrĳH4wPqps@dz[JxҌa(85x*%SfA6$ne	a4a!Y4xB幇ڑ64RNPV6}V[mz.$Çgк>ĖO:8mr~my)'x}W^LOl]б@jsԲôޡc\'
+uzCGnD+rvıFypdz~tuy!g^=A,ImWUvY~kjMTwx䤖c੅Th+Tv]5//Ņɨg&pHMiZ)_T\eyh˄q%34qq9 /6*{B<Ib7"&r:y̮*Sa\9ceqX( 5Mr|0[CfF;?2w`k]=Ҳ[ȩhςsr,;T_fp~2PW^bۥFFf%s	_1ӧI'a.mMw?O~;9;kAv-3Ky*͛1D0f2G
+%c0s,K<VRgXzK:(u.|o05GYbnrkQDQyAc:O*5!{R[˛x08D~K6k0c	/גh2<qu3rKHC#aO%	͇I}blu#<	6A U7a<I*{y_vxtPD/A4t&M(ULE@W*a2dfN^x
+gĝ jAsWM\kMl}kQkT=Q nv:o !נc
+Vre:,pHA׏yf< 4%͏Ks~Uab@|} ۑZ<am9Kt\}t_g幇~]]ŗ?qUhբ
+K0l͚d(~;klRķX5C'Q(47EAȒk!\e!,)=F#GVפ枕<.7a''wCiUe:<SSu=2`A'uTcsf%-T51ޔ]^g_ڴZ"]!W4>Ud]É5*AcoM3 p>ދ-q2وG8)9aKc"҈dk8qDfR?'_]L3,EI<S{T.[I+јXϪ;Pn}@K3u27a
+dy|aj|>?bwtf͚}g󟁹Njqpe)%drot"j*5i8(RNu@ҶS|{?:\Ss.6֫%յ SK-{9UV5Xw[suYU{((L(t	jgѥ`\tW2}WB-wJeJ'#+K"j`femz޸fAf։&l#=GeݫגHPxAu7f\Y VWǖgxTHp[xHSWc٤@ASg-wV  i[6+̇f1bbj55;uLsBhՅ5&x%&j6YJ.[ι2㚝(Cpff9GvղEic0ymJ_})]\ct#_+3#u@MBE=y*jY8q{bf7
+qZp{f騰~{ؾVr_+EajƫǣxrIEwIopux/MyJ()yMoW=/!^%ݪ+WG~S+;g$+xc*@I^XI'.Jj_WNcBo#7ryԢ+@@^iS$NM?Ǖi2Eir]dgs獋IiZ`cq-XKnKc9D.oazK<IJjVЫ5jhӦw8uR*C2+D wV&Ž<%-bZ;L#:3^̐vƜ찅`5 %Ito5/ya1svX|Ό!m  C\. V>CHVl#S.rqNڑ(9߈z`g6=tn!Y`s5!nB@*L8	.uFǁ*y5'<a	b*Κ-hb}F8S 8گ?ȿAozO#7gQm8UC( 
+Zu}lBS	Siq0wu|XkN!Q2gK(qL$UjjszưÔxvN;wBz\"NT<.7@y|V`etNE&##Tlwi{
+t;'w`^4`Dv->/eI#oԔKS/jK32&E'CW0pp_-;S/HF0Jk1RҚ&dkoq(0Q5vjv=/8Ό+1P|3Tиo.cTx1?Ym6tтOKWC{y`12-UtN>3sɻ<23MJ;{!y!.e9w#~P%y%n Y_ 9;Myje-'u]j~LePUQ%j17ϦMOZz*Jk:_HfMԽEx]Xՠf
+jr4U.bkx@;Vڡ-wmJ2aފ~eoηK"7]k`j\ɋצ>y
+㷶9W<ɦ#
+
+u啱%v1ǹXq%G`MaF'9FXs+&o6lt!n
+يp2	VQ+ȕJ%e&km&jrуTuyj3ar@6هЁWSE@@`mzk7@`u. 
+gMPdUC٣U$O>Ï灀8- 9~Y%4=-UN0eO,*r1s4x	p:Ol]f
+O|CX]Mh*@̇-f'4r0մPl2^GiFdT>x,^
+MÞN[ξC,"RZ.PKGY*'0UkT;1CŕV@@^ޗRHM;#7ֵ	ڥZc-xmaH a !=AHGdvU$CW`ܲEXƃ[+d+yʗ;ϥLcc[-[g􊥇jg_Dcp8yR#^lӦ;#مE:T*Z2oh #f<3 9,/Vɫ.`a^pޥ*:b *lxֈfhLģtg6'+6{-1~sЈ#Ν{'q+? q6H8VҜק>݇ݕYk 6)i$KuL<'ZNei7W*<j泛<FW- e+[6shOiyuM=G嗱rA_Ol&qmV{VGi^Q"6b!&o.$aWGlf$~
+Z[}b+\PUbh0lx{B?[1@W/fLh	;`$/3<L{DP5mR^xW0D=T+uPud./|ڔB"fn DSspAK!8	iihP?/$b13Kf%(FN*+dAiٟ&9Z,(-k$QU[|aDhٌL]N+mzƸfJ1*4/ 
+*jr5=?8}³	nrq~0zOR})Gdv<#wP@夌PX?W0tO}Th(](upl-VmU/*ѻ,/)5n*ǯfCWP喦1VH/{ӦPLUCF/,Jzx퍚~Q<45:싇g<F C(VҦAZO|,4 	l]cxrt_F&芻7C ݼ
+t|>Oc. ~ނQz
+xy%x;i]%A elRK Qa;"z_s{???b?1Gy$'c=*tiZ1:::884ǈsFE$bAPrC"AA@ 9'A|]߽ww>RO=:uΩ^z^]	[jA7y)**`nF^#/$V;{cط#?Z3O攘?87i *? d\c^!=7l
+=ȋ\oT&0",+K-3hvtR% ;3BGjꎥC̾{- k*^x  k<bT82<xVr[; :D*;G	NM͜c?![D9+P?$^p]
+Gގ;|VE~>θL
+-ezT\}@[U8{懣"Ց&!q87b9<QP̮NEy}k4[	,P`(|ޕ^޽ITgi.IY--3qZT!#M7̼D*0c;;14eT$>rwnP+D?^F}crG
+lKZyIU
+kJ	GA"/q1axpX4o92&UԊ/"GŽ:ThEٸ-<v(G֭-ӟ4Ó6>|hH@$h[^7ٯpSE/F
+O
+:^VeG_/:PK}ϝJ
+-z;".VxixBk*2s_6]E1f/zY|Ńn
+H*=ƶkV{H~4ENw88ZcbTp_K(e~{(T&?{*R)[bmD>o-( q"V1>a(Q("vXBYe	]=u1D,XQAf	-Q;uzώWČ\},W\Z.	ǰ퉘.3#
+k-&1r-#)!	wֺU.SΖWT0zdQ;aO]uX@?@M^bZ#i+}x˫Uovo<ke^su\vatNʱ΋0Vv[@/8maP*=UIš΅Ae 
+Yݡ_'R$U	pJ_ 
+
+nq1ת͠++	s-/#ώ<\1|srU7%?:f:c̖BV46Ti6R8iGF0ʍ++7'T{C߃s9^u|g?ZsW|4n6Hmgp^==J_y]s|`N1uVPI=K/K,c5m+Dq[зfc(,8@JM|W`#S,%.*vx#0F?Tisz9敏B Os]k/Dւf[Y}%H;ۘ{+"+FauKrJdFIPm65yKR9F96J+ ubQU9>;B=n{N_q!5a*!B-,!h?H߈`, q	&̌e0yoGb0UW%x"$mrblEݞX3N/WYZSSPv		BEu^_-p"́Ӌ!^-fsX	}lVkzxW}@0ƟE[HxP/*lr.91&@S]m@%ׁ5sNSǀ>fvEGƊpOf?gnڲGN3(.6vL)Ȣ_6_wK5Z%	5{euՍ'@#Vzhij>>JhҒj5/ajsx(wq{c{9rExc7;Pj&:
+c43\P?ޘLxnNØڽVǢI(VEq(;DY10t_頱 #ޗ0VdKnkV)+2΍Ӫn
+wڿZԡ8?Hki4oOfd,NpbjM`|Z#Z ȿ@9H8ІAynH>z=w2N#X	1n6ff8tJ6.	Cg3hFTNtN|c{no6C0)'],O}k0G:!b7johjgb=!֤"	6PCiu%g8PPFd 7\Rүpe4. çKpwQLqq n _cV=:`q
+^5qRfbY9-GVlX	;"%:ڀQq5*߱mr:/+s*VKq:R	FQ	"NgNBi4E1䗆69h`.]Ir:Ga<(	\}`۠$wh](bS.8&~PrBؘt!2xʥO1/9'ׁK2)Q0I4 pS1b+=I\pR{p+O8W=R8 ڧ)͠|VEcA"NåٯbA5+ǰkE23{ZwE`uc:}y,
+DvFFtye1!;\3
+Q#6nMNǯc(]xn?"H>*'~3{`་R=឴KkІo;ˋP\
+g.ՑfFEck6vE:cDQlAꥥܫGq*G3n8c~'uhIGfx5
+.1$oϣSpzd^xLY&݋r]pV]>`0
+ӭnL6*ƞR&TwCTFXlM!CD"%ݡf͙o`?}17ayvӕ	+uGvR*ysrҾa0."r]	t_;mb<w= ':J-<t9;-lc΀GS,rkDZPL7u<UhEVUǮ"#v-:Eモ.Nr2^g:dRPp`L`iWT7Q6$>o%'[X.N-N?/vI{{ ,Lր19Zb  [G
+.?5T5	1%rf˫d:1ČuW7x04 xֵW
+1痈_R :$.\?w9ɑZu30h:Ņe	2NCC
+|qq;=cDKHJ+%E,1ײOO9;9_u8k$;CZ;cԞzEr"n$Ypx!B3BUg5~rJpSa{N\\0]% NizMn۷jޮr.e}gR;KY&-Lc<
+4=(M	{Љ#AGp)dzdzmdQ>eG/[+I-spޒZiJs'ܱ̽Ъ͠ΰԴtn.f%m8֭R ReRُ.pTX$7J:+fQp;0#C.kC\?a?17j~Q<9-"7b,DYRY!|"\ֆȻߓ\N
+Ծ_L
+3	1}p晿|lZӿmdH|/[763þ"Tb95AVύzAC21ʆ|h#!#c/e[)&	ʑ+AP~(0nV!OfJČ8VCb:Է0}j~O)OaGG^sh.smVxX^\MAJ>qӕ~PoK̼\#(/-	|<po7&{`7\x]M.H|b, FJc#!\`OR;GS$
+cuA|*&<s^QTg4XO)#v.,ŞC,!IKe<8.n[@{	(qPEX-Vqޥ#nv0ҕOHJ`Z`_K~CrulJRSV;v1ĵx}k41Vx|Y97J8	%>m	=͒7)*ĥ3{ t༿/q_*>jF8u||$96u3-iU.ՠr2Y0mϬ.hOX2= L[w1K\a-7ui7;@m	~5tl:cCc8͵:0R3:;;"ChҘ
+7Dt!!/}gV
+$ Os"ϝɹw}rLc4loPyL+_xyWTp,T9hcFicUkjHr`1|C=	6MU7zrxK,=cB*K[>	n(+GXEaoFbAV1ZC/=ڸpR@ x#b0̬VOZT,Hct,\*{B"(sMɇ~SfP	%1 xy5)m#P.|01nA*壙W
+j](JP]P[3&0pg\cNR2B]4_O8UPr[ܤp !T=^aUc+Wzsn&1IxOX  /pev݊]n:?sPw@
+w8A4,|j`X2Fa8-vm1Y8VevdlK8P׸B(ծN|e?t	+`U5zQB'[h'o"$NWy4y`Tqev;X6$r:8?K"/77HƈՂcX8BNgLwyi|sT!tȢ<@~alp>5f)~<Uy~y3 a|{j5(-"gmIio./h4WߚM4Tƈ''/(`qLI1dUN^	j4-$ho+8@z<Gf (E46F9K!Ń 9ykr:w]FDI U6L`qjdjsIXj$ kj*,ڝy
+GFxĞKM̖Cռ#*7I	;zY/xkxOlvYdg,wyQGqf2a.f,@O	!:iN#21!ͱڋ^~8!Ńuc-gqȺ9 +1t WG h@g^!|1g]+⯉YטÞscb⏓H,z$m]Sˑ|e`׷1`Ϸ @3Ί8dHeS"=YŶ'#_d],"8K1{tX	 ss\.iYjņHlWeYO孼%!zNaS'?!ɝ̓ZY"; $>U.{#&\0qKD.u"UaHOCN× ˋ7r n	U3	Kh(Ů;Z՟DV kI[ H7a|{hUNKpu }k>W*W;╷Eh_+qwh[ex=- evT{gL˰י%2K<<UY/OSN߄mݪDVE>guaQe$:͸.n!SܘUҭx[2_woA996_pU̅#6]{gR|9\xBx	h lOd0W+䅥rY7֥ Odp)>X<YܔF,F{:@̰
+je~mHƙ)ĎX6
+h\1u>A{VYx°G^I܄x;^-Qm!>/)!gc @`M'N=WTC~)	\Z&~^$iؽV4v^C֠-)]pb"</rALP5o:"p,&~6" 8H*h^-AcA:yDb0P V(C
+0V-Wq  窈:Ce$W s1^&S\l ";&R謈hn;Wz8o-on8wXEil`[dWVWX6 dmu~NGEEn	P֓f	H=>][cf ʽC0P\mHcv=갃?Q\o^ R㗌,PE:J=%\[(eDQQ=cLt.b?ޖ6}ˋŝU]fs{d6}s^圣@'+i!ыq*QE|Ai#d+tyVC޼")۸+oan3Ǻ?&=͝ȸe^ K!(\w{r={Jkb|s]n,l)񽊣*Z%p<&>="BȏY<HEg펢Qt)os
+:.c"go#OƂumioܢڂ$QL&G>CՄCa[ԏWѪ<Zѡ^xtSDdM0"Y$Fx%.nX[V  \XdbnwxCzKhpUqa j9yy[gEi2@	*MVo'?=KU] Ȏg7,|F*LZ2	>i?b1;9&5 &Pߢ:Ck/< .?]x
+^}jϬAy88"M0^%Xm^nD3zuETyhVNE-#1-bpnCwni1Orsz<~Uiv;~cn@5`*^?9%A?l"`J끆6@'mˍ|zA)8=PuPj#7X]'ѰHVxJm@ C,?_KE\ۯf#鐂3JO)-nӡW*kUgy@aY8NxV@0@fwdO[)Y)VTRbZml 	AX։Hb117ExתOmr?s?1_a?5mnǼpʯ4*Z!4cSbYֈM+XpKS-
+WZ`F8׺BxEAHr`Oߞw3ܚ;\EϐX8P_4lȾYIoH4'b|?h`mr}19dՍ3 TY1iMB9UH6qa]pm:agJMObq;}̐"so(j藩Dשhi~ (ueBՕ4QV`ti3#oc!tYf/_y]>MAA/zTY̿l.8$p,{X*L
+,ÚXcE?O*$O%@䄂ZR<L<NȢiRU2Ef^SA.e#-<
+RdF%nXANMnDFI3]qi6zEfm䄛1BT34?U+iARƹ"3ؐ|~Ybu;Z	 +/2OJ
+/M/Xrs09'GTr"aG?Id42L0.sƙ\K{j±ǆّQ%9n:N?Vvd랙8bwĥRpd럴Ap$zX_1JۃH[\>ZJ6
+3>5Zᮻ|>5;2P$c[<O$MTWtJEp~Osc!2'wɯOBj;H	75%\b`FH"Qk;4`qsxl_KJ9d/	gA!OWÜ[(dz&!	ТbJ@&QS6
+urPiko【n*W*5328"ۍ˱ل	v~6#Vu6ҡھw?e:;(Qps ݂hǅ_E-
+=XwmIbum _H|BG#y]6Bx_s3H^E_/b1)_7~H1+_:~EdWa
+R.q"O7p6M#pXQŇ*>JӠ247CWrP̀d(EswI{>´,Įk=xP./>~kئC<@[f4w$RU**t)? ҿAW;Tp| S&')%9t,E>#CF*ߤt7Uv( 1恏s@Fqh۝}+&WssKq&IwȲҫϢGW.yJ\ϾPy[HP9AgJKĄ3zfT}J8W iKzfu+P<f+f}uHFuDPW0u!^s
+sӇUmu?an6H9ӂf[nM~&5FCza}U1
+0 l1P2j\G 0j []vo6NSz zVP,4.yKLF
+t+&y˵ 'đkpُkZԮPRP3k</[JiJ=U9FөpN޺J^Y;caym9@Ϲ逋WF'0#<wKs$؀?κF3Ml+X=g\XKxvӛ+^JlX[Xrb;eKJ~=5rW5,^NI 5\˫=Y;)gF> p00_~?<r"#`7첍88j"HD>رO z%N>5ZxOTb_蔫WN})JJH_.J҂wIuspbKū! o5(fa΋ُ9w)17h:YfyqU/՘+nZFƟ((rhmд$iwDKLWOɧ߼徊2c6*$!(C-K5:n"roZ7<N&WPu~?޷L|-*>w?JY^W@~".թ 􈢂5s"nV,沯TYe)<z%0Nm*k&$(ihLl2s+xQ<h:Sw&灀?Yl?U>!yC=)Q (v했+r8shI'Q:71CX<EVYe"y5k@>m-Ѷ\3ԛa(6$p/-Y4bwVI@bm`b"'.MFzgQ1n3_gO+\
+펧s9/a{@]c~I%}${OǐbL4ęWasIi˟O|E淅pRvĮUˍ"]Db]?.}ZGn*Յyϧ03rFUdE4|_ϋ^aֵ@ ξA	}/L&N^)V0 F7nT"|І-Wiޕ4IٝeXjsS:GGr歧N+ίUNwDzŋ%gD)ވWLU`8|o9\pgn'|F ~:,)32{lJތ\aj"`ozpʟ4IԒT1d<6Gh#GjDJܔ#$zp5Փrc^ߤUUn+Y3A+BZe'$ׁοx(%tսu^7(ڞ%4>gIfo>wS;5no̽[l-G;2yh0|ze־H`'DGn^hCYV1?n]o߹BQ<-(tTjƘ5ӛ5>d踻''DI\6pͯ7`X`r#Dæ~"\lg
+r(:e!5唘YFrj9#{wv7 X(C2AgWl<R{34a3\d+[٧[W^".1fdd8 +Af^g/}k>N^TYE*(ϰ0JQ>/j`'1V8;npÐ汉mNOlX&>n@D^bb[\(08SbM7[(0g	AڜIml)I@-n P-H+0+dp,\`[g}zWl~L~|>t"-hUcCAFV	c*%0
+&CG}Q_~K/KH̺(+0#^;M:D.usr'ٟԚU
+DʭEhEw̌X2N%?NCӄ\=_ZChKK[Ԍ %pو!~ ѡ7\?B-]s'VEn@cRkC
+N#QZ<+'.vp_&zSqe_RQygVU[z4xSk<ױڗIvъ/肰}M#wxBWv>l}եZU(`9v62x+%**h'7~b|Ńn(m⹷$88ysvFϐs-+oTNqA%_DE+m[97nG:Il'oC1Ӱ<!
+Y!\rIJtQ3#1f#h{C{4L_v9tsLG%"b8E|.PxX}T[}zA?Yp{P.=c uJ
+KaOx.:_s<)!m]20zLfoͦP*tZ,kAiFկ	6Yȸ,d\[iTb֭;f%6	Qb:rѣ_\t.k-`-=] g G[!H-ѪK4+YG05 Fg߳Bw'PȮ`Va#hPՐh(N.Yr&^}Sy!r`K6%7VY/=@աkϝ8 `7DqYw1`29@E#g
+tv`QT{FLsFshix2_:vI_sR-ʘ.RYvoS0EИ
+5Lmx$8`%-$50bmSu4G<yǳc@?V'@rF`D06nzٯ:Guh_w=2W^cEg&J9{Tz6"#ւ!3CxV
+LZm^hsb+CbT`y0JwߺRTKWJh䬨cb6
+2foJ~2=ұ(:h;qWrgE.WQw.3h>8xw#p$%Rn{~jTu7`XqL??༌Ȣ}jvɼQزU|*WeipWV%o;
+:Eθ-DyH(u 6La"p#{]*k1&@rpE`~1V؊(Q0<~5(n-?F`x׋[ƉB0y]^	n-kyĶzcvbm|^WWήggMwk0֕<w-j/k%X-Gl/ϫ
+=y]Y~H:n!>_[#Mߧ5p4+]$Gh5<
+( |
+R :  G->*/` ']q (wNmmǪPNn6:uK3̙= ԱG$%g@NS8+ìu
+nQOmOcYՌ{PKlRu	ji@^q`4Ep-eR_^>R&-JpqlhO/$xOC
+u3/O*[X=es+HTt5;Ӄ>U0P@{2FB;txQC
+Tݎ08Re`N@tv.\v:X>82)csid]KY%yk*}VEug4>^.`wY_jо5|k<j2ꟶ xu7X;s51an`&x}Sl%)t{rN̝u
+I`LIaWTE( Rs5PhNb:B:+VW-\޼r} pӗ:ݒxWkDf(Becb9WhsP*OwC[8:7:V50}k6idyNUXuQNpNէFTXTǁR˵y!\*SYT:a T 2t`p_C6>R%GL%w+_&["{6%vO\*\S-+;z;?=_bķgh^zwu<<we-] Du}l&
+h5o|hl>(	d`;LΘ,&! S9oCc~L:C>?`F`4Ks59 )Ivq-q`FV:j1Dü 1Lٰ͝&rcl#G`3q4$'Nelbޕ#ͮi'l̹QMAb.ҾJ|R7TT)ٱIpf$V7u|#SN01O V;c Y@doR2ޒf>䐂3^XY7kH9:Qs@˕A\ν8ĕEλ,,1@^Y/~yw}*I5c'_~OnÉWqo^u>M
+vU'6{>h?(tS,ޖS 炉EZv!Bn/BӁs5QzW.h% [(8X_Yx㦤}sCvDn#ׁ]rcc0h!	*6퓐~w̰". [Y6o=Z]ÑG^]gIDJ$pe.|Nڪ|^!Z=Wijsq;TaKh>gIzg~p%؇nAUE:
+; hmQOZ$DGJ`US\_mlln*!AfwnAlO1X3 .k\OyQe˷lpX<ƩFML{[I!-	n-^>`SPZ37'LH'2kV`Qo9VVdRsxACq|CE/ڿ{5Rk>0:|;i)2g4۬,#|)!">Ϻlp̥AI$UpJ/a%To[+ Jrg0JGmi:AOU'jz*OkGSnj4*c3BG/)UcqIojdLUE?:%Y
+)z6LT4Ȅ3 ?ӷ:,<8b^YjiT!}k>e\4{<|lsoNl}egXWZ
+;9YҾ"F˕׫F41T"^6_mU2ٺ\$`w1w|ŃnoN~e6rGC-^TAQI=\i[Jx{˜U%(4'$.xϵ[x>SBYķTb~%,+t7yiXuq;QxRn{
+0ŬA:`a"=2\`H fg]_#itА'PosG.+wEY5\U5cً5AyWa^^~5bAg,P)p㺃 X1 կk:w{
+ZUйwGb:1}غg˿ژasɿ9Cᶼ,k&~,s[?/x ]H][*D{@Ȫ_/XX;ނ2ShmA1`9=IM*RȺ5nx[bP5\l
+{Ͷp!\s
+D7	Ƅ)Nz紏ز^Xi#[qu$%jrtz[dvlcB˅@gDb,}ZONa'ĦUi(΅ϿW͋ﴪe/HUwCf{йǿIbnZOmhuy̒Ưu:fU2
+\&dPZ8#9F`됂3ubPu8Z7KRC:(¿%՝qj?Ae|EN\$n
+Ü!Hm;asD0G񠛮JbLR%Gc%@g|RTb+.dRT{{R@V-^ f.V{TQST
+Q~KD.A-K6
+>tWe=y	ppq
+)#"DV](#cm/Rj3i
+6z^C+{ID^c&XmJk_u)%=ː,[oo\xivlcSHIgXTfwW;'֕
+goe=[[o+VBX[+Bf'mR\Z۩i]A}]_-ȂȃK;Gq˞T{̿n<LraЌI/\>t*!)SR;D_`lxQE!Y#D/pi)HMiቁԺkp%rQ`sT!=_vPӏ]ů6>*^8t;sG6RK37ɸw䏯t+o!PaQ+~IE@Ex2yan0VaiC|ugZ;|s)IzޡoS_QşYD1LN>&$_m~U/54;iJgK ѲIނ;dT>W=׻-GVI5Ecyk"XI;]CyU],|ӓ|$!heV<'sڄ(ӛ8M)VfÕbSECq֪O1fAs5*٠Cy8S\|V ZQm,!d$	9bY, 8ކSٍ$Z15.ߣ¸1Q\?9!@a\3h/ߞԚiZ~Pk[4}WrQ+XrjkB%\cS__ô&2([N
+퍢X#	8bHaP'lF1k~3bsL|cuIeu6K) UW{fusa&1']h2JǦrjFW`OIi'~hbmY;NIݙچ̂g&v~O5w}Ql`^!AH]~$J[~YxV|jޝ|v[sde(?CM.ǩZBihQ
+|٦w~PZՁyxCwԺ=\̽[=h̈KHܐ皭@dp0MUwwwBv87m;+Mj*ֆr#C5F@qm{iw*a'wu58쌸5\ō]K]NᕝzԐ#Z2bأt [0:xN:]>Oļ)wȴ-GRVJ17:0s{Vն8K#j1:FE0Jk7*֠HK݁ʘb]d=2ؕ$ձڗGԯ]`1 [_9纘x#]{iv;lwɃ=rF (tE
+W]U	iJcGL#
+ܖ
+Ʌul@Ђ2p|L72^~(>[S W&ȲWB9*/`|og.AL- ai(ɕ_2[K0-s 2(*W0m䵉ӂ\h~'YXF+uR|){hAS_h<opeg^x쐂GymXqZ-22&zm#vzyh01g +fch^zWbX 7j!DfWKR{,xo&0T!lz:4@ @F	.L=ODPa#trȺ9 VI#;#
+VxMkB}gVn18r gQܝ\Dǒ.Ꝙt (B;7qx@
+'>W^s<lۿPhܶIj^|im|!Vi'Z+R:UڠB;s5ѾkbƝk+(j ǎ~@fZ:=Vt=GiOĳJ@mtTDrXyq(B<8?YJ`u1{eu.˿o&UzS۷FAWy-km:M{ݐ3zeFο۝h_uI1^Yqvdb$Zuwʻ9+W0w|q+D5{SW.VR֕?LDlF ~Î]V~Dܒjƺ3TYcν'%(h,\nZPb?@?E
+YQEEY[lb $)p|SeY8)@G12˻{T^2[]T}2D1`.=  ٜ s)?A`cZC
+1PKK`1Qg;aa+I/]*=Thn=7,aLÂM@oyQU{wywnvwnzy7٪Eo?Ml/]I:_]F>* F)0@Y#59ޖB!{XߤMoDLbwz0s_ȧQN=)[npp>Q#Xf:4YT}-Wס,S1i4Įc*[UTy^LNZm^ \ҪD`7Q1ʌ޽Vsv7@qsC)RK"}@O<1QJ&AvfCu/7k>='U[ċs%m"J\/܇#
+FFn£Y(	A8Eo'iPޕs%G3;݁nnp.M+3Si_nN7-5ֶ$7cf<_
+lEY[~bCɭy swkrZpě9s/O999ja= +mA[Sco1)%vߞ1%nY'*6ʾcPFm(uSO5W]gg[Zc6pU}E@OvODiQ\]	br` ~F]%}_mSe-?Cm5Q@|]HQsdyݬ~9W h+ my˒w(}GUܧyBS$mzݵSYoyWZ[:|35&}Maa6*_JR;w(0v)D:Cx_
+bdF?ZcGЪamlǡ%@u/nt
+P(nʽ=NKYk)̴E竐Ax. =V#ZH<Lx
+ZUYuK2KGuLGj:&5NۧKnK_{/gh~ 4-ݱI59+qFڎ ԡFhTYF^`W.4`6	țhrJG21lQC_ e,ʽ	?' asȈ/ڧOnZeqFߑ1wT.ӽ_pm~ʕ:y	Ӆ!XaL6NէH|t?1<?>:>kk''*u= oԲNr*?ЛB
+]8Һ^C.e14^Ew'plITs4(t齈YDftl	T#dDU+n9bjc	UFn-L^Lc/SHŚ/njLh٨=z ,f-gsNi8?#2#/ZހZԺkhi,cŋb+!Z1#ͽ#%;hvke!1}Z}Qs=	sw-KA-vTf*
+.ceg.][M0 ¶;CsnrN	OOVlL>f 8 @"/)3eA(%+nZI@m{F\Q%בFR<(rRGD8<1D:wЉ}k4	b~;Vf	c9Գ#?Jtt;ǳkXZ@rܠJ2{A"f dVT󺾚s8B/ެlWjYb RS~wҎvk_EvMҾ>O!+蒔U(rLufF\>ѻN#MQ(w$y>r+X^\&i8;-,Y7KwnifT+*}2
+ĳ,zGzD4&Va:
+%w;}i0>~j1T$=Zmr*]利UPZlmeGX-Z*yncK+Z-m	$rÕ6Hj%Q(+YWytW6&-W~5EQiKe(s{88"ڒ i36G]PGDE-3LIY%jvNiA[qkYVZ^9DY2ق}V/xe#aeVx\-lܷf/1(GGQ",j`a0_*[/Wz 웦
+_Pnta=-تzƞ@CD SMFU[@ eWK/|0<L/ kg&QA?w멮c.ҥ^'3Ξᅿ1|ds-&g7k|!n(S^\^ϹYЫ׫O]b>s-c<4-}{PܙY皮_?yW
+}j1[i@[3飘ǷٹH>ҦQZٕf#|!N5ԜߥPZ(`!~Nc[2
+&VWipxsC12J*d2ԶSj~fA[䟐dP^s9\GcYSGF)RpmկcR}UVK0/>5ŏuSeF%`?tInv!:nֈe=2:j6ÖN>EBu3Cމc]T
+-,usKxM_6ɯnLkY-(tcr<W2?c4!KRRJ.K5]tSczAVB[[prqm*W,XSnf.59lpcʂG8rK;h	P馨f^WENQeQ{g)5HW)Ui6)n>zϺ绪໸w|tR_6y6\k3mN:]f}d6@mv*d-_\`[$7e۷A{|w|M,92dɶ;A:U&p[REH \VNPJa.xzl+,p{HH_	`SYk-Z7V1eK$q& \≑p󦽳T}[Q+{B!.[2avr'ÏE͑gqpaRNғVĶ)b&n >]Coymn /hYkSI3.нlpӲF1h'CimU<?Ud!U4h_6v?;/%Y1Ip.\2JQadQnh;Coy7^x,S8[ia5_bDu&2P<.:nx#JS3mcOy{SeNvk!ʧ] OsC'gV#O$g%gܚhHc16#.IP?9{}rXq*P~c_s9XA͝"¡:BIv-s}#tʟmt5,pd*v7<C{mڹMTC!MٓCFնZ!z3*v0 Ykk0{d1=3K@[|i:GcɻBo'#'a%0GX ʱ!se	a~B{e61>{zx޹T3GǊn/`8L++i]?-,yL:Cv[SzH_yZ'a18^_Z1R=*>hX	QonXoK𢡄G:6H٨W4vKsrEmVN|F}	9xhn1Xr%Nڨ?h`ퟋ!q^RMKCB.wTK_؝+^TgE4)Kj[W#\_qb=ESSA4Ox;$쎒Fx>Q`T+#UdRY*/Bk9aOf'öνj*	ve^+mA^Ye'KG3~9̕&j݊;Y7wPKĲ@qXLG紉/U޲륷<?cU
+"LSQ.9ǡBH+(Ea{*	oI~NZyo.;SUY~'XL/z`@?KP.drVs_,D Yb̚恫a/ ON)(|-Y }j1#s@3p!tI{Xa\3+F KΠ`lGÞ\Sd&k97vg_+>k*Ie¾9md.`X6~W(UpMU-&fur*tTl-+r'TVZ>@/[9Lkc5,{I@0ZR<7C;ǢN˼hj/?xP )ҭ>ƈa\^7S\g~wnznd\R6[)+# ۸f]jӀZwq CkMBg]w2woP@&wuπ7-R9tդ}9̿G
+.i{Ou]*bj]jMo3.Ky>hV@KƜ?t*[<Eݡ5_'S+h}
+#]r&f)Keq`qRp:M:;&8a_SϬ=QsO|3]ܾb^XjnoZ189<?teߜ)Hzgrbˡ|ݷ$ܒh7bH	&62VR={ S._C#j|</$?p>¨վR͊|4Zy+87av;rx<gBlW]
+r|; ܊k.գݯWxn?;?(AWax]1_3}eaֺ?E À%ksmSi֞ȗ m#o" q&݊H%|Mox%ZBwt3)y7k(e._@Ibpw/zT`h @kT9S++S_𦷎TFĬjs;QeSx`kq*L16sRMEGa5zd,6ɳ}𯺥->O={Q`Xl1zkf }n'bYa71}P\nc@E;[Uꉔ&1pVuGx>f`JYo68v1~aԁ
+=O]?؋'j% PW@Y{))QɥQBWyڧu%QƐ3ʋGC:qx :,|Iaű{#8>okqjPXLA,'mi+I v={Ȯ/a.*'J.r}EBJǅQWQiޓ\@&s䂧+aZZJٰ%F̊yM]\b[~7b Sjj>f6 L1X)S*nT}2>kf@chBlwNuKc@[A[ƦG]kn>`/(̀UaOXX\cO"r#1)`(pn#:7;oq;{ m~[ "Vyc"W"xݵB?'ixDk5goZ~0OAxWuɂ@yE6q յB[`Ƞ)^~YԌ(in׵wWPg:b*c`UW)e$>ydݜXaĪˌGs$
+ryXcY]A[\vŊTQ^ӪmDsGE	xrq877-?8;#;B+'幅>\E45K۪VcS}Τ~X!487*?[1`$o9&HϏJC@$6N9K}$#]p%xB`4E)(zvnuk,9/ydl_-G;~Ntw\&8vq?A8󎕒-$>&ȃzf,!Y	Cs!#y s	gJ+AXg.ڿ&:N6$gu5@*b$h	w$ήI4~C]\}Nl2Jq h![~Y,$sQ҉B*[^>S&߁. ݴ"(S4zʻ1¨1e!\σ%J^W.`j8i||5VݝOfơa`ZYrfbq
+ #0)16JXOy	/l{N]#ցPiJvի3jD+~7_{whB~Ȼº+5gCu]Kh@`Sp[U2!O.ptMOhWSEET/"Q,tkPU7pޥ59CmZJ{+Ė.{թx+o6(ƞ%K2K,<?8YMڙ]+S%}-lU	qXX)a7Vd;W~l.{nwR~Ҥl@}P`ѪAMG=U,Ė~Q_i?%[꒻N0Fuk|?B>C&UKh$3b"npt\yq.)@6}P5t_,a2;ٯ^j󅮂N=2гΘnC>/DGO^_MҬ`].+9CIa.E>>PimQ>4soU&ޯOqL4ߙa3mfuC^S53DZ]g\GXޓ\$ ǀ##dw~gdle %$&`5m,!H- E3h]gB V3zij|8 x1 ,f(C{9ڍgQGn?3E6a0!D iUi!vٖR`gcIw~}S[?Ԫ~.x.v$}Bh7(t}n0ε>mp5NSrob	[2VUfI	:~8%TOh׳_DGVJT`w%˟&qVo.n	p94x-|a=ߺsNhhbB106K",DIsUUm@QQQP$#I	͵vf<;w8s=w\s;uGfhx/lnXZswhXJuv,kHǍ;`&*6Iz::6+;B~]H096_=h2{"<U߫neφC_6TASc4L[4b(hygL.PI}Y,:EԪnLFg}F*O{bj*5&qkg0<JmQiճ뀤w3pl7NO~goD?} `LKRgfJKOO~z*o
+[?-YSES(;B}(Qaodv># #P8,
+?m}v}Ϙ#!Ug:Y@mWK} Wp-'wKH
+ĄVwSN#/6^!C@G{OT{; ܍#jZuf
+AXX	G~VjVb@LԄc_28cjkβ1{JxEw1箜[Ǟ0xrܔEk<;'p2$Jxz˒2ʋ/h~^ȻYE՟me z'Vڢ1?.~F@u2(#|/7OX1	~hdަ \Z DP;ªA)vg?@xA^ K#CٴP@ Au/VgUdZ^lOsRrxE?Ÿf\IWXъ#ɠżdj=p5k|oh;lu[GE}	CPP]xAqcoUX0oI?]Y*jB{WN{Gԗ!pxSNC.dTiEcU9eUZl'`48<%RüFP,*gVNW# :Y'ŧs-'q^~bVN3*L쭢 g6,i>ף)LhIZq'uȏ+
+mp?ŹbC-oJε Ǳ*0\֖qEɈc"?DDNbU-?1M	0{Bz+aAU]#Sm70;Zkm/SyO/+nVQ!pU(lwCSrerf@c1Y[Wnn,P.J %-^!AcЈ\AV:[6Ք?zzrnç5a0YP22l'l"`"qrcabFS!@|u>ܩ퍽ʩ`(]xz_®B
+Ք
+Arbv.~gln|j-o>A`~ȶ`[>uuYYE	#T+vse[,۴=&\o|iv/7;7X= VٿCRyVqZ3̻z+F]Lq`^=Y5vA3R */_ηt${]KTv7Z>WdҲAD0(j4670Oyj^Uї |Jlg.3R`)*'}JAмĢA[/F<*\fCs+n9;WqVN)&iy2O:ִn(54LL;ZjU*.ޚ|daVvCPZEJӛ31lAOK51g=< hqxENãԉpѱ}q1~vck߿AQQQ-ZضmUv&MY??Vo-$y.{*=g?ͷI-@AauhmG6,t !=C`C©atbϊ}.[AM/sȏM+:68*CX0vv{AU=
+yq1ބR{zfE>9YT~VwL[ESjxkpghpl["^Pɭ1ؒ?ջ<{V	>K5t` h8Kwaq[ߚ'-e`Uu9>YKey\'CwLCgw5[IcxCwE|S*V+D!&U|2U3k*iYi/ۇApGIaqWh^wjnn&^8-U	_8gkzf/FGR8TmQQ-f c\+'y0zMBZ_?e7-XGMZ	]wpxeɍI$OP*Mrii ēW OӒ(Zs}w+UUOגJF̓@CZ>n3IwKs+NzXd>&Mzj0CZ9X0l@BdOjS:qTw</UV)a e$N\ٓªܘ#9Ɠ+Nς>O8. NYƥ*/1襘off##ܖa+uss9gK.-))S0LRVe˖5nO{DZR|Av@]V{W᪀]͏KMh)F%Jl^;>|-+	J zY_iE؀]OQ{^Kx jTk'Y`LWJZcKqDZ 0VL3W*m1sA+F5=C	2p` ̔L2I%u:zBl#V+UU՝kϓW	7n5`컑L-1"YeEӭsOLrr`	[png0CYă7P6Uq;B/xT +H<O/sea%N< vZユeS x<hܠrON}vN:鞕]gI,4A)O4ʩ	CZʳƖjD2DĐ2IRA.6Ӫl8N3=/7S{-.*-fc_5Vf,A{B-BNKJ|G@cGJ)]
+FuTGS4jYfX߻#Jqc8vAi?aA4Y"JKKҮgfM.3/Y5(>i"KVlϱ~6䉸VlƸ6yUV3K36T.ù ̔'0Tc&..^,۟}Ëc<yFc}j @LI1as{?ioذ!
+-\_)/,|sG'}V*߂^b $z`+֡cbm
+P<cỹa%Ay/WSp?q5\;+U؄3Q?wfOjef<wj /ŉ1%u1)idyF	* ')v_qRnYg&03%$F0zZbי)02m0<ƱV-ZkXu@&,89Xu?.J&V܃|0n:tyX9!pˢ/6;"耖 bn˷C0̓DvЧ0bXMSj譙LIwys/ZI0Ķ$7Ǜn:(bMcbiFv
+MXlRܸEۺ),:nXIzS<ys?_3Snb&7V1H#wõ~w>^6Lƍ7BǛ?2DGMW?c,Lԁ$媜h%+Ԧ聾 5"oEߧikޥ/Ula+|$Jnr dmhC:+=LڼT"{E-[9<mZ{0+n,%)GEr_>+b hPת@-gP Jxz(>iYEE)-0`nY%eWOMMř6iNGӒ?vR\-VX=%~iLWFGǮʋ<0\|-bnus7
+:t5j)ҳg]sۇ[/;[1fM=hurWy߸aIga=ep<T<ЈWnQ%\ċy̳s[TkeOG%2G߲_,8R8 )'=qԻDVD:c)!'L-Y|:]˹@7'MyY`bр0w<*7{3d#<"NRMɹ.\YI:	ڃ?fǕi]R	6K51Y4JBOTخ΁/6+ua+}J{^2D-tµ=VimeY]4)$S b{}Btw[ȶ{-6"V9vmZ+q KUY| fdZA:sabH%i[?(.&t*4I`7*V뙱%X6C*V"aץZh.?F?=X'yZ}bm7|JQGz4,Z,zP=zRiR}_- uc>Ag:Z9B%lJaI}m]++GYQDogbGY5t^`Cv`bV*a<nkޤ1PzGUn[SOOz3ŤVLim3ɓũLy8#ii՘U̸pJ'oyGG-sGjlXĘ(_0W۽{wݺu;t6F+|z%kwx9#"sN!+x;yyM8mFyd2K7rW~¼k|]b;;mIvm;ME]ϼ\!.Q`A=.gY{V5}d:5Ј;SO#|vSr[BN1jÑpmY-7uzҳw0fך^N~܌3>f!#.3/(MolZRW	gS؊%衺f1Ta<]ha'ZVx".0@U7`ReyO@ٟ~[OH(|pՕ[+H}Yu41TJ3;
+4Kmj$@Oc.:J ŨbI4\kw
+^ߺ4h.0lO]5|=}/̊kUu,>+';?RDo)H^Jע`It?ڛ6"uNC]㬧3::,5#= tݪnl%[DI4c:Upi+Y%a͔{;@hNؽk 4 )О.Hydyjsis(nRMMNZzPMOjȭA<ԾD~il^}Q[CyL^W1n[P)p$u`)>؊(ogs *?nQlTmgePqEI\L7]+|ZҜsjYOp v\=Lq-?h.>NfGoƍ_yϿ*vz-}:@'Nl-6^?=,  *`Lx~hʖy?L\EC	m?Cd׻GE}h(,)dDm{)òA0WVlէ -oصڠ&fԆ5e|=	">@<I2oO1-#Kq<dL"7wփ}WȘe|-k*;윔)-jVfb~NuVNI넀M:xl|V`u}r^>#k	2*b5\|eHgw^CfM C}=Wd~!Z>I+P]]_2Q6^Y͂Bܔ=Yϧ_<=0\1/]m:v@Rp jYM@lKBWTմUwSމΏ-F5!
+o9~*~.꺦]ԙwz	^]|QFDg[y9\]~WfAx⠒}i:
+A\x+}!X R^OԤm,6Yu01H/=6`uqqpi1WUtV#9fȩE-WslKxRƽ4#+buo |ExSO[q8+ ꒏^ξ:84_1`\cCM@7g\T}".MO&q3cyx}X &xJ1Qoq.aM_v=)!7y~n׏us? k=˞_kn٧ऀ;`#xk};6tT{ !hBNTqtpk@Y܆j=kvXF$5-,d.\Xȕv4".&rA X1e@v 8
+;;7K;UfcS8aeUq3Ţŉ	,|qIe&QU	;6[uvSn%A%f"6,/yfwVˏҜgC/0B%ԥ>LUAR$Ɛ:L(J7^C߯
+6IkRT),7'+?ܲQpP]@)Ml֘zHQ@61hf`C42C	L 7l˄y[ؖ*+@E[y*HItx%FmlN\sg+:'	Qb\CltMgGy@k)*N8YU^-<4M[OaSn KBb"'.N=mjՇ)\`1#iU-*t6WXǄW}>W'rq	\[O),߾4=/QgdX2:5p<Q{93As|.ۜBIKĦLo	ҤRa9㭄XIߤv~N-Hk$53|Qgj,Ԅ0?߆뮻aÆwV;d^jSzkdYaT h"`P_Z~.ؖ*Ej=i`=.l6MgLъ*jZsg(*fCƖ_=!\ ?
+l#Q+M:GWaXĺ果ei3HEX?W
+{򣬄F. Gg-J obI8Ly,"]6+0r2R{Y|{)ugeBj`44@' a68ҤG*z~AAoJ@c j^t?,n"Tktpwдz|W[j[=HӮ9b[2n@(m~/a`WO
+dV ]x_Ae/+CGA0#̾_G1Bu<ʬ?mMZ0rI0#D'Nﴤxn'bQ&=G0&]Nk>^1to=D34qxUTbQ= #[~9Zwpdչ߳5lk^zJ.WyH ;?iGܼtKP9ץh7wފOHteG7ixJ Sy8ң|}~`a_\ӽ4=Ȳf̔ør)JJ_r^qKN[-JjUq	.8Xˏ1#1F.":45? \15a((	+NGH#;oBoc
+rh1Qve,s[rc:tiӦK,yO/{NPaa{׸qN;syeKn^|'[LYfy4\e߱!	킍^>(Ua~]ju>38Vj)ɽ-Y35sqyrpTrwݰF+,P*Rb%&O`Dz#X?68)Jq-d8X7)k;@uFG˞	CDi\˔1^Xόgr#eLἄaŹxOKӯ0\aj0iI}gfcv 2L-*a_5>eGEf	Ϛ8-F	#f=R\62*F^ܟv78?6l	8?NVOuv_ΫB*W:PNaTh UOoݪvIv &KT"i?)TTK+7LTN`yQB9C:G\5 sV/ [٠2.٥<1'M_a%uƧ3gØw:6|HMr.{J{[X&.?tTGt!Sipӱ\nyRʓH1ӠRz.E{r$
+8rJF4LlD {CPc4$DNl/5Qoל3䚜B_=\ oZBsh`mP^Xl}XsX{-R{m`^xՇ2ymqM@|Jsr:_9SNȪcY*<Xp1>3;1*7vz8Q*ud'?t~	3b&>Nlb=ausߪU~eff`k_ڏV'َʷ]^+;ZV1-r7^ܧ*ŜLYCkotWBWsM<bV'G|Й/]>},qKϘU==|fJK&N"OM{ՠA.d؊83.SJ*%-rfd[	SZ^<CɞFb 4cmDjWIO[CaKi7bk&QXla.46Pࢫ*w+/3ueܤpv|Βy/|5_$wfꤶdtoW`PJ
+ۿ"l=o%օù( ܟlbj GނjU\wS`ϷUB{U`0"<ꦏ6 `;
+渮E^'aRxN`3{J>JP$PMN/X TXby42+T=GdզIzj-4ӓ:ؤJu!>/L^k|"\Bc+=w0Bvrqz6X>-F$'p+LqōiCEBoζC6}6-Lb6 /V򒈾A8$aq-7xa&0σ1i䪼= JgC)+9Wj%<,Zm\SW'eE	xx;@)%ib&fVؽ:8ԲkЀ4Zyƅ`ՠ1mI&X&.lVN6<qgi%QNdK|utIdci)؍t{w؂|ğk?*OnO{ "]L<P`[jՕ㡮x<|c;[naa8Wi桿|Xq᧼9=[]^WȏWO.R{3PQ[\ތnr|>j[u'&[33p~Ӣ{rPH1`.@C,p@S-)CUcwbIڟ,}~yyݶ7nJe1̹+y`-ˋ)0!S
+>|Z/y2w,,eA.歔/yQmw^/}js5!J {N*?[!-Ci\8.UC5P6)^'
+:VQRPo4Jzpp-o lLaP(&TJ-( 2PuCw\3mz~rj0&+71.t'?ɝc!=5 b@<D=G33a||#,fÒ:Tŧ֛*g&zcXwVˠ]-]xgCң::*	V`'×UA=]Z-&,J G#VW	[Nu[VrSVojT
+i+/5i=F[f2SMxgO~ɯeK95	e<NW?d}DLiͥ[oći27gzgͳ:5^Ȫ7!eRo"EQbcRavTW@61ΰus<Jh˻1d]z0	m\]p<e}SV9悶^XjzB5^:E@Oqp&Nu9]𠭛Ќ 	Rkm!fpq !l2P,*L[0"Ua8[zkbl$Zr~cC^(zg|BdKkJV7&"V;E/(#~+U3끯-M*/Z"s<iEbcpe?0:gV-2Z0Փ9T쥢0^sۧh)M1SXo~p? |hn5/Rf@~Un	A݋Ep-C5oy/)z.5s!k=_hE[!)omKj긭hZ({-SZC*:vy 0撫2`lWqtn*VExVkc<ߏ~be[ ~"KIGGqtr߸% &>-{0^X^ՔQxtV<{qIʹzbTH; ASWW<K ^Nw(i蕅/Bfi%<=n @Ik 4'ggMُ˥\t՝x< f8,JQ)@x)WTi2c1ydS,g 3C	 U<S@M9"̩	CFY؇!̹^pzKW0?a.0
+WuFfg,d6`q~OC_8vZz^J|k1 O[5"[wߚ?oC^"<CJKe߃8ƈwv!~T
+cLIc˴w~N_41|\M tFczh/&'TQ0N1Օc_aj%	<͸|#8#jn|v#2favN윹M\cC'a:e	6{v	657;73{aniqxs*lqmA*(92|$=K&!w+j\+w(컗s+47Ҫ`E)^ܩ`ڭ$'/j=w__0&Zbi',
+6OnR]ݧyyRreNT젉eSSs`̀ f@8b 5x0Cx8OtJG㹛`x~l)fִC`=ufrklxYXo;zO`W^+GGG?dYl<c|mmwoAYA|):ݖ$.+@@H}y2N	,a\(KGi.[5u-_{ tنAȓ9JwZuյVEs*^o^b`qu|IK=:T2U^m('#yLũwTk0h7mmwx<M@Ϋ?C7%~jmꂄɘ96i,.3ׇhO|S[G+=1MA_EmE0Hi|8ƫxO0\(Sq
+C͘5XEZ>,}#|"|@G6m5UqwFFGE}ŀ;@<ַk3	#Ȉ\ZpF.dBL5G.!/L}MҭFUUf>V,{ZeVQ$^;.ʬS0XK+N<r2"]XWf省i5>C~l	<jeh`ǰ3*g/I_2z(,s^ 1|!F
+Cjx(4aRH
+}X w9@aFAI@S? 4v
+-4	jWisDc%\jvh{8q6׍XO:y6문ͲZz*)|bq39M P&Ucin"p/}\!`
+TEBl5zQ68T&p|ŏ#ݤ<aIM^t(~|e8 .݌[Em%]]HxmX:/YMr+-V31gp޸ٹz'祟8y <;Wrg.$)J{z"<sLKf{VDsYpe]isVS/| QS[]jB%"y5}&}hVEMMS˅\UVeFbYE %*7ޜJ=0]<IxʌSGAWzϘg$W0S1p񬸈~p)^}'M 0?a.ƇB֡>nH@0F!
+p݀$*<H*.hDwp0>|-㪊J&']
+.to(cMT=J
+SE[LhްΝ c;Ǉl\kǧxSq_8Lyhj1Q |^s͒x>VCs0j͸c7*7Á/ϼo[D`z+`̥.{.Wf K5ʱ)w`gte6X3J
+wWwlqczV_=a`+Tp~sSZIwM#,|awoDh걾geV- )W޷bf+x^Am6*nDaT
+Ac[gn/%˖YQDX
+1aj\fɹ7惼g]yA0~ @%}С \9*竝$b||deX{̛ly޴/+hרLp,Dg> ԏ~a/EirR~jV{we;I(Cv+5Řÿ{By9ܳC#~4/l}
+WcVeO"7i +B+ 4ǰigfu\WT>.<ɶ֋Mx'sj<y`׭7\2#1 gex^\cx(4"PXeUWYxg<l%1`Kn_S!XAUQA/s,a[-jl"Tρa;O1G:?/>g yVgw4dWd^^. =xO7/`LFl0;M3ُ\W[uݦ-gA=h&6ʤA-1Qo^FDk56/C	lrSU7)ӓ-L8 ^x[
+{M\*_M{¯*[K|u>F4Aʝctb?2ү+< YV n	xfܽY06X{ihlEa٩A0<״m^_=]掩Z8/\RxaW$X)YmWa[GF.R>-lUyIZ5/q,=}Fй| ө.g-,]70w j]JK0	:!AS`+6\S7Cuc:
+){@Uw_}հIal'
+<
+ ͭ<z9iYYx9)cco*^g/~eV4ҩ@ݍZ;۰y`EEOD? !r8Oxn㝡GpO){γO/4xH.iZڭǧU-lX>;T1@).ok1)>=Envn<yQ@L#>,iT4II.޴N
+eyT\/iٌ5Sq[U^mc3c9"҇LO~(/ {hY&`X0G<3?nXMFcsozc1~Z^P,O?UhGT-Ϩy؟
+RJOo,z{{׮HhĶ7x W=Ӄݝevj5VAf$t~*L?4.%)=]1Q#KaL]]?->XN!pҠn+fpJ;c_8O8ŔVme|`Ж#q'ļWדTEۭu2g$+˸XVY{B~/ZlT]5c3Y=]QD,l= d7ۮ)T	 3JB)t
+ ]YLjO:F#/8VEZ-8s"U[?DXXbzNE/?i__0
+~j=+CX~*!>'w]zW\9W^gQF{ ׋P6H: i,/:XŇcvޖvCU^m+$=a8ÿ&,ضXI">	"3ӣ6r:3I
+Q8,SL7abnV@nJn9Tm-/{"	661hM1>/=	XuqEOxokh8RzN[]׺Ϋ餻*7ֵ!cpmHkյ]u3JnȪϯ7c7Jxp$m)Mo5(M&zaЌn I&1孭_Tq!@%ɏ-Volj _iXٻlf.>Oic0R0zc;C~ ̨ ==w1Tjipa kT傽i=o[ņm@TNReYQZԈϭJr?ŀAc'= Trm&#9!fo>'Mǡq)`;V;<#K|:)߀a3SZ3<S[86c͹`Ԍ/Noab7Ėõ.M
+`-N-V|l/f4Nj)IBUyXON;8U&K!*]@NSBSY).<@<gElA=/_)xt`Bzp] mj!wX%"\
+<KqѪ:T붚"]LwSwsV?䶵eUVo%.1Z3Y
+/,#0Y>U}nY,Up4H1/Zb,{~FKQ@k)]W=v+uM_\=6=:tx}t3=~nzףaɱxc^x";hr7 ^4M~\}Xmf/;,Ji^gGRӎCpc@& JyIni~ѫ}ɗe_5oZ×_&|J!R"o|H&*e\Jq
+qbԌd<Wdz Fۺka!mq@A A\ =.oy:rpnv]lx`q<)*W7xv\0婙X'7G
+x;k_}]<_ wso
+sc19_郡O^'Luoڇ;!O`lM>gT^c
+TՐ6w<s:XVݧxXGz遮R|k$Lz
+܄c
+C-4e>
+q$S7, LO7sbl&.?:uxė^izc0ꁓرՕaäl|G,9iN#Tވ=xU؇_=,05ݍ.͒77KG}>I=Wd6ǒ0@%KZB E5UQ(~[) k;hfxcOB|~[-pU6Qt\	bYDsZ rce' /{խ p\l{y*QupoU5A,ZqYKd1ȴ *)up<|'Z]h=sLa<dj R<9>	٦&,`{_ޅt<==.1'3)p1[9*9<<+1_*2U
+ox)Baۗ \MZߢUoeyZsg:-p<ي&+,+p!x9p}3͸ޫIS(đPBnLE!f3]d:WL꒒<j)DmG2CqKQQt@^Ơꅥ4Ly*6H.1:Sȵ߆m
+<j÷s;S߶}mBw,cYFrZl^^L71W,vC!R6qm:{zx^ԾEOZBT+-x\R0)#P8廀H/¢ \̝7K@V,]0{<PJ cg
+Ǥ=.H(V=>F	9c-db/c'"qMPl^ϡv+0ZI;`|2.djގ䛦\#9u"(;4F[.gTah;
+Uڂ(QN>e(9YSZx:f:cu]U0H+gqc.eP*j'̕V?6KuÊ.ȉ| 3sCZ@+-{tVٺ2<66cyO0S< QyF^Tc
+X70F/RU7A[l; K@=Uʟ0ߒ22[ǧCб)qhc^Mʜ[9tLO 1~|#˟GbSJUvT NӁ߰z7!(oH'WZ.Ik%PC\M,k)EHr eU;nIa]~Z[;+;(EGas. Cu-iĻP΂y^i4,~/_),Mn#FM?[F-tO<BS|,ڄ6=[m-g{9miM@	"wqPHZk'23 xO;wsQ@Dm:ؐ!7~/MZًTj12`FA^	Z
+eba(*C`d'Ƨp|bF(f$f`7",>I=e{Wk98x\Q4ZOzBiclh_*L|6TWΏ-2¥8ƦyrQq=C&6byqn=0&Ι,:+vתV"ߦE^Rf=51u[7\MtS?ڎB5첇;gjCdr@"@s^퓭B^W N	(ڴ2p0jEӻ,&̹I,p,Q+_;y`wy"Lؓ02hp06_kOyL'ж4ӯ|,&/F4ғ
+Ke`[ӒaUA4˘1Q0Ly!pX9=jѲw6iSms8GE-З`\dl܀)*OnNuBZӪhw*虮6;'Tx)}fމ$,[yΎj+\,W y>WO.Cp)@rM8^TO_t{K 
+2ٹ*`d{ !a+2..ϸ 0@%urw(m֯7rKLOzffJ늬zj}Q7q!	0G&}eIO-&揊`')Ͻ!lQaoϵ}r
+nJ14Ӫtvвa!Od/k}A-"̉]y=pDg;_/|ۏyK`zZi0Sf+\M(-of:q%0)4_T˱~(9E|K-q*̱v] (/t0cZ	W3rb|e|a[/[mZRW*[Njs.Ǳe'&WdZ'4:`eyA }\Zy͉}s^qajW*-ɂZE+2+
+U+]J8?^q'O :*OJ.W ]e-Wm=ir	9@Ɲ7|oimA5	eՏk{QW0[i!,{W/rh.Rlf\dK VCA^	/8U0EZLj^Z6|,`Dket	ftyAmnrIڟRZa94XF~E.1g$qsվ5bFlGY(`}J,AYt0 Kgpq<AVc#N7>[,_Ww=G֙ge\	Fp`uҿ^(bĭEq{RUn	dɸRhmC1QFY=1 ȪbyNS0}|6V~)7>[i2)k3L,	c|v`~yL";&ƖEw%M-5!Vl21K|鴭-׷ b<yW`t31G:?_0ۆo}(*` mZCC:۪n~.V ZР$N86?R{N>CM᪛ER\jU[T+0Ѫ5iOAoYImtCnզiWs/0aqA[pr|isEPbG0tGfc XntQRorMCkG~l:>˰+\iEÈ\YB3Vi+\D*yva0Y
+ IF~XHr)ķOt{"[ϲH(XBώVS>_A8R	)֚,@$G}C蹳HX9U٣Q;W[^~˦s+OThJQZ/YA[t) O71|H{:rʔ1ZkHt4iM8pifҰ,#7Eg2LiYrRzc)%x?g!% ϖa bF	B/jE~2^Oz;xMf\7g-||9t-ΧR&Pk,x*+YM:$/{=!+FPتu:KY^%q=%~+=UoezW+]p*pLTRʫ@[}>&3"38VѬi]MQp|U^푑+'=`aٌqie(+m⊗g6>Ho9A21us<ZZ݊<zA^n"&Xi@ݐ־~=Cje9AjPgy"Ч-޳ -112|
+A
+&P"l?ָ w]Y3ohz1>t~KǠ>	+OkzA`2M4ӤBUzĭ-LcQwT6&`4=Tu̳GF ].3c,۫j)0> sቱ1sn0_q?Ư0Vy2:"+'ɴ.Ƃ-nƪV XB4Z:Sثh+JzHTH])kX0ȑ{j@#95jAPRR낐J}?4΁ |_]&N;Si\:ۗ)7 ]`EU(D<,6)ZK=]E{Rf!v!MhO;cM)*A[3 pc"HhӒ+OD8Q(-[k
++g3xj+-t5i1|mj+Z}2t')c0b'fe4K'8.:Z_OV[g?sŹ`+MbS4 }"L-[ 4v\OR kmp$,yvc{(I3 z='=CYp-n26l3(+{=81&ʳch30)3GPlJh5omߤΖC,VE[AqmX̔e߆ ) >|xo˰mc߶	mg2kԶb*,Kãx!\	Jv7-~12MaQ1/uWBn<+8ׂ7oϏ-Ɵ]XCo`&=;0S)xBL5?&brM'c4d_ x8 {VsLp֘INi9BeLg:/8X4΂A!3Rc10xԀ/hl_3,7F\pp;:[yӦ=R*`6Fà8 i![<
+0U3b4m TF-Yr8*_=e_Xe5l%p9ؕ}H[OX6	Sw*JDy00X_=[P(sٖPk˚hC<Qs|NK.lb!nsAK[R]ӧa'M	^e_AL'niO5Wt&MTk'~uXDԣ;=ˏ4-y5
+Iϴ2c }\Sej&t<Y>-˸N?2j(2a+@dZ ($\*?g=-9i<%7s}|vnez^{j 9)V r5 /P]-\
+9;7*/k@9ZS<Wq_b{2ɤy)>f΄v]\n)<F#8+LѪe7^H<(/j#ܫ:&<?|˗TOjc'Kkz>W⠌ֶ6CB!/Uf2kڄkmu^EcpK"I6o7;%9\L%G3<bLjOq\8}XH1we( t Ʒ3 Ed4b~>
+{\;PN3;1jtc4WO ܐʬS74b'Ay"B\0W6Eyh羸Ӓp  kw;+MKhc0	097P©΃R4 _(ct;Bp E3F5 paY(l`4VQEWgiҘ\vIU4jAmT8 ܆;N,W"2VUׯ5%,V|,MJ ~UeIe뵦Y?PRncS`\dV6+EEFy-	aiO)ʪ^SUra(C?1: P2oFE~S++ңtAwҥ1_,Pݮg=aHb+2]4AoCЀoz{g<OXIA;%$0cQx/$Y1CL<Ri%*y6i?Mi9K8;XSE)-pNL~^i^,$%ܼFU'
+^	ʬy|]0с5`0¯AI l/-NmWs}~7`I$#1 kG2/\ٯ^LԻH	D܃XG:?ÜaٔTHkgod]vЖB
+z(ptG={<|7e<BU4p2X!e_vi)v9Hַ恡7Kn.&MzJp9	vC~lv20Ȇ˟V%%=n^\=3!){T:W۴@OL
+D[XDjK5:=@+0sى9bL>:=-zDՌYǣt0?:j98`t~Pc?^6ms.S$A2頍R6~!
+8`dԪk;醞cWb%n} Vy;lB?`!ܼ>A `ƽQ_[~	0wWrH˖(J
+RkK@˿"Az3T#rW5ĘɡM'%$QmXi	U,Jӛa68~V}uĳ!Gб	-3Y=bZ-2jݾ.┶}pSIw(&EqqKl[KƦЇ4ս<?l	~o^U~~QyNi*qe	t׭1̥	Asiz#<yZ89B>&39A3`g7*m6.X3SΫig}|`F1ɝ_>KJ4-yOLTlbr3., *pݍG32UW7tC4} L	]a˭!6	{(_07cbiঅQmnZ˸65ݖZV~U^BBl4Y`V$hkK #.<"rol0:T?|;<:jF,pWSGpP(
+;E	#E-y!~+L +G2f083lrHT2baMp V+s15^`1}`jQ``!!0$K[+NUY!#rEx9v-oĩD]@۱ &V*|֪!j@@p&)bNU^PW/hf8:QU&]B<UNnܢ1ƖƞYpS\h	Z
+j_,/抛~zORTtXhEFݪk IQ_nN7*ٴu4QK&0IR5-\(aೂ|ޠlɁd"$c*O2\
+Ϋ:Kg*Oĝ6/z1xaq1ΐ&ϝȈ Z)t~^VcQ~U\֧Ϩ30=Tv	gzz}0	)
+驀QN:-76rgL0(;e<ztR-6uZ%<s40g꺎t/ZMOz{68?\=y[^79~ѥɩC*G7a|*n<XK2	 bI|lWa:xK,=GW=1Myz?)y=!YmG]`	-l=wһ +-SwqŻ$o3v#W해m.TE?+up[{=6k܇]jIɥ)V@+)3;6!ǀ2%$8ѕTKҚdw 4fBXl3j쎰j}z0	vO'ƖsR{ʖ$%7o97*Nc̚s@9Ye0Y5:VGD,JiAa&/"9UU@]**TpCpjY+p(Bz#X-<FBd\
+} fu
+K1W?=xRO(XAX>t/"\ZTVbޕd7f=0M-HD{1w
+ty}MRO#]rZP l{>jNx	r=nC./iUiC^!\sOYÆAcMff+~ۯޢ"Kz,[7:<ˎ5pK}vgt V!ÍÀb6L2 zH5[trt
+ h\d$fcnXi`%zWn!ZlvN~_90enl&ܺz||
+iU*nN&3BRznx/.1m) y^xqJcQPU<_hͷb:>2rBR ;;tdCim1~1upcFc e/U&ǿ6oP?Z50V2#ih""gxA"RLRAƴŗ@F V<T F؇AwzM8-,h%iɹk
+J#X-A&}!"34N/E.dO(ߎ̍ԡgpDyM:܊doʘz'> *č6\L.6[Pҫ'0S*d$h`P`H
+hr`~AptVMn`B~2c @ެ -d$6"n+Cʦr	>k!V(݌E	|T)}HIfexsSzG.]mh#t`- ںNⳟܮLT51{`ޣ$-lBm3$HF[0Zկ҄0 TumN2"m'_3<SMTM>Qb&q0;ϮSPލgz=Xt;+W$=RKZ[w&p>7#XgcHE{i/69uڴT*)JY(Yʾ$Je$e-RB9t9};y~羮u0m^]Jgo]a&3ӗZaQ=6UoK73lǖ0>0躚aq)/G-TLzuK2	(3o\ ly(g%RP,X,I@E$qٓ~rWt-.wip1ÃrY?>Q܄PaXwle3к?ʫWyDTR1I<6zhWbֻ#@ (H!}bߋxwzm'`!A& %[>N7=Cyس0oݨ%
+nWG-F2XYZjAekG	Q2*+*@xު樼i!ۘ*_T0w#V-YA['Yشdd>	d"󙞠- *, ^`w߸AFOtNqdm^A] oxA$ C1F.1vTܱG{vX7j7%7clH<_|_ɺW@/"kxbmg VVvM*dFJ_9$6n$hC6r$j-K/m{g耳J;2'kn÷:o5L|83J),ּhWF,[ԭֈ9V=Z=}k]8µ\hk">V	_+'Yڃυa{e,
+}mϱifyb\.B?xnd=aF{zHFeԗ/ju3M~ūAh05Ig\:T/<ʼE5k
+ˡQY/_^(U5Ku1[Dp%J)9-.0	3{nP?**/gĩ0|&-ڝVi^ΜԳ2v:nR;>#ޙc*QDG u-[2cT)9CR-yv_|Q"zR+ݣ=_|/KHzC1X{/{0'Jx=iutoJ
+N\&ZS`YQ>؁ơzjΧ>	}ě^QiOQ{
+ܻ~f@mXɖ-*G׻մ19kGǆm࣯n`W,}Z5~N~0jB@eZ	!K!=۹R0:@|yo5i	Xǘ^+{0)wQɭ>R.xD~Bi̓_|Ogyو j	QȤkW$z"i
+O27?(NQuX}wiJ<BCx{]B 1U{af<̵hHdڲa^O2eb7[CjCعs@ؒaw初ͤpV2fA+W0$^;m,fJ	+U-ȂHZêjz
+Z$V
+#Of^
+g>~TeCQØc3as;3JTi%.Ieͅf3*Ȉw`{ TUZνƦT&	=!h>MIjUYKvTh0#sF,`uFѿy6)o(Pt<￝U_X`L x`8g],ôdާlރ<)M;vx_f?SN-'d/,ʉUM/BYi2wxLߢq鉀ZG{h~S  X檔ZslG;9UQ9H<r˞!<ɜQc`4𑇥
+){*o
+-v-MaTnE#*%vV'qS]:jH3mPlFقs/,p~~k4V2t{K^}OD([jw6`DoBv*\ei+^]㪸:QVHSrzeq4_,mK3!SY6 4÷UU\!R.FZ7j:tVY|
+@),մ)Pw. }JbTJ7s4 +_T[.1|lZ"tU%Y6Tz^۹=dlU8ݓx`cp;`W+]-5h~:1fV0Es*bWܴ
+X[H<S(yV/V  ,< HJl̻鍆Ŗ*4q@86QDVM>2=.7b[[6ZwZFg_l'偞תyj()Uي8A8Qٖ- WۖW_VѦtLEUT9\heY2wXDE㕘poקJʏPr!7<_/2߲6110-ݓY:&?ق01ߘ!0wD7P[.`g-diK)wȤhZ'1a~Jxƈ$\ɣ1&SNx&L@0׵V/tEM^
+df,,8o|f,FZls1ZaT%q~rgߊ|YuNjr%տ=aR/^VV9gnNn16zIA,0Iܴs-Pk??s	re;!fE=m0r1V!൹3b/\~R۲*f=6|F4W}!
+D}1v;~`Ri%|swIKT>C$)1 #nT*7
+^,Qi
+㋼I#;}']v&^Z/2Rrl,p녰'COxR1;f 	)qe	[.HĎ(܎oȁ,iqɊlƔYMҙN`
+LUu>Go8([E5jAեu#FXjޭr͗5/O v2b/'UkdƩetUkµ@;{gd 6ֱܿkB*gv>q(t]@*	`Ug$_x.O|)2>Pdgx縏y Fp<KZ5nmީ@(eOz8l1{5Ulaڠ})y(i*Htn<oP>\+E<f$?.XQzi8yueg+.Xw-/4?Ǖê
+!BӊƼL`Ǧ2WiJ') QLRqg@*0iG$ݐz*PBEP`5CNh1IH UX,XK uc=ϛJ?1EfQчXҪ1ɁK,ƅ錪w(zx_(ف(o'XšJ<WLșghE=|HG΂ -sS3#Xu>e'<0gU=bfim#`l"ѽEF80WQً{Bf-slv3mg+vZHn-`ŮW/2;3[' ya%C]7^KAZ8+'*wAMu_Tzd<Q]h M
+!9<nAѭ'tc^oevX4+А1C9 "bAt	
+7zn"a~3TK}CXqP`P ,Հ
+;:̦1TtlKW^ؒK0,Q0/ؒV[x톡ٛ|R(5d`+v׽]Ѐt)W60.g,\O1[7,
+Υ3VB;͋ϻ"K[[3Yl^zO^jtv Ywb֢+GRIWESQJ
+LL*oߪ+Ւms9ZlƱ4`02Rs4n:j5V;dK5,7 7Go+j:[Bw1eOA12(
+mSU/j{gWt[uQɗ{'PldҵLZi#ǁD(Hy\FVV*XOu3tC84lET\JtWT=[8ΐJZ#PYz$W%Y!W{aŦÀDFEWS~Mǔ=(\SqWb>+%]UtU?*&weg((Ao9_K=@=>vx``dH\Th@PAk_0/M*e!Vnzfu>8CD<su@ 
+ط4F-̐(ؕM8-n
+vV»o@D'EJ``2٢=	X?uvtsڏ;Y=*އJ9QC;=OQQݷx9GB~{b`v]ʧ)'q{K.8ˀx @lo+[<У3t{O+`9>+d;znX˔U.$r`XbmR1LXHc8t@Ň5N۝o*ː'bX`<"!m!mmqfĴ={3Hf$Iz(Vj4¯4˙TPO<8KduewYφ`4 FH`eF !n^FeTj=wt˭R^+|t3L4+`1D16-ΑW[Y@2= %rrfp/兘@SE{uݧ<r\R eژÄ\_)x =2=%E?dGtzxԆqZzs\FI;&ovHS`GEd{ݱi5kW;! r>	Xo2f&
+PfS'ޫEa5!ugD0){*=pdwZaz<rGPL,ąct5%ܲ'魵Yq/15O[F;iժU#KG涕
+ynd,wo\_z2zKsm">QګՉ=kEn3}_vezlVr*+4 0Dwqv] m279H	OJ@\x)RE|l[ֽM7\~@tPe^礞@XS4)4o`g(4t6yԫ8Y7Dh0&8;d$b#99M?j\p*=Eue_mF\ֽ,4E1ZaYnxJ.$0G;'3KVա8ru򂭰<;YI8>&phbfBC;pclH/*s 
+s/@r{>x4Yv0G=m[ZC"n,{V}6wy`=}^y(Ρ4:^mvxpݓ|g($s2`JxXaiN*X`f2Uz(WLcrӎǖVΓs}↺aeܝXv4bCY%R<#EɴVJUk_nkc-_d '[Rjss0l澂qEXLZtuJe`ܟwA*mP'xLKXQ.Ub**) MOtay.EL 
+i:L-?݀)c^
+˭'ogK%Tl{lkXE9*1`(c:ÈmU%Z pRN+CK?;Ua}qx^)QF%_wn@IhAU.>amݶߤ#s<Jn%M	1~ze^ԷM4,cUF-+ 2  ViH|C30Ɍpк;Zh%2ʵ!sI8K÷讞
+]"$7/K :Gyڠz&yN+Ern%,fuwji79 Bo	%sݾ畢̞M[+{q;߰*\e K0R?	b"/<m( Gm齆@j$$"zsdZ3G~CeVHQ 	1(TY N=-,fg5΋ĽFi	ͽ̰$])Ol\Rhk|n
+Jr%9|Bjmk%k%XA,
+ڈ^Vݻ49 9b@:zaF#r,,)V V<?#b2k2`+?^Y ZD} Z0hhJb03DhgÜTQ("n80[sHv.ZX+om5,$1[fcVpsx"PIϭN[G$FYHl0ef4dXGڔNm뼧G%_Fϕ.t~Mo,ʜsc='d1*9W`[s0u߶,l碟+eR%ƙX?p]_lIKNh[1kދ|X%JQ['-QDlllFFC=aÆ#sw]ih{MO
+?>m77nN QcylLK%3Vu׹2W[;׏NJpӶ:!݋mTSЪʺ<a%^Vڜ0&?S{lL|_/N@;S8ճ)`s0B9(BWe^-:_\?7TZXM P"@-O	<Nh>GcLKd
+	!̵`)KH}ˣc2^o)7lV7GO >}inSTBQRMXef @x~3+F1*g!v0$?Ȝ9_~pw*Mc_9/tf
+}@p^;sAOsxm	6}/
+ƤE@pJ51eF^˓AO%#n@+pትi$Isu|F1yMU=T;ß)6j[wZU
+0򠭔0<z))U;$41mcY0Z9K;hGÜ̍p]P?/}@ >9"~̇#y9DU20BJvy1ftT`Bi%KtUmx!R~^_=sӎQ)Ih&2{gx}n禕GDhNN݈0& +f$	O+b+1(FZAUMU=.^#xwόTS|{HH{)G9lذYf7--F#KGzџ,zgTaOu6֎Z >xǢ7*Pr*w_CVprfG@[+*EHZ!_rf ( ` yG˽y4]k'#J^Pe^DgSpD-MT!h\jlElb+iIk]0@h?ʅ#mE($,BXK+$0VR42]:#dAxP}nq:̗i3Fk2P옲y%S )_Q0'=1y1CAwF,$tm-W^ʘo4+lIʚa9'כo3}q$ɒDIssrB顕F,9ZvR^>[\%tjQ*h+ԝ,{peC՜39A|usR)cW/6dن-4#o3d52RuZ2Ї_xkC2GkJ7Ffs!	PokLrjL36UmJkPrg~ͦ
+Pիl6b[2{i^S=Z/Ů|ГK^+W Ku,LNtQЄZyYA:1U6O4:bX@`0p.
+3b4*(څA<-(̭ZXDp'wy͢jB ~h:.(+aiCOPw
+Y'/:ԴqT,{_>NZxnN6U:012G>]V?ᨯa仢f0)l	EH9bd7^\ [ '𑩻£t}Qi,o+;ʔp >KW	ZǗ|Q{
+bx?{dWXK Y1S! @gEF|	VR
+ʩ]0TKά
+vOST>˴jKcf'Z+	_,rŦ!||$塈,<W2E>4H=yTK_#"Lw ,#	&9s##{3A{Nd+H% ,&+,әq˗^-z<-Z͂"ƜcAE9ǍYDa~˷ZED5w2-y|2Jfó`ZBŶ+*NYz?T+6w]C*pi~2:Qyi K{DVt)_a  ^%yx<nv|F<Haxjt0oOѼNW)Vh~SEL_G̓ԳG@L%Uv-q\Z;Z\YSD2[<e4S
+Aس*9S'2䝄IX5j[bs'y'R*V#e[ةg(TEO"TS&3LfFLKùb+$Zܾ_kϠ,??),bvUh A B]^sFLufiA|Uo#z<.= ^)`drM.P&vw%Z~~tM6}nݺۯ?38ta{ÏTc%x*{aQ9x_"f@-g_!{mI̗jFAlST,A?Row=dG9f=R=%ǡqs	"s&FqVO}$ҏ g[cXrØ) r^OrlzT^P`P=xCNBn(Ԩ6Z'`>jKTmkoj7m,H9bǍzFAEПV*l+I%|
+ԣ)Zܴc'dI@1dŌe70 ہ<ǐᠯ<hXvhyd[[vcK6xmI˹{J$1(c_cyG7Tcsun2z(h!* 2K瞯ZsjqpFv9ber/,s2]]ϜyWy*~xbml姪0AkXe y`M(g/
+bNWֵw(ٙI(/L3Uy5yfL*ÌknnnK/M*u|Gz1EvT,j6-0jn=D`=禴4q%{#Z8D`B X=bĸ/΀.4h4Ae"T_Q4KgxF-]_.oLg5/:JuY>(/ex)gHBc{'$Z6(< S.3/{rs]d_EG@--V1Cuˬk	Ffƶ#Xm	(j>YF]=im.pPFaa.lۗ6rKζ*@N%e'ա}߫mX	JxV<>GxA˰wKSђ?oBR! :d'rE/QOke
+*sY%.3!]{@~Y<.<90bs%EPnzV2L		bAJtodK0wir!Eq^p7>3cW1xٖ%7vA=3]9-f~wUFOhW?"iAbُgoujeEK8K 5+Kne۝iV`E91jaekSN3];<&"]@P{{WƁ@6T>
+ZD)+~V)F<&oϺe9ӎ){WυV.-EbPNh	382;w_Qݿ-̼Ժ^e;_?TgQ=
+'xȤ.ٖb&x'4/Z2,Rӌ؇~|~lόŊTۙcv4ǞI9FRO^$<5>(:SC?tk%r Ffm o<,>m0t+lablun}7H+?Yhחxp*X]\gyjw8V6W̨܊c=ܓ3k֬~]y#KG"a*xv5Fk-LR
+6ez_B#VpkKt([m\ר:@C^Od&[-n<2`ێ/Bu*)hځz3KR1;x/vho~Y;[p	V_F\%fZdO\{a­JZ6}WrRnzTbSmAd ~*
+}#?X-FkH񯀭k'Z,ʒG\ߖVk2 ?wNh-Hd1] /6!3k#{U[}3W,?|eXMk^D=<׷w8HS07r1\ W/1ݎ^oaFA+wj.v:}(MxW! n{X.xT/=4,q0seXbd$c1y6wz&ܴyƁeGѽVը5Ƕ0c8_IzNR<5DaYb+הTc°rR([bOa Z9{nSDjWbs38A?njɆgrK.P}JV-y(kSxMS_UP69ؕVN~GF0(kpi޶~_KaJ.###c8akѹVY83,9)Xeɣy^W>bap9Ut!zB*cylQ&fW򩵗[q{̽SSS>c9~xMY*Fp{l2։Z bG#OX^<#Wv|w*.d~54My5weEoqm8[ [4aM!,U\*4d١;fz֜{!,.r/Q&t	%1Z4_)G{#<>P2>&u|Dv7ִn_<c64EdȍD`9:M~U!F$݈k<!sm5h[eon-(G\NFE$յuluQo珱cŵU,HBڤQ\ưȄr='m@=ӳJ:W
+7-ۚۊNkMv&*_pQM~w-gnn+i~[@9Z]e8Ӗ4՝gBB8V6#ggy]ƦI3bQ<:bڽ)rVGs@e`3ob-J'bMOQxz /77U/1Z}m㶪"XdYӴ]x|7vmC.LW0ZZLB!;lT◬U;f;ST)@FP縪y;!(pV,PwHQ>p_F$`	d6$`tBF3䑝1rApXXv}¬12H	:7] +8PrcũOA{C?9/QF&_+P%:6dd_CO>UaJ,N^{%+ ^$pDmذp'T_9jKȜ}?L_jEi_|}沣ZVвg@hu+VAl=E^_^en,[QxvJ	[6JK>{0&g+c;1\M{^?ʱ:@eQ>oA,#*rY0}ㆠ]^SW*Agh,FbPQUx -Fz>S$],fGd2S	2߃	a18 "13ַN0s܍
+Z$y_k"nح e/k.,%W5*Z"U§ؚ|rlA_En'dW+#uD4Uq<&	pO^BU,[koԙ	^L=
+6^񙦨7c@rZb^vtc1b9[b^}Hk2JPϹ1$e1ImWW_I`4{jR/}IBMm`y85+JreFf͡YRA@*sBufħy4R|j7n5VN$_+/sg,e%052Z]E|-w-vQh1̶~⻠Nc#{jM-w^Pv|9R*X⯃X=M'9R	z7Y7M;ܴ{#`!۷/[llle]bŊ?9{$ D(l^S-$I(G4a~4HSp1jixCAݞ*ze<^3;?.<*=?yZx" %&Ìۤ,\|6Zƃ}~E]_#VBxj$|`=eIsD7@FnUVG*]˵𾛮nV(x*sw5W	䨶J9"vzN^-]دevZ%DLҳ/B[L!՚(||710ZO"7 2ˋxvd,3+HgUk/WQJtD*tx\ <\e-6z<TɊ"/V%I&/
+Saik4pۼڍd3cn3MڭXc*T*bQ3J<*5*ܲ'=#R<cgZr;0{؈ʻߤ2gL3-kBfAZ(=>0?1^i|F<H4vt/e`0y:Su='9g:1adrϫ;K uVtuW0B'#<wh$Tf/!|`v1	-qqrMǦ:RtJ*`fbP}H?0oa=򌨾"V(sKW?V1^fLS>KHhWR|t(Vĺip5Bo2_9E~.ԕ/yv%@<Odۡ|CqҔfL%0`Qcbb8wK/SOt2	Εd ^ԷJQӟћ3j[yo06gYe`vٳ]Q3oJ/HJ"aY͹d`H	A/Of	,y*3_[V0p-l˅tRB)z"!\>ݮ
+m{%Ƶ0RmU3c-w4[DB<xpBt"te+L*ʡ܆(Fi7(;w>uF|"
+fJGE×Nl ҉hy}rlFizd? t+dc꣒/g0,(@г$$$y 2{
+ljkcS,_q$[raC-yiԋdo4M;ƶwE>*}K̒q&z GvZV^rPNzx|77><>wD7N1{ۍ/XAZvHx׭.m#ֱ2JŢ̘WhuI=#g2'78/h%mgΓEB4tC<@Wke*'J\e>^48Bf+${ar6yU{
+I=:Fe|ռytw ,Ԙ7D||DiU1<uTI ?ӬE~K<Nf͇~EE@il{(ERw3D1}W.nx?F3mGD)ͻ,n
+aҒY 0O1y&4%&!jc{e
+O܃EUTW믣&OyMrӝq[=Gk|^pZɿ@{.eϯTsL0| lY-2`'@\J{A#_,F\=g{F1
+0PS{0^MgXb#)\ M]N|#>sh7,X6|hDg/{+I$PғBjyBϢ㥗T]bjKO91WYNtRDPFmV<fBtWy!zl"}d@4ydC@3['ɆOcR+{v`rx(Ň</,iJwtsOor5bᯛɓd^R7Z#Utv$/VS^Ց!F1(ނ^sTs5=w)*9-r˞~\˫m1K9atEt;,- 0=k'
+­\`;v0FL]EtU@4mMxq[ނь?tEtg~QC`xi!(xRdr&0)9KN.+/K|Ku.ԭis(>w|ijh>31*R#Iα)+O/ÌUL`4O`<wΞ@I;mJvѕc2Qf/Tten4`j(Y}{#ckmx<cسMs,>MrW^ES<K0}lf%.Pd??s
+mٲ`G;r	'ifO[]ͪj%\D9"E3[\YizO1v=PwkJ9`7/0z-!Bt |?}Bl-ܥ̢JUűnSϸVe~dKLLcVl5L@WΆĺREʽ<Uȵwu!4=ФAZqY-I<<e9-:()n7| 4BSړĭ}B^A䅉rj[ hf-lBSKSC9ܯL#OАkV$UׇԚ-x`
+8>
+TDWYZL3w<T"ζlWh|qi$ݙRQI'EgVi_wO啀<s;AaDyd¿* kо&4QfޞRi吮9l+*Kw7-[8Gg-\Qp(	dQɗ>b{pZ
+m)I4EsRΖ@i f]KmԾ(7PYm*tタ"<xF
+Y2$Z=k_bb#f[a^[Φc\myl^\d)k=ӛk@RfSqoࠇp'JWV	A;G%_bbjj
+TM]-~-f{nxa\zhyFzs`v7KI2id/{0}fOwϯ_qr{>G{f7ިJe~yK\%y	6S9/F/(@_a& 88Zy` \p7ȞCD<"bre6̶Ɲ9]N ӝOk-(ͅAu	yNDϟ'rV)dϜ=ԼBsaCms@ܴOES>mx^Zr,a|%\!4=kY>rx::ZA*Vz5%QpgU.:	I=mdtJ5l1pgpT3,;Gd-$W= ;_єnq3wYց!w]q<:RD">h#YKA=e}yi־ym	qtNpZ)ԳMj!ɇv jV'_Uc,YKO_woT*c"XS.fxK5vʻg[5mR1]-IZ9E9V3OOaanN%;juR'e%<`:0Bn?+MČRIt_$YZ^V ࿲	LB϶Jٿ/L9̓+ٱ){kar#frbSJkڧ
+nUVL~xIm^2`e`]>V->qÕ}S|*uUz<Z+.Grӎ|UĳzwY-ʵ=6.vF~JyTx<C6T&ٸno[/tan@Fi׵@
+ !;ч*P@:tc
+4h޼y^z)'B
+(ACs>55s<'F@
+t0@
+萠
+(Ё
+(Ё
+(Ё
+(Ё
+(Ё
+(Ё#
+sA!WjբE{֭?yzn@C;hѢ5j0qqq^zo==[k׮\H*Uk{ƍ^z||<cժU]=s&w:0#sA!gM6rr1zhȐ!ժU?yW_%$$y睓&M9sf.]sy;y7jԈ.\2vɐݱc `_zaO=Ln;LzёVf#FDGGjv牸{zzwe:u\q?{~'nڿo۶y2~ٳg~])2veÏ=*4(..n{yy":߭[7s6ԤI.(11.xww
+=oذgf={*Us-ۇ.~t`V=iӦ
+*4nxǞ{K.իWwۿ=)\pN͛#}ʕ@mZQG{kW#	g&}Q&=,)`n~#K/K.ٺu|K.MNN/C7oLOn +_|֭5j8qqQᇹIwˤ%!{+"?0oTTTFGG_veNŋo֬Y޿_~}ݗ{Ǽ;m6?w0[[L[i&=W :37mڴaÆOv>}YةU߾}I.sssTXaCuH0n>#syu{d~͚5SRRN:'՞za'Nf޽Ex"E[>W\q'3O>ƍs͟F0L4?_?yg=th1GGݥg7Zd'ڕw
+۷oA[,3g=_vw91*U:s~6a)ZGÞ&ϣCI3:07P@:07P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P@:007P|BEj^xa?o۶m/Yfw]
+谤XbN?z>}G=o޼ҟ<m׮ĉZ#{/W]s5/>]2sc9
+Hd3gNB/*Thڴ遹֭[w;CsWZnݺ}U07N5X"Op	[l05ks'7?sڵ)3tJ*4RFbŊmvÆ_}lllǌk\ҢE)Qq}TӥvmvRRRwI&4~,XFuYyrGv7.\NB-᪪UƍάWw߽?(БFsˮ:lw}wO WNNβe&Mku9yya`~g@ooOwukgqQG@S۷oݻwR tٓv/_>}SO=UV~nv.K˜tRwMn;.]k׮1? <6o<>}0tm:2)`n@ )aݺut"cz+x@=!8{8Lio,҇?ܼg`y֬Yu/77b͛1.\waÆv2߁]z5rHD(TО-P@]s5ETRŋc=ɮWlLNN<xٳ9ׄwh{hC}饗;v,_/%KJr||+.X]v=>쮦1wر/p'9c~t@Ds݇G>~pӦM$0忈;w`. wa.6]JLLl֬իaɓ'-ZOsgΜIO~?s9e˖yzu+߁VX1	&7P@{Csߗ)Sd%K?Y[4iks?t,X.\pOk˿\4N]^þ.ɠA|ԩsw~gyڕ:oojժm߾gx|<B
+3fWjOwPF0/rWim^HfO0{qOi7oׯE<d֬Y?8h2w1[ny'r
+#`n#^EYzuɒ%{ƍpI'4ab<& ;k;{{=e˗/[gݵk<R+WUB0xvv6W*T(--_vn\x<W-[
+(P %_?O@+(?p-SF͞=ץ@K
+(P@
+(P@
+(P@
+(P@s7m>>>>ϏXfͪ|ޙ			+?E#n
+endstream
+endobj
+10 0 obj
+   267981
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000268997 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000268971 00000 n 
+0000269062 00000 n 
+0000269190 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+269243
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-1-rem.png ns-3.21/src/lte/doc/source/figures/lte-fr-hard-1-rem.png
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-1-rem.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-1-rem.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1357 @@
+PNG
+
+   IHDR  |     #j   zTXtRaw profile type exif  xU	@D
+kuAʷ,yaÌQ Аi
+84X7y.c:`jɿLVL.]t2VQB͈]bs߀^qJV,YS&  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="636"
+   exif:PixelYDimension="388"
+   tiff:ImageWidth="636"
+   tiff:ImageHeight="388"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>͸   sBITO    IDATxg%gy'*'9ݧݒ[,!!$D46s=e0cܱ12aFL0QB@
+j:ٱqYYxV}Uk[h8ĿuUɪ*,111111NĿg[ee٤ӝ?dН$t'&&&&&&;111111	)$t'&&&&&&&;111111	݉INLLLLLLLBwbbbbbbН+K		!ybbbϿ^/ħZ_9FjtDw)4-R薦؁&.}SX9#f:WJ}8=h/CMd^>;mTڒ̔MX^ϣyawRh5cTO7.l4-߫sGo/Q+_|vi3U3r}N_$7p*rFZ t,/"ЀزBU*tFHfUSu3OetiVhatBjWL_;;Fm]e]έ^TyjA\:g[Փ27)FDm>[3NOu,w8g&P-CFRϗ3AGhWkǴ2%ՙF{#!EZZ}LM}(/ZeQ梳U==\#Uy7:(Zc<8|6a-a l 2Ck.aA9B<h, @8@Y@+D<QFk`7hiVhpa x@cievPe8FRnUjG e"	)jEuC85Pfȳ5q ^8Wyַzr,;e̱:Oh_Ro߱UE]y"kL OA%;t(߹5+_(|o\]2:OAQ]|UK6
+f`#Z#yNi#:*Fd	& !6<f!ƣzܛ)7eCq[.wM^G*.̬4$'Ú5c#Za}iX댫.;X=u٣:
+X)/J%8tpo^}^RWt
+=#>貣gkֺI@<\yN"/>ZLۦÎrvT]Iu'<סIM-tj\^};R
+%"aGjlނ]갩~JN_<b~=y3zk˹s>#BiKAz=5Ӭ#-! چzP=lqm>
+xމe'b4;|,ga[.e3.0C~|f#iBI86'[%M瀴m=ܟ]CCgC_9mS9ڹil>~2{eM<>ܾ1|Ԙ3Hsچ<v HLޮlAe浙,/my7'tB̄oM9çW0'ɑ>zτ%v.)#U ?zi8t첮 ^rԦp+43kiܑ3K(dWv,b6:]ͮXJ t|s"qdqal0R[syIQ|5i~ }sΚ鼥:V攳q9^;;naxfyS@)D+cblʼ~!VqLZF!LahnpZ!(CcHz>'눧1^,@{2zQ&Bplrx
+DAHVQ߂S1lX@49e`t3fGM71X .V@<8p|1q8eWZ,5FQpgŋ	tkU>Fi2L]iُ6N,]eE_H57<qG-N툛'p4k`Vz&ؓeuGϯO/P5nyzʴZC[zOeisՖ)g43!-+89`#Vh8![݂%)r[3o Ox4i,H~.gK}ک0⑆siQRBk;<~`9}M
+OizB^:VÈ6}6]s*3g~*_\itw)(<#zUO6l̪9N"5uɨ:ؖ2viy/寉TLiϜݒT5|*H;>8+ `y67s=yϻ?h`YkZk)%%ͱ'tK4x.ɞKM%FܐY|lOiӢFaye#!!4hPMk3uX=ɂ%:LMb@j(
+{lԓMOz.`kfSnAey:{sϨL45mOG7ĉt:2-YoLtH:{Jeե5qGc^L֘L2qf悦-KWEiT4׍/+5|~W]tZm[kť䲥~uQnAe.;Q>ɥy'jw-i´*+J{:-yҖTZ?4Rl[>Vʳr[ZW&wRFuq@GdxeGՓ[*XٺvIrTlGO`(<04=,Jm57Q;ZGcCUH
+h	 AekPf?ApAYu(	dE,"݄WG>IaU%QSLPeg3Jqas}HF'dѾ2Bcc>,*Ӄj@;h)3T'Yeu/}f`;i~ߌ&k*un}$VӶLFPC>&1R=qbGS:צjGmT#sK?F?=>zg62),'@aj¸.R(CJcʌ%ֆL{?~-qh<Ǖ	`+j֍&oiBwZf|?FkF KNɥfH=}>?]Vc]ִiFϗooom߻YVO;jOO%ճBL9RKrun;|fOJ=v(S{kJjĝC'7~XL?TzWڪ}N)/1׹g}$So	?V,Bhd05Yi]|ľ/\e=bu,,S2CZ?GrGV[54Oo%Aed&`J,,|5RNژ}v<͢sb3.-
+"#~|:=KR`,?|RZV5ܱjY{Ɗ++kH(DFaxAمD6%
+Vm5e=~ʡ'm:_^~ak:#OcMo|
+AU5^PtP=0Aǹo$Ϛ5.1e:ZwxȁrwL_N\V=e(6҆8DrweiK,+ͧW4s˰|B-ܟlWEf'fY)Ѿ<rB~KiStr2͙#峣Y 0M]W+3
+>
+z#o]ؐT8nG0^ϖr_{hAa"w@'Ii)JPcdC8`IUF8rhYF	'1^GU9 ݀@9 Gw@Dr|YCڟMjh2E@8AT22NRBڇL@(`qdY1"A2 AxriQk%ApgXG:|ʂb6/p6U,t^8wŕ}n1=pot΍ac8@n Eᧇ?qwϽi|NO8'if撂,+3MIC:tLTKAla9M#:7ƒu)#^(+LQZ>K7ۼd{ 4u=dݺBUBw(Q>[#m?(I+vޭzv﯌HvlJR]ëŕSRH?,Ռ䌎2uώ9</;8\vP6v~\]Sџ3߾Nmfֳ㿈ſ(3ݫ.ȋGjt[),Sz[ʡэPkA3yn9=rֽl@5,/t_8t_Ozy$HVgz@n<J*N Mml,h,,w:fkL}q[*'- NHjj)`(wzDUu'%';jti2ҳdgTbX^plEO K_i>_n %:?gA\FYlqzr}&9T^H:i,QZΝct\^torJAIbAzd|\	?(ёEvlj\=PglӅ^tԥk8;8)6g$wؖ-O5CI9.n
+C>#w[+JNL/|NP voXߥ%r(wfjkDbt@H\^ɸ_?blf|2,{TuU	BD) k"C>_p<P2$C8.C6@ lC>i1ZHNCr=xoV8q?@1#l@H6ݟUP$D BQPe`mP%i摏@[Ɛ'(>8~ŸA!W	'Q9u K=W)S ڝYR (pb#*''=om@io!U^Y}x9(ܸZK$]P
+/b厹Rf=#ca9FWGNqa`ý+ϩZ<YMt2>k%&F5+v܈{legpo<qhA	*k;O鱃5AuikgQk5 c!3-z؈ J]?>:~_l\S޷~Qf&[l^m?H6;Q;,bWj`\vЧ;tաkiL/M+wr|n?xM)/79qF2eRe{g4ެMC$wMMVmo׽kxܾ5~s= O \YPVsQ=%{ĪnnS] ؀G`B^-|i˥ q-PҺ~\aVΏR3(2 O,ԣ5~bʻšǆG󽅉 PRXjӈ-??6::kTzZ1{+=S݌dQF챚{cE0{#DSse{DR/ MVfz\>}'p~LqWz|6ͥ9dmq3>?䋇K3`'Fk
+0SRFtCGot\Q$YSޭ߯LAz;JHU3mjωr'#(3SjuKgxBƏS"|v8y2F2N=~T魡R^<ެ,%}?ct(._GQٮ(/q}!P\? l2L(`n ]o@h.CUa@1'@9(P9X. |p~cA*@9]¯1Up8!FakP4E)e7>?Dk@.\JP  %P~lFCpͫFc4ܥ+dX>XVy]!)x_`OɘÄfl~\g)!DmZ
+&6ܰ^uff[W3MX(#)_Xǖub7Zlqt,(@CXZRC #6hAHMc:D~^͹B	֙QBBוWOվQMˣM;)rVzPGůdt,hؽ}Q04.'onYRχWj]]L8_l^Y\i!Vz72I}֭
+yxR{Cw1r[lOFX[C[AO<q毲Ky yfcũ޷[O(+R/hS+jk\Ǘ)EBeq Zm=z?wo:̍VTRy[ݍY&0-^T܎eu,klC9^xtqzbtLπ+{H{lC3=Q<KY\sx>H{$羈)N#0ֆ7@+R=ի.Ń>tzrZv[̌q㩼|)Թ.?AxjlTbt}%H)͔6q|/3yTϯ?pc-^h\2֕zT>ZwnՎBG6?&ޏfwn4om2L:wTՖT[]ck{4}/jXO-;{3=UWk	J5?b 6x2=G<P}6*yA({}~,+^Weǹ@?yFg[eY5؂2,询HgNc8gdp>1us`!:[XA(ƨmE8bADeDs֏BD(
+U*!IQG:@{ˆP?BP$g6Q(3vysp5GX]~-(=Jk7Oc |1>g[euIyso)}U	ǅϋgF_WŅt;~[UGZoY9T,6_dgZJuz#Pw%RގqiD{|R^:72͈/՘vdOӑvZbg(lH	COCj)уN>?jVGYu˖Gyqrm=
+l-lxQoJa\^t\o/⧜nj_G2^C➍3_Փŝ_oveZ
+mjY,CeSGƄdkiKx )IwFZJRލ7:hJ/;GzV15'`$oqM~dT1GsP
+HkxW'&kkrRw	*#4X+<nl_]ST]o8`g˔ZpʒsdT'&gyīu]ԍolT*hmD#Nү.$.-'?.#&~J5X\l}i%}#2GJ=N6I֋/]>Ek/PVhNej"    IDATֻ-Sg*Ӓ͖jo\}<wΏ(T(y2>?RܴK
+(t/wx4Ϫ+jx  hm#i:=aoX~|[Lb./R6x^+fDztCHj8͔u]-!l^]f-!/"4mV%<W_mCYfeјp N]1=EX!(G`	<+U`|`ԅL(Ǩ
+apc
+KwaaG \X]4gRh	U2T%@g/V*P!|T)F!F
+<8k h	DwuGrmZZMGƧFtSI*l,Ι']BTGA]@̡ZnjY]M_!){ǃ; gKy+ӮmYbcCJU?,Z^ gfl>"A u۩LоsXl=W;8!#$e5%̧zl0'iZ^$t<s#Y,²BM!Fli\8dR6XI[&$.xܯbJ_ʴ8;'Lsvc,+ZFoUKbVLX&Rc()uM2lT\66?ɋ]'H9Qif9]?JپäxY^>P :w1[ wP2 26֟ҡu!w^6LVЮⰣ4¶gc[ΰe;Cl5	4OpJTolI$|GW1eXя;yOMʉRuܡLˀ
+Z0B;V<
+J6!Cj[9f[e-nuΐ"Qaj-F2N4%i./"Z|2ƆTXܞUlc Zǽ)[ݱs{Z]tֳ %؉-ߍ+q/%ecK5ASF7JJrF
+eERt,W>~;V	Ji?1-G~XLBQԚs;#AgjKTZ
+cNreIy#mCE\u)
+݈x4ox?K mFTOsر~|N8po7ya!'#P8;u sx&U1 ^|iP
+BQ&`ӻMAw]U68xb܅(P	]{D<j7A(S44 |5kMP (  aC	Bx2spB8.b܅P% VrVvP&p}8q?BTp~v3[gc!x|.zUՌc!ba%P0R
+Bat ψXmH#~wP?R\?N^y_6.+g/Nk\6F{U>JH_.KjIyz!/tJɊgֽ/z[^-^)r\Rkn6f#eYِV(HK8Pءں![
+=o|*}*CX^>'-}~07Ӿ:PAZA]~fmoz'ft=CIRȋ[+7Jy`=veKs(aG	TýUNm啃btun̮]~ѵZB{(1'.'
+@gU:R(kvq'傮X}NOvWaǳqڌ/Ym-}Sͽ|*SyAJ
+JOؕS/b<\H+!l*~exL)THݛh]H@91Щf.FS~2r=qV!i̺AOYJ'j1?H;u|j}3jl+QhڻexjŃ҆R
+>iA9){K=5#FйaG9]2nmW9<EsgxP@TwruNӽ!)=(^TwUsnֺ| 	#oIT2쨺}c,츱Gjo/y]3~z5}MR]voImuZZ#m萂a'ה{MuroȏԴV2}|8@7(ÜgdsqMw$F<_^wŵF nhG<L9,Ƹ""AD6I'nV`/sZ08l-(61^M F{ "D]bPo#O7pkHHp0܎i¯Po50LP4\ @1FЄ!'nB8ށ#VGHd|#aƠ9w)R|Tzez(XA)3/soV@Z
+#;poQ;[{%?z8oVz@La2R[8MJReui
+&_ZhѾtGx@F=q)՘Җ:+M<.헗՝	oG	Zs[6q͵nH^<R{#~Aդx96zs;\gzw{~rF#q=JtFzQVW))6߭ӶU3~AQ>({)I U}'Fg^-.!`9[y<#CcmTUBd7et#;mMmsO(+8@H<Q+v^9Rx qd!$tGzrʥ%#v-ps~zA;lP"&dT2b*jg'jʡ=^Z5euيڬv9 b?%zQ TO>-[/%6N׵)+=WOBm3GS|vrk+ծxnqux"Ќe NQ$Ϫ9f:wmk&`ů>8ي]mZ%Jm_SffP<oP=yE|Q	@մ|bwͱW^ph:7gm#f,Phaky َKVtWR"&}8D`]OY4;U\ еIv5-oelp!69 Pӡ*p0ZC@E!p} Xa gw1}.
+@ !\ sr:FGA̜bb!N"h!YA0X8uXmOhQae ~YgRW~֡rF (%.F.d<ʑM5 Ķ]c6OA\{(0Aln*KZP
+7R+<{3jOVs~xjk׆7zMƆ-}{c#hv
+N.mgqv0BV|f?}LMroS8f[jeuD7|j5VNy.cX79hb[)w/ԯzvg>F{nθͮtM8-uoHqBJeNEn^3(~|:*-u?8L޶4c|]If:-ncko[=Ǆ$$FcN}}s>NXjjFo7~oPzP^WSd?ߵLm;:iL,ɵ?>պVsmoRkYǿS.?!D-uL鲱MQؗ/Uz};D/5kSn/yIG(=@	鑴 mQ`]c $⫂P[ꈒ+%.Kr<S[!-Ti0=C?&-ƬqOSib :ӑG%UWvf؂	2vҘK<c=.%,rn_/V'oSiz_/̖qBv===gֻ&tSyV)l./tcS7"!iL^VG/6nxk_wi7KEs9j/Vkt#.s#!?Au`Ke<PPܟ3+,Y}y.mSO+JqlW4f:T^56tR!/"ȸzT	G㺧|{gGk?(ABPFo}Ow	֢8Dm"[5Aր?[a2(>pjpp5pT	"^(jlޏlD Bw?iE9D҅Qd/M4851D *_1 @82hl>&Bԁ\_vןך>~6f/Sx!ƃ) KsP4[_|Y'ؔ6bBk]BD{ˌim;]kliG~`ev#zrv.G댉ecdK
+>nlu D6!4KT$GݛhMmǧ#LZ&x8-֙oWPRmV&&aK:cq8^0|FFsUJF5&i눇\^QUUo墨*"IA[`@̶	1btcmmA#t6"Iɩ**W'n+[ؗgsq8֞ksEyD?]h/3K=EuۀKa/]"mX?3v6k߱yG[s(cE;\;xU$td7sKOV4
+ڀdag%p?5'2Y	mBf:ѧQķogzro& "1_}7@KIVFt*IøTkYRl@/
+C񞾅Os+4(/Q(#KMq>(gr~16n=d%csXr5%+'|_8T\J.CItZő0iܩέϣR{q3^Bu(䦦sK6HEI/ΨkݒÐRMPBX_N3jM-QqЍ;줽@lOmTn	Mmaq1@TjSB-QFcЍo208+W{ߍ3r][kO^ۻڡl5m{E-wRé:7'or(cd<&/^c #=aQAHTEhN!,0}AQ[;@8|C+D,!h2*PF	D|nh^2ADY`4㨭Dbt IiZ	d}T}X EAPD1 b0Fë hB1``J6Q@6\8:eNvבEsZR{[nR$JlP1к7Tj{t&$B:6Pjk<|ipU}0{y3<m6~ɊΏJa\\/bz)jjb; ؿn{?mlMha%~zrޣm/g+l)d}atH@kLp Һ[N50Ǯ|2մHa{jgr]i*OFH ݟgqR7 r۾(rm*֦蠟\gKG雦.)=붬<ŦPY&޲ǔnj]SKrS%TMRO1WZ͔ă-qa|(}d.Yy՝PxŶQmr25C;EW?[7'#Bz܀a5ϋ	W=H\_@{A2[p%BWbźzWHu߆4h+@[Yc~+M]2'jzE1>ZޔuѓnHa$6cBOlgJXNo1y!RZȟjW<4SˀˣFRB2nm'?j=Zv>8΢\Ok\XgqNIGh>3jYK߾πPR&rvueJ7<ܢ}mo(
+PW@$Ne$)dPW	5l<*h\t#S+ί) Dm/!\eHB*r,B7-dWoKʣ9+]o<OmOH4`٪o}hR]"@dXyd D!Gkd46u@(	vN( "b;A&h GX~dSȇ^hA@`6y5KP%3(S!Pv!c(w 4AmpehZP	fA $&sAs"y:qDÖu c]mJ<%irysa48CeɊ3&G3q*B
+FT|pieyq1gqB?U5EJwCn!mU\c= )öW^**Rgj;U8:ҟuvڶHGlNڜʡu\:`0'&VQRtU>m71RYlO"N--пfSqfѨ\i[Go7߿{ou[LJb2zuoNӋJRoq>ytc+9rgk'VũRlW__p87H,}:֜qk\j~zoO=R. 
+ ;iv뤞[O/	?M/?پ]iRJyg;n̦skaΊnt<n^>o'{[w޵}d.)bo@	$K`?_V=\Q~r*[ΚT/.XZdWY}*5kҸ.VyOhD4nj0XCY5p|!JHQPpb,TCj	Pkʻ#UX:bC|]ϪYۗq#qV;!r3ͺD&<ZL'.ʣ|kD
+JR^<T˛Ǻ[*{ɛK3~3Z]=tnp)TVQ.Ko5,^Pԓ.ߗʵuoRZ|G)i3ZV}08Skm6o^6p:*!M?]JbT2`[ [,tKVk.hdzb=}dUZ:=g=ɹa4{rʐ$ a0p*."@އ]Aed>(Cu=>l$ak'(-;
+<HV]Q50v
+ *A>xu$	leJhpC-0#Q'\qX.F@p,KB뎗4g*AʠHm! cXtau>;nZk8gm lQYU[i~j'BϺ4@̵    IDAT~?}IQZWH]z_P9*>_睊}zۉ(h&,`s5k"9۶hXXՕ 	qި<c{<>ݛB+=i5r}&jWG雴|=nܢ|F5şř(}ܢ {A8QRj%5M;o!0y,ܼ<-.'+wa;Qf%[ř8=G7*ũ}(gz_LmF!766%@QSe#[
+q|offBusНuO/}]#fQZt!ŰxfJW[G!ǘRi38QM*pa׬S:;rgΣVISS(о4+Qy!lQ8KrUߕ^xWm-Py_ֺ5lcQy:}T36j
+Z=,[llZs.ߕՌ8l:J\<T)JDG˩n73kڄڴqx6Cz|kZn(LE1:*R:,OޕմwLgDMXn]sȦH'Ks=ѿ|Wķ䦩kC߾M)evzųTKfX==ms|3"#51f=T_m)WD_'qUT'rُ):7ui4bŰv(PFAg7&v8D
+nyՈo
+ρY"o0²Ň֑;1DSp(:DځSJ2$!͍ȖP[^xX>F@*SȺPE4  cpBdphE0],d EBu0VEa0PiaԱ\_sa,UvZAXcoM#x ַj,Bl|7MWsvGQJ1V{kh!W陁a|c=F鰟AOZIva	JBZt){qo8;?zU<"́0z&RX |ڸ0ӾCEw(f&<*<6\*NؾTkhA~^217(mͳWbrE~'h]]Xr>o_d,;gR%opfz}8"^ܬ].FWVURQ[rk\R̳Un^7Olȶ]ZM*-f,OwŹ}18|V+=67ּ\3Bl DׂrSAB,ԆvZON|龝g'l=/M'q;(}Mջ:,ģ(񏔡%O;O_^/ZÏ0\QcH2|Iu"c%{F1NˈWI=6#5&v8!Ӝ#Dq"ۄyGP%rŢrG\艑l,ZFi\!,H֞Ot˾c8CӪu2m\|N,u>FGQ"{cl?1_d)?=QnrcTlɥ)Iytӻf>y+Z9tIFZXs6-6IwP][՞}[7̦{O֝ZW[<-t~~~ϷvS'35W΍49/D$NpNvz)M۴חV_r(tBCt?+'_'-ZcNׇ%7\	"롾FAf1+ 7nBI=x?{<y~`jWK0e	jAD%hi|p?ڇn@e<'?-aaΣY,m_CrznP,`" 6UB}Zۚ,	aqaJv6Xc:K8w}KY6	BPΟRyn-RZWm(}c߉>lTQ.)q~ß&(Jog/$[BZ4;:ũ!dCM>tGKe)MR٣#$ɉ)羨h<R.pnt|NǺ//O[zec=L_ۮqrJFp_q,Ο(S	)ۣu;R:Pz|]{1^ҁk8rV9J\[|:;Aǹc]Ѭ^$0ͭ)1Wan8KZ7z;["BrzȱrMJd{8ww5OЬ8b;/,tܟq'^"gK|3w Mg'Yb{Ju8dֿgnG$HlSΓG8k	pt S]M 
+kޛ[ˏW=Os2ƂSS4L*leƉ)HDP.gS"]	%<ox\BqژsO!e[\(N-4#6v`ߜG_SN{J7䝭3_ۼ}<gVOt#˂o3]m1}&禊{}ZȈ"tk/K*.O?:Q}㇎m1Z>ez2q`$zreYt^qV`ݻ^:|y:,++5x&CN)[o=R~vzҢQy\ʿJS:^}Θ|b
+q!EN1>oѳ[lO;6FBg/&X.1#wP`.Oua2pbPZbdU#> 66٨,?Vː-C=_:2 {ƀ`>P&S$8Uw:	^m#p#H50tPH1GsDu	e`l@(9fmu}LO7v_ZRUApK>rm=h@+ǖh?η֟\8gsqة,#HDH1H$_Z\W#b>G;.G1K86M"2BC%	EbE@9#UDČ{GVV>X6R`x+¯jcUѻ饅<|c˖FWD{?.ĉJuw;_(igq饯IJON7cZFٱYmӜ&$m~-N٘0mVzlw,;))B]<L/N_!Պ\<~S/(0ƗjTM\5{GGݹxT\xŷ"DN),-Q|PwJ|JbRr8{r1N!7.튓J=@C*JØ"R]bٰs+w˶9ѩjs"mu!&M(Mҕe9W!i,Fr%IʻIb@{̈5M6t@gr}~hV?B1㘵H2[
+5kюI!֝ԼڴDGų-6hR =^~ }c*׌WX8/12$D,WKNz8B^K+xߣ9cDeJƸY:y+/	٬\Y~LI8R̈́Ƽ32/RzfX۹jxWMƐ<QqMdWXpu~zIZ]`B<]پT4/Z#l=cQJp		
+c0"#BOo=]Sg !~
+|!
+jP3 ǡJP[j>X5vT(T(:91Z(|"="B*2V٨ oFcdo)P
+
+!D7*$AeH:`c!AGcPPHz,& T B+,F)Vo֦buw"\~u~g +S2tqbڢ<$/.#//+,;9Qn*wnՂ/΍BMܙ,$%B2Sj|q~PŪNdG.%>֢M06ݙa%Qwz̦Q]bq^[L`Z}מnf鷺֟Ó`VqJJ\E%8Nvs
+qT$}1RAe:#`tk.u_ŷRK]իڕPO0'RsPgE].Qn׾צt}^Ϻ¢;]ѧjw&گl?x2T2|҅]O͹HL Y~i&rCr(5`;@WpkўD?REH|6IRT6[E_ez1Ѭ+	$F,A[	{He&nm0 ׾.Jh0ٽ?{KU5Drǟ\[<OWX[S՚K_bmm}^WZ"qJ/}3{6.%i.i\HMHX}#yVnNI`R<׵8䝵KQ%CFsFSm<WS~ZE6[訐C<XwYrrK?Ϸ{\wwĪ{}v#qTH^ۿmWQrzהPF6#1@V_~¡Y*7Dss]{ɻJ-/Empz=XD:Sy<E8!(@f >xo4qzrX>9cL=!!X`8E4Cm-F;a7Q[|d`U/*T
+jZaHe>y8uȖ!F@*>Gۀ[Au%$P̆(`ZAK-GgΑ'HpB61'blnٶ5ZZz?Ii9gl>SY~T+5+L~R,#ôxŷFj^]Df`V'֔{˄s/:ظD
+cweEA"5v2A@1iؘcX+,vC5;{hr^Nz<&-O"Ц8wwũs-irsݞ}kR</INop|_ԬkULZmmȲV0cρ7c0*Ӷx'^~*ϛ3,F)/l8ۘ IS0S{RӎpQ*B޶?.ʣ}vެ]Gd*[n16̪wM(j%1M	8qZI׹u6M?Vgj&t~ٷ9q.7]776Ƿ/qvo=*NOVƭޒg`"/304ECG=s^LقMX{j/׾kEzq{+A_r.Rl*^f|)Q<ֺ'iZj<5@YR;JmlP"cgﱁCGImߟ\gdʿnxao&2m߰+-\55<be@2RȵR7n[tGUO;mwL~[qΙ;;s'ju#R7JyE}S&5\?.jW>MGZU
+y7$f]o_Ao-*QW4/HQL^GrE*8k}'+c
+5r~HRY!70B[ZG ~VCC1	UQD"ZB{3*=7"\Q]BD;hlA܅ cCD=BOӀSzd
+^i(h ڋ汰j%dfr;QYbbl*@-e|P쎣05``p{Π0q8ZA8FKhC
+	Gu
+z"9.ARh!M-A+|.K$B@{'J"'& Fa~,+T*?uϋg5q<|} 𮍲 f)j׺nT4J_c5mɁ8>l&ei, Caq?eKjMc;jI2yv&.6HО|bwD%۝gl۾mIZۿ$Rj:wOv{UJMւO)5AH*$qs-8cc;جK!E}śx<F.uϵgrc]?B3LJi7_lmJF"J[d8V$aŽ^`\f@~B,YU}g=dzZQqN3Rlx38$^c}:M/(l'D0 3c33	/R)߀Գmy)qRU0RnIu\+zʠT.H@9-VT``WP`DZ.Miڬ ǣ}E6ͤ2]?Gq?T0;9!Zȟݹ`XI=2UNcm|N#d$zl[զ4
+*;ɱv{Z.q˳foPʈ:_Ju6aY'{9̄u. ҳb)u{Lc};%b1W^c=0^]~:YםejrorJ=MT36zu-0p2
+_8a)'|FcϻqvrU3 `4:iITWC:G| #FFY<#\GVx0ݛ R݄Us1x<;@FvG-8B (F0 s;upVt	˃(s5U0Vvb@ ^}
+C	J¯AdHy)@9%6 @KxeN=Z8Ar8EfGǾ{k}ٵʊ*59K*aDj-Pz ˘*g{F饥]Reiԝ?R"	2݌!Q5>L״w
+]o8xl $úM!7DB6|ui.7Zw+'y(?w2`Our|U9sາ\[m~[YP5׹[OQ22jO
+qSir(ƴb#>Ө|$_Dmͳq4{ʒ_>!Q{lѮm?YK=?sIl!W>:CHSZM,%l_ų	6'	WŹDwjhEy]!ʴ,n?[,(A5_^+t?Mw}    IDAT/#LwU{J62&FɽIe\NlN(,]"CB	^h?dH9eۖF5c˃ʍhJ6<6Q߳'f(UmFTivh&M+Bp, p p2?[w;-qyJT/KZl.*]x8#UV׺g_.&#}gŽfǅ<,p~¸e/1f/{WXnn͎dX6[L#gIГvϾm_T-:oROhSզ:_t`1^L#jc*Z3S8pgl3b![>~|^Y9t)/oTk{Y4*;E\dH00qS,ැcGD9壶2F4 F©îc4.n:?H_h	 <(#=ht7}<IxZ%̞lS#c8=(3x8-{pe
+ .cPd
+1<].2cP$߀ "JAgKoiNn_|'EKێÆlwuGyZeNxԪ/8<_x?ŗP
+2XFLarX0V'}{aLP|k"N=mZ :_*NjM\bUi<PL'q,BqVWH]MHaEIӄZ9:;_'p2f<0O 8}mUZ"ݦ
+N!$N+HH:ZF;8Dg+~ugcY~n{ǌܣdu9ۏ>T|?Va['qW액}Ͻ,pJTI6Iw$bd._X=!Oj5K,;ٶضї[WiҦQsϭ?D[lq|R*Պ8ӶiS篴ٮ<*W]둧!Vij<eԴ8?/yӿ
+ݏt>ˆFqo+l`Ykn 5#m2;^)Ma#LT-$&1":PAsmK##Bdnd)4)+3<U_u[?ܴf:4`Se"%JSFV&rKlGfVVۄ&o=2a8G
+5SꙤ<a20}]g-ZT/}kᓵKn[KIQBL/NrCŻN |OưAOdZv~)2FڛɻZnӞrmv\EHx]`tPKFȍyaRng(]o׿ .!y^n;z)MK3շKؼ)n'cXrR؎d6d-!td Ub͡ dĆLFPuh?Vv3C9u:<#r ] = !X#݅;@m{A-0y
+4C́塲bB܌bUr0`/^f(F."AD RHx?F6",J$}c#ZDs`zjm3)Fy@R<Fԋ(!}ȏ,RTOi.Aw͞hQŹLyygUqBcX~w\nR89Kp:iTeL_V<MQ/͘S\ꦆ%;=ȪK
+OTݟ4^fw5>^?|G&NimҨ|XG+!sԓ33QjGwRrܢkMN|_8QTr{Ϡͪ2mZi罟siU@uT8 Ψ3 :0f1QPrNB7ZAשSsΜWV}_MZg޻]mBSS)l;^Yj`?eSʲj<14=ͱna؉VMo0)m|~rnivciq,㋌}Sqȥ~uG˥yR=!i^85$ixԵnRl&_<<k}wGr÷N%%[.='(DĔvƃ8ƝzzaͿ+W6Lkg \1=Ω_Fu>"ab>_Q|e4J3V-wclC$f	TyK}5&	%ZTVhR@{:gCPBd{x&.קr¢1QDO^)RXlJ
+?NDuU1`6V7ƣ TJX.נR{6˷ʧtSR,G(YA_lOGQOaKjOYw*}+*?'NRLr'툇2J=iq'I8Ri2;0ŉW9esTC@im˫oWqSн
+r=820YǸ7-7|KVntf$@Rm}W|RdWE~e(`pP%&( wAPUL =xM
+T@ކ1k` ~&OP
+P) Z^`#Cxw̅QEC5ێf-Z¬#X#17qN!'@9L@"P<P#j@{rf`yBec.j)UVQࠁw, i$+r%|g^n H{xչ'GoNҗK9t`G/[|aƠYzq6aJQ*PArMINHӁ15He&.c6qcݸlmx)'Ih7L _
+F[QzKKKra΅w._Zx x pCp"GhCø>&%y֬]XUZSǝˍ I_EH^:Nss2앭ų5L!	I0cyϹ05W0zfuOkY洗^'@l뗹deqwl;:?glu_0߸`񀒆)ˋë}`׌pNL\4"͏WkշPRR[ RNiy08|0Q^E_/:Iu(3%"ĬvT	ФA|A@d`ܶdR-smrH5"R
+;r(՚\۹6]}&[}|z'ExTIxd bX"HL!zKlOFln3A6j"WӾAqXY^RUVĞQKᕜt|\歂86v|CIO&ը!r=%#'Dk-XǼOJz׸}@VcޱMռkO9WϗŦ$e'l8!DQPǼS&!vZ7[k\wU5RqM,|{+jo0a-DK܀ <pme(3 Y
+h
+EZB%q,TEn0T {%1pFӠԴGG9 s@	AKX0}X#HPcf@PFu!%MupaT`P=AqVCd2~ȁ[ĝ2,g<}!9g}!twqۅx~0 fJ"GkO:֭EyTc}0{uG(L#\/o[ԿNy{)7)-IF7H*@K*T >c 2LZ8|0*6Y|oY\:׺IzaC<s۲ń0oDk(G'l%G*;,,Ӫng $)ideZ#O|gp0iCtPIW&7qayIC?+SavY.k6>^6/qmm-*5*6%~\JDT:HW3JaxxoMm3k&<z`$}%і;JȆ)sZ/[A%Op?-P8pńqvvɭ8|}dbQm/%0M7)7K"L0Y?}GA8S/W"Xŉnt|KE@R=bɦbjtSiZ蒁e:訝1>W(&#&ќ*RVzCYx;L3&uNv*smr%'ð\}Ĵ˷V*%YqN+yǟKQ+E7d{erx]a~gܑdrTk{5PȩRW*-dqqş=(\δ8B#]	ǼMkc)w.Wjd#،φS#wܜmT=@wiBikpuWE}ܽTWqJ}NHIϚ>mdiphuRWYƽ$o9i0|OVK9ZȵucsbKBMbV0|,Z86e
+΢y&COAsx"څW"~&>6*@>? 2x7ꇣKA1!F0
+4{4)t`ňC QA1@Gp@_N(S1h 3!sP2~iBw	o2`s:Xo[v[RT[ֱ~H)DYn	"NZj'oix5za=V-F8y}?y3\Mn׺^I]߸g!94hXk%!.Mb
+BK})pN2&r@׭_r122\1vBq7%9;_lsKV2(r$apxKx0at:T*e`X px(%U{:@k2OI `)##O$5&:w0%tk<#4LP v
+E[[yq!0~%:@Qt~!V+(+|}8)^l-8{.n88Ek}5iwg)x,J!$e4_f/l~֭xQ~
+AᚿeT@i/PzJ{yqh(:79T;G&Qй>->:PZp0 ]I&DZRKP)h!#lܘdY|AF|C"Ju*4$JҤUzý&
+|1=D GVgL՛\ʳ\\h:%rcrA[{·ҳoS5v8Rzant~M_;]>_f8OJA
+fATJ.7*0BnIUIqqʵM#o'D;.UcIRBNzZ[?9]Z?6HϷgyeNg-hJGǾl!5 6]d>al4~j_'ujQ:B}=Es5SӼ;p%tYG6tơ 2Cm CqԎD);w"[ a80Fr%_"PF0Ga( #0yvx+&௅@96ekv"؀hf$[,|*d]Ԏ8LCH0<0",Q]U'p9MiШM$C>Š$l'%: F[IJ,EЄ!gّYvi'o`l@H,d^\]v1i=^LO>JTWߔavɟ8H5ciyhkmG<NIGWĎD:)JUZ[KgluyOw՝os$٩->\w%_k_& Fܱe	t`E
+J,Ac9A{0JIܖXv$S9b_u0 !@{(Zmt%-i<)@kN0zVʭl /fv4KӂmNg8K0aVaRMX⁸8Ye!ʝyɶ0ѱ/(u}|uSQnډ9ۻ}~wiqv2o$$fC<떪}^M_L?'&Fy*-n0KKe1ΧgԦK]pBPGJ+ƌ-MFzk>b<,HJ|+H`GN*G-ݲZ{32[9'Cњ^pڰ~(31h^(|oȐj$Sݜ.Eŋzk?1xC}RnF:VtLc3{^+(\&nTޯQnrbӴRr*W{fi--Ь]_pS(yӈv iq|afӸ<\i6پzߕ)v	I	WAA3B<^jf_/o;.fz3/2QDHx(R
+gB-5-.r,Apl=o=y4NC́ 1A]2 {%*/4U4t` e톖6!m!8:XUHfQ?@A ]d=h;P;4!ᠲdBQ
+y*w!T0XB0r1XB	&` R2H&){UPk<j[vOurcNճB<1UŸ<t܍ZI~z^Q?<?*~^?۳4®836CjvjTXHg&yexأ~hL9+=DBN,,S7&KbjOE˧+L"ؔ> . .12av}0zk#/7h,anW>*˱<EéataÆ0{62jE_h7oKcؼ3$*9h4ilyXw 4i: I5wTdfKwȃB<QH㖯*OW&J Fu͝m{U$}I&s a_kc̯<̶?f'8avXIyH7~'-;1-WD1LxAnE?LAĢEBd"}8= t9"g}ck%L6SB ,əGbOA(hǳ]˭u(D	OZdmG:9i=i(dᑠH6Kͤx9i[hQ77-(@w|Hibru&'m C |{u<]E	3fRJ;FA"{UhYJBKzf.l\-DB׺@juWKSvd|fMmӚe&Fο8R)m8ΏFW+m5h,=d{vZ&;wim(__h!W8Ν ͊cFGK<HiZ^e#|)knDs- 4pdӇm7    IDATpA9*0 Шw 1(hc!>sAbא`>/AZz"a= uZA{9 @#ocnTc8*@Bw!3 3P߄hDe5zL`zyM@cc7V@	1(h]EoBЈC(` $0+]o{{֖%rn;CH໵
+['ł.q:_?UnwLU/ݯtW]Zqnq!GڠqtS* roPɨG)=r-'ϏY4;_
+?al~+a\ .Q>Ue~8	t` hۨ6J
+LL}2&>Bs*ͅ$yaQQEP+]5 `a;ZUPM)Goh|PfjJƚ.}.dr8I_a	۝	Q͞+:8m?hr~++W<eݿ&-at{!D"ޛ?P5F>MH~Bg"+Yvl?=,!o1o`{A ]^ߓ~ c'yQV#h:s3E91zzIwԮivTO&yPh4uQ^jRh9"ڻsPؤZ'KC c84S@V"J/3wFAhUe21԰1WNwKʯ?],Hv6;}~H}cZ'(I*-TjG/;bI_>b_{e+f[<\1F'v~m6%0?O6*jm٬T#RULm'($?PjYV?y%yƢ#b3˸GRNQ =?KHdzJbqo)5~AS<DHenQDHnwiV7V @6@c3`5!STC (x ʑ!꨼:C V"
+	Gp89́1h;e2x!P9EZP)cx u0H=TJ1x2L,p_!YDBp&nb8B/C nEt@(\
+r?BMTWZC+Q#qh6Ƴ2Gwi绊b>Glj@!~\$N|KOiqܿKgg"gYMKYyh!8hҿ+M)tఝaѤv2ӲX}YIuS]{;
++vsS9^|I!o4{v+۵5wxP}ܰ8VP
+Y"K@
+vy`lZ!k@-<?4!PGk_7],=2ơ50m 5Br#h-NI44°.Nj6zspC<Q$MHPӭ_.߻Q9!I^n&(Ln1Ͼ2oϲS09tͷob5޼(7aMCJ=\oi~~kݔ-qO/z.W9Dln&P>vq;_zg7	AXh)/ZDMKjGPiIRHHML+-[qcNjɪ㬩thQsQݟ/6UH+2jsavp `%XKCF$M#6'!z&yT#unR[!+<?)gn/~W/}-#5vZxHig>+Iq`sRN1Xn&5ʢXesyşi[]7/ZF
+9amRU-RsǗ٫\׸n\'~o`OL5O,tV?NHl$gkޕdu[)WÝ}axT#jEmG)Wr:oNW=.@}<`vGN 3P{	@lB(04Tc@ZC
+sd"݋lz<[0h*Cم = [BT0܉P%Tj C4gVJU6!Sd}X0p" +QDC+yð@	Qd"v︖KJP{}0%(6+8~ BtQGy>]/:_!Qzopssэ!خ8b =5IvͥjbܹDZWH4_;JpvB0ÔD#7=VDyqZ`z	4زǣVF&Oé58c PitQ$ L@kc8@^k d8)	$UupTÈCҡeמo[锢Z)%j'IT!DU׽|mGGj!iԿTO+{=kyla{*9&dng8iwYvv}g#Jҷ&*U?昿^~6ot>ݍ)xJZxR`ǧ.3cv.DB4әG 4ԸʄIHU'TJ;UF*ZQhs TSAL2Ri <ΔWe矡i"X4;ʣTىtlֱs$ɪ֏29]|v^n:,6io19_iGjik݅wp͟+JLnœB
+Ԃ&{NY:+A&ݸIw˃|ϸTYq\Q,IU$l[	h>\? r1? P|[]oWűuSYߙ({%T.C+]RMi3,CzlHaӸȥ{)' h^|(+V"BKu#Ll3b	2DFB?h**GQ?2 $p6 
+=TBF9*9	cqBnLAͣJ.@9* Ѐ5^vTq8H'A8kQ("cP:
+6
+)N@4dJw`AuVuP
+E=![Qo\W+׽KI.,Qzw*e;R9bfq_?zT0}](}]ӻwg`{	 =-͠3.-ҕ1R[K|@4Z-8$7_{%0~\0yCQl7{T}Eh\!ꣷ 7@{ 0~}"iA̓	pN(J0ŵL2@8Vd2E@#V^[t[3P _@m4%#(cZ6Z 5Fo^4;]4F"E 㷥i3pu{k.rv^=N.I"?ggJdK`!6Lޤt0Z0Lۻ|3/fEHOΏuY"a~RZ;L_Չ.X?Y(W4Qȵn{Y녢?rgQ!333g:c<ϛ|;j[Ӷmy晻w?lB&]̧JFzU{lB("UUЉXeδˮ,mwԮ+JA.8)"ER9L'/51/{K[s ņHY_V+bUj{XnjX~trѠ8dh7;c.=Si9^mg5bRnC\Փ$NzZRM^nmI^wk8zUuP42vGwD,а8\_,!t|TB.gl&-H+9&uPʕuS+8/7UܫgJ{B<W+Ⱒ8$OVJ_'~|}o<q(~3KB<mGMwU.0vAyB՚ɛda.B2ED(#tۄ| Ih]B@(KOBHw#8<@t?d/?܇C/;
+]%oD"ҽ	 !{FjC9DG]CDA9,(B]`P?Fq;^Cc'(S1BAY1b:0mdPn`J!7WGaDf袙?jD<}DiGk[R R7մzA~R\Mia~d@KqL5(;[?&
+mL;8!j]Ug.߽qmp^s`G};eY*5$^擦+apM!L4&7#Oa8PVnrC0?2	ZĶ}w#Pm̔9&{~aAc',
+B0Zd	)Vs:@sg`;Y]} T~Fiv1ۼ#L+izԧ,"alm?!DKi񉫋rWtK5bVpY}{(q)WmxqZf[tJUl˷Wq~t㥶q88>imJ|za^n&.Nl`OlPˋnE'te]7p뭷^s5~\|'>+{Z}R'(ؑ`v%k&[[zDXw+|
+Z=Itu
+2=)_y(Ұ(!PrlAcNtt68w"8W8|c3eӳ\2}..=aqDU[2Y,//y,avFg(!&+Kd}j֯8n"aZj
+]yo<Gk7ş,d,c=5?'ƽWLRK5JP|o5z{	^W-<;*7.fqZ%![4!
+zh[	WP+@@F6b0p?h'
+Fs6x^u`&V%AZlx0f}7.dP9c)glì]c pV k
+BхʠQ9t?hQ`T-!A[Lfe@Â3
+ޣ6`7`W l!d2pvB܅*V lp2ceR 7Z8Z§<_o͋gOao^طy~oOn\4;%-m$olWmŷh-
+:w+)7޹79}̘ٕpBBe;DT(ʱ
++Fߓf^7nM޳n7# ov160LC$}( Pl
+cHPˇ@XyE;Le<9vayѠ:!Hz  E °_#>`e0m|ԩ#O16v(<g_A(,kݴ	};dQxֈ* D_DHG<pNL_!걵^;Ϗ׎U9)Mea)un׿fX7P4EDQrRܤtg/0z@o]|5dYF[ig$CT?1o߾O~;/C۶>N8ke˖=_J}:
+1B
+-a
+4Hz=E1ꋲ]ˀ3!0[h8 FRQc|z|n.[7K>4$[39Vh4UU	#P+[rC*荜Ⱥp';Ԍ%H6b߸k_kR՛'ƨyW\uP57ٳ@.unVnT0)rͲIҼߜ\KER{ČU:S>@W+ǚ߶W1QW[@
+4*Z[$?ujR6_-\^nj,z|{mt8)5T{+=8=^fZ)B8	h0a!O L.^l  P9{@8G!}0
+4"s8G!y
+މ1Ys 8ބAe A0H@Fp@F?]0*A(dg=g_x/65
+sP S HѓL 3˱ p4z7DwE#B/E,AuRB e4DY<O@<y,Ұ]vv"$	kۃ8mIU7jVvR7+۹EL2*U)HX	@e+kҺPc|}	P`"8Mj:J8]'$,?!LwmWY.̲z};=$'$9i$&!@ƀQn@ET(W)^ҤJ!@B	䤜^{Y~ß!?/:cwͱZ{1>D,TR}G] <p58FRmūBkE
+ *DP<E؄x c! 51蠱&ah>LJ(@x%()<%,r0O+u9QGq1Vo[ߚ^J[`kByqB4}R
+5:S&U2C=w8RK[+s>5_j],vwf5cHz/UOǸ[
+5׎_TfSf~?;<<۶,۳g^'333۷o{.@ a(tJM[K!b#Up~#I%Z:)bUj81>2$`ȁJR$'Nt@B+Jd+;[6-*ӕEW4DtҫCJH^PQ~aJq|8QYFBl3h/$k~g,Nu
+EFHщ~/WuG2->l~~^`E_z3ŹIk[Nnvq6[\(wimi0g[ߌg)U"$&$^_1v(Ξ}?!Nٗ)pgΒrշ9{W9~zO0A`G Ѱ&|>V@1(GA5 ("`~Z"9 Crtj$4FI b1 '@AHEs0&?w;z V/Cv n49A+G+ FG%*& 3hB/q!x f	4d]@ڃH`W@z1yd#z(o 2GtJ
+0"@ju`aJz[~ȶxxEI'$Zk}^ؖWJ}yJ<@GB:옆Bl7*%m͞L qZ[8}J    IDATLb&&ThdksV~[F2j"G04!%F(cvd-!P{"፨;08.@yV	I0-d1h<AAI?\魡68ӌӏ-j'b`ʴ cyTtuO<5,/P
+XѲ(N_;ҨazEZ#K
+v?ޏh-(.qQƿ'a>]Y5症͔vsƃJBMh0߸5+g	Vf;?/j4Moz+^At:RFWOk,9ip3֝5y$a@&	67Rk۬ίH1u٘>3
+:ju$*\ӱ^Y')5.t-6Z:Tr lvͼ?UFATP(Kf`rhB[){qqǆ/]JWk&a_*Tbǒbv&3鵹32.8PB9eDl-_Ox>|}&g
+5=feps!7s_fW3|cO"7_YH|2q^ZYT)lQQUگ~?ɞ6C˸
+C'_m?S
+cߎ_T?M'{]e8k<@oDFT&5FL~	7r4/LcJh	`D4JC@$=F4&KR!P09Bs(׷u6	T,h2wBKHN _=UԂ
+b(*	 ZdH cP; Pݹ^&8PwՑ>
+o@+a:m@bЂEx,+!wO}4*UUޚ)[͋Sua=;x9G}yg?~y&r9~TJgіAbJzY_
+h\YQPD5ɤq~)gkͫ-nJz45aJ7aZd(Oðu0n~	-)alA([p |0q*ø)]Է[h:XڋJ1XpRrY4֕	B@(+aGnlNxث6lHaR4	8:8yU~AoZf)i7i~i0ޙW]$_`;˜-Uyߑ GRg0ګW^mgϜ=GkKo=X[<S
+N'i8m-O/*gq.ϖշHTyЎCHt,n;	w8Љ
+8kd{%:H@MtԒjLv뵣Rpry{da_%@by2NyM0}<=ףqh7̃R3Fę}{<z!*ׁWb}{?)UTNKJN5Q	!]|K3
+{\vbG*ԁA;;)yߑ)z]0DlX 2eI?5J/%$+Tw>Ur!Rسc}侯aG%Rru3<'?Ym=_ߋFg%)܀ƿ+c**C<t
+\_Vj֚w47#LF>Dn!B`'/Cv2B x	s/XBx San	*F\*cF889Bt/S0޹BA8d]wк	D[@Mx(#==6 8smHaװzL1\SC0yDG=fP$=	d' X|Ih$[`X#kk]l9!lޓ~(Uu|RkMLFV.bk`C!痷-%;-&?Pʱ{M8Y^~I񬡴"@M[P30w6wO(G	yn01\FiGx	@@0<y<4`y- ~	f/Wb|#h^PB1D=hǉDP!P~vw ,=Y)1hAI3}M;!z|~{.-GTea.)g9[lq4~AյםXűn{%C)dبp̷?zL9I@^<=j-ϼ`>ǌgRATnv޻;1k$PN[<oJͲ9yNzi jcjVl6_}IQdʊ+viD@
+dRRGd`&+7VS^9HC&D2˧v)T	-x<eC84z9I	*K:E%dCFHN{_0理ph1evزǺy[ܫT]1.v?jyoPFwE(|5~8~@UBcqz͹Br#!#׸on.̵??$\'z}]1r+i~R.}!I!6?Wug 2<E]R+>%eBy	A\﹟jNϴ2bj@%K9d	Z+Z@kwê%eԟsަujqɠ6tTj#;
+T1k#YT:C]u1_A`Ug.P,@WkpPh#B!G/Py
+@D" fAp `v}X*yb #DYV.|p0}lM Bu̀&r5)]r.'fȲ5(m7KJ8/W1JƳSQrGHJ$DL?lf'gOr~ rzaaqAOh-dɥ聘|l>_εr*9kQd/R2ְ|zY-ĩ6-<p#0m0 ,y|`88B+`bd#1 ZHϯ76aH)+(jBI	L܈Du;#8mw	IHa+RbfG%nb4zgpc/J/S:RXFMsP*T
+oNQ7)jI<oc{L9 }!79z?F[v44ʮYnTV'E߭{9?aֽzTF#[OgߌHsv}A3T/%ΰ}5  ۤvpBj,!`R*mDnC֗J"<d|f2#ȡM"4T4R!7ZPLe/Έ%+!#Ij'Kuyy8<|6Ə,ΕmK͎(DΕvf?_^m{s]mg}fJ&o#Qvu!<i%&?;5Te}$3IReBQvmnzϼR~[\%#q|}+zNKU/D^!1ZU{]&0M6^4:ʑ1W][D 	$D"&/QJ^c
+	!]07@Y$مu
+`52v@'  $?sD=8g7<%gH"_{/@0' z0Ȗ0>P,dQ;0ڏ9H!:$1>w<or 4`M 22VSB`z 8,Jb܇`GmCX6:R/!ڽ	ߑ'5tGGggy!ow/>U*N/$ŹQalSfOFj,4f,JG"7<4[=J_`
+BMx56Lh	'm2]F1y0j8Y5Pp[G8&@[%8U!hBk1D<j Z`Ÿ#Cpʰ8xᅅS3waX=#(?ZqhR!7iz=D7O!D3/Ω5nc?^k? ց"b{)|-cC)yu{{W97,*ۖ_һ%t>V
+?Uj轷;zo
+M)!'3qz[-FoW[3Sk÷]J(9Z_}.uK-쟆H;/Es =؞={(Z_wu<ÇٳgϞ=yxի^|ă>xΝW\qſbIc?5VC^hNY#FE>p+ΈV30Ej{6*>*mw;˲@"đ;eD6lhB&$j%f"֏ڣDmBNZ '9d4˔mA\5,:e"$3jKS|7@:+
+5?{5j}dGl/Pr9]Ӛ?0r*N	ӥgY]VGd+dUͦ %0x{;=蕜<ٶo@HQ
+%@9L3Я!M4]A(G/)L/CkH`{y=o0A}xA MU Ch!	ѝ  ?< u*HBtc*`"_D8;@(T
+bW0َ耹(F?о-P́G p`0>_@y&須LMd1D!K0X!t^]JH l7&ʿs~RP:O"~|]RU4,|q~Q.IF4B0RFcY1HQ6,2-ҧ4dEFmS/$<o5LX-A
+Ã7jpQAi#.`IM0Ch}͠V ^@8B`8B+
+Zor5p N6@FX~ ɂ,-\@1q އփ!](
+?&M)/
++_/Ķ sp{~J/oV^}rk&|`ʒmxBnp/	9_roG۾EFɰ7ɞXn/_0!^|6od%YLfʝ[9K}Z/q6[nw]zWӹn7>1'#KL(GPw(X6C3 T^mnO\+DK=.Y
+ItPCjbGbsYӼo1a-B|:`EL
+D*`-Er^h޴~HIo|Ae%5cjش-t@ ǲ*5x$5Jkmq%.j5k|QU:<DAHm3kӅjւk$iBgrCp.NÙ8ӕ(B,ZTjBlU|j5ZJ([βM4{8fjqSe<T+AQ9EE:`<#(70]ӈQ(oxV %!3PZ*`UQDz @m,JO@׀@`X9G' ,*u{;/<.5+_6ȻPȖlB<[0.t
+A *xlHאP>XpEl` e9]1?0lb>Âswx E`4zn,A^^oI*QJ%;A*IȍR2w_fD$'I0'LiIUV#9wlJui_`Bm NvD>@>@>D0 2ʑG @28h?t'IX@9@ S% aPz6]	h34YtpzVD#AdphE9d)U0XB"`R@
+i]͎YFRV!iv<4iJUϋꍏ1?xd$xvIrӞ7mR9k~(S3=krI9yqNR.985/$$s9_f'ť+w/w4n?+^hxjhiM.ؤ2#Dj@Ŕp5rd!"5\RE(T/KeP,0H+ɁXk#ijHz&Q#1鱮N<XUkb|$sw&sl54ˮu>.EEP25ٱ\SxwǼ'/#MCJ{"=/EHOKLv29TeQq\IBM9M(yk}8}8J|Bnho8Q)q/Fo^.T_T9ޝ$0c 3ucp^zס-nMMP#=PtdfB4!"&N[O13ᜋlP8տj}PB  ?9s6@C}?Gx.T
+j!>w vs#kDz	@8S0| fムP>EY2aQ8 (wL@&IvfY
+ xn	" *,\yBGp$458G_A:Xjk&˿Vg	9ؒe&/~A'~)%@Rd$saqN.f[Mu_MN"(mc\.u|?v2?:T'(X!nB^CWBn# "h#!' @IXj!^4B b0h	P=iА"]$q~uHC$@RpJR0. ;ЊQJF[pxy)t(I@ E#J^$ה_,r0^Ֆ}j.BbrEy?`G[0P2Gp rڟ_焜W: ɤWT쏏'ׂ7dŀ&/j (T@YL0Ҩ8UɆtY7@oݛn,K*uj8Խ>5Qc@/ R\GuV.s-6X%cU,L1et=YpbZTudf;֢ܛKF4T8Z SM4TNV8\ړڙ>lM X7ٓSR9Qoj: YlT+t`$xW	8׷9e.xH8%cO)+r6    IDAT̊qqy0yA[ePҏk& /%/tۼ`GIraz(@YOAhA(؎جv,ZǨRh"2FLPtFP	w$3!#Tq ۠K;	wvgEwhX$EP`Cp@
+L*d_3P		5 T
+ArY@33mAF0K&9X!DރHL"#eP3Id#PN" Oa: Q" 41×扰%7X
+dBY,;/ɞR	ߘg7jo6ɣy[IK^6H~]eA*7gDN@.(j1Ƥy*̴đk	Q8#DZ
+8˥_wd50Tw(q#X8p7B2Nbp *U=&D)끄`TwTB`7`Vߏ|[*(M9J aPP'`Q7ac4	íB\xn}v_gq4"iZ`oʠQf MH<?~8z]n N+mN| {,Mw9ݯL}8}V^NYMVS !7q]eʋs÷noW B$+9:4iKJO馛^/RZK)EQhx`jRL=[GJ%+hwXA
+](`fX-Q:VBκզyb5L9iڄ%IRWh>;$eY4x(Z)XȪygbEʒbvf˩*	xzC1͓q?S9{s?GFϻ&?/fjNr"vR2*9eYKg	]2*ػ%/r'M׼2:ҫkO'W'E=hǣIzU!Oa/Ji!6=TZr8Tk(4{ڡ#+#Qقs!L	oB	mi2(L8(w9봩m?t u?8?Ώc
+^t] [7"~	0;\(Z^h/D s,@eH9Xe- A qGo @B!
+`-Ho_E6pBw pod@Y~'9}p~(kGVϷ=OFmiqLB[IRF j+뷊-!L2R/QDkNaBJ{͉-s4sEuJ0C@MhI x,@|<*g`xw]9@f(,v6M©+{LP"Ei ?+@eiEM8%X.( }- 1\FBI4&>QA} CagLHYNwDw1-T+7'㍽J۳tc=M),{b/V:ͯV.[ʉfiҍyWhȶ#f-8_ъ~WN]&|`?}m6?gFb?LI9B;h{N;..Y6$72~7@WAČxO-\59,ѩ595ǊcN]9b@0bUoHC	-SU纐:J4JfDO'f:sNv1PXd((ydMFbfY\MJjiB%b["H+Rՠ-MNFKrzehnIM w!_T7az!RTQz5!8}v2Wl1gqv$t{2<ͱ|3QK_k^y%Xmǳ?k[llȋ'*@)κRR d0|C
+tvAgw(?PNE4 =
+ gJ0@ڎ'P}>dVt ] _Bd>`N@?-!#! Ȏ!Rxy-m7WѿE
+I<IY,PH5"F1^1;"0:Qh턕ǎuxrRU 5e_5h7t饄oI]*##lISqɎ/@OJlH.)0oOf$V,Q6)%NZ^{_迓1.̂LNpd a 	oF p S1'1>#5xP@(^gr#][yځ@1eY,T{N~$N	!PE܅?	u$]x
+sًp]KBI1Lt 9d藑!d&Ǻs>%% v9J[Yv!8ǧށAT{0~.-~)0 -YROBIzY.y!xH;qq^`}`zﳍ=qtǼs7o-aFvbyV~UW]׼]ꪫl=X]g)龞@@`2,Őæ`
+bWt>mMfu(=\S [Qd2CLRg!mFa'U=&fk]TF(KH I2%Q3ݩhn"g)B[Є%BYos6~8*%!'zE.[KIBHAOmX'D(rCɺ-.3R.&$ٕ?kP2B_XS:ÿRڣHm޸N&-]~q3j{pvLem/J,>, 4e=ZaxȆ`&^1x-6?$Qo}U ]B
+2U07ڈфh`UUd'A(Xޝ0k(z?oA& F	!	!Fn":@9	L!C
+E>BiU0  4zp){PppRf\Oo.og3C匶zxc_svrso.Kmd<De"4!fsE,P;fʟtoi_$.?i{YV$UT!TvGL}
+:. Z@!b">
+%0<X.Bd	Ff0|AP(-n s0\apyz,F|C9d5Qn@m>F-8!0)Ly
+)8~>^=~v$V+GN,40ڥEi=xw5xO)_wϛF{F[rUZr{}bB9 	!Y LALyI^caa#I%[>\r~ɗw5GڣcTYso~󛆶/[I!s^vug46|s{,}eܗdSq9S*X~̠WԭorQxwηtwytt_7>nO~RlQ_{Sov}w'jӡ\fc*uIH]F4&ȴG%@j:qs9+?,JX(J5`sDZa7XEJ UFʥqAQ:[gPGw٬(ST's"rYiq\R](?H$h'.>5JP%0؂TroV,}7@fmo+~(%Y'u)zna~fZK4Kߣ8yik.frRfbZfF.)
+ e-ϼ pdl}ĲW\d;B@J~wp4aqu.!
+89ŪA
+uL^	 ̆QYEq1exx읨W,V؏꾅 &bam(O8Tw31haoV JC"Ze
+jj@/u`$G(hf`c@apg s].'46(E̀Rݼp*!,`3L0a~FRVS4;߾ݬmX[MPKL6۾Ŋ; @2l\)6x0xG~geV)/Dȋ<L >M(]eJȎ
+kyhQCq=		(@2{^M(	)E6 y!Izv嵀B4݃D8A3֐GL@rzax O)Ab
+((Uiѵy$iߜZ]a݀]DIk=ǾGHYv 8:V} 5;5Z_Sv/I_0V42UqT*p1f!GmN좂mC;
+0/dbb-J_X  DrIl7<tV{h 3DB#"g0,ڤ!h#
+$TE2>r":riD({l]_.gjPk{hnja6V@2Dn+/&^֢2ԘKbS9]bxK")szw/j{3HdY(|.Y_LI^vRlt,.i3Fơ.&K*ҎL4^Ծ++[?3s5S\gbC*6UEo%ɩsݯ_>}H*KӎQF=2\ǯ>(Ĉ}?xc<-'ݎP>
+2% rdQ]x(t=0}Si3dk6%?ji!'YAJ ܳ`CpispApxP0|	2wC {£p<YAI͐]QU5TvZ@ڷW"F6"`q!<Q,>?ydY
+@
+?Պ1@\뫽]8S:;nhO-?6Q~Mˆc<&42XiLH&BQilU!LaјK +m{\MN0(  b< A+#[2VVg@L'ЫBaG46@	^@=h%<rI͋yAU`&4`:.NuAUia"GB3Tf`2$CH6<ӞY+%a:x}Y*Tw!(#ϲlZf]lh;?ޛX6(Y*+K'WOH,d˦?d+UPJ4:b]ɺ~zޜS3JA~=iw7W?MN.{tW>?rHt.!?viw}?OQcJ6y$RK6-&XktMDNpxĪ7l/1)7nM|ISklidg1Wݖ<`Pe:ޖ3kPhJDHٔ6E;S% įmW$|[":MQLv<ӉO8wk{LZwa~a"&,%t@o[#vBсTNj+?YIAumCY'/թG鋥rF˿<[m8|u˼_@T9S'EnK`h?ʐG08u㈖@G"B8pR[xs0<ʹ;@UO+`WՈhu .PA+.CˀB6qZ8MlK2:!.Cxs?#(<`y(Qل:5Aae<C,ª aqz+跐nð5'm/)N$1=vJa_JR֋J:;dx\L*.2"di3*.xDCQ$͖,Ztjs_*HMWBzdaAg! [1x}(\=k}zwP	98">/ykBshG ^V)>
+kftaV@-8Mt,`q7JB4' 2 ,FC"KSH	i+P
+<>P"@RsgaxH7@:+ZИ<[{H+i{IvF÷IYr\irfOGz_P˅ZFW,4%}@ܿ~0|@W y!d5/Nz🥋[oEgi7xɓ;oݺu^z#G6msG)I&X5ؤTB } 9}@&2Oѩ0*ˣƼG!fSKE푩*]E_.xd㾠Z͐H"\=-pƞ\y>0?f>Mb%qhDkj[K3Bn Ťyِo'U;	2r*q~.7H_2L~D
+JUw*EAtSx]s{&Fs~{&5ws9-Jqvo(fK{7Zm$?[csqbB8Api00)BPn@h8!n q1d}4Fچ=(#<Øj>!# An`p/!9
+9
+E>*7Z@Ay`1܏Y @/ m0 ,yX2`i	}8 RA	TN@p!	aaq8so'aP@I2_*ONF^pgߙg)к}g8Hohl|@$\ɡ5]^1P11ͯR'PuoW? f~) AtT/VAZs@kH3ې!I2HA^Ph. ݯhP9M9xPx*yZ@q#x͆HD?@Ri!jaW$4gdP2@8$GmxfBQuEt@"Ar)0	mgq[FӶWZ}!0m,8ǰ V)vηF
+˕o|C^&esnglw?rJמnPL0z^#ee`3䆶o3#C-5R6L//Wݏ~#۟-$~hgucǎ=/LԢ8&MRHzM1RRhHհLG#PhZ0Jn RF9&[GS/z(C	QE_ղMFlR*UwL#P\1BT$W/J+uVH$I8rUʥH^2h(fҙp>J^^b'|{.1@,%REq JlTHLlg;+Db>    IDATe[}Z]IvFR][*_OV⛊[rͻKY嚒[R|>I	@\]4DCh7o<3'5aV Rs @L`'S 30$sV~,w_E#:>@%-O9 h=K z &%A(]0FVu"NAD Y 3]8:2GFօ#p V(x`@t=]j=Eԇ"]8Lh0!%G~^M_Is,6M8ߚM&S;e#k
+=̟Q PAvmq}ڜd[1B:NBU^~|hQ>Fvh×5O$@]hMO9rh@!V5 Ss " 2 `DQ`uX:
+GfAtaT&qA%ht<F܃f"O1akx?XF) t-xR#LIht4d1P׍<MbӾ4elMs/dar㰡-{m3RV2BRF;8ߠcN{qwm>F$6
+k=˽M:]1C5:ߏh6@I'MK^Z0~(uv$#o	|6:Ο^qw{2=)}Sݷ%2FL*TbՈmB$;&)$VmxVYʴ TzVAnvu<ٖX *'FW#&nS@Tæ$
+@E#4#P4u"PĦiA?Z֖%HR$\iEmaݭo,JR7wRYih~CӫLv,ͻ,T_*`3yO?zg+d9..粩ڱϮT
+Y( U+R[Y.&7Z4],ut="Gia)#.A	CT&PE8q7S 0J;At!chugG2.Q$bP:DO@o@-DO"o>!4ވBePAӈ` !!mP2aHfj`xpNQyߣ4/*d1uRIg=$n`Av{<g$qLIs>TPeSrYͥJIl:eCQ'6)4~,*H
+Ԥ-F.Keռ;η/_or{F/	3ډ` ߁Jឋhd %; [}~Nߢz5 )xS?U#G$YH46x
+W'sH4@:И1xeP%3J1v;Y(H	MSeZWdw X7l(dIzU[+lY4krcJR|T}?eܞ۸:C;XtхviBk}	P](<r"-##Mc?w?f\bdI]o<;W7GFF6ny^kvllСCz멧z=<^E:*TM&)P_Λ#*3!@E:jOI}9ۖOFKUF}ʡJ3 %	EF@Fƾ:]'d )%	~`.E ܡ!ƾTRTG.k}1TLڞr?g#~5ŕ(RbyA!jCC1RQF
+RO[0(rp/(R&ҜoAz0bo{+w9w0+Jr}<cC)$盖$kxj0|pb</p1޺G@IDXXu8M+h͆P
+y wy2GZ iucSz] ƪ&ADq3DzaoBz @mp!sNG22El$-<FA6@"C
+FփRP P04Pn)[ ׽mb$/+}]2H~1MQyI~A^=ȮHŦavPe(2^x_Ij8<ze\AXS(1	0?5ӖyD |{ *AOVtc7bU0"~
+-HO:0P
+</V*"<%@	8kl {ō(=fYZ0&-aUFf
+.:C< 1qԦ1z
+]D]!«@Qbпx؁`rAղ[ى,7|r4Nbr|WT^7M6UJobk1J/o;Ri<mU&s0Ji6IH0sKqe%kG\'d;xAzTvzj&5^7sW ^ܹK.n?L-d#0_.2bS&	4PHY#zڹ-.+@Q 0(tdm
+T,Ss:іLRH!QD
+3(TK"vHul¤<+2eXthiDIEQ "^^W|GA;m׀>jż7#X?b󉘠$5r&FY;9_h9zUx87YG)V$1(SRkoHsqҏ_]u~QMUQb Eӽ`v5X)|4g\-zc*:vycFto[z8<P*8&w`o@8Is?);gal@palDK <? (T
+{Q9vф>
+t &PzaF2ȇ(l@)xCT=-@0H!1zJ 0SA4j@D8iimdEY1~k|f:kWY:;_Ok9x|nT]gt+JUVפ/,a<\6K_rֱbYѲb=o4'C${ wdi  k=dtF2T yJ 	@>@|{DG&^Xy-p!:1DmNc 
+aVA©@I݁Py>ŕ\81좹	Y oמN`iȽn otXl><|x0u6nrHYb=hFJRaz!˄m7nZn낥g;w+&J7'مuhyn!!AveYpwx-hgN:w	U$
+Z52Oę?7a4rI#V9Nq$rѲ][(ے[ںDIX[b@GuB<ҴI"E
+Ra,jjNSf ^WƘVPXI N^]GH8IYbԤc־n3d֪37hOB.PL юdrh』t:s1H!N[:e|lWJ:Ŕc<vuOl7⛢2WHȱuW?+e|^&7:}I~n~ i|y+odoJY|zg<7x(6&08Y-!A>@q;`aMhȻHf`N#o=rNXX]W\DC
+Ļ0=
+;g`Q؊u(hTG wE	Ja .`)P7!ax(Mۈ:
+UEPF@	)t#sKOMAcs*!FŏIY׵Ý)Mm/_.;gMY[-USF+7d]wI0)B*v@טBgif?FtC}&̵ &mM@!:dAF^Pd](lFtHp!R-`.ĳ`6t3Gm#EH fp`0`vў30G
+!P?A.z3!5u~Gi<0l+A:oZOiSKɣzA\W)bki~pat%.{	Ig)]^bSoo[tklbϸE&p+E~D|vǆxWAwIY{RTc !tSKZ*+!HTu25Hd} 
+d|EF ڹʤCsģldJ CZG`6B چKTSs$TE@*ɇou;fˌeҫrU	p"\Jn~)XAv^_KN"B$#ivϸjK&S{*ᛄ4d+߳C.Wh{.\Vb%A M%$DogԜ?rᦶOiU>]W- [68ȹ~0Lv`{ Umq=x#  mc1?cn^='l6 EAh/nX1R!bg:%(	)FtI-ZY`6χ=  ¨BCT{]A0%08vJ,vD<Dw'H7PR  s^wW>hWX	>PM~rC] T%u &Ck$[J)vڡLV~xv xaE6l%iȞC "{*§A( X#_ %P>iVF	NJ`6wF	 Y0K0c$}xV`;W$$f5` 2$e+Ä|WIEI(d٘>c|ohN[*~?oWB64ʗ]oher<N^,d^%NvџJ4?9W
+WpY領&7Lٟ֮W֭/[t+e
+Yhp칠/jRmlY>(C50%rPAԲH!ŞPR"-m
+(<SA=}$ʈA;rv(,`\)$B̊հ0`+(bּxb!$D)UO;E>v0ߚ+gEIoV0;B4hOJe.Eh~bUˑVz3CKlQ?yN=Ϫ9uLLlF~l]MHB^t?ƿb52]KHt[\ia۳f|Up,QDq
+<B:5|BQ9".Jg"(/[`5hX[F>5`emdaLp&ds㪌V@L>;h	TG0t'@rP Fҁ=́©'. 
+FED-h&(CMCP fFh/_ㄠX)G|W
+m=U4QҫH4gx̷7f=\61CPщ5f,g*Kvr"pJ-AcwyL[~M?Wl^5(]1/d*AN0 A>DyHZ "2SKP pApgПNH0at@L	HJ!,Qð % xwcD;ݷBM;:櫜n
+KlxJ(,{'parT9RyT.=Izy.Zz`3kjgr|\h\Q1BVN,Ecd21`Pl5N?\?Jt|YTg)u5 !
+KrMj.hbo|4):1	E29&>*fGwȨCtFb劅"WKcƼK(@N]*Zsb_SG2)Jlä U}f6=5~ qR'$HAvF]r?yI0#T&(PG;ގ_o󧱘(1ىm|B*d}e6Ar!9ch+z{?h@t%[;;arC'?@x^pǺ[RN]IKg)WPkp*X>fAw
+ ,'wP:^E~Z	1P\!ރޗ5P|!yxg#_F}·C;]BVل:Cf0ʈP8f"PFRC0(oB0iT&Ꭲ goai i8@%~ߩ4&IhaBb!k~Vp[w[9uQviBrB63Zɥ6)g&GiDiM&)^ž2O@ =:
+<h3E`m{6P"u@Y(%Eq; 
+wcC$F/t]G4&c85I!@i<A O`BiJRT&1XWCP: q47.v+;`l}:J|,y.9W覕Y~k?Io/˅+8vrqvyzg~G
+#ńo_Ć#\L1
+h{:;ZћqJQQ"ZKIYU^fH\\-jꀍܠ$`
+vԞL\E@rՕPl[Jd+WI@qVU
+)2$5:& Ll<RN*L׉b`]Kť+aXƌq(<)\Qd2	KE`˃5'2w!+Gb=1Q1b^e)#^Ⱥj<Z2B|m>3hk~E])[_|--Kᛒ|RV좒N <EbUg9:>0 Bq?uUwឋ꿆)!! 93m<?@^JXf!shϭ2{=̇=%cxH}}	s9(CA@(6Pk -r!XvCev4@1hl೦0Y_[_TZ)ML1\TŪ͇YU%Z"VNElJDWs)IEE;kooKǚǯj͍1z_'rJ	 ^/lXӈg_x!>4_8	P E8%UGpz&    IDAT>(a$= 9*φ@<@`t+x_BblKh6 O`A6IeXE
+JzCrB+}I7G_|sjj͇]+AQrۢ|g,;WcOwK;Nx|<JI72?>٦X.2 XJL4#hrUKrw^ck{Dů:F|ssA_Cj}u@Xr
+%Lb:|*(mL
+ԲFh0@,'#uZaR#c&@&\+l|zAXS\V)ͧRi)T5BG#5d'Jc$Jm2C~ g$BL͖Kh֋lfڊ~ukCN)%ƙX/ɺVE9O\']6_5h{hˮNI}Ud
+Flq1Ɖvh7Napl`p lPdRUI*U߻ܓa>fzx1k_t{؁U]K<"	'#q:@í&!ECVP
+	ZU*AK#jjZ0%QםS8|= T[P(/BSUHO܄{28VN  M$DVQ.\u\09l c SuL(Ɛ9Tc {Pe`TZ`Bԡ%iB9>js7u^DGz/UC\/ޗ/%nLyu\8ÉǢ4.qLrɌ+Q	qX|VKtzʾ7Ekh%nqPٵ@}%{xFڅNa-"?8oFrӘ;Txs{2 m]!B9ajr(B!!6BHOn}50ۅ[V(.& D?s(ڙ[-sP6>a_aSz8Wk{fyǲ;/{g	(=:ij,0@^ݢu32N|iRatX	I)ɤ.[wjeT:=$%8_F%ͮ!ϝЇegWM9X"T<2k(Tmm,)Aj Yd׌T%To#}=5~CsEOVbB?4
+R&r\,CC}A3LiYĳÍHtn-BfS	ShXŪ6*o@og)/ϱ(nZƴ<x.K֢I!VsݕꠠE'Zh:$2eNo|Pͳυ<AHXxd;} 18'jI
+,:~y^ݠp/lsI&Jq<EͿ̅m<F ^N mc' \P|HaFTkn#A(zs9UP8&TA]d'CEȞr&GEH4%X=da$yBrB
+,F_(CL]DmN߇*{~Bn GØ=KpZ=1v^+71<4g)ZZ-#iiݨYw5j4teƎMPǀHc<j	R;*߱AcIFW<8IA<]A*u &a  
+z!I^ 9@ (7Ax #9 >Tv@)FA @9tY83. !2C*&d
+&PwρrDp|X]XA[(xU@AX}7[kumYc	jYu緫BNuetC^qpټS].YN)m8PW>) VV'm?ģ)Jbbی|Da].Z}FJw`ѐxhF7W,Ƿ[#ol]g1J)TUU. ,7Cmm5Z+ c G5̸La@cbMꭁ/3,6}F6#FE@]яeتY C5rHw7PodL-|J[|T0֎MT@L9QJZ&ۭP:(AX-"_(Z<dP^n EZƙqnLuN?Y4vZ`?U)՛T-&UՍquZa?mu.4۵n
+Wϥ$n8=_9Bg)l>\)YNBVHwپ9LQL!\l=9 aS V(Dg+XM+{3 ruGuD9Fqb *ET.B0GA8Yф,@N{vAvQp>[̑j@p;l] Q7GH'pm xu8uPzk{XcaGt?ZV,xvo)IZ {MB:qqvRۺ?ծMDSJ(%f#LcrZI˟޼6zoaJwc(P\H P%hN1,k`(Σr'@=xDr`uL" P2T!] O1nW!8dZ"Dmp?bޕHv8Mxm&k_]G<QDZ24gQ$#X>\q/sg}a5fDP
+~YG?y[Wss1cG]q;g`w;.͕:e6%qXV,W뙚wQCճk	9~M;wIiuJyn36fR^];| *nui?튇<~2__lR,/7ȖP&//7DMڻa1~FZ]zD$LplLFU^d..HڑF)MHt_bF6*TK@ Kz:A%24n5PONHnOk49ea` FY\p83=&1Uc8#9׳jЗ>dj-=,]F\Ϻl=ߺf?P#UYsaaO)ՂhطiW,ߗ/~."nNJJcey>gǼ&1D ]4a:l<AT	`@EU?	jN0
+L./GyEq&t	{?>
+S5={(6 :0%%P TSW!y2ȇ@W Y*:B	BOP%0N[
+tQPlNF! (3PDF6@88Z6PC8 ڐ0@38}kY]SE;</Z&$Djx|>%e`ߖ/>JqLd&PE.	36ġ9#*`)ƿlg͠gQ S ?kvϷ#Q(.t$"y	]AȷaS`$mP'v9c
++Q붒ef
+L5aN Y(X.F[8mSSdKv[4aC<BX(YN8̳Ywh>15)WduĀp~v4[sȑj-AAHaYS{]KQ?a'8kSlʗ7J,JI2PH]˟t ()&Ma1'njɢ'߈8ocsɻIdee~}@K"mm}bM/3St]n4.i#梀NB
+,MN@<ff0Cidα+
+Jx\C*(0	E,:靧ˋ#fOSM,.TaNT2.'L%ˍHA`:}6?/MͥrX^f@)$Muo\&eݝ%󫶓w*ԡ\7O'ƚ_>_3L,~lw}< uE/</^9;,ݏ6[y:(GY@kdcd?-3>^`4Gt҇PGohB:kB{j_ڂ˼^+MDB )@,;}0 x*ߣ!о2  w |VP9!pZƫyep C61{._ (3@ؐ(3dF6%z,!cV35sQ-;;-FGׇw-;pJI*uP_zV~b+њx J5I19D&mpBknRצ=-?>Lޗ0ƕղ!)Ex"?	DO ~rk}`M@"~&ap@}:A=:GrBҋH 9	#0a`5Aw`t2F
+HvB8(& C'7G_G2Tϻ^E|:n;3?(%JcYU !p;H#~8W7NI:Mz/}yuK*_g;{%o/iՍQJ꺚嬺%sX6?l8KHUARyh;ϥHT8T|vb[pUMow\:ݷةa/1E@f`[teWkK.prt0,7D鐀fئsʨlcO23k&3Oyd2ՠ ]պDzZȚ6:7YhdG3bHD:5j|YwR1Vl"
+:^gJ5?VlKcpFBhc>ﳃVҸvG*mR_P9FPmd056C[Ծ.	lIu`8=6.#ism|IoP4W')gZLWg9[Palo7p%d܂U,*-p(kH-Z/{rȪOW
+5ܣ)> w#xchӻ@r"YԯQPSL.yB煨?ZH7PpgA-
+*+ !2P94{ DAJ0BQDoR8,tPfG6GU(,{MiQd${%/ʛmjJU*[<_MW(JFrBtۇhA2bbU۴ 5 ohG|!%e}ųbup<CNb&OAt5ב*.0XskO@a4d8s(('h?`!jPV(ZO#A6.U˃p jA1Eòak @V=)h4iuFCVEKQ=n9]n(	ʐ$K<jY
+!:/圝6FV=qƸޯ+5q^GI-Ռ	Iŭsf`6a[ӥQTTjagj?-ع|^j^'ٌʸ5qD/F:|_~K$'4G' (nn&mO%МrЫb`Мn+23qv<W($z\mW*0
+d?}fM:ˉ͂-.H4 59%8mJa;J-Fhq@ZCD{6QqMY|E Ez|~]<?ߦe#Z"ӞE+NC)[iyv9Ba6*R5oX%eĀzA&6ݭYiuӻ:FC[L[{+;2(HRRɋﴭG~ ,h(Z2G:6h\ys𮄽JTk`-׷?Ş<PZj	^8G0"` 
+^Gz
+6DT̿*,܅QN=!"
+FHԏg)vj"00qL	UK)w=!`BBX&j=i3otLHl1|RK]0]u7gR7;}pL.Ej$ԙv`lp"
+{K]
+(cR)/r	iIi ̸:pGQM]`8΁0P@oT{^.Gau'y: ()pѿbK(AwOh4"ހtt0 o.De|-A!j]lUuuymh*CRJBXJȯ?pZ,*8y%SX6<R^ȱԼl:xg9Pj7Rͼm{I6R&@w_7zKo^u}hZt=',~RYbJLPz4HkQúTK=%F4s?
+4%.0"
+NKsجGBuIژ̔#KGnVJҤY.7銏,0Hojh
+VbLcId)A|9|ҒȏT h#W,48)1m1B*Su^>k#iXU8Viysj[SStʈظ2jd Y_ȉtidZKmŪʕX[U}$qjd?[^Ado??$ui,oAGkmOwǟ4ƣ0\'ZO$8~Y8(mdHQEbw*%!+Tg1|㧰NsD 2d%BxO~ȟۨ6Pm`'HA,ZA~z0P0;݉Pn-4^da೘>RdYD('P%!5'B:LC|I35ˇ1sFcdNbf2]y@ 	aw>RZg'Sh0~65J&wvOW,䕄LB2\MU|188'}/:uQLyA[6esi4 sBmE˩H'9^UW&ɋdb_##Y߃шtQo#|oC5Bx a4eX"CjAPX2A-b
+ ,p>Aod)qCY)9YwLˁ`ՂR("_ VꈦW+$3j[QVghm3ݏQF黸8ٺ;/n߫unP`%4ӻ`x.Z}Q߷ſoR;^D^Hl?'sy|ãǥ	iBdY    IDATSR:lhm շSn:̶Z\N@(DbzĄ4Q%5UK"sCs3Toe	ȁq*DYB^3ٗO}
+Pbr3f䑶,dfW^ǲIc*&1Yix,kxrKC3ZH\3ڸU(#btv9b%Jסf ]kT_[nίn
+%KamDr(^{cPeՍExR=!(u({kݾӭx#/1$;㟶űnwϯ߾e;_鼷<cܠ1S8.(B2׀V..@PFha߈r"j7#}޵`m@,Yr,Xb@던~+PB'p ;*.sB0 ?kQHOpb!=2_2`.Wa:b]
+ E8sH@"ZaF:9W`1k6d2CB]l}nwKwd1 EJ1<~ܪ!vPU``0|M<,վz\'n:R^^C$MvqE[Q_C nn2[4ڪZ<1KdDrI	ms3[.јAa. p2!|0Fֵ&(ǈ7481v "@@#{=6BjQE)7C4mp/sE2E4ZhE
+5
+eJa{(25 Pe2֞6OhpY@-R:N7jVX;r6l`k{og#9
+y=#CǺnqƶڟ7w[Tr4	[<$NP c/
+ eZ^v-؃AʮX,:RKTע3HIJchH{g|oNwI8OӰ]ן[$h+5TB2I.]7r2C/:9L 8$`#K R3F2؜ܡ>^h_>RiX>6`L*SNQbBVZ1tNR	>chCۮiHA*f6P׻uHRj3HY=*΄4"[&=6>Cv8dYk?77YgRƵaյvh_\}~3Xy-+MeSiw\^`*)ÚbIIm=ҫn<+s8Ts6&+BHϱCFa,o.M6}~&NnAC\]Zb< 2E9
+:r0(ρw0f03tނg{BT)3.@A-ΟCQ좚 #Pv%D"ֿ?tdYBI1Im7=|iu^ PmDV;'rN0ɚ΍͏t~awݥ<Ҩ}B}|V_]EPK5H1˟J}7zǔn$j9g2LT7Q3ќ$-6[ԘVmVqef6'|W
+ȒĶMVU'6w'FN%eZq{e?hQOPJ4B&H.J}6F'`d
++TrD0w®czPk"-c h.nTgTd2DYy湫mDUVCsBm1@qzu N jF{XU~ZN)(*H<ϟi=_\Cj}a>Z?YꕦAJ' l~7)sL1g NGm+VGVj:-yҍH^snOU"'ʀRRn5J6Ė6tPB7L5v|to%wϐ%<p2Nl)FQ#*5ԦĔ ꔏU%dC=N-mH͎Cd:R8nM-DZ"$23j%
+aIBzD7~m.7ȌLLە#Bԙ"eˌD ڐyŕQm!Z_}j8)2C20ŔӆDQb!4\+7LeDA:O*O'j[~F|Ff ʙ9^mJ7Z[ӕ<ض1`uh[(-!!iw;(t{>aV!Z"@*A! 6L0&	܂sk0AT8@&w:P)A9H6P?CF{	.Q; l݃%Om p;(# 0ͣ<YCB7`{{@7tٽ`40vELB?ɲ.բm=Uen;?!!eQf?IɘdHfաysЅZ`$zeH(-.d"mRni@Sk!``$-osT&HWaQu&(M'f?h4
+Ak7>[mC @>D
+[pz( AGZD`70<
+	f*&ndPLVU
+AC:B &` E, t>T)(g{g1u?_Y E
+p/kbr +h@)4|m@'͟-,8yg&Oy]u_wkFJҼ|[x/4ev5~̱0.N׵gb$t";`[f3yfīwZgr՛{g!pi|NҮ7^x7{tyh{N
+ff"sFɲ(X@eXogJS3(LiզG^4[tnlz:K^[S3ѐ5`G0c3mr9Ҕd@	Mf,%K˞ؙP5/dEt:֩Y9k&47KwmLgUzHDv DY
+ҧ!05j([Ҕvezi/:늧rFeef8l*մ!NHCbc\3EƕYоw1u3nյ;鿖ztRwx}8m[-PPö$ʛm({m߹9߭:)@1a[w v9!-d'Qڄ)?
+  kg ke*|~Lo`0{$'`u+'34PEG m$1z"8
+B neoYh	pA ZBuƠ3w2M' \de.?	hwfRnۏ-'i4_ܝ y񒢺ʪـiRw}d<LV)Ik\Kmr~־~]w%55*Vܤ40a./~aj?9dyB㋠AuT	t`m2>DnFAzoG9.1{fatU"{I[`EN&61Va0Eo,[Cy%Q t/
+Uۃ*L0am9Yz^|]mX#Zw*u ߲̲Yqc*+^j+=#>JG4|YGl `ӌnwrB|4L!Y#qŞx8vPL|kn\N墠q3NP>5o7K-t"gtKҫ3pFD5kd%55A\AY2eJ8ė9,
+]x7*`\"B@
+MRac,B+QTH]7oP.T 4vP/CTjvFʺ/O˛yM[I[kۦخ؊BuӱY:T̀
+4i|Uj&NEXHWxQ-׊qufGmBte; jY6Qms5~_*uP:zfj~cqu#yT>/޶7;بx6GG7l`[_4\Ga.lmw nF2B"]JPAx/AHBrɃ@܆{zȓ0<'0Sbw;΁
+LGDPѓP`Pp 6``YD$f##D":aXm}LOc|6=4.ƞ>W!.>e^ UA8`nn.\E"Fah̽8(ݸiW۪aӁ_(Rxp4Ə	v|1 Y.<v|MJ: uPgI#u1{xV9k\bH2WyAZt@$3>je{GB8Z*(OAQnaC]a,>x*QL1A*< YpOtb
+n '{lY݉vTlV@ 3$cx#cq#aA?1`l0`!X 0ZR:ޜN>;/z5ƅǯ^=Ωu9׷CI7 l`y8iB< wٺ)cx㋌'0lؙRî8:_lo(M99)l!ʺRisI@ϟ{qV\V$9O|Qνr!.dDusŎm>Lmz!.}.׸=ZyE(Iq5pzcsl4%KM"qo^Ϯ{ųO'fDza\ջ+.S"(!?tk;EW Uؤ7[ s}HXGۄ
+$ XĦ&`觥Zlj]I$1X $yXe`|t/Q0\(CʅQlԠc&YϼNMo~*5Ĕ-zLCuA'@!}9-L~"hV3vFE]#SgP-i
+ax54ƙ&,WXDmS	_ۓV#e]JFUج+/j\|á;B4,'ߪ:ѰZrH垵7(	[}+-6?pk#w)%#˅o_lo0
+`(>tQ΂C}rJ #}B a/|x..Ȗo3w7*Ú;S #@B%| :Ea4C\w/9aW]B iJ(nn  hqvn\AX_-DaP,q{m=R%B-Ѝ[k[lŎwrbK3qiQ T\_u~iLi4Sboj ڹ2GzP@H
+uLn*!)hfX(|;W8~I/KJ%VuaFHF(_v:&p9A9jpʈz="_Ey
+"CڇD6ޮYdm$#!"îs8Sjl3jStf-P:ʭjGϟ\6܆modIsi׵r_ӏh$߽CD˄tq1w5quAJ6F-RgO߼wP`FHxaFm</oITuXAs	@=_(t\|atXV	EDϺӟT՘뙝)[MӋGЬȜe篩'ZtlV]tGuKuGuZ4և鑦Mܡ^HIL'D:Tg^pmRqI0)'%$1C d!N!eFAqbz;)z)SSi6	s3ҙk=<|:P|!MG9!`rWEҠmM9*tD}J4c1vFU)R4HM@A&?0;b¥ qh;X @a􄽹l+vhWu)I׶9c6a$+tl|/tj.Bq`uGXKΝʧry(ϯ
+J&A9	[A9&1at!#xwPMy;A;]'9+tQ5ˀ]AGm?G@9!1Yg1HGNs#4sA,97\@o	~J	0؄#L(&c\+݌Ap}I.r/doVlnvrKw۰Izc!F,;ߖjOoǿӑG!Xӽs'Yϗնi7Ut KI\g&IG
+szjjb*)(5igY=dѤz}4U
+Aa|盜Gi,;`c eY"EklU>ֱ|l ݗ'g(ס5,)- pJ iB\ZA
+re#PB0 ϯdĭL7^e/*W0$Uj,_ư;!^ΗI)%z'yxR75Ͷ_ ˮ 8%aLdtig9~ͼw<|qgG=~1!bK8Iqm.SRL®͹<I_ko_Vۉ+Eڳ0'=`ITn=d{W=$<?R<mF>[rl^睔E@b6Ь*DYDfF($H)3]Zt/z MBEp@CCS&wHB˙92MM%J*dhPgueΡQP@%%Zx]E}FddMwi,kc2X#T h5i+ԉ1TY\O]i
+u4ԲBv!! 3D:6k &FbHWXԓK؄mU&<	N)c*8Tho={ϣߕcB8믊&&,Sш6n)zx<00HLBHCaU@=AeWNCȻ7 ~Z"߁a$5xSTP`rG,1Z.&T;@>j <pNF0	#TG4n[6ޱd!ۇuQiKm߷3\U-+ݖrO1N뼸ӁxPWqEº{'gKEo;G-s7o0*8e%+bif!S<ꮽx0	۠1C:2ݥ\VG(xRѺ^ﵶ~q1]nc~)8PA4sHGvqk,|o    IDATɯHV 3K(l+֠)Yy^%-)1111nFc4Rb}},ٟ}?wsҰ(N$wSلu[?E72?71n,mSs>ڨ81Wz鿄/ZT*=P{GfROa)I,\$>g2@Wǎ56x}2oq2/ddPNp-OS#\-2z3?̥&ץ2_@\wĿrIMXa)R0!FO=%hizqlc}CsJ!`=CLgD6*FfCe=hF*cZ8=R-aGJA32DT[ l-ތMC%"a۪ʠҮ
+ZBt2̍Hu ')\{30}r]ip86J(hP>PyRJqh
+@k3?)J b%je%Jjj$%P5L-vJ`?[;Ge!NZXNNzc?FvzvоMfC]I~Q
+.;g.vD1u`NAoaDdi0|-0>ObT
+G?h"A1@>BtE|cczPT ZH
+^6IK m}71܀p}9<xx(w
+d1/@[>eMa4Q8c`<KizqJ,c$1/
+7ǿdپ'~&.L#BR2~׺?,tR驽R2:*}dX\jӡg *LB٤Рb
+@bX::
+S&.L/5WmBT;g{GjZG*̂T{F:0"n rc5t^-H	UqV+:}Vl; ;*1^܁32G؅"[Z9|o9Mbk{`?Y*]&mvv(?W
+'$
+q~VJUzbdYz^CHÔneuIų+g7ԃzB
+fj|3n]l7!z#~cݽsT\Zrj
+d@Y}]HUEEj=2")Ik|/3u?ǖYT6EyK#X{RLq<$uJS%jT<RutP5rDV5a"Jkr@EJV
+hI>18>zLKcguNqLfˤnNluz@SX]ϒ]VTq:e#gThQ#|i(5{ @ud>RȮJ;:N
+J>u+Ʃ&.q}mZ+Y)ޕ&0%TZKRaپEe zb~-ӸuJBND,[gcy>'k=Ts#6-4XVo7,R>7׺W@KT&QaK>ADj!ZG0w+mڰn4!h	`$&ʻK(s y'@9F 9.F AYs <o̓("XJTZhxuZkp˨LPA4, &jVWRۃVg?@gv\pֵzV	{{w]^OVO3kLmޤMɷj ҇}JɒuB`j'c	1McmLۻ0V˶\tcu`	k@P|R~G{ep,S";j]%Mp3mʜmD ;[7(8a/140\E(e>sO;Wmx RԲ^	DzVuz$8ߣM<Աv&I'0?8"!(ā릧nu^e0RIsQt<'p}gmo@ot)U~+S2ct'o Pv
+=kJldOb+4I_K0`;qqǶ,
+GF7p'{=.HbQ.In3"Ūun?i;;c؃>8WWW|#O}S{]'Ï&L")EBbޤČTfۧtSwjZaLOؤ$ScԠ#UDטi؆=vD!.#0C鹤.@R69SP". * GziLVa6 C=$Td;k%hpik[rI&Gli3{2-%:Ax m.wNc,'v	Y&'\CyV 1XqU(PFڔ	5M mic2$%'f8PC	FMٛJ;ץ0Nt˹ߢqq6	TMrrSk.~G^:%Pa0
+"Fi$pg
+!EiP	Ae0
+x	?3v bRd]D;ZT|`
+npg-$cx`DA+uhD%Mbg+ʕ(=d$>T9Wr S
+J"I~*_hѕ\^ܨΩ=q	ɅWKZ|f+ROּ*=/]x~XηoH=ißPz|m# WȲGhx;Oǯ (chibb}B
+tnt_/Wf\fsC=ӚME~"W|bߕɋn_?v}Op,-yA#4|u8zo> RpF#K8<-Ge{
+88M煸fw}4ѰlpB"`Н70%DxR
+i!.ֺتd[Oh]Lߥ4o2ڵSI2gɴ.7T-s~:~wn0⧚R2Ҧbg[г6?iShd[P\IHIA~ޤ8 W6t=t̡麐-V& 4'Nդ.цe.x?N[d'3#믿=yo[o?1/R#v~"ag28h;˹}j1`DMC:d68N#=']m95<jOI	`=ѥ&=J
+ ]jd&&*87>J'U9e0iĄ @oH>gfm;dhO=ԫ6qm4xKU4KxW"Rqb: ذv睞E&G!bg&ΌuUe
+-`yn˴% *fC54%&Dmaa,ubM!*KKlg$=ѦK4MP%,ӡl$TSF@ 8qqTsgF|҇@k&f9	AHGwOa4N)vp;a B Aw1CuYh9F1DE4cm(_C⢗=XCwN2C<G.tc,, h4cP Y,2 rhxF<\DmtZwФZpV<s[跇MsD8/$xdBjW[FwZzN3',*3|Gq,c4l,.X
+wA~͞L f-hy@PKĩa=R&/`c27)'ԷM9v*֑]=_7͟"Ы/iS}vӽhu_ULϼsH_/͋ x%!6V>H(I#DJ${(Ko{=WqLAw`m坮^l2E8~ѶRsE~Dᕅ 0\G];&oG*(~K|C'ڍ_.yw>޵~]T.9i7_T?ۺsNĵ76ÏdPvRcUW73,1D^\w=Rפ?R%d͟.pn*|cGj։PB4Tep
+%%zP^~{{Сg=Yu]7p?7:aڋub5259o
+#
+$
+E54>|}L=tdN-UzNF=زv6E#H'96詾Rq['iacXm5H-7鬥Dn7>)SQ0*;ju'Tyd.,RW h hXlfFjdR]pݰ6n{L VM.*#;5PYSvZc}J
+C*,l{y"z2r5fSb@ӑr&썑XғvđN4	XMԭ@Lڱjǚ.c]<J!%VGmv	oay4xoslAP`  "dc/FGiO&(ks^,0;nEmZD
+*, Ay/N85OHa4&:YD@,^ۧ-/^YBPd{~V_МpKH_WWPGklrq`f/okY,\1J}o7_(q9T:ֵR0~J޹h]H+֓6]~xG}eˌZHuAlGIUգ<8pBPfPuZ#;Ģ(/ԏO҃fI T'ɳ
+ |R;X/k$rlx٩\^.t$.AkI |gS.ޡuCyr6Wodl#~&h0'q||qrsq2mj_j(/MW9}0<y2͕B^tQ1\3U-1Z~ushU0E׾R⚤>W;Zt:^Zӟs߾vL^T]T֏+m>Yqeѡ5c^Nqhƻ#2YlP#9/~W\BF*vUXQثl
+2#ʔUZ1{-?I{c>y?{Ys9[wrb:4FXN^&vf3eH]ŪK|̥0YCJW曧ŉL͠0§4=էb"]z{.p% (1JY.(L64Gwo
+Jnj-uħT Z){1ENLYprDg.q$ۢR@&銺0DᐼTʅ!
+2܈H:o@s)aUd[\ a
+MI XJuLEe.DeJec$4G%&Qm Ņمۢm̴E\84 0c0]QqM6n_/ԾSKwx*`
+HlXs܅̱ 1<nJo9p|0P { '!B
+BKl<Fiۏ#cp$C:_]>+0BY$gІ ƀqH[-ڡ?^}0-ܕ$/3?7^ty]qaNm!|ʲ7
+W6!k7|8>eq|z|}'{Kj>ד}T#bGL4,խBC{VM5	)&uFHbzklR*͚O^Vl3SlV""=5|=#Gۄ<3~^{_v~h^{!/j]·GڧMTsZRsR]b0`^\dƵk8?6Q:Oqh[6к01imzϤ:Z66?Q~ts!9*}س _\vX[]W8io+fk1>
+~<|8nqe?r Ή'rƽ#3Ω]̈ DTYu2]Χv9K}q"]*f+w?WzJvvJg5QP92ЛEZ}@\"S-75TaGxeZ&o%f2}zMd0NV|䠜#*
+i2W>FAdnmzqaRBXd
+uFQfQSC6)RӟfKk%H&`6yZJLޔEGڐ 0K
+(Uh 2+CEBMڜHcj<ޖPؑ
+@YUM$meLGݖ1Gx8/dj&1861M
+C;ً
+#9Q5$'E
+h45)CHj(!"c8@':fꯑzNsAV<g˶JRF<DEAK)42PSCuEt ^J" "@KXeѾ J@	5ha9p@u	%`qi>T@HCԦQG4 Uh4D4O#mG0L-
+w11(`[%B4@SwE/׺Nrq^fN 6DivW_fse/Vޝݜv,g)Cili(z6s~et>9~Ï=L%l<)2໤Y؜Vۑ<!7q$#;02tlܩ'(Q
+m?Rkی,~dǱf/hk=vY/dO=}3+/9dYn!)]~RZ<[7tnrvBS*Ȓm=>?@H7ơKcO-1ˊgmo/EG{h*<BL\i;G8ۈ䅵඲_ISt߰5cFeNJ8IxVϸd*._g}P@fBO~d[6ۈ乜n;tj5ݰ8\1#㑪Hڜ]ib;4B;>ފ'/?coM
+YbM)5m-#5n
+Sw|#ԌzV2vՆK|	evPJtNk^V哹#lۄۤ*L,3ñЀ>z331cEmCD$R73Ttí3tTJ'Nn8Uړy KtO櫴A@:j8}iXfX]4YuǱr۰FzP@UzfS77jߕj9g6T!$RSY%p1b8f[Xdjsb<Ʀ)``    IDAT"Ċ)C"{T)׽,cӰe?)f,X$ICH'[Ok}~z[޶^=!`	)\A~ʰ r/DYUA-a~Uě"]BAf`6lu	n!j9z
+G+!:'V0"5'Zi/Jg<ꕄ IH|;zlZA-m=VBnawMշ|%%Q8R%^c<JN,t3̟t[
+`fZ
+%EfzeVm||FzZ[.5ژ)BBU:e`#'Wɾlmznkz; YWDcKɯj~uqV!5c65GJ_ۤ8yz:uc=Tf'CӭYҝK}k+'joѫ/<Q{CGmm^7o	 m`<?mY֥ձP)VGk[ߙo>Ĺy)?W}<%?0n{V//S}پuMH1.{_gR$uk(.l~m;iֹ߷h_}k½goww4oW$jrYly,.3[.aꍤöS9У:LPqi^ft:t:?})N Du5ȡXgƘHoP$0yGj&YJv.D`ܲFڨ
+s")QCLvۍ3Ccw+2u-S	9&@s1h+6#=ŧ(Ғ<50GH>QBU|2iQ(&'N#fd\R1gDbog-ZjkI1X'u [=Z<Z𿚘PBMCcJD:HN`0|uʊ*fo̹wjZhe7S6Xe12Kb3Q wPyT:l{
+_V@̨XkFrX~猱
+qpk޷G,;?7C2Wd=;Q k&Z{Z!!&1.< -A 
+%0BgqYb3[E6D^3Y|'"6,<r@ QF{ d12w{V{#(/M^&oS0z!32-BD^ӘjPӃӞ0Uiek?n$/Me%_
+!6'46uڧcd.0&$͑ޤsB3$mYeO()+^i@lemߴnkۍkÿV{ݎnR!b&Sw;N_+do0|!`=5;s7/=I#FaQ@YBD`rdl`r4Y (L=;[}UkYoժ~y]ȆDß%OӧIl߽u:7_}{;ƹ:9Yյ/|rOoڎ% YϘw\.7TNJܛ?O/z?Ư۷7_u8h-z+pewԽktjǩ8%z;g 0Cť2a] &3QȌ?ůrذVǲC6v`jTO6mf 3s~N)$駟~m=s=ߛu  C*sr+ns]`J]^BˋQ.+yD(8nzS@הVT6&
+9.TS',!\	)Xѷ
+P!-F) (̱=!a:(㶘6VM,6k
+]!8Z$)0a &qW"s*2Ned{(8X kr>x{eMa"^6!z# XG>c._|`8HYR֗]#SOxG&"7:v%R`[4qbF	+y<"@ ("*"bwāTeqL<[0RaqrQ=;A89I֏mz҃6ѐ M<<~	 {Yy3aBPd!&'UZ`5 !4B`֗Oҁ4k4,@)X> `WAĄ\[>9,wY?7[j pp^OￎձG\ە׈\_ޓD"ɞm;wwnUC,g*o4lQٱ キwA;-Y|6<+(s1۶&<Vdypchۦ;sʇg.x>K6r]2EPϷܛkO| &r3\kRY({+pQ{ea& 4Qc |}aQb߹f{,Uf\y_ru:q ^1>)* %*?Wc0|  7vrEQ~I܋R0YX=;Qv ̍U@>Tqn	|y~Z`>Q10>Q4&GmŦP|bk҄[$,	xPFN"/0FAwYw-KEѵ ZoS~C8p  z(C k/~_ם|OI{ȭ8Þ`[&fXզclN:ExXdA7gV䲃1)&Dv)Ѡ	 g{d'&`[:!u=\;P-1Z59ܺXs;:qp,iTY%`.H'>%5dpD] Lm Y'Z+*+]jY󀇆ރ1}:-P+誙|d 8Tf&DpO>VᚡT}67;Fz[ [+:E  nfSn}Ct-;s~.[1DoEǢ2TDjX͞qd/RuFi4^/}݋K_ow?qHB X6	҅bl,(yu"h^#% ֵ<p<
+:3C}|sWl=0~	  @ ġ49.kI Hs?lz}8BguBi]VG-	9pcWtmekacou#s_#fq6jVB=yong XA>M_f3KGj63]UTj2ԓS)|bRe%jq̪@ !Mk9S XU	.NP/PQ0B5ك!-fa¦|,Ē&:,Ndlh[%Tf=785 k=ptĞlq>6sm':=
+u'٥qim[WG+
+
+x"W'l\1J^|OHDCS}jq=wn|aҎ?,_lϊ9{ߨ@SI0{l/C}Jf%qpf\sX;ec,7f:\t<ügjM٭@Y7GcMYfd-x eY<6LqSlPXg#Z7޸{W p޽W՟'wyOjhp?ścAmFcҖ`3kR7)v4D2!k4})kU7	hdF%S$;Ƅ'Ϗu#;;	c62@0`tld*+9هcj\C3?iB@Sz HQ^a'9NSE`)4iiR8҆\N\J%׺ o7ā|.{C!OܐW~~{wû^6b>|
+}Fly?KiO64$޹oS*ջt[P~$0%Wh}&c-:!giL"r`-6]!VG뎵>*\1=G<Zt/{d,,Aag	biiІp8ygu6fOjHF,8N9dր5ē|<)$&fw݃k`p6wbO΢t2)AW㳤؛]nQfWXG>X7SgyLzWk W_G鋚շvwFaGy~EY_`IܞΝ#u(~f^SGS:4)G#Qyzvad#ubCG6t-+Y@m͘& j.nH!8[RBĢ 遄[xq`a\S0؛"Y`]5C({Vn&s3SnB4 ,ʟG
+q8`BmUCb%azeO_N8ckw׽ɏ˵-~BU.fmLHqR9z"? `0Tl]] f{KQav~qc%mfm<-65~a:ZNӶ5V--i[Vf$*ɇ޷DfHff ojx7j[W{Mg&.FL96̢;Y	ظ3
+U^ɔٔ 8Kg*gxCjWX3QH;znCuѭNPm90޳ qWulCf6yk["\VNB]r+,mnjЪжKl,!"``ji`%#?zﱠʬFM3k[ /h>ʡ7OBYr\eŎ J#>rGGQOl.~-a`rB %m*Ɣ9	L[GoZ:ʵ_GflaLmCܯlSQ5w[KW?;ոBO5_:w//Ȼi%yEYG~Z{:yǙڝCuJû%7SWez,֦A6or3r3>|zOWV0?+G+a,{o\I)WBWeWk7{ϝSjpYOd\tY֜au3t|ؿ7^\W9q.נi
+
+E8~V~t;J/=glXm*{^\H5L=y#$eN߻R'z?m\_[lz?_  fV36d{Ν/t5G{?K%Mݟ3	PcE	tfoVE!Fm]L)-&""@d/V7:98I`;i;}[8!( /m죿j͡K=! c ͝E<ll6.yҫ.GjwQu-z#yVm @j?dJ~\zUe9[`W8MGR]3JQ 7+Dw;ɞSs~U1J_f) ej3]+}2˟SsRahp,=3 SxY7}QB}" ct,rb`gvRn=46`S+*MnbK49\CoCE RdTYk	h1?[o`k56$j۪Q02'ŁqOJPN]]Ѡ2[Wl
+#X+1ѓ 6*O8C{ƶ
+3zf"XP.%:2  BT{F)H3q@MdtPlOCBQvP.،"őK(`!J(r7J6nM15a]o6N}AI-9uB(:Vw.: 5cޭCN k[l0AHq0ӻZ7Ebc+nr'2fX['l%/vW:KO4ܛ3r}!PjC,'B  yh9fVk|ZO7T"siqRo/|vE<ص+!.1f!_{׭~(}@:tyP: i2vkw31 x>3QrZ?Sȳ(C߽x~ys&"Fhm#[bh?؆z+fgx)0֖aa~	,_T5ϫ?kRA*A36lu)~FJιMAdjX,:@!<(sglĴ]$؈>mL*U[	 D80"nс)vɊ-'yH8g PО2<!CxtL `	_ r΢bY;T([:*fF⠧ݻ#Aǯ./ʮXO;](|6'E~<l&Á`N:ۊ]/z?o3VDN`Y\{k :'*׌Wx.R}FzQUT.;fΆ\ecIpXK/iwz{Ž>/}ʶ2P|鮨V"jӤPtir݃|7laY/Mj)+.4	&1W&t׌ƅRf3i~'k/w/3RaqhEnF@D6=)٬o7r"30U
+Tr%|Nz 7 1$z[cM_ѽOWѴ-qj-fGSvQ)3LMeh@c>V&y4'uTAIsD0Tdfܛ-"@JjhG-4i(dy&XomˆǓgKm`KcKvM3g	+x?A0J)ZϘ_`s3|8~F]3tѽ)1x~,ՖGrskg* DxE1V7sw@lM7>9ёJ*/3%ٹg>A4Ixt=БQl_Yo|4h=~C?siϢ* a_1ǱJ=]}GCD<N^P;9y.i3dꍟ*q˟Ojտ\~f,-~eIvi[8xz)f U+_+ެ	2\D    IDATuB%L9vޕ?{Pw7Gy>o=0~ǲ CD0,g+o 	VM<@k;!`]]殛N[::E΂ZZ)0e{w\0q-rKO!Jam]z~c Qs8^?+CQy9"	O`/WDȇd?.mh#M٠6sl
+ľ~X=a_]6d8v[;?eqT1Lñ_voTv2;qm'xi(yVFefk?SS?/7ҫSudcu6~P}Plušs|%y[p5~"w5Qv1 jvFbZ6'FQ,pMT'?mdjȂX3y (1/`ZRaFtTq1]vl-EsꏩNo3V#r`g>uxzbbzjBєd!'ZeByNѸ($6EE@ }r"~Fy=%h\0ɢn"42ǤM;v,6.N'cU-}k\MSLb[/%5kbg""26igv8.2-^`h93>48Ժi`RTNd/f6lYCL͈缇33d[Vj/#:wGkÿHWO^$0XO&b]pꝍ3嚚Nf5S~O.]/75+ok?'pR(_fϝ?]e:A(_5Y^?55Q @V}X<K]t:| ,;w_2~nVzXQz]^/~B-an(y%jUHF_up[ѳm]~U{R',uQz=K۷LnAPYU⧴otwn$o ZوI^?1t\}Qz%/p]~UL<_<3ޥmk:8@r0w["%qp#?9|m) .0y[ĐaG4!Ȕr2yN8ŉkKp¤,%{-+pRMwc-vQ*!K/<C!e\a}e.&ڱgĖGԏl9=14u3uH	x|p\[[CmeZ!fdCmavyOm.\0e[nv5'tnpţNR}MOޯ0Ƒt~[XNfvzH6/uNOp#._&r6؈_EEqNmQb.[WۃDonfEmMrNqUDHCyP=ZbcѬYbspFl+r#ژm5VeFj޶K>shI~NGj_t?&HXh@WƖ[%Xw䈑M<Ɲ#k\Xd#c >S:w@1$"@QoM 9( 8Db`0:4M)hŊ'~R
+p=4`"Lڄ  9E iYs 8ВX)(}#.VV Uםr;Y" rr??y(P5K+_ ,|{Aκ[<(Ar3)pGRe7q1xY'l*̖(}`kGPfl{b;J^Q:L!Tt~Ζ3>Z~[dΊM f	4 z,.}3E<3%	XU(i3HC:VMiv0yu2O9k15kǻWy/suSL"wj盎뻷?,[*Y*x?ww=/p> z3Y:7W,|3Wzv8nI9f6Uo#*c^}cuW;;|!'s.?2@Cnս^QGzĨ];ȞE e%*[֒LC}hЄ<&+'`nv@SZSh쵐qKJ#>6'Dy]̢z;		a %-!<V`Oa\Os51|h:%P74f&#. jpb'ڑS[&oߊdӬ9fAX_Mx7sTϬ9[r
+7KOuK0[MVe	&f,KU@֒({a l)7k3I 9'/p٨]I^<4%e_SnAlsQjxM"f都EE~0?#U*4"bM!nXVfHGx40]^$W9v5 xXi`F;%T8);KàE,UGXsX3vxpVq P_oN(	XQ,[o;Vd6R 
+rcTvdâczg0+`$^c5.P"N(Jh{2 
+8%ly<: *`'
+Fj嬻="r>?eE2Ѻ|i[2wLo!;2m skwz{Kί{x{ƛv
+X.b0r>C)ckGC߽-Rp$z[2u'Jrnp`_=%~
+)
+b[ML#kuE3X/z0_',y{pvfo]~FPuב**e=4ha<I.f+iώs_w%lGkrufS	@}s6ޢ|rV{[:7t?C4ŏ9wjwn>r6_5_Uj[k>SBs9*=._fa`CAGIɺiȋMkZ5J$Щ6g@9K͋ iؔt`#Zc}޳
+ }<KaWV,E܌-vq3Ws#ʏ[]h6?q`dnchS█]\`B:JL<ԓk:S/g֛~>P/?eHo_?L;=w WJnsH~*;(?OS]J·Ėv5^@XvN^Hr%Qx{=Ѐ[TCCLOM5/T×C	R+2( `h3}Ah@TL=>J83Jkx4ߵɉ*<i)C_Ej*9 OlYO"5UMm64(
+rBcFeؘD5 q!A$Ky7)aCnΞdjMd
+shp7JɹHN
+:DdOscZXѠ̵f	5AWD;ejslP+(C vCPA <!C
+ ?ۙ/23_pM%f^:~xv_~j8z%>syx|IK%_G*V Vm|xWf]67_Sޡ\TxQf"ޏ]cb9b}%JSr ,cQnK.&F[[I/OlAC/y|a8L^DfF606z˻>yOf >L$Y}7˞ެ-ۄ8W738o8&:y](yiDL{fzg/z~wnvE5'suv=.λ|=z`mgu.gݓJ__1$`+#cdz@6vzMt΃sKVO$V.+<UZEz|m-YEG^BQt4P@Nْ$# s)+8G@	iJeܞCOO`xr[h.Ixiyo=`D{7#j>Kَl`DhClcQ"= OO_K/lD hrjνg	bY$@Hz7&:1b7|labw23ġ3\eEN^	zFF $XI><k1Ԇ*ID21ASj`2&Yae*nBG^¹y#GFf4 F~2 Eo."n".tVNޠr2k`w-Ocؚ+K!gFjy"wJ `)yNU> p9~ .P?|WU%3&#-)'!cmiF0&#U{,sWb14Ϙ&Ub^XSMV
+p״  gf&|M' zHk dV9o8VGz&'
+(eW*G}ll
+Ackͥ	>mr{f7yBwv$[!JB*oD+cHʗ+_~ҝ>w~DI9˭kR׽+1?J;Gr5띎xTCdK8FKJN0fT~9l{*8ҶYr~-эg'zdK(?7% CAVkl/綞ۚf%;'U[?V;Rzä\^1h'~kO<狝<(Øc/+؉azuqG+"X5f֘YGi>ax
+޵Zڃ-pUnNVy]GZ[9D.ݓ{= Z
+\>TLͻIâ|ؑ:k))\ȉfab:vgx@sW""Y/M"8bgADNڻ*ljVc46<b~U`# /l 3} 2 ,{aD	=EN%$,%GZ:^NzgcEAfr ~RLٖ	,J4Sh YdʓMc."9,AܟVXZK/P6(jndQKz8rQSt|ܿ.7 zZ`b)-%#&_u9v*Vm֜7KXI@^rJd]vX~`a~5.z"і9	l ؆9 1M1`l8nlq"'[J,Y:/}-c|AN08sv)'ےZ?%|?oT@]c s<~Ĝ2$]6ledܚQMԊYge.倹 JT>_|rݟVO$$Fz a9"9.7FYԉuW!pg>gTh "EQ+ۍ]2ዹk
+*|hc7T)|%7X5B_x׶Gcʂ_,Eh*KM})	Gx+MR@8N/MXz|+|-J\֖_Z|?INMΏs뇝'&rmL HV=h!W>C(YQ~VCx rL)b!VUbjǦZ/ܰ>GbvQ@:'ԜنdýR jO(`rNz@Oo)G&:|]s qvG3~RQviR`k]rN$Ljnʿ1;9F lNU$fRm ymfޡ:7$kΣ 61sŬF@9{oYvU}ι7o~^VUYYJ%դ	$A$&,n$ !QBR	JUy̬}psIE#EhwFu{}&D>1nCM77MM̠0Uh>6KDJy2g@↜'Qsb> n8cyqϘ/X|OeAvY^&-
+y/jtBgu]~F']#ȷl,J 3ً=cU둟s2*3D$vʙxbVNO[FCL% r.抢e_H\i<!rPe4)݇}yq.ӽ<s;cثXv6,{C=[cͮ#-eTk ~(Czl"!SQ~_ 麞T08!@}5eqWϯ}{<:Z"͸}/ʣNR}ỿd~߬~nq!mu3?RwOlp@6w+ҙ1jz< (PW׳[=L2w7Ul8YeFvt$G2qžDilNm[㊉`[l?(\1ly[E"W6}!2uSDrk^Ƕ{}p!?4Cb[g3fTqIʅ/^9=y@UR۔D_w}Rz^ J-J-Skw|WU_NMVOF8ciDNT5@٘L&ߩ%W5wmv}W0ze2pտ9?B+ITA΋{hs2\Rdo+!?8CacƃAsl~j'7rX'+r4(Xt2e<QVEW΅efPz_-+mCkf_rD,73}!')@/2yLn$Ba]ݥuQTsr{;\k`k0Ⱦp_Ժ'>V}YyQ.h<_ڿ0d>"(Qbjxak,쬶Vk6;Kr7=O^"$ ڵN<HwskfB)+xtQr%Ob
+cޝZHK#qOd^%ǳtǪ|3Q`T	_јpCiBG	t͖J7{X	1W#-zuWKtٔ'[9#WZ.TXʣ2IlST/-G̤oȬ7;r1Pp40֗B̨_ 1ê"rGd]M]ixT:ʍ;^zeT4q:95z5t?p$2G    IDATrYsmUuJvh{4D/R	Nt ƳsfG;HjUtVKý7;| T2x~/"?5[tk3rYXI\qQe^PVhoߔ)/_#֡4hܕ[u$b8Vqd$ՙ>%sؐyCmV|ɢt,-˵Ւ;qj둰E83RFMiӴpVY%)rH_gY<@i[ _.d EEfAE	SUᤖ*T1ݐK-;-91mCU*+l5m$)Uqvk뿗5`~a`\GBtjۿx)ʛCӝomV_t=,}gY~BqQ7uw܇TW#n:t@)7N ֢{Eu5ABQnD6xXZF(	#e'?'\r:;>>ͪ\	e") uS<-hvq.~]"'{eӰ[q뗳K'!R@AW;^3Kww׷F63G%O~!+oMs\Zv\zq̖f>Đ5?ʛ!FRt-ld8oXweS<@uqE/\?㉩O6}=~Wbj5YvhA@ȎUK;#vڮ4IVETF,Vh_nD |Apڴ_0/YՀko5gc>-Hk,v\׉7Wq_%3G]jȷEX{	n)@]%)l_6tm$7]E,H/8{fP6{KN1)2My|Q?",mcWDrBqJB64~#k񻷒wM#6_e-	i.⦈{M[zc9doccbg[stfV::Ę!bv{Cul/G{u%K *fĳ{C#^tY> V=%R2/$lC/xT%1f>3_ٳ;SƼY>@ƨoYCNߒ3rMO=sָ<Yisyy/'z>@('b8v1U5]/y-K,@v*S;wd,\yziyYT^bT3;[ZKM6a7}6*o"pf̪j/YY&_)V(HD_~c#Onx\R޺ݺ]UC7F2t>qOK1f()[f~k΃]?D|}ߚZƴ@H}L맕~T-s0c2e~3e y4x1zMb޳и< ؋w'K_=P<?D?͒'&[e%ڶh!'FF%sL@ Wf+"OѱN~)}\^?1QH\iyKybZެ9bH_\O{Sf?}/QQU"o&?P'ޗ:%iRRzx~eoW^[ѯo~'5,lKR>9)55K*mӰ[rP")䎤xZ?IdJ4+_$\{1s:|huQK<~nP`ͮKiOWR^3A c4ϹVpǼ!4# t$p5bT*bnNgtjFMm6궁J0-7"wӼQs/,fA&VEw1آ;bl0uf['{f~&C
+WsA.@qɓ6|l'NEXY:
+ g3[sj1Vtd<AB /xd/1@5˪	螞dGXn'{}(ƙFrwjgbckRml~!6]nbC#kF6N- (C;$e9&2zt4G p_ϋ{hNHS?]bXlD]y;|k{כO9om+w^V| Y.Ġ
+UbRYmCAzgVn9mt<qbk-累.;e.t[Ϊذ7|GJ;tʃSɁae/{+F9gJ;k7bu/mY\镫HU[-Hmu#]͂unmgW.7 Xa\KO9OhUuUҬ֢LUr^=43QpIVǍ?NyW>sp{kQ``f.\!lka%֢,PC3an.Ahqf] 8pcwDF#ˎZn}uػmGi~V6*DA&'iz_^i/dQWNYunm%75?B7fN٬	YQ[4Xr 01n$5@eUv*kYza\v.ʃsaqs}47T֒N̼LӁ8P{yc}f7}WU:_ӦBTvFє`z Ê\gf4JK[Q".BL-9}VvW]J|rOB[ZfzJ.cHx!vW_$ٮ%bQSRQ`8|,6h5y^-Xeɛ}18)o"P-qnWJ̋{$<|[t<垢pW-9]A!1*AX)\kt09;|
+P~e<N|obpј67:7iSf^u5GmY_fđ]ϰ{s2朋(KFUWҲ&ZW}GR(`Buy=;i'?I@M;?/NrfJaUUkesc#5]_cӐd,Ďl}kC¢g7f~tlEe +a?v(pGW0S\Q/b:$ߑs9s(y[!(};5s_!5[&	EQ|>(N_XVZְ\vH/foJE&W<^ff
+v	YRDuڐ!嬆K5f/WC9ŞɵAq[{h/{mMmba!G?4Tuh⊞Fjfr8$ZkYISYg4D"Q$e剡,&j9:m#ч][hwqy>V}̑W\39\JnMRV-Y*Ca{!Ee#K櫍]ǃ.%U6ۋ. ҁC(2Dz;Ȍt
+wT* wEmY ONg-qN~ؑVcqyX>|i[Dʨ\6K6ImX<0I29K8qvy	D ,+0=>*nNذZ@UN꼐5s?ve-:ϕvݗDea[eB^f3'kW,̻#R#9>)1܈Xvb/MSY!ؑYI@h{a#;- BlĦ]LnH"jB-UUgk7RTi9掄cE|NWDuۼ	]_i)<-%MnU̟3|Dk>Z`4+W}Z2zݳtDsW[.?2GBZmK@?עW|u^EE:[@@Tm7w<%y!t_wH8nHibfKS?6FٳxroP-Ѣȴ<غ ;g6Pd&cq)[^r`Ʀc͈la:EqKBY Hm:ء{b]ؚ'@G܅4
+/ǣc'%d^QLq̥Js1#rWf薘w^3Ц_2kAS@A}?|ʕ,(:~k_w]'N8)zaE6}AUIuDH09Cmc>AU.:EnٜSCӒ-ًd7K䋔TyGvoБ,m<+#VV7$BMk.QyzIyG5!l$ዢdGs{,\dЮK5a} 'mXTJubiδmX8~
+83Λ<!Wu(OSqfuAp: ՠK5S!$4FR}s4U`JLHV7%Zѹׇ.!~xk _`"P$cɷWޭQ&5ˮ:[#I%&,-JlT tfK&/,5DBZ@H#K!^ٜsz3;>:ȓ#ujvhiy{>ꩫ</h铖+,ڼ'oc&_]f0.^ml: bPAq/3G×}DdH؊b^" @jYl)fjp`	) *;fږ51sqX#Wcm՘kYg:Rx!-B+'@%DBXs(WM,e?6Cwfx%g*t`>bGC~n},o?<GoX?:n/r4/I\)7KXΌ\,sήڏ_/ q_?Y2JnbHJXN4@]sUQ
+/yb=JilX2{fFu9WYX/UWfo9"Czb#DJfW('v[R+"gʅa]`RYI"B#۲z0ψC6a;3OqMUEcۼ@9~}5b3$>?"3 wb'10ta|ͩKՄFgt7G9/ſVy{>O=Cws}}{ypm	7P̸Q\>_dWze{6Ay{u~q@Jҹr{'}ˉ>苽BK
+NjSOLZރbiu]3=u..O	\[OnTa*IiEZJ*sۈ.$H՜[CCGY}v5;':CL /OD0[g5)KU8}Gu<FniV*{*ueTVTWKERuNZe[P|޺:_DH!%1y E7BuRA7Dpʃ)MQi+~2&G΢>fhUbxx4h!O!16P8t<QZҬT?N#ϕfe.l{HnmK/ʆE@b)%9rɜ_2vjҶըd&HTVXt۔H<9`Y7Z䤸Ss!%4Wl/^N}VG]D"km~yj۹mo7;"4}쭞˵󁘴Kk]Rj!
+haXQjI+gO{1ojɱ|>k	.nꭌU[#jZZXw/<NxDHļQB$!-yhpfj>(K%<a*(LlI[hAA75u)%)tBG|Dssq@=.?Ф
+:h,׏! -:`cNܓU DE&ݶnޱ_jq1(-KՎ}aügg|%6i8w奂Mv9[7ɡq%iRhKLޖAnY@d>ɑW671w}2NTmw̗J|fY7}~jgUfd7|T,w[
+ɺXPlFPTc3/bٯ9$1
+zԨzSQ7{F?3?sw7c?~ߒ*1N/wWFz8*op)l@YodƼ<r69q\|<Ʀ)kj۲];;ޗm'ńPf_bZUjnEDo7bo>3o}>'9<Նewl
+M}w3Pm{˓}1%f?Rs>s3nGnfy̝Z_7enj>|+oŷVف$!ʇ*6ny7bp^M4瑌x<EP"Ec RB;2F1pe `u'6	4yZ-^bzP_B҃U $).
+)tF>\?K[}g28rܯU-ɾ`TiV#/`򮕹wGm²dc6pd $PS{=g@WPY4g ˛FV,F_CG/\IX+#=Y.C5Rf$e=WʲDKһB"PöURؠ6CuL|o(eU֟*|EwS,%F
+^KrĆypU[
+qA?aD23jHjbqbwS8ÎyM!6y1fmJtsHsMY隁LxOUWq49&m1[2Wdc	WBy:4Bn6笭!	g*)_17'W??CwKmg 1M-C؇5AA	uUC>5Ȧ~-vV	Guئ
+xFs6Ϸō}{F+z/Rջ	@!*k)K1ظ}M\dV.v^f3f,]i%ijTMfcº"Y/IDUsSXHCQH}i*ص/-WͣM:c_hѝ *@@j.Bpעt <:S;&˸}AŖ}fA xmka|כo?D{?!. w}!ŒY8gs;K<r}h1OLW&7"50Y9^yBy%rӜ	><)Od_vrh'Zǘ@h[/\P$hW>Sb/~?.l{Rbfx//9gm9d2n^_~qZI4.ogPW-TzEvd#V+Y\_g!#G7.3C%/~,%,-d
+gL߂"fLhDAAE0s0?bl/3cK[!l]@9hIdBaACqX3->    IDATX_w"yq{\1˾p+U50KPW]ףV+eȟ,ūvΥ|TЈP˦gF@]r--k`VCֲJ*
+6Qy|d@nm7T 77ͻm҂c8XՁ%`TDz6ǫ&NL?#
+Ac	-g31+7V䰫ђ\j;]EFM)g\Uh\,lwQ*Ms.ϥJXh?)v[ӷ>5~M_z0(xTYqاfD3W˞`pShm=EN[(=`iЂkPxc)T&|Vc:/ќFl.CZ\"Zh> iEaw;dN	z^mpPĂxUu/1޳nvtd*ڧzf=G'aHmOyM&$lduțٔΜ8QG~߈G3ri$*UկlMT_u4QD4+5iG{c[S#Q{b?[53,SK[|fϞm5K&	iA7zw#S:HXY.&|1:P-7Lĭ!Ub[jꖄG)lڊo7GOXM
+[yuYNJy:(mPJya[~o $%YRJ'J[#pf B3ՋAK[Ol$oރkOfU@+1iKW2mGmI?
+@RyRAel?{k!@U?wefv1Q'^~|] ڙoM7+湏՛BZU@8M~R!zLdF:{boatVëa"l"BH8>* 	o5  x3|^M "0%"%n֭٧B0$ \T&&*_?%s~ygד{23ˎZv׌42緍-g\`u*يkc$8ւ=R8#@(PngvƲL,d(sepb!d(;[En]N2[Df#?(!]Mj";̲q4cNGd8nn+J-4;U1'!j*픂@{Z>#kϻԐp4g1g(,T#PsЦc1w|j~yۖ9a#¶hD5(=
+4%C0ZP׌$1_]$`L e
+Ħ[M]r<M}0;f-9R0޲Qd]rPPD'*x
+O<Ӊ!?_!-h~l7t*P1oh*T`b(C/rN"QaV)u̴*xGo8Vm޹Bvmاzh@4
+|%(u9z
+#mzň_`oN}"f
+Nd§cئWԼE#C<4iSzmY0q(BHd~&{|'}˭__>]]]?s?׼رc7W񍈻roj ն505EjCPr$  $G\1V"IWb-W\k3\Iamzi +:tojΕ,1T3PI9T%8z_<sE_$-/5GLKǿqɑh?UzrZQ9;+&[˹97?g\_i+(;_Ӗky]Pj@"E2<[,݈t
+0G}  l@`
+ś~։,@(&{n} ׎[ H^E~ a:-Q7^p}]Q/K]IwFaAio=MwWb%[oNͼ/<1{a5YiG6
+=)ge.R;ÜIqf-m0J&`\*$̷lƦ6zXlyU	+ nٵ sꑯȸ-ɪa@fgO;D9CUєw2Xsa2s&|>`+q
+4g)}_pŌ	jIlj1_$=
+j[ٽ=3	AДA]<cr>\x$f}RF휇SVD  L{۷m?Q;2:*5NҊx	o\w*T"פ['b.?;s_j),S"(rt4~JJL7Cu 0tAq#]~Ns[<E/ab&˺vm^0O	9tL߰Țc;Rpr+\b<Œ!o՚X+u`tiuQn^G|z/pڣ}%F9	Mq9zǾny7Fʰ	&}D~!.?+ ]vY?$sfC;NkMu__[q|c}//?#{}9sG~G]z7緳kvDE4M>5*$Ds~81}9tf-)W|97G?|Ĭ~?VgOjZTܯ&tDlث:/vF\Yyko*l[Q,iy'*|qnlR^Loޙ5]Sۘu'Ï[$*[t5\a8s՟f%-vS\<w6
+~x)$aTQ9̈S41`vB"@HD3@ #aQȆ(S(*Hz.B8p눷@I~^jKP>FlF[h	$@>T(sEeESIyA+$Ka2 3&ӟG]j|/6ߖ7vap?{>K(I~7g>w~/_LIԔBHHccH.6eݶM᲍kOUF126 @I J)3yx'bh/nzцV9bsܵwv|{X$UANfjŤt#(c	ZVWS.*BJ2& 3T{qH;O/OKtCj$c"̌IkidF[@ʖ%7) 
+9'U%14i(ܑII(Kl&yX	}VqM[R`J$1 @䈗iwMS
+(0.YvCCQKCjFܫyꪞ4	FƖ Dqj\] mʚfΜϦ{ϯdkf"-lg.p<pvYj.씷M?Q[ΌLR"bt)Ly`>iS#1wbv<]޴$XՈpȰ~b/fs.{Th|yE;CcoH,'C.̼j[$9؆鸨tuDjڸܒruZyFܴiN4-F(P !Mwi
+K/OCP4Ru	B[!]T̫	|F;BQ<L4whFH7ܦ9Su9EM@ Ц9yӡﰟӷמohO>ӽꫯ} nퟋ{x;7/ElA_GO,$49K_-DfLuKk֩Q󎼠9lV͵Fqo EBΧ661PۏnfWם;r%:yWΚ6(mup0ݛm~珯vD/.jy0~PؔLMk~a=3<):J}i~~2N_WI%4Ǘ(sY,B0$Z3
+^ T`]o2^Qbi5&!t$Ⱥ)l2 !Femҁ7	0%*pNbl7+'aX{$@Z#VPdHTWD(R6VLzOZ|jZǓ=zN*也լ빺5|fn9;":NshQYȔUX:J;dE 01_0eWj~9'@KxCSĺU1)i(BIql9"i5&ڶHQq]RCT6E$
+Wľ@S"NC=lϬӤ@d-ɱ*`3BHŀ4s|jΚ`@xC3lqiϬ^5j)%'ȧKV0Wd<%h[E|ӋnC	,y9\4\LF[+}H+"HUP9/n=&>)Idm<F@]$G=>z*N;azfs_O1ͧV>?ko_TsttvڀO4?!$._^pM]jE34EM5/֑6Du|aETt5<
++2($a栽hm1/v͹1N?MF[#\+!I**i3+nslXYz"Nș[Y!NHȅbcCo|1{fXBsE^˧3_PN`w;dY3ϼe/{rfff_׿|mIwϞ=nCFkEy'Ho?N'/m_֡ǔX#qqY^ۏ:bUspj7~^SBOj,2'67_? ^/(ZMmӒq~]h=!Raj9;u~7_p/![g+֦MWOؗNއsnsDlz%O5({vzn:+R"Ta9%r$wSb 6phnI	p$1yN7@<6`U mZP$,07!5})0<2kX}4CoÃњAԃјT%׽ e;㥞)M&X̍԰9~1n)LU(y>f O
+bO.ZL,
+H1i rʦ$
+ ҦL TQKcj(I&!- YVuJDQ9aY]/@sRXW(2L84Q-'Gcg6Ŷ7GP@6%IU	XgfvMi.49ġόmJW`J-Sł@'UCGqlM<iN~lD&t8P)b5o
+L60 2"V)4E唸VTOEݠȸlyxգ7m!]~2n[>f\!QKl4:زZ.,!`c}rwB\OնܶOO£Ζ'sD`Kvf3bU2#%mp3p"j.O0vi&6K*ibwoӵ̼PP	b!˂ &HYl
+5	HbrL*kC'#^L6wE}Ɔֺnvo瞟ٟ﷬=S_DE
+/.E? -~W0*~3^rׅc\7WpsuQyѠ&Uܽu/wEzڦHhkWwK	Jmy>*nvՑm(UZZ^t?Mk1y|>fXG+3=ǰ|:TWGu-O{ɛyjGG:ߎ)KdG3Qu?KR1:7#?1{i4}	S]ozX̿# <`6`Pi
++@܁c&
+KHl(PH6!9iY&d|s U:7`&q q>!ބr ,L^ l +qYq)1F+_A~5@k(.	W;Y~}}vntm{/zܑ7zke۫;:PjTRiꞼpNesڬ}&+$Eً]g@B*8s(@9&6eES9[+Te[Miץo9tl-9
+¦,.qHNټ{|S9Ca|2w؄<rX`$J(@96Ӥk$Y m!Zb2CANU4p@l['p'MQ36),"ŦhrEf" f8cbHӾFŁXO)J5[Z+yʑS̀H6׬Cb7Iܶ&tjNZ3Jc,Rya"!0u90%Tq1sL$uǜvtI	}k>&a;#J[65x풹 ׄhb݈mz:4AUhOs]&cӭ⇎HtUi!i%̰Ҥk'S^e.IyգiY1Grv-?[~YgbZSQ]Ӷ;IQ$SUud5g̩UٿP:UNU!6k|5*2F᫿OL~e/z'뮻;hg"Co4~N2dk!6%s_v=1"AN^IIgSQ[.2%jK7#]+w5ݏ%徴451[OêdwW%nER\t\,j7}%X䅨FQOX̶o9zPv' NI}ۺ˫=L~ ^Ѫr]t*Vꔥ#Y6U_탶Ar 0ynlDuF>@e_(pHD
+g*%aé"ZE8ˇv\-XqH  217dKp0\I$@c/(wZ[GV}K.aYyXq~&ze/8#	E0~ȷԋM7#_ۢZ[*Y+m9d1q^V4l#V$l#\HRYAuMꑶ*2I{dJ&oVr*2YUZLjT D%02ȹ	9l4%:]1Ic.Pk|ޥIc
+^!hĝS:HR
+r=x8UspVP@Ǭ4`Jy#X
+FRQ]^9>fuG#5+n005BjMH'SǬ˱)GF/)0<zRu	 ꢥ+_N?1+^Ɯ#Ϸťc432IP}|IRn    IDATY󇋯<m}~It6A2ld(6	5ulSMsРԜ!M:9)ap].59.ٱI ,18"hhN+}yDM^wf#P#yN8'o8U~Ʀ1e>	0隞OզN.5zf^(s.RH>8..BW)kBFxAKYD-߭1?sM7˲ >~޽{7X{۷~Q ZPV^[_%w׼0[l{<yNPhe%XڷOM/W:[$i9oWݏ=ղI1'<4>.n4gv7F[O+7:AG[A}(J蹟KWEmw5:_ԡAvNzuﴙrǎ[%QGV/*&J{w'4u
+ڄ`9Pqd}Ma
+$<$]5X~aByN-p.T 8F{UT/AX!xvn­	
+GІ7 wB"N;G(3S+P6SEڃr -koepC0i̶Z1K7֡pfw-ySzfP\ል̴$:$(drЁu0+wYrtliy%p(k;eU9@k ILl	 |1"ꛑK~£k#oeYIb1%-?zcű+ctND|A!.Mh$svEbd^5Gb3dv`C jKלʪݥ #6c=  YMkqŚS`jBѶ4e p(\yH2Y2bVWX4j\r1a%/u*I\8BGFX$N/i ՓUIϛO7 ATTEȧ{ŏ6t`|@D\ɣ&]=q!NQ6
+uڞpI{"Çŕ+9 *y_VzktuMڨX|OH|Al4
+l4*4/aĈW XiqgUW*m)c!&}<)90ޤIư(Y1Gv+C네HZfsS%_t_]oow{|z׻n6S$?)H
+=\rg(7Zz@n%/'?1Y?W>8줯[bPܔbZ Vg}?s0\=uȘ,pKUj3WVb?Q9t/fѿgmuȱERlg}:9,k?*wֳJ.(/	ZZS?؜tׇ ;`5!7#	"(V wϡ60Hax=(H $#Pz  ,.ph®w`H҅3gP3,9v#^E09:о $` AT'0Z`ngWP4\rA5?WmA}KC,^X	%H~e<(\d+̕L(.}0AbؠQsh+L+T".2ʌ+I9Br06j @P9sUb`ҪD(DTf+ DRݡ`<TT#/18㼤xl$PCptU1q-?&Z=k?iK	970u1eHipCkȁ+6<#lfϧ1_	)12T}G&ڔDsn !JtUݏzc=aWe*0Uz" ,
+ lUZZU;7þ+'ʈmʾ.8TH1nhvHw:ƺ
+GN
+F`ǴHA§-^	ɰ[r^94SFXpiL`*^9yu<a]n}>:.3))V\LlIJuʑ$/3c=~j&?^`S	tme	:])#p\\[p`yxvT},;D3g䶶5tDaeCnYUͶBi=a*Ⱥ2iǓylĄ}rj\'~;V;[c?^wرcǎ}c;amwk۶mZ뷽m={TZ(^W=?g[^Î+fo %"SQ~Gh?PpcK
+S+wVO܏ŕcާmf?o ʪKSmu6u<lŪOp˅9 D\\?zԦCA`eW&--?9%[RGmTݫM(k8m79p1)6<3$ BU aQQB«`<1FM$Pg`4Nê ԍ6S!m8c ao#"[ш)xc>o6=Tw H"'+f%Ȃ?U7fd]`W A(85אn kW1\+ؼ xZ(sE]$zQm&DFw/b[c\*I-Oi3	Hچsf-}%;uQr; ֙EPWb:]))I.8P$%qf`"bY/Yl$ 	!`o9ߠKtIqq6C-l&Hؘ{NOpF \VSSU2KlgUYb}91a9Y4-i Դu/W=!QrSGv rjv|:"j`+zd Cr "={儢ljY۲m5jSZQ٭826Omܾ.;-uhV\	S2;.j5C>ڒӜ"o
+mep]4F\~aBG3C\T##^()x%k
+EA>A Ƨ-:MNWtQtwN6V]bJM~cmgR6_.*4wF^n\)ȸ/O(-I"TyE'WXLtn#mff?_qozӛ qW\qŋwݿx׿XCCJoKW^y;η-}{[})\S6(yʷ:j0BO
+|ŗ<Ymr O=DgƳqӽb=`-YDٝq~kR\c\/G,u\5#QËO宆uб*"p?K(mubf(}]^\ÃVZyO|ʖ|Ӿ`2+I˫bC*z&t?bYG^`-4}=3^Zò4  !L54A= ?l:3H҃Հ7	o@ǡTvm@9AX̃VU}2T!a 4t",{p|>j#!(,EQ
+1%5\+yK?:-~wԭzpXnyPb}^´@1}ey}7XOg̒FXd/"N1}!<⵮9QhŎ!FQS#((1bos ͹F[nU[ZZ%9
+g:P}LU6Qy,cnm/Ժ'
+Gr*r5TUWУrޑ6%-U	7IϦ
+%;ҪL
+Tцt^뙞@dۡф5d]"ԙXo.rNOXiŦYEi*pH՜<UTdy"S-j#56Z@~Oؤ,
+6+n\2_pkOb-nv0cå!m5	qqv6
+m3\BVxKy=:>fK.F|
+v
+C*op=~AW5Pm!ɸM"eSXV˱ːjD˪,A@:Ŝ/-̴}1>~>~LnO ,0AEb((sՑBObcPU	[n'i_[Mꫯv߇14΃;z7,ѭ_oF?y=3Ӛ#+.e8yõI
+yjM<g[o˖'Vgs=_>Piz{_%-lV\?HЮc5_,*~4n%=rBѦo?ZzVUua?W3[wKj3hm^#Ū6j=3~%{pB$9Zpj(""SC1Pۃڋ	S@z`a!^؍N@ #@(vwVvV$`r=/D EV:Hr	Be5Xu҃NAxPMTvߎS #QX>SBXH6PĈhw  rPKTkͯe	Y
+!!OAK0I`w%UWBTW~nܥf撃~ٚqG=y![ΗND.T떢2e"^ QltǝG/7K 2٘B٫R*D)Z}3DJQ11J,W<L+]~Zvi2-*(2'oTjLV+
+툮ZRm̡`K jFz@-GZM:rbsi)6Eo>,SX [g?$w&s戁a{+m,J$E[Q?5*W,JueTXbLr`^+C*-1LXV_z1gwck̆ywyZQ[ӧCP>5:heNykgʧjˠt:4+)R^kjC<
+m+Fba)qE}K8nhXQAcHx6
+Mw hl++\񆤑BST$,r.!=16J.M:USj8k$Df_-)0jߞ}'on_AlxOy&3(g;+YqEzU'23nsnb`=U֋ cV[!SW:pkS2mڊ:6{?":LV!6K8+^^\Qq>Oh=^O/yq z(ym렠,u,+U3JtXɊ+<ϰ?/+ ź׭, 9𣎗A	0@@melepjP.&^
+ $ (e+Hkq#TU)aa@$#[FكՄ4*;QtAM?6.Q!Au?X}k!=5*0:߆P>N6|h ]<e VKux1ҕ<y~#J\,l?zſdXEʋ\'CܤLwDzkkd(K n"`qK9;=Cބ"R9r&咡2ࡶmRbEBu}jF#)
+K
+ATУ1檴J;){tWmѠUG&J[sX΃I_ -kaX(,JƝGUꑩJm 
+,(4_w4(.Rb\ƽf^]f7=,.Oʋ5k+_o_2c)϶E~qfT&I%Zffq+iBl
+jWV:Sb?lVmt84KD[Ef 2G<.M1}fѕ&AnFF{4b>Y>aj|/4ؐU	c&XPcy8&?0> p}㸭@0vFbmǇ|ˇtYUj+arpb"W50(=ar]ٖuYx"ҐZnʢ3VXZ-s񂭨1,yra3{x*iWfQ\Qp~.+8yG,Ǻw;~0I,)WɚV=m4~XPe:hӎ|[Η %i{osK=+woHP?zv~&KL*i巄޽Rt::*yR'arw#=BE_^^*/0{	9y!C:7mN[=7T+'Rҟ3Btm^ˆ!6!Q$0%Ʈ[s=. x>TEfd+;zH@8/aCLCPuSH.|E.0w cvqO0) b1~#U
+A
+6n@:+WP
+6cw`yX;pF{
+gњ,6o6A~6lď[zj-ӯ	x2TO~r.mKIt\rf5S%UNrZ!hShwxo?ƦѴr I6B
+_5}`&@)7ȶ-}b\\||aKdr'a1ʖ=L7Ķ7({/,R @ gMW?H*clsgHd-Iޡ)OEzd	{1ztS**z4`?`Qlwx8P}!G.z7jS5x)Ga+ճVM`~DD1iXbѴO:$ZLZã7	z	lfs.S)lp1qyƜ3ՆJqO#:h(!WĄ kBX)G'cS'tU}azu*`	8ye3t&]ۤkbGf-E\sva	6051sZN-Eti/s	mRAq*rHOًEjZL_g=u9?
+K:8}ɰ=	\I|H~BZ
+1X|kI{ytGk</Bo!ڌ7Lt=zr1zܷ]ݛ}_8ٺe0}F7*E٭vom=EEQ AQc96DIԀ1&@FA@ڢ*
+oɽ㎫3Ҍ$ΟZc1c{iڟ+4&~OͶn @H``mrG34>R)!Il    IDATSpXON7MN3O[7ŷ1/?gߋj]{s(;3۽޳kw{X~6ʠrP(2(4`hn;oͭU06VP$o-
+vu@߈A'XEP:  ލ^xa0w/p1+ao>D	`.`m3̇Dgb,(@P:GqEqxuX>[WKSE%
+cݚ`](پڱ~lqPUJdi~,D+?Vg7]od~dÙ..)C?$0@_l=!ϹGD6] gURTl"8 K4Uke&PKM;5S:	jHnR̓Y#lϺ(tAR6gt3`o\v~T~PǢsg?;rM#ku󅉪jH}S4FtjseG=^_-&am#Z4ie)3{y+L?#Mź2l.zZ12xf+{YbǟwiҤGj]UlƐHрiiy,гyc%?ANi]2ċfFC٤:Ӧ>ZlP`4 qe+RZ%3͙9ڳfӌyf>=@-/%:rDmnsBW#1nhu;aR37S3ΣoHLOɔ!E4#|FEKPp67e#ei
+	Xպd
+`л3gLLlRFhnʀ`QMRMg%Cgy7~{ټy-[6mt}pW^yW6\{'hnYKʁ_L}.WKotwou-v0O;X`GZ{#y\F
+sآԼs{_-^cLAZW9J:}{-uKleZɻm;w&AsrTgxmۢ䭍wd@fgܟ:ZU},__@k3:(w}WSLDrpm@fQmȺ ;!@C0hcP5	y]P'9D Q3p+Da#oPCj`g#Gq!;{᭄q-@c)PQ41#-F[0
+C`&(CuYN "	ay N1ww8=	?lmZmnB)GK'ޒu~t5']K_I6i?P/פYz,V)|N:Ҕ	'v=jʩq]ڡ(9xJTX5kב]Qڨqi749C|'q+:m6ssYʉA
+.ljԭQIΣTb,o<vXnW.gE>:'D	:h`#ԼXN{eKEAtRЙ@(`Or}X8;`F |ۥSw(#5Ba)S2䫗O7j4tujm
+ڶX\MZXq)jEöǉWm]	"Mc0dV>;L䬚ujgeBCmb2Zf,7"DBG8M{tD3!R3BQѕ٫1w,MƦCSx`o*ؘ 93L/h$6Q1A
+_!aGCfl(hfQ=Q"с86m:Y~<# |KO$'w;4TڴEI6*HVH+EDզxt.yCݽŢ-<y]1/%RK2wH֮]{mٳ/Oo~wkXVs-fmt6m)ѝ\61˷N>e]JW*;мG,Z/Q\(_։.N)iٳ $!$D])PxDռwiv(Ћ߭ug;*c/Zb|bzoX}}l#׶ougtN/5Kj=J:µqR$3D!pSDgjGczDFBxG0eêdS_Fo;j#>%j^ꢸytE|Yփ^AwB*]y5 GT$ [A:CX(FlPvy
+ه# apG1
+P]LosR0~NUL6!lZ!5=Ԛn0J1֝X(ÀW+=(yw;k%g|i].wC;me(AGU/3mQt!+&ҥь$1jCX6jLIi:Rj%%i><mo($&`VC82B_Y+4Q$) Mչ6dwqRF!6g_(8գuǜtl㴥Jb_<!8#ݝSgK5q"[;m6;hc:Ñ\xy\&eJg@4+6'rm@zDzf-h2b$>m6nrɛAOI^aɾϢf`w*\>JI*#0M*c7	BT_X/X$o@
+@	!|xXv$#NGI1HM
+$2-=xVoۖ3kȀC CHK9<;4cl!#2X>Y`c!C
+1nn[lx?N6azK[zN\+'d4(앤e"}fdNH:~P&|q~Hrh{}$|-E}ds$JLjXtn.~w\H5%h?7RZ|tT+T8?Nz#To-vXƃ3J-vc\^|CzZdk:N`,ͷt=˪PjPi= vy9M	Rͯkw4[y/w:oΝ=)x'2/۴fq \2!SFqX0*P\ PBEpFGց;	oo9I}p@m7 A M:ƐB>Gq#Q37;
+¨W˳F!O@z To⽰|&@(TՅBԐ  &dJt_ѨQ4t 
+=h"C+;,2Gr'6>ޒ'8(:=NMjp:tmvR'PZu9Nǚ;5A:1e@l2B6)x|1"Ӄ;WY7T#Ӫp0IY![lMc52
+6/z6|8 oQArbl<9mȽs:yc6&]H?ՅWt؁#}\U+az^iRˉOEr%#E	v/
+Lt9V}٧j}]J'zri
+%Xt&Q}۳զLIHK*zqc?}K#^L϶%i$S"-:iX8~h^sLJ:%*)TBdF91|Op|qOw4h4*i#Za[Y&ջdlqٝѿY#TY9) q0;2-e 	R
+ WMNNZIlGb*\Gd^q
+3Ѓ=c60IES!Nv QϏ3]4'D1آtPpntes]weuc.iJ⧏t&3~zR*UkW{&%MϹ) sJ:X޳?û~oNn'?_9W\1<<w믿~llus=wo{r58=tű~MHl໫޷kr27;TcJ7VQB§)vցҦ6TCu~4L}y'/2zZ1e}F7h,Fj_ءڇW;/ 7ˢ-S_V9AlP@a(6`(-@C !z<%8#@`/k$Jga^ bԁ@x̇
+| P>GaC)L"N!
+tyX JS6`A6Cf -<PVʱ p*!T
+-Aq0Bt@ʫg (\\	b1H5@X6(e+%+S'6|ց12~;ymN3+mkSAgri~¾xe:Q`Fb	 [0*?5>3JK%9Zc.5qf3x6)s5h)" , #j=_vT$WmCZҳfߣ|} Cs_*:7ϫ\P`C)~\ЩfuJ$QDHʅ7ۣhp1EV7G٩avg5܉t)mGrufXqn-Z_X $ȈSASmJ{雤RxKscXjW]gTjMy!r"]Kњc4*x)Ӏ(y|9#|覆e!uVnc9q[_''kvϚgɩ2 3xW>S74șUrR9ZEe(E#-Tj"z.
+$'O<XV{}fFe'rT)bNY #lߊ,v;5,W<YN*m,cAKʗuxLv	
+7Wmf<Q~+2zŷEs/d/gYm9><#7t͛>/ nƫ{Ǎ1RwˍALe㎷~NHgalIڢ{3%͒c;;?MZ9#O
+J
+ْ-B1Xz_9ka8}C0wg@1÷Ap'1x FKl.7eY#+βeJKق^A(ߤ%*%-JzY,V qP; ay58ť%]@+!W@){  5CWJ(rY D>G@AP&Gz :h[^C6w-[	EFY%,^jd3sM!9هh=hb5"QpqU+o L0d#Cf v@bi/H `x]?%.MOT;r)U|k/}]Ol$.?up8+rU	b휉/4$)2搈@bR[&H(C.M⻤E
+Mq`JQ^lp84l(4<ՕQA)Il[9	}$;;0pn|]Qtn[)N^<)~v/l~*ܽR6p-@dx_vH~;Ttn_9w6Wlk|Ac'Gt?atZQTٹhh+/gav6jQ+=M7/QvNZ//x&X`}~P{勯lDKu$=gΉjVicH6+٥Q>4l~$6+F"Y\	\ɼ ˏ@,$M')P ȸdff\T'gεJ&e9DTPc%:&ZnI }Wݹ=MIF"M8%e
+{݂'j
+ڜ>8%Q%$oJӯZK<uQ![l{7
+QQW&VJ5zJ{/_|eYm
+7^y۶m^>/䒫=m۷~O[MaӶx,GjQFmy=Iv`{-5N5O䚒-mJR-
+G<IH9w%+h?Q_i_h,j|XfhuT!qJ2| KJQq<cd+`Aa ˆ9I$({5($c{ּbp-$}XPRBǠ61{F,A1XC @}P>MT߆|fxk 
+VA]D[0)4^G>d
+'AǐS AvÚd'01݇@Aۨ$pF>s̃Q=8f@8d Eq	d	!|v
+hBe9Z^
+o"KPCK>2vOǳ8ksWr;IѺOϯ&8=[ZVy\y#\XOn66.mJƸDOoʸ؞\WxKx4M3R{JȖ=̎u6{	H@	ɌjQnH|x]U^^1DQ6mv;VN*L!N;e'av6x.W)	sb,;φѻ ։t~LʻO
+>vjgNoԺh/(]~z^EB#E~v36ߑ%EY|W7}c)&h㵲)u0ݚȕ5Yf:BlJ'T>IB5\;FS27RnJkR48讜A ޘ%|!g]u}Rr30E2$͡,T]RMgR?债muX^&Ǎ!
+Ů:9o͖QAlg-J.bo&+G,6-uYߦ/u-CblFی69p;zw|.Z|k.WjxS/Vrk=ʵy(5bL!WK	g_ߙ|&~|w 	K9ߧi8mӿU{ok(wq722y^ٽ{SO=uw_o^>sΩ)rq4Mz5nqtttŊO=oSgq[-˾}oAI'WIW3:GHZ+=3[)jSͳ𵳳Rz˕{8;nZ3Wͫ;?"$ri!HBhmGq20#A(P.jE!OkAn	N hht_=z;Pg>t
+`e:B=09D"چl#ىҹ 6M>d'xԁ8@0)d>@]c`dÞ:!X90
+ *AO!z	ErG^N*E:hN]Z    IDAT\ +	(gl!k1*rtP_Ɛu`4ZSӓ{K(ڎg"7yB+|=ZHH[gr%KԒ\.*_v2l*׍P)|AGrݰ=DrՁti[{|'\6'-hHd>'{!:/Хdb@M%'6شƫާ
+FeZMZ5FFBN
+ekMͷF I.):Ջhv-zߝm}~f7H5芧-3NDQIgL zta㨂}mu%gqL'*SjgbvނxtwM"F:_ޗj_fs}5!Jb`ᳯ$[j~eJ{e︴'=>j]b2TaZ3_mn4X"2>L׻[$cS3!;V<R#e"=]=i deb0rXP^HM!uf~02yŘS
+X2d!P
+MF	2vnܾ\pzJRY:D<&N
+2z"t|{cٷk|m?=\-^Jo	?ZjYX@drҵ8;{G91!1g ߑ]u}w-![o?ݻ]ve{N=7MMM]~r˿y{|]w?t-/~qCCCm_uUwyܜRj``omm=3T0Ƒj,͏j`|MQE#N.c,lE,Eq~Ս?V9ch(:^1Y[<#<)DIP*,Q|Q?.SBq	N,*ui<yƎxEh	J51 3Nc^-կP( YB6#=
+^K~ρcp"{x	Jo9൨^k Մ`%X`/BL}!P/pVaup*eȦ` k́B. Tς(Cu䳐]Aᎀmē<$&bEMi'@on	a &0
+qZqEcVڝ'jA<u;(iuTol7!q1Rlf_ՀǷ5
+q >g'FLaMǬIfZՓ#=HT@Īev,eLf{@t86=nMʰ.&/)Vz̡ͥjBAo+8dE}k=Lk߷NOxvfj:w9֯|uraKlat:Ϗzܶ`fgV/Q;cy/,/S(9;Q+Ρ}#yӝ͌tYؒEGOƗ;lgfSQ~bkD+81j=M`<\s\~s§96u/쨀
+O4KÎt}&F-[mݚPMNLvH2'.,Cj	& CfE@d6xQ!{*2]>yüIsOj\0@OB:L72VYg=Rtl4i^z )	v`q\z%zAmU,||Ɨ0vb{;;˗MZզ;h,#s;zx`tNF}fdR- D
+_0ZyTo޺_'|oj^/|߶nٲe]w'>W|;W^ył{yg./p||_q~,?_J_'Xqv R-3,¼cK7h1pbJz>ʥZxJ#u׹KK9/()cz{Ja(̑$~ԚcyKn-{fehqa.&_FcIA)`hu(AX
+PfYl"ՌF0`A9t80r1C   ;֏PpV#مu/!଄j"| %/hxarAAN#݃ރW;r:Q\`]hw FP;Q<gVDv2䓘scĻ1hPFB!>Be
+:v 3C0("dƷòTfR"n7p8ÌF19u}|Xs]-S6A7zt&mh;;l*~'%(QK}6Ʌ94Vu#LUkĜٟ=JX|2E2%07!tH0*E@åh>?޼s1T+GTVJI;N/_ !ɲ1ց1son\ac lg~pgNՋ)R%qRWK]0
++S3+J2:
+_klxN b7| #겗d$n7I= b 06\`սH5ǋKHq2h?ahf?U~5A#'j^z[^I+z/)Cr]O]f8Ȫkcf<`afmqX.Ğ2όkl^j9zo:I gSPlmRv~jZrVoߣb+tdFl6Q-AAT+=fre"T3~wp`}~NclFǎLS)eO.b;|M'vTh5%9;VjoWz B__&$tny{GQqhNػwzCqsΧ>)B^KN}[n^AVXqe}c{_WZu饗#O~wHI=HIۿPjLz8Xn@yJW6ƛg.7[
+<I$=|n(WI#0 W+hC,Av40w%掠PBԃ A"A2X.>Ad!PƠ8 *)ny AHOAvTހS&C"yj:FBNPZU݇Ѱ(u7>#?|Ćg5?Fއ[CtVPD@C>C = xd`2GS T`.C=`d_P=	^t+) BZjCC3f[OyTzȵzTJ~e0Sƹ"%S=XH=͎t~˹a 
+sH0Z 4ݖy+HBaܓYy+>;Zz\
+wwW&p DE
+P<G] Bd?W1v҄1z;+d17O`fkۏ)Cr01YϹ-+-<cG? B?z%^d sqZƦ([]0ИB7E۵ҳ-+ɏq'cÔD㝿ų8(N'y.E{`D*fgZtRC֎\)rԦ}L$1ƧUk˥Q۴ܶ-m*KA,3 zDkژrF.a'Rr$4S5`K
+dAl&uE:Jt1I_[fgx%FL-t6/nK36g3vP]k̶U+3l_)Kqvgeuse]8yCeIng{:YKl`{*I^'{3Qzȣ͵ۇLK%C~ꫯ޼yƍ?ϼuQwu׿0:ݴi+y<u_@٪M&hm^nݯ~W#Gܹsƍ*}љnfz@`/[⹩_EIxL}EﻅVߛ&+)I(z7H*ċ|{F˰DkbcReo[a_N.
+%e 5!l6nX[B!Krpn1xeN4F}9J#KP)A GP<=&+|!
+g@,I @΂ Bv| EjY©pVѳ!ą^X~6
+rT`d4 D:aaUP\J}CAXf! @(  ""Q_ !Hr?|eO*zƲ(}gұ(~7fJA'ZhGH\f>~?_E/=6m}6kwػ q
+--y<qX@}9:3e4:r'k/s)UwǇjRk"Z&l"JؿNƑgoR.u\Ȝs7Nh%o1qyXҨX| a;LL1p5~ rZ\nH	E&;ڶ>~2{Yu}z?	"p0jK^&$56̍(1$X"rE% T9-gkL]aмk5\}~k,ͮ^4Ʀ\FiqQxY>'<Ӥ$pOjx}t,/h;K9h+#ؤrͦ+؛-6+t@I)tI\'BP5DΕ |Ұh;SŪ2ɰЊ6	u_hFrT}_qH}! Vi_O;GF1[)[7t\C$D+0mJF?B0]~h*po0)]Pjȶ3fwywmq=7B2Bʬ(t?mPVڱ9Y~Pc[J]lc
+OA Z;yye<ܽ7xgqƭw;ַd(>ZuWzֳ \{g/?#zիN;SS?od
+rʬ8/J54.$]B(J]REZW_rڲft2t[5B8E<o`G
+xa1<,A ĺQ`zK%(BgIe>6V~Z`ؠiX!6d)V,h/0gBĐ	d]bjx`4Am,A5 4!ߏaPb	ԇ``uPg<\creχBb >v1-#? U] n{@+\0X,@}=5l\p7v)D(C !@cv =	AA< }pAoNE)
+)5jwx䦲trLR[L!@?^ yP#&;R? r;OpvRJd`ɫ^TLl3ucvT(#WdJ6[ZآXk![Ŏ.gϩ7wEɫK~/ɯ{b5wOáxFoQiv$/;/?躻q5[}k~utj}¯,w.)Zï:oNPf<8۲yJZ6_TVJ%R5䷄w?X"媡ڝ~a~~8|Ca9yy.%k%/^fk%ⴊu {\</wH]9.%S.IS҈yj<h7R(H>k'c"HxL4#9,u^a5r,)!55 H1|-Qal~<J6qzR>eFX4Z֠1XwdfIµuD`G(*~[ſߍFi2gl]])ru+H*g0H#S6l yA~%Vkn)X},.e<_1%Cz'?ɏ}cַ|W^yUW]us=;;wp~zպ7^{]w...-o;-[J?򑏴ZK.ӟO9ϳyBRebgKH2hpR58{T#kp߾Jx!kwA2J7)e(rH)LpYN yS6"^VPq¯a#j!4!Ds2(Ae k@"!r܂P8!1\>@» sG9b.@'tjKC^NAkkNan@!P}	ApFT*K>"E,D PQ[0x>2A:gJU|YpV#:ga8M`pJ"\J@d(")DQ"{l{e\"@QVa)Wq~TuۼWk??_a?\AHJ_tor\@F&6	 QER);yX£jVkN#UFjeNl'*{riܧaNǼGf_=xzj^<l1?S1\vߥ};Vњjm+U)R.S]{)?9|'aX{FXS
+QWDUwi'Iq[[_}u${>gSriF鲔Rץ6&B̻MWF/{i!_V*-c;~Ck<O{fҫ7U|WucŎgrg<ФB*^]qKƨIR]I<~GrcLB,Z%>1[Z_/P^hr@$	h+dxFh8(Ye8^_oZЌ1ڱّAaA2]Jzy?A7k"_OaE ee;K? Ր9QRo>ӋGY(UǊqtW;m~V ZcJyRW(E ܱ3j]yiMhoGbT#/^wEǞDyR{۷0MGݶm}m߾?+/\B?e _}C_- SK5g]{C:%}in^ǳlk)6?S
+!AZq|G=TGE9ZgM*J (sD<­H!K
+BPd 1hl Ӂ( Y i#Gچ]A<WCI8u13ЙBsdh	a[wt{>Y\ubpN+7h ք@W Hw9٣(`^+ 0    IDATf^҅CF9g#)>d zt({	>z30]XNu%.n#  JAJ0nrǹT|]d#͟0b/p)(KFHM^vF?|b+%y"&%ҔrAUCr0 =դ&͙D4R0ٲEKǝfrXz+/uwgNJ8>ۄ\S}$gJ
+}q.YJՑ Aof&ĩR=ڻ|MV<^(h/7!`yi H4{a.)803LLZ>I svΗ$!x)6tyyZ.7ݿr\hǳn+庤4[kv
+qzZ\l$ݥt S˛!L*]SۃrLlf*0$VIYf5>c:ZDWIUJ}7B]~L|z=}E;l<RY^09SAB]\mʱU!F|iY]̞3}*pnȊe0~sz+hQ[;o~2林E<H4ZAfNm7r7VlƧjVݹ,E\kq4͞8)iQ(ת2aY~/}Գo~OtA't	!ۺu+ ۶wujm۶WJ44I:Ekگh@yBNf%e>Ћ5HB?i!V;}M!6ԇw4{N@_2"Eqi=b;^IÀ"t$(Rx5z0=Jn]w>oO1͵#^!	fVZ"kn֣Yy0!Z_>A"+~P P	X!bQɣ :ȎZc̇*< zp6!~4ds*(`C&A!XuM!?]Zh磽EpYBH EǠ[ajyw;!hwĵ9N)'
+2`|fM	]%WD/Xg?*T{\56kxFvbLBwDh6C$vE͡Y[ҐZ8#Kٔjdbg.!,4F׶Ndx Ire|n͠	a4&Pf<qp0hPtگ6MsZ
+%g[GpC,Ϯ<ET1s9qr7~SDr71;'#g17m13E׼k}8?d9cM{] E^Zw	ZxhquRLGIuco}i<DZ<k=)_102ϕf90H++dBf&IFT5\6ʑyQ4Zˇraws.Pwe(eOX!gYǮ<úayuV,݅\mEO_W8ˮ7DD5W7IݶB I۔B)8DNQ_ ԉoʨQ Z(~}.먋Jtޝ8I0QkPjرn㦍,FGH.-tJ_sS^w-WZWt<}(/.͊:_TN/wwrk7+hmkmR*,mAsm6L{O7Rf5chm	1S0p"G׻b;6kP0XFY
+A	h	 2HVfc'08	T7@0BPL#0*Q}6 l7Oq??Ke43W|/XAP1bhr	 p\Ȏ#>Uo!z0|ECC2QAwjb0Y"*,H#U x	Fotڻn*ZSV\hQؕW$U,+/H6crqn,=d v^T_*뤪
+'9_83|}KI߳=f>0R{ ~-Wig6xҲ&S=:En`(R
+Ju1
+nay:AmP^lXVK)D}f7@qp EAFv(rpB!JL-=Z} $Oi4_OzَAq/dŔvvx6V)mr%RsAťsx0F7~ЄH8^ѻy.}~i:-QU@"qP&#Rj6% HMDgJsBT .zЬA.is:ΧMTOF3ݥTbR96~Ѷ~fGXߤ縻,eXBQ(2!RhPd1LQ>:7h2%Pd(3t5b",4chݲRBP,FYS.~=HOt:=j.$5\-O+~fggׯ_JmݿPc5Rb%iavD jiVdvbm;xe<_uߙt0xe Ξo#+?
+i2T~J!2(JZAЀ߄a Pܨ i"3aH{0]c0Z;)qE$e8#P%YP`-0ڌw\&k4E=Y}Ua(7@CB.!&r	Q=0 ɏ!֭|rP7A+wd@(O;G?3D4Cʝ/xCz/
+_ (38, נ%v)Q)0BV_IIdwWXk}@z.?4]8dUf_HiWb!%
+$Y\ ucP(kiX%M1cm<ieXGAcALC	0P&{0L
+ʐ\ @JB(@	l@R,mt5]zp< [JP
+Ƒį5RnqzFT4.rm)6svcYM8Pv,>Bb)ր_:w	u#@V^ƽR7IMv8;:ehh<_2~؞Piʉ `V,F4N¦m*\k9o1ё|
+m7H#HRO6GTm@D],Z.bD$3hd.rIg-1׺5/V/ŤVTÔF<]`X+.N}PPZ#CBo<JCZLHV~8]K9UF^2o`0zt~JS!6CA򺗷 tGg38W[/?4}9.ϵy"4\ǧAΎE#7*`4÷ZN#Cu2;
+ۥa!Oj8y%"Ì|
+Ba8 Vf"뢾 `6 f {8G]hpah	BJmBhZ_$NO@;aT_0dΙ 18Cڈtx/ ;C$k^w Q#I8*[]XM hnAց*6  B>SAAu'=Z{p1Jɶ&sKKkGfBKgNF[}3!Y7^\pm<r	LشTAG#t$)R1'rYi҆EЖ6mJ
+3	d~Ert޵rR!2pˇ!
+&`(bxÐ9Y:Bg X8/aCDh@8<(3 
+ c`eΖfO=?wJ4!U3>C)~±n;9s`2r}%G2KXk!Rl(iypRld})g{7T[fmطmhÔDvJjәv ܢ6xbsR6L&6Y.vf6~8X8pds6cv)i`FsD@N6MViZ]l;BlXwƏ-^Qy9U.otȴ`Q# A4f1C̓rp)>K/_K	Y2HThHBZpѝWqr~J4jD߿pyw_.{/b wӞM\v[S_-	o%ŎP2R$ٳ/FKju(H1˞K\oR(,\Ն7oh/qٸQ/l`,nS)Id}1[AG8YBKp6Q002Cރ`'%6*ې/aGXuP:jAp:!#ԁ{2m|N_!X <P1>+aB,Ȏ
+Z¿ F"aC6h@+$@]hBdƩbH0t,@I@Z2O	klgj0qvم3y ~Hk3//0R-Uým^t ]T19TW
+J4 =1TjK*&f"M u8Q{a_kwۆ#)ڋq`凹[ pV"La0},tta+P2!HM;BJd͘߿-%[CUsavqjM+2mlH5lۇ|Ti.my۝? ,v׺]EG~{f&׺#ɯfǏ}ch/_\!%=FMvN,0E/T5b@,vT ņuR*^B;maww0YORPbWȆQC/i_RZ2I`&ƒ<ɉ3
+t*dsWw1aJ{(;ͧmZwfroҗN8Jt1,P*d	_	xC("h,; e:hLTFaKނ<BruW<6)@)D)sp,HPf3X6틔FK<{/|=cߓt}׼<BB(RJBQ=_/}K_oW$}黟'D9Yqm}0Rdq\IIIDHTef)i%=\7GG4p;N##UPN@+1d	+ې9A	@( ĀYE jA2p=yTvpa@(*g!9^=KhN9D}8;	 ,~Ą5UQ̀y`SσPήP[#(A8!S@fPw(y4C!(7X[H4鎳k-?'+.`
+*QjE?OMx,|%F67rhKHKd.rטC\BRݕf	+_Sud1&BG
+RCI!ZPY!X^x!Kc fМ71v %VʫDF˗N͟lhn;DAknKq OQ	WtyqAv_B&/T^_'Րcjs$j䵃!BM.oXw~bIf4_Ysg7+?ӾbI_]jj"Γʧ$XeYˤes i^fCzJ[<S,P5=IMf:ݘx°DHuKC=f3CԗԾ	vZŤu7ֶ[MyOƶ;fB,#5~ҵ4Fe-:aWXۃoymH-LflQmҭ qd'kCӄ  .cp|=(ˆ(Q.`_h|F
+'ԑj/W{[n?.so߾}s_e/ }jFlG+*އ7f<'}nwlkgQ\Po|_]sHlZ(W{A0LtUC	1h1	 Y d9:YBG0Q0,蝄ªPـ!^pF-êlBl *b90'!#z/ YQ	IiOj qrr	A(fVJ.ѹC/D9x7&ɼ	5`Hl@w#B<O0}8 yFo)TmYB`qݓSduA<yyz~naJR+Ǘ0:pnLNzjdѢfh)BŊTZɂ4ti)+եңкXkV]ռpȷ>Q#LhoJ`hsVnxw%9EX"?!Am[C)PBQ LR@I 7ah͠1%5LJb~Uc7@!ʲi˝|RtcG@~Z?m'tfϢ$"Db֞mG-sO]fp!Y=[1rr6zר1??0ƽBM./Ѫct>W3EBEBs&-)9I8b#eN4 "*ĉv)An	&ANWPo{XQ?ty36W;VBK)ժu-):EFNCGօ7Y ^Be%}k00*4@)+)HD"t@A+>-hG]ǈ:]0~TzЅ_E:@}S*QϞ*~I{!̲3<pP^gcǎZUݬXk<brkP-k6~ >OH}:ɮ!$%\eϻ0a.ZăQ%ay0ݢ[A@+a J 1pmnp`P߄&Y0 "sм=	3Vp7B@[QLC~ )t	'4OY ! 0 ?B`s3X`#yǐ}oy5/5@tTv * "	@Mh](st@
+[Aڃi߂#j!@*{ڋgY&&^:kO&o5vj(/%ֱ2sz!.H-}j/6uDHl	`ug"6im)ٲDՍi`PGw?lF%J4bqPe&@C8G<X|xes##BZ-A(>
+ڳ(Kp"h031k<    IDAT!Y6OV1ÓGO^)VgGk+Yۼ_Ru;~żQ 
+<G!c+r4>K )/tiek/ vsY#>SiAҕr",ךŐV_i12)~lڣޯzjJC"/:`9-uT+4Zl5ODÓGo%7PnUF,$ۀ]"D0HN<F(	f B`LYE}3ay& 02W!0,0DЀ߄.^~v 1F,'NeZD_߉;\ZL??kڵ;cu4Gۼq^kC/}޵%$ˋZ,hop#I)3 (UQ[U?8,%_E YʇVh,^Vhz rUBd]Vyf dd3	ۂE[DRF6X@x	̍J&y:҇amA9k Y;+6c B 3ghUPd1I@!_@rjC$Ⱥ0=O©La̓n5Ԟc0,t['+^{ ]cDQbCF+q~kK/{xL6.\>͕Ci).1|b.%.=t<=ܧ Ao	8$K[`T  (x|EBttwAl'`5*P@#p,PDL#F6SE>@0nAdzP0d}0N99FeNSmÃP
+E"?Xtۗx=q|eK]:W ~k^gNɋ$ ɊK\]e.R?x׎-k@rc&փT<v|xPcXLL1Ƞ/FhMlDP".M5HDBg#NH蔀tħBj3,J
+9G" ҇2	ze
+t}N!׆Ǥvל%0̂*`#Fe0P9T栌Pư4A(T	%fBp(H{L"Y#Z`qpY0Y3PџEm=Ype%`hMðUљ_YHEt,yLͿq'/8t>Oٳmo{y7tӓto馏{ \~o~o/˿΋N ק% ӽcJU^\kwP#dP햵f_Ջ$&189a 
+n:HP=&"C܆`y#0wcA]s, 8/4)|:`>ՋP̃pX T
+V~
+ԿOk ."X kQ1"x!?	ꢜG0D`Jz6P4t#;jԷ®ZAF	AXG.a(RJբ>cl)J	I8?JN+ً_j7wlÎٷ~P2Qf[?1ɸh[ #K1f81bƺ077-"hgDנyK>jBKPPha-rߘ}vSvTJUB>QA@9^(QP< "$4UI*]_Zsَq}ě#cx?s\{{_
+;p۔pgq.MqȔdLacx&EB}/566,AIE	FEl<>1|,ٿgx\Go4cnoTozoFe8;BO@v>=No/x<qQ~g~ԷkGw܉7b;:>Ki"1߯'K棫|"[޺εQaJB1Nfk]v6Cyx~g4؟+T<1W⼲8X]<6lXhbl:÷{Ok1l]J1fRLlD;MTN(JD.P,"0=
+vd9XWCINgPE N2&DYL{"ŭWFJ&!1̑WbmBa-=yZuС޳gOV{gggŕ\ZQ!2|Do8<_rۻ_6Ja3_<G&\'(ENOҙIXKRQɘٽlݤL=; 4c
+M4<Nk8-Y.fY=Sٴ¿au/ce2F>XܧWkU$ɖ6B|4z!C
+{vu1 ~=Q1,f)&<I*wpZ2<L$Α6>=&_̇t7h<g8$гoFOޟl?EТX|}e#9Pƨs
+K(rRfW(JN
+PO~'yD{]|	2AsP
+FbQcx8YHۤ}דnom 3B'4=-yǰ*C-Z{.cTvES}4x9)۴hHT1ш2)ϻ;7zJlH4%hk߱Ǫ_NCuo]mf׺JY ~e.;ߞ׌%/[&Dfhgώ,k$_pIceyYa*=؜<N!muK\']u/TH[Ԯ;#?WboY1[
+w*=yxGGkkJTAy7IFиQ4o,qJW=йE:~
+*܏UplM! 2s9ǧ`4k2\.	{4>Ikhv7d`p}ݠșOeܣq,c&4Nɂց>2p{?hN?~طo_<Lǎ.waz뭖e=/J-㈮,ŮŹܿU[a;丹J4"1Iכ_.bQ`ڔqP
+<STAȂ6B_U} Cy?2٤tp
+F0TŘm`֩s驇摞Z	FoxE5sGFcAp5
+f# ݃U@)9.(Amԅb
+!0LtRT˺9QM%Jٶuj
+CZ`m|Uֻ~zZg=%Hd)a1^AQɋEĨc7 X>ןD%&*G!^L4b04n]`HW)bܝÛcpp&lzG)(:V	U5d1]0l49O04vc{l>?ȋKz2}А*tׯ3]J3PQ4}ZRmhy~3YdOO+?mߖFQcqL:ɍujAж77\!m%Ѣb:)`
+Ƞ@_Ijkcud={R7 stvm<R]lGKlC)
+kQso-UY"mjWc#:K]1C٨<d@hTerlHYCj;D[XeJ$}t`Gpk,	"J1@hn!=Md#t'O~.hRMX6ʩp@O<}?}_kZ=tСCq_oz_OOKj5y;"V7baY(v:;'͍(bR
+93"\YX#:ILDr]:yNINCItU,b|W{/E yHiSLΠ2t$[1{U}dDX.G%Et7GSUJsR}$<t"DI=FL1 *!>KYhBGCWyDA'0<S^$|#tO"4&cbs>fֵ-D!2]V?%7Ilk;;vK&n	l3c@BSiŹmRiRֱD
+÷?N',\Jpi}?fs^OyWR굨tqNt4.dXU'BCJJK@Ki"^R,2c2bưpȜ']Q<dLƤJP#ȢPTwYv1ե(.lXT4xU࿯RÒG%õRViu~ܶVkό,.F%N]kDAePMR,񰩵GA6O<WyN"Op*QQNb¡t"nib'8ĳSTZּmDjiصW
+ql&x!3h~EP%:E%b60/ۃt0<y83wU0{Ni]n;&)SckטMnaqEA>AJT^,([b~ȑ#?s?W[^HɓR)B~H 4ۺT{8|Rv%xeoi-.EhZ4փn	ݠ%w{4@4]gU$Sn`0\E0]%)vlH*6z@nTA6bǫHWv(a6)"K)F5&G\Dé1S%V9;rJdgƟŜd)*'Y&^Y"
+CDǱ"S4~1>&] 	M25LcwVQ$W'fjo׺=N՛jr`nBSyO4*,a*)v(۹\ץrYm8'7rahs~M7Z54ʕػ@cx$kxvcގ@ge/#]'['(A?H
+i&]fns72JG	O6wfGX%4:G]ef/p8%&Gut浭<	"O^]W}O3ivTrA&M~K7KM%M놓WXXuSqz|4Ba;<S띿ѵeGNxtm/̋׍~0\9JI8&|,K _D"
+E/WHZ\_,inO5pDu::&63!؃tüyaeߜ|UyQۋ1 P9*?DJS;Q9fII6[$[xp	F(*?S;03x-ClZ֌)*aUɆlQ
+!0SjFXT9iBJ64f3\J蓚otxщoVy_O~W]uՕW^`08qw߽׿ǇڒR]?'~|7+?k%36G̖ޤi])BLƓWo[ZW	12sis理^xLc94Pufky"lF)t&OѸ E;>ngE٨o?FNĻT9FNKOP9Bg(=>![FX>wKȘc==7*Vy],3YGw6@ӟl<=o@ә>)H"4Oփ_AǛO7b8)vsD62U1-nY33Z:[Iif=YP%˙sٚd_/frkHO` [
+JTJ	Fɣea/aiIfCdY#FI(~yپ%$ۘOPhb]%1\ş!$BLq{:bW静Ip,%JbyN2)onk{aЙkmCim0zKI^i!xl^;E:|=ж!cgOKb|3ܞb}A!O^p,ʞ1)(e򒣑H$8R	_-gIMkNdRэ|SsH]?V<Q507bזK])D0=j\B|ApJRكDx/YgJt8k{~ofFqHf9Df$=ҐN
+h&tp%i]DNԛX"9UdWg_#	&6R~vk4~RA\={[o뮻N:a^袋nƗ{t.vm??yO~ʁ'cYrߟFWnpK¯j,Ac[_+YozhDeagԯh\gE7jSsbl h!t:'1,vIN*
+bBڝ3~ҥdJar5K;	½E}׼z)_cx^ h,Ix(ǻta1zK.J] 0<Dg\H>JOHFf@9Tq3KBc0|?Q)'\gǶ"k{iykGL47l<҄iB,SF,UÁ}$&3
+c(~e>躟ۇY/VpM͝M.}&)xRAu)$;2&2t!3 2>Ջ,R atpm]1I#[Aɩ.U9dL:RL zsAŲ͍~{ΧF)K"7OLcݣIt!BX۳<${F]5Y8tTr?4L^'3"ϴ5y^Frّ1׵v
+Pth"pEdΤ$[G
+[g'_?{gy9/ap/Qy1Oa 1*;4
+?wŀzP)raӘY $0^ǭSDl=L0C2Ah(9C+I V9Yn[	
+&=]l&զ2ݺV)5uGtOv[\-C?CBz~8Q|Dji5v秤]I<3<i>BfxgEF/Ku!04m`6}4W!c961LlY f/s)GS"Of3Kڧ|>*g|uXSNt{~/=lk7gOͷ0fOk$ߤW01rȘZ{(Btglh/&mcx fS)%g$)    IDATȦFxiE_:aG(yv^)V{o=ݳ.Ib0rj~V"=M3P+Jd	S@@B|P+Tݳ٩Ν-}E1b+@R~ԍIr=4]%~@{	aa$[!9!W~ϒll`HÝCh-'P]v3<ᒎFBédLO4~lB8rgOV`ac!|.O)|l4'7'4}jsA6*ǺK =z0$2)/4Q|sx]91U*חM'M|DZ,fŞ7JuD/IQ8uHgRn9wlDR_-9ߖԣ]ŜB@f>k"nN^(w!!J/$_]N{9@9KO#<@P38{p9~G	SL0K G)wS=/#]} "),G29<&PxUJƫ2 J:Ȃ/q]IK5}~Do\Ys>Vș0~iM|fMivnmf+<cпtqY #]'Oɋ<#0 4BөFX>i[#Oze4$Yy)&Vw"ƙO0s=Ř(G09399Cza0<cOɷ7_@"Ǆw2*Q}'HN*F/aP{6y;.z	ci=F-SĨtL38)ӌ#	\A,ѳ]&77Htm;/N~dwG
+X2V2TPs4SA[4E.u磱s/s}磖ob[6H5|׀{R 5l
+!Y8fаkl	iQČN}2S*0ʻP4"Ʈ= "yBQe1JdD&Rx_:ι;\)tvן1D<mye_)4eV;Bizu쒴~euU	gZW47Bb I95ۓk4:շ5Zb4Lie76-QYzRՏLX_Ԟ%}>\O./td3pTFךٽ̼p1S
+ι">1^EXh.=0\Yc JRgLpAc 0<*!Si^3=40}`<BwM: 9G![p_5{bf2xWoq,]g82MˢK'Quu',+vib(4nmSmYBfDR֎,:Q*9dFR]$Ѹ*#<]66fhitAehޝ3p/ڇlA01&pbGz
+a\O쭝!ap'2,IuHVغ%:dC#ע;l51\*EJu>.t)M!,dRo(rQO=|G煈Wc~5*[.G?Sanf,!FEε~Qh~rǆ1ͲAZ}Xs7frΐغ@TQ#z6Y`t70h&NݔaY n	x&ve%
+h	eҐ}#w3i!O>IwR-4E76'AeriW6>=àL^,[GԴxe*C?=xg]!UE0~&͇|3xQ{IwVy(;Ik޷P~o6O}ЎF/^R̲adO0a1
+o-&<gFfBwel&+gNߖZUavbi۲|7{ XMU)YUm`$ B8*<*U0~bigwo|H1>RȄy;H]gJ&%mrJ(Is	Ip:ANydWg}шr봑&lm&GC;_D˿Wb߾}ztoIWJ}ꇒ8eܿ߶sǏ9Okg8a<244C2°+VP!0lLV0~}q#M;%vP93Ԯ <]G$
+#'בcΓE&s)2D|WC4sS׿k7ďLo:E*VQQy K  Fs>-On"E0}TN8v0,"IsmH|a^,kYު.0ǲuG.nD?P(#QZJUJ[+Z)Rٕˋ\%cޭ0,ϻg4zv_+?E]⣸ȹUпErHW։@eesù0< Ah&E1\#02NO6&f-Mcsm.Y
+`zJQn1ܞnĺN^"qk:`4ٶ΋}wo+i	|ض*9}g`]*ϼ^zK^,eEQ\lH.
+Y"K%C뢴^d&rC3QvU;=L.TeG"͕Y麸$*hmPEUNv#u.ƚ6ӫc<R-]ɵ`IObTW&BAntEfȔ4oC1]#xw!*pg'6$i-&ay-ʳC2U,@M4CTG)>T~[uAС}}=@1LcߑWFJ\Jy%OUWʱ:.~yj]3/t5ev1Y|Qn$vI<m	;`q?fc5/">{y*FwſsT7ɷq.&[C!9QGdLNSQ%ug]](f.2|>UA1S ͋m2^1<Fk)NG8r,+.
+t(z]N+~T;+wm>*aܺ1z{\G?{6TtK(E*ݒs+ٺ'qbj`(xET>z~Gg)#;qNhf=cgE`&!sЦCVi:ӋSAyQ 	ƽ^͵ǺqYߓOr(v'ӵB4Ӧ_悔8/:][[~m> ecȷ.{=N;Jd"L6]_߰$^g Sfn"Ri
+RG24'QRC(h5m֗kMNM娦R/v:?<eh|xR\;,Ȗ1fHZbr->0ꌿJ݇HA@&D6YªN*E2{/txS#`kN"3ՙM:ՆURQxDv}J߱ǃ]ww#7H%t!"u
+"ƛ&!zR
+U}MRP^Tl,3RRnvsk5SvI`ݫQoUv#:B`1K*v:<J3u6<$%Ě&A
+ogU+@ Gg4|k	ktُ,¢,'Kͦw'+H#L)Ntٸ%$UvC(5~)v	ItRK4QELo9}[_35eTt$K-ڷu}O~,9$zß~Chc(ML%cR^6kr#P=5O':Ш_L(Bkh:qh̨w"şî:;lX^'$Ab;8>K%abvGL	ϾMƺq|2Lq)+{7yXbuC_1QzTR. lD?%Ϻב-@I+
+z8_,e(By=aJrC9C"vYcP53*3U>"X{5@ bǽ^Jf:8!yUl 'dCIwc;Gx;K'`Hz EdwR8Uzgh?̳	A$F߰qdc(Ϗ>37.h~S[o{^WJ)?r-<7Q^	!}htǓWTN+bi>ݨeOMŎs+|X=$eRЯ>aRA)n#
+An7)RɤCev9y{ɻ%FG0|Z߃@/Q?J`c}e_#o )'L3K ɣa%ccEz&B=D6Y ^?J% 0\AO!0w1٘٩Xp|4<P;sYjV6P)2'.caR[w;%oiT.Kzv?Z36'ն xQ4+v ]	nf r8p}Vg'Sh6F"ĬӽLo㴐ԭYgm4wlgr,N%cX@ë[>|us}a"ׯm5󎷮$Qxy UM+{skzPciYl>&B]v=qK?fknp]ݞq=+-v1n}RvElqP2לHZg%lbx.Ԋ%¡2V|BVbҺr7ۥrbz߽˽IR%Ĩ$Nw`6H"t.:͗`rc1i"f1}.-tŮL)NM20=4Abd[c1v]AgO'UB|lW1n^~ ~~~aN_n{_7/&w\|7tS||ݏ*iV~;|m>T?x]iMjo<?߶?[WC8j5i\j6is `$!NteL
+EƛD[38^%1jWP9FC:*1mj/dd970NVF%CxOg9ЦxW ďW	D(H7/  cz0zoC*2ǩ
+I2 X @3A1ܠ4Kw!na.vOr&,ybm>aY~,b>\􉔶Ёg,$?04*[շ^k_Ja!=BEdMEÜcyt9l."._ř#<hxdUP~˛Z*IaaZS´I"G7HcDs~ic<T	n)Ve st#R,q!bLRU]RV3'՝%lqL6}>MdwÂd}dOVˈjB)s^Wٚۚsgb Gp2`(Gx3uFQ
+ֶŢ%B<:.S0wx0x?qb !ƟI{!CC4hz=~3>ĬtH"E2mLN"t*KNgtvN &]=LkO[^,~ËW6y׽uozӛnok;}5Ãn<w/S3ٍmpok;|wQP
+WsyaGk_u֯ԾÖٵ
+1v讒gɍ dx%!E<Aawꦃ,˽;vNv)B1 wP$v`G*AQ"i 	!}';%s;Ws?εkαzoi<DsnŝlWމ9ҽaFwI;DGЪs)1c$Y|&mS/= k *=w2iBzTFB1BCP}ػ+t@h=L2|e|"%jushEJ2^EHt2IIY4,tjޢa۪bKC;}vRѫ3%"h'e\LbTTjY(zP^?zcڏ^x ϝ2$q=LS}hS3?K1M2g"=Z]L^΢Өwݢ(Sf.޴s'Q
+nc81Zc^ncN]H*um ZBmbve5(rFKSȴ<g̏*LxS!"[fﮙ[=Y9khbNQcf7m?giAJ9tq~޶_0e7.ϋQOD)GRX2m}FOrD[=ؒ{b[BjT"QZ&F"Yz7ra_%:Eێߢ0IW@QFDcL2TJtC1z^RfKCs?0ʌԧcp=2'9azd8*	;T0:!YBbX`_etqKY'ٔ:|w+=n_'82神PZOʋV_'_]}OhLirK $vN 5hԉv2'4wרlAhUbMRa^*0	YŜ'~$R%CAG2C`̢r!me&8MGqΧr	_LwC-o2TD6F{S1+URb#>?&6^4R^׽Mʯf^][X\kG) ~!EC
+u~3'N6_fFKre)K.ko?1J^<-y9/4_~aOo.Czݱb-䢏Q|3nlHc2&8FpGGہzS*cxhn$`V	2'R
+cMK4܂fQp:zA0 2KmΜ8qݕƛxau2Ȯ5	_YWɲK)%oW_iVf}=zdXS5M4DA^=N7[qjSԝ??ܻn}Xgفq4+'|_zRl'棣\romj䭒r)=+)ק"VeF*~O)CQZ]d    IDAT8,*ҩ6SHH!$hu/ᜏ}1E2EHNFu	@`1<,.H%^DjTcKb4ìBHV	:ELRf8M/iIF9$OFg6Z !L>c}1ҩ+*]ROh.MS˲ ]ץ2IwGLʡ7_~,z_FoW7QB˺|H"&$B:T(z֚>'u<E7	4EE>hy͢HjQF6&b<C6ڦ9K1$`!Z/G=hܱ}RZ_#bBz3J C1Ct{7p,"M)Tu~GoF>JQ,Jekڇᓅh~MibV,ඐM'jLRlZ4%/K͎uםX>ejoAj!vX"(cZ˧=#ҳK9ugV?^zkiHr2COޡze;ABTDOYd_'-Z,E@]42'ZBL]83/U%a5(3lLbO/MBƝ:CNA&v3X
+;h(*Qpl;i?Y(Ѝ#Q\b^lrj}ar-8яOL{}GxߕD?e~8-Ν᳋bAq\rٟomw>	|ĵ?a^XӗJWKe=m|e>e5sD@AєSő3(f<5.ܔ~\I@~,M̙mmVN?վOS?ALV12Z^Ncm8i	H~SEL>]TGԡ}PL|/;"<
+oKWP0{e*q'{o	]'KHFW0w>34f-jmSsD>ean(<ΤDx[Zׁ,s_|^IE/z?'IBJYu]t[pcc?׎7̻tU: ȋqgN\.5B9f_3Lqkz?1*o!"EA2ª!̡; 6|w*("-$m%R!)zaR)C-3*e+T}N`ޔz<>u1tچtw?etGJ֧}+V!ՃH{+̕p[q!qf A,de	hf0Ww\m0dsn7#IŴqsgr[IomuFN	㲒tBiUJ;o3יک ?htgp%=Gr,.5*'xP%ҡU(G(#*W>L5O%w'(sF6Ң1?Dmֱh)2YB	z<-!u[#AZofMM,5nM|yJ^w没/EZyk(:J=quRݚbg\KpӺ2QC_;6R\Kaho\kθ7ǿ-Y\5LcP(+,|߭bP!\i]??.ܔ|QK!柾z^Z60\Mwf;xR-OTQO?}B69T%9N(ely]L~? >CBwOCf|
+Y*N:d!IܥnƧHFd!vQ6`$Oe¨O|1i 5},ܰ+lHwBP^/yKR x_lWS?ooo?Ouȑ#o}[7ʓ.lWOf~k}V|0.0Xey}s/wAwe*J^(GtV.|_w`t4ʒVKAaU;I꣛W̒Hlhh"fe%"E^JJ2eidn$mďЍ0Rt5I>)B2">Nes;yt9d|/V lr);IL=Gl>tBO~i)UMܣR?j8UҸLlw9m+Rm{)zfֵ7Eeag-lW0yioYH])gYJe,J jXtg:El/1Sqo<°?
+<1}*ŘeX۰=^Go^3^`C[Cu(b!zw;DhQgfG2F3	8S$4P%ao);/ELw!L4D$VjFDӟn4۾;Lˤk	TqcαEȍB\Өh4zi^77u$DkQzmϲլtR)!A޲>_ف
+ԄiUmn%(rZUQ(%UE[([2Uⲽ'Z5EWg;>Kr&?j3hxR:%r狚ܩ]D]H45X'H΂.a͒ :5Vau:KQYߠLQ$X'Om2AJ!f
+Rcp4K$Yf0`	D3 $@mdyi4)~۽*5}lG/[T8/cǞdd!-S7Xqo]*бn?[q,o6rBײbdg꓃pDU+qHQHZIԨN1XAJ&>AE۔995T*o&1ɘ@bMѾ^iz
+$+ M!~#Mj70$%d[(X?Q@$=l	}
+aJ*YTW9G":B+gt^)=qK#$R4y*zԷ;Ǣ>EWzWɷxxB{ѫ[_Q?/Q~`'M\Q6r>gLZw*R"Si7̙g{SM[LvWe Z)=̾4eB6h0\@ޠpvrz3BʐئB6G4` VU@Zpw0nҺ`p4P%V{t42R0(rZst6 &'N	vLG?kgrMc&׽nd^S ͊Ykw7b=aߠhϺr8y>c-c-RVrV"W
++1૕S#ulB\j	WRDh:BwdGu҅*h5ﷅXQDEdC*/ex!8L!Mi"-&eL> 풍pF}sXeex"5e=IԦHpg:x< $OJt<TfmTI!0]L"KJQoK{c}[˖2>Rj}}IMG,.poˋ$}$(vhLS%ne%ɲ&hN~vFȡiźCm'g9YBh@Y|k."$Q!hIeb|HaN,]_Ĝ\d$Ao` 9$L
+ܤSSL(%TG:cnA%hUCH)3ʈ'~SCT5EC5M.T*:G}I9XF70h&-S71KoJkߞ/iww:?1S4{J_0=󮴜,i./+i-RҕZ]\Y}8WdE_%/	)lK"XػiAH#m >7 Ht"fȆMQcED5FqfeQ#$ym8M@EhdaHY#"5VTCj.(̲l ˾=)Kʑ8T;R~ZZi,mn5³?fǒ!Wi~^;g< R ܐunBDS4]5O]yRӦQڊSIYorD)mBN8r-,&\ergBe-qIFY].NiX=u|f^
+5*c_b/UEN:A@3T"4s.cxBu(j} \B :tƄmY
+BÙ¨3<ݠf/R&P%ԷSČV<Q42'{ny_ut\EitFM-<'tW[n廆~^58СC/˟<n4R?r$/2l:_?/uPTGW^]OwXq}	U0aHfP,@7)rT3a4&9,3:LJlH94]NEto!]?1	
+d}'>T͌IHOO LtXeH0vi-!Y >	'SF!$n#Mt匏cOR4/np2L>Ga`ZvNYԣYI~8)]덆W'%Y~~^hrgrU|Q`.<m,)V`P*V2S@7#2GŶ,lpP5,DH4BBbNd|c5
+#&7?<݇ 8+ P9WQŦZDHiHet8tCaҜݴGT+nv?S`j{(tDFȥ}~J>4kfGR<޻Y/	][A][x'ŽRĆ
+{QWH0{.PJaR2"mPDUgLLʃ=Rg:RHDjX-5*JGL&ry!J|}4iD㯢 (S62z_Gϒ(3x'^BgAllo|U)|/b6獑
+FAJ$UaEFS$羁8_LnuQ	p1q$68JgRO|ߡㅗ_JӴWUy{6]O.xoĶ>F?87{AMFYTml_Scz8w;'@Y@OVj9^M?]ĭ 4!1}!C:K}qwqZ,1t Fb6RaM`NSxNWw":VŘlTڷ<LE1@kCkm50F(5D^AL1$<B>zŀר_M0I1*eIF1<fΐcF*W)M粠	zTH`TKҫLi;_x{([_~cY6rk~xc7LR6~?WF8te2.ͰL*ҊU{J2%'*~VL<Zv
+j{F<qÚ!.QCDd#	q0tjPN0e2:Rp[-6MyB}D`y!JU&Y^9X6l:WX潕&ݵ"s4!
+E9?o;?\sn/FEbW<nϚơ4,Hd߳!J~QN[7w4ONTOMlyD[|mmi)e<O/A1ƔpZ'ۥP@ʯjDEilءSGm1Yz̠3iZw6_2eS`ENcE7`ϒϢ;wt*]$ $i-$ALu(R`Tfl EEJoF)OYb9.n"%
+tmx)wqcܳV/'IM7W/ەn'GGN{>']Zi~"?|uIzU2.t~۾{MfDD(y^ib%1J+bп{!iLXqix8 atQ&.`xI.E$Q<$RD$}m!P9{ϐ,,(GkO`/a|=>)<FѣQK>EL Sl>E4y-q!?DAD+D+2C	H"%J)i-tOw\+	 A]?e;NWfnMv+RQT)8xP h"y,.Tr\\(|)J2E:ePF%V1ۻ77	U<!62`(	>C:btEJfAI1<tJu&-4O8BH1^nǤ!&v"%4ڋUCh <kGyoI8ujN>l_S%SAFYERvQC?syqv?%/XmVpNZ_дU)B(ʼ:eIٵb5oRIjrPKAQ1=*!^z0*tkXQԴt:V՚^RVe%VT6SQ8IDsB[xU+eX[Qae}qKabڨ 1Ut0t"\#1[+$e>q?ROx)ha*=MM`W yȸhG3.PeQ$1kD# ƨY[|v8vuyJ;mHyw߾}z׻w=z;̸^6M|뺍F++ғL~J9(HnpN\ԏyS''joO%ٕe1؟_2	}ENBcdj"(X,{[SИ&	DQ1D7I$]vI}Nb	U*;0&)	ꗐdC(*C%x	#O?;hzeL>uI. ]{C4d|A*cD{PhܧLق7^mڹiiFh&n*NPDcc׽Z;lR=eŎΛ;ZN6~ޏ~8/vg-4ۅ(Z3oHWƺL3Z2L6K%%b9_ VqKm\~9+*Q}ShW7HM|rUj1<*:O--08D9EI:ȂMh]L̈dIAt<fᒇ9p[z6Hdsʜs+d}MY$S1!yNz8?n1{2!<;'j͞-ky&WȲ|?~i]z3u篖s\}=5A    IDATr}}(y&(}z^WʹϸR1H6(-]2m'5<9rQ%}5=WbB"_Ҷ(?P{vi8!Bu7R5-q&¨<~Sq|?,/(rdHaOnJy&Ó@=AfQߋnHl"+H$csLl77!ʂHxUMbm.pR:C2hb%I2:AcwIڂc2t'Dg^׋??~wM77~۞3/}Kaȑ#7pCRi4]w]Yz׻n8_̙ooMv4O^Xs'Ȅ`r]B0/!Qh[ݎwvWy댻3wqrJ䣛ֶY5©$?kt7)<ג!5trƌJhKkT. <пct?4Y.b̓>7oBRcSTCzU܇JY,@|ӈBVh^϶7!maZx|*ì-~xdB(5L4^Ϙ5
+!6D2^P0zc&DdwalW(?t<oH]ՏsNK'(#WJOc
+K@]~K˕5t6iLEIcYMAw,~#Q=&bYKKwRdD}֏P$,=D!,h]!RGP% HgMCVcEA8DiLc,nlA)ĭ)$K)V;^_2ps͏CF/"(GKl{O(U])kwɵ֍ҧFٕSrjl?H%j|8jgrz68(fJ)cJO{y͒%!,~*}r<#~G=UܠP3}u#ft)] ԧ?9'*KkG$/C==T,IX=f2Zd|ڔlޔ	k?JEGu'<bFСzd1EF^R%գ Mxx@em,e1l,AێFRjͰȧ.mX#'ɶ0/|fmo{<|o|oƓ'O܆@wv//8pU{؟;w.^WyuR~o.-oy<iڷ[vkXӵZyo~eϿ۲.)MkV}ɨZsg~QͲ0i,aMٴG5yO{۫TDQF85wpXuTfu΃8-oGl*io
+MtYǙg|oR#\ęhQW]E>_65PUpIJE߂J@b!I)|@QgVއw	6}hh3nߔy{MbV(2H)!;Ai+&7ӉU쑗jN{mq`Aiw~MD)Qgiˋ-I~.˖K)CM,a6մh\5CB2Ja0)B
+%&S
+mE9)(jt+
+l;i.6=P'n_;GTvx;EtBI|tE+B6IªG%a,E*=CmeWC)3{8-ɭi\M7Fq|ijYi
+m1_`[_L8eمE1'u}O(Q<X}_ޭ]sߟs\;g&oY[?tw}RDRGbS~"wWr:-'seWɥ4vz;-kɶsi.=!TD\pS\ܔc;k֋+;ҩej(&ĕ&+FwReJ_/BQ_޾M5O8`OI(rˈڛL yn`i"l)+LG|&Gh^:aF03ʰO1W	.!X'Q
+Qyێ%!eA$W{ׇWNWO#ӯ7Wt_w:}C?mV??nt&}k?ꫯ}`iii۶m~o(z͵ʻϬoH^ch'QXuήܺuz)(ښ$Ϫ,?VY뵉l˼=I?5ad0xi4qPJ҈6TGk,ޱwM gjfNuR!QAhTv;Y%טOjbTITv#i%[B)w>,,MF}S]t#9{%@r @4_F/h}#+Hb^CVY+8g;NNboaS.$PhWM;D0 eIQ %EP?zZy6_/ԽO]:?;%![?4܄uA/fҾaY-٨95*S-KJKR4TW4+՜fYva<YP~vc]$ĩMGh~â`-hl%`:#IҀ$t0YJB0,¨Km$@JNwR{{c}z,3"JY7kk-0zyrK=-ɮ0-41(Tstd]ڟo˲ 3nG?POO(T_V8wwͯ~vj<eŔhDJ3@5|b)|!\3Kmh,M+]QFkbW9VwMzbK"O&Iaȡ!;_Sh(M54Fj%Y֬5VPW&H)PORiE
+Ef]EJQ*Q	E% yFo&ͣ$+ʴ'"~^{Hʦ(:2¨9`゠"H MյfU7~F}G<.3ŉS22*xn<OYBe 8bUc^'nQEIR=`en*2AwÆIo>r7gD錗?S۶m[r??>c۶or.k^jo=2X=e8[:T~S{P߹b7@W2_~RHuOP*Go(VEsTiМDT&.N t2#{ 1#`jBJ@"戒̀b*$3}uHahAuͻQ:t
+T+C_i=Ś"Oω{dVQ 
+ o"@ڀs$Gg#a[p  "Z`."(D҂GBA
+tǠ9b0Y
+Řٙ<ǑYaDrМY3.)e42GR"`3`sM*L!@NE敉D:^MRD  Q6eE_&KFG3ؔdSo1-PmLMS%'۫Ovo$$kx.?^7ݰDbx3ٜ쎙A Ҝ[ۊ\ UAԆ@ TADqF~myGbz'GW֑	$bJis-. #;S8>Dm?+Z5yd'١揖>({.[C{d;_Lڙ(L﷕@IH(a*B~h-YXQDt`Eb啙ǣަŹoLj{0)G2bD`P|9SedWV)oʓbLBTG@*B!sTl$K\TJƭ\VSP wD߅PP*ȕQUqv$];#E_[$D<	!,IEERRuR
+4eL}`BNZ=ŃN/W8e:?q9wf;#˲ܹĚ5kҗ6mZbQG(L4M?7lpM7رCUա7x≳3ׯ_vڏ}cw+_K-[/)ISt[7IIiS3 Ni6~R+#O)WR@ɳR*y;CSh]tK(aCt+C
+8YdlFfH|B	2ekA	¨Z
+"9
+j/jBG:
+V:5P%d̶pW;MA7 XY"@2O!Xu  EHo> #ADADhjTQ،
+D5FPC *Bs`"HaN!:f1iiZ[( ɤi~tnhk;u^RnN|ҰݶH7~]*JQc) #I4d&kͤekɼ<-0 "CVa<ZR2Vhm|\SlAu8!N#Bՠs<9U莁P臔hO°HCXe sXÁ
+'6+k#|RםZp˜2fƏX3:3_e펢Wr bU7	ɒd-E=vm/|gF[Aʡk[te=	/)l{Wt_2Wϵ՝
+i|y^9?=/K6B Vn}!D{ìʸAO̤Mq\溙̀47mETؼTfm1J@RtM[ m1EZUd:%5t*ʃuvPeö}@L׮dl2}T(m2*gk<8iC3@)A'Nx"ՃC!pkrΜT!P;Aʼa<`Bv)$=Ҷ)iYS)Cy>@7<;RH|̆HqGy䤓Nڽ{K*RMLLwy=X__Z~o{55S미
+ GqĽ}/scȋQhoݞwq;lRV?eAϲ]}6Ei߬MiշrRyz|zOkYփLf?lw(((倧m (P^3ǁK"4@5P *<WfiW^BOIJ$ = jCoU  uhG&s"R6X4|s:r{\q 6:- 	m>1(9,$ ڿbC- !Yf`28K؅R0#AJwp@(	k"PGІUBkUJH,*&e|uU)HN-;|)dHX6nP޼e<_RQ~?;|i^{f&:%G DU1Ks[Dor^fCK)})</j}-Mݾ2q -C1$&
+@k9g$|('9 Zrc#ϯ읿==$b%ֆݺ4AQ-HO9`=EQvRbt*֪{|ǧ9m~ށ]kK/4ZhY!yFS	QYljem<`;lu*Է'TCvl^ "ku  YRAݴ78vH/}}{2c8MRQLH*ɂ,`&s
+t(	BfĴ\.b`t՚ɝC%݌haP$hdʡ[?sm<=aQAvηNY_eY$IUT^(7(Em4#hltSM8ɂ?<=yaw=*2$'x3353kzvnb6[b᫆0 SthtLFpuf|C-/̷y=]X͓8p?/<gtzS_.ػw޽{9_~,q=t.H)]|+
+clff?fx7|Wθ}ڋxTR
+BE9P_mOf^ŧ0;+/(_ME	߫hI`f;<A<j3ܿқFCJB4(CIAwqpP\%$]W#|}G dN!zH\3aVP{ZnD	IQ$ *s{'9v 	aPB_	Pdu${-{ʅ 
+A@ d;\Ch})H:x@n-w ଂ1kƠh`/B0"ѿTfͅЅ]Tک4ҤOUQ=rj!ub6Ky릢h-^P9O[ʰt˜/*fSW)f(D\TG'F%9eMI$SD
+$By3g:>VeY?6y&MlMưY_pȁEwhH"{ <u[0K
+SFA>Tf|;UCmFM8peZ3AC&[`MY<-Dor\a{<}
+O#	ՍӣumcmZvmάvR]-$|zD.ǸnW/Z뱿H}4kLufCeKj7ye1RA*L㱨{2ܫ?.kǧ xh S%%Z[4R	oI[uHDJT]qD= Pr*](:r*ɻb"!Q	15['Ņ:W+F"j@6BBA·7Tu{KbM8a<i	RLAƑp~E):bX7 bB(C
+j: (=K)*Te_PRpnWK1}Ot-BZx:_zٶ{lIToٲOKX~bqVjKJ|/ksRݔGcr^;EC}
+$Ԣj!ƽ<[Nyr	?xF(
+·-vJ |sa&PK囓3GsiZҴOY&-{ C~* K06|^z{y! -H\?Μa`*@ Rc恇0hf#Z1r}P,PzjJY9Bߢx*̣~ßY3_jr:ȿ" ! =̃ڏxDc߅" <j(M.@@,xtdx    IDATQp7Üd0;Q:Uqk9as.N Rb	`*4j<E﷉I7cZ7UK
+?z[+X_w?E(ksf	UHliWG=\T;F8Bx,DJ
+	* 
+$Ei]B ɠlr<> Pt=zIS6i{t><[)x|&`=<+Fk`)ht+]]8]U֨a# %ڝ{zniBĎ\tƅ0e%隔ԭ
+;~!0>\{J|̲~7|m[j}_WӖ0>UJ|7wU !$B	)	'_4'TTѣJ*AJ3$S96ʼexEڎEQF٠ZK通pSdR#idpQZZ2
+#dAHO.iqrepdiCm꨸e+wZdDT")	U!]	hOl^*緼knsBH^Ċb%'n iuqNN
+$鑽_񽒦K5E5OlYV)~pvxa!&(59GCSa p/'|[#"R^7ڵk=>9ݗ<jy%.+O~r7ر㪫U +oz[l袋V^}'j9>)j;S!]?|j[ґP)QCO09EB߶~\(D>L$^ۜtͮ^Ӭ*lذ`ZؓS<0^Tacb %=(i.2Y=B7 4GڈhlU;$@ QD⣴fD2.D\i58 B"AD%=2}_?fs<pE]!&yƜ_Pqg<sH a oZzXAXh,}SwDBATVPtG0pR T3V1:{Ao*.#Pg^T@
+=Ee) I@Q[7vKL@BgX_6W;q6}U쥫Qb$+iV$hmT#YQ&L7i+c>d.2-k{e1_t*zMqzl\wi+;3$jgZ@**Lc'6jcG;s4%;w= $GU#M $Mi[
+8'*t]]?];'\o(mY垦MHon~=oGo25v>UF1w]W
+i2C{N&l^|z-I`&ɚBx=x&$U~p1EΩhOِ0hƖPLhIEBcIh,Z&ns3%#Z$ZPKK:Qb&TIV`FT+t#]+CdܸU|\!E
+$
+E.zSakl,z4[HHWLUvHH=Oi2L4'`Y.毋])eCA085v--elTQ'|E#xb[l0MS
+J]9P04t;+\<8Po>DH :}e/CЫ_OsmrLNN;v\ve?	/}_|ﺮ>ॗ^z9%@3ַ֭{G| x}u]uUw{gR/~~qnCy^UmqeܙrϣI/T唯R w=1-(ԧ)E6ОN]Yxz.:6a 	4D~q +H#),Tj{A(:	dp.^_i}  bd(H Sev`:;?1 MUd x.D۠-:"@!(.xހ2 cJC)Zm́Pl@M63w`#^UhEPRY,bGALg:}0?gЙt ඗=?^n89~m[? $*_ֵgKW|(rQ9U%ІfZٸ[mSݼ+\D f񱄤
+C3ܓ͓娮@A>^R؁hB'Zᅦ\fKTE7:'kjgrַ	9_jhKCd}Uj#ˆ4yM{gp@߂E뛭oo]M5K;N\)wfټz_)ʈe'Sg }jB_iuuo4ԧݽ		{\]ny/X_q5H_/
+QjW_)uuҚ	+7qY̩O'b0%6s_4eR	
+b+#;hF7=bv&M [QOVzuEf*NopS#Aہ%d-
+)E@*gPM%Up|YgHVnEMvD!=ad4.is#a R!˙(Gѩn+7NG#}6cV]G$Me2eX,@F(ΫN5uR#{?&dnڞfQtT㦉潖ue*06fnx__z_O}jZv	'lܸVܰa_#yޕW^y-p(r%pڞ5{BJ1ǽmUPB	ZTQk?H4[3~(teON,?̻l(δ
+Q!$)mꖔ/nhQ;JHӶ{?l!%=,4@^̆1#A1)BA_^3Dp;.9W{QeCT@YX= (>0b !HƐLZ HB_2jvPPJ?x3s$ P{n=JDp ^Dւ
+@C<
+cysSj?x"j`wchκ9GXjXdZL}J,@AP@(0YAԁQ^< ;#K9x-TSDz(axGmFRgOO_AHG=f<!JҀխqwn"A@HQ/Ȋ|(癘/ˤSIt9ʘǇzG;KiQHv0AJl3+*Zy?EO)ML{(3ڱRAOҵׄt#M:;@LC	i|6!'8~5Oǫ9nbzM)?@S_|ifr$DOlAמ|y%ල!I2~DH'VJ3"?wИ.X_Ͳi}k*z,!s\mU1?"s͞ƯCKQ'b >&3ʞ8/L0"$S^r[&Q3,@
+J;cI_"-J YY$e $ƞ2= +:hP+"I[O%mB)1~0mصB9
+ԒBl&E=2c<hFȏqi.Z_3/WG麲s%/<߱nVBy6-Ki05r]-#CMac=3J^:Ӿ1o}њ=#~3F:E	87/|[d&EuK2o;`儗_O/h~/q]p׿3<6<s|S{6mWu:{XlPBȝ'w˹j0=yV]{|ssb' :Ga{20KU7zn\Vos*YCy@WkY1D<]%'Åx]̲>VDcj0_:`'
+,,.Qch#Ma dn 2]/YED"DtUx3
+(CH:م¡gP:iA4Zk5'p;0ȠAtC:)(U(wh`ugaC:#9x5R)( 
+D4iЗ!AZC2f(Hsw xj_ v~(6A4bY.y>gsM 	y,GAF T̉A
+4yB[m
+cnhPsX~OkRSY':7YiкPJa~z\#9\!?ڌONx+t6y <Gb*e+c4Z(pheRUkEu
+f2&7r揅p@x5y㇆
+Y(:A׻4LN[7rB_r4S1_1)_eȸ+*MJi+lذ	(E}j&Eiw|Y>w ;tMθX=?>|2I
+;.Nox(gmht%a*:)dі=%ħvWe譱+ISac~gpA`Q{*ʖ?لF;Qi"mո[hN	4K̳PTd&!s"AfBVh%&vd  U7#*!L@pSތxL֩ġP\9lD$Zg*ED$C/zW|t6,dJS{UОN5 'STxrmUK޿$Z{|LWѹy c`8w/ٷP,W(lTSaB"贮v? alڴi <c9fyO>sm޽vڵk׾}?Z.zT6tɾ.ϖLAFY6h[65e{yBbR¥FD15s۸cM$Fe[x"I2VSXt xØ0Pq) O1x,M*J}P4Pq)hɽ{44vqZ6v1tNzW!2u(E(902Jg"D0V^#s^u2EA*X	J?@`NqUas gP:Y݇`I`EH@MtGB퇱{<tg̓{-&%p/0p ^Ug1
+ݽ(J6 PL4@pht{M!ЙUBQpJInPq
+v]V)}doFS|A$lWUWTaTm=5ɖ6,3
+Dj:M-U~zOjIa$WEi|!;:lK*}JX ԊZ'n-A!6Jvz8H:ƸΗëEǿng74+sO%m	?,=@h4n6&wM i!Dǔzz&^JAft1UEnǼݏ_\eV3q0=M4H+>[~6%ѻP	WhûAȼ&(2F!_]k(;UڌIuy`$QRh#Z/N$ )iǓHةݑm @"cm?Z"M{8|ƹgU,/v鬡cXnO	H)#6/n! ^rl?[!!wEŉ4V.$SؔFsc98DYSla)-@1¿(l?YL)Zߠt:Iה&/B}|t@A>Lb Js;gHgKio-~*@WT7*lIK^6}_S_Y|'?>|#G֭[wI'MMMO09P;7OQM?y[eex0|S&zdmY֚wu ;<7<sK?LN5G{˗=vߕ\o\Ɗ XMejuH"ETcic0P0}p[Ad1Fz8T`ln<fhQx()H @~pq2ZA2/P߆Fm Xnd-<1uxXϑN"܊x>dM"x
+"F:d| wC 
+3J/yh ǠԿA)"LP<3w!k%:"<B-D@U.D ̀zz3VQ14B(23pʨFa ڍ垻d8#i5EB	_r0_j nOΜǗ(?ַv	&)G#Af.$ɠGBRd{&)SnR3%~+NH
+\:Ee`#
+t]&mS>vm֭ /|GѼ\7o0"?1v7	D]*;ظqoyDBbP4rƏ7S#]|Ud)徠iO'|/:R:ƭ~rJM_ )*7/[:Z1p-
+b	Gq6f}#*IDzfRHb=teeY?s<-:BCH6S#qh{U Li[Q9H_vr~NXѵ1yR19#'Xej)P6fS<9<A+AX.eh9FP!I҆	&:J̄V&7<@W89AӞ&$u	?ҎٲLtF/~}ӿhj,ԕmntA&]}eFv~:GvPU^.B_&^~衇fׯ_?;/y5yD|M'l_e<WkqXoSUeg7DeUenȺ9B0>`~;J{9_$$8=Z7<)$]Ki.	31]2z2!]<E6*}OqjeȫO.9xEGE=P-4g^M74`wE͂$!pݓB^G,ݏEEY%;PX A냒̂Ghx2ڃ ~($3T`E2{{Qn"}C)XcHkC}AA<	m2A<,@4``9(6d{Ftwt,bID5HZa r"(srK9CJy:nr7]?SDqS"M?i^=1sp?|;@뛚͋ެB-x/%^-a?AV    IDATi'%J<=n\u@3]NżLZȕՉDj#GFi]3]1틺#bXB2HU%A--t&խ*FB)Ղb9y28(D ǸcsKչp)φU3[4ex疢͢I3:dGx[ϨOvnV 
+ַ6EYU9z9dRD9󶘯)X7Noiu?1Px_&*ܧkle㎒e.J
+*!hLHMS=
+T4o7>	%+T:%U٨>ۥT)Ҽ)=Umˠ@+9vPm"y":V%|,M橲WKdE! MrM^W9i)B#2CH!RZJVyt쌦]@_bJ?%2T$Dxrϔ@o[nNv!vdL'Tb25d+4RJb[}4</j'LC{񩚺M׿<MW*ktmvnpYƧ|+;t5ue%'/n4:m	6qg}F'>gKz^ƯM\A/
+_iz׾n?l~n385_:{K&]y1H^ 4xeƧ+*5BFU?F)Q\_hqђ+W|Nu[(0B˗`l36ƶl`lkKBcBչO|*WG3XZgUU~Tdҧ,n[Z֣mG,?+4dRU}?ܕd/+BLrD!M&GJIҥ=Z!I&wɴkSy^d^U,oXHcP(m%	0pF0
+ 5
+x6&s.p>'Qv țր!x
+ P] p΄)Ou`Ez+@%d]#=|y; 0p `W?y}ᝁlYYnX+ >2Dj"m! ZFEqӬaC
+#``˅xZz뤂Ffm(ֳBXm{*1.y__+|"SUJr-WoU	˖]N5fK,pj$&chj,̧u[⫭|%nSDZ"Cz_/MҢжE{.l63&&rI(W̧4̲ό.;I8]	+L6g=]5[D@?P ol!yƆw[fIKMcW\/udv :L)w*],8Bi~ iѻ=pG{<Ǆd`*fj*c n Ѐ$\ID1iSiGuvxRf;)I}1A;u"-O fuID2ci1PIY2\j2JKʑL m]RE٩B\<KjWxRڗI%xlWw9dm&DM"H2ReTâ5Nl!U-i5wHwq
+R|'.[?"ԘmiTw%KCm%;'Fی͔$`>X'BM4*\c$ή4>7IU+_Ķ v0~[t_0X@+/NS(~A=j+	}W&]-߳Ǣ(Um W5#gt-v05b|Re1Yvm=$!iޔ3O~ޏը۰D~CulZ+/@I$U-<د¿qvxg:a4@+cě;-y&/T_^aJqsn>ѴH7BK@|.ڏ( a֐`Ata+"~&tgq  };A< |wQ%}Ԇ!]"}Pp6C6!g+Z߁=kB@ޅyc`E0}t4vbAPf#p]N`,D+6*2r@ӏ[6|Ayŕ"Bkvέ>
+TNrv?{gֽhcd6sVVD!0e(AG%y^fJuzqڋ}tա*Ӈǌiɲ\J*&KƁVzITI#w~`yFBMJ]Lwv| 01Z9r>kJH??qJ\w[)F酹i|quT .~JK~ wG"aaFy:ʴw;ABnkؠ^F,F(Sbp~KwVg׏+d'2UB֗A͡D5)Iri%lȬ8["Oؤ
+_PZuvWw;-be3	#N[ȆI^j(zQ;CtF4nHu''aK߿~`Y=hFW+'4DS=Vd:T|EnWS9Hx]J&Q67WwSU$THIȵ[{b	o'I~dzdn|3w>rgg>\p5^tatS/53uo:Ϛ0~Zw`s3>B/|aӦMi>C{^]wu\_ɟܺ Zk{~ч
+Q0dî!Nr#m61BrLKV]r0>ɍn!p4?dCq@k׏޹3UZ;s'?v6X0-Rc-˚jG[`hbao]]pGl%2X5ׯAVjrlͬao6P
+n܆YF4d
+j9ޓpg0xQds0ǑAa@8 حG!X	S(D?a+@P=@ CuP0` [Aa@ 98%u= :thDd-d=ԯvw!B`d
+p׷jp,C"..RNi[ {dDmRjd|F9hkV:_*9weړmpTaJZp{%z[z=.egܲ1	Fh+=
+ճ}9;r˹lPwl!Mj %NPwɸ ݗDa:*^f2)TQ*{E]\[aA6!IviidIvy_beoη-k/wp19IdQr#8('alO 	563vjs&kXa㓕[XoyJt+D5w8|6Sk6֓9ƺoK^(7j]P[Wu5z×MK]<I(5TiP[b4u6ʫsj6ؙK&)"n;0t tiA=:Mw
+BñK7Nu:r><J^>F9N% a[KtuFsiʇj4-0b!̇7o΅6:s/!'Ri~A;?^1L
+>홏/l6?8gR83JWK"7-KZ|]5p?7X7 {iR<fOo˯r\.+oe2/#}&	@&g~0OnA|c_Xrgrs.7[|.v*]]m!&?d;ٲw֞<m=G?fA?}=!0,-ɍ+INatsMJɺ4ݖOhRN;O˞QBiΰQ(<$eMӗy>){)0]"V"ZFց3xiYB|Ӑ<5>gXzm.V>Cr@W@Z#x½@tlDry
+V	TsF*/BHWn]1{Y hPPZB/ì~1Y]ND<|XpP
+uj4C,q<܅i4&0`$o;ÃaSkd+	5rR&Mẇ4t 㹺y0UEL~3Q˂LǇ"	@kz+WVX#lCW%>C@#4DKM%--UIkk_-NT='Kmمw@k<e;l>MZ/c5L_>e;֔@̧Z9F]JnQx1:w,+U%_N:"Ntz/b1.`$s9vNb"HI|% ᓝM/si|@g$c$ܨsK%'BrYȈq|(ɨq\Ap+lA(Cc
+mb׀E85`tԪGEZ.3{E0jon5rH FS{س4;/WC.վ~@X]u<N{4Bai:QHd@<i?7@}Y$o^?o9Ijփ\f/5ɵJJg+9X~eWUmEP@{)T]Igb8U}s $LVG_ZG3m%|ϟ`?tWvk׮]v/˿t'Mi`+af4~iwGѼ`ǫW?T+ߥCOs0SE"!iNcG'D$"Ś xe<o7v.2W
+7O7=Sr+i+JUܘ4 4nShh;vax P7j(ՠ/wT+E
+H8wc&T
+/8S0P8;Uֆ#># C%Vᬁ{#u FA*w&DXyZZHN it1Tr8#]D<pr0b {zċ>	wԄ;a$(lNkU0Y @A"jqR2(&DG> E DIr~FS˭o/Q:>&x({?w̇3'~z5v/E7?h@BXߗd=$4' %:-Ng3$Ztj|Avĺ5G	B℆JrGHgQ%*-QBs
+%0/'jdԢ@h{NrM#~
+.9Ʈ퓕_녪iWjj`>FIDH-I~Vm7?庲РB]Ivq7sf?,0Y*~J~bvLm2&;MDi沅DN5ZQc4:z4	+t]Wf6)<}~	CqpjK a͑k-)arA\-i#TZeտUKC28U~׵)k;} ٱ(:`hB7݌Y&1hR;<9|)535hfKd7X|vѻDl5hd>@RNF7yg/a ds'GjjZșfWtfy{Ƿo>99999iÃnڴ问RDFZq~?Qif=u([)nŻ=/Rn놟0ٜc>?WU~auY6ǻ`ǧ>	ZA[qjekZZ}q|RrnÜ=?>CՄDJNI9Ʈa쳬g:/8c^x}r)x2\%`{P
+2)[hxkvR6b!^Di½ 2Ny0#|2 2h	2YSP)FY2](ᓈ	Q ~@%WKa)c:Vȡ2$M(%$CP-5>Dx5"+Z%MA@J.e/vuC57H K2 sN,Π$BI^0zk)Q둅CY Lx_i'R":$+B+P0gY	
+
+,M	bjO?"NOѫ׳&*
+֥XrHBUvQV-gE [nj_W%r7;4gDٹ%Nv˖.#R\/X&7fj}^R)s]aPl5i{ȅUjk>N	5|Cܒ8tYk3wwlwע,A&35j\]grJh[igۇT1"ԣxRs_U%R,31PCOHT[FzY c @-dlYr~7bJ;EZez|AU f談h@FcIߓec#bDzqoUfS ڤ
+Tha.hU?{Gsq2r֌A~:
+BrIČ^r9cxsW$m>gLM'bnjQboz-#U6
+5aeEJ!I.O/߿3|)/_0ӽ'W3nꫯ{ｿw_/{Xrt!z]ÃfJBNۃ첂Bo(},$$_%$W+cQ~D}Rk+~c]BnUH 2 S6\#%Xi$7a{aڛdS&%AVϾ;N_3R`vk5{jy;t.׌TߩdPY~)]ڱۃϯFEHjڈby>KX(=7{P9dw#" Be`X!PSP0zStQEx+(_!:6Px%.GTAepPB& @Ts@_d	i딖
+S΂PxS>.La0\Ek<|\n(aYR?D'29$>Ϗ<!Y3Hź1v^6'+X3Y;kh1r,~pqs@-m\y4UFVB,zO(! Zrv4"1h:T7Tș	Z]DDX^Mj3E    IDAT&kL9leM"]0yc͢p;N2kNFڙ`<5~~ArMӖg;;+kt  5|7}-6_0$7)mPim(Q0.DzD6 q(nfgIpA2ϚtBcY4f$ڤDt,3nS)TG6<:?cDoBҞ^H
+d&GT&$/Y{f%2i%R
+}}<Cw`@eH-d^;ƼE5=kMK?2tjRO
+ZjJ\5t+5-:T$1'I[	55Ecw?ٰQ8..OمENL[&I(.e$4/Y/VۊS23q! x^ҝ`0MEs@Zu,Cx۷qK\NMOֽ/rTBNl^QJ?4.$F|۶@^r^e[RN9?j^q-ӫ*?b}.q"1g(}>J'תs=>QeiRNK9?Z,_XuB\llc0yT5_;r C+X.(-*O"aBp?a!cd"~ ^@1Z0p7Aڐ
+I>f#<H`T@Lkh\- t̅	aa5U`&	^@ځ3#@D.>".VHE0F!
+l-^"QhUk'^Q.ӄĖLX#q8#6flfJ|SqҗF;/^9sl,	0Vсb:"!\RiPi%!R98PKqM"--]&"&jCnq`}e;.KvN@ǹ(;ֲH1e+
+4+l\&&BVKta3~K닭ec7R35]c8i٥'D&6xÔav~x{[2맗Yn;o=9J|]8uE~T2Ho5Q5C9!43Hޓdڜ`C13TH"rr/UIf(2S!918(%dꎰa$ҡG<M	OȶP/DN[?+RQ_lG.Z @/GB66S}>G`2EB&~^LCj*9oY`}󲺏z'D/MI"WIYżzGRsb
+:nb<լa#6%f.{25Vs6Lṅɛf?IaAJ0Qu+kfo!PK̇P/W tfOwddOb{j>4g<*\^njgb+%0}^tV|͟Og}],h*Xh>O	9ټe>mFhaϺ׵(:Di2>+^AOn)0~?{T5Ɩ͖l]jĭ'IvE^=M?-cgl~psk9q`cYy^J$ ![9A؇ T3ݧ,mbSOų`p*)Xc
+9=R5AM0*Q+"Z`6Y0@ uѼ tQX583'@pQ@"Xw taH@p-1D(2G!pbz) 7t3:0?w[yz2m@Dl5A?}P2i2^5ך;s2i$T	XP1j
+E0<D6q<4MiN}KK
+)b8# Z0<rWWpV4T_Ƌ7LK"{OdT5PltX⫉5ӗ؏8lEi76můFޞM@%ㅅ\e@?qDNMҠlg'_@HڌellJT;~=E--͟QssBU|YM6\UCqI%i Ǻ6rlMc(iG'X$.Q*g>+1U  .)rNfLD5:XL@qStd@ /ȧs#2_٤iX&[:ز<T#gL|P%gn6i~#,%XmGeu~! UHu19*8+ѱq/5lXjhjs@[=X;+rm;:sM7dP_l5HT`~zS+7P/Z?/~V2Q&Eb}"K?79W|xﾻI_:3 烏S:gI|T3bUNWԠe	l98[9mjhߠCbK9ʿ	aH].SڵZJUΝZy%qz! O9?T/5;_!$6i_ș=)Vr"}GkW-d(CDP@p N0@	e Rz܆h=V@i2  gJ@+6(?G3J@FHVOI!i	j 2:pZ49eԶP(	%ueFNq KJD!%<I;,"4Nkc<
+>%唟?6V)u)Wkb9gb7AJ5HJZ{FG|1b#J\U$	񣙪,jPTSL62́"u֣X u'ئH#VȚꠁ¨l9\G)#7Hwdsu@Rp2ድ*Pr :7We.w@i`Qm	ҮIR	y8|m |3#^
+{*k{8q79R[00 Dޛ1JCkcN	%ZI"d\JU/KT6!=Q`_ibbRԍ&䵓-OUXf(Px։S`y#
+-tڒZ
+&)LQzn{c==<A̘i%:XuKkmKf՝9_)̾:^"V}Bj#NHrzNvZU1JIj>!w4FQcn_U/.enpESVKVgS:rqVOuA|ڠXJT\Ji3)Q/#
+l>IrmUC;TUyD|^>`vkb9d_	<?_̲$W?|3㗥Yg$"LHUZN|;Ϸ|ݶ8ݢ-iZϻ\Tlҭm8]u͟壵7-u~l#t?-F{j@(bG9[?DbtUqK	#՛ۏX@Y|_Gm@^]*|6eWl6+\cyxQ24vj׾2wWF` x#, ]Bi=k;mCAw`ՑuQ݁3.
+Ezg2A҆UsQ؄x| FZ QFa  |Anì#YAeOpX'
+ "F؄Up-B)6L"G4, ӂȡlYE!7VG QҮiZYe<o#Drfv$P͉o a-uUfvGBۓ|TL;?i&B$}i#9KbӴ/ٌum!@5ALFh
+nӡ/N3u:2Puk(t*ts@e# GB:Ŷ]2Qc=C~5RMCzPMuF7R1-BH$M\+;'Tb\$CIL$ʴ+C e6;wmeAJLԭGqk<?]_`~W4Gn3l(LJ٢a=I/*9eX(U1t%5sϋQcMW^>U2N3/՘\EI%͵|cYW(2=,	ɖ\lG7PD9%lȘ
+z^~zN;/G¦~DHrWgSFzUA(Erzlhiv6qS&i{)29Nv̫p)zeIJK&(jUar	E2ɉQ:R2bŚ_֚l!+}d! :ӤB-im#qn&L[&NKHF[㙟`0Opկry0~Ng}g;mK.FF}xzoƞ<TڰY_4k5DUsw>aB5Bc0&S@nex6+Z? $-8yئt6u8^sb=s_ٞg8=H~J|<L_)m>ޏo!$`Y"xB
+& 'wPV0pvf	<@
+@t ÃQ?gZì#8	1.Aq+_ QxZ0+ PP"@sX5x `V. rh(*3;MBk8 BZgPޕg&%,?+/V8揣eDw񽀶b5.sO_3eSVG~vq'*l#Y婖8رd iHEfH(AILO5Ԫ3im9IeY0F/#^d'u tAG&lzcl$R$y[?aIAi2%/KcBWJ%D-oeCt(oFo=NWf>.צZԣ*GBR67E	 6"9Sa4N>Q$]Fd뭦l<拉y(Mf*9PϚ8\Uj`׆n{XWc/1|_/v7{mR+ddI=}DS&g	HvV&7$#ZDV6by V}ր7ϝ72LMa@@xj+<)*j*Sl]M*GaL`-$y2S/}qTA݁XΟcǉZ[-
+EVx_Vo!xt|!b;>|j0d	!g]*,P(/|ELy쪘z0K^Wpȕ)oe'`"?@%k;〠+LqܹC
+@|ZS=j,C0{~pzh+QEDMTܿDN0%;|l#k~Yj{u-!ֹq:OzA-CivgmfB3QzW_3vF()_8~53νڴ ܯ- 4N1z!QWԂSE,n>0F&O(`Fym*`FXѯ't6!]Ļȧ"6BzId1E{xYH^p+0
+^ӍW3k~`NE0t
+ EڃSNdy6cC0
+&:,!7x#c<igw?) ā3~~5UWEU'IZg{ѯ1D*/Nav.OpAvwMVA;cyV&<10241!0E` f&" S3iXnGY4 @ 2D5m*20mqӺBH}ti$EZbpCF$ڊU88-Bmd$SD* T1׬QlJϛeǆJL lUdQ
+pn;g[
+r:a(W3SdvZENu-2hn^	rS;4(Mʰ#Μbl&6y3Gܩ=\F*őc8vlmf}1<oO!?W"]rMx;*]1sZxaPG{zB	2>ccr]؎6<֤G>Aڢy-n'Xmw)]8>Ӡ[51.+h*;>yaXJ풠VrMlJ2kw} ;FLW,V`= r{a|ttW^yK~Oy5K\h<Dڈ~"+:f{E -b=R˛o(t<!fݹһ)z`-gdLG}Ji~KRpa`ѽ'Oxs)UKޗ"=Rz;͂g?.?n֦a *S+K'4l
+CB+xZd6#:C6aL
+5۰
+p<JȺ`V^6d|YtN!l8u$#v-L|
+ dBBG0
+vv{OAGdSW#$lA<E8v.ZkRbvJ'k|iԒSÎ7M~vS6KLՑ$UAwO,1hXV]o.Do0H<f`ظe'4#bYIP>gdx}(
+}* KҩJR	EZEP%Zx;Gj
+fCp\SjtF$(E$Ux@5	,*CP!85# ED&-KXHI&qG86՜3[D.ȍT2A:sk|hp/lrhmLt%eWHMbfe9L8p |j(9Ć ĺrIAk2d 7ZUDuIO{ގ>_AAȊ(OQ@芆8PC%|0Ƅ:sc<kPH*]KUr5K򶖸cc
+EZ1{N}@gFbA-0& jX:R3MinPnI+ ̓9O-qeZ)o1cl횇&f?rl\
+E`9uH:P[*33ܤX3@#c
+,Ÿx`"ó޷	5mL{H}Ww!ի	5{Mq>QB/Zqy
+JXkۥcjZ    IDATM y_כa[8Lj;r}=|Aa8M~\q}ޭ!ef{OziõkqghNr.|[kf`Kh$(emY>e^Oՙ9oL7OiӨV2WW*u74u29c۸UJ\|5B (4~̈`r̿+a8hCH8UtEELx&Cq~j
+ax-݇!,BL
+``^Q{;F0AY$ Jsz`Fia:1 wáe*[09RM!{Dk>-f-~\}L/| GG3g~-tjTעET]rv<s@Axj&I?O/@[<2d=1(uOAr/>ejEl!IQc-j[6P}۲#-d;Ea{$ҔWFg![ Ir^RO]s#`S?iom.k#mY
+rPa91V9Mb#3ck+7i)6Ay(7({MQVMCLq/5Mf_餓o]:Wʏ51(hrb0uk`W^c4vVC~.6\d@*rPn~4Q}lP}~#_#Nx Bn<0/kSF7)L~/D}Aj-yߵ
+ʧ"d)L$%C6hct*K5C~arBZiPk5)ЉY񦌣}AVhE0S3%I$P-zF0l]q:;2g_yYiֲ	.g<*WGWچ}{m#p`fzʷgG$337nUfQV~Lsݔ,SSRqAUcjUFͅF-`Al[l]>۾234^r'wEivҳ:zd's:xym*F]4㷿x\/r"7G#vr3Q[ֹ	zmSeA${>r̰,[l=/(TRPCH$1@:PSd# ].]DFpo  O^@a*B8AX+St
+a8 _pV  A^ kD]0HS <	wP<F_k7{_77<o&kOϼ}$6+Qz'ܱF|Aav82Gp,%Dκ秷v#+,9XߥYÂX3Ug+  RLC=L,H|W@,PdCJ=UD!痭ó5]w xi"4,YTpzܭ0m)oře[<Ig҈Ȥ)"Pk>@嗇l˩	[l%Ų.lxЁj3%ճIKRvWBC9[HSSNL15s
+HI "@t03űk2g"}]ePH31vm@G.
+Yz~+1/9&69e:0U98N*yh
+!?x? ᯈ.+e)Vc(|BRu5][%4gqjܻL"i#C>en̊7~-ni)^͇5e|U1Bsqʈ7b:T[MHD)NmBWoDm$OxP̚`-bT%g<XÀ%g>شW?Wm'>1??I͡2A/;C
+;~|_]?,(ͶMSI=Aý~GPvul1fzyu܄Z>MPbgwV{YIQYKmʊ˽8yJ}ZAI(?h!K5/Sv?b~Β-do^?RC@dzɖ:3^[q9nŴeR=MɰcL\I?-~kY.߶G[Ė0[Kפ҂ʐEؾ,Ei&  dcL:(u!-""}N!C| "dΠM̿҅V< о
+F>puPC܁PFaIS&(.ra4(PmFlP(cزu˶gח˟[j\)}fEb0zW-BnZw۔+x&oYrzr}	5ָmEfO%mNLPjָ""ȶbdSy>gJK {ybΙRtF z69#3(
+JؤSNbaj[Cս6kxA>0N]Δ錋z{v:i
+%U1E6cd5)3N'f<̐ bluT֥k@q<0{շ\cɯW='dI[ɵsVٚzN멄@kXۮHc)GtH@ ,XϏhWW$d-nb 8~!Egc^3{w-9)_;,u+h p:+8=~Tq죵`(_RͦСȥ4Ӥ[tkD[jċmUODg6c>F7E.9:FaF.xгВF"oRm ~[;#~a<rkBC̥|3AWqH[cLLt̩83m[CmME&L}&=R-dWK'g^nƹ~{{I~sz>UgZ/jf6QGGUk3o{htLbN;cT]iϯQ\lf7hIʴ-,ꚢyz!RfQTo(:D?;burJ'jgbu@ ATi3;W8c+`i_U>egG]q߽OEi\dr1*I2EJR +"1AQ\NѸ
+z+g`pPT*a2LwU(- 	!d#%}LvA JԯA6h~A'@CaEe:Ǩhr}=b2}}b{^%MpsXz_d")^NI~ҷ!͕T:}UfLtAî"S̡ƚR3Ja|e	3ΚJ&Xd@P1u܌gO@,;c+lʉMtJ$GO$#kEf#
+$kOUFiFհ\9G<^符з8%M&bhQn<L\'=4Kzf@-qx!,P߉ xvH䬳~@,Ҙ,LLS88ɖǦײ8YS.{"c%jC]69ʅO=liě[
+/m~ o{ºu<GbF S{h*L=jWZ5c>0RmSrL&&)3!)#(ր/X'B,V,jp],FP5tĂo>}jV@0m-q(X-бqHe:_q%ty=Ј`D颦0X?s#\*JdrKU"[{:ھ2i+Lh/:wɟ{_5X}$Kl
+Gr~WB䎢IP܏Qey[h.bg+~RcU1e*DRuf1owh<CԵݏ~5QM=ί	ov+O(?pg<5eKt7T_'#KLKRFЮe^tbMC}߹7Tbڴ	jwωţi\"1`Y<`ۇb,>1-	TI8 H*[ (/BP1	
+-sҤ)F؄_F4(."CCiyI!}-SUF> `6HbCjcm'f2:7H; y~ymwGѯEقs8}'WmAvc}(V'<y̬aǕ[5Zf}UZȔSf}1s}Uf@\z@t8Ȯe0)@u)[I%ɲ2p_jQdygUlִEB7;鉤}h$+SC#֩gG[rKbk.i.5uɥZĻJW r]4PO\-
+d- n7űjJS^[8D[ם;٩$t\Cx䕭@9aL9Kq"6r;ukcVH-72;1KK3-DS&l
+X9 đMs/ lb
+X7UG.r)z
+2N,A^az`/y`Qf|w^ܸcP&S1#9oowAĝ-&<J;lX2061+_.h #:3[ܺhKʖKk+vCmqyh~Lc /3x9q7bX*šYhYި01$Xm:`LP6%13>|nA2ΞD٧&IYzBv
+~~/
+__zuV/>^s5>"5'Ieй/tsSV_h(;XEWn]1MmggDO
+Bui1dս#64i5L'Ny0S}yy7LAAΊG^Y }\mJFٝRx"j?X~+|~vj;EL/O;6Yz3wI${!>P8\	fvSLkBb,h]b ¯BZ`li^:aưt_B|d(,)bL:D+жc6eV0ZCfga~,.[nv|
+HbeBP쿮>HL^tG9N`OgmNP:pa8\ `?ccu~(iM ?#07vʬ(&d?+f85209ШZ2c
+k L(\OPs^v2e[ۏK$.*URDPcցhl8(R 	re:P>$2-h.+Ec-a[	v#w^wT$()duѨt4!M^'V@7;ї -`SA$X>;jKq&I2(n\S3mT ȡڶH%`lcqզ){Gu\srC_? h$U%|ZtsN<[CsVL&|L8xS]tn讀cG1KU:uIQ"1E1/a#TG/Ob`OUFLFV]}g'b($Sd(vV]w=Ҭ#Cz;֘/7-<l‟gz] .ŲZh5>8'Gx^-R툼-r?#vl44foRZ[po}ϩV}ګO7In^{ckkOLCeɏ4Xq()thmf-%RbpK:r'L
+o2MTf>x(;%盖?mW"hh?#t3H]3V"m5W'P[m/;;KPzNZb	޽ѝ[~fԑG1J|C6զ_զmj 84^yAe/A%!,@09Bh]Gc \J:tPNĨa}5Kjk#:CA.a *,<i~N!F7QIIvk{:9nR'k?JߘܔϏaEffmʻٕcc[9XifI(bNR-x"Mr@1i0PPabɽp?>1v¹awY:)JRP6Q@N2ל'4^4lu)(aLUP4MiU~:[vUSqP	ę	<*͞G<BGс^g?kd:ƞSmrGkim`C]9vf].ME!~I2k	g^c)s6+O@Cc3n9$(gr䐯89gc+[9l>ґ4ŉs#B2_3rb!Б.Sa\b,ѕ:%]tU]Nߤ9~xCLR-KEUAVʃ"ͽ|	@y<[JSTC)g	']EL̨myS8+$MYVv|"@sDn|*GRm`<T0mͽ>x^p^5#l?њ`5ǸA7|;6Ut6Yy=*/9'!;6IH}ĺyU=yqbɓ6	~Gtt8>jϟ<?>]uwd@P<7Ų}{	m{})Y'u޲;{y{#շVG>pL0cOty*7៕{\hvmr#֋
+\uۢȰj~M5%륦-m${L:L{?Az8?ɖ	\WS}h9J~j+~({2:DIn|1Z*z6\j=7n T&=D#DXA6AsnKC L J<c0#Bm!C+4*Ǳ*0 ck&p辄@4Tdr 4Z4Z,~>W'z?&i3zk=s|y7R=ý_v m{փTze@CE3X9;9K
+"!ĤxyK"Y]Wp ̬/YEZX Ԥn]KZ].&6@zr}g0ky6g&;M˳_vY㋔UXm9gu:}F>#(E^ݾBYoIypץrN4#4_os	<:"Q|*GS;.f9mJ!"F8֬Xc	k=OSEke:j醔%    IDATwh6Ěڜr'ayTbl<?آ;Ǽ95yT\?aʄw-ssLqZ\%sPfMAb%Cau\3e:`5)bj;@P$ȧUF2b<SV6=5k%+v3\m*N6Wmۄ1kK8ˁ<ʸ'D3'QP2SIӢ[!yS7?`l)qվY]b'*]y^yܺ +Q}bq=3]>t?я>{?grv*T[oLOGooثczu1K$.ȃ^yýw7yS._\}q{4EQv}~zɑ`'z:_Ӧ(;Rv>ZuMn-[{9un6[i%kۢaJÓZ*9loAn
+Vza;/OCP^)E+qzV|ӑG'{Y>BȒVBZ?>~5>SəOe	2	. Fa.2t7_GouCm0CZ*P$S1:@P@iqAYië l_an݋0rgW{N~X\빢?o?kRu4%o#w[))WdPVJo 5{s/Xk#'GyezQfžϮIlh$Ph=f{_'5a91=+Օ34~O}&v7ɢuNh/~kOKH-*0ܰۙkӴ&)g[#5)ˁw|{z>k9gOEL@s {֌5{/KL%ktO4ZܡYݐI	94%13<	1g%a+yT(i &F̥<Xi}8(V߬hmMe:MZ4Ҕ{57l
+D']*E1Ы[ssڨ4nX]n	W&Wg|->0|LW6
+ ;d]1jVtX<)T0C^YfI/Ζ-.퐓d̛eTZ6hɹ6dNf<mxjy+/5ϩŐT.#*L]\6J8e:90hSh3P{[:f:[*	D}`V*+ZiK.g|'|/L׾Ogu][A/#3-_U싉U\N\t?PDʓL|ȊpŚ xaڪ}_8?=R~96Dt<9_n407cӽWr=^8smw))Z;5b&wlnK^Lɑ'6EbjھطwK rE~u2BB-eZ?Kk#K6L2E4Ed1Y l>g!H2 8h/ϸ)C+%0+"@e6*~	n<~egP	@wa|c* g)_%KXs4}Nz:ʯS1< DR&W5K c5(?iK.IDb
+`,_Jq_nb(
+M,~ٹ?1ԹiiS`bhNr f:m:HdƚAv~򖒽n3s"͡|A'lqZ@9O|u,A?c((fG`
+EX)PuÌ8SC1$G_ɰ.M tC/$f#dcN\}sa㉉-81SScAy],Ṿ5˚Z6JE86HiEwQ~߷ɧ,"
+-ED6m1&yk"	&B J>N>_߰燼ca5g?Zjަb6wP-`O]Wh	mWNŰBۅ2iXP+lPiFVe	Nvt|G2{06yXXEv%I\^wwdJH]EA	L ȶrP%r"*qg^A-ibXnO(j
+ۡ8,I)jf--\pFI{ĥ
+glyL)
+!=
+| `$@/k1?9=sm(GGM^źڜ00培~R{ӛSsʔ8Fe+S@7}&1l6a#U3I3/!/p[ٜL~k6H=uW+㰑@^-M,]O^j%!`2hmJC/2vgzQb %`bSj_8[z:%ml,M{\Z
+l4%Yk&$6g#"KDoM;X=Mݎ}W@OL^:'BLs\ c~_C֙`>D8 Ax I<!@ $!T9p	RHF <6[ 	l/"1G8 xk8Οy_Go,/[0go B4x|#;V MR8NIGea֖Ք&B IPr_NHԭ$#0Vdzf|~_k땞NMejPU8%\˽f4呮lP-VECf#M~I<1"cafJù/eEVjlj4Dl"a4/X^ex]9rVYP4 >#: hYݝS.)av|,qB]D&)L=20I2[Ɲ+
+ѐo蕔ml'ج;-x|6i@>(?uRݮ!Ӳ~/V0N2pw*^Ұ#NO 
+xZJCa1K2/a¦*lVsGG3r܅b.8EX`j9 rޗěfͲQJ}P31g:*tjl"# ;Tn|lX'^6,C<
+z`9!m`ϳS f]hZLmhܭ!
+p&qJJcыM"  >eOy#OΉ1 X,|2#eqnXl%4S=}g'y9 J[m:l@N*ƺT3uę±h 4!G2m6Iu̔3cG/?zV2e )35wʽ-ج881p TVЙ:ϑ3`9e:m'?If
+E"'5I⧥Z?k2sj>Y\
+|uVO~nnYOs!2X6dq;oT9 `Ud9ē_0 gB1ĈL! vAoI;nGKY(n
+d ]J36lU_(Q
+ƿ'u*\		8,R3&  5xYt'^m76g 5t[OHSz`Gos3#pwgCL!ϳ%#SoI=_ogg_^fe뾵sr=D-u~ؐoT-EzeP7 &]a'%.OHA =1gc $`.n-"Ӡea*k)v#'jlϪNr )6`=,""XA)*IbKS`c~P='tv| ^
+MqϗۿjSу9u]i0Ϯa<郒0raVv?IBk]0=X.lt>v┺;-ݩ`+颍 1ȷU01bzb~:{X4`42+rCmylsNSOHSY] j,2Ġl{̤m4ϷDWNj-l{)i\b6
+EkNHF_+q+57	iwH
+3qw il(	ˬpHOpNÊsϱfsR_fǑ	o3?2O5^25@%ft+`>cg2S\+څPc	MPj1 z~C)*0}>Mmş3>,0u&WfR3cȘF`W_鉮0p=Pi8fEZso"l;KkP2 Em6>ͮE@ٳk^<D^icjc2u8yY=-!ǿ9dj`tߜ-	y^BLIO@XPv^;(<F.;^-"	^<-!X&  \?p<<!vd4O!cs~Ce׹n8 Y1Vzg)L(Dw4>&ڵcSv_74$0Wdc!$DܢBX.>ũHrS,Y}>rXM7rw}Ĺ-qv]~MwCu_䬇f2ap,@sԑ^$*rUjLeEMǴs87Ex	Pd Ȭi1um,9Pù%)))"&!ah fU4dĶ>Nj%a]lء	,uuҀw43\aIw 9L;o|4$<nJE~	 M׀ԐVٮ>=aC4?`uwj]~UJ8ڄ6k\3hxLLjngu{"Ɗl)3=*ڡS&.biu;\0#_Q9P;!cJ9򁮗EbAcgun[/2Ĭ*YbOQܡM^0%מZwU񀅥	E4*BWmۃ)Yj,I1 *@߂E) GpÏ3~d~o?1,MX3Qh@
+;#
+#}U"ɒT<<ե}l9"<iD{A9_=3yf4C<#9%v~HYPKmH>Fby+B8d]1Xt$եPM9GXb"c3ΙXW|9j#_0 72S^]EݔLH;8>ȏ-ӽYk1H#վ':$ TnCL^!hdViv<vnmۍK{yBZ(OC?tәĿl0\[I-3ho<IWLa5@JKib 0͹4ۃGVDѥUH#(BWzazNjDJ+GrL^p˱~	Zj>TK=Y%| h$CEA_nAl-7$ÚD7/,8E&{ ? ]~`틕e l?jM~z(N-f3+k8JEu\{;eKrx1680d<NӁ8fcTq@4nne#fnw\f?Zf(0,pɉfվiM G%k!489V]Υ4"
+XUcs6zЖGIhdeZ `ź@+s60 cXd@:+^A_C ie|g R;c:ަ[iq9UZܟQ7,|Lַ<^Ӫ^NhOi` M -|+ܚbWiԤč*[p?#c2 s%lrWRdUE4Җ&^M{3#$ѳ*NIlif-mdQ+nɺK̔~.+9mY(u;)5CGW%ўvl2,#眾iF,fSxpckj:^2S>=l(]SZγg8 !9l߬eVX`mc.<O?n0i
+Ub.ph]l'B)ǆH:^Pq=;l0T7r >6d!v[Km)
+49mϻ?T2d	60uCMXsS:<M:(3AbeDJjeV"mD咬Nܭُj u/{#9k|TOmN>oUzIY:alY{յzfIJ<'ll'}RmS`4X6pp7,jx1P׊Ul=T=˘lqx8kJRו+_ %!Iå:	8m=4~Q~G0<ݽ+%oc?#f-rS]XWH2̹v j\Z,dFzZ:pC8kR/nW:,v牼l_1Ws439&-ou\%_AtwNEZLUQa3:M_&0.XGU;O%cyent,cPp3ȟe˻nb-Tն$KM(=&1iG5n"Mǐl}r )9cfY@ "0->d w|1aF27'JSCcFf-h`ERaO-(paDg+k|ɮi#Y}C",9X>e>Zx9i&vvZw҉*^b qΚ̄:mVGg"grQcd˚U	=X]9g^d"9P7lFڝfd2ٸhݕ}c2Tg/^2c }JXMMl˞uE&gF`(2`!r53Ć@L R-HN)uj"\·6HL>0(`YI)(<0pJz !)"Io q&
+ $jȊX?O7t
+D5	amT,Z?ܕQna^d|=U0R^/Xx_wom-k)K<"Ԛl N\%auIUzI\DlRR mq-=-=u^"#MN˽f9)t z_DDjSɁơkܩZOz!E{O8    IDATcyvD`q_ڍ~we]~\FQ'FT|P6UKy~gۜo'rXLBiQ}q? ,بh}פ<0}P5oxэ"(= B
+W.`2X.V!!/dt{W*/@ztW2]T78lhZ,ΔsHL%8FB ϑ gɂsԖLڈ[O{79	9Y,||ScOox]e4OLޜ;kW|+33õPݿr6# r޵i-%p2[|WΝ?ڎXjSFPQ~+r2]mYL7hYK9hX{b46j"h  Y15ݲǞNG#}oexkzX+ܥA[ ^9%idVj8=4g@B݄]ЬX+".(Sf1mIлEV&`CG_DA\#>)tbxܦ[7̷4DMbԈ13Rڬ
+O?7ّ+4YBaN}; :id(1VV#PNl뮍F>ȂHEŊ Sd:X5"LTϦjr.j#y5s6l*789u绹nˊú<"
+̔E9K,Fj`1I|f&ڎ?-7s,+gx-2P.C HMfϙoOhlp* Kٶm lIq-
+y.r7CN+9=0+
+kn~<lS۽ q]@LuM=]]^+qSL "%q3"7n/|$:ʙȃ& `(Qbfyrx~AnQz[`jAjb.F MEH^^\I-h `,<Ν	rν!)]ED|DQIX́ZlaL#=TGw[QR$ɮ!rxܲ3qa0|oψ98Ugx@{q2D8<,D{W-ѕǟ8y|'C48Qjˆpk}N`u7q/~"/ա"V!k+?9I^ {mڛ6`I?IWkJ<+:WD7]~1|~c|RF0CkJſ1pY'ʞ_+aON9׻Jcs ~bg4mG&jMD.ca'I7|qV 6]V({zI.T^sqvO+ZrX,JԮ)kgKb%ԕ
+g#,Z{hISnrY<=-Ҹ `cSPh8
+3mWد/LjlghKp`/6BZi2u֜YE?ck#|aJ* PNG!	.L)..m[kxȚlΚβ cWWp %:/s%VJax70%6:6ՃB"A{.u` zTISQ11PSgKל;Y~a̔/mb=q ,[j/Z/U7*5%k\\@"-[!iܳƝy{1߈<䲸,btğ 
+02	ͪ"V`<yE67-khzmOY_fPQl&qb5 8p(Y>2Sn~Y믿?+]{gϞ_aa"nv=9NkZy~GYPIt+,Ggȝh;/xl$X7fC  j!K`F݇9Y{Ŀ\n>ҵzlÒ6G8i&{[*qNNe!@dd@5-`%w/0VpAc*Yo0L-~|OIHENT^X/F]Y۷AĜ ywlqr4ztM:͞3^])ޙ(=${K (0~k~pbl9P-0	?g<ڸ+b;ߒ<D9wki4[<6\0={sKG.oӦf8xX^-ǨSZF O<*Ab"BIS S&72@(X^:~sesoԜ[J0~c
+yP0Qz>{_xzC}e<MS멂=(}ik;P??HkvϜ+s86fjH-(
+\_Te-/e|3L_]S}MHJO/pGSM섺 twGL!b! 3*;8Xj{`έ;o|YutLfAr)M.PBQiۂ҆N/	pɂNz*u|ʄ1=a!$a8, m!"QLs"sYlXh4enPQ [$15 JIS^O2emO /` 䰞`!ݛJRCjʔ]"{kA-5 Xmڏz1Sjok:D8ȏ\1֦2>`|h+weɊxn	(Eqln7`X-{N,L(P
+&f3#hybc9MZEF LӆMwƴx9Q)/bJ2T}svѧ?=N"f hM%qjDVJG vmH۲{J:|FTHWv9CM$bCF3!]0T1m+}t$ `[v_y{oؐhRϥ	0]`8X̿<Bf[6]1;t<ʯfH^Y:ʯ،߼1s:=!87MTLmnNx]gjL%Nk ~23:d
+ dz(W'緇YO÷oohnHkF 1zqFN6ߞdNk/J5䈡 zsޫdS43u ׏_!0fP8~-=HY03%u'm٘z|uSxT,X[s_Y!L]O[4Tlߕ}ݵWLm8[ dlX>fq,m-y](no[իZwa8 ge?}E[ũ/{SyO(_i 7]Pnfdظ|'=pQj[6փu)Ni', 4Th{QOa[s3b>3 {ŕ3DM>ddS$rPNMgSSpM^ω^ȌiU1cOXPM{=uHO$)3lq@Tnӭ>P>ϱjA*֨ݷe,g-Y+]h[bĴʬ=D`Hy%3vNANBTk^x,V})I8|`?eeDپ6/N|PuX>᫈Y:[O{|k֎W4V&[ՑZhRS%6u+٠[ˌe@<4VEXEǊ|Mu6fX)rfYK@%gt
+*ܔ
+YF;1Z)sfbO@M<_]:;|sՔ6dc1#?z׻nKpo~_^|ş'}~a3_fd tlVnv3xW!z=c%j"h#`+/^1TeV[϶	bY[&,*pTnNCs*uZ@ΐجueen1"Ii\X!h	{lrYh&8 UE 9HXa:kAM6He3G@W/
+c/+lnտ
+'1[ˋ	qgHuaD$yhfMIr>cC߾}^?Q]|CѿuAgQ[^`gV?EL L|E%nvU`6z,lW@h!w0멒P[hΝu1hw^M5QtK>U}L=xc/׻,K79ګwU_bL3_W+|-bp&Ġ4E8y	bT,T>e/hOޗfWe,{jo{8wHЬ%ἝO$mEy/Q}1qk#%1'9ܳ:dՂ}D-m(=sy^?Ucz 5# %rD^<{& r׿7䊀r ryGo7Ңme-z|L̪XՆt˹l+l'>~-Zd ܏F[mκ0aV#	sq@vjEw.a3'N/z0WC`,iLB扞,[vyeynmtx}p%&"0r:_1q:C,e,y641LUa"W&؈R6'[ޗ2`]5SOY?VZhSh$/]K^w7B@>6yIf,IVO\7`-D0ZgQ[ČOc{='pбؤ69!
+}3kRꍴ4#6.o|߽k׮%,{衇'={p~gX{˙4Dc3iVT|[)PqICZIr!U*2#T]ܶ^_*9%kVd$)PYfЖrXe;#]OIz{TUĊlhYDsc8+J]%WdG-<Sa
+s2J)RN9bUb5a_,Gk]f)Ts#ύ>A~ꢹMzqxe',N^4L_ٙ%iD]ůաJCKa0}pa: {jrRoswa~˛/god?ֻ͵&]C?;I1H0N_٠b=W{Du{95BIE3cx2ޚk+}ͻ
+ٰ|B{YefZ>'OW~GsuxvK(9_MˋGO7:U}PU˻qU}E]/yˋs|S-~^PFIzی$Vd'p?%WݞsS-AwZlRsϺߵ;7_[WeelX^4̯ L,̬s|#rl=*PM<Gc!z|Mgq<-!k F^asE=6 Y+ɡ٪Ϸ|93	hbh&Haw*=鄇-~-M󥈶HGt]|o>T#-l&^MY<tl&Pr~/r!Zgˬ1*SrضEsK<粴|~Ar2LG+i?j7}J%Ms_^˚xvv:8qAGFu{SVVrx,@X0}ˣ
+C.z_j
+l9ĺ!ݕSE=H -IY:/l )*j,
+p*6`#6XA,7'	Lާ>NO} 6XѱY17~n﫳]:tՌVOSt󖷼ߒ^Okl6i6vW9:l80>]ಀEI~L0ŲDO%4Lѐ5#^L[Am3)0+bhܕ<IfB0' .#Xj^Ь,M*ѕ|ALLAfvדwXsŲA	0PFM2gKm֫t;,5Ќf^H|ֹUazx]ꩲ_'TR؀WӪxǌ)6+%0b=Q2cov7M~}~N}珶$tM9k Ւښ\Ow+Mx7y'T8/_O/D XwI2! x,s II ͱ}X^M^g	cWXp^A6oMP7rჭB,u,kV#/TloLӫ9_%ӭw{<I{`-CdWz+_+8\ޛugk;=tttdIl6!`c3$`c|$La&my%Y9y^k*?kUڵֳYto/H *j(gn̋=i~Qvt]8w-Wi1&p[Jl]8eo7Ɵ 8 Uu_ηje*3NaqhP\WI'Py<t-#}"߼Žecaj W !&>V34/;=(p%kp g&.`<OIbrtp_L!m!Z7?Z`+N"8 jx4^ 3|oϲgq&ZUG$JN~nt'E瀅25ΏR(18%u0V&sm좊Ĵj έ|AͺXŊ`5z[zf	7N~P3NZll#:aMޙ3+w7ؔz-Z88U甿q4G>_cL/ؠnvofOh1,ΰm3@Tܰ؎ )=Me&pY1+c02дf\oHaWpǺDpuڦ;pG]k625=جAoeÇ/;saa >huuu~~[oKNK=kG?a&:hvZy c-2esR؈tb:kМlS>=aOU$q6֦y}lRZfnQA|U(atj|V2C"6
+soH؞YpC "
+pK(OCa/g9׆PK;$
+BMUG0ȇ-~d=yQEMSq8Lcȇ%W,n8%     IDATgOT/Xvdv+]Ogz'USKv$.ܯX{?ՙTrAɫk3^e&y0yo5L{ؽ|Ãlrv P$2' Hج02`paj 0ǜ +mT	25kU_B.q|M^87[6W֛\]{]׭=_exTZǵJϕwMն͍,{]+rB0Gꍛky>8N_H^oh}XCdPzG|Tq\/76&Lk.ֵNYЦf$٪|=wyJ
+lщɇ5)P
+xZgSjCrdˊ-@Xr(p1C[`[|
+ r# d;Q8yԂJf
+qaM1(4"ݦY~Ivf)XK8#͚b2UVTcyͺ=CgXFbϬ8	 {VXlݖ%mE\,_/T2,ҫj΍jG.ǯ>Oٶ//enzf`l 3rQOjhr2SigOa 9._gVPL~~͢
+bCk`KQ *q9xXՑuY!_-]PJr2ED +!PͰª}⓴W`&X=w~OkccciiI!Ȳ%/y_h48N?Vv:V/虣	8`>pd1 UgIU	C:jzmNЭ\^.`L]}t^cu&QĤ:l|5~WQPY U ԬJhXM(P<fwlh(cs"q|KXcjaG##`AFbJ e>C X]`r8ycKZ^DraN/;U%e{|X &^S=WyUI^%&J"EOɆe9<Թz\ϸOzOXtzV~C ,/ϰéu}~eI8>u/߫JM }>i~+zNNfsuHڔ*?'zgK6_z+-~ܐ`L-Jڹꑒ4m_AxRn^7Bƺڣt>7!~۶sYݽaNT$ܶlL}tkq	ʥ.oR
+E%c~<d<p0&]i\WtG',nzaZ<mN-x7k^K<֬~vqǞ6-'G3km; IN+qYXoZ;{:퉞[rJ	EƐikYሆϘW%tB#E&gc"-*hl62>=N7Sz H071+Gg4
+	?!3`ȘF)Wņ!dh\TE:VͺXk戇kr#yM_'cmʹYі꫒Wbo\I{ΆGһ9fIHz-6?Xv9aze #őuKǺ=)jw\앬c	Q~UsGɋsuF?9Rۣ+O_A(d"̟0Tq~Ia<Z j@]ݱ	naj`N~nZqJ5j=%p`zGukx+J;l~l,GZth4/&	@= ic>6kDko2F+++=ϯŽ{^xOUZm޼nzӞnAey ;1).IiS&|8Մ
+1uϒ8,VOGĂrF)w3`ܬA%'%85Ƅԕyd[hE4@	eWÊ"2^'T)k(JXcMnC)+so6}H(ҐYS|fWjb],,d90wgk`C 9X
+"(_;.yg51b-~{Zrܿgouk|ޑUKgk4)O&zV`b({ xOG>i<'ِ]@_DE& "Α2DmX,Tpuj,tb)c8C<gِ0n#H=Pj9_ݑ*r`4uoS4mB(6ol,o1)A@DG!Wm4ܶo?υw#c Bv9/β+ͲG8aFM5qëU/J~ȱoQz 8rwџNԙST~ogBoq׺m=>nGѦbFHM׭}<2Q=*qXRjwO;?;/ &+ Xe]?(Nyf4̀N04k
+k9mÂOwl蛍>@.sJD:8-cn؄'㦼Oٳ8Yi^XO/^}S?~m;n!fUK8_ݿXm9dE@^$,)?S}ޭ.?ڪ6ɞbq&\_ףkw4#e)77OU_yvpu+Cu$(Ӱz$:UuFdN/e_ZqOl=[Fř5nCtOCcp FݴoO{% p J3)T+'Ӑ}gYb<+ȶY<TnF\Qdů	Lwm ^>%?|3wk>/1r֪q 60=c-J"Q>5@{8Ղ] r%dp0@U8&ͦ$u36'ZŸf(,둡2܈I4>NvQA CF왃pgpr	~Ἠ>V<HŀI3*JWشVl
+w
+BbllfQbs\mM'2mV4}:bS}-.bILTaO=Z:>I"8jŏE	:6<`'^t]w8XV'_
+nG[T6䏋]%XNZwLu#c*xXj/| ,iߒO(y#K{m:^ȍ߲=s&_^s
+cp<,y$ϲs%1H q@24	}g^Ta4DR<~Ue^hsp`;0^*4xnF] `9Pd6bٺ[Vk?IW*3'IϺ5/*y75N_,X>̗މGKjGjW4̮ãyq}*Rt=ZZSf\$E8]ņtƶuCYDlLr -}=>uDWH#:Ag7_g`SKeC!HcC$6f"f:RsFܧM=R
+ܯ/ǯL7=q̐cԧO6eZ}WOox(~6Ur8'SqFV728[^ڣ荙:YmbGG>D	U^ߺ-W'޺-ם|0|*\7M[<{}}>8~dLv/yiA)k'yd b]Li5hAfcu!vae=yؔ2Cu1D,^ky$ѳ%kIL4Yk-nbVXo-4_tg_ޑ}5\swS4V3RDPicC|57liN䱼*r5s0M(tJʙS06>%H,O롋YbNLckz?66b4Y+"('&ЍLdc94mCX0%U&Ja}[4\
+x9ʀk-!GǺռ~hQ/_Ģ>W$pP!ږm:sJM8j}ZŃnr+	.߰AQvy QqJ`6<2Df9-iNa@H*0`8?mؿS0I7ݯZ>Z*SOK+;+޹ecm[{-[hƀ* FC؃RW4R^=nѐu׍dITk8mK@7  hLx`Pt6SX;V@+Ppd_|7N՞bG| ]vƺa8}VM7^TR㩎uAtm{^?Y/Ο(DSɗ0klVz:c^q8|
+StkJ2(9Ya]Rź[n-T;^tlZ]U4h4БDƚh\u-V@G/ 6b%US
+	
+ (dF%&؊jvx<"!ىIaq]Wއ;hl6lOU
+U}2S؟]y__:I_Y%%.i)3Kwr| gR?,3Ξ%zt-w	mjڴf(33KY|5)γswr2ٙ{ !>Ξ@\I:|]ݰGfLiCM<
+c32Uy`pe3jhD̀4diL) AGO	}lXPg_S_biJsO'OizM7-..bRb-r
+'ѱ*4>b0+B-!pDjXO%ȑvdМЌ5:I0Gb=WS2/~_gyI Cy<+F` h$869>ZEW3Jsw6"11c Ĵ`ZCs ,f|d5EB%^4r8uw*Y05Ц[,y,XanB!IffB4_gC4]v3*Sike^~ io?l`Xg[l0R]q~'}<ֳ0АpEa)
+|qф-cNlaQl -6umK郹ޒ҇\/3m4>5,(`{ DS6,q;0zTa4aTi0t di_rd@N>uv3yY
+~,pT[c^ . - F_5`cpОڋ* 9C%OfYsg~pбnH_d˻ཱུj֭c8}O$fN'r;k8UY&) l#dN"j% 0^ju̊|8כw?OheMvlT7v{?[St0TfEu]9̹9~Q"$z6VqMl{_,ˣZ"4j}{S9ITo6׋G({>QzM_بAYޚ뭮::d=;pfG*l/-{z?@L=fQ(L
+efx4W;z U>ոz6\ﴭ"f:CB:.s佂mԽO8{2Hm_1yw=~)ɃiuBDcݐm3Lo ăf31ddiFvqjDwpLrf}M'#ٝ"lQYڳ|w[%!K<R (s30mP 7D&93ammeM5Z50I$.VLH #Z@9 #q
+2=2e 9AWx%1P
+R%66rfj`T+&%V	Mh+g@s-FK0Ԥ[݃T}o=uJ cD_lKIeY2`DS \151()Y3"2AlJXnQX)iAS>b@CmY3X 4T810./izBO88'pId+3i1O#%(~Y]=K`Pl܁p0Y+ (p*}P26$=
+NUE#C܇QIxu|:@}]b l`'-CHJx\"ţi)zOƓW럛Ϗaҫ71-(VKWz!fDn<IzUXuj<~<ћ  3%haZv2li?!+4e=Ĥ.sQ{Him,H 0рU0 r`:RXAtV6C-Zr YAq2۽ջpצOl_$^WNIqaQGu9gz\y_s8J/Td7V  >\#횯X~|ȵ;iF90Upg@AgZu?k?)=*)/VzSc^PRAL
+ØZxkvl+_NٰKMQ~i?Y0y٤8}.Ac<U>.?^U\/
+z&?S!޲48&3LJɓ
+kHCE&i|nd֖JSt+GU
+knot{dqC48X9EV^yX-0CckN#yIN.3 ʬtB?Xmxіz  "H$omSVcsf:)- iH`6mݮ`+@a`e`V9Zelj0Pfin@oPeL)ROxN*9kXdrng4@U^rt'q$$KOSzGd uy[lHu1FbSmiYHm)!@G#yL#X#&3O
+)NDC]."bOg׬qT/snLcő?o|9TzZu91X.D#,
+0EWAz0Bem`48CeC 2s67> LA+v  *d!hQ͖P5\bϫ޽d`?/JJJ]+    IDAT쉈b/Ñ+PZ
+=+rzmOޥlEQaFɏ.ɟ\q{C]v8lRdi (3euc
+	eʱ00D9UVU`cAF9DVHy]\b3k>lSF-vFHK<VF,gR@:;=UJS+botm=8rqVZ_T~Pax?Z|+geO>Η)Yqv-l8<	s\~GSwaBg:7WWU>N5><?uj곅x,_1Llϑw@Qvŏ!悝tFoJ''% p?Xhj_}?^?ڋ:wNIč|.6@+"$%&82,*ZYwiS̴!ˀP$dTvtj˒kr7ȝf}	{:\5?ژ#s x6/:e9%۬֌1+-#`)[A6m,m(.#6p!ra_%#jJLΉ:yX 2L߾M!g9¤ɦjg`S9.2ED+NVr0ᰬ=C ZRDԫrc!(9כՒ|3vzdU䔧: eJ9b&&3R>[REƞLLÖ<ڴ^I.d6=+"vYRalV1gpDc^Im	)rIZbhdfΑw枿cjmKqi_NYՓBWOS402Lo7 ˅f&x-h.AyR08gyנyCA0!Զ@BV8g{5 ;65sB_a*`+}i(Ԯ"/B}K,_B>sfz.`v$Zi~i^<z=SEǾ\[˺soݯ؝m%I%h+'kSǛ?`gϝ?'uAyb(?RHMcj_؂XĠyd-7B,w*3 sVsbӼ.TfCzOXnf/_3+Ն>. Y|4XV<^-%e; EkmuKR+oNl|OSCYmjSVJ__];w~smvg:)S]@&䥜/?Sz! qJާTJ~̵ndlr{c|lFmZ@6W?B_1Pݦs*{,qkb5p6/elT^Boҫ:q۴KK"&{cj5$G6wAŃ왒z?;?~ ceI'Z0 >ek7ߑ+,Ό"apЏUDr<M457LV/']b'^S	i!N|BCS0
+2	Ƀ56-2`sto7D#Iph?rC<41wd@ː ӸĪd4YKQVWmc|fdF-FN$14*O)OhNΔS
+ *19ѹ@SVvha-i6
+XrKv
+Ìˈ̩ުѓKQf&z*2zF2SɌM"<$RcE pŴlޏ[zV8'/7R |5#J<ό@Ġˌ.?֪q=9-]*NW)@`"Q5fԶNa
+*a qH !O-paLBBt *D]Rpk`4=;!ði P1נH/_0t,.HKAZMXc$#&e":x<e/iU v~H(@+'do=@8OTP$2u&H[ `LY?NzSz8{2A8{Fɺu?K'OZXMD8 E+=Ќ},PLUjRuM<jȮ#r?N^Qo Ctea{J]ly3|0J;767I_\ ~cפ|0˞_/$/JԮm3K\x|E񭍍k<S_ǛJ^ YӎVJzˣeՁ󏜯ؗ=}s^:odO楂LWWWL\^+#NGo97&AL7ϽteKUzހ(W*}uk?y5*L=hRy PWg'jɐ4 JLe>n~Ĝ6
+r59G+r#]=l*[-ִd.O{[8`>TgK
+vxlhVXϮGJ`0I 1}s	#JPقVbR"rB
+Grpb9pXw1`#Z5 8>Rq
+m4(IM@t2%@؈#oƊ" %]PnSjCe.)-aMH(&AO #  H)wSaH%
+eNFQ0;OurYZ Ǫ JV  b&5ad2:ѮP[
+<#e `  aEŬ_QiPlX2Ҷr+
+UnMIfʳוifd9\|rcxk2@@i` , n	0V64C~H
+=x0>^@>HMz0Mbt4LNJ9Axt
++_nAA2!h$(Ox ~NX)	 !R[ Pɶ]H"q='Wޖ}&)ӥxsٟaXr .Âo ظ~.).@ȕrL^CvA%"Ī͏DْsW<ֲSKL(bĔ{h<(ޒYGĚW,ُs	B+ Fa @eq"MO)㗭ۇSώ+[7i=O0YA\871,X+9xI<CA]2ק7k"B>!hĉ1ۺ#Nq0zM}n^μM팁WpF[Kq()2>[tONWS?<|iOqǆJ 1%K<eXwp7
+֯zLŰhߒ叏w}kDVT@\SQy}wI~ Mex!oG Ȱ(LqMa|˰.mҴ}ۤؓ;ؠaN%CaݓEC2'N'}Nhlv}~}ׯwwr c! {DGlhX!0̈e\`&AK>9u󰃭$(wNL6JfHq"h;X6|hsz8SbdE"`͉Y'0=	,!m@AaFߕPQaPr N)h5
+$s(  e%ĔǦ7#fF:'0 2W 4)1EMj$GP$&(*reBJ )Gd `dJ\aJ"'eH[hP$!ޛG[ve|Sݚ+T Ġ"AhPlځFFZE{-P?dd!!	$$UR㭺u={޿#YZ_˻޿kyL5`a0ʆrIL@$ir+j A&7TNU(ܻu<NSftW7+bIg0,Rpb(s.56O ;hE=w
+pnL"D!bQMP`jjx)!߄5 rK6a@
+)dt	$#-pt|CRT)t<*{Q$ ÝqUh\Fe91h~*ϖgVXϲqVpqv;ǦkBZe/lTzJT6fM[MpV]gG*L<AW><S{⬅6Sc#sz,۪EhV<"nhl}H<71"NdB%KƶkWtUu],q~A{ߑ.t *]oRML'ӗ/e$;H<u$FD>q0`oրTU,o)=6Tg|HdanuoelI]vƯwiQ~&W{q<?O!~&/n	ÿ'/o5ߓO-:GܟV?;,`L,#sYFs6Ku'GO0J8$|ej/4O,UvՍޕ^7j3cZdAJNu(yds?5zY{4}gg禛nz?d|O&`ADXveLjTjCC$vn,NUll6g梲vw#Z]nc/팃-<5$|e^R679|Mpn/[8QlvlNv>'EAK|r2S:$-=ip><7D`q$I:2C( 'f2 j.ّṰ.[I&V4OMj%ɶ9	Y@yċ!J#S
+[pˉ
+r.El3$5RhfAsto|ʺ*eͺcmmmJ+pҚ\L4߈ݏ_bgC'xڻۃ߃|/D4@2U>&!TSUh BLmA`N~h6ڏuaj48+OK	琎QP`%Dp}ST H>h/Cp<(F鬩ww{\wk\%?1I^[T7DqRj#NxުʻcYO~˘V}^_q?B܏9QG*Ȉl8pǪ\/7ĹqR:VO.L;c@fƊu#K&/=Jrkd=[t>d9[>]qLO
+)~2q</O#}eƷ:ݏpv󼪞L<Z҄9Ơ}0޹Zl~<j"6n	1Ȥ  166.`otY)Q7fIx11OZ;EJ菭83mcՂ`r${Qnlh>hMP9gô|vnRuUl%eorı*v?v?W~MÒ]l(ZK}٨*Mԑ8!#B76ѫ!r4SmN3xV
+wk/"\#]9T.=f,5XaqvSg]cn/XL3 5J;;__AsޣVeFf 
+Y4lɣCت% jf[C5?1]@/#]BV>sb;f>XKmv=IWZ2cD,y:)#[/.5.P[2.4jQWz-3ëږ0f|F@3 #^7x">qc)iecjp]k#{b8 aA/΍gZ 3	NrUz{"^Eg}-/vhH:w1.`bp۰X:T ?:sp#\:"\,!ڃ!䗰C3(Ǐz= L`~
+@sz`A"='D1QE7Bk&?D
+Z0ғw@VZhk1cw> R+'UR	2>'T?x^<qw}sw0Ս4p?]ZO[o|eAbTfrkLԞ<2ە-X"I rNc9Y01紭Qj>85~Cͩ/|eFrw un8g0OZ0>7Fѧ|'	P/the#az_2߀,K&Pe$ VkAp	?Fu|~}Uȩsoo;:9/t 3K~֢7%3`K/nE񌢺RWq>olTI~j'{gí&ˤ8\y'ߙQW~wNq4?|||`fՍ;<ygJ# UzeJVH6CNNRX#q.'?X=cpT7
+;3)'91{jŴ^$./;YL3bKԜٱm9':t8[bY,Wg+|,z-SiaّAn{|g9dv͐5SQb']5+[dv{\kT{-K!0d4Y!PmgbHWV6`S3nCAHNiMe'Mt7:j265s zda)5\OPX2w<]`j	IFzm9LPw-|^_l2}f")gTz1}  ge=ﳳꩅiu`T\%In%p īt.8av">sQOQv!ۨ![/"93xUP)Lj
+	@Ę Pli#[G`r~n D5G1E8(>%dCe2kWV
+~qHӭGwAd*eqǹZH"MT6^yq,{Ku_Z	>`06(^ն)؎/o/o_BJgDIcD`RzڒCh3sJ~>GgA㢻&Yԕ&joSkܴxVQ،~kk0c^t!6րq)[W<_^u4aԣk(r|D#l2=hu'3DaGU@HA0` $w(V,AF];َ`n,80ji<mz"Cx ܚh~VY irַTW4ж3/~\Me2ˎ8flsÆi^QF꼾z!qKr%WSq6^lS;WFtYva2_ϿW?,0?=_>77?^ZQؙOw	Rw*}FF9UT;h)0k	@-Zb.EnN.,
+yG!Q1kYaf#17[5=63&ЀFj56T6TY;Y r    IDAT̵ ͉JO }Z2@ܴ0`ǣ<K$$$$| S$^ebGL+f1/ϬGB[ʭvH,; "S00dqV v \f}~Smdz1v_\u|6Y>Sh5^4'zSgApN D _-BVa~?	U,=k_d"DJ8]:LJм*dkp`" w!#B05 t>L@95hG
+ 	4w*f[u	'D{|ۼ\@HFK ]\	(;sgU6~iwmF\36&*(62eV8;{nF ȻP &-8jvBFoΝm+-yܡrǲ՟1H=OC6_yz%U1L/[~Bs[[^ݸƢ3QOu.Ǩ
+ln4콮&h7^BN 1w8 z+Ȧ`GAt*V\H~(\`b9$YByW:Ax5!Y{`L7E6f/%O[[ޕ?z=yO]_F15@B叜PZznMQܖY;LZBB*s+up1R(~a/j
+}!}8R/s6QuΥ_eHeDJ OvUv+Yb f!;d>X?a_:Dl6iߺ:Qp<~jl1TW[¥Oz[Ltynb7ڢUxhpHGR	3 i`8Mf&	lUS>1Ŗ
+@4y	ȉxYgʺ>1RnLjLץ=:7.q\F%mPRZ(KS3Y$l je
+ViE-]Vn\Oٙ1-F!+R8Rwr'ȂlAM<qo,
+J/nWfko])_U:Q'Qݱդ~vTZ raVD /~	He
+-={a5xCXz&#z<Lw/[6	
+duAa-Zע'!Wچ#\Ql_Ӆ	libx;6UTcT((F
+~UbBcN]B w4kS-H&܁q)FNhۋP(>	gчڼx&ĦZ]fMRGsjfl;_*ꪶ!Wܻg83 ;q1/%l}ٛێ4ripRStEZاL.kV	5
+ժO46;
+i!='>6">[{]!z'nEN FAzy=qsգS."OZ5H'n#nC+!g57r]}zZB6FxXU$N"b,F "E]ڷU&Miv|WUĥ/1;ݳѿN珒kud4{'oϫ-EǢ8BV>~R[\UOxӶo.kuc%g;=ysܡ2/JؘSZQ$ٷqp.k_Xo't":ݱ&vܦh)d| dH4X,K"F\|fG2řz~m}<*[Jr;ȻlG?,'G!SՠW6Wҥ%'-&f[hwux ;93ںMyl[mrc,mE7l6#QFYjK!@}!RN|f(-g;j2f8$%DKB.Ȧz N\7xC R=^. ڲ{W^_7jwX>_.ؼP{Y_,1*Ϋ%j#ܿ/8~ח5An\-	`A]@h?$Fv"F=|L	h\D+C&P]Bj00 @ x]@a[9('9WA B6wXA9 &PNP aF؃tPEUv:E5诜&Җ/ I~n<_9;<ewYUUyDFDuym-4\V6vO/fc;+pe#7#8 5YWVeiik5Jaް0lhN-اvi&j6zi,&aheu2@nHBzh.#hk @*Ub!LU ~D]b>c0]_A{U
+.uDpCׇ10D(RhknՓ/NFt'[/5yAMFՅgH4vʢz#~G[H67odmV%a~ezՁ1nաnXޝGgM;٫iɆk ͨ<>7K6/s<>mtlO"qY<}T?:=<A>,.)rL8IQ&:;So>-֖}ַU6Ө\D%f!朅iAz$p:#67
+Cjv3Վ9̞le1[lȜ,m`n8My q|憬ˉEѦ>k,6XSe"Tw8[z`2MK-ƟF"%6m;<tXlŎ\G:Rʀ7#4#'t:\&<5Vz6_<Xv}qo׹Η=ygZ_;~w
+J#Z}Y|Alcq:ųW{O]P5{Fjk2xZO ڄр&@0@ d	DWGP#W =hj4jTpzwC6. @08Miچ1?]j4Q'.%nE~'B1C<B(*D!c>z@pF|˭mE>`|k4
+?4<
+=N_7eu}V<'\yw^<{Oev@jl;j8zT]Q)k2a.`֒H
+<fT[}j4Ycb.08vu>1ul;=-8xoی:>6#颷xwk@n"܁¾'r:C15ȇ>ǈbE
+qayT XqHE
+Sq^Dp|Xn̶1b6yJ]c8tTt*omq.JGȏV98FoVQ.-­ x?c˖ =,*Uk%hlJ}40OoD'"y~my}m(#h_#9B{2u9QBMs_~NRy}zvr.dMn#X?ːGS.\8qēRRM[=7)Yn,zl̤݌hI(FҤԚۋ
+iH+EQYfK8Ink4jzgvflnle+9&MZHTjkМnԞwMM`Ԕ>3YAj[tC j,E$l\Eg6q㖸4R0@ӱCfSCw6.U&Ʋ
+T2"I֥03kY݁{jT헬6זȺ!sV#=ﶋ{7n
+H/.÷opDеY@2tsdls'y$|N?!VoАx-mćQ\jnѸ[.G h7PoB.dކNcQ>~zߢ`v'oك]gPa5#5q;` pC5`5&'w
+C>D1Gc	~C=8{1[G4"D7F2)-"#\d!Q  B:҄Jȭ<aU?6SV7QϹng[Y0}O{F<~2+:ʆnRG-,Ӌ.T'a\ms*2mݳN-O͆fpҐ\~.U_kl6ޞm>.@nT28l	Sp	UB+}%SB8AH@UKhF9&X]CxA ۨ`BsDxm.:`4L0.w0cOч(\_ҥVחjkm%2)^ t${6-1cNqv;\qb/JQyع@w>mm 2	ݩ:U7{ÿC?Qk#boR^y;o5O2\!P(dcYc=VƟbZ̞c5. y_WLy\xA?K1M7ت.A ufg&>ȜNԟlnp5%06&126ե"@W;,&(Z0zjWn3\{>+6yPWQ<6k15n]v0
+FjwJ[]Iɵ&H^x>{&ܮ*ù:+tn'IH̮3{~Y~<y_BF׹Z_o?X8
+OՈ?:+}4o["? <΋i!ILG,= 91/F~(!ކ 5 >p&C6|>z7a'!B00e50]NG[selXLaF]38!)6`9)^ZFn, nGocĭmW5UuH	]ΦמYmy̴$}o:~/oN^|%)Tm[ՁB::woGP}3MQKFf{jKEbQTVc>3[|sc:eTt,{	QXQ+"c6н'DhDk/M!KpN&ׄʠ*,>l @ E9Gc?t1vz{M@\@xKHhZ".-%x#CU^/GoUuh2}X\H:C66nӘv? 㪾ʑonƿizk }fֆ&]RwCYA'Qƴl68x6I;*VCƆlk!H~}*r?=^n?\gvd|/n׿w?G_RsG}蠼t}[X66g$I~f,O}"=ݡ
+;jճ;tMn7Ԟe"e3ڣŒXPiM$mfi6os/1VYrm\M.^?pMJn|rV*===keCUq|VαLTRwuNydfMWzfX\`꬯WBqNJ/<nuN!mV S]qoV;ZioFo{h>vbW\Kg_/[V_0T~LNC]uN
+`>|	aRUWt_,c>QI`q0Q!*HDH1%dDy,D:!؇Ow#Sp'ޟ'vQ1yk0>k@PrAO3.}u* QNeUa-;ME27oW/C1[ηi5]J;'Z;ǣmՓq<(c4	XkuP^hkCέ{'#Ï>>'jrğ>\fv;33mPd7YŚD,ӥLDE~s4P%`wQ͠`pP)ZWbv
+.}p{LׇP		e#Z~](p#p .r:PeshB8҇*-b^t!C8!v~t\zq%$`-A P5\ARj:whl}#MZu}U6>֍_'ă~>?hL#+~<>1M_w뛟r6$rh2M_UOj͂6mO8), P_^ inL˧@464c!FOX|fP\y0/ˏ}>fs{vnp
+#<ShylN2o0nP18
+-dS #BPP4>
+"C$Po=f6n/J" r*[f6	Y@mY +;h+;%7 +Ëub1TX6q!0*o.L1ùClO&4C;H\,u71s5G;u|F e'ObY;f,:$i{GF/ZLWILT|<ƷK{rw*9Qq;;QFc֠՛fɢ1b.A+Jr=| ޕ`1 t_g7 6/Ο@uHn)]Lw/#u^a0:X [#=o/:`Q4B@ 	X]`z~"fg`jDmBepۘDat	D4@6qc0]#kP{λde[-}TXSa8zl3<H-jRVOJlTOc4Wz<~0&_hdR<ب+ι{CrŲ$,
+lѣpb&fK_A V^!=oR81GG9E:s8ZGp;qX@ȷPl!XۆQl!(ƨjv6  LTp) s8Z
+Z!c]A:F[ NQa߱@Y+Tơ5l$OYouQW(soC?a-xYRkmNg/OYm$}<{IVD&){2P#x    IDATB\2(^U?>WI6J_qtGųzU69e#qXwX/nUu\u,.(0{_[[m:؋9Nj-7>;@Z.#~|A{	l~A{jxMP۬WڱB[;]ҧ4j֠VK
+D6[K?Q5XCBH$	3Oqfw$ Τzzct(}68JBVfm岳qWm@
+©28ǶGյ
+cɂl̓2A\ieYU&f{ƽ7dߐ$		*Z*Z{*2x) IT,@P$13I2ɾFč=nk`Wo`t9s3{o~&M`!VKdH#~Tp}Vm:+S2ƭ8,
+B.s_IShѺRmY*?_>SYV-w<qPk,my24ahNQ;6&oހ@v\(1 6  -f ށ93  a$a4X C}ס8^G*nG~ `$x'!=!@8Xd݇}cP9{ᶡKD۠
+-൱p6	TBKh sAyFUbsqU|ԲkgKh~qVZO#@.n;=$~~5?>=kjT#RW,Lŀ|J:JDZВX݂;BmTH%M16s(NlmĶiRwxm(}6>8M0Z оGa4W"?`'
+FA`.P	j]ضCP#`PȺ1*mԦ=@>UPIF	A(>P^n4ǟ$ p\jͩu?Ux P#I<7գ۟""(B\_No#tg9/&0uFzs%#tyOL~h,bOGƪ8_{l%COXtcTf??i<l(M[#6?0Q.32t䲥֕3wL9:
+g;f/ktgl5 Mu!
+#tR!kGZSX|R鑺`ġY ӠMD0}t3 x_/rbz6H7$B)ѥI*tBJ)Cc=T{{#ej*]	R5ΠԔE2eejfYO7̝FtMLzl.qYnzJq)
+5GGZ,2Rfrn(.	RMLyKvnoj5N?o؏Hb!I+eyh7ll,cgeCE/ƿ^$,y|y</.0KgQ  @u! (W/>ػP4PA,`@@_P}9``50x.Aه` {BeEZHW 
+hed26\vA	z˰CqEK0BR "7>'
+{zh2˯`t]1&[wgkJyضxڕw"-}lYz~Dji½ B[jG&Ny"Rܰ9;IVi7z&:$4ca(p܇UӀP
+ZWVEp	u+pѾvи4e0vtQ([o}-EIdmͯ܁@enD8dI^9X3aVE	\5|U¯PR&]Jc}4l,}JEQ=׏F?i~ٶV;L8O	N?OEޟ+=э;|Rcs͟1p	;/s5#YyuV^Mųh_9ǆA}wdTqBQmsow
+_V/(c+MbO~&vIC@EHta.Hcsn]y^}$#@RQnM'Dw-f#mfNw2IP]<Ѣ8&֦Z(Э}	{zQA]Ұ1*h^jKripRڭ$S!&bjSKë|U0mcgGK]MrV:%x&7sj$kJ5sW*/])v+6݈ުx*jX!хܿS<>Wq/il3F.~T
+[6mxO+(;tܬjn]#k
+B
+ga4VO8cEC8KQ9-̢: P=?ޒ=0 =m`5OBsJ]E ӐC"i@l@P(>Xf 0FbxF{HP݅r1`	nlZ2#!ӨOrd}Ha4"3ֲ+Koo6P[⪼v6x[<P߾77"+J7?.θ<QGl/
+FH
++4R()(5}e1}.m__WMoCۇS.TMpQ+Û@g.X);!ǡb*7́ZԎ(l=hZ@HQf|G0	AE8l P0݋}\U@ O IaF[ @!v!]Dm,}şe|SJ|:Bco/k9S6e!iԣls-})w%)rk=Cn<oN7J5h|XNWbqN)]'DjܳR\Wt~[ާWُo6C;2M_~aiY$hн	@ZtOb,LBv5B'3>0s-LeiJN<a758a٤VSY-L22Gz"Φ: 98"2Fݽ$WF:)HՂ_Chl[+rm'>r:i)\L՛IWY]JΫ,51un=5=0 {35TS9ݿSΌ> [ںŀEbR*ԎLnfgz[,9P?zd=[H2Q>^!;qf߹A;mymhAN'@< e%TxQFe'j@)Tr]̸:O+.f\ b^8{0WAnBM Ev,Eg(Bv0>(p| 0	*F'΂[!é (+haȶ.\CC!t=!݂X;;6a wm)@Yh%@)Y>ւtdoCV9ִRxM./7>|6~G^h!SbՆjcS^f CJ#*̪2ݰ٪C^q'݇)hXmPo^Chz3j{3L0Pv8P9ja~Trj9iV܅㘸,jO@( CpDЂ1
+"DPCY A]?y%(CTYP
+r|rjjZk3+ e#ΡMPZTsap' m0Vy)R";<-}#,Д; oζnx^?[	φ#nr5pqkcTOeHc{->[EJ+<ń{F֐̰⒆4°`(HA4$3u;7=R"IdR˫&&bUU $$CfÂm(BLf&Ӳ
+
+-EA*hiin||i:bZ	9a/՜,Rh 㥱Gr,)r_3Jc&9RRhC4:pi 'sr C{،璷/W 3Q>E4r1TEyMZtG~bgJiZR]Fk^9G`.nwsEtt[͝l 2EއQHRT'4a}^ar>H P.6JBvSSo(mpv(΁yf`5ڷغ["]@i!`4D ]LFpCчWu`L!s*; +e1.*lZclf2lAo:m1ʲYR 	1KHJYh]X^^Z"(iF3YyE:sň:_̍^-6հNS)sPi('E6Mr6+ODO:ʥ\ x`OA'(ב=g':~!  
+@N ]]u:	l> M `p܃*a)IMʬH5&`4uQGT`;ll[aۅBIx!&5mHtPdp4AX}@Vg˔!>g?hc6?{1|gX|sBm(˽~c{'U6;8_xٙ51]jS	jZ%\VdZ~֕	(ɾӈEx{^~/7ScPGf1=t;3kc`4DL̆C9Ĭdb`NNmz0 D527gؾNK$ӼW\"I̖,k.ix1VhţbxO/6ב:m/cd6sOAi	C+gqra_*v՘th?Qc
+&ҥ]k-Rj;#٠e6e4f1<%.ržU{⦦Ov[iqk'{9W5xo=<ہ{m=*F7Gۢci7zo45~w{H;Tw@)jP "GEE\E>']]>	Erd(W yx1uFU3j!~,B1<	oE3 ;B	c`(S ]Q88!d H#> b'@:D}[hnhA:5p<~(pLԵٹ6?)vBQ}(#%yxY*?X^e|NGv
+2a=WLEؠ'+.5КRHhS$v3S*lGH=:6 -ryď":_r9XTakk(֠0"	 A(Gw[O.QهQ D|Q­m0Q?gQ"݄@C	aBA` @)g1\ȡ5JAۖTV}R`}+G7`FjK=zl\|snymRcG!մ1P3yH}|⧵$?_wĿ>}ُqt]#(H?<"uѠ<Xsgw/S}^ްXgC2sL~qA>Bv3twѬiknbV<Z-}B4E<.	H%,bK-Al:ddzERRMG8Kc	!ҘV
+#7dAAB2Yb{Dw(QHW"Ѓ
+NgRmb-Uz$[[XB:-5{nP"r5B7Ռ5g;]9B4B|WN[t+7sv*Ug%P;?xwTO3\ZB\0母qy<:H٠ͩ]0$H6T!>A|bPh_K#{|z0tڛb*+@}38r0 Eqvd@=Ѹ,AA];1:t<Db$DeGaWQ6 4@	Sp#߼A"EfCM5klx-; y5+khۏdفV]JC~U{Vm'(RƸBmعmjZLMxThcjŴG	!.Mf/)RR}R\Yj6~XZ&nt` ww1`6n{ ːAP*R	br3L;<vI
+z((68MUħKxhy):iVQ(U/ј* 3v]&67S7Ȑn OYUxGk~`R9BݞJRdBxF?)5%K4*$đ"cc}'wRKGQZ2 ;߷l&~kV>Y~|Fn^^aS-kxBmw噸O[keL25+奣Q,7e(֫C9d`8BcxY@f+M⑖h)x\ah]}N43
+`u1|aNS1PPhqFLOfqn9#A@Bpb\1h6ƘFY16A^v~bi?݄a厊<%ɰ0dmc9US6M8Ip"<lXR)Iwŭ1e?9(^5ޗ*nsBMU&ū)uIع$"^"Y^V2B_C]lCs6PdKo"ۂSAT.r"yG%-@/h) \,+=#a$tg9P00#;`SD%3^dE.xM4@!fAK2LaU,h@`!OmP-aW0\_2avX%x1\GFT99wOE(\ޢ\P_QQ	*<tnQ:d_b~^tT1*%r!Bp$00yN$'BN?][,ԬGU  W )~5Dt=dP_CCu ݈Dņq7`;ϣw~ _P*'Oc8*  faI($BNpB$ evQ5BRu!CDn!CoK{maiPJ]{ !Y@wjbBjeW|7ONxYQ1EFK9~xs{(֪޷6.>sg)k_n|,
+>MUu yy2UJWB+3?}ڸB0MKԥpVfjJO77&70Cs>ݱUȎX?ƈ-Bؠ;{l&FU,R!epPaMn͍    IDATiĬqKB vI36bv.	s706zzc=赺5,81,0>a!MNL2"J:4^/mOruLL+ݰiKz5%c6XkS9MI=6^3j-aJu,Ktie-# ma?9k-7wR${rqC5jNqv(1uc @P}0}Gֿ` XB	7
+	qYXcM!?ƛ \+0
+ c1HxWA-P)xP*! ,#h^{o\ >] {@d	B11Pu 6*,{[ROGBS3s(6.7[3J~Vfqyl9c
+*tX`$0mԤN";Dyk}Zc=:k7R4	r'(l}6pv70GlUc0 6 x#G?~%vŻP R B	0"96ë"r (sX'(8	 O|҄/!Ez! Q76vDq%}̈́}asO#rRm?q(t8JF8];B
+>H@	52/s!i!lI'm8w'2rd4>b}1is6$ (<2FC")zz	0x@fzfvTt.l,U87|GD=@符Khk"LKE5#r}6x!OUF5kAk'y>)4t!Do{iB7(%	#Ӝåd?9<p*nrD"(Vxܗá8w7,ډKKBMkPBmW*5Lkm}W䜝1ucDFO6vۜMpd1 tWy"k,) _J!9 _dˠGTnU^~[1| Iؓ A!-&ID*02F#1zZ(5P)T7A9<PpZTgbIBgnQ}l-#l@#AIe<5Ri>Q7/5?~J5a/ӷ|Ai+~Tr[eWn-#=҃&][P}qAIJ@=Ј~skp*?	oƏ7!;(W3s`yP"6s?хUG|*K`71818h"ܸCz37ڋ|W9	T4@m(11@4;DPi` )puU> "C{E#k"Ck~(r{fCzcuv9B3}ȠuR{RjGG/feoy8ϹuV~T㙸qN!=wj?3Jj[qV[x& ŏV(Isqct5'ſT6]+SqM7ӏ0Qy1~XuBa%F5A^Ҥ{|ڲI0.aff_!/MP éieT^AAQ'bڢ<&Dҗ;MQFk^Q'-%Jdj,B6/ཱcA:m4TNY4?)+|sOrקjV5eTFqgę:h'Ζe%#F7h9bâ+;YOӦ+KÏzbd&wEYC%$㥞6?ٹɯ3j;[TY[,4&a ^:0 ;Gv[Wto.hD|/$ 3 y' E>`P
+j'X ^;5{/mp0c}$'Q9 ѻ+P$ à>*;-íA\ad Be
+DA<(CK) x:M>JV*w{l} <ܪ(1խSx6Es9㜒&r֥a6+(tjF/Cw-v)L3k~bZZB@C{!Ρ8.a$ ?c<B1P8*t-؇p!X{(z/iB b Nv$ 2Qa4j\s];taQs~,=Y">+% I ,[k:k^pq=luo-i4v-{-~(cʯ׻L7,.e6R.Nm4#`YyyG:5ϔ"S3~(C @9\wy^d/ϰnhNrMC2uOCPXz]5$@O(OKrSf_miTj(TF`:zgEVh[lΧ@ptԚK
+#
+h]SVzneH>*tЕW)Jrc	4#g5sK(M/-qMz-.[p{2$۬JjWx?{2a:r83mI=afnr8Zm>XzɯTw獮ӟw͵ޝ -!M6J; TXsQy)zwr% @p.{j#ʫ6t X{F/Av.gu7A[#EGPtoC9@8'9P܁Qߏ'V&*p%2"QAw@]xul,1%a(K}<_0`oOkӬF;q~NruzX	팤őIXX>]93IiB(S!Pw:ȋ[j)^{b3oQ2i (C ~*<Tr$Ϡnא/XGzC2@؄ B02ȷPَr1A=
+B#QzGP&n+@1H0òa9]tW+!"E"nT,#x.nL<&HWZSeyжWjw4ݓ寪F.%J֓sR{6c=:nooU~P<7&[y1ִ^icܙ=A ԽOH+R~	(Qnqlw^y]Gz
+3/)xMT) (38=<2˫E|D0p	s:u'6+Ȍ~DZ}}>aY8qF:n&_]]pat_+tLd@D7N3'"T>]*Ö29fr;W!?1|}qY"'7rؒPVK~!W	ix˃熿E7ߟWR2
+B,77	y`o#.r{|b-,u5֟soJoݵL(3)wjc&,cլfF#[GG |jBYmϹq  kam:<\E/`O807(P,!>QvGBVPCrnTctv*>	&O
+qblX(SCI 2GT1A(FʲhVa[I-~Ѡx6} ]Bp3.;ɿO'^@IR[Rd#]4r@WC9]>gŚi!/Y<4>R;~2. ?Vt?JXm ;0F BI1@C8M h_tE٩KmZFY؏ "D#;@1R>r0P#O0ˁ150a|,c" G_7[Wc<B$qcZ3;rjY&K9%qo;n,c=TUqYRb?UL\9V?+H/l]O~VӭThh^^B3RMYt	UĜWIwX~TU2Fce!sNf7ssIF@A5@b#G9-1Q{@<&g*@Ƹ?T%llqx j<uXt*0i_ $[ή(@ eHaϖREi;2HrVV&JRu}L\й Xܨxytg? "7F
+_f62!}"/jC3֫,Gy;\}NSi$H "D 倠 pD<B"(f!$1총W_kw#ʹ@?c\|Ɵy~qtylt^yw^\JP0O#DV ˞dYz^/=VrrU	'Ԩ,Df~ ǃHAPԟ!@}; FAHn	tk/A 6t~8pQCP	t^Xm{o+ʍjTѿԂD9LA-"&̡z2ߜW-",!%q G@e "?~8'+=Q	ǯK {]6䍡{=?2~O:4Hu(0Ѓ-@!	kYGxhNH]ce*&OV~g`bGyPTbBv}@Bl|]QHE EpQكsѻ0Vm7<;0IV3L`Gtp2P%	7@	Efu{V5Z.!`;L8B)c\=3R!\Br,kIZXmQ~ZJ?3f>ʯlٱNUcoxF/ʛ+t;Kq4\gsXbspryz`}oT\.}9#?6[R:L'3YPmxa2NHC9us
+&9&an%>No}SPi!n<)
+ꈩrBƦI.}Z-tavDWp<uHk	JLdֽuv['(j4hhɮft8'>e_f$nF7%
+SSRʝzX\M{vzp$N~akF/VToU<Ig8[?j[׹M	;[Fo~gZD@+}(2[[>v 	jy&gFAg*O  @tHC1E)-x&xѸ.x'Ct`}DGLAKpû@īF4CJhbvrMX\5~Ơ1'  -)8~IP֍au8JNKAV>},Q-meGGMu%u4jZ`q*LR*h[nPYf=r0SJHV?Jwކ޵P1-^g`A@,PP{?p` xV=kh
+ap=tɋ0>ؗa46;0V U:|A݊1r\)=ۃ/7`۠eQu/HT*_^?z@ʝ݄B0Xf>ۺ7+ڮk߬TE p[d[&:ڷѼ<2ݚ}~`&sǾ݀[l09ćz8ߨ{4 Ƅ05~JWF>bx;kgk3$u6>I[C8&@}2	H0Q֤;"=b1R(lJ@h؀bMvw"3ט M:"7Zl26z>qKc$GlFJa*?ޑͦZTnD"RFicꀥ=|XߢCP'^;;U=cROJr"M}PfϾMŹ!-Ƞb&yTۤR-J/mEy߾ܹ.{jht{g奮}suYtaakbk"h ;"lA+%TB }@q	:_saOB	$w 8ߋdB*P]{ pvC=<[w'Gw'(12v1:ף®Ùw,ªB0B8Pu^N|ۄ1\ŉjI eLJն;^F	<uXqnWrApdLݱGoj*YINqa;G%LzƔxȇmBMsRFr7W'v!?O΋]/=wl:cU X?iv"OX^<
+(V z'=>EPӀJ`4tl SN#]P<	[bYu
+db!̞0#0 l)rOYϏĠxΖ &fr+H	l@@kHYj-%(EQL*ٔjW5sX왶}wض$vFq *'yZ^*X3;I|feRJ2ӵfS-vl=~LtFT2xm:5K'l1l~ĿG暳kD	RJ	!/ܤsnԎ823&7e^)#Ҍ\44dn,'SD:;+:[@0 /LS/EYCͲǪNow}4:5QUFM3b,",%JTen;}֫XwzN4aKn{PBRmWHBH3WaBOfjn-.[: @flcROYCSRl;g{orTj6z.^ 헎Ư!B$jnƣBOW(zK-Qd
+ƀ[Rsl?N	@ ս  pQl߆|"d8awd1> h仰`u(C (rm>*D*Fp:TrF";oe4.0 h=~"E	<:6
+#hO	4`DA'pB#D8jLmAhp!Ǆ8|3Qs!P9;/zRvvٴm#UWIBWKGH(piL6Yc    IDAT_4~ jM|66]?to;jCl3kP;*܆9%L1BمQ00`.uOEp:wHoAt!xm<@	c!bOx` wИG`4A#@(bupY@6!Vv8p\d)3è,0~v2JAY8כwt0JR\>g	IeWԺVתS2$D4	Bz:t?W3;\NJ{km7_gP:Vj6*/b42%a_ ~椟?|spvvxE߿<.;vؿ?T&3PS䂡
+70	861<QJDHeY%l[fF+r9"#.j*MrSեb"JrKjjWtG*!!5]50CԴ-|Gzd,'Re,:pfzu*]qʰ<t=.%u;gкw}>N7Nq<ԡ~yJ~DGG^fwF?qnft>(uG/~+%<W7ʊ&]]{7%#'Zo\XwWco˒ lۻ09{pH `.6nDz2%w#Pl"9r8o z޵`-ķ9|Q0
+F㉨^D8k
+ԆD(!zbC.y@ o<4~0e;P#ȇ0^qNh͢2"`cJ`46Mi8~1p[<o@޵xQ0v!㌓$ȸ}Ɔu[ tґGiȺ)m)tW>DM&0ήZc)G8  (7"(!{Cy!Tχ)XCv D6h+FwA0½joU0#Ex"?Wa$C6ʑ0y: 1T2A	ˁh`{1U18D]h Q~??,gG EaI!-+,0VTX]i5>{Fr\Ag(yuZ<-IaB,Qlɥ<#mm<T'bݛOv,%_t7x쥁VGukݙ=?2G?!R9t:ozӛs7 k_W}cۻw[{1?&'-JH/¦J#mS9ϴF2RJ#	#\BCa2k^ZCXtƉ}`p"aMTm>"cl
+&[m* 
+E-mlN2a|+m ʋ8M(fk/?>|;ю5Oqq#gpN.fNe*nis\`ѕBCSi~|X??zշ)='F[8jsx ,0 eNxvap1zV`;~Q.>+<{'`~>k0%uՂA(H^P̇;( 8m
+AcsA-]Ql">~.HN hJhd21 ^²1Y֊:ǒdW}+gBL+	m~?~_v:p*Od\)eT5aAyjnOŦ*,fx_9b+Ǔm	[
+yBh
+n	9BrWCPcس(`OAP1^VM52 `[hރ{
+C&Bh 	
+>*Tww:{l
+=h"%p܅aA{rkٸb/5pi(~	 Op|k?;5}m45G`<kmSϧkÖk_m==ɮΙZc %Iv2u'QRs_6L0Q9YX!b-fQ ath󇏍g>`R\Z77}%wGqJ?|/|aǞs9\p?a +++_.AkZLR^$L^fp&ٴ0&1Ii6똂qb^(B2#QlvGlDU40Q/  K
+HX_=ɩ):P@3"XU-b<icړF:;nF8_7UjMGlC}{}s?ܡ}['Ďmw(.䩞ukR>$%(āu6a*O/TN[ŅJOešk?lycl[7~A_
+OE3/&sJsR04xL^#H`992(18VPN<!0؏`q@o1hNk܀܀sA(t	H } Zȏ@HGjKPcKpfQn0V,6[0=9͘<ZC&p'mȬ
+B܂D0iZH08F80Uxтŗ%|6(S{_1gW%)@Oo(D4Yw'		㑀FS'`Ю4q(|:j_xNhT_6j& 
+5D` 5NM'!#T|Bsq!Db]@Fp0.!a hX:
+#`ː)YC=M"F'n6"bSvmF8	'?% ,a y-c^(	q CKDYQ$B.gRj.͞k[rcPCom[V\
+PB
+c\? IR;06H+w2fl=ͯ`t3պOjARNU}K!V1./Qe|n;Oz6.@_aqϏ%?^,+EQ{ｗ\rc񹹹N:nAČ2P2 .b-zͶR3!=u^bK*vI}Yv)8|Tr,^Sl咙yQ- SmuX6-(4y:vi@eFF3HLchEÎUظW
+ykݳR7%MTm;,MgشZwf+6[\u\^Rso,Zl1*./<\T-2oc$u;\%uuJ.ηעwO^l[Q׸7%6qRy9[\^.ITKQǣ"e%xLR;pBxU0J2d
+a}?꧀0q @-hBv$ ojNdvD@AC3	w;{i'FTg@Ű0K먜9FCفU=Aml~*PsPFHPAm1D
+ ~NNmXU0~a"Do90l^Z,#f/M~Q*~g'UQ~Iy y}xرSkКuk"K;<eUeixs΃dfk`0a,tx(~3P'7kQ Z(ң|[M%b AP@-X-D@Q8A[ѽ"!1mgA&-1:d@@(5$0b|^&` k  1JwPd`Z«r:0^3!P<'"NK`^Q1888y֪L3ůBJ۾}r8}ʹyq	=m*w*Y6 ~8{Yӵ͸iڷGn[cZl4./r(}̳oP;֣wm?[] q	D͏8+X.CQ|_MzJ
+U2*dv9% (f-cȆZωS!M0Ed:m:뢯bnaDF8ԦO	zҚ͉CRd o4ܠ`KZu`S,Nj-ў܎44)SaLx~4?>3FȨWsn"PBmPu>o`ƿ#ݵMv, Mu$C<+'׼OPASowh9P2$olOibҳ>JQ~']o}jˁ(r5;i0hC*SYͭ
+Bvc೅V$G!s=Ѓh<25sǀ('loC|73'!6pD;	kQ?+Amp7eCh|t}pj*QQ(#xHV5&]X,F]4g0Zʕ@),RLWyFeCQzO-vw˞X^^`G6rD8P	Rz8ǪҒk<Mj<PV|˴L%i8_f<Nυ)B;^!L>:AFxv z *GvG.$G4=du7d-1q	8(GP
+2F1CĈV0tQSh1w-N8A0kïqq]}8'!7 XQ,`x~~Ǎ֪XY}jEDR,9Msvq|ýxv-V#vÅ''֮5~T9zH7ʯZh_@Hql<_`@{Kf*o(Ĺ<5oatsn&>C{\kǻr#RQH}%AW#5DDnZi[CēMYdIzT	{Fz4)^f`̛`y^K멵4Q#e86syrOIc m#qj=voHL`[ Zn;^-:aoT\Ƹ\qy)%j뜭Ϣ$9Sa{1͎Vźy|Z\{웧?i]$64@7o,/rg/`2dB8{e1019Ƒq285g!ydp-u@f=FGQ{*wJM]@!aK {A=0:AHrXb>g]l= ASQ=sBD`6E09FehC`H`D$'``x~V > fOcpCT[XX/%ϳ4IxΖ[I:βc;^fCH9L[3:tŹ>H9M绛U&eTM 64 mRHc0¥49#|(kZ4?c8v2%v;|1_Cl`k`>z [uA97!~ ul~FpC0"U">IHV!FC<`2*lAPy318V"YD:`6i8n2lp	9$ckP^31Gfc!EOqzo30YwPM>ec㵮scoE6i;0
+ӧWK}~LQ'@e2~B/zG|Y}K7x?J^9Zw6).gcVuJZ^72'(	{ѻœoď8t+믷m@bu:N399IIM4fygFEA	P=u 吀2u&9ёOrM8_*	u<?TNxͭ;l)YwY)(`*wB!u.n&P%iQ!drBplU)Ibo!;גWjziɅCVoo
+~Wg}ʀּO2=hmU?2~<@i[{nc⒅EuKnOY(EV߻lV^t|F?v_7~I^\14gKj?y3سMw2˒cUk)gCw8  xq{18;kL`y(:(Q}:= qĶ1"!S0& 8K[p8(c꿁@9*5+XW 9и
+] c-/a$½Cy6H}L?	V`
+!clR(q7&v##D}WG ~Ė"lnj(i;e0qSnV+(c왉['H"7|v,dD0rϸ7z40u&(P0{6LˡAy^$պZ7iF?!Kl<ʍE;  tûPt.CeP)8M0F!>+ܹo`<@`z D~P
+arG1B	a,Be
+vdy<A}+k/p_:JY~o"E4cQL#^eǾ,,#B?^C?XV<]]M)V/6 m\ۥ<SyP/_2ˋ)]YLJݎI5)/c]6W%\cv7w(=+|-bYxϗt˲|/	b8guַ>8pA^-	h@jƆ3m6ފ#9)8[ abFhFLFONr*C4g/%jv!sB)TM*s6ʙ	gb/.or{T+-b_'Fb@_ZLkmrmcTBONq֍K^t!wuLR*=:\h/iYyA"&o6}RGVivU+|'cZK]ӡ7ѫ7WЬ(.\}Z<RZK+뭣l7K !=X(
+b4$c6B
+"^D1CUE!_ANHD?kٝ `	ԿΓ!ooz wAuaQ.<
+5glCq#d.dޏ?
+{䋐r.C	"= #;`@b[P="Fz cF9Fe%e >lhePGOk(B:r!KdcE^e?`J:Pj̑D'T?6j?OBegSSu3mO[+ h?!?-PL*95    IDAT2mi5lTkk]x2X.Ch]]*`îC\" gI #l~vAȖm"^("53p8Br0| "L!\RTډ,y2qǯwS"YJa eߩ4Ԗ{e{ zJ) ,6!d%ӵᢸ`rٝE|sK/jgQ<1ɮ&4꺽RU+8_i]jL&oonLTIy!B<FZor\n΢pi߾wGib/-+ݟh/1W^yw|$˲fs]kپ}R굯}y{(?(\k9$fhg?/(Gteï1%fA.'n5eȺ֙T(FlcC0׎wiUuduO8#FۀF)ʭ
+PNr7ɊM媵h,tf]&ٕ
+2-z8/NLV8_ І}G&.6$Sej.8E(ό+lϰYϷooRmtsc{ԩnWjvoӗ^u#BP{ZҗZ3ǧE3-^h A	:GP;L9p+HmH,ɆF}0CF6@(t
+Ua2PQUX3(AF'Ub?Oëڳ 7P u 55~PSz@#Aw7g@o'([ `O!=1DB~!Dك]=i
+c ```­֑RN^bp~,AG܁Vh@܁m>}zE2hn[BRET-m\ʓ^`$훫ާhSϩ7IuT<C7w'jgʻTƺ<׶60̀tlGA5,Lhݗ|E۲jΉl#Dk Ԑu6|#:ޣ<)tn>PA8t$yN NhNBDx܁LO"!QFԶ Eu
+6W*c558^H(7f'XxA<8,ߜ:nFo??ո,٢V'/fTsy]imբ|"EOfdJmm8{qĹ6[j^\.dW[u/7Q0:zbT\pO:e?Y:f?{`Ijt=͝NsΜ3QQe	I"Gll1r`__qF6`l0`+#,&3sb7?1㺩*nv=?vu^KM}'QڍTO	GEQr-+++/xX\\ַ?^ve o\_}:U(:汀J
+7zvBA봵Q6dPe,]`;۫i>UKM92vH{1PW+p&;P1#37U6i:XyRXj<fDMGTG|=r9R۠0SON,4PꍄdyD:J
+?rmBot@SUw3)_Pnedl|8o$$?.^9+n_Dџٛ\X/%k75! Z[MB*Vi4|nq3q}^2Gk. yLMX= !RZ&	>V$HNXBx	P=
+Lv
+!.@_5 k? =A  B|S)d &?&P1E$Pv
+hv1jی@(T#7i_
+t	Yjw[pTPhyC0YZ'	mH:p#TgPmc T2pn5sǤ/s;@)@7u,f\SuB{-[8н}6q@<[:\yg$4xVd+noiklrĎ(aqcC>cYKPkG*aBa9?8 AèlAG)80[21 4FHN@:`-+Ce2tB&l@XHCet _	&}4ft 5w4xN?﬽tL/XY @IP:ז^Sm,w $:dɦ&W#$7k'pOHk`A$>GMǤ:CZ2dGŋ#I엫PcIyEk9]:?IOys *2Ͳ5=ۃ
+BXw%%  #kLPVEMl96ǧ6
+[)maa#UX?bcFQֆԝv|0M%*mg%M(mCA家/׳[J&c!լXK3ӪVq~Tk)ǎϟ#FR9n~./CtbI>Ԏ~?-^z7uV|p&/SMRoж^Aͽ#t]s&k=B:/}zi< s˄Hr]+izzP
+c^a~ИNG]yA,K$kS
+Zډ+k
+X`
+C}?z}kVDp('{9PV;aC4߂	xQ>L=X@o.Op6o]CV0;0u91FLBt9?`%#VC"wd#1~:DǾh0Tm#[ۄ.b0֠4DrLFO*c5FHp#X"jac.`dz;0ZAUÿ*n4*aBo:^ Bmх
+	A:<a$ڛǉ j|pd DZ?5NnM\EFɈ#w'!!99&(.eY(Gȇ"PgH"ڀ"f.A)	 P݄tmOj8T-Qkwc77 #:i'AEutd4hnBoE3zE>AYhxdyo<WNQ下2C21.9R5=<<N`{T9['(]~,76U>(G{Wwf=Y%Ύpvb5t-R^(a~tnV~Lo$>?̯}W'}3n)W{%^ 1#ff9S>.%V,-1mVTWjjtX;0ǪMa`.U-;	It3:~luIX,40u0<X>%֭l445x"4b}j/q>J^mfWҷ9u1fc,3^¦&Xwo>W⡸xN0:pc}Yqu~)ݬ:wmIRO߽IjJa4x1F󙵵W.+}28?B=21d)#8E BspPcG|0	t@^W!ڠ	dA̢<ꁜ@,Xbj4w`h! 6`p#rz(!~&Gta3z8dG|PQ(&Opp ~^ [BT!#DhL>
+3}@aFk{ !E#C8(3pϹ KR
+?DVW>F{_"I^LaXiI&Bd3FiF4cx WV;z5~)_3u^SnUǉ5Jsz6<KK75vXvaLLY:Ҹ'c-[>AEԆ֟_GB ^e0X:O A<ڻ!<tcj#T
+kxs(0Cb]btL "xAC@HAp@*E<@P.16g6]wYg, 3p j P')s`ڋʑɳajg8,A?((y,x4'l7?N~x;.Ώ	~0oSrRuY"z1_hjQI~BkmXeNw{@0_?籕~y	-ǟ|~LO϶6W40T[Ӧ}KN 'ҎɥRT;4.:m^3k\YRl[r6.XG	Bhi<AqYvTPiȶ{t=7-iƂۜ
+B)ͬNTbW:cyNC9Of}07QaBtmP\}z$߻|Ovi3KɄC-Glp:8D][WLY]s^Ц y-nF:GGەfl`A)LU~qy06_ăJQ#}^EzL8h4nEFCv	v9<#_`-%B`$X1ӑ܍\jr
+ ]0)"F!
+rLKEy	1ᷡ' h]!P<HBBuTχ!8:Q0=0za .*t!t K`)Dm'&)js0
+F
+L֠
+0vW!sX!\4:1 TOIBY׽k8yWܙW[+S:z7oo 3ţuL۽;W;)mA2
+󽛄o<!!]iJ'y=Hi08|5D:xiq5E؀QPAxMy`.L!S~A~  2tPë"頶:EczA	J1M֠Z2Hy`H.t	@
+ C=nￍ:H'cX_3~Xm׫q7f,p9(cRf=YiϹ')_(!j<4}m2I7[	^hS	?>#CNWFN]eZP;7Em{OY"8%4l6H` "Aە|^YXQ@@sθ4!-0L.C43lFm9kvͱ)#VW3,2A#sgǴmji8y&6mFTiJώOo3!?a7Ny7Je6"'á<r# &+/lZh\jUf4M
+jlVCJos)Qx8R"u^OgU[Zwe?P7<B,/wOWO~//_`s؀GGT	kK櫵`_wMֆy6O
+v6ߜ['Q룻~uCxl
+e6-A VA
+L
+5%&CqV'^abw
+Z0l K:F+a
+VAJl; XkP#?yHHCD8M7pѩ rt
+QAt	.@j;aJ!|%~L IR8F]Ǐ4 Pf++G]E~~q5'Ik;YbrJdlmWtUMx(&\v)I
+c=J9IIuLf(iwrl9KkuYBf72ܶ|)M.ZBx1:(8yK#C	AATOCȆ
+<9wu9~y7ce \90BNrdzSqkP_ 4V?7-קxjxqvM# Z-ᤜfʼв#?`M:7T/@_v/wGiB'_:F<Osjmsv|aY>66t@euX>so7r:.neG_fvOtƛ~d4YO:4EOET@Di5BDDdCaS:Ѽ!>acXmZ̥ElTW֛sr
+Y(9O֕bϗSFL;d5M4礐6LMš	~v׽*4L8+0v7;\ٱj0h+SKuaڤ|Z^y@ͣ\OڪQPjÎvD+x"fBJN{Rϵo|O\lR>O{Q?޽8}Gj}U'xAHJ;ꈇ]]$qY<modTjgk wN_-3L\?P8|Oı+;' PJQ`J e~
+@04	(`0>KA#$?B4*6* |GyÛ@]ɣp۰
+&C
+ !H@V@]Ȏ"[v r]7"_`x /0V!Zuc=BD e1Tbs@)Tv81!`Zpj"\Yfݕ)Qg8fZV/Ky~V(n4fZ|ԧQ25}6SQCF𧧃/(*& ¶h7j5BZWnf&4!t)?ə6h'E.ñȲˆ5;(@܁HF-D3{ȇ`b85`jQp6!B(S,߃7DL0YG6"`aIĭa<MA&(Sh"g_%D|4O)e"c+Ϡ($},ԑ[lWk UHu$^ca~](iJٻ{g^/lwFq3Js_)//xuV,,a|8%?R>a\Pgkjcy6R[*JbFƭ;o?=+_HOLQߥ2|l{iȉ%$2'	(i9ON䎑vf!
+MAP0JxiӐrHڬR-8TO|m(#6LtC@`,z}y*՛9I)\2|&)^>./KuCĆh7WXP)ciU:]2~ =rԹ 8;l{zٛ]lZǪyqD$)"?.V&͌z^v<;jxC92e%7'/
+~K    IDAT00}D#N9;Ȳ׃H5Uc
+y#R[|ԏ
+kPp}4(S'T1:P! Ρr(BvA](@(9XCഡc;1>M/E8, A1G~ā-A\X^Cx	z7P,(8SZ'uT߈r ^h` ӐNBg? TP݇2s`4ZTg[P"*1SFj&,x#z`MK&)Ԧ>ް>@"㸼Ė6ZqbFVwP8Wn:H3e!rc@uUTic;<,^$V'惘7pX]}ƭ&&GTd/p A( WA1A2is~c`-)̙WP$*0y>q^7QH+[t^<95b*{Ft"RԇZa2:98w0,ۃEu+G
+L?_W"I_{FU;7=˴j{ݒ/3zOPkVly+{GVֿԬS8qAe6pv~w˝}`\^݌>:Tջ]x}m\V_z4P8|'!R]/x볆?!@&UWYfS/Ǘ!if$ f'%#َHO:,LI
+0§Fu4xHʊhyʀuZ-wJSWx5v>s,}Uûy>x.~T蹀ɦ]V{boFrtKsyT;\v,^iGY?@uvZ|q|`Љ_\<SP(/h&#?<5RntuލldEgJ*eS25q݇(}YZp4y8p{[b}wڿ`bxpA.p| G#kPta5`ơ!ZwE!f1y*DDx3m@rɏ!A\bz"0z ԇA2i h^LxQ~MH@|4{F@bPco `D]	Qx:4dN-$]P <x. ,J4(E]>?`pN'.`qǳk[_cWՃ;[vD.Ƶ?DIR˥^{FlDԖ1:!(K8C	gfMLu}JfL=~awp~te5Ldx]`AIc,AKd]DȓS^%!35` HC~!F L2pVA+dc {'HQI FQ0ZhR; wv"Ba}>>L^1<MHUףe++^''XdjFRalX)%`[ޥ-W&hsu#VryE>LSM3Ugx	OR>_f[l<;^@?`<0jU/iA`6$SeD1d5S>+?Kc]Cw`+r")Vg-ڶ&F͹1TC6!H͹֝,){rWf6;3GU|9w;`k[Hsl0m4{	0*^!%2U5ޒZKUq~h톺w;\&D_xнs ";(QW<lmT^f/z>-jHgibdtn|:GxXSFYlWQ\HL^wzqbP"x5
+!ݮH,N/Ra";8Y" 0%TH`4n\ҧm<Ev :\h)(BCJP
+5@X ʡ'P_qď(d0)fѠj (p[&G|@ƹ:CAt]y!׀ rP	
+*8`T'#S8ꓧa5*=DFc2>ڀ16홍R6?+]MxJ9vȻU3~Brg?o0ݥi׌u0NИr7֗2Dblgl]̺kK3e,%`ߜ~x=-sP2)-SŗRW
+ /N!l8	-]U:d2рAD Bp.#9
+jUu&P*<φB>ь{1mFZ&B`EyzˈA0R?y͋^YsϽ[8'eh/;wXk<1>M؀ҤVX,rvc2t<)^W??L>{';K?WvBK:g[IrAO#syIf;qi^Lg#*Έaaʡ9l+dB gfFd6fXBgBR/H
+TRXiiks_Sy_}HQF]VhTZ8T+e\,	YOZѦ5(:"~`4Em=i^x8+LJ}C۠[8]z_O.AW}?OX< 6e-USҴn7~~+'֓_dl3?iսu7'$xV|>(RoKU,zB#Givu^^A ;?,٥EZ&kpc냯:ѦU+_=ݵhR$Êr>rk,/aOi,v=I@EA1)FOv ݻa(בûߏ#Ix; ;
+8rP&ȏhO@@81y5)#_G'1ك# Q@v:ONP`$D 𧑯z`>
+D?l5G<̇Wja4DexS"@FAVq8D,T(˕>ҡ1;JQnV'.W>1~~vG&gLՃY0LŹeX@
+:YgY.e"?񽌘gYa ZZ\(M=3ǒ7yKo y_|رOR7k40-SL~13e>=_C8uJce<h'imEęY!d#$C)VB qEֆ*1y҂d^&oG'7I@m󇻽KȳJS~VX9jΠdLvyfK`n P
+G<9q=uШ);~
+uv]ymS։ WyYܺ9)\|ԛ('領jֺo?K)v4N	; 3ֲo9>t_7G+1Q6ħ`vPQҦ=fž641YarS阃԰kz 1R"Ǫm@kJ+4'-/M4֡ PW`AwJ0Dmq-#ѧcک\x1|7׽o2Ko@(֦5c:[ОQvz<LDWmlXF,fSޙ+
+u0Vg)!E`ߢtLIe62:`tlv'))^C(FӍgYT	HZjUs+g,8y*6shkH߻>!1m7w`dB( ؊dK
+%d!F
+AD~	d ڀB	0)NZ NGcGQ2%$} P[-\G!Hp TP1BPSVk2#*Xb: ESBHNZuPt&`5(
+ jdVv)Sˢ?/q\ÔJ+3ƶK}aGryVFIH)z7
+:X^2pS4'ڣy;{B63RfQ|c6//M.FP@$#ct9av#*` IiA+XU>*GXE2cIəb0dl,ߢ@Y ^4n|(SXxA7uiL=$)=o]<pnӝ|
+JΗc׺Q^[2Jq0z,OBNJ.EP!rG;(I?=ʟH[<\>/η_gU8|l,兔L;kfUqȻ1/兑8DRo߶%i:O'ApO駻=t6LBl]#I
+pIwX1%mU6^+.pHcw|24ke6KkOEuإmTVpjZmI_#VQh d!<P1Pnۂ[<>8R4P'6F!vg\;'pZ^lcUMR-ў/l8D9tRQ>72eZzPCSP}/ӇF%i]ùTuy^'E?flHH;?lSka'dwo<J' VT>#b+=*ēBVG5BPȋ9+%+^ڙܫFϟJM Z"[0x VJq̇U ^(;(W11tr	!NK<X84&wp"݇p'UN}6nl @= Ãp`5hwA8.&<XhF
+"	gv0q!Dl-Qfw@Dk7"1l?ܙN0(/WVwu扇╭;Cf?6\|q_ս56`A6?˗()TC>;ʜw/'ni@;sbBi:2Pӥ	|~4M|P;Fە@*':=Nu4~jv.P=\3Y@0Ǣ<=QA)2GCC2Au!@+UD aexQ ##_Vk24+vZ[ tNe0(qB0^JT?r(C2$9ۂm	5E"զcSmƴ·Km:R]xR{zFB,9!ni4{4Մq;,Iyiq6Ϗwjj7j)IWG+s`EVe/"ETi8g(Ьh$  #*(#<J~2
+.҂nYvls*KRTZ2;VL;c3An5^њUoso"+JP@Q	@=QoF &A9%( AE*];/+5}nl'e֘k{1Q$N[1Kݚa
+dx9:dSqiJi|hªIh	i|ďߓLG7R*Av1>JIH$|\~zc+,}SW(5!%puLQqC*/9L21%oRq%x^m
+ɹ;Q#$}ZWw0ؔR,_p+%ZeQrv?~bb,O(?*XCI&)~Y%UA5L!A+ !Xx`G)I7]d
+^t6uNǰW=,huCP\P8D(]0;Z.*XTb(l"GւH΢t<
+ː̡"EրdpW;i":"FQ ` 
+ˠYgb(6XECsr <R#Pz%R_0I)84txOR
+ΡqrfXCQW6j4j>;T%\BjIq/{teo. 5a=BZXŹ.
+m״锏u7@L2
+S@%d&X[2áI-߾'ȏU9]Wvs`}{g:3v uO#kaAa9TEE 4 `X0-]t=˃_ۂ,q,e*L+A. haE){eU Mk90>:LWd	w#uÁmo_ޘ.O,J9JBܯ*o]W{òk4u'0;XnCJ|ܴvtޱiQ~BӶ[9;sy147%%RcEnS{f	MGBllv񏫉%?ٯZe,C}:wp I[hMUERʾls;.!k*"aRR%=Rw1[
+/d)PRc9R
+TT1bju}W#[]V$hIFoM*&l%JBJNQZP3)+9m꜏|K`y.ܯel]/9j]^00dS9T~lO%qv*
+md|O7ywtCHH߱~!`qoxB[\2Tf|9sTG}}*cVz
+/\.ˎ`~ޗ&4eBJhε~nQFMnRhG|=u_Rq9I`3B"NlRMPY)P=
+QZ)Bks 
+! 	h	2a @!u#ņ"C2Cx4w$])68`05aɡWAdx
+]3=WG ?{<A aUP<PX`
+(N( 9{Ak'x&ќ]fKns))Em!4
+~&KnjS\^mgG-3_Z|zN72vxV1Q'xw՝bb_\^O1lQħ$  L@%FXT<u?`雒|@Z*9328[{+?d)#cm7N
+B	PPvm覝aT&+Cq1=qv'),%uU :(=MWE{|Me`Gkal㋥G
+D;m59P>6A
+݄w*OJ=kݢ(Roum!ޥ
+ME)[_-}6    IDAT?/pY'%Å驦p_)|"?HiP(I(/0[$gJzL/	DgD~'lV՜jE0~v\;Q׶ɗv?XWag|UпFUwXkeRJxO(L0 2NUUz\h!%%r@(!Dv9YH<C:av
+BU'":-eO	(T bXX'3~~tjΤMHVѷY>6b:\VOD5ˋ=E[V4VOf|?CHj/=?ճ;֯%ׄ(	/teV\BXJIO\LH/r1[Cu׸_Q5Oߪ/j`(;af~WKޗ)U:	<pu^!ƗF1B:;G	e)[ǖ-|hoB	<Fu+u0w`a 8	6z/y?d<(x!1p]d-4c@iX6}Gx
+?Zx8C{$G2H(AAچ5o5> 2vb썰@Twj|A2_zD-4Uͽj(\,h@0ćj!h,L?$
+*,GGv˞*lc#Kn7/Lւ-+M+J\pn;	IN4-}#c2f~-D5/]0B%sxb.Z{,uBgQI
+Kٻʻflqu&>E%¡9IͤUPsQ$o؎ь/Rihܣ+;5mKR
+C/S'ПT$F5wLrsxmyAUGt& k>Ut!x=^U]=k}{8ҴDupːGE j/wJz˚./ NdQq~qN*ջ՘n\*OCjw0Rqrc{{rnfl3sVQquk;bvIrIHʚ^RH=7Y*ܯqQҵl#fP!OlE!x֯a-}Umԫ7挀1#H:1]J]7#*\FueX!QyE'E3iVWۢUS*Hš2RT(>%u:]N/DFLZV8w)D0I8%=JR7'/qo>\VeeNV;dzɎ-K]Y??Qqm+~Q/')-q˼{}%1Œy;%iՏgh--]:Eɼdގ/xF!픯r߄,8avZg1~y3JO*]PhfY4VHjѺYSwBp]ntyپ~6Ɵɓ$?γ~gpQu?Ei1o١{M}Ѿ9HުyCطfs"M&:Yϣ~{PC0r'P]@+'ȺptZ#HJߎʉ`$c@UPK8oEyڏYxBޅZ!iC @ڄBCu/C4EbB-@4UjCu<Q>gs2>RfYx0"QA7`)^@.(oP:kC[ ew,/>R՗_GpS{6%onZR_iL3>&*E;	Im	!=)NrgGb)Pb7`T?0-TZ:gbk[s>DbH!$R'o,,$Ɠ	As?Jh_U@ @Q bp}U 43ц\}o;OHZt+v9C
+K)~8=2 9@){20xどOf7ψ,Aqrmyh4ʅj)doٚ4۠20z	I2B3.y(_|yLess&͎b0_Ɂ{m+Oh^?HU&SvnO[p־(L|W)C#7ttb(4ġle蚤a"\H8B'4JMP0 x&JH%t;4@"Q4HVfw$U.	HHf&!d%Lx	_)Ji~~ny	 /kDʜB^A-GFjxj(\^s%7z?rXy5@5'gzABR&s(^fWƃAreKRZ1_c(s_!쓰M!˞qg?@M.Qv[47[s1h:ElY,?ˊB_ie_4I:K}QUzчlARN?yBB&]Zҳ)	j6[_][CD<>vVR Q$D4	BS(; A>*ڏ i@/yxj0#8x y9჏)"L{BT؋msY}dA0ʈG0D@@UV	 
+TIo S9Q0<tUe!2ݜ#K 8iǝ|jv)qz:%%ڽϹ-:mzO8[$d9P4zHQvMI׾MJWw($*K#(UOϏ+jvNrH:Q	}gY4i+\}S)s 1g;זLy)QF))8TMBmbXo^,|+.$$U6}tJ:GǡȲiRilGs6g\0h:L;1!jRhk6?	ij8!	rviRמ38]~]*[p iY9S{j弢k[-(9rО׵uCHCM	Uҕ=(狆WfZ?~Jr%Pxҟ6՗촔b0fGvS
+_`|=ojυ ,T޳4!
+c5jDU#τn &H_vK ZW\)IO_xH6Mj]PzH[P l:kJ%BҒP"nGlKeP}VmbU ))z">ȾQwJn~A.JO,+*S5ëVߦ9_*GىLqY
+$S(IiҲy+n!dGx ~&M	_V?XY	26/$\!U,_׉/$2	/Hc ;yp(ЎldV&J;B\纷4_e|U]
+1b\b{VH(: oy+!++9Dއ^Ѡ@U𙯼 EC4)a@dP(AϏ뢿TR"Y ա0 X sTVz'( Y<!zg#"Q؀D8"ПCm4"B390ː`1^*@Оڐ(Pd	}$>L%	J;O~%X3ER􃏥놇>O)j%};//
+fٱ9_FI[U&5ugڢkeNU&_BI% Hż^+
+gG=b!Y]q)9JBIe:?Zv~+	__;\DuuBrR&r:ϭTg]{qә΍9[S(S3?~QrvTTuiNMUn"ˎIbb;!DCiew[#(4ep sQw1_R^*G)fnV[Ai;47NN`S;"M%)fшF?`leEeֳSy?@§ژXUǃB $ߠ)uue<4b[9oS*gMqƗ ,cJ3ۜ/aqvbѺ";(?.zbr3_dҨDLM1dʬL+*2e 
+mrm$ $si"Aeb=1K<	\%I}ۢiP?h2'fZQ}\*	bQV({A1E&SgҲm0
+~QlBa~B[PJCݓVrFhn&+
+mpdlu3<]s#g(e|P-a!^zL/ҳtHူ(;]M٧;;Z?='WuO:Rڝ?EEq@-	p\*JQF[A|cAr~EMH7HJIHiOQfZg52n
+?Fi/c9[c
+Qֵ->YAT@@7Q;<i7 	W̩ 
+zAT<[A-Cz[@( ,1 A"TE8 bArP;<F4H9@2	(${F .P<O`A
+,l:!0 w`8aBSU"ma=Xn@oT`SB㋊گP!K@(,{ҴALÿ(m,]~HC{ʲĘe$綃φAx=Ut3*"$;RB\t7ߴbOMʋB^ GaP@߮J>Ϻ
+O	[#+4eLFwI5qƗtz·ݛL,A|*ˏ(/\UڄeXh}\L>1}[i\6{?3wY=a~wТeдdurId 2ņ	؊^gJSs6gMf[dt`3/E9NOsg5=ԗ^c)/t^!~Bfvx%磹t-d2m~lbVtig';zGcqP|VsIDeyo֔}
+m"M6GWH~h?:
+c(ED@)JEth01ɷ9h['ªʐJ(*!3lʡd&~R]ZM}^ֈ\*E:KsORU@l%`Q{q<>mMi$EaWzK8S̥꾹97Rj0KϭQ}Cg<EWRc|"֔0;|@o  1Mщp$)ri	QoDZsA$EO۷jUvk5O&A ^q_ᕦΥsHw*cTeԞ:&/ǗWhΊU:		;+ ً]HGJcr;U0!` 8W/E<G?	AஂQ!1f qHa/𷣻j	z"Ð 2
+QXdYy`?ID(,Z1f9fQ\  V3 cE
+)@)0K辌r-$6J]ShYS
+UE6)A )P-]0;}iGu["O19u3U ZecoÃ`=KzUIYC|h$Nت#ssTJj<Z09|666UCvIT\t5%`QSgTI|-,97$P|JUp.9?`|0/P|wFεjUpyoػs3oo5^hk+TteYMBo%?z[HEt$iM4WVؿKyc8/qQ|þ5_nw|Re؉Lhz:9cܕgݢ0zkoZP}W$JIȅZ-ӽ}JƟNJBƇ_o_\-|\-&˚d/R+w(=#8CWzUP/E!j(K6.UzoNgW'+`K<WT"MR9[	}V,o.3p\+)I]unTA$`$46lF#JD(HuYWEMe%%qԩ"&q[g'7&qoOc#y2V+=~)HU,AI~o'V}vT;|{%0O*ӶmжqH@)ZfU6lһm!*m18;_-?ۘ5'֯
+G&	cާ:o'z(驤ggq+zg1Rz;A^Tu.^C(a![^r~ǂp4{;1S+/Jط]5;uIз
+^<xmM@HYP,Z@;xNpW"k L!k"؅ZmXXx͈fP?@4h	#B{R$MQ>z PPD-V!m(US(/A҃]A94^FzPqVTa(BtppjH *4%,(tGV£N	a/s䒅uAtɢ8F־~2Dv?89'N%U>9?t sՃׅ,4?hf'}>tj]L5śH:؟ڔMzTIH%cLj:E U"Me>#5;Z'uD(;֞4GUe)%~wGyZʴe?tr~y~~hh'G2˼[
+ǶJH*S}|ougFG?$'Z潖UɄY
+sm5e\BpMc?8_=F˸[TWVASV|l㦱s|?b;ϫN9;ԞMT?S,hc:x3G1>UӳlcmOQ8ƽ וkJ(?vO׸-&zCw(t}P
+Y14?8_U/˨`#Vkb&QCr3WnS԰h$ZD
+^JL%u<KjK-O,i[4cAL*}hYa>7ʪ/AuڞVu3	ndʌN@6R$CZA{IHCHdݖl?$m3UϺ5JOUң$
+ء(OQE1)5]ݻ]|~.[ԍm;L9	]Bu{rLJh8͏	=\ԓ([$ckwS<f$Ԓqi    IDATo?;deҞhWy#y[ktʸmEJ[Qfԃm\)b]ݕURZE(?yK=c)[ciO0.*L
+@ 4%YY\v'/[r߁WB.`@(TDA܆mx
+ RQ,b[vBŐD3pFۉ9tF6Hj d9<DC8	{<9oz bBB0
+ԏA0hfP-B3Ub'`9
+#|MXED6xw8;hD Rڶ7G @s#K۰\t[UhQ#Mh@ן&|]XB2?m蹿2v8K! }gotڦ=ҥaǼ5X/ս)ѕfȖe׈dRJHPK	T)ԍ4trdbisQ~rA>Z=}{K|hV_$$3GmMėʸB8uuqrF!Y~XSwYvL9]YjeI! ^+^FHS4LjShv?=MownՔE
+mEɛ\&)V2/2TӶr>"DͲ̳#G%z]sQzϼ_Vs7Iic~zmVhW!uKm29=
+*m	/U霐EK(:;_McHI/Ix?9רtVkE.W/t4DF]*klED}g~9UfI4dLj6s9ڤLsp$CLeW36/6v"F-ؠ>MOx9T[%;<Kƣ=a%ٲn|q+9dОeu_,L)
+eGluA>~#f|Vnl3|uu+ u:>G++K ;7{=>>^iPWq\T;֭I~h?z_Z?;9ɏҳ8MH;3P?+}smh'qcm69._OUa.AY6!<HCD/RBQh.ho)6 ¬V|`E`q>I$M #GA<^Au.>q_Ba5Ad]Pìf(*UjaDCH:C ~ ID)4i (!聥
+vBwZ8@C/v62H"]ʏ$1zM	iJ_-G E	ML;NtnM{~1Qp0V;^J:T4e\?f_5k:azN1_aílBTHD# &E޷%&݄05JwU:=\~{Ź>궺r͕glEŃCǗx'mE4?NB_-}|z4ZyhRZ,2| 5J;U5\:K`[wꖲ$=\cY(>0P~ByϾX9ˏ!HkާkxОgRy~_	Q%wTmUW
+_X7&ZǸ~o|a?=\By.!1V<}eW2P.씡ҥ?+GsQd7~J  ?z
+J_]/2s_#2i/CLUB	e\EAs+PrK48K|͛4RK2,WdOW:%+^JڇjK~~XVڴgU9L4$
+v\52Dڷ<yGW6_ѷ%|9 V?AzAr~eu{VgVnD% υGHNIR~MiE]Y~lߠ)_ҊPI`ۇk޸1J/bv	K_	Mu]gʬ=".\׸ @$/Lw
+_ZY9_]v،hK!ǚ]㾢Rb;ٱ\d'SDwVpQ?iZ<(Tk34ctm*eJP5[^L®"Q?D}%gA"X>D"r!:[w4 kYyq`G܀YA4yP3؃ tSH	K" ћ7
+E!`	y4
+)1eDPi R*I|W1 BB Y*#K.^V,ݩjMғ}\UtMEssj9/׏ޣ{]Q6C{%9(OH+a*]PiV2KXj&IX\hem򨁣|5LW{r=F|?J.NH:|J7knn!ݜhGÏ?gK1\*QHu7\Y6lw36i<47sivT_KiKi`z槦@/!qwsUKW>Pfǵw__w5AnI\ީH9?4AVBb!])潖_E+}QϺ5L-g|L68Oғ$nƇR_֍>|ؚcMQv|/,^[YZlcɠA~Jg(p18_kڳMs*Ws!'C_\JteC]=9r5GȞAd({qKMZWjBQm6\V:|P#q.HY*@FS:E+sk|PIχU>L*usǤHPR1\wII{]rV	t<y	H3is!!I$, l $#\0l0`ABB9F;o<O'\R_s}xuΟ^{b+SbJ^{RQk֢aqUVV0?FRL)S]LՌ2v.c2Bh~sM;sq÷|SFs{ׄKJ,F[Sd/_;6T*N.FmB'$){4^@/zws<УU7] B)S!${_hλ%BF$j\z(ymwt8}c@>	Qi Ec%E  y`4Z۰ݺ 4i ƏB ]Irh?/@"HOBڅ.KHQ^1VBC3B+
+!^B~d	()Thi*G>Qhlr$=d}V#O/pLH$
+tg?7	Xi坘XusCP"G4@4* FV!'Z$Uy
+@7G{xr۱oOa T*B|ګKWS@VOҗo\r]hW!rs]z4VU%֝S5҄O
+"	|#rbF.Lۃ|sݚkG#vsnĽFvvc᧔-|m<z u'{խW Me]Dih@-۷=\K_]Rϙ_2/wdQ?юk랢5*qp?_ ؽ'|F(MmEw>L6H_MC(h~Ii(w~U/]Myzq'ߥ5gQ/ov{v?'3XO#={aq62(ytsr} hxatɵl;:ч'W<'yV_6yt_˪ߴ;d;ū-=P"v8á\%æ77"b2ST-`jݶ)R`ms^7r}MbA^rFrc{*XpMX5:-Ԝ
+]$mee:Osޥ^15}^BO셹s ~zIv\P~RJ-0?V_#8U.W/r`=
+WyџZti)4G&gr/ONaUw~}"pgjrnr9'ݧLzxuAnٷQo:7ԃO	.۹<XVn~#ù?,}$3\mں}BA~N nj|,vF[/_9uy,K_"ʏ*cHp3<[AˠadCC(O@g'ipP;ݠ~sv(!PFp˰k= w!~i :p7J+N/n YB~$Y0qN!	Q^<F,Y}8u4"l!21 tDyqnY9JḘZ(|s.Psa=gzK{<sIrZZf׾@;jSQknFK	ɟڱ=.pGGNҺ"u'hFn1r<ŦkJRӑ
+XP]冃=ڱVz0HKmi~z??3.-_g;`tV%wARw{ە'$W7g<:?׺ޓ78[k~avWXW	IzX5R}֣}KܸoMKYiBzѻ8[Ӕ[C1>i-= Y^7n Z5ΖjU3Q{T+\֒SFۮkOJ/5Kl86Vj4tB-RtS=xTݱH!Z(k^|5}/wqW?
+bCu$qHPA6Ɗ5Ym) ;2OkĈfS':hpmӃ]'+3xńMV>;DOZU4>[v,Wdɛ(QZߒʍ{+%0LWkaF8&KN	l΀RD8 S嫺,v'+Ovv.9\y?X%?ӆOŽ{?HUߺAqE{ÿ3=+m
+F;TQO#dBiYN.XoR˜.slO3w 0S̞Fq9;8(66׏mX ZItjߘ-:~Եi~(gt1E}پ v)Ew0؇]vڇJO(Ci
+DvKO@ 2kmq2D`s-{w!YSpbl !JסN́V@dnYJH;{Q 4aL`'[a$*49TJ1
+%X6Ƨ"aDcj.ͽ 6Bt-Z6 hDe.XclBJrYJWƛofta:BMx\-.9n&cԬ
+利Ŕ䌤or$7)ޓcġH3E{4dfE;)luwހol12Ɲ
+g(i1jFhEZzQ`ёbW&Ǣ^{iwW !:8Y]߾Q鱉ګxJ޵F3i~Jg%!F)Il^!n?i4[ʊl8yr#?s]s0{'&$-|ݳotѳQ1QykЀh]O0YBNV;A+nISQf]:Wg/nG{_ưYj, P%s|q;8Ea*V\tE=n6^Oe/ƒahJ@QAXnԢ~bk̡vfiD4PG}7 +FXY*hqH-x>rc,B@PQAhntn:BZ'M^[b*,2LtC4ބz52[Lt3Tԧ-RW]\ND[$hhў1 H.#"_pʍ%B,X7?nmDntccwmd@IKQqP_unV&ؾ2,8}B%ähXf5NNۄDQ~zW5^԰o紕#;UGY=e'iIΎu&IùUW]Kɛ(R(I	12 h&	Q$/E $c	6A+;{Թ[5==l0|m.p}M vaP
+9Q2@e*]PZ	2t<CԏŎ6	%AqGV{ w!P&20F2dC}\"n!Ρrt mMxWA=+dD,eëЛEr<k8F<:&A!H)BY5ʠ$j)<Q+
+_ӽR2{}Qlfl?)FɥԆ%f	8sÿ.;,?	DjSj>]zb!=ϣ}KSthH]ڗ $q1P@Cp~kS9CI[ŪcFOj>_rWˍ}k]DH7@-#J
+b9]貰7FWj JOu#+hP׹a]MrV=(yv=q*JsCJݹR
+\nbtsRzk;yXWq|S	<~tU/d,;Eʙ8D#0T|V0~KR#25Hb\{B
+V8c0,뤩i#JnvѸ".Zk {yi/bn~j?/^^}iON$FN8i=>CM*Cz)S5ZuiYTiZ:uHM˴4kEDl5ˌYaʚ[r<3bu'?I҆ٻ<{(ז^?TL3!RiJ+Bj-kަ1'?Փ>[TmeXbaql&O֪?4KˋcSy2{c=Nk8;Oݲxf.iSJc|kPͱ\Wl85UkFuWQHռou7RyR6{avQWmA~JGYQBzz.멊ΖRyPXl1.6ժQǋقf.)j|jOԣR7GܟuZA6*/պɩ/jb Ս= O4>i!DA2B # ^` @%9&GiD	E4I8Qyg    IDAT)-1CQDCi8^E!Ac(
+5X(Gڇ[Fb00|4_Q(rP
+EPGPFȐ%P! 0'PsƺF;`P-PȲܑfgM
+IH|4>2ы)$PtryLzܙf/t=xyvҨNxfkL$(6GL-,6%vh4Դn-j5TU""&6[ͩ!kgjX.?h-&3^JJ5U{}oL(-3jҶW+5IY6x/1Yq*-=Oi~}˽OXrYbDօexIIqWBmFM|jdg1'S$4pg5Fl̋Wg3IBf/vz體SzLkjtn|Ӆj O%ojƢ $ng/+۩HNv*hDEL?ph/cd/cnk'?o}k׮]gq8п^h/k
+z43EH$l3+`gULd5B:[3c[ US-q6-MA~vf7TMFukUyd!bdjԵB Cjƺ2p|L{hQQԮF}q1-)=FRF8?DJ,g3]d&7J= 36kGֶav˷ߥќ-z<|Oέ}zswAǆv88jWx`.zL˵LxéЗ}m|LndkYe;bgIܮtc1i։)u'6i+r _(9ɹί&e_(,s4:iߧ%G6'6@-)*Q>@1Dփ!-ـ,N nQNn:CQ]| !|dcd
+P96fPİ`<DBf `4>eeilUEpx5vj
+	(:0\yq,/]l^?b) d4I_V~wswܝ$H<t+Z%ٹFJBP.?J{Q~^^`ߚ'&qĔm S(aK9EbEx]<U֕Fr)X/ӁeJ2UI_p-nxj:l1v½oXg@rpw|pݟ9|_+;cU5Zфm&B8ߚcGoꆟhqJr)gJ3E9?/?fsߛaۃ>zd/|d*Yz,%=vŝb{;o$Jl68]jMYvc}}÷tp=6?iCOlηgl[uqR4ÏpgqꩧZj۶mW_}}~_7?/͂G3C̫P޴ڱ"3/h֬z&yDX]ݧx4hUsǵ!(:4lb<\P/Y1.vlþ9AIW/e.?rrMöta.z@N=-V³=y68^[drM$WXtgvTߖ Zs<_P7)A4w	`ᏺ|ˆ湮u\݅޷ɛK.[_;οje7?A??c9}Z Vߜ3sX.'߾6;,r<zzS㕾ums q;;dRMz:͉\`$jEl˟кj,E?H6|~oA):w`4*2֜Q3Vp,Q)|<6` :i5lAz% ܃QppjX}!ZOGqX.?LpjpGP`qypnZb9*@m쇒|X[S)aq&Z`;/ T1Ox{kX,B88G4<2(/U*q\p&)ǅ/-k<oס+XZw)	)OTʿ,$?SmM,ۿ#$^8/N_RM՚eNJ6[:_qnzHFY/RRTcZeМ:46Dgs,;7:l?|?'
+?{3:|'$W+űJM7}7*NvBR>}`9*]7>V>ER\,{ߤt0,Pz"p~x{}vh=vuv06~?
+nuQhRѲzh<zf|C$.t]U6l'_l6.-LqV{Z|C_u+۷I5}3Z|7gsU\?,N2ƫ>gz¶+;ڙZݸ0VV2H/K0D_Z|{*WfrCMgi!P#=:)1?v'b ^W=Sַ?st?ƍCdfETߙ<RLY3]B4~ubӁį1S9@*J5JUaTl:4`vC1 <J|v1_0KD牶QPB7WIkq~4P&ߛNQ6ۑ%jji*̀y|gݿplcsT":PFP"#9o/7.jd	@<ə\LI?-Mڊ[.Ԉ2>!RŒvN6XI=~0amMq˅dU<۷-F3VP]dΓƭXgje_Z]2WkDMW=RYjn|F
+NP,7eaӶwI]?5j]YG[1y)u#lof	prtkQD:,Pj@KKQ]p	N aW`$w<"
+0u{`n@ւ.@GџP)!mL@&P9 wcp vE
+%<<H`0u,hκP9TM(F"!OQjBfsB\-;GmhgVwlH%|Εk<[{bHWUӫ>8AWR6%10ڔlqlu>ڿ.׹CZW:76c\Qxo9r{F;Gl$Ws9cOdL7/ًẸV'U;r!00FB9gFM9NmEŦܔ{~`{nĀV¾h\픆<:MYOi.18~;[ÏZt~viqTqF;%j}gӻ'ئy(50kW[,@"zd9z`s͖(?õk?xg{Ln۸8|czsD8?7Onx_zYp2 FB56XSv&o`,7c7vO3Yh7z_T=}6c}Zơ5Rk{5g<GaxСggfflEA|/zы+t(ts@ HLj	-Lx$hu6ʦ8&q~;z@Y_EܽH2'b! YLJ,S-F$DqCeTf}UY8(uK[:SCU޶3:mK酄=v޷|bz=0etPeDza*.F{3q~1A"Ͼ8jj(g8|^*G[ɫATN{cx|rv.12d?'nup!TqVĽJws; م8tAF(9i	{c$fd,ow[(ekE^wVU_s}Ovw`aǾ]I+<soJC <0@ybdE  [a6sj10Gb	y Uᔡ0Ǳ Jp `,
+s:spkcGo	L'!A+> q\`q ?˃WAw"`{赦)l88]@Ҟ\_:V=9px0q[<M2?ӄ{qydm{9JaF[Z<>Ϲɵ_=5zQS,=㋻1B6A/?\5Zo^5ޣP>} *(' sEB>͏ /8Vz'Kw);]OM՚nGop7ΏU]ޢ-kcPșavс6N+{A#շ= ~ ^;3zD/vzq|;~ #-NV|eѱ]kFN rvV [f;fJo	Y@/q\J_IO=Ϯ?]~glABA5W&j }vP_ֵ8 l囗O5{|G?} }yrmBPkJ{c۝K҆xYQ.=++̯3IP%urhD67!:5z"nOO[q1	cNX;ĸX˒T "	[LuY<(y+Omwc}73jS]9a5<aC+h
+]7gD3=6Ozʦ]FT+=g4)7\ZD}[?{`KET޷ڭ ?j'?bP̌{?.)rRIhP+s=N`3"Ӌ\+!-:p~-QRA`]Avgً
+=9JdVxdGazL7	at1;ޡ`/dk}R6qnE9H_S\B#YaZN酟 0qfov_!ϙRbYYcGoB0(O.#ZLPD@0~2B.&NBڂHxM"A?7pQA !:TC @iv*E܂Q 
+" E3H)L!3J]WA8pJy\Đ8_φ]0(VS \a#EGA-H8r3Y:>%הJpEN\7 ,6Wί=oYI+Ϛ<̵oo2(U*7R7	k[s{X1#lbErňsK nT;r(!C4ŞMM`xbM@\sgPO؜ң95a?#aEEڜad==3GU8X+~zNROi],}µoi(ؾX;=qBnXΥmVhng&Ϙh^_=6Iӱ|ɶhݨ'؎_:Jrwx}q' P:
+Ni~Iɾ޳oOIѻ?O"]w
+Z77sC	pWIިQ ctG,'?$T'g~(rٹch-</:6:.ru߿[O?~"E{Ӗ %ʼ]ZrD*5kŹpF(ʬRKLlG	Ӵ؄X	Ndm	hn߾5:Jo-5S?8+sɣb{+?gÚ[m;1%od31Ƥsh;{qc5Qq2#a$ק<b	}wW{koJ_I =@+Frtᇛ<HX-H(Nًk ?*5n&tٳg_IpBzľՀ4JWhu+}#yփQ~@"_ѻ/{م.ؿGg*֮~>3nIXGN呉\Ojbi_a?]uԕ޴d+?zԾoP%z׾;͟kA(P!Gtt!r%`axqqhÁl˼
+l)#12JZu-;pHu%J#c0F:dEPڑ8x; E/
+?`t0aJ¯HQC6tDT PY6p@ Qil5*Md1
+}  !*H7yӃRzpZY:"ժ4?ZNC~ D |SV4|rHG(	&W|h3΍z8X8zN {을dMTPȞt|2I4|Lsh{#@ƐsEШ8/W{g)GS9ig8Bwb=}b;^\Q}S*ǵURօS-yõ<dW|7 }8.alo?LH^ LfK_5^;2yT\*Vo]Q5?3?l1v5\~m*iqR?}<8wTLb_NLIZu~a\/ZNWۤ8s55ӕwN\%aϫ||v=Oz_wZK.xR/2GWsx3_zK%$F{uƮ"KѕܨSF
+µ1
+%iVAOR(0Iϲ6]\;_
+֫-ڸ؇*#IS]lj+e8}vm6D5x0kCIjHgaq̪GIuGebR޳;_6{HB7=dܜ5h(U웖׍{_S=n@(Xt٬~~LCݟhԜkDYoټK.jo=2v3WY.k=gj.WwnЁ`m+؜c5Ё-6V݁޷CUr48_74qټzdl'U|ӤOtm1Q'g	*=12(0@Aذ]PaPhaH{p*ra9cD=1(pHZ)(JSX~5]ZY#p" nP *ڻaʱw ]ea2Ce{PF` <a{v0uh	+@8>xC8ti|G2RjT=^~UsgÁhk̊S02    IDAT^ dqұṎ}B3vTǾusxav|lh$/N'$?WvL.ӗa~o=OLMDji?8ZfÎtGg#
+Fpp~cѢ!YΒA6v,W:E 5t~y ԦE9|WTlnz]/w؂tǼE%7bz~tyrG.s6M0RyGJ޷G^teT+w:)o=E;DFCȖ:|`;{+~rY`6ORcRr4J섟lw_}Yd7}#DAHQuKl<Ί^>ð;DdqG^pɍ`4O#ԨIEzո&WT(
+"  29{cϧAIt~5s~Uk~5]MwrEȎSH;sάGӝ[Z5hOS[):~͠1g $݁Pw2oC`DҽEr>&*MPDpEmJ%+դhwQSR^cRL! jBSqQ<H   X~U"bg  씩r65b%sl_Q)m(y!iMޝ1%&Dິga|4OI+ tCM *{#郠{0˸[lH]]!qsU^.K9{>erD]
+ 7`yLd1)짼IQ1&_.S,FҶm>9A53H	򘮓3.HZJ~}DhzB=Ee$);JWIIOix4X+ 	9a.kFLٰzW*C+$hk>%(x#C7,h](](pOAg?D1wm]$#d5*H4VC>w
+1ckR
+	` 
+]0j)  HA޺YC.C><YRA3V5Z5lA`5@ bPBTS-n  :t z#P	UfzETw!Ej%P=OupdeS 86P
+흷s3L _j<l*_4+/y߶;dTg2q(5IgEYFlo{r.]\Mo z>#i+xL**6өa0Ic"B
+=&0	Ip՜ES!0F> YGV7 5qSK;ScһMBN&b*UZ/~ҳ]@tL b¯igr}oiF1ι3U![;FjFymoLʚPn4N\^utLާ%{44~"7АEȎR{timٙbuuУb
+Y)JpIHuwOUN8wVp.(PPߓqs63k1b+H{5ej!@yZЄn{.,%62aeU\!}&hBgN^o;@@<h+̩=l*UIM)bTZ'c'kmPѯqEH(T+L>v%oO!i&/	mPō.ӫ55mQYĩuB<ϡzLY1Ţ2.iYHe͟@4E\O>J~$창ewK*[J>lgEn{JBFV^:cbG7ByUR@vk.ݞ4	 c tؒ7tZ6d!n󙦐=#ٕ i Vjq{C+5n@ eW.qxYZo!%$igۇ	]Z4=]5 OA:p]( Xj |X9\NN  rypJеµ@
+@DPk9 Z
+	(' |	V|Xy<0I-Kciv>*O 9 @	@.\(ER#%YՀ@	LBi,L~%i J "ceF};ouKrr@݉Zd TV?sH,OpgpK17GWo$i"8V#%)ff̟"V7ʻ>0YN	JKCqiEe*u#Ul/GFb) A\J1T6xD/ 82Lo(;Hb3_'O5qcm$8w'!ЌFTFDuQ7y__9):3-oL{49DKTl'O<V3hHydͳ:hHNLoJ"d#T*%-hs~s΂s|*3juH>L]{LZ&ZuyyDpGٝhyCҌTY.^!&YTrcT4 Oh:4ʤ_{z5kcrJ!u@.j]&ߎQB¨NFK`Q PأO0@OVC ,?Fn&0bd +UӖ҄R=cv.%۫5e_@  142ܱm_`ge dbKgVyG;.IBAvWOQ8hcc0dhC M9c(Sâ3{{D b{#74$"q^sd!mly)>u[nTR7(0r%z?%EdIh*ye50{4JgQ9"RL41K$\f[)	+d{D^3nq[Ѧ5 	8: 3k|?"`Բ |]U0`2R`f J A.   $= 8hp P
+NI>i`-tn@t@b(:oxepJo":EO  pJ{X BTC8zVa\s _JH<C_޿JP*@µ/5rKZ`[X=] !i|Qؑ+]	\ߑzKWeVYE,Bv(zĠў9AYID~)^]ѣUb\j[۝QU¥J d=^y;h%D,*d4j7<# )gϠ ʟe_0Β_cKY'E7ByΤ{cK4EhGɔҥȢY}RLJ~IhuA=;\P@@)Xgݡu2![TVY.__t1w_P<t&sRigjɚ1YGUKDէ]KT!QB*YaflM?qzU._~K>32ɦ;Q:(?7t6r	5 ԇGmܿ|='O<mڴ :::V\yoXN9ַGkQ9w4e(*;὇3w2SƲԔ)w	T򆈨tkbb:tl肟 yW 	JeEYwAvD22,"gZjg $()Ryߨ[MF{\3nʴx	U E(xCw&gAw9TPw"3F2!CANS#N6Y~7Y3-k'3$mEw B{]=2OV֪dSƚUZ:4*v {8eJP)LiXBxS숴6nϔc;(8rcu{lXlm+jE?NӪ7dYH!~PufOev God'KGR.GeT*L)zrb  H	{f
+(L"UP.@ѽ3l+	 r01H@
+`=1]  @(a`C(<:T4cyO@@DPPB`[;JCcDـ\PHk(BrG`imU*B:0x(_0j:0 ~NEU}l dwתʻ3t<`EgdIڨC9RLSJ"!
+@_T/4QU=N19g.d1&B + $MmLu6 PB$Oq!@ÎJvsTf&tXJ}<k͓IkƙX>[)w]Z]Syzޙ_+Whۧv[S-!o[eܒ7,c:]ZVۯ/2nK=oP:C"Um80^e\מBS>6<W~mT)Qy*㦶q? /A`;t!3-XN]=uMgz{qe6 `gzH~9j0ǂDpQ̔J';aܲ^ e>-m?<ꨣz7nݺ/?LHGDI|@Ng* ÈKZ(R)H
+	QCPkR6H{+6~mvQ16sIǞ!2amvcT L3W"D=+ K>((HgJѫ10qV(IZ~eࢼ}M;SYgf40*٣=2:W72-oxH}0ahF%e5g	aSg)S#⸄Qi74ʘ?u=N>v4hB*B|vD^oٰhG| p.(BrhEtE61&1%pRlhl@D<6akYge*+MH8-A[!}XbNe _GPYetz4 	]AqA۝̘Xv"BD>K,wJ}==W+(YZk;%d9-%"`A)ި&Rp-DD<Ah!pXEH *&-Hl((%A6wXXҀ(m@- R
+TZg   .A#niBz*VLHB S A.o@ 3Q=: x$#.w|4PSqjuRXI9|\״w IZ/Kg1YxUz;b_X? "B)"BEJ!9E={#\.^Ora[=j6%-Pp^B%  )d{©U1H		E?(`Q~f2># s7!/˭,"⦢s"쨓}L&BiXބ]Z$Qp5w'er"nLi$Yv@O߮(%%gVT}lHkS )3c>)䓲sdjVFd%)B{UZǘ3=U%eR3$aWO&My1m.GTitE\_BGȓ$ T()hd[^RE3M>V/>HRWVV+L$_rȈ!
+Ψ9S>-),4mk |GU@ 2&x	'$!1 	(fƈRch*Pǈ̸C=&jdmZŌtx	"ȸlvix:i.^'B֞m="6RqVJ#iyA>q2kY|Lҙeean,oMp,$ugaú9WɜuNd=,sh&ts)T[]Z3bFZb3ݥsx	Di ՚~UΙFp^zTc1zL$I'ƈ*d{T~az@(d gj!!(	}BH`[@f	gQ=nY?(e7*=ޓ8PHo#d
+\o"gw&iZP? @R QDYp-wD$l
+Yg{AeD<	z8(:` j@@ƀ3v* 6B	3ِlrI8&ӐOPA@wa9i"C1	Dـ@5x6  ԂP?C!Q{MStL6R
+9 ->0
+H4m,nwa߹ Q(V=5JYTUr>%]@˶SJQ	:(\~ρb~   p#?V.J,twǯ4S%YtP~SW0I~SaN?!:uU@|2%EZeejM	qO&yEo!|DP1n2:5_Ĺ}bL%V]AVw8ժvD}:0*R QfZc(S딉-i=klRWd7B{<`ty= 2t%k&t^JeJoGԇ+CGҥzFn~V*oLoZvцj"h,ͳ}NaL̻cT
+3l YM(Bt!0ĲTRJիWϘ1d̙&L{7?f^fި/|b1A侒d2YUUu}Hqߝq/˲<~UVnvttرcԩ8r=.g?>jԨzUqqOH,/R̙3-[&,9>v8έqq}OqǓ.qqqOqǓ.q{oZ[	oʔ)a՝wy===_yCSO=u}s?xJiߏ<.\Vɓ'+}-[vqE"P{{t>RE;4IecɲOlذ;vy}*I&u]o>;p?#S5ӟ4{lY.]z,XbŊwy緿}?s97ܱcUW]%rKKK{ҥ7tӒ%K +;cߩ"tay^\d2xҝ4i%\!khyq\Nv^p9sT#=WUku1˖-a_o
+۪#?(:_ v=r.q(Ԉ1v.^xРA_}Xlل	>說YfE'pK/)>h8:uA_賝wROwrߢBpM7]xEwjIڞ  
+5IDATRzH-ˊsϼyVX1nܸc=vϞ=}?;c555,/Z襗^asov^IMG.O;oG_zݺu1sΝ{eq^~'xs/Z?\|yMM͓O>yꩧnذwINʯtbrbg?eY/$I_y	!۶p	}<l 4->|ُСC{Vǹo9s?;=XoKx'xjrvit_4##5:l_Htm=}<^ӦM۹sgkXSSSxs10!D)=(}
+r|h2Onܸ3fLO)_[[jժMaDkŻr˗/'<۶m+5M۳gOߏ|Μ9G^j-Z$fؙLfӦM`Ŋ6m*
+_#o
+5Io'n:Y;ݻwLA;wZ>۟yk6uwy砈</XFӴ	&<s}6K~^j_w/iI/bqqD|{8qq<rqOqqq<rqO	88']8I88t98']8I88t98']8x布ao& ̞=;&>2dy~'Oxy/}%o,˛6mv3gΘ1cޱGy=uu]~儐?dѢE7pD8t9B~x`͚5 `Y	&|8Η9s|c޾|3<o:j rJ~"qOw@&Mt嗟wye_,kE5jԲe T*-\0>ޝW>ykvܹ@஻r~Cyg'O|7̟??
+6l>ĉu]ohhnY }k֬+B555a_s5a̚5k_ڟ'VTT{[n?iGްa͛LbƼyΝ3&q=ryСz$Ik֬n/{+V,_1pƷzkƍӧO1cF+4iR0|W}/
+sΨQ>`ʔ)UV1f͚uw;$[҇~8E؃>ꫯڵkcǎ{>}w߽/ŋO2eMMM7xcuuu.\N?/xI***-[~#F9s׮];dȐ믿~ߞO!;pL&.s\
+$I?g,!72ƚB|{ٹ[d!oFի&K.50{scǎb-JlݺuߞǏꩧ>wInns9l >l>s}{XBE~pK|xz4M[nݾ<;vܹqٳg&8WWWرc彛#GӦMݜ:u*B识! _cFy浵};wZ5f~ݻ?[TRU%ƍ};Fd2o7M\Nsq~_]w[x'nANQ}B&B0}PnRJǙ;wiӶmyk, J>E>[4r-Eq_ۤ-.I?8']jT.;nhjj@ 0/$I:t$I7~v]v#Fׯm۶nn߾oٵkW2\xqMM %IҾ3jԨށ/iFjnn4j(~qOw@.Ƌ/ ͛g}n70./^ؽ{ʕ+_}P(ӟK/}w6mڴ`#<rĉ+guŋMӴ,kk֛Mmvyt:D.+bҥvZvW^/3{u}[nݬYYq<rW[|>C׽6oC}q_,袋FyW^M.Ydƌ'|GYQQSOϹ{eY;vܹs5M;O<qWo1+[[[{dɒK/t#F83ľ[7o^WW7mۯʏc~"q׃>qW]uK,9C|Gy_q}ql.J㾣/^7={y˖-vo:Wqǯt98 >8x8C)s88}q.M~qqߐ\7    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-2-rem.pdf ns-3.21/src/lte/doc/source/figures/lte-fr-hard-2-rem.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-2-rem.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-2-rem.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1212 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 637 384 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 637 384 ]
+   /Resources 7 0 R
+>>
+stream
+x+*236W0 Bc0˥h^_a 
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 637
+   /Height 384
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+xwU29T䂢("*"z%+IrLJQ9gD" *"tܿ޷zϮSguYku{x={x={x={x={x={x={x={x={x={x={x={x={x={x{x&/@J;kDW|~x^}s~og_|O}iC|}z>eԻ-+^syx|W=޽審'޻1Dx'V49°q~?8~?~Ah$3i^ȪIM?CKO<9bI3Y5|I,\∩sC>\oy\sc_Z ?5[ugitym<̉z|ײS;=V%W	:)^ڻx6T$d⤻T$W|e1=+yJS*K+Hx󲴀{s\q+]\wN(<\y[=eGYYܐyF2/devԐ9"GϠe$s&'BFa~L Q?\k{ݝ9'Ln7tit?x 罜cL&~?OO} .b"	ޘ>{N!kgq2= Z58	Ю0q+II*LA` _A£dL)Hx4%Q*M1*0YTݳNm^lXQ-!܎z$<lP=[j&z`j'W.IN[_ճ>,M7ZtȷԑI·":^H<Fy[=q><!gvGLof;sRIɲ>в쨡e2U2ç3n3vM	8	ѧz{IHܘ9|ENf}e>4/eZ;Zs#TmaL°%cEw~kik|>.r"GDM~|#sc³4F8
+a,J
+káp|W\,O2&1+^eiA\gzȌ9˶ڞ\|;ǵLkx>}D7#W (m臯8j4`~ʳ	<Zxv<&sgvr//,/|7Η)B9n'wt6#3D5Rs5]M8|;'$	N{,L>K,'"i<'dü 8}N@oY#慔O@ϜAC-ˊ|^ȉ /H(|yAe1ݑbz s{QBd)r_ÀHr0#YvR]gYLW`:B2" cb҂H`	q#t@?JSyq,MA%(L/Ze V!#$b,pMQ09Qo-lѐxg(&OہCڼsɔ}~4̇W}.eۗӼw"](`iCoҳl=ĝt8%+<iGiE@<0ӃG>#/[2/dR7/ufGǵ 7:d\@h51PЋ@Fd2/2BBm	WU|h%㸘r
+R EJLW4f&p/yܳq>~mzuR<Cqhp\e1ݘ ̹!
+*Nkim~|CМP^ˏqoVh6';	SMрYA;Z`wyNbԀ#y]BΨ ʍ8ߢ!J2jVhV ,_l}қ')LxM( >R9@,4ۂyF .읹1]
+nkx1 [	i3}2ԇɰPz10'dyA3 .omrBs&R˞C<ߎ®Ja
+Cb5b M*2^dpi9+i*At}gE~yueð93L^FPsͱbG|HYO	:+]tY"Z@H fXI2&8AU.N-74u	GѰ?-"aj
+榍p"^ъAsk`2Bo|8N8A`0H	~HUw򴊴*)M>͐W)/EBj!fXb 	̡K`Qw	*0/DG}B'I9,l	𢧸KΖ7}~mY-ՠs{C&k9>TyQ$Y̧z0yQ$P`nvسŬ[9*k݆@~]09o @'](,ВqflBl'c-n#_}U4=OZj 2Zo!7`('x4	:^W}lIDH~:DtO#-s6<f$`ZxM<6(Ll0P55:(u`.j1d}ΎLGѵU/eSA;	َҥ0KXض?+Ӱ-ؼ$(A{]neј9R02j:$|-S%_JȜGen(B`%T`0yg4XhhugML3\,[)5yBb^}\]րF{
+MRm6wIkR#Nҍ{
+ߡI]Gsvs!b  a^CED*`7U^Dr9yi3Rpѐ|;%n1kVX9( {vVuqyqq!Frs5aXb`a-p)RM[6ɎJ!$<u_WU.KFIJ nWM=eP4%nwCʶr`GtJ?iu <yA#G'ݍ"EܐRFxv#p4ja0늼CMNΧPssRsVsV5;;<|/m=,@2s;b+Hcl1L(@aLˈkf(K< d/Q<f,-~B3|D3,CW*q8W`[_)0YOIFpM[$ƲZX^RCBnU\z[{K4s	Rymy`,;:dQneJl&Rx0IL9 M|1_t/+dʡ1V@.>.|wF)atq4F	cKRzHeOh*	bɢUVHsQX&SF_\<!	kZf:}(<RnL'%
+6Ap0 w5e12cL
+tE|!ԤN hF5PN>d=r]V0T7c@,z㇘Nl*H\hGxu/7r@)4;<;B&W̙r\++,9L6p~GDP_wkxtu d\H]9%ݍaAOPID,!D0~:>33|6wa.XRH"y9HjHK/lQRD1R%8ʒ)X.eXnFZ2V'OÉĂ)Յ8 oaC)
+۞ 0ANJS#u	:/6(ksbVK^k
+FSºǚS0G<`ž9<7:]pp)A,L `ZG%boƌǶ3czgd}>|ƕW}O"wضg ,=z霋I	-`>`gi\|;JN2CV-&^\+l=YWek@1ȼJS|~kuWA#m "9{+`7xY_+Кް!ȇp469(橸Ŷ7(361w>nCnnUڃEIU	<$:Ch`.T%UG[Cv+Ah4amNf
+PPQ&A#X
+N<<,R17lUL`N+Hͦ	繘.[sKupslVvT)z9v意s] F@Y1u`nwH .>@x\	o2PA, ǋѠ70	P|{~|CjnF-͠#|gue^=J_֊tƻR$eXW6y<pД6N}yaf9tsYi.)0|l$~Õ0i]å0_n|5R?l%yVvk40J870
+;
+SN 
+Ǣ @tmXs<;x78. tyvP<RXF^F;}`('QC0aI(MEHSRU[(-
+yq-hJʋkM+A%N5e1 sXjȂXjDuC"LӘ6
+Sy)	X[I*y``$1ܲ,C4/WftP8	:҅6կX|lvs szgkl
+͟@7L ,?4yd#DhZ}iihhDvߘX1ABǑ۲{H}))Ѕ B|\H(fA=#ϭjTz9c8nC}ZpӬ!z@΍48<	蹿pg165&omAd,hB*ʭ}idG5+De98|@`sRJm)x:Jݫ`ZP]XFY(l9iQ'y^ױPeG[SHN ^&bŵ03Fdp(8rcCn؀ayUĝI}ouD<OmEQ>墸Zݣ4-.2p#}4@IC~@+mv/7@۷|c՞:;A^,9&tOi`,Gԁ.Ӌc*^1_vzBmoɨ n^];zC1l1F-C,#8/d5mi#HSi͊`ap-FbzeiAHTYT_ ;#K"G\Dn/
+K
+ VZӕ+$L=-j!a7XOP]ebNFcmIVJh\h]+{yszd=	ums s`t}"B	]lvH!_!3U-9o.Ip@FEڮ.{8Q@[[۝gupR4~ʻ|ic+B_DljGLDT5ܞb?Xf s`a7!u]uM	٠^}=вGLCoʐXcہn	"0(&=9aDӽZF~}B/$;m-us;TDm"u/xt@Fdȇ;x(5N5s[7O<pJK+1mF´d@zf>_Z0&|GŢbbTJ,@az|V15?DJ,L kO%N݊ذsc;KA7]q~'N<zk	Z7rRse]kIdC)kplnr -+UG'tBz+
+܎=+jX5iiD+$Ucbrn$ ˴	-c(EfަrvP
+<E`ubb` 0aa&#՛	*622ƈk"d/b|9	b!"]O
+I$#Pam-JDxl,/?+2- ԰8^OnAHp:Y&|,.ň_n{ij ,PC8$<gzoD4z5VIu_s845`!uShh/鶘K!
+ӌPÌzɷ!F<ڂfɕt(R7~~]91=л[G_'tXы ;@!Wxd:{[{vqvvutr>lm}H|'Mtʢ]!2m~ECzF)qM8
+k$y/0<̠ݐ83|2E$ԉ\ᏫvYL򴊋%U579A#mޖDҔ;D>+SC϶:yU]VU5<^tVlp:]*7M<_vctsy.nm&5ƴkHdۜ҉uhPjɄM ޙ~'BVeti˳0ua[s~hG1%kae/:X#`.2|asr*HRXC/e#ċ'}	leaB"<R#KO01Zdj$0Mϱ%#|*Uu)Ϣyr"3؂8!W{3kNSei}br%.b0/lPv'VnsV̏]fSӐck?їvoCO!o	 ٞ^־>g:1hڼ?rڪc`tY}fyxґͲ
+
+r#\	#4\[l$IV{ 򢰅hE!'9/ovKR煬@jmeqf(O~&/ޅ+N}I13h	F0a^i~iyj69`Vm =&F>XIa#ɖ&lLFPwK_|C2& .Û5X,bdGiGmUB@_6MD|U(Tww>j-<9$tʓA}X?#y5RA#؀/H1;c'+r$ܐ5FnKç- bs8'x#w1h|ڌ@qRUf"6wEWhfXl.C)c"9݂,0֔wsEʍ,ŒY6"эKK:+1t5ǣ0@<bd} MCˍA\@XpD3^LLG#1h8/ozAGN(At%7҈wF܏iAoiɔ7њ憬S^@hD$%qIh`T&JERd3]T+alDE2<=-(ցKSb%!2I} lMs8 )Hs,@8nG[Pbe44ͳCuU(">BZ.Ʃ
+#EaO]c809&/'Hr m=td 1a	{zVN)_M<dB W=@D-G"#1iAٽL(ҶV	p8X{Q6U.-Iy/
++{L	vKV'֮8R06FH/G#x%N6Zѝ;i"n{Lp.l.ڵƶl)^k4YH*T]aUcIU4x!U/, F"tHעGbm3xO;:z8u[zurvNygg>?6X4.xtA]Gf$-azAy!+yGؑE?=#S%Zw3Y_ߤ$%KͽE5-kE%7RkCb(h6f[Yl+@uqI}Dxh%	 _=e#ذLϛcnQh}m*]@xg5wqRAi,B;ln 2yr-MLgˎ5iɷXp6'-Qf`ZYk~, 4(!cߐ	fj4ioi|.˽(Qв|[PtQdA%J3nRqYL/_<i/SuW	_8ƺ7EI5AR-2[aAhz[`>#/ϵ\tުK|FgZ:OЦ,-4.~pG!ܭ%ޮvїvoJ̅
+\uZM/瘦G8ٍaG,tssp0C
+t(9s6V (2&3E̷` kD.SNj\nDt)"tQZd;3׶mz@ǤNcOs6X]lq 
+9j3c*/Unl8]{J%b`1Ც.!`%B-YCT%[|
+OL8=K0Bm7Q2#=;Y"`1`[O!8G"1+&]8b°=`N..[:5.2A^?2eb@nRu?9YYg\o=Ы3*YOgT "WQFKjP \qЋ%jZj3x6d&	Y'	MO/b ih [0{C0~Г׫8ݬdS%cHN{`W1+`[Aad,v4kВ]w,>Zrڃ,`FtO%[_k<dOj"㚮搘L`eIVZ1FS\p<TPp1']gc[ڠqZtЏd!FD5/IhD[,KIw%)yq-`&o|81gWӲf I)4VKw-n!Fa=z#lO +H2y/l1-owzr;ć4n|ԍ{PJ|i.Y(}UkK
+2ysQ99;Z,9k<JWW+NG:V+0K{Wl'ްEaVabF0+G؀p:4%z~hᲘXIsC#Yح~a:Ts>(h>W4̮۲-h^7A	++Ks	/lö3HOi,bE֏_#FLQ<O~| O+BzFMfa?2\IN0j5ǡ2S3QE kg
+'.X
+q@1eB,K}N}ՠOG5)+r$ՆRDߙ_4BGBǹ82*Ԉ/JՍӼ+4<z1X  6Eo,0>,lD|e#oUH$DHC~З坏9t,	!uhN5@	wf^!/5V쉠'`WmĘu]bp\c1YswQX]尔q+}ΎxyVIq
+b(f385e8QGc KJ0%WPϱd_Mf-G4oc5m|m21eႼKSbM		$&W9_m]ZhJ2gBOZ T&|9Wz2 77r@)d#:Ppb\k|KԻ +j٫X൅]~3TčXAUixMIˍ p7L<ƕhڋڅxZc?4
+/V2>+$nh°LU{k0Tijdy%gnj˙ i+R[txͯZp1l"MCm8yѓpUӦh%,P5)	%Nr%JȋmBfi8b"D5SLvsO1-6C芢Cَ&}Sg\d umE|AwD_@[ \' 9?['Гa
+30P YAoe9%vIH{[b{`:ȋZb~Ű`+m@|>f$UW; TD\#i ڂtGyE;qw7ʤFp6 1&Fb
+
+gd.ny;j:G +3|FN xb36v%6]׊-Nށ
+8lyɕwn`˖B>SNhBaC)R.|u΋}UԠ><.ɏoXPmӐ"͋4[g|iGz:+&eaDԔ m(i!eo- []~WBjgPn"ֶ$N{li߆J~?FE{>"3yהxWCu󗖖T;>4+k`2 e78tke4&H-E ԰95W0aNkضoJjZa^rnl'8ΊGê14Gal"
+B\$ym ,|-)A WU浜DW<LP=JH}y-!>6IƜE~+fsD&/w&]D>ޜۊ'uWM|i@#9\1FZb.[~5Ts, s8__-=_r>iy3,/ŉsx,/ߋ&B,_Ɠ~kE,5_UB@bCYsaE\[!3?dbj8BB,Jj|nLWI\뵚sre@ [8Vb,nw?A&."	wY
+}B/^{G6sr韖k|=yu*LM:cO#\Bl۱$%|)LQMRWH5L}:G%T /Tv^ݾ3:)Z7C%7p%*&WU7np(PSWTZPy°,L,҂ŮOrc:q ֶctπTd^T"1&?_3J{ea+_TM:xGבq.m|0lQҘ_xd2zPnx8zAqY]\Af^}@)O1o^lQ<9nq圠9GH3Ĩsѿe偺Y5Ω3p&/Nt80#Fԣ9-Nib:16/*QоEAbgEgX>-;jD*L$(B?iQCut^Q}	h@!S֪"A=nZlp[`%>+c1YJ@0ݤ:,"F5ݮlj %,-(?K\tO^\k~f, %グ{lv'+!g%RVbh-F|Flݜey4|!9cEӔe1,u"9aG5-DI>"4+9$Q3Dŗt]:ZGQRu`@;YSMnҕCdSdA%L,OݥKX2@IKL_pG^>"!LoGDPs`[֕L	)PMȌv\K?*Hνm̜t[\ٌ3 ݒ"/5/d%3E_ea:4^=JQ-\D33u׆C5g!'0jRq潬SQ~zy\EaA.C(INTRm>[XcKm1_s{i?+aY2\u93ZBèL KjmCܰ5kgQdi)ڬ%*KS#[n
+GnݛR޼pAM+l1Xl5R-;9k]Ida 5c	'۬~<tXG8[fD7͞&|[lL]#2çc45Ϣf(PQ[1	 l$Մ-$m L$͒1QEKU5ȅ as)_+.BSY̎JycpMo2 Z)%/ʼ榐5AdVB5RC5ؗf#90l1cR(	CE݊b3;x6-57/f䳄ݜ ogwKO&סuS..YLc}IaN`wԁc
+! {@!"2Pxx ZS?:s M	-bAhtg0 TKA}*VC``1-^#i) z0jVw׊1^Q𣂭Mv%9U}1'_)BbՔ	ACmG{J;XZ3l-<Z~E35Wk3xf>cP#^=.j?0a46:CҊ[hXK9C`.&eT	cuJhq9Q`1 -hv6hZK_-Hx}ڰ]f\50!l\B9IPݮ~+>Qn cnn 6he(ʶ:ƍ(\c-J3ٚ-|ن\CwuG]ky`m(ȣҜ7rޮfj?l?4|wMQulFLq‚蜮4^bq} yvƟVГ_vE=xI׻~F?Jؾ6fvG"*ȨkvBcO	85dDG``ݙ3P	Y	9m\P'+rtYj06Z50s,J+[l"y̩Cq}S=r|HQ˙`p4̋F"m%ӂfcpo ڻnuQO9h`ţZ$9MZ/4'`CM4ad&BU_:;aJ"-vmYYwjMf'g[Wg/e:Si%3eu22#yby*m9t̿X/*0T^*_YƑ\a&B8 WhjM_vOز1춤i	h[Z*FH{RDJ:	'&йSؓo-?.L[0˗<bj́xɩ[RM3[ ;RZM+5$}.tT.B񜨁nzG/wI+-5
+qCL؟ USТ{̅sA(6dK-`3o-E6C"lJⵇ-JsuKS-cYj-JlְE
+0#Y¬J6hkrbmUnq[=j!NM5Qƽr#zUiUwa85Ob.YzC7r@ZHN{	jo!&>8NJ/(-92>]NAth?Z!N`=j|i8Mw[ɿ9!;Qn>"zQB \$G>ŵ.]1.'jЬO@%(.*-i{W95r#[Wfm6oTʍZsueW1xoVHo*b>ݩg8çN]p;G$6MػS1.YiM͋}azCjAVT߉Ǽ6R\/tY<.`2V}*nr՝Uvwh;:[95lgwVƞO%n^i1>?3#4M2&e}hJ3y~h	HL@zCn$vnLgLaL	ͷ< Ѐ5l7\ࢤYhfnIJrQ扄4BX4}mAMr4'(]?VVbņM= P^cȏo(֮Űl?ѥpd5݋|)'jUL`LP'rŬȍmZ"q ,GA²bZXFǟT\Բȧ,?Wt0*􂰥h(Nx>'x֊R 4Ok<$dL7H-<ђTRŚS긻k,kWKi)R\#lQT68o+T?Q 
+63Ku۾}yaf9 ]ߥWēJ0,`CEqN$^v !|efE/j9˯X5il5hgll߸s0$([,N>^$̠-Mb#(NRG#TBy!+ǵ(N0,(VZ<,jG%\oUajnum+Q*u^]4 ){ܵ/s@#7X$}r7W,ނV>h	'48_WǰZ~I6`pN!-D rr^hZw]acN
+"b)|-;k!;kT3Ƕ:ur>$궞2HǾWzyU熬jسVIi' \1n[8Wtr>NDF œ6tyq])q37yKI+9#JeK!D5]ijV!Q~HqG*,"?uUkj.+Yn"zHuon97urۃ/p-&GX	|i&]S7c$&޳H9YڵNe z>¹4U-RNtX#3|:ocԀ0TH"\V0^z/_D-a>bxNfU{zc.SqRP_>Y	"ɋm5$/ keIVCd#^KV.sTJumF@G1[ڦ-Uc+Ru]7ʍ𣕢X{-a+,lֻ7/GS>BɷYlIק8nvP
+(ňD5g-iJ3+H
+W\:6 ]Hf(8:r[u(q%} ˧&/nAe>KσZVh L煔hړzA2P VB
+>6r@
+Ŷ+HxR$4K3>pUSb0w¤aĝ:R>$"u]vFoQKPE#Şjuݒ%*>ɿI֙Mu+tC|PSJZwBfR>4rD~ UڊuT :
+!BGz3
+ V/z|gzOҰkЌH{/1 +<JUwVs7*.9%kżӳg-1o ^rPVؗlI!u⪹BYo\ZF+jD+XiwS[ՠa+7J QG>,=WC͓i@] bv@MhM3w͡NrZB`}A߬v0ly*J9=??h9F~T;%;ڰ
+`QB#+3%CsĀ*j)a=-)II
+L6 XQ	$+n-Ϣ!P-%㛘
+}Tx~D2Ƚ6řĸҕ0V"_Yd.@?ElߡQ(e=-
+detVn _7a,RSAjt1X[Fsy%0_c`DI%t
+QV|\O2=0Rb+3ghiGh;r`F^ C	ηEbŶyG΃XH$+)jUز/aY#U-1I]a
++([KMeYE[|)k,K6\a"M]!@sYqTמ-3|oy\W㈋+c)Fm^T!ɖͨV0"P\2srNtu]=M</x:8AvMS
+dZ݊EW*H|ADw܌aKՖfakQZԯ>: ޱ5̿HoabF\^qiF52Y-xg٨,(L>[xMP}&hPϙ1bD\<Kegϩr/7&}E_)q+&_mLC\*:QM,5WT㨚1uּP)8j39pn3LI.sD&#Qէ5$+-%-Κ.3?+ ʍ.Tp֭nfA4+c#,wu`
+ljGRK-${vwW5c$ZMh>V e*ْ4ݣjMi,)G9B!*4ΣT|۞+vw70g=¯ȋ"iX:C4eTge1:mozgL Ua){ -FPb[TsIsH^ 	͒ [V:[.N`q31J8׵ЉDXuqv԰AAAZ 9\*ZglnlA2{ijp2"iZ?"je`yۆ&'WR+HǄlV0ʊ#yIP3nv#0I@936Z3DJ:NrT@jU9DFI۴J`B}TԀc0EJ5b#ʎ BvΚ.nH|͹:J?zE2wt6[G(t6 BQ,37WFԣb
+کq_./#ЎДtEL[wZZedBeI	%9FupF23#6lOYRnڳ0~y'F+Dv1%B7]
+{-.r+Z@KYLW%'tȳ-rg\K}ګJ lMaZ2W$LWgS3s7DjJRO#tej"TLڳvX&1= `5|Ah^nK`xR P`&r%U9YӌJ ^4kN#۾5H<Cn粆dҠxIU9./ڪ	1dǧw0A0݂k)J|
+|'q
+e{-TV}cuϵ:ݝ7r@)sQ!Dou뺿hY#ĝUIFIZ[fmPVV+Ѹi7@m`hT.Zf`]KZu"WZ]Vmp遇2M-3|}b,
+ t9-ʊY5ɏR#
+߷SNJsG톳f'ߡ!EPכǅSq_3iN#Naӣ%bH`XH~tt%eac R8ާ\qd҂熬ω~Cg702Oxw<]LKVU
+i73EOIsVlpJA>ZhtB`YXhjnϹY*EW#NjmiaJegsMJ;3|JRM9 e1uKq-t<ɕ AB$ARt~YشzBBjvǺ>#,"?VAьU3``s=iÍؼ_%)f/Dj3?#d 7OE#n!So~[v%QyT{%
+EIe1ZBaKTk1#5oZQ0ޟ	▹!jI)We%|hDWgb[eYLOJ0*ޙ<y,[=F-ݸ
+|bezTAtaꢌBR+)#n\m%T;0m?m22#^1d/0لyOoݛRXZ
+Rw߿W]%`F&T[4L
+I
+Jɧ53}G>nZ&I/?ߑ`=h5d_T+Ā@:s~-bar) T=JaC4CV45ayso~h	12;c'"
+^1<";@)%讀X[kZ"A8ִe+B#,y96#kw1
+!B#M3i t.%YuR6mMO_5B"Ornr^m"/%)ɲ}VMXsg},2svqM-K S -v.휐BΙ=cdk21'V6]+KL8p9*|RF)1Q#-t%t73frk8(ϱ4@m@¼$Wr]vvOeY%*Sj*!)$k7MޯNM-EjCmϴ )mbʶog.X(so犸5Ez;On?TtˍX^u/hA"]DeHݢLq(."X-y!(:KQ/A.DܽPGԡ%edB`hΐcR>E8=MloqH	PS煖ORAݕ$yv` 18u QޑuѣifNsPb[ԇY6[G3x%{[uwɢڭhRqres9nc]p!-5ZNe
+͏a?=oLb>V?٦%aL%Yd>Kv5j.SS*IqY
+8bҎrKE
+rL/[򳯀1tqv!ǹLghz=w"ZPMRg3 2d9EM$(ZTq	NtK_sɍT$BB*KҔX$)MT/+>zkՋ{{	L'g( Z|СꁣˆZ>$KcEk[b<%h@L-3OvT:{Mw ܘ.ˈD2n(W؛&	ON?e_ڳEO13'Oag<[zjl_f¢A>+7B1& hN:Դ6kƆ+)gCb6bN¶GLRTCsiۑ|֬]k'UY+N/U[bŒ٫vwSt2BEՑႉHlۣ=BPSARۯ7([yz9#tfg
+J2eH
+b&vQ43yzՐׁhBZ&(:.N]V5Ssc1<H ~,'fQx]\>m9%c'v:$
+-4Qh)Zܹ9wIym͹\y<vlO`W\imnbxIJ$VCTums7JDjʤ$ǲԬ	,ֶi,~Vfj:2k/w*)Ugww=,Q`8\kMkX}Vap(:a7r@)-/p݇:hH9gKml]-ͻ>"u;;-e}EZ朹i2sZ#dQm_VJ$WpaZ&j͚-y;P	{-<MwN!UDV,Ǎpf`q^lkr$lqϯҌ4p\nl	{Эr+1^qҝep*rCv距 ;ӱwbޑҼ6鍥CS#\)$KmD\|3Tpާ=FRTVkW狝ΕuR7$%APU3tdԕa9 /H4zI0G>g9d=g:B:AZѯ4˷gFKϙ,fg?YZEe1!ܐuZp5,nfcګ|¹![*IU-2=B)iI%şfۆ$Q~գ `
+CnN9HM{bsA/Z	YzKbzQ`/2u}YnԿZm*{VVkB'a"G1yZd(^xoﺰElZ]dGSP6k1(<L0&vV{nVHƳ$Vؤ$%S}@6>*nBŰ['a%YIRHS؞P|4e#bDw۲+D	 kE$;$,p..e)]0Ubz	ܮn'Y'mcX?󻰅z\ӪcvP
+}v;	nZaj !GpM$HB12(XiU<u/Ysn|m$8/kOcCKԼ
+S4apҜ5P`v1Џ6xtF^uxv,_x}?@VcbbL!*I˘>}8w5ΕaDzbZ\GMc'UVl";猊ne5XsYuA\bv+qe`[*ks;ײ ZZra`11'x*0ع!ř3mpOKΖfM]=XM=[y_6`.tp<t{h4@oʤk?L1/OP8eR!\RK΋kf5/d5fUYbj!QM6SC2VXYExA_k9c(hzdxJۂ{V\$?ujMqx_w t]Ό
+	~=Xv1fM+d{y hޫ9w. TWKk.= $FX BO$<`.2BS٨^	D%-1=/0ȋ̇CiNrc:KaQGy0Kclu-iyy%G6h)IIQ׭)QdkUQ̖l֜,l<5$TRo1SUlhVv?IZDnAeK_en,00ªz31@@w{c;2g7r@"躊eW,r[EB4/ss$3m=Æ~igWBh[`8tے'_@j 
+&@MhK=,b
+ۮnn*A{PW3懖"X`TwX7_\Zdy!%%#Uf^g_K`d6f&,LqjY	k_ؔ|MשQ'>$UX]um
+|l"嵬wVIr 1/-B*ܱ<QàY-BCg#fY(bw/zJ_&dg Vl^r0m;D3<aEbye@H;H-cY+%l	#Z&+2u
+ġAAW7w1	؇Uh*>bA#\yRh?Z6C՟Vq[
+PpwS!QnT;uMOaDj)KYrȰ<4n<_QaA+,\39;xkij$0'xCVdz- )\;L)2\U pS-
+p³zYLW=3|c?F)Y5ʮ%8-K0SW\ԢƏWْ(Q|b}7_9;Yhy5gT]~[V1spn&)w:F0}U0$iFmב<-o02?i'vp//,ԋA	]-D2=0huIxFI'	u1c8X#Z3i	^vNwsȚy/VP~b_-4ZYۼ-12%D7dD(	j4h%bHD:s0-?qYjOTLMVh%U Ej5vͅrgsĝ!&j)$$aMP`y%QWuZn,β҅ s@[E9o]ڲ8sSlSLMHҔؙA1L01S?, $-P;5{d֞jUݜϡ#dgR(Z6ᤝT}6O;bn{J-sNל%SUJ)9x57-84v6aB2P焂@wTqt38jUN q">jkzufJx.5pCww?3J:͌$kΚRH7Yxys&>B,6P0`y?WoI'HMfX/|i3c)HA@Ud@ْ3U(NC\-w2Lm-Řk4'z, )	\cuscY0,.KIrIM+uʎbHVezlQR;X˸hɮ)T\@zbL+e@Ԑژ	cFcA-Vx/* r]Yؤigc%2&jUqr|ioxU# 5q"!_ϭ5ݞq-nc=w'®J!0(oBT_VвE_e224U (\tɫvtVph~M+	^ng zl6ie[NF(p`tVjڙAx`D֒!<\M`$27dԀh$	(djyܳ#[\ c"-Q~|5REܠuZ7.mȄ:V*[-2+K4F*#إ$+"%YB#$\G\#%dU׶vouuFEGkcanP	x$;l}>M(13gcL<4Lgm3Pg߅VlHe_^yuvv O{jʳ'ƚ4cK\8_)[2Ps6p4p)/gbT YDE[P[.4XMC8bf*S~f:ЖeYLՕC[k듲k"î[3c@nY[?lT{k{pӘ
+xMΡ#rcyϹްΕ\m\#inV`Kke+ući=ZU"mV^}Iz2M?o-z:7C2'j s	6)IIs`Rƾ<yy%_|u3R?!@ؽM]*b6E+[{ZB&VMuD'b*쿷-MQJUew87Vsct1Z[+LlǚJA_8+dsCY*]NzQcoݛ "AY+g+SNHK+gXlA@!hO)4OL$"xA>k)L'p%QN~:j@np9%|-z FhqvG(|. ቜ[R>6∩!MHYZD*Zx]Y^j@")ELfmψжmuܵM-IBP[^MH`+ɳu1BPeM>o*	m*b)Rm	RKb.!eջv teb4 {>ړSǶNζ" jY:81oΫsi9L:ŲNŮQp#r :OuCKЯ4v 8+y!wQH.II.rqĄۦ'_YE,5{5WuUB	k40RԠhGH[J@C|k˚3d=3\YU>=Z]dl=_	r:0XB*n%܆%)I(juxP\c4]:4ٲVwZCVfa%+j0#p?L?8bJIry:VKbɷ1VJK<isQےWl#l	(RK<b(g /\.܆̗	@d 9;I!MI/&?jAƛJ%ttqQE2("lnA$Mn	$GAAPd-~Uu`?3+_7kq]n{	{]O={W=9:,n/iC3$5<EVWe$rcv:5ؽ=BY)3 -2tTS!4Oϳ\n
+@?ń0lwM˨~;|8e6.>]=KiW/wE7&$lc|W[9R˜4JW{%i,<fTB	ka|F0ОScoƽF
+NL%!2=41Ȗk%7QF2$6eP_14KՆxA+2Ԑ\H,	uSM`ZߒKQ+Umxwxq_&1dnw"ctRgl)h5PXV\hl·w4v&S͝Z]m%8]`nr;-29=hst.ɻܿ"($nZ.ReÔܒp&Y?gt\Ho>! ٠0!		,	i(+A2cB6 2ZC0A^&NBo~"޶Swt!K-ˣ¿֌%i0=m+ǡʍh<	"UB,eގ@Eaxdt.?q&faHnNx+FCAcfufdUycJwe9#>Ĝ^kj5AnPJ|LSKB=Zꖗ=[Sh-0SK˵JRVL.t]JؗEӁV|צˀK,Ѕ]~ke%9yeݙW-/) omvQØv-wDZB~{0}E_@3?^b)=B)HtCX(Gy YH4 Jvj3淿Wx~M?Evٰ+UUʶoUyɥ* NWsiA4JnhUp@`-#kޮ(b=0.ICE=RSæV#ڵG6zV Ԫa3E%Y
+Y<j)FUȯ@*+1n"l/J5ToU9HaS
+Ѳl6ey-A8.*/9GqAUtv!K,J\U2[cEwQGsN^q>m뮬|vǣintg)
+JEުNHJx3wHp|M㯥ugfZ$Sg+_veγ}/as5)p2IlF ]pH%E1Lp4g㴪#[mfބ|q`	IAY*aoJ_V#U$Kpi\'AUzX#ξϑ,ibg9GEt'aYih@VBdȋ)*O
+HDq~mzB0q=J\kڼhZ?Seza#F5И0_1%uh)%BFr%ZQi[)WNծerYI d[+=li\&hF^3QmQPkVHVn/C6(ֻ¡1U¡ Wfo%I"Ru-+.#~k^%%%u	
+
+vue__ߨ^zۯbbb*UTn۷\^ZU8.줥8yqRlh/W?L"J),+geјPmfOAIv]`1F-H:VC)Qu+'lڔ8 nMDvCjN!ª	hZ'=xM\c|0&C-lq\qlU˦E?y,gPbkPeG4%&Vtp%Bש"F=1Fdg*($e@m[5ޕiq$HJ*hЭK\\qΪƃStzFH@-znp/h.(fNʇܯ[k0bܙ] ͅNS|w3#h޷$$회I]FKUKXcItb~d]na@8.ΝPDk)RvQi%ƪk;L_ȪH,^. (a3uQWt-fǮ~@,dҊ,d;Ci"y89<E W ??8NNP}dgڙ-bO *mIV|8.ƊAsabn}fHs^ʋE5aƩZAO4C:&jx\#|6 R7b)<0MV3'x\j(>%qLfsrHr^DvxVMpRhv hL\4/4m-In
+2Wƚ`$ymMj5mRˊ%UwUyujnTӮ}v++++99yw}A.\WZ5ԶUX1##믿~_p_l/"A[`IjiW20o᭽u#_,3ݣMJq-c%%d$Ej]In4jPMf`ZYq".c#[]9cd`/)EhM?OIcrBU)o	x^o1`4m11Fo!S|-F]W
+wt2w'IO!b}u"5{)"Lg&fE᪕
+s1,&P"+M]559iIU<f"NZS'Uw;K?j~񢻐-:urқ- 2Pk͝"pՔ1YiUf0pU.XL뽂8t"bUygzOЙ+	o00up# B2CS2;U>Z]$./bm51R}y#2OH'JQVt%
+M)W7q(]*-~m<>Sv sBJgiMNS}Ttb@	I+J`\.qGz:eTZfqKJp`dn?0myH
+a"7V㞖|lO`8ZoVZoB΀,lE~}/nʊJٴȷD[rM\_:eWhjt&֕FG
+I #9;6/i2&{tinK+ ݪvM5ͯիW+77\r_tbwܹs\#}6XԧEcOӡJ(Oof20󙥂ZNGn6 Ia͂WA c9Q{w`rgz*T$ɞ	ꮬYrp:Y",>pPÞE+ɍh<vh	"Mwb@3R VPXˋxZ2U7ҋ,c4!MZSO|_Rަk<uߦZ#1Bx 3~`=Ęgx. ;|QjAɗ<0&Ԝ
+XsYbidK xPm%ut
+ӫm.o뮠Qp3ZC?Kq4zfcGw=p9>o}Ҏ0p?. tɳSonHqt>il|6;zAgD_2Q	btg"x"Rb6%%~lPYlh@;E|j"(I+ץ"$n2M<^9'qg4ӡt!p^;*^ߛl
+r6EoAhc|WpZtOuz΂F2L3
+k+q]px2N9y-PhAyrHӫۢh|׮0>|>j-zQ]ĜfZGY~&cGf6y[_l	 MfyI`YEi/=kVYfggTZP-/eٛXMcJ(c^Vtٺ5awɁ.]:sL
+
+|u뭷׶8*GPᴺbr
+~KV] P*I:Hr&rHs/%js봳JK20r?C*)	XF#
+REZM*2blZ]V?Ѳg,wdPZjyvs/U]=Xc'qaJPЏ8[@+T034t9'ż ՜#)GO9bf;xA%%s*xh帎bBlW%w5 
+/5S/[ycuM|9)a%I9&&/ f8..7%&ZkܟZ8蚖,f[I-ܙ
+sWҏ։;۸_v/0Dvv .[p_ZUw&H:}NC*tR寥q#|~YVS`KL_@A\O E1YE +#(ˎVѪ']ZE]M?
+k,Ԫü[+cod.MՄ'K#xVgpPs{_v'?1̦h:`kI\dfh 1-hdV.%nB
+t!Фk<F[	8[9HeyᕷьZ8cVpe=F
+eNYUޤ1U\|cQatj=`05f$>B%?]#QKJu/CԱgEY؋y/@SLҖe2AUhLRDd|u	0.ቛ8Bս⃋v}v_'n>{aŋ_|7~mNv0t}%8$x\KN|Jwl1a9I CV[#w-w\ C<HێM"sOtv*ݪy#	|x6=Hj}ٱcS0SBSY8WJcqiU+[u=$sexb)iZRےE>O]//
+;
+;У<X]Y1$1P$HsH6Hm?oJ0PkS}FYn&C2gPᤵ~M. T}3n'	QG2⡴͝bj݊[*:S]g+^KqMm+p0:YװNausxP)|Vy.ًF8T[NQ̝,AQt͉P{&$Eֳ~,]vL8<XAUZݵ:Y!(e7N7ePZsx\ {$[Ppsj)G;;=	nW@t+[x@=$) QRrxӃu[L[]|f]yO56)p2Z/=xVLZ,7)3iAcz($.\hoUH%wo{6'[3-m>->(lMR@*7 GWW|,xFyh*ÍSL%8{mB'`c]zxcI6ւSX:F,&iIV{rTM2Ѽ}_5؅>=ٳg](ߵ}R4o7_Ύ٤UȷD.C̩tfĈb	+d u{8'h(n?ɿz`6 Sly۾ĞVa4mOtـ@MM!
+
+̑Uu6 ;%MWbI0hE{#ȅ	gq˭JOt}<ZZb#e[z9b;W (i,]%^ۡ42-]%U~&ӬƮwՂɪN>l`?t%Y%R6NF#'}@a7AW-4n<.[l /yC^q7 SV`9|Ke=$VTUe%I_D-Z9ˀ>T7\'(Bt"TcMF2xc1t:-#,5(DҪ!dw6$+t-t!Ad:t^&O-uNΓoZ
+="Y(\Yoҿ[xUϏÃdڌV[3B0q0:-R>7C0DhI򁟏[<F4cj$NA;ة1E7뷔N Li+D A},a+nOݴhGGL7o1oA@V-6ʟ|},ObGL^MMP$#gfAs.y@-CU%EJURD9fVnU ?"&5ğM{k_vܧz
+ ---?5ܿWc,&-0H-n
+}
+V eCK2x[Ffg79bM𴃻N?oigKs ڻk`ʖYhÿȂL\pc5JsR_(c|<w	siASr'dZLIlJ*䄵4ASc3_y_7EisV{W&7|Y}ͫr3	g}]o."<Q0s@Xv><Y9r_Xм1I1^iXfCe1&I-i̴f.޶pg:#@jd62:PtP~M8K]U QF۪5PNj1,1o2UKMTbRv
+.JsfsI|(2eL
+rx)V~Ta-"]*5jBrt񅠷@2cwN?;KgAX
+@{bsnpdy #OH=wRD!ojyrٹMJ"*4c?dfugC+aD'mA)@8a1¨9WXZ8rzY2G4Wr[ GyqV~0G%y@$\rYqq\Ce'pSRLu)$յ|$ʻ.zTH+,`=",U5 ޫ$RaZ^IAT".ǿ<ogTY9O.vL5ͯ]mkժuĉ?R2&fx18!S)#W?,I=6Y}UW~ZUJA@TKYנ3:ܳ)JL:`۠0\~juu­yph<USVJ{y9IC{]wp#:H4Ԡn,6TWET8Rk ☘櫯:_ȴjV
+m{Kg%g gE@e>x$W|R} D椩ileCM[J`0&]'JękĿ(Ewqs J;iR/'Ȥv妿,,UcnL[st]xя/Zsue{2j=;'Rѓ6æ)EdfQep-[/ɰ?suVypfhACp\YM:ḚKմX~WWsUa=tO  U?zz9Qd9Kt豩ɅtSZ.=λt^:gm:*?4{ &<!}-3lz_e	Iqv5nguN6fv9ہpO
+T^|3O愷֢B-ٍac65&vF;LȏxI-oWjv.Z1$;ǜ%CrW4gW+GwG>?Jv{eHL2
+L4{qM_n({Z5@=ET2
+թBU {I]M~@Ӕj{#^uHS_)J5:z5k233iٳgɓ.]jРATTԂ\~<%
+M<oykԨ	D8W_McLa#ǬLfFG}1(JG~1^ʒ&iA0`:?9X9]lk!/ 87;هbۺ+m>DK&\'TZuer}*ղ*`SHVoAu &;o#}bɱԘ[6ű< HLϙ7zZK/3w{VdNhʂl0+	$mṇ3_Ȝ$Zg]4CMmr=jݹBHNxI_|'|-Zۄ2>R0ֆHs{9x5]=?yZjݵ_^Rpهz%5y85ۻ")toF#[g/hn%Bu,^y+Iqp1Cvz}<O;xaM
+p16J`?Ed~ S_L㗯G{|ssv|[\y @^0<_:G/sM1<Q (#iyxhq$%Y:|/`xPگyG#gӒ׸< #EuOM Fk[>1(.P	Of2~yϳ}b@ԦUU<\UlLDfI)d-`T[	(k,SaTm>̖/nsJW3q;f]Aޚ'=8N\aky5k'R\d牯." 4=ᡶe.pVqk^YYYԞ>}ז-['d׿hR3h(	e=1]Õden+h	3DY14CG~t^	:́*.Vrq@A
+¶p7qPzQ B[L/J0`5ea0oq38i1(lOC 7[.]J8T
+MJS*Û`2C?})aIn6Y*U%g\o E9n$ZpiUTHŀ%fY޳uf^~G~oW˕ߊJRGOOk#%o0V!,-^(u[-Fv45ulڝZ{@Tq~InԅŻGnd:pg>X04kT-\F4.˓io*34gql)ĉM(rH_kjLuC]QKtU-tf^\GƺTigqS[H[_5wx`kփᖮɊs?d$t,=YDI;I:ޕQv=}	+<->B8HQJ	̲L=ҙyhXe^H:4A*!a0ZTy?ЖޒSgV/vx0׀E ws6P`+|0->  ơe4i@cϽCpMz]V7RH=9u(|N	}_e:8>p+y+j{Cx.ku.,@]rPL iMASP+aK5*#N5oyS7pDM,U
+"DүjC-9(3'\T<g^~5npV%}5s7oE/Ep`6ALh-UN mXꚹy/ƹo։Ў"iur-{ze
+]ꭹylŅ1Afur swТa߬*oA5D;8Eʒ+hQ0uY䍽ۂ6Af/!R,1AD0@L3 sgYڀSKpO-ȇe."h&L4_`k2'i(!W!swu#`O[R-m}{Bxq:͜66p>#q?3{33AK- 4=nTӧ;9oٹ3Yi8W/E?ҳu/c-,EOѭ-qU-Zg	Jz'u;@ã᳙{1MY(FQIZvYv+ű7T	ț}61"A456^ߟS5w/	%LX鯳[@qg=W҉O'~$w8f^ɀD䀏,F+͒)0ԺgF|01GLͤ4uLW\-a&=O#3Wًb8:ޔ
+~<]*0JC?ARy0\d-R}/B`9<)HELYgپwzIu0Ghj(oVI{Wb~0t&sz [|kgRID
+VO,	qʂ\qa:]"۵
+3q-$rQ/ŉLP.#J5oyi$>,\@TȢb`Vx~L(т1qQPѾ_%Iaa1_XO	jlMGڻ;ڻkl[mhkIjێ|{`aB&Th+܅Iy44\݁RpjFH{DQk9-am|Cs_8C1LכRGtytQm:b?	]nr~ZywD޼ἶ+pX~Ab1(/ݩXGA# c'le`y=A#6Q Yeְ(	6zCG-;=M`i-w#6s
+8Yܕ ;;Л*?Ovzlgq88,mJ~Mh,zppCC4@YaˏqoFBQ-b1P$3XCJ,OYʦ8I3iNS8&'~о.;9Z$T.yW:O9O:{]	
+V:h ɅΉ9iv}19F#ATeR=h"CF<~Tq]J9cީ{ +>Ԙ[x@0WwiRgvɷy<t4dGS0Ƃ| oe~ЌE1wμA8 /@H)9m wzD/b{^sDbTJ`:	.lTC˺ QZ.f9Wxȶ{.MRBW)T==̾S2<crWvC)W-/J .mSU{2G|X}_,4<1Ax7F[0cd78&)O3AXQ:`{5Q,0_u.`clls[ *v(IZޗEF	|a6mrM-A2+5hp{%VK(cAgA-<ui]C1ReeߕCm[b%6a=Bl:R!Df΋1tZe_qN-yi(d1/z^%TI\Pu h@a+w6Dj~m,,ڔU+4 m*HzYyr3>Xb(-:N}a0k;9ggnz`-P|HY<ʦ7$E78iJ5|[dBh90!"NGbs]Rcq\jP'0JjIe\Y1|˿^WѠ]׼\LSH<aKgn:78{".?JA~mOlr,kRfVnA֩[Z^`Dtײ+xBiNxTb|$7qNRSyqWpkJR3r(ۥqt*+O4J0Vx#HԍYk7FՖ)e	ÎQv[[kyXk26ѐ"%vY`ŧJ[SDDݯIsӫ瘖p$҃:UF+ +F=[ƕ:XTz^b &Jÿ8Fkk]vۥW^yʵ׿|Ѽ?O=kI3eR&f`Tf57	O4TZ;ClNaQMSh菅EYU`$I/;hLK
+/=8YWxԄ-h_6{Zmǆ9`}])/{vXćFRYć`+2:ikxh6b^e& T2E;hJ+A8bx1g6+h)F7"^><QE]LToy}nDc|0#S[dg͢ݢ:T wʝȇp`)WC#U`|E/|yg:K9;Z7f^ o;wJإпޤ!oZy>-shkxTlx bF[0?oRTy';Cq\ܔ*bޕaU5Uso7ytŨJHS#TԲ{v$3ϸOxMF"pz^8_;gCKgs{
+hԑ&2wP9-X%4֘h25#|6}FDhߊ!}q5a&:^w25h͒8ChLpfɋo1+{RqC7l2kI嶞k_ |DyޛFtT]ckC*d@P(8oV[Z9"|d/7k2Wjp6mG41S=y)go*:\
+-(lY_=VVؕɫ{vMحWޕ_SJ펛P"gR`&Cf OHf@
+OM<.c=<3%d$'Yx[g!,S9zO+	vtOU=;NKwj^l-#X]R Uqr^IkЬd6fK8,cI//p_iAcp0,P)RT.3
+B.̳e
+e|Rhs2BKC"9a>LŶHJ_VxbY].:XO붾x&pSi~+%89/ ;pr^/wWԯZ
+MhӿIie@M|3ӿM)9:Yp@FN4T+h@QrV<pjkE~YjsgLlzWj	G$X=v:,ųЍ]ſ |/ⁿXxP{Ep#@`Xf@N$
+ϩVVrt] ɵ/aO+n+^y3> 7{xȌ2;:[ gf$.;b00 Pd7Fmą5ړ7IzmZIIq|ql^}OI*zФ)SMVFZYC7?>kNx֦sqx .̘*w@E1wrExkS@/Ȝ}<ޑedz#| vبU?}#X0% kej&愷.ވxdT2Nk-orRJ8o5Ѽ/'q,̃k
+cdLU`e˖E/G9d%IKo]܅8|ŨMgK7/	0e,i>EIӪFs(	V{M"Z*j*DUK 5Qu}DJcY;vKEÒ@Pv){JE!IcY]B#\-RRG4,g9 xarÛE5-OPSu+5aOg,dsg
+BuO.'OxTJ*mux=K:|nVpZ$i%4;EԻ{:]ɿVǩ3/HNVqzk]+dH.2F+w.XW9cLIgu:mܥ*o~M^q7A.Z ekYO\P+w`R[@Jp,y3C'zvW0&VB+('ٟsMRf$mY[ῇehyߧ/w_Ϳ{)xe?0@sXY+Bm)rV?>h:IV\J9-hJq<x)Fx?퀔L/G_[u"(r*o DP/r%qUHXȳDeZV_Z*P^D.`~X>4>n/*Zˣ#W{쀦U1x͍xc:MOC-LWsW+z
+j6] j!zHZL^i(_5'1^5Ϸedyվv*U߹scǎD*=EÞ<-RsPlJ@.Kwx95p
+ƋfcM; %FO﷖o:WX{+F)RCauhjl7MN1dLPI~ݢ4vfT[05օYv*
+q=Qyg
+ɪhl!>k+vCpdhFٖ̅h3&~SlĀ]Ы)}k	M`j+k9]1>Pq,gG¶8vLKVʋ?M?:{\Ĥ@CXJM[3.m}-כ[Ѷib|BiMzșOapX@.h.	?se<l5hnnJO-Ǭ~[L6mR;G;H;<8A#9flhzb16	-yoj'3VPWNYs/])iQUtS1t,֋t@	zMӕR F+1mOsGV`:<ժHdUy{FkL0	o]ʸ-oU!	o}(}= -UI&\D/G6'eW$Bv@F+857ۄOzR(tR"cYXVP3p3nձ)U1-qj[2'? 1-7_e@nI%-!/JRTOkM&z}2?}߿*G^bŤIbccի[ګ/Z^ h^BZX~0%MCF|׿9d84HE#ρ@eMiA#_jHCVOA10LX* _8Ho9aau1xM'_=al8P+ 8]ܽZ5V+hӒ7E{+$҇z{NArUr_4~"E*bs>j$UoXJV[9mpE2>0'FuVL˃hX@ޖSP&b-TRTRHoa-߾/3M1}	JtZʕB 1i0Y@pq:_Mq5Tw<AtpdKkx/|`; <6p^kLPj89hvW\?(#֕T5htN%~#Q~?TDXhߵ D^3,iM^.6)Yʽ2kֳh-VǧK髀Ww-	Y]yNd:Dڗ\|R1@si `FFx&g/Āby25h7>9OAԟװT<e-xx4ٜ8'YFH|GeymY͋xުX=QUG D}nwUCቜ}#^	ZfL+ǡq'yS%7r[9XrE_+=ʏ|0EAc5Xj_SƲz'`VE=2!lW	Zp!n޼*	kZ0Uޡ"|qzp8/H֖4^kfKk%(lYt̚	`WޖԒZzDUb%k[;B/ʹZ_tgi<א|Հocillen`[sJ'zP+*X%k0mp#pIiiAc>X$%f23a/ƠE5`0`aI`"oyd`dI穥+un_lK_dPj+_ YV%8-ݙJ.#r}dٚu&M/8|9i.C{{$ {)MGhnɺ| ڃ;?jWBF-As"I8>)|1apme|~Okt(d}&ͳ$)gb0x҃NHBE&t4M45uzVo}j ~Xl|I?-T"RE~Iޏ%aRZILL*BdZZ*4#Q0O	Poå:Qk-ʛ<|ߚ<&x+إ(e^w8&麵!sT74Y*!b:,^0Z3lY ozhjM-(E{R>	`NA;X>N7Cg0856]vc憮#ؒ4mv+¨16]#,\тctz3O|ڲ'l_?N9s^eѶF%1oYaq#AgN(^2*@JMlyhw?wpCjaUxM8ca6HHc~) 112\6CNd'`((&@y>l7"K!D5Ț9pDU6p尶${:5h3$QVxVj#`X̐iA
+RI*]vI*TyG
+VsވZހ{L^<g)U8TWDC)2o|nb/e)lUu ]ڶJtQuv._-hæNyD4BvJKJjjYox2*uΉ
+<R}7/8quE`sh[	ed˵up
+;S9)VE6]Fk!-=%eZ.[m4G
+b{G~bAnJ`i.0aKTaTmL+b"9P2"QIh)`JvKfPWu}jwЧ$>dZU!xw4&iK3tMa,	ӣ<3Z,ϧsp40/!P-t_Nx[yfx(-N(*c#dPkJݦ p6v)qq|µ*QH2."`*^>5^)2ގ⸨%w28$> %!pwHgUIOaM*7'a3C{`𬠱:Ԟ۔q-bؑ /hhn5=-qy$ĄM
+CgW/ږWUb(Ni}cSB3rQl5>[Ax>g%,h-V7<tȸJz+=a*̚n	V31[̎EɶsWthoLi7}2pRٚf1b> KvG\-oVFྀ0F
+qYX*]\pYǄg-Ӓv>t{)w2Q|b3Lwlļ#++$YeF8S	RJl/!L86ghUȦ8`0𶝰W[h/k_ :/Qx;
+`
+M,^#UiRjdp@:=uZ-ιڧMlkL|QAӀɪ:.d"n'Ig0T,TzO=&@4:իQj;~+3aU@ ZQo?K$ެ*dl_z0y\<T?Visf4V.{$CO7%0xe?O ԊjwX; Ǖ-7	G YcK:E*>pz5]*]XTn&68ٴ!&Yf3?rtząsmU#k
+L-|sLE\<VɚƱ?i	MyG>&֖8 ࡉfM\Ɠ |iV	K̳K(#r2?g{v
+WXSO]-\{2x7ų-i3o̌q~-wV(Ca|r?C3c|WAl/A+1x-=-34]ISM42	P-,{L/nFebK;E/ʤ4UZW\YH6BlP}ii^I~K0PC^ɋx200)5`[2/2fgcYݠ-Jhҕ΅cAOdO%Dڨw:TNuo;=n!u4[8ӓa;?m%x
+6
+&\.ْݟ+mΙ͏fN>]ʝe1/݁β;LaCծVq@*NLbj=\#}t6۪PY	!]kG4@@^KUrF4Jܪ4"WܦIN2:k"]`㟋uv@՚'@<0VmT0wgBZm; /g;quƵꐟVl},][I]̇+PO62^<IMߔ<P{Yi=аL[(tV.ާsZxP+<gfSojP
+sꂨQvثXriU+ZtvXjUdguR6#뱃nxrklWi߷ӕAW.{b-X͚5P7o^dEF!UR'ag:#c$2-h
+-JKkY=`U&Iiܲ'Dus-(؄J~1`dѡ1uӂ@FW	dSZ3Χvvw%ъYj܅OiUҖCdNZ #Er=s&C{ZUoa/^
+6pR`:Wh	oF5V{%tqɰ+%OdLk	4G"	PqfN`eh1)w,Vk=6oOlD;kɹf/A$4S7Q2+au.|h~	;phUٖiqZkLtfOEk.[u*;#?gl-C«ʟH
+<*|p-;J np߲!?juzO	}Ѳ2CzMaAF+VgdsGmơ h~~WY_NH}|YU2Bl5e8R|Dgn汤=yV0Q*sKL?峞g7!I,z<Pykx'|Bc(!	Poy$?.m$4*959v_|4U彊
+=2RL#7B6Z2űb9]<bٶ@luިhN-*Eork}wR`-dU_*C4*dz؜Egw
+^5|EOA٦caF|3'L0J{Ţ[15>;1DQ]=>ljB<&k̑1 k?7DMЪjb`3Vؗ2"?u 8Xu*[-'+B+-1i*WqƤkLǖg0{柰4nvk8q]fhO,#]md~,\qqolT`Lm_,LTB`D_1ǅap`p*:N֔.]jKAPx6,A7)3!rC*(2M:JФ0Z@TĊi׋
+pFIRNb,-Al_D=gEJ|DWJ]opwU$sP
+Jx>vī QבRɴ$sAM	nHZj*@Ϯk([:_)L_#sμ!_+BB LZI4WnDiM)6*O5FdBZӃQeu~g$[OKcDQ#P%JYUΪTDQ-]it=B-Wv@法suvsRM}>/c*'	OZr=kZՃyKĔg)N+jS3nu6`tI	R)_2#&p<>ZٰOxeW-/z
+	PxZ7_ř"IRHw,xm)g-T1cUV A,JM,VLqsU꧵{[ +D-#-Tʝժ7\ IEOBL7\	Js>.%PIӝi	JCx:꫗W=rm[yHcbi#<[Z} hIozѠyF$
+C;>0\"vLY~mI34,'&qb@az+"v-Ъ1M&
+D#;bU7ZSi;XmުO#gbByOaᘇL#t0 \KXHy;w%0W-O8u5wqڸK:ڛP'SD_ķTdQVќ@"^,)Rx[HF1Nv˼sÛЕP!)EX)U+s]ǰdω+Eot|@±Sĭ:I|*|'RW8*d g ŕ2ƲyuE^*jtQO,!@uA!}˰{vr |#'ihۆ2W#cيܾ*NcFk Txp_> &OMP{Bd%SEtj̭_&Z͋<bvC\gg6ޅEJG/yV%W=,Ȳ`kUf0>rpI)uF#M15w?]t5h'(~uxmJhk{w/z
+WkQ)0>*d鰴s]2~,3*/Fa?ևU)Tkg(	P*t·mQجt؛Eoeg؊aX~i`G.bQ٭˟.`a='Ysj΃`tnGɠh4a1k Z3tN6Apv%;_ZiDzP~KoJ@>	gRm΁V@(Ze%EGalQmg)MŌ[*"m^*7y"-h|sJС4ugwjSPYmN[w讷|¯`KJzڼ=]j]Y.ݞdX)r$=SmAVk <
+GҤ)	u}k,3
+HNgAt+V;W_ȯes( yg\3s?h9 `GK'ӂT8Ke5ý0FXyDKYUȋxޔ),k%^W
+t1|P=I
+ScI|>˺d-1&*|ЂY*r@k.GJLiYn/_:p=)OV-r)ȭ1%۲
+BmiSҪCzSZ4-x^Q%jEn7ֳb^|.e+npIy2r(.^n[>ҷ
+\]0Wk!OƛY15
+΍xtNhLW-X-n]֜`ͨke=}v[^R5+'ElNj"& %0ʿ MCUa ,61Yp:HJ(|W_-?cU>VCFw[Z#آj7eooX{~U=l;$k.zIn}xM*ߦNCQCKTyVcj
+yL:36lEY9
+Ț.7>4M2v`R[GӚ/h:<p2):cԔ|x,|-,2c1YypIwӁ]$PdҼ|0l 73M>R-nr|kC6j
+p|adUVm*q06nDX'\VfGT5Ԅ}#@{yG͝" uc'.kΡ[
+meiYչZ>MC7D:+E@|W%<JЏt-ͪ&ZV.2KjbX0KIq
+-jEd颎uI)@!\)Ph?-z-kݡ1k˳\-ţȅj!X))"pa'1<~s	T]$Pjf\XnxsdGTخlz|)\>PP$DnKI< 
+j+Vj"lTW	R٢ъ/ chCRV:"	bbD*k}ʬ5TT4(S:6,
++,{Kfhό%!6U㴃tedjp12q 8f tjP
+in߫}_=,5%0"Zy7O/)c:2_WJN	ȯ@[V»mP#,)#c(Śi9M@3I݄mXK&@R~(LVD*:	Xc-o ;KZ.i4O&NVnP@mw1@`3nZr^`@[
+qV0$jUyZ脀3-21X*)]MBP0Jw sM	Ӛ!>ȘM}YJ@bZI^$qaO(Θ0@[6rܤ.v6:e"VxnqB SZGEo4LmM] :;IW-G'3U+9)GNizbAm:Sn2!_r<$▋k-UJ@|ķ./*@azAVw#L	}	kzU:HvX9yR&x3TQtqFH,䐾xzQ1h$	ZMјDBIC+[yHlMΝ4bb@1W;NT܎r\.XE<my ű,k@R+"r'~@Nrj"6do367)'gqZnrfVAՅ
+v#\ Eg>D=*y7V%qͽţ`
+EkCTn^M)^jt\VQ RLKV^O	}^{Kl 2'hqpK41(g7(s%%] z#ZjeCv=UoTZhpS*lMր$p}Q[d2UU~Ĥ:bI8^Z}#p𲽝JØWÞ,'[WNZNfofm&֔ Q&	ܹ#JsJ/R]1܄	sN0	Ӭh߯qZ ˽ҨZ="h1=:D"wL%pa7( 12\鰕0GS3F-Z
+s˸oI)AS	k.yu
+W(nxXԖ%heD4msºFn `+FΤnMճH\	ɇ>u|	^nΧ	PT(lbUNwm!M@bg?
+	 @_M/UA 2e~/D8!iF]ls MX(9T`.q~ |<?>Xx|]/_߂M+)_.s>ML0VNTP֬߃ւF	|L^U(.QVNڋͫ	3[0Z
+ooyț_> 6>ZA9*f]
+[iN.Dc'RasT5Fl]eb	8d/ӵDVEB<mJMSScne%w;TɽdÒA4-3]ү+U.Uh2}_F2( :3mɂ},/b^a{ YYeiGIM43Qu̎9"9b@ZPL$``P~y|Wq[*Nu7ֳxrXF_Є3_xΓ>3̋$ڼkh:TC0}b`qy݀0->|@kpnWjiOFZIXcZ'ӱ&v@I9 GPtiZ.taR$%,pY	f_@^7MnE.xԧATXa(BDԏ<'Z_]ɒo;Z&ާ0`&Mq/b{ґ"[ӧ.>i i"NMzP$CDxWwBY	,poV$*]EҁD#l=k}$GorYn2\=AԳa:dԤ]meSϩ.jк WTğj7{5.`HkL~RY-G?́N|!P~Q?󦁙s$::Apj*9|Bq+S+5҃4;> DΌv$9[ųVȈ
+n0/
+q1Ldh8>PjJ)='LCY8oP4>7 0Jv_x%hnWt
+cQKY#U/=c=fň]8W|`:0āH%_Es )b
+8*#?TR$Zva`{X#*abO5;+yXi;%n2}4OTK/<%M7$
+;FGOɚ><g񄢋w(yfVb M1'q󴤻\_V:ơ>(,Q쉋>4{<HP4OVPL>QK<cJs*-bQQ)9]d]{pVD6_z뎌_	/LvN:vV
+T[{Ca&ycgܘZ9+/W V̝ F`h5ݳ{*~]!{,-u:& ֕T=Go\k)~;+ЊLse*s)r~<SV3@dg9GZV\εcvF#K84/E"6JMkVq[2^LncBy-ñ-!=v38I_:Eu3!o9'$Or;wC|Xh|KW*1ތ@:
+IXk_䱪cEp͚XTwıT1^XfQ«y@[ɢy{ܒ|`,(˰f1`e Tm_#srWoRJ=0GU_ؚwX`.j"0Z]uxx vK+zdzE0_@kY*q0÷!˹g:I#2пsr4[av }"zt/4l,,ׄ(k(f;gԬ7_[vJNQZ&+H.O*i+;mk^,3'̳xoz~cbRT]y]%4dx`v43x~قA Uٟ_:	ET+NS\pfdnoU9(S5~i6sKgpFu,׏IJqu)SU$i5k+$5ۨ'a=*1ښgaR2[:6dXv`\-g&jec7EVs-H{.d=;ܙn/=7URNz%cDXC]tþճ~hV(ju3lȋ+Xtqc8gJ!XK.Y{`9ܮѢy̓pK@6앗V;(Xe2[8c i JOK>ۤfN=ͯN-MmOOz\T$rNxʅ.IEy\>Mu,47(;CjsCjkMiCGsTN:Eü.#c>Ԧg*1s!jh[WO9/[k?S62o
+*~Wp#x*'C&[)=:yݝ"4	!®%4GB&=h1Qɳ[M(}4c}}h6Oy||LA7# ǩMZQ?eitS>[j#atU ~ \ be)Q`sWFӵ^D\Bd-7OPHG	lW]xM-+WfحS`qҚTҿՖM!==YNR(tܞreN@v
+#f+`9׳mcxklX!Ց&`x 73@aL1N,0JZHZk
+;.㊱`+Jf-&5eyT%#_xxVKjld :3y~23z]Q_z3"P3z\ 8,^ðw*GP+Knb3_ 94WRk 7pũyO#xJ hI񔤳5o&ĎZ/ xnyUr"=bJCj_%q-B^y,F[Rx^ByOO!WݐZy}S0;9+D+TU		*}b(''I[z5Ӎ
+6W8:JZ^Prp+q'.pv;gpsvs+QJ*\оP[yUbW.g7պ%CYB34l	ŭ@adni"wC&7.5X|@Ok@zXJ=`siFS!yd9(eN	^рg"iippH;/qi9[ 8qrfM~:>札3xg(K!a-g핮vfYr{t6nE&{p-~+^IT5dN(i+)])V{SHpRj|aR<krj_,<V##rQz<0~g)M#ϳy=FoC_0x
+Ʌy?;,VS]G{7LQ"@
+TRoa~C Iפ>0tg&Y.	ˌX;<%A|OHA>)AppYURڂ.SnXuk(EşU2VIi9Dnur<4z$,[$uYP@g'E\!٠7?i>?1dp	7~Zc̎lЙRiX:KHgt+`0`#mnFl:s.̞$]pvfQnU?͂;TnrBEPo\s(0Kw )=F,\)cigZ&&]JzKe)N`zH+A5D5JFhR;Q־Wh:']Ԁf$/ sr׸mYz{/en_*<Bq/3`*	EJ\/5%(:bjZQ@kW:irò7~D3(" 0U^;"H.@f
+D;ÑWilTSd2!KkzY2XU06a>aP<È-^v_:4kw:YQ%"W1'g2<gLExnoxCOTrڨܞ֬>~'Fv叞pueBN( H5yXH2Ж
+JF>O.XWGuJZ 0YFoSs'UrЬd7lv~;v,< Xq=
+ Qk?!e̎sp{Y!q,A1Y&a\`{Uڰ= ż+ئmeU=!mƙcp(h	$/Nɣ&]/K+t2`3rn#ᵔӍ\>?oE_tRp1U^Yk8Ӛ|02X["BIui(y&NJvǝn=||ӓ=BDN5R|ΒiW?!YS@k;X#W.y%v jIzDQW()jK=1߻{Kxe bMЪ<z
+"LGD(L-\4^mxfODTR3!]ݣGUI5G|U5w)GXr+1_#$pe_ޮ䠘qne$mmp5JuENE>`'y*Ǔc'9C1
+n˅W4S:"<;w)LiAG#pg7f"Gл@DCQ-V4`>N.s3E-ۂwoűGd>yFL<|e-.B[yǆe;k}W8<妨.8:~nHvhd.0$e\{vw˟"*Kb:1ۻ
+EP-VV9wBQ+/3
+hQ1ɿwpG=8P6#pHT|lpsTCCc<*!t]YU;4k9!h޻rՠ3TvfYzkU]6zJqXZHuJ-,L;|ra@^,c0D93Ӓnb.05c-V.ٝ2ΜY/@9.<Fc6jed?'yxQF0lPYwTE(*q:"
+`}nXx]e1/si^螈t-HYdo^P'4IDb Xu=0  _)	lTn:ѴM֫e5˚⢿ay79$IWBcMe\֣"AqJzA@dw*է'=aD%RNZ"G[{5-_Cr\WֲV)q,W]X߶	v}m$H^
+D/Wq^C~>FGv P`eLYSeB٬!N,>PA/Z)=.h8<?< 7:i߃oj1wIB?U4Am  ]tn``
+zf׊愖XrQLAsrCE(j1bR;kb|aA51kV	`#+UMO*9ۆqL^<Rm>b>BR2kPra{v/@+S <!Y5KNTr;f<p(eXbQyG 8JC~ddGd(rI:<]2"'론7i洜`֟mPǼea01moe]ŕ}UNus68#ja9drj$	\s3 2g'NH{y<a	>kv8m?|0.* # q_M]k3+#j1VU	7f#`jZjqʤLJ?[:jEoHeWC}t('̑7kE2bKlFϔgՖz|=prW*"o[9up	8VJ	VrQ*ΣRyԡW!'ch4OʹҹSWЉ-''q G'IvGܤg$p3&Aa.TqPooQ2uzg+ԱS^{fU3< lWY8<_IP9]~͚TS RyufBhzuQ&~ 6Z'yZFltKD0^;"1d?3×vT +<#lٝ-vڃgwψظ[ +qYs$&)޾*xbpz]|cScnk+ffRA *> kfŘ5JmEѪ3c(YQ2,jFumݻv/Ը[0\)M10|Z{hUCT{_Jɿo@f7	FwVi^Q':!JjʜdÏ8!vd+f(Ȫj1̇\ߖ҅^Ƕpd@A&ƘX!*T#v80^|<$`v̬BLU-wAg$99ԩ(p3N9uwF"0kr)?볓^좉DI@B7\fŵ8֡#G&]&9H-h!@g%x*sRMJjG^
+%ҟaWEv#מa6ɭに S
+2ED+;GD~mX vE]߁riI7ж1~cui`^8R||rmdzLY`.]A^N~>.IF8u>RxlsmǣzwUN{r4==WQtmz~5UomՖxvQ5KUsqi-3pL~H6"	ŭ  h/LGd;KzS4tE?" HYcoʺH; \683|v\aNǨeK%9DZ xξm.!@Zu== :r8nnQy3ӚfE٣<3=#-q"jߘE|u$` O.VK83;\<=f
+#~:vvSOߓ1|hy]/D>`嘼+N]Myq5!psЬ@-gm~X]xTZ/fl];*aL.,.n 	(ebIyvU,fհ%<slP)h؞<':G_wRaz^*_*wU2QEGilUw1J0ylvy|n<^T4iz(m'%cvMUauyIi@u[Zwmj.; 4|YK\#Pյ]i,<ouKFZWj 6nFH)k7bi
+yW)qxA0֧'qTe/Y͠bʽ0(0bK&YXkn)X:1Pɂk$ڦ^O%%YiVkKt̯86NSA[baf-xWZWZC
+lKmؙ<$˜bUΫi@Wb$8:~&Ќ*"XDK ٻ烳W`#>䴩E=݋/!?(_⺦R?ʈ:ڥ &U~HS0Ls>Ѩ_yXl|M<@g,(aN)|4#.r8TFN !{,rEptGghFTsYr݉-ȁƯD>/+h\2$L_d+ӹRFVS==<)+nnE+is3`f8&}B0
+H_x7
+)y=0 AMy)XB ܉g½BnE)hb+ Y0G>X5ΚI= w9K2)9̛\7\욖B{ehi[ ߳ "6ar='̂!&pP}ej![@=5*El!,{d]
+^EIE7K#r?pc!A4WwթEY\tŰ[LCZqZ0p"EIL5;J 7򰰀8z҅"t@OJ-6i
+b`^hF3cWٟ{>1\s9ZXҮL]UpnNKbgr~2՗mYzG0jmQt(	E%Sh^O:6?5z{G0QaQ$~MjPp6^ꘄo^;:RM8-x*9mTɬF:̛=+ŃsD'Ky~U;Y3|cؙT9P?X)K^89`c#X [ByeKQ-h6"Ԣ̖ A,H]LoSvz
+-g	yҁfr	vv%gv[bi>~Ci^SP]⶧4Vɿn"Vw.JL,9wpxQG>vw˟ҕ˃)BT$㪑GUph$lƳ0I%-x#݌q>רj+>n5?mx.OV\|adnL@d(2v#2%5U9	x/*Q4'wARN}\rGZý2AR-6Y]K8eW&`#j!D,M Gb-\| DVzYѹFUE0yx\[N*+	O5;`fu.[V{j<[n&L^+wπZ]RDt J;UC0bԜrIʈemCNp9˥c2Rok<lF+"Z,nngsn'2M4;ҭh-_nQ3.=DuC;1ɪݚ{+{It䓿bb7"PR2QS#Isxbҁc+i W`Rs P Ƞ𐟈2#­.rR@I8= 4ykԖk9!y%,bV!BZScvmgGAwxL_U*bA搥W>89ό-]Z sҪΖ(uBхcY>(<rie:Vg;h=YX\䲃!C7~8\՗\z9'=S
+G` 9Cvߺ{9``w8odԯ83!r{i1CnrH@&Y^Vse *ҕ7xB
+c3",ZJd3P0?	b?axϷós6L'	>,?ӡܼ0C+fH7efXT*
+X<K-Y'(E]orjI"Q
+6r]ä\P`["A;M:xG8˾	Na<Z&RQTj 
+FU,FTEN^V5M.'d!_ނ}
+s
+6J?C
+c0#;n>=V/4044:R͈g\*`.'QA9w5"g`eηKu hkdFP<	$u_6|;zkoMtm#fe=B%N<_rũνJJ1!:J@?:4WO=:rc6ItRViEG~犝үOTlx6Z'5ÿ91ON׻4{`	V^Q]Fę16KLU_o_ݔl[a}W)X1D1?l|X=,Ύ&X=<ʞ`4(g )/|-TR<RP8
+&PGzr	-#chAW&{!+f[3x ?X.f*Q-uX+/ӚfOoXoÏq/ZQ+r ;4{\M޲{sH$GO*9Mey Ext5ʽ/7<{*K=x']xאPܞ<Q"#(ZnsX>&⯞w
+Aã%N5v~4R}o4^ҍ(GvRHD8@~BjeV[&CdpR9+U.vcgNEr+e }XV<8aozd4&CiV +F`] q܉LZfX$&ܘŋ(:IhW$SX_q^^ŤVҞ4Zp%}ذW~Uy*slkJ@ЉN%h] OAK0,vb'tR͊P\n;ϭ}9y_A7y#\/mj.uir,ݪ`oB	Y}}>~-;u(܉[3wLLK"U<Eob?֋tSyYT4?2 UU2,{
+Z}zciRrn1y'S+*F>:yJd/)=:)MG=IyΗ_b@gwJPN@
+15``
+l9Nэe|x$15}xU6y\.N;+>{Foe X'ƅ[nۭU#=rM\bߴkjbzY5]"n"s8[n BRucZ~|u\zDΓbo+޴{M.$ 'wra /<<<@Can4dSKjR+/O؂
+D2OOAOx1#E(:<{7F	\3vA;横p1cM~7:6Cۊݸ.h+du2_]hݯ(rd6;ez?lȚQ%mRc/N=$d
+i̽.4`1mR39ԛ]cyrxrm4/ t~\bB
+Nj,tAy~7e>Щ3T:q9(l	/j@7,$8?kJޙ&UXT-AcnoÏ0ZpJnpX-ުe#s{WE`Rx.et{0Z猚VWs6X *RnHoݷRg>I`y-%$ dfx@RcԬ{Csq)@+jD&xXm.q_i;"\È+R~*$!1]TsK5/Bub`_ŃEsˋcĩWCxUT;N(pJ*j"bj<kz5!3
+@
+ j'ZzXZE/GAJ -6Bz\^!qt#6^[i?s~Ж==B9 :S:HEAs`s|G~AX-bP{HŻN}nE*"rLkVO\󱄰Zy2\v0>RMqo#~n{_;`GO;u^Lz7unxEmxEޱw`?c^sΩMveXFFӚfȏΫkρ\1ňD=DCc
+d0 gH/"w#	Xxۤpŕ}7 j+6*Jo(?8I5#KY
+xU2֓HbƧP^phE9*$+]L[GCj?{,5,@]Z꒩MւZPZ]
+[Chט1T*Rb!t.aP8SĬE`='o.Z0k*rK_Gt\&zj\A7(|
+Jެ+aӹwB"7z4bZǝ|G\{@RWòǨpzlK3;kz%@Aws.KzCj%quhSiUId	K58vdABb~Ђ|ߤ4:,vNs9>b飣i	smp1-!G#ьjƭ_m]~c"z!t#Vy6˳ǱAxhz$R3 O.;wz@pr\LĽ4<K1*1Q..tڗ
+CڢEE*c%0{'z@a,ʡAZZZpSveS4_xjiggIqyIR:Tlйg3vT(3OPp9`cz(^EEHJRo]0y&Te
+#rzmBQQyEv&>IS q-=@c<*x+#3;4{pwbdJh0`Cj@aЖ܂Ah.=fPY7h=1iZVPX	Rbc^EZ;i,ZYU(:(hr,KjI bTd~N۷R6%XrKCYT
+w]m+,˷@0sU֩4Igh^HFe-hRkltkԚdKROk8H}De*lm1d]zS%VwIG#~=%ՅY.4%H:Ej6 7۬Ѥ70e0:#;wfWkR?wp{~Ε)p3 bS2~:+ʈaDY+*iaT_.=`2VG[)ȹ^*И;>"w~ǯ	I.pLݴJkܳ0=v8UBf51W?'O^W4~r54{s>Qꢶ<ӛjgL)mb1OLN.+um~ࠗkyعֲkӱV<c(w+	"'>$op^C4vȜ6m+J>Q0z\CkBN'G!q-.s<,>~x$+'_JivvR0[>N?S>L,>3}NMDE1}"IL0[_NDwDUj%~¤~lF家v-ZD5+W<HyyyO<˗?UWQr9pmdnvO*_>|V0x!I%'V
+n-߻Rpɓ> s>O:v5,
+`LV]"KS3aIX7sXc(̸0nX] 8ۋ.Ğ3w`qu"{"9(AXi%/xZJcǨgK<3U0$30G1U
+zvxpftej zS*6JpYIo!z~d_̲rZu2R|[%̕zp'cZ-X񄳍6?xwyVY_ aF2^-()P-,鈑9}8m߆K9st39dEJΠyU-*8!AW>h!] 2.(5eHarNFW(
+E	N
+
+n@TH\%$! 덡T]\Z&5Bk^4̉Uv<7)~{:'/E}34zEC]45rZF;xhV4SɚE n50swL~G؍:{hPZ>0pzACOeek&CǞ	Ti
+sgaċ[8gs/&n58<e/KSC߿0rÂZ=\޳?l0w{lv~SiE!1;dV5ܱ?+zA1).qک43) 76
+s77nܸ={1^zFzO8ᄿ/뿱S{ZU={6&>qp̐NV]<6މ-Uk4CmAJ$?a#Xr9k4^@vF>cc.S|igJp3ïC :ir-g,FVa	^ 1paTnO ?
+?acvڒ^(1
+V
+&0	*qJedAl8,ɫ$FǘQn_xctR7P AQ=UL[c}pѣ1iiΖWԃ;Gu-U^.;8\O+2l 8 I3B8,/:_4QM(hj`782硵A|[S7l`q"zΒ)z	sr~bQUVDKIٲ-a"jSo"mo>8Nla$	nRnT?.M4 u'pb̾F-HYDS˭
+M|"yFĒW(QZ@Ky"ha~roO|FtbLhF',D>GfzVSӚ5䉛4-Ne壙)P׀ G\@2OYg,
+
+{u2TVNmPp 棒W4rL5!UKZVo/H?xĜ;ã&ʿW퇄!cL)3;PQlbhLL"C!繠G"9fQ=1]ˮ|݃>]v~_R3g?5i$xhEEuŌyT͠VĵwV:`p"ΏO,9}R5ǫӛR4DXu+`*A}9 ң7-a(7VyĜa"ǧ[C!V8&,ڨÞʍTSۦ^JGkY`f/N=aMcۤf<tQ2lRtqX(Ƕ{u9,hC:A~N2@Jx6ig1v/:bgWo)ث;k0E7=ΚXuot5:}FP$͚tAOs4DЬIVR+@RԂ̜nQ=&X\jWrfLUE̼ 	
+?oVQ_-ܤ5cxYK`uU+StQf@y(3Z-O\MX?;K'pehi~í?}~x:gٓ!}\137č`}] Ekq34SQgjE)*"(;Jw_,Cc` 7Zwx 颖|Œ[:8˵c,:1K/*nr|t-aAv9t>#3v`_l4^4Zs_t""%I}HA`-nk1GuesIGa'i:z)3q !ry\NmR{v/aÆvکf{WnoZ<1Lk7Fvz۔&\zM	+Mr
+2`cTv^ZQ̣У#:Euę+#Ntז",pMque%FՅFuM	Du"9%!EҾv<o`9X9ACi]aXmV49 {l
+Wݖc;mzEIݭkOL(=/J@k*=ۦ^>;M6Ʌ-윗#v7ܼ$@ٲ2,kNBdgR>'nqEfEw)nh}.Shy
+Π `LQ~\BpxΚQ	VY=vOeU*]G߁tlᇃȞ\!o*ծ *\WhOlqW% Rŗ߿!¤*|z_s'Ĳ
+>w9KHC
+E<4&[:ӭ^*^U[s&)\z8C͂$UV3pS桛ڤ)`nN3<DLOK	Pt8	uic
+B-HzĀKvK[f(wt  /<5|@:*`DµAɏo=9v<uO8.vKF~s).c|O5 (6*%^]tFz+WSz,}
+`b'9f:StQm_`/ܹspG|˱&qxH'
+P&xᳵ{{8x$FP#lcuQ[\A%!*m_	ŭ^,bi#r<L{F洦Y@6g\v8#qRF2{8Ԙْ"̍ttԘKv\PLƳab	>r+Gwt
+*\qAK`^XiW!
+('#jopZ}[A:X ?bOF4
+TR+Z&:*EgAJGݼ{(<tFٹR9aZ6Rh쀬3@}Zo(yhq#Ny;OJs=WhdoÏUdyVio崐Y.3(㳇}X;ȚDt"+a|d^`/ưiHCwc~+,;LTu<>yRt<!KMt>h#Jzޜ-RTdXhːfFopheZUB:6ϡA=n!JW UT	-OָpUgЌS9|'Y]x䲃'&^<MS+jI%9F<k4d3evyʗ# "Q`ǾqL|?s\Hǈ:2>O	nh:uȐ́W-cA!"]+!J'\NuUJ6Pq"dgW5^Ct'c2/]끏ʀ/liNR;cf`]<YgS86*ﲜG73o#.b{_;`]kiԸ{O ~ 6!6SWO(	)7yr0nkJڲ4;FWƇd/<1xFȜ+; FL7[J˓Bﴸeu%m5&ό0G
+(#,<
+)SUwF]pŴ!<N7aaTŐK4u3H\coL}qm#0Ͽ0:9W\_}|br77-vη
+HI*k{
+wen6:e
+McX1HV݄?߳ /s(=bX-~2Jc}` M:^}8'vXL*9hL$wI5i\{p	ȸ?:|:'gPuep +q89NQY6U/ǳQݿ/O4ߒy_y\M_q.p =t
+oh)|~tR%Ě<>;&"1#am4IDa٣q3ha{4_p^ǏO.
+]@+Uόis.""v/w\rQZq֌ӈf"Tr6L;F(])vx0yH,Ծ\Xటp'9-2&ob:J,SwvZ#rLӊ	r!E ҽ
+
+n"f`x9
+7גwE	*e;<Bcλ^WQ,uMs#4aBQk|9OͮVgM'y*`:fo1#*Mv5iB`ߥ< `!*=l\c!
+]lb7<yP|z'd;PڤK^r,jP~m,07=dTyZSmE> OU(9Qɹ9!Y8؍V|*sKu	?WZ~Nu"Z%%u^:%]ޫrܳEr&,)O`G{Kq"Q3 aEW=vÇto,<4{>pB]qu4zU^
+G߼ 0,khVb*?h8@%S[/ljA^&(kRu{n5 	
+s'&+v0`z٫H͜Fb	n|=ǅzu`*?~}Yt/ޢw(}mS/[Rh.SQ4]hzn(eC/0y3<gjOV<(Qom&FGE	 a8 Cptyq} Q2`g@
+Xrl$sW 0 0:vI 1i|z~:rua )HC'9^r@!>1
+RߑVzQO\sH1[ eOqqq'x݈:Tn//4JτPQpF8jJVx/n[ZӜ}fH1s(8p<B,+Uf`M6Gok!U@>kp8p	wzء\(ʰ:&؂۱mνN+N	QŪL('KN*iIyx0T0CFԊeh0_^8QU Ӛ53(>lTfdM1d-IyCR$pʼ U2 ⍩/UJ~f9%/O	t^LT4a+᳗^<'cYdn9i,.e[JmT5(q6ni}H
+
+x$*9C&%9°te~h+<h,`׿ѻQthg6)=N)c<D0Ła$bqZ.\}QylW(|3ld\*r>>/gr+qϞ٠_\7B3[KG	(WsU4dΠ	xNЕnt"~mkR^Zqq9z~w6^AdqV~S`/CXZo^ĒeMU`|92JJd2vAcwKBK<ɯi Ϧ$5
+!xmw+O1]/BM0c,lGG_ ▁@yJpޠZAF c욘py
+}@d0v/c
+qٵqEN!#'p7潏MkQ"!(8
+=$_ͯ㜮`8ɮse}ҹBg>*~>9;2vyN{]%SѤN):1pNb^k42){8Yc[avw߽;cƌf̘u?[F`N8a}ωB۾ZX=+azSy=-+Oi۴F.3H:|<I%'2ٮ#ͭy|T"%ST`ٮ9?4KθbB{ψ -;C	M6υaGw^>.^6	#G?lҔ2ËA.$LLeZ]vuoB6*7tWڦкKC"#h/&sΙI=z.BfO*gggv|%b;+'rzw`.Qwm pYGh9SWg+ *̷Wwa,B*5|$oOA+HV%eRo.֬ۗq˜GA$uR7I3,<bHVK*36xl(r4[jI
++ />H.~Z_*5;ҌRySY<\G^{:^l;㪢ʈNkMK¾ف[GPK,.J׃=7|e^?*A輮%+ck$p]£L)ߛgZF<><O0;"^%c˲]3!XqH  WG"S `ʞ`7bOH'nR3,hH~|}z-ؙ837bN
+kG<|rp(c\!o+(2N}p0~`s@{pen}T>skޮucbm\4f
+4=)fQ]uu`7Z>.¬YN lXQ~ư7]o7ƍ^xn?
+(qgEMe1&fXTpWhRIXH^Rzl,*m-uS+ы♪Ӂoc&;6.NUǟx6&x]T囜m`6yF?3Kmف+4}X8^_>bx(h}.jS3>rB6&׆Nۦޒ{$(BWۦ^ƀN)6zͷNoρ*UǶI?gdYnB~h򈄏m/,քϠgܾw0d}@8WCj%_٨iaFz(QQ4}Kc^N4@QGu2-?60oUbk6zjltKй?}e[@5E0@؁)@'=+Tyy@?29G?(rF]E{%C3t}aMpũg]+^MюrkT}KWjPو[TT\M/Pt1/-wYB7H3%>`:PǍy$8PO*9ux<yZ,y%Syv\F'+K15˪gǱ+ǈ39:([dT>hoVvW0\ PPA˼؇=9*jgH3Y	?.aghH>ק
++T}ރWw7Kc-a1H7,>iC-IsMf;iߘO(.B	-20bQEQ:̉gkkzvvODKoauɨIģZ&˪v`b.ak>ź:x-W)/Twʘ4+ 2nXHl1g؇yf;_v/de{3_-o@g{}-@2y~zk⏁`-d7^*gn/mB$12B<gs3GhuhpeUo#n_K=X/2 7= œeoåZȩ #s{n ( >RX
+S1.S+2bdxӂpV@9
+եIy/!Y-{jE93ц2툩ipۡGZv:k1RO	_ԤF!B#]q9W|fT^
+9mz4CoL}qC3	5cѧ8|ݕ龶W;Ir$WDGw
+wH
+?(%x;!訥Dk"/BDsN1yUP(ywt|(l}B횰0=
+h]>,]etiʲ9$ "y֠!	%%gPF*cd>ƁJڳtWq`%,ß 2,p;o^@oAC8 1}t:>lYj96K[;f^;b?(~W,y;jbix^PXEkcui$YSwxF|c6#IKGP8c;GOZ$c"a`O8YCɥGyO(eݔ&{p6p|z>;cP;S[qT`!p=gղ36?Jam0;lx*>+1P`tF>4ݺphDIYtɛgMwc pfG5[`-JlUwYu.jJߔ5}vOnvUЍ! 	\$5}Yj>
+m@kA䤾#OGqDyYx{\Y<b ]Fi[9D
+*~q{/93=Uz@ૉ.4;'?6&B`gz_j4& ߝ 69CfWǎVjc<hrTzmT(:輮Zq,UqTܐBûLw&oW%5?2_P`#eSMAmN/ߖ=}$毷TX5-L?ޥnSabY麏G=OH.TWBn]?3(l1c1^w<-XXD96'ēȓ?CsZ|$:ʗx<>-ZȪ/B
+ZZry 2O遞|OWF2y{楱ݠ	\1ܓ3;$W	lMG_FȖ"qtpv}8ܒף-d1"a6RN],.a Gܵ:lۭ5D%vN,9=5E]Kk 2]x*z{_;`Hf){BCl9Cʜr1F=4n39 N'𪨤`v\Sz^=4ŬIP\}a1xҴY)PK q3Q\uhV5(Uk@Xa1l8$k*f@ݺxd1*&֌aCmS/ߖթ%uP]4qMCXmd<oOFũOF^z]btfB/djE1~з{#T`ݥcSv*NY [F)PE6o-)E+@LSKql<	@^Þtܠ3gN) %?f{oAf\;3<2C<`.cKQ7B7X+Q^id	s\èΛ1qՋ"Ae֌y3шJ[jۯM-UmR3b
+GCv p\WXc!)-nV5>pz_KOԴ<DӰP		~*+8_?inu8ӛTSz,ΎTBЮB|Z,ԊG+";JF#'KR鋊aF)
+JUlphUr6Ӽ5Bh춲K<iD`(Acp'.Ώ.xA@3; 兊ywn@9=X)uГTtdW//"Y\ؖȟRp-+,J-[
+Y[]Eq[g@0##s{x?daA?Qq Gʐ30zU92˓;xri4M.=Z4W,&Y*Amgx;&Kf`c3#J$c6ֲc`s	E0QNi֦sQs67.ġ	.D!.R{SZjd2"1o
+{NO}ـy+S`XvSTܖCi޷M{(sd_MnҌZ2諸 mp99@K/!Y3X"-/M~XđN òG"\t+h@M4߇iF%S[1	ۮ$%URj7GD/#N,>\]496XIg.`+93>bTnJעܳ%\"";jYڋ:C+U%'m-@ԛb)R}ZV[	_HCNBy^Um{7XIs4_)NtC{P5|',U7= #=2i68x2i-^c{,TX_iU^(RA"`q\[||Atl\[~{:U6
+.*k6`(	(r-gs28˥Ci.GrΨ	yfڸnءѮmӑW8 V0}8_Q]OAHDucbnZ/aShEL*c%/#s\_A)$PAgA6iQdnа8Y}ƘWf@X^U=U`cAjy=#쐧EiAg;PWH!{2Gྰ_L_OĬ;LsA%ޢ|upQ`~eXc|`N3i&=FnQJ+I9#QYdIͼ*à3c%Bfl࿥ʜwyMS3`qsvR%4&@H[|%v1*zrpl0uǓ)`Rcztāw #ઐ߉Ф$b <	䁏,*O]eM*9QѳF׬𝦃CS+J7\Ƹ:,nt&p,ZY/s$Ee`83D!@`q`p<\BF"V-	nפ>Mݜuٍ>bSL:.5t +-_D76K-ʜ/OoS0T>>Roӯ
+D9&ŘͿ{is1垐-cIWP˞9J1ēp9	XEӱ[0`WbR'pށke54 .3çZAQ_gCXɩiGn
+bW׬r@qSlu~KJYYY}bܞ4de535yG]]]-u$V/*Wv)BkJF<R|mف
+l7ه;CN.;,& 5ڤb[av叞b䀹S+8cР[X^NmSn~7&D|Rt>-, tk-;}yGppSG~\}vU]=㙴}PiM@c
+DcZOA2a Vdsyd恍`cA^QMN/v,1΀&{]jl{^2LXޘZyqY;{a2	̭hf;ƼMk_Ȫr{5:niEP1!怘HIHPQ1D1!sjiR	( "ADQ1{ԻU8ye׮]^{0?&>QOD3łs=-&MNcƔ/@ :gLU>2*v%{H.L<dתE#cWMIyzvsg]HT|׋V``aV6̚3#@zI%hƱ3h[Jr?Aoi|uO)igţ?ݮ|ufd v!Ȗ5@d14h:iLB$cSCFžn[{qZ|F-閎Qہ]zm|KЦau?oyA+_VZ^j[zbȥ4<S4,lr!*9S3-2ԭ NIsMry{tНOkr>ZljɹcZ~Uh BLBV@[-ccIO	s/:VF0ySka.BX
++9qۺ r}#%]w|n7@e.b5"~9,Ř_ZI򼢊5"M-SK/JqMNI^ef+p`8? qn3eL(_?S=1PL.L7>d2|7s0јGTsj>^^.evBD>J.;?L14[؉u@o;,
+f8Pc94/Na&T.ж^æM0׃X9*pdcO<檗vN7O1^HVb9.b6y@5]d}8j"tD5́zȯŎb
+_IV2SB7"<8~E}W/͇jtrF{|$eЕ 
+98J|IFy|*-!
+M>`[ILKoAp˯Xy_:$HʻLYe.[>V)OpbxII:1=h7"U>Bo ֶe$a xؓ<*MAЌ.	m[Dv:ǻپ-]yY?#uO룮6BLS&.A@`{3]h	G_e,-ϱO>wγDTAm-+o͎UvZ5M*_VDˤ
+wRLT+z@Ut=2FML
+ ,;@7? θGiydۓqrs$3UK_߾=_#5rak~K[xMq;q%kxзGn"Z;![Kz܈3<V`k+\k| $K:1K)ʹu?z[t=Da1Kf9"MREk_Y0v@{%˻pJoժN"y42VE2r=qm:&R׀]P ##KmPxQ0k:2q}[`smP2 V?Y+4yD;t-Rn?xuVw C-yH%pԁYM:ȅoZ{7Gb1a.xuBsh9um>⹘q3s1)B*+0#brM%0
+LMi_RH6:n.C\aI:X^ DuJxe#mx]q˲Nϼs3k"rS3N  `M\X;Zݕ|/XLr|z,5i{KMϼah'&(=eRZcl[xL`^IV*qia:»~l7/`kz^<Y^VΥ|+0ZđWK{XzqpϓD{Yʅfյt04	iI~rŀW[Dj23a~d| ^5;ʕea(BxB<\~+gx8+^`<T6Xk[bj|D$
+zt1._.bdG- ۟65"[;)Jz^
+)s5,ؽY7Ù\;Rpܳ~x:8Ki'|pڊ߽dEB1hp	fpUl~E<%5bHcɄefͻ2秵b"ʣ8_GOY<TRq\Ye.TnSo.Agqy=ӆ뜲lS&dn!3WT&8sgq<	g$U!cK8dJ^`/y0V`:`I0neEkX]-GSaUa^X'32!+2[#y\H=L4ǘn#Q n&ѷQnlXFMbI%Xb	~M71+1GLYqɌR׃x5א͘tK8`GžN <[pS6CEut>!˜G;Q
+bR˦3on,Ww įNVQfJY{,K")O*$!=s
+nijZ+~>\hp:GXxV.[mw4Qɑ9bgXeS`cQGᶾ^im<u{cim>b,n0o
+G8Z%w7xcg#cWayϧ1i1|U0e͎ӑ2MIyjI0.G#$ÀI\z>Ftm?W˼7OA4az@g!6B:z;>n}Lg*s^.G(-XAw(~V
+FV.򂏀Z8/%QXzsk1_·rXT4z})i|EdT7h59_YeqQHW)A+`
+wjX-MfrzʎK
+[h|8/!/Qz͟/OeZ2GP/ڗV)
+$ifZ-}D:2S]z2k, jfڐ=f.˝V
+Qjɐ f
+0qD//j(7i+fdޠ`/=w,AC	SP"~c`_ XWbcثߪ _)$4,cPl2p<X>ijC(;ƭ$g-6?绀N.hW?~oFވK21#PأpDکχZ h
+жw>:>@
+J#ʜe܅mNV Xlq
+4&F^IɒeZήURH8Py9eggc2u6eX-rܔ`2@ss4.~7#c\b6ौKȧ][ëDс%Og)tڋXFޥSluHϓR̦3ynG?`.)[ @8Vi  ^gMi:M4;물GL:~2mඤ~-I0Ai%0@W"qCA-DuepeyU6^^ Ye+:y'2ޮ{F<o|
+=f}3bsSu,6yPfP3vtܺazWŖMׂ;~{[n̓i^yä3,/'`s<)cM0Q*\mK1Xi٘Gه{
+*s~,&viXS;OS`Ro2G^0+{z
+#SVxXՈņJ.65u3,y	֝'[/,oiko -of797Aչqokn3]J(WFV3O%vys8wN
+2>Cjгaeqf\(R#Sy~$@`9	ARHQZp:ڥ	MfZ䅗T!џTQnC Xǚ֐G{!0e@R~Du|D]P*=MZMMkU6-E#Ɖ&,0,hy˷QA2Mye^ςdWOf'8q1IPJȨlC1t[EKБy쬳A+
+8Ηq	y/bV@0=	@.OQmd6Y:z/$X@צwP`սVIjpɭ~$i׌.kh'<u9G-a\YJf!?9GTE̅:&nTi '.	 ڎJ*U`۵jF<COLPt懵-h!u31)Dʐ;zjiaLճ%y2>QOs PL."_u ɺ4 L.{M=(%.ݮ&[ZZ^]K>+,T-[Kk^2X\yv$Fa-qC&w򄄉L	r7QS.E0f$ӟU IBZR1U6N(+zθ?k{b(#	Ye%V\G:Ph%A"cڎJn]	Pc^h3-?Bi󬶑zK2\8DJ|Jm\.uj` 0`-+g*:Rx̪ L>/Xa{56E& P$+»nk|
+tzX2Ps\sܤ }ca(+~:<	Ou(.<,C4mK~} 2X?[5x;^49)	
+Լ~˝1LeL<_izq߳1q`/L؈\>.~ǉg9 ec^Vs~ĵ8TVj4w8@{жe<"zďgՄj|UR.KI\~THI%GtULtЛFi}x^Q%']iL
+暎W΋ӞLHNPԮ^ rc_\u׆%na>$G8G4[-=s8\,,J})W3ʖkiJ{xAAZyޟap/6 o̞n"ngc~ΧM4(>~Z}X64.[fV@s-:'\7pZ|z* (
+F5Pm,W\~JV	cOv/O0^̤,<+3^Y,iƮG޼,|1R~۫i_]]D`
+`C镖 2I4+ò
+^W%/eԷy~kKF A#z;^.~##nIBI]0<E姊\?20@+<XKCFfǜ_Pإ&/gZ}	>oShUDC?Ø#bZ?@[GļlCM3Z2h/{`NkaZ|p97;V
+	tP^jG3Hϛ.ȸSU9I(w
+zE<B| `ѕ8Cumuf .?vrr/?aXG69`'%+dg=bށjG	i;/[q|SiOq8!Zqoi|zr[=ψ[U&5ж890Ӽ84Wą*虚2&,9}tSګ6z>-CKЩiSԳ}}O+ղ[Q˥b6UQl7/~Q=uyg3';B`?C#=wb1'+AQrc`4ſzFkݵ7'(Ÿ|_n	p9i7S y݆B%h0WtMނɺF?5ISQ1Ji'i|?F_/駟[8?zjNٴ70[Bq5rG]: ZhaI:vŊL˿xiOZ	e*ت	(
+0pyv3dq?
+̸Ҡ	VO@P",xR  zXzPWpΫ\Nm.HL+Y~ rYu7KClol?6V|02IEzAPvb!sRX.	[:<=+sxJ]޵ŵ?vBcO^Oyl,:2-85,AYI̬2
+W%߸HD6aZz9eK6PSڮEp./Қ]6HA(^dÔ]Z9bЏ3kJ^Nwx/_ˌ[EW6+#4u7S3'6vAxI]<8KRtjcA6vpDTk|Ǣ0<<\xlȷ]`+ЩZc9k3&uSRc)gj/Q$bߗ-m&HAƝL.WROz*w[/׮ 
+<}^^w7Y Uu!B9b1nzL S0?S!}2M_&|T1̐ehW]vV0P#<o{RBH'"{G8!IBd)۟0ۻ|X~v_b7rzI0b~2SAoeUҰ9:reD%fJzO;f~X/kg&6zT2ZuW0+!ŧ
+O''N̟?y+V,Z(4&&oO<aÆ?~trF18#A-;?^6BYI~/:'\\*yuX$EzPc[AS ]\kCA }ҽ׬.m#mZ+2;,[޵e܃Sx?hډ_zB"v|:M <X9vƯK0^3w}Wd8o=uMHMC+G9%pbcF.GKAHϖ4Qaھр[F8-ibQIᴉ{j|dIW(M3knv<}g*j%g:?q)K5=O=~[[R)V皖u-?)ܔ%p76~6jc?m1~@ WRMKo`9gyU# k3YM74/m=b<2JZ(^¯Mi\ }V蘋|y:àYзaUȲ&jjҌkSZ&qOodM6RdܮUwweKPD	.R/~8e */.
+kckCj%f)-VVh}0Skr>fO S۟pwAX췃| 8c{G/۽?_	jc蹈vC]px}57i˃;\ǃ[UbQpk[ޅ䩫!0C-T	ؖ/>'MpJjR[X{̰)n$j!\`t"+HN˹)O3<I>qNv1rz?+N83<묳:v8~EZj޼ylԨQBB_nݺ?6=eUѤ0Qv۵a=NloV9ؐvG1h1}V-[,-[
+Z{p,BQVwY2}0SWٶ EjrBխޱ~:j*P>|7#)<
+cO0휤Xp^j{#$*ӷiaEڏ/zO`R{E*x~$MIȔRGg@@am`#Q"Gs̵*%@3h;<v6!qSؖLX>W%	s陷' OH?&~Jҧ7>fFKbc"S7Y	5 ִ閔0-xֆ̢4HK+Zh`XPRVsJO+wÍNӭHH; : `4\qI`ٲUlnx%=O&ĸ+_ P XbpvA!ћ0="kv+\&t(QVt
+;9'}#+*`-0dρ 2!2~J<iWIt Ahǒ}dvkUE >LF׵`IEl6y&dqJm
+6jV\wt;d DQM~S_OC|š9zk-/$.,Еy bx.oP$zm<|i,5PTolgsr⳾Zz.) Voy$|Dke}َLɽHeNK*Vr^j7WvիWO;v,''s?o4bAiom"QҶ~/xȟD6	y0}X3*E?^ii	>#Pw6LUQ7j/$0/|a=/|%8Ev`fjV)/XX$9Ɩ"'j}T|	=u2xԍo)Vֶv4V։V֍#Ghko`u`Ou1|C?\>U;뉉-e#QȒo**",iǷѫaMVz+::n)8H4,f=@a+9IoMc}4*0A\^TeOuw<';Lu3 7åk!@R@.\Ӏ#V1w.wB7*`w?<蘸Vpܔ.c^12v5?DՓ-dk91]~V6]]UR,X<xc<'>i}!02>i(3'È{Y:E4,#ɠ;'䍌]ɷ[D'x[a^D*]DJ3׬r.J
+ͨOk](ck#fsJqјfg6S`WVo@Rۻ
+ķk[XE{6k'?C wNV!{FEvÒ&,=Doq{ǘzUS)j_=.[;z\x·Y@&qV~!cxMx{pijtVx5lo\"^IDLD	-S[ޔe)]=GA.z+{Yag{PMi9AGi3H#7/bZ;+܊U`@)rb9.4vԌ"܉o{_\ b߭i*	߬v2h>RuN7*`G\pA%氍:xuhԑa1rZ+
+n$H9,(u:tO$	B6֊tc\pSo(ƃ\dFQ&HiyCh_O= e.43sSOH9^~RWڃwfǂJ4TՓ}|M`vV¬3i#6Ōj6:FҰW085qXe&8"Rҹƥ/2lk-J7wLs@(hWP:'[0DŴ? #4`ɼxSRx8-ĶRn!KyovvXQm9o`J*j/^|k1Zޢ??0%@asʦz	:N$ZN
+_Y#bZZ<rGKiUfSÃ;	hyN}LJt#גQPL#Y">VB@!́ 	|P?*;T~2+à᳜/g|p>MPFoMdt߾5g7^  xUWc̏|KCSt\&np	 DkًPjV/Zfiq~).+~Դv,@'K$bF+p,9q$+b"[_GO<,=N=oꊅ9q)6zƭ6OY1<7lU259MbqgFJYTDVK|0T.ȑYe.Ok3D^N}Jʓ>C?'%!zUWhg0sGdUzmz^`1zE`~C=̓x$iN:DE v]]>]Pκ#0)Uw[zl+<v~ҔTR,]2a1G+W6; gcdM|q;HY4
+Xw/6,-_y^-R;`.+ebgsAԸVR'&Yo"*>7%С
+HdnO=R}|B9/DqfU	m7%~Ck|"xMcЕO6<lqx~֥{H!ћ/zu|v2d6[.$^l9LLf~y&9ܻ؃q\2j{f.nK_5]nIC*sRO=5#Xq:Q<oxI; "A1W7- Lk/>iP(j-mO![)tjaD3h  |hv仅Zw ZX[phE/w
+gRݧӀ~+}tB{j+oo2Um*zJ].a2xWl_J 8}Z
+y/yy`NvO8)9sj֬;vǷ^~2eʔ(QVZ[nÔÇwꫯ>s+}_!dx	{^22V!򰨰jkfثr}Ft>`ԐA.[:מ.ul/TJHK`.W1Yff%uRd\΃, 0=\Y_\3l#
+m77SQ jᯐ:hlz	">t6j82`t	KqMZ6ȯ|#vλ#Q^x!Lm(愩8`s#cWbwO,ȸ\ٯ)ל@ QU*bCe3˖[g֔IGfqV7 |^'#3YBi4->ΨXeoXpђTUIMz.-p#LlQXI~QKa]%njg1Ҭ0SNI} 1  LN@&PQ8Sh(G@a+6DR~|$^x(/&gɄx>.AVMHaK3惸1}hŋt3(/7<o/!rݿBypN3UÝG{=ny~zլ]E^N0<#:ܨuf`4l6*@X?+@H\<!#g/p` K@k|a+
+ 9%mLe.o-*0u1srdS`(ĸƘ-dej([,Zm2uHu4%^ug|,*_QWQ0~Pɭ2Yr
+7a7//w'؝8qbsrr{o.8q;/թSbŊ}4iR?he*qU`TgNIUc:3|!.U0`JTUGɻB;`8+%߰w鈧?H6p힀]/W0w8EsI7/
+2oۙ )B<gx
+Y%g]9;4z#X+3}5DU"[sڦiu#GgLq`{W)3jm;J$8``.k5m!:ڪ|3@HJ+Ǽer`+?1VSc>qiydB"t@_c1\hf#D4:wJ8z,ܪgDK\#VR>JxQXޥ +ᓒ[٩4.c|:i;MLl&|^T-Ez)+xj<S!*@9}Mwf`?gb lWsƬ.;2vR.k^Ⱦ_C?3{Ly@VB8HbaSJ0\1_tx_yƥy8$zQTׇ[-}VX*<RAg;	uP*Ylm*J<@0݃x*sNG$~)vNd8*Nq]Ł!4r0ߢvӯN%jMLyҷl_Jmr]u4[^p>>_LMmBٷtHjT"bW2BqXL%ɸn֭'ؽK;t௿ ,Y{/::zڵ]hy̲-mu5u,$|[(ZϳJWJ`\bv9tKBg(TB5KŽL8ddv+2+ᚤ;0MܞjއV[ҕLU-0ִ%#[|y0B[ϳ" t(wՄa\B^^jG:ti\˼PgF$VQݙcK&T#[E
+E&ol^׊<02bsCQ{7m@1 e9E}`(Dy1&_Kel;xp>oq5 br,	2K^Pώ[2`4.>Rҫζr;PHehn}/lzL"lcc)a2\\;<㯂jt.'@ ]	\q
+='OJ˯Q¬l\A%w$`Fļi|q#Q&KŴš_7X̙M崼;mbɤtLdk/U ZbccvP!џ3<]UkZF}
+Źt9?arsM]]M~v=D.	B7	~L_`;W˫jQ.$+9ːB˼&Ub%hsGa`51l%*
+p!Yqet.ರZ.
+u#-vo-^gW#^Vﰂs0./_Dk`<DplVc-TgqtsΉX[La5,fC~KOoff(1>&>EإNq:{ر"E̘1*WܧO(UV]p}?u*UsvQ:09#s|^)<#wn?e<̊xF!
+^_Gn=
+`MԛdE2\9)\@ivH
+^Wۼh +t*YP[-/ ;x
+.1vϨZ~TR6`燣`G a{{%pH?·Oa[
+R}G= A^j9[9bi|Uw4<7inlr#cWNnKr93
+qI4ԟ8>a[@Z#]c9}=Ől̒,n`VR5<s(wLrV@g)*nvճJ_LM,SZB:Ҟ8T8*-
+B.M&97XsoeNqE~vV8s:D/x9-DCGĬ$)Ű¼ԇU'JMN~V+0)2?߲y9E:Ks	fe3qB
+/
+#}c&J`ۦQ?zͮW96.F{[bQ0,JOQO
+y9qU@~ARE2G>L`rǍ0
++R以Gs;_{[ ƸhmC>rtpWpUK[Ƶp\VYgAק-sf`H8RČ+>-*3/755¬oNHьݹs'\ꪇz|]lڴi?hy#5;/'%ߺ5\WiUc=	 #'7_VVcrs1:Y0MKj1^Z'3w6N}7ƶZT 813h=LR&t5&~9:15~l/.+3 iFľ*Qo[|0xV~OH>y;̓u#c9C~7X
+3zgmgb-bm-=rmz{mƌw|՚Q+)nÄĀ.S	HXcS?C;XnE7؄KHaF<NzX+l>m4 |$˛>x`;KbJ6+W-0%s=kf)jIԊ+l+94n[YYe.0_=4vZz
+Ló8yy}ᩋA5yq+۝{@'xR㠰EcqA0w|B^fFwfPg*oy+iYKRUoN̩ig3y/J겗}VȆ;5/hU~{{XV~↾H%	& Bu۟1U!nDr4-B3^ =?m/ vqx17yp1SHk)e.tE?,[JDcIZB&-51|H,	&cvVE|!ܔ.xDyNN
+c 18x?Ϝ9s5<WNv=S=OWqñY0zȴe2sfOgW(xTZb2Ygs&2W g1@c`BS6,QAo<3=
+3&R'Dp\+iSA6YIe37֕!ż#&bup^As`X`ڳx1 x<<1ڢR4"杣DG& <xmPCĒ7L",y>{6T޿0sSW"},kzB1:*v9&^?SeLBgqfCR;7ui0ƏOZ"H>=g
+Afe*u!˭m_YzwɼrEVW8z\'km<~oI:e^{GN\n{ǖq`ݾ4!nG1\/kQX*MyH) ˓͹F[x(jK/ &zD
+]F6]-4o^߬x:1VWPb2v 	[G(uE>o+Ѓ
+˖i|=hg+g\qF%cF2;W2SZEJ=gL6<XG!t<75^=X`xl~Z^@e'e|kM{drk"G^W!hB9?G8
+",?X~3'Ao?ӥ#,+n_"[jks˕tKzuiUMVxqK  ضq	SaLaAط|=oذaϞ={yLܔ:IXX3F5>;bfz-ucJ|Eȗ2)b
+c0H\nil/e&!]Y+^q2,OZț@%3n\BsNR?5=g,/;l[>dT?w:m-0䇣 kȄ#/$+2;#C1m|S9JG<.%/Shw &鞔*Rչ1ږ@቉#cBot6tVKXx 9/?AXZ^UY-r6/uMxuyZ셠8WЪ^w=ۋwVӧ?@Zfj-K-Hg޼rVٵC+
+/voZzhvJN1*nZVIm|2֠_Zrǀ]sE
+o|P^:W.j̪K]Ͻ\qf謂x0h\)/7)i \ijڃ2z!][ByWg:3|,G|+T}z|}k%irra7%yd`Hrہ":wFbjCvVXghEڏCuLO[nۺ,xnX3bB[<ѧ2E  9 |[IEy|uo`IIUC^*EkW%
+P\
+2r#4,;4|]u5^槵.᠒]ϧ
+לORUdɏ>菾-M4`j<a|ta<~3C:knMY %]lRԞ̾;,[un5F\֦p5_z֥Uͪ
+seN09eK,a_S`P|_-y4:niCmZ^,-5yHf/É0Ma6v@xFf5?uM׸m`R߀Av;*"zsEaby/?"BK?2v50>aʐϼ`L<&W=cT|'m|oy:lIC0kD@aM|	_d3yWZ4momfkOEGx$SA-hXU+|/uiۅV$oUIWʜnZg7Y!x8$Z^HطXh+m~jd4dYv'Okz*bx\朖:>_cs1cK.X3Pq7آa_2\]笩jF)Yh-j{A빋(0kgn$Z=<2zk
+m@:y5ADpX9Z"O>V|`n[\hρȉrL-snXpU%oEyuB4Lgt3a>Wgm{\+3c63wjZz}s![8>WƫyUL}8V-/nLLPҡt.jo<le$"jrss%ڰh9_'&OxUTwK Wވ#b)˪	nod|UҎ0\W	s=|1M`߱=_n+s~f1UV1B~r`Na<\uVW&[qqfl3Vv%2%J]ο&AP+t~f҇y"_`YeH ,&EA n{wd䝑!wD^y셄x2vȜ>RF5]t@9zc~ŏ]g
+~5@ՈPgbbc1踅c>cL'%2Rb#_U5'Q]~^OHmj>G<|]Z8{ȵ|V Ϻ:NncpEoVN--Y;[b/Awa(DK5%~䐸E3i5Żiñsh7\J|14q:\sz&QCsջ?poJ:r} Ly5"R"G{L%gvrsOeNIyloalMɴ,*O17M{tAnJשi^릒-YC-0xáUrݦ5^@iSSˇlP}EϜ`@c8c!a!'
+ ?
+a\9)rh=PH˂oWya]^1':|t=8moiżmL$saƧ/,ڻ\	\.FWAG{΋7=|v`k^j'SfnD[<<=H]hv[.g7+V[}-]4*=iii͛7߿wnk]f,A<mlť-\	s0*1%^KcpU0$FP7A 0_ks |X;r-%y"}m5-	x
+W_{xp?3]j[xajvrNR		 GCx|kji|] 2`EȀfʇ`=	Ovڍao|Ń`nHa S)vQot;i[VL-)gv @Mġx)&$LT(l&]İBXoŪsV![hg1ޜ	5a0|_`
+݇Z_'L#&zdc]#Yt.Jqh6Ujnm
+ɰK@67Ec-}_۵==z}0Me-[tn`=;E=6gt9?UDK#cW[12^-OwE'2	朤&%|ܔ.$f/}MŎ[>/~5^rQb0d괗QHnncLnx)kYB^Hɝ}b఼2M@7-XJ4czUoY&
+7IVb>RP~P0"?~(%WGwDxW9yyOוy}iy3rBj=ܥzIř~h"-#8L/zK"n1l;!ћ ,p4ϥŚ !ůSSݫN\.2\rV@1h֜9mWSarǻz`UUqD;/wZcXCZ+fcIMɫ*p)W-f4]![oP*a,zNR*Rқ0wQPII1C73}aQGovƯF}?t_jy >AQ`9F$X6<i!.lO@D aqMoa~?ynưÛHraPͶZ F+,+MEWX kŋ{qj2EIRR]jmу,4\ndjDw𬴆l_ܢ^{]uWWuvVN|JHMI}l)-ȨPX&;*vŔ8-#cPbŴ_P>s$kDtv6VS>k<GK~!"Ucsn)#g)Ob>Tr+!RNSJwTvzfM@yz-2DpjڃGKAӷi#Z-u\?4<kQ\ֶ]euZjUR-6^TS+ǅeRxJ`'Q
+|AE5w	m[<z'b
+*Q;,L⟷E~jCY>F 7t\>a[4RJr~ED'h黗ވEM|.߮߻v+{oYŪja]ZR]#G2}'L?wZz陵f .-wfmĬS]i>lRׁtm4@ZHsvH"g\=%(V'T
+p&kM(c\%4M sqU"VCZJj*f5˴lZɋaqnWV0qOVik1g͎NI}lf+
+2k9&y"/o1-2zKJmWiHm|P6̸?ponb43u}i^Yc^O"?كmk%` qz լ²e9Gs킌ړ{g+>7;aF+̼/,[U|-KV|LR/;?LcyWv}!r1WcPcv/iǶfٔp	q[-\nR񛄧rn	u<9ܩE)檡$X",N˨7\10@MyҜ`&V`iG?
+?6?U!=E@~\\):>TO9Xjѕ[yͽPr[`+~y,M=0	/8x2t"6Ԗ.U4GY|xQێ?grV+ym,W])84>Uf%&y3LR䷛VELh,"st¨9֓X>omROբ4p:ţl܀#"خmUٮb	m_ᵇ e!rL*0hUೳ*+{avY*(
+l[.$`+^znJNı/ۮ1(ТoV8Hf
+Ǐg!UO`{gAa
+
+˖vJ鯂xYv^C0&JN.ӌBIչ%t!Hs}l9cTe	|[<2ZlbTu.'sսU+JK32Xx-V+ML1D 8'hcA<~xl%vi@S	)0Vi82ad푾0z	#y#0cԷ qHi`twT|0Ei~<(8.7F{aj^^:H	yc_b͍}P}FonmWw1cl/P]2m-umп=s(*;ٷnAw\w\A#xf[-?LIPOy_tw侚\o6NP3UR!XSSԭ2B[A%2n1Ish3	\h7HN{"̓Ef=u͂B`Vf*miC?f3.~ZG-6ٓ'%KH{Y&&kjDL#^v(u<lKHsrT:Mq{4w8Hk3.RM[qC RtV)\VzJj03nDqR/	1)t
++~R.CxaNrd?3`
+/nN;:ӗzqp/dvy	K{Fy7XUcܫTsP0]i|0*LfrFd=\ql1a1S:+/a0wZzcrT
+fU<nyV}Ya4h(qN:5j]=kw
+1gkTK %l%a]d`+v1r/?|S+el2sJw9+;lIa +Z(/P(͡іünS
+]7n kvJh	\MOoq))GƮt=-Ui@V͂U@*NQak!j,adV7)-n,l|G˱\n jD]*i]},jXj26&nZC$I8el|!?dRҠ1q''ĶCKP	c,3q
+ ;7;vFX9E-,G\Wz}AMĵ,=Xi7J%e9yz`yǲɀluXm=^ڡt3d9-זrOy7	kda+7"杜0ږya1l{/o
+DYO"X4Xd´],>S|Kh>OL\8n`f8=ey+-5?PM|H7QXtN+Zj:G[UvߊXCWhgADА 	"L:0
+(yST9-Uۖd(:U^eukĎQ2A-X9޾^Ns'[H5r* c}N$%5r|0[S׃9]a ַX^NK<OI}Ԥ _֤{ga'7|^Ew۞A2=xoDڿ`4֯_w+VF۷гgϦMVX1..߿}㏞l}`-՗%k=O"˨<%o,'v!.su_/\uծma%nڗi)^~߽4_Z̠{Pp]_VqN~u<s_t=+/|nb^YX๾3%gC;43byU;:GIf
+j6F?lm,y`EN5򻼆]|;?l{Rp^S?4ce*ig)?4'aZ]ml<x֬U!&109/|E/%T8(S <+/Q! qW3`}cׅiXE)eKGp2ak|:/` !Vr689b1WՌ2r"7;aUG-l)3K]h+(M]9S~:G±z{ܧ'եq8H758Pk*lY`p=4c|bP^ON~k3K]>%Qzc|B]Cǁ#bߞQ:U(`oQeU}A0B	t0EuS޵@y
+
+f[4-%Z**4P<;N0VE>8]H
+p.?hZ[Ii4p矿enNvoyu
+a!G0{ egX(`F@k(ϖ\ݔK0짥7`5gvRҐ7,P̛]лex%v&s񨣾j` 0Ov
+cж^z^ziʕ/֭[=z􏾵8d_yLia֙5
+VI8SUr(,V>/+ȟiVt.GHn[GeUae%Ƽ/VCAh拘;omjk|\}qRV9	5e}@kt[xvszGmbrrYe.dM˸gjZ+jlL|W;^Ei00&H}>u~d
+v䅆"u"V[\).AR5V@]QK-0-S^ŕ,S/3!q, -5揊}M L
+>ySRSڂ<9nV˼<^"[x/ȨI[嫻)ΪeC}nU#TUQL5ɕR]P>wSK=|MV1a7v&^!ͼk9yi>p}z`Z~ix&ݥ,!fek`3*c`ZϢӿ.=E\M7@a|!	}.ǣ~ǢQbǞ%46 пZrǸ\83o m'%a\aULe9/|j|ȶٖ^*zڮVlWT}UsLyՖn[5"k*ywUkͪJv?J 2CKSލrD[{t]H`OA-/oRJѯOu /1EfL:P2]-A9¸mE	p^(>r~8fDBUr|K+}%TBg _KV*?9͎7N1eef\1r'yH3ΪZ	0PcKŎ1S]/u:?7)I;]5Yq45F,z\iCU@X;Lg`Hۅa	J{`}fCEVzdlr{o~l{˅<6-D-.=qR3KWSMVՔx#cWްϨ$!\Y+4
+ǿ;2Dru#cnT/2,cQ?luA$ȫO;d.ݴՀ8PUJdו%Lj@0K{͇Ua!pimlNPqaL7b*,]0i7Oo:JVwl,LAo~Z*ZyYgҏ@4oԶ$@[L>oIԉZ8%^ꄥA1I6ɧTQo<02ЭSY N+_
+*)3ԯ{譵qnjHԁZ[_A u`>zQӯ >:boD Y"O&{RҀqܔ&sS/?Դy1$Dv"kM6
+Gh"/宯*sVwFЄ2Ur<{u+Itr$eMx.<~ HKagh,^myVTot)PWsebn[Dշ=)B_uG5r$l%{(o+4t0e5іȁ\Lz_U^O	[}{^emBz%	9ֱ;XǱ;XQAZ(*( BKH@Qlt#Eo̝q.^ܿ=y|Nv]@0Mݖ-Z8\J	/ 'z?=-[ԬY3---22~=zm6###""o?K1e/aqȣ*PsfB/yS=/E3]ދJsy|K(Lnkkvi~]V4]cQ=x"y҈&4P<t)[y%AnhGU
+OhskoMU) 	2Z?|jú-LVhau|:4jha/Zڡ5CkZR7Vۗ2U?|bA ץ\5{E@QAޖL=c]1]#غe~q>9\w>leώ7C<˹A'
+G^4֘ڶ
+{tNj?-9]J]ACU]0D<=I]CAԘxIP}c}bciAg;ǔ5;</v2V}O昆Fh*Y[Z2sc)i5 xbsB='¤zǌ=9/:BnRWo0~E^'*F`=7`W:ƟYy~\4:ճgtY_/jJ^t{
+8Zv^a!8/Hy2;&]kZO CAa8ue!2ګM[ţ[>mxet{yşHyd-m1!P][j-#〡Bi1 )+ÈW-mDҫ:^K On֖89NNݻwi:묳>ŋJZb#Z^3f̸."򆥆ܙpaiKZjp֒VDtGfגjJKڱn!+B+`WJKi]=7-!U[|Jwr!<|=r2xr}V0qgAǺ79#(ܠxP=J&-)l[˯VW
+ͅ䂹U}*aj {9nSR}XMxd^5ƶK@`FحKwE gO,yzI^5s@|_t~ײ؉旽lsk!9ӹTY|iSn;Tz}g.()QիGAIj<<QO=y
+7L@A={`yS:;M:IX:+%HmyK<C,Ahx&ЮK<+C޶nh%FO&T}bژzłX=5;N64H` 7GM&V\[lXQݢf@zC/{|`B|n95,66IT@
+4=o5!}WkݾZt0 Sg]<+b֙}dmsGu/4P|v[EK:Uup>.xځv'jؓ[ւ@P:L4~Tҗ-:kFS_7 dA4b?v^l0gHOĥD!0#Y	m®Qs[XSۙ_ON]c<mv?/]@䣏>^g]D	>+**s̙s>?uZh/**:տIZ:R<=#"=
+d{3O`YX.=TX>ɹAS UM%Nw``_OWj	I_xuxed=*ᬊr{	55sb_|Ynf9&Y3 pYx
+b%ZgCKUCjdsgjf8aC8 ya=jy&l
++`U1Ks|q}W yDn.wG~laRI5`Nۚ9𴜤&e_d3#cΖwOg#Z,~4;JlKkf|YvzµV)YYN7Bi=.&q޵XPPM)ϧ/<m/AtiσS D\.@,5ء\IxwIz\Vڪ]^;4XAT+mДgB__˿`1YWcx`5jYl_R;:^aK[0"J4%=}F:凔WڀnE.x~XStpT(]5ֹ2][U{]5q98!\=_Ruc IH74}3UoTXf{`]W]*\振';
+`#x?@sp68 gl	a3}+v]z}wQ`?P8!CAϑTecgWzM7b硩xIƌs<2='CxFf{GMvV!bm#ӚXCDbcvv]Dvrgqƙg/oر'O5jT񸸸oyڴi#W^y媫Zv{ꕘ~_[7a)lQx&X03	~l$6aEc@θd)4["+6Vɼv^ɣ~}M
+|)'7AUX"fݢ|ʦVW^2>XK&9ܸ.z2%i-H jөR>|U;fBUG֡uCfqՌ4χ~?s򁰞?G}WXa	\-4IPe8]MAa<?V/fZuu;_>ѵ BVHeq|׽[RΑ9#˝A[ hRp[Ԑ2UGU,En~<'Кxˎ??P<g'ぇ01kXXˎ/6c	 ;bh9' n>,PE_%qSp
+q)B0R/y]=	0+C6:ǣ،A:jY
+$uI1.K}r!5nhՓI/Z4ÌeYoS>ia=Z
+e+ih I<'e5.~ @_\ΐԇA^".)l=;qі\3l)f_{w/v\.̡v~4=M}<Rwd2EȬzMv`)]3,jqydVм͠yVjYg<g`xS4f cf,iEBĠJFT7tF( 	o.~qLq _s/n`b1["2\#g;{t7&ǝRv+W_ڣNvv믿~>۶m;[nݩ G/^<))髯:]kb}_0s2+$xy3S|F9s'@>t|K@N'tڥ_dj	SfcK $]UgTBs7p&/`͓W6cRfh*4}9֮HVx-ocf%[9rwFUQWD͔JبGjf=Zp_X!xXtha#ja8gC9MfL4WfZ XҭZѰ	kF}+J=1+j*gXىe'Q*ŨJn!![Bt/׋ńG*F~aD׳hcѺ/I`8?gl|5"UkZV@Vf;/aq,`PN="eW֨POgk1eN}[Cko,أ{7Qs?q2dmC[|Gr1.Qw _Ճ.FEb^	z*dKJw:5Gap9+u*̤$5I}v7Ԅizzs~ˊ*DÅ%\'D[oDiEN,xVrq1xfן+J2V6ׅ2BS>H%PM<y@Yt2?i`\` j{{,.\^iK,wk@1Kw\>!OM	̍+dT^kN_ٴMv1"]ܙ-,fİs+S9[Ob>S{>BVf=xm9IZA_
+^_q1S>Us,:>j٩^z_K/U^T|Q9Ϛ5W_MKK[e`ka	ciˌy)5CS+{m*SYrIx}MДD$3G[&\x'AZ|\kqIĺN;	qS5m&+Q~k;0g%|dor	ĹWOaX߭mYΓ4G덻*u9Z%x}*53CYd`U'ح]'ظfh&nM+lnb=n&NHf`+'!Y C	Gl$l fJ̥IUe J~+BQ_bgwUܮTVzWɒX?gUie!9m4	~9j䈲\__lspoK8#Sβ2*7gp2t#:F3ߺBt~%kŅjn`Jm&
+>LT5ӡOƚ\zjN^M+ҞΛdJd)z~0#ֹTl>(E"~,W!\sGtŐ20}WAy.U{LU jA1I\=͚Z\̺Nacq 4CC`M;,<t XոugV/,;;{Gw>'S}U-K0HԭB|m0J-+`]nk2/.˻e%t.P`[lZKzݣ-3wg+˝L4?N߉O3^zٲe:mx74o_._|QRA{1 u'q97uR*VN K$C,]X>}TŒ|ŘRZHZJU>'C
+yݵp^W9aաAM+ֻ֤p^qiICÜAD^'=yH)[<4|c%_Isy)Gc1x_@FBu,{%|;^hsPWΖC@XisT/| $lSɖOܧ^ha0,zZ&-,|ot3&p -jlnW qKc<aiw&W#J~Hu|Pc:v	+z)	b[4g	R׳Ab<?Vc=}9LexQLi( | s3$86k.M&e"^)%DOB=s2B<H:X[#4/Ao1ًT_{@3O%7SwJz~qOCbz?ඐ&B@g_\G*{FsVe~ŜQxջ!c*ϱj"؝՛"zs4M_&
+fH(]yc]ܻL큭bϔ	~tNmb#e>omR)K|;tX\^i!x	/PcAڛDji(L.UO;^ѩrB%U61tin֚YYKlob?XwȥݱcG>h (Oz?Ztc`K,y?as=adTI}XSV\1@;hˏO0
+=T9T*2c.c{WP	QҪ k?jR6/kE^ڟVL"3HVv3+m$gS՞.4s']N|7?|.Zv-i
+_6Y{> m
+-
+ X0RawfhSB5BnLϭZiaCi]";@dsBܵ=<CjPxH=c>#RQ&hVoRN5bO ԟpF{uOU"*.K	.x|2bj!!1K,mJ`~UǼò۠`]XMgix`b}F$oƟo5JcsL;%^d#ȏgBxMm 'lb"qشJh4v!z1|#@Y"6DLF0-2S.,~fF}? *V2MG]>b>Ut[ڎ({0.֍cd0Y4B,|&m<!{Q`| ʸ^ԁBH.&uWJ*K+ỊҸ ]e ثl$ ,vb@ը #b~jaà"gU1qg +y&\OuUSX]f\s.2$nŷFRjQ1Hk伦
+tMkeh?Xk}PjZ$<{-nw%'z?[VԺu[?7nر^z?|>[zz/<lwqL0ao&(<cƌG
+ܙ3gvm^xD|_#^NPsċF;4cm%{~bĐp\dHMIA讠AIxh5TMu:uzRTfΫ _şE<&4gTySv)y~yʻ-nld\8O
+[Boֆ`;vt\57< }lh1xXw ؚzbt~>#(KULlhy}%]]Ni]wt5@l.}IռaW$nJ!#_;2,v@`dZ?bmT({'{.!+@"˧֭~ej
+ ̷%VxH 楕)$Ъւ4V65uYeWk])XPZ=WZ.B#\6\L+uC^Ab7+\.cPIw̼kys/!PH#Ym9VM_.bM7@%թ({5ɿCSUKJͬ>Uu!-ÝI
+W-2Yp\O.\y፫?iyr
+)AfMVhswLƅ;]wǑ$'< z [l|V 
+%,<!oTe-v~\[xA5i;&%~-sĺbD mLwJg6ׯd~w{yw)viii|r)A^}z+7o_`ӦMə֭[w.6mڔ-[^evoUXQҰ?uFHn%cx	G/Ǩ4q:,VH%ݛ9u]澞s;l@
+_
+i	>D/aaIxZ(7=V3yS/`kbup2΄YC[)EfZ̓	][QNS|e0
+WX3'Qc+i<`.ɽRp<VX5ѝaM7?.kfß	-ƪAWm-g3yB|ű/c{s"渶qTgxcyqC*0ϙqu?&F4+$5R9M%<|)Gs;ӀS<Kz=	ͻ(YRZ/O^XH-[ϩȪt}Tɫp	|	˱S3(VNZxE1իgޓW)='s)|.b#3kT}|hEИ
+@<:	L,䫎MꪡHСFtϴlÛʀȂݢI3hb-D8;$(wrp=3{%l @_5|vpsTL	z5]Bkö-[VlFt'^>qaZsVIJ@#_J}S*(٣uxTA	Lw'o)87$aM=,ήs,]渘vն``bK&ZB/'fZi7f4ϱ8JcOmUm70g.ry'r?
+ϟ%JX`spFDDv_|C*ެn¼2O$Y!iP:<ADƹB8x?:\%qhS~e@D<iY>Z 貺bkuaUrZ=~L
+n28	nA(>X k-0XjQ7BkV|R9{kuzkyoғ-K>UX> (\ηVύ!Um넖@r__thpr{*4	dbMj51J"f4^34³@sފ9k*?°2tFzVhWe%#nv"o33; Wn7v	ƞx5V\7c*͵ic?50h?)vWWXYim*?\̫zTM~]<*Ժ2Qf8;'	-XdZmR+\Rpgp1}BGЛY=6_-|%|;ݍJ57F	^m33%|OrK]͜3QssB;|yU)4 xUJ8`{ל*εKI"xuHDUժ&߭uޔ,ڦP.AXKP6(:>P{ 8pnU.̓L5f4!P`.À_-[,xld3l1d#p:h?g%gl_jG"y|"t 8
+Bb&)s8kپZS>Dx119kΝg/6o|:?$ެ宑
+2sa~q٠OA}yY96&A@(œMg\<ZJ~ \';/&TC߿i37p}	7VPcdh$h0<jC/%^%w
+Y_i+7=@vjܴ$&YCSUK		y27͑*	i0L%[}Cxp	7D.悼Vݹ3Ui\_dٵC[܏x{/=W<0xo	}Bq4=Ru)Qz%{FhS%wJ+fu'7\(+KlϸS1(aJ_׼卋W̹Ogif}- e\"Y_8IpW\_0͗e]K1"v%@[j렿9F//#,*kOKD#[+, >#0Y\ƪ\``%s%f֜|9֫hӋҜb"^u@d4FTVvKDT#F2c:G*9DPQna|y&+^)҂~7L1!S~4?Bs`l>Fsq.HJT"R6eR׻fjqLW^GCU'O$y)G0_COq\T1*7A^jݢfF͋ݢf2;0DL:SΑ-ǚ6~ýXGHܻi`bLؚ8f)=?foڴ-qěj3OaNy94rQ-
+<c*1|wGD4g=5rIY7bof ^bLjLh5~hч{:rRTYg66YaOy`B|y;2A~B-
+ᖇmhpFs_Jp)-0 VSXX~hYV:
+{+τ:/j%	3 3:e8|;/< bRW}|on<\_ ,ڵ[j.
+N<7_\D^1OHǱNz;|nFꈲWN>hFE`.g)&EJ8<ǪO+Gi	QP
+g۸]4le!˵kU1Q\C,KMIhy܈W@& !b'zS-|M-]r.8<u[ZU qCr#hln@;G.pmoXHcE]"!sF:,)KP鉥DVӯscT?UV0ug^+("
+b"`$66LLJw7QChDspsVU:tq/4Wyλ(њS!_(BBO}%+O~u^ޜ+NǏLl,K*׊p`(ǒv~ l߸A<DJ<fw%n)1z"7)]"coN~J{;u{UާOIjb	6gjExz kdaiV/.<(y?SɌvs;C]zܲ/<."6}ZB8[Uǻ
+y9o0e[%6} d6K] ӼK~`Č[~\ekR
+wKkS_Mf
+- RqrI;[Y7 zӡ~kqp^}Зτ Ǽg"fk))JE{W#0[ wȱf`-k0ixROlAVBgh8ɹaЃrJ釧[xH1z.0/,FQ]Z@sȈfx6l3xLjf˩oVdadCC|O-d_O$OG9HiOP\ae.RwiMM{,S+c<黺-\&4ybV3vU?XsnM+:3=>D{8-p<U3" #
+R iH#_aLBLc\E4$aڟ>b53ug ]9*Ve,L2qHD<V;MfK/jHNfd<*q`?h_@0;_bz CTpGO]$o!a9Ź9ImJ[4Nc΋،QL+3M8{x6$ewG!`ڊ|rUn}W\vfvC~n%	๰]'Pք
+˗)-r^U+,'lc&OߙKz@55}Tsfj+vPem>UcE@av9uLI|xr!J{Xx^B}H43? w21"2L5 όWZ*nX-2mw}%|	xiP'5+qseXʍS?|74NX?۟}Gn 5j{%}c~`R~&5~UMZ^%J~Xm<3s
++$qp4d3VwPC/]=Y܎2*ڋ& 1#ab9[KڼdG	8ֆ~@F$~hMlyԒ'",;"
+PؒrzW?| 7mtHWIwXטm;"7G:ML@DmMW b H&7v*yUc@|>AoaT#bX;kzU\B H% 4ShxCQ0k&Ö5.'oR\Ce'O"wR % WL#=zw@/jUuq*3cG;VE5yI0L?(mP^2»a	cL!o/ss?Nev>:;vM7ըQ.G7_df&>0%q
+ʝ58f~ӯ'$`9V`RW2񉮙{d? BLK:k{u	ǋk{PZTG-=3Z^`	pbfkSum*hkjUj%,	O~`2U(vzP[Cmm|y%*9df
+~2ae>^:
+_U~4lȣautn	u^[N~q i`)iLY-4wx6(BAaJTl}ŃsSӇ$<0:vPc!
+#B-0W̧xT%׃	bY	9kӸ cm;̻,GgL`OUѪ8Ų<j@.eYiK.LK	0^wU<e8%)S0%v݈>+&1 LlYy Qlqս\yCEl~.r##ͭ)rҙ/h'#θo6UFVƣKX]㾽Oѓ:^;#pGd@pRGX~3ܙg[Ts:&f۽֝nO"aNpJITb E
+\I^K)gU}?F+Xi\YO^<8幼#үq쬄69N7sFK^4fD;5ލ ٬NLw	#ց z{1߁?n1ŋAPXb~SVjAu+Qq?J?<18Oge"6Ι&/c?f<yLWWpuI16SCtr뢼,rSY5=Uu(1>p;OMn)<:xR[1]c*>c_?LUBe/X5atf%~9#ѕ>,޶vrTo@:@zK@Vh.(BN}$2ogcw3+"1Ck&/(\7;Bhm|ۖ1y 3pCm j??j.⅄ƇޛشSR<LNR섶`ifeG?*ʳՍ|D*̣,HB:_<4{u֓11	c;*:2]e5ԞVɟgOі} ;Y/S">W.Lh&f Xd(ڴV\ E2jmUi<be3|K۱.Nf{Ōkf9ꘕKF_[sV;:^	L|.`Z(Elϸt-3OEo 2op8'\6<+L4uyXS	_OW44ԁ5=ٚ-RtJr#Xk<*[Bc_oQNjBZq.qAcF|N敩ư^M;WMݽstXĞeCpĺZVln~Da9??4i޽{<8o޼ﾻW^sg7,n- .3QTqZ$&OTдʖAI{-pZ1)R~m#(YZG\<
+_\gA2EZx7PD	jh\4(Rp^<Bx.Zu˃)Ԁj|VB\HMЧR|	SW>Vy(QQ6/qt4 U&װh*dTAcS ˛4pe
+AЬ?F:p@V8soI8pb*<Rn[X?'mfaelA9X󽹏~C7ë
+pUq$qLn(`2?(,)
+\flA[=KE{%f*$mC~JTWe `q`g(#3y_FV:[ Nd|Jt2:G.z{DKpǾ|8Zt[ޡ%jzL]72^EcACl\wp3+Bb#>4+3 +[g@	JbqC^/WX>E}/ʲx0(^da*͹R?sKmK,
+h~uD*_^>*<S_j,q@)Q_YX!QuUU2Ԇ h'KV\̞ѓ_H.KR*LF MZLyk0whe[ݢfU$F	@vN~`3Θ>}gv}9ۮ]5kvEKOϧ׏JD<R
+yD٫
++ď߁FwdXUT1
+f°\Caw9#6W[nu%ۈ0>
+Np? $]lD?6^J`eS9d3e~AÖ])\e`yu `9Mj>=oﶆחd#'i诙5/@pw5?[Q ksyE;= ;~׽cKZR&`SIx;Bx[_}\'o=WBg,:8[g0mjX 5Tzٰ[Myqv`1ρeKk`bk7n0WWrW@oJ**Rc+4?>XO-"cx]7MBdX-(ݔkQwwǚ/ĳԹT;am2$&jl9B>JTRGd?C: F6 3Mgk9TfkB1pȕBm1Y\L0ϔ܃w\95	-Y{|:̣On(='VHba1gjCS'JOX` d+A=y*](`GStwN=pܓh_0Ё&ll'C0s@iޣ!{քO3ǟf{UPw:Z㫈6&Nu7@6'	d K;V]"2|;fTShJmPv"CvQZbtG{݈W(O~`nAA.'m۶\r]v==~o|)7v
+v~ƅ^Ef+A&/I>b
+{md+ۇϺmxc^¹q*-k{/x;9g~!qݻkXzjo4+9,臲_,;G@֮yO05RTr>VD߶{m~&&@:WJq&}S;C_aX務8^಩jDK8酟֤3j{2i/r+xu	HrmywhBrFN7ezŌ'ǥ@`Q(y~GHVMݓ	\[x:#\XI}֕vTyά$
+{ŦPڭEOe&9vh(|[zՖaaZ*Y˝CS$-#Sh3|ڔMAs**FgʦFr*@'TӄM,)p.Jk c7)Ly(G3|0+}߸</,MEa~5˝9 ,ATZe.oZ[Lk3#_f֊5lxv~)D6?UCkNQVxm_cԩr&_~W2qĖs
+?ksM~& 
+ݢZtg
+T >#l?w&$CSm)9)^^n}~>Nؽ/	&@r?{;<՟뷌`ܹ]wx"s;='* ɋMz+'čowD+06Rva4/$6dLpuӠF ({3kxiZJ`	CEo-7d"?(*usL[ؖw慪[1߂vu-}o0&)3!bM3ZP+4եpp%Nz!>wp6K<kn
+}a|U34tm^lh	`
+|TE#}B`L	2솠5>u<)^4Dg"V㴉ɉƱ/80yv.OH8ꢊaU8(6T,[t->97hK˂jzDAr؀}cx@u\GPR_j<l*ӳzN96Sna@MWgr6_7ƗҲ(4ACľh~`Eێ'mŹ *TW/MXh$U+LYL2ٝ"b5<9@zDOvrZVj]rg1a]vvÉm3eS+]sq]C`Pyo%m@@O9sa?9E~Ysh:fH1<0;g5(e3ynKBBPͥ_pxݣye%׷.ݰOXzEVBJm<sR0:VewIĮvDkݣ>	v7o\ZTŋꩧnz?o˗/ ~vZ?	==~o@T汜fVCPG)pgÒpB9'r2UHXq\j/c.9%Q~M5Y?.$}M8gϳ؅Cq+DAޥc@Bc}QWGS.ݬ=./7ᰮ2'ٹ*T2Z!6{&3	JZFܯuIX&gCHyq,M|*4hy߶i8geߕ촆Gګ'6RzWCSF`uOpt]T1`PsJrtC*Kcj[ʁDuM w&w0#dJF\Խ-je+pk/f%u^Io%XYUއ?ZK/X_߃@\ܱ0ʖ&Jʕ(ީVp#EX[ݣi(5FӽʻqȹwZ]//;y֟MUr&QҺZ`/Μ|L,(e΂p(yaJށ2y7Ii!Z=JN^"_S̋8 VQƶN Ex7@[t7<w_ijmߣ@R
+ўN8|ѕT|1$!f'g`1$+
+Z4LuFCl>`Xzԇ9c973AD.`a#_Bj1T;D吝nw˖-D]zcǎolԨ?<t?;|@|QKX[M|&`'`3H/L5'r iyA[,bE*>xWzvՙ&ki& 0/~w{v$$7pw(*>Rlr]l~Zȥ8O LUxB+<
+Ks$%*WjYSɬf:4>Q$<3|GÆX_خ^MBχ~ dy|{)|U*öC:|,T/Pq133>CIQYMV#/(w6z=VJ{\^(øXSu{)'6Ffzy>"$(m{5p~(9L`j<1+Bc خ$l^1cElUmJߡ><ߗ;,㖵rEeF/wѾĒ`N25{-nĈ{ejsT7;]?eVV#lAƹΈW[",*}}|EfŌ㘹Ԧ#]<Y9` H\EK\wcRo|X}}q3,?"i\9rш&6g
+Ja P	kr0\Kƣ^1?,I#uո_bM&qسN~`w'9'xׯ_޽9oc{rO}x@s0*໺Gz),1Q'Jȩr,螫cNɢH֩f#yu2ZH.+		ǭُsڧ-cȲr_3E\ }ƭ&u4rtML:<Z	<௡)
+ⱁB56OJh;#2j3g=4VH6CxA-1A=PZvhI4Upp-;zEwkjp%τ>%HYxsbLVBAꃡ	sJ~iPr=Gs^xrQ7_XT6y)%F6UFКJWű`HzܻBah!#rcJՈWkFU,>v"5_^dTWQs;>Ӛwe_	hw{ˁv&=WY.=j;%ݏLa/fvoLg#8v>2>D8;z/{eB,,f-!yN6NBsi%yKDK5-ʵ.Kk6♌sth}@hD@0:/esœ@xytxuFkl|*kUG/mr~ǅNh
+ØH`fcΰ759X@Ȗs|oHcӍU~%?ZZYĎ~{gvqÆyˏ?)yۻwo~:?dݰ#{7C<
+Z[tʂcn=04T^D)wy}gc&:yK50ި;τL)Ôll+KDua-="~}D^<fx_>'z6hV?\@'>XBZ'ŶPs	p^kjꆴ3h{׺}]Q5#jKyWBy_{>0˘FO&U}V{A|%7|Є]FO"Ds6R/.gFU,YXwng]|	,f=F~]*UxS"2	{[*AZ$yRK( :<Αy O~f1}kX_j}|ݫ܎.4\(h{Dõ0wm+ߛ k;fmҪuE<njڅwZ͇F;?ћłmbZkzcS#T=dnb.\jŘC<_OR1^KK,4NE.(hit	~j6ٞ$^/dU;>SӮY9v.o]ۭYX9S~Q⑊*FOQj$QD}cX<75@vH*M~q;feRf'%G'@5mgV0T0ck< Eh
+x]ߣ?o{-Y5\Sn֭[o߾YfժU;cbb^{M6O?cǎzȑNܛ-2/t&wfXڭFlBrNM,xcۑ*0{b{+"P&5X7a0/:W	v1}]hڋvI tlMrkا97j
+?sRJzCS)8ZW\"ZuC	-f +by^׍߷\Y/M7ߪMO&4q;4zd,>95CZbm}%<+e qTxU|"4$+x]<:mu | q[e&C෭+$ rgwpJ-EbKJ9FlK3gZdeol"zqZSkP` vbmPlF9rI).EE4օ"~{FZ/~LW@mQQ@#S"!Z\ꂁރOq	JoC!{
+e]x/sa>)D}lbf27)eF_[X>q:]]qDnJ|$@bJ#]Rk˜J+cN<y@=TUjG-k9ye KI}bG `6&1"Y"6"TH~-g&6dix<(-o*H%f[Wp2	n%pF@3piK+ʕ+Aۇz/?ڵkܹ~[QQQ|||tttO?7,e%Ehw	@%1b3xKlIo?86qۊ*J]brȊ<,8g03b	>Vi0߉`Ur0i$& gSk -EvbP/rt޿N;?!VH`*c]IQ]&}TWm	39zV?kf0HʹFH]q7P$(wȮ.0=GΪGjd]jfxOmДz5|
+-%h`w-}Vmz]v/a+3cƴ>t}bGg,jf- ;]B<$aiw6DYj>Gfl}'³+X:ZXVP?Q%3ܦ'Pt!ո/sk\{]W3\󓱋dT^JBU8L?3(SaY$)"6/WqL]dq3K:^"VgXCà/@+%0/-r~vg\LlL%WV\  C:}@08KSoak]KJD"yj1NY.AuOD;nnҏZg͐'܄lK2 I:ΏTaiw(0#үG]D2	`qCS$6+O/nto-cDu1g=v}DV~;묳sС9G%w{d7MlUE8f3GPǄ2ՈG=,펡iG;Xa̟2GU,	n?)zˁJ@Ҽ[Vr-޵kV9w{_=O+^)ӯ43rje%p}>#hHHXt	r=9rQ#5vw!#MOdڷU"ep[9?rG@:$E]ο`TYuPlyygm8a͙>h>__S7M~QJhWq1Հ^P!eU,)MV0,qSzV{s9?p՟2AVzZa~|
+.B\Ϙ`[/lU\7,hR1nݻYЫ[tg&",(So쐞܆=-j6clEy&prX!P-?50JmfY5-Eͭp[M	-)`mcF/auX`en$6NxN,=H]v?vH eF`d*{D	nc?˓h	ȸwٯf_FrT^Z_Ж`|IQ%'\è2ԊVظ@Kƹ2	Usye7ԄbN#畩ο6%rn<#+o#ǗV4a766wmKy?IzbK,rCΑKq9IMzǎ\0bre|:K tjxebHVHNhcue 豶(BYmZcP/vPQC_CP)mk`$pOdkMFVTyz<7x~Kwu9j3kHī<`N}	ާU,oj~՘u-^g
+biRy#_v盼k<Z@2&rlRv }k\Kt+{1Sġ\ň{ڍh{wu9AuQ6ZY	lUһ)"V*(w6ACXN@:%[+=R`|t!7ヶ\q|C)7ZzI1f<ZKLp1Vߙ  UwkUHxiO#IV.g_ikenh"Wg$$_%%4[{W3#?ϾFD))k/u(42>qnKUVikhM^UR0&^G=dU:tF{'R]\yYq
+2_؂ /uH%'z78e̯ƘZ+//F=%~HL5ǠyK!?=Y{ĉoqnXu|p3 +Ec? P'給~=,~Lh ,NgV{ߌ?2YFW4>@,#G)j*! ޒYf+bObQSXz=YջD7segC{b`6.ń7CgX:Vk$@5C^.NUޡzˆ?zJ FW]~6h[+4۔$υV<a|UօZB8!gZ[[}+ے)5]b:9x0Ni20% 54_1ԛYϕ=?ʄ_^%h
+&1І^Z8Y{X.oS9Mxl`^Q
+\vcM+#:Uذ]mi='2"~סm<c1%hk֬ zkzf'Ў'\=b 7l[}M	_m[0 {4/oxɴ̷fVHO^͋~*+=:+O#k.f}<R*PT;?Y\m	]|HJdz44^zlmÇT&	oyxI5,;3ʜU,[c~<φ
+1iۖ/7</*c ,%F¡A%>;g*v-|D`Z	qK8Qߐԇ{Ō-`ѓc^jB]	ۤIzuС17,P­ק2-WrQNRscL7Ubi"F3LwX]@+f;?8eQȬsE`5d/]bBrިeB{q7ZB/7w	RQTk%~L^	 ][.碂I㥝l5I|) V`+\%=`}Yti Y) G(wuF(Osa󡕶@-G#a0dfhoeMLش~Fx婿K;ggZAxqp&\TA3\H	/GÂH7
+sk5MC.P
+pª4\7R	wkk0@jJDS\y~˷ιBkEvXrBACSjCbH@o+``L:8JhGp>NŇ:gA[ڂ5j	On,{<bY^ݶwX)͎Hal)<44>Ͽ%o~Mv}$YA9x&.[TC˂`DAHR>\{ܯm]}X(Յn쫿R(>qk-+,}N;A|+6_r;&.V삮Sq /_|~0zy̢QCT񲋬NC<??/!#%ɸ<0tHfEW@0D9];cS%8áOxU5{n?~Kx f	~DT/J\f8
+pDջJ,;f.(xeƁLlMxir:tq	XPL4\T!ST8tq1h~E`KL菚;sri׏o+f5;aK:ڕkk3hQΊb$:ki}6{Bz"V׳hk.\FJڶ497(aĬ$(D$(FTPEPD:tA"T  0("|Wu3_0:y޻ڻ.gUxհA_QJCح0dr?MG~ΨYraQ,?u
+lX&o@'B(r|-qV*)w zmw{%+jux_;c$()W^@/OXY/[HYY%\jm چ.дtg,jWo+
+~[A,ܻauAaGᖢyfL{R4HN2ԝ$6xM
+R zқXt/nSǹL6 j=[O
+m@#E$nU< B*յ)^e}M_kzAY?z^4qrӽ2<=>ZAmFzf$"k`WOvz}^I[ rY_b= [7,5)t6kf]on/l|}ٽ%tT`yV#HarT/@uKsc8 Bi	c)fd!0>za3 k4N'kPNfH gTD&zmYN-ͬt;-Z8!U#t3_@}=eQ&:l.%W=2mo0MWj-rA&!+q44C۬
+ހ {zʥɍgeFSiV%4Fiu*ɒRv*I)*wtbzͤxۓv[>b!E)A1sވ,B0JGE_Yx?_DR#mc36\~/usJ3"	 U-8١=ч'x,g攑;Jl'9Ъ0
+Cxm+(+&	vuPR丌|^vϾSe#eOO۠ɈjQ
+j6Oz9QU70u%BGA[2\bm=f;Vg߯GjyⴳkyLmeɬvy`X*٪x~5J2K7Y"ln'j='*T.fF^B[k^a[˸(grbۊC>1esO4)Ӏ3#Dz5</>[9*z8ǐ4P9Ly+2rɋRǗ2#0J*Q{HƇW6yqO>u+#tE0wbv^/mQF~@񕍲`./<]}maUTj?ΘY<[e9kOMxAhVf]9<# :+#9/^&4͸x
+qٌgΥwX332pcÌnb
+_Fb`108RӇOA9a$3'v
+
+t钛cب_>7+N}>}:f齛΀etBU ׂ]؊bߧ)6Y0)v شWĤMKى)qjmr|"]1^$ⳂH G7c+;Wqζo	sY	IxFSZ1yI.>*Mt&D(48ԫ*sl{$؍2Ԡz*䪕Uhv"(ď[=kQ>SΪs̷=*h+j}20e`U-Jw?u8ݵ.~Fi{6@LPsKɭaTϢRYzrpha^F;ɔר_f0+?:cVЮ>)**A0SNiw.1&F	y}D^}@<7ҠsQVɦ#6#tV.*~X;&7m]x<HEtب8׎wGXjIfz"_*	ѯT$o-I'>!)R+>P'Ru}W_pЁ^O6kywG#e<b*}Y}̨́Dд02tЎgĶ}{3_j3یtnoE>O~Y_;s<m~53`-Ez?{Pp_6P\Z Ꚍ\{<z6+x;|Ϸ=51vSv6)?N5hQ-JOSNP^6jL+S5SAҭȅB'0lhs*7F@Z*V8`VR}|ɻ4w\~!UXth=**頁wg凌&1WSD;*-E&(%$>/\#v6SXβoKl5&b^ARs`q9nD;8-;7^;-#̳5M̪LGIRS(crp6>
+"uVjfXm%TZ~_}S͑:.BY$ٺCLyӏ;23@rlw|8Cs207֙赶تXVTR;e?M/(K⓱ ozz=t(&`>)e/]晖`~b0nOmh7:dhʕt%Qfe^Qx-AվG:*ZuKW"0ړK92^U9K11\|m!IӎNHNΘ-T㢦*ur}43$ <d[4a0=h<q}4,I8szEzv53oV¶ʲXWx{E_S%Fd1r!1xI?:_#e0H\O時۞4l`1#V R6\P1[+ɶAjZ/%mh77ۿi8W?X ^ll湟e `i	0հ06)Z8Tz.݈ zI?CT֤1_?3M+CāeVmfp2	'={gg7Kv}n_޿ϩyc	DyQ:B,7TD_M:j Ȳ%6\-R+R֢WއKG5ab{EW^(yXb 6h)h_Кwz i	Bu'5G5ykJ25Ј㲪0PXЀR'@ťE}0~u&:>~D:4 
+.6&aU ~<Oҳ닊OtylRS/Ŀ9^V8[| /v
+'	,X!˞[&~"R9T)ڳeL\/cAx)M/2qqZ=DF+FhᚙYhG`2_Y=
+SUŦ 2B>ڄsrΜ~9NHl#CAܸG Bcom:3=#
+qGՏ9-)|p[LKh !e/X(s4׭8E{{K{a,w7իYk7{}^C9Hb-ؖ65+Mq5+3r+N=O47=pG JdZz^fi;lXnvxC.ĦF0.~5y_\fG᭏e)H?2-=gO;@"Mm^\jFN@[-B dW]c.-jXJv]T;DA~22P\|'fĘ!%lK,d\1eB;D %33R!U=ZFeqحTڵk<=M[J	h6kyD&?&|_1,q>4GǼ2dZ6q%EMEpTPt33J	A%RmԒ:OTxbuSz.)j
+ۀ>w,l="~kƈGe<?jЩq5,X/(sw-b`Z;Sb3KrJ3Iۆp+MZW]l]I*S`7.\;I@sۭKt[]!@g66ƧDT_v˄[t	)5+ǃJW 4 n81sٯTwSb 1EYHbi d;>CêO<J6[; à?im,^A`s'qsI1y{Q(mL<\,T{хdF(i9&b6=ÓMxAc$NWb$:lĲLoٯi.#s1? cܪҖ?n w_Ӌ98RU^#(ϵZcQ^<}[@6ίV`赑׈+{dw{[JթLV t8ϐj6`UvYi._V%umUwNUz3Qcayje1'ln$jrꡞ%(`bTai%Pˈ,ڍW
+8J_3>mVHݙO{Raoذ+Tp
+斏>I~Ife/.Af}K]+p{%`jO1ʂO5ݺӋZr@=R,Xhs-Õ+ F)h^R88Yq(/2(z(>68/TP"+^MX~ntW|5ܭ_6vՋ5o`NW٧>[1&\DUTW+  Fgr`s6ۆS.\&݇stN1.[|Om+	+	@#Z}<t'>@ssi=^}>^~0HTΖ&y~
+۸TX#Zs|H-&sXtC*Z	]79mi5*{-x/ڏTgg*QI?s4ӏ^cTpM}+5:\@^T.{q"nY0w`W l~RXC8@5ƫj@bo0 HŖ`b
+zě ~--'!M"y<ϧ>ps;vo8S4euigFϯeŌ,"#L V$+t/vVSYeOr=CIcmlQs`3Ng;[ǿ`Ŵw7udx9ןܢJL{l`E0:/όྨaI7Yq!V`1(4v&?6&aadNCAS>71&taD.މ	3pߓ7|sk}voֿiƓ @od|v9<vs\:}E;DF9VaଳO;ѠG_>u(Qhp[4ȇg	E];ܠa|굯|7Taxb@_DeN喀4^t{4t+l6+[b7.WYb'=.j5,!h9D9 g&Q,'ʊ9G3<*kl ZtST;}.YЙ_\/_7{qfqUdpcg)`7{@͏;0~,t/56@& d?{采/.8v#Y4y~
+
+_C],9q_qJE1M$^DoYD,Xɭ@a(I`4q߽\%V1hkU]=06Wm	'>/QFc0%YUR/*Lnhba =%Iq^[lBc1@yFZz NߎyF&"^ԂI/[u$0e0y#]x<<mp |UUarM\2_דq;-=/M-
+yYLYY--3pAd ij@[ʬjlen'Zr+ǲ廣!5GnhS@;x	QĴEu,Uǋ0¬0x+ޑV$32*e\nC[ѿ,FÐegqZ=͛ꅊ0ƤblT[Bv0H	igMsOqq_lٲ~رc֭F}j;~)M~QN!vu]HzOYBfVN9
+-6Og=V8~dtOW^wEUޝz=oJ9y䝘ѹ.ѷ 눃~нFw^!h9=*D_KY@	J$W,.9Vn\xș,Vͻ0Of>9m&?f#K89#a.SYGv뭃/3])4;̥Y=H~!2>>VOϕ~C|d 6_FV`l;nWH<dvcĩiuBzw]zRT:ZKAy%OhӁF2)&P ZIV52Wm:=R p)R kG|VڃM8@N:旍,8:\ l2r!8$3
+.E)%e?X6#^޳B+tJl^m%&ų3ԫO2k,a9Şb_vLz%J:Jx86%IQjMƎw0*xzaϑsq*,I7.[8+380qm!^l5D9um=V/MPp1И50ua\:k;)楢?SMF@'ǘ!/^mЄqx-l "%ggXHEH&Y 2`G@TY<h:Ά(56ˈZ\^M=t5jСCjw=ϿzkW?^체cURWBH5eg?9cRMTWqw@T.Ct(]R;TW1ٛS,͞]2<E<%3<F2L:_x*l4}[:`BM{~9F!b}B4,ayj
+u#.͎άxXFEMoB_R#dD{U#'N:7%G}P f	GH>iwKFO*Axm`|:.@:W-I}`R&vrK S`u71>wWIiX%<39UWzhZJ.Ӫ ubq4OUleuu8Z{Y<ӆ=nGth*Pâ[%܇ӇnKhCϢsc{'j9wB@՘qu<3kdFpk<D+@Uߤ)?nL-%iuC
+Szy4l}{Q$QnYd;eW&\\a59}*(̀P/><fwEMPxqQZ"C>.?ǋβWϴwE~I[q{^/߀WB /hc6qP;V,3G➴;ɱ\QU3UY&cUOk43ð|	#?48M$'@[f4d4ZaTReʕ?FGG_J՝oDn&WujYp$
+O5oo-R!pXPe%r͢2\W XhT40ƵW6nW`"zĦ2{{waT
+/MFv8հ-ȝqbPC_M'ӊSt5u|Ը)qϢ=:ZeF0`C-&2(]_YJ\(hBo"t#e$Yf0O[Ԃ{}`[Rp@&姎-rwЭK9_	iIV">b\[~_wĕ<!ӶlR^,Qٟ!ZcvR`^Ͼy	8hTX;ZC5i<wį=lLD?bK:qfFQَ@szJCNp+
+jU\uьgdHj E8[dTsev~9S΍.y)Sm|AlI*9|_6,[gYY:ۆZfVㆥo2lP4 G63M!.i9x|ey"e\ئHe[|3*olT_ xCK㧲u3CWQͳ yJO*TrK##Pь?N`̌t
+7ћ3xD,e0ض1GMU޻0wZC86	FDgZ41#=[z	~O*O?'﾿r-u]d	NѣG׮]ۤI͛zxsLt&;=Bo^dDWquM뎌;r-s"C|3M-tn/25Mbm_)?g.pw)n3,gz젇]ƣA*{<o0~`I5s:>jgy(ZR֨ւ[_'BDsu$_bD"dt`XI0pe]'y/R+%ߧ4`S蚋pO=oV'C|`
+v20_,vj%(}+gv 'wz%4zNtԢ0ϋpkGR3*|76Ef>J->ܺlBqn^c TE#fւ밝PE+:h{
+(>Tଧ\[A& +2K28
+N'Hq})qO[hE^`d2\ly	8Sqgc ((!n20 ݕKyy#٬ݬu-l-l
+<\<0?z/ƭFjV܇:=TIwn\f3 ޮY@KK{|A1@6gW[`tQs7<pr_[·Ɨ@pIVЖ=SEH@<#N~Re&B)Wq='żb/밟i"tz2=ǠRR9oZB{:Bygv1N{Rao}.<Se۷{=LuinzG|>ZFs-%GqST	l1R;ŚnS >z=Dy4/Avw'׫(LL}Ԃ'{uZJ#pKYGWV+ҏ^јa}]mԅ@Nox距5d:Cн(FďTۋäɭǫy©r{n^	J	8Uf\i(ͪ0-/"3#ވ&7r@Wn^PE`UnGB\w?tn?.}>WR ({oM1 mt`rd'uACԜOe,q|~a劽r*\z<U?ݤOͲwpQx3n-GpHzFfG/e2Hp֦%<Tr	>/#+p G쫢?炒$e1+9{k,
+XLOWTg9/UA-^%(` 6;6Yqs|^]t+|ب<Qf$82F-N1=Ƥ Zސc&h$f'W^zz|AA"n5SFz!-P8xx#y>X@u!m*Nŉ@jTa86ېřlp Wgɍ&VN{LyDmqt-' ^*G8g<csָɪ<'&D@T?[{	)WTN2>|xС5k֜0a)O?8po]'F(tO[:Q>/:>DmRUE8T0yanfoRuo]D_}6G~4JQወ-* ½"cV]X;c~'"~E{S0]1{x6cʋ=m&UZDaɔg6G88p[PĂ,%.獜Žx+N;{Mܽ퍴ET#m׹]61	`TěH:mY=֎%)/|./XA_1	)"`"lNݼ>&
+ wly8Bq:@Я=@ve
+NN&W]D̍U_uSMt3C{M݃~1/K!vwt_=Wϥdf 1Owx# E#Hm`'gEĩy^ʌV"nC/5̌phf "W̹	xbSo-ų*N<qQ
+ЌF5ؖCS,kN>;c'Z4:X<˗~Z@xd+;,ljl1 N4S`w.{Q #y֕<WΪ%Z8/7+#Sg$4J2# h#4
+v2
+Bn\7Z$E@_Fa!C^}cs0GҌ8μ*nXᡂ[W4V16g;B/)-}Oya7	~O=ztȑqȑSpS;v}
+@DZR2?61/TIm}g'5(ar"*=i#`NPpD@[0Qte%gxFVgl~y|6xbJwrG6Z)]<)2fsQDΤRk_Ù~Ǎ`x#i ȎE^m%ֲVP_;h"{KY,\ Akd.ږgcn͕_c@$ #:: L@z	љbRv|ꙹ\ӧ#w;7`3pM6|)ixF\!z}DGspra:Ŵb*ŦU׭zp{%[3Z@k*szPue|zT6-<0,܇o~l })|z^3OVD'BNؼZE:8_C|Yi=gXqZnYMvzF+Us_ ?WhV-A Y,&I7pD80BXX<-*5u!X#Ľ#Ng}ܬ;U9ݵkc۪
+&c\	;7/;#&\.U7R,3ȒsEyf]k4q]|W1SH?(Oa JB^t|a猕k<'<B5˳a'I#Hӌ3xTƛr_Ąت&}oJǙ4;㹈HO{,W:,~g[[\\]r{}6m`Sv7k֬ZjQQQ^{q4hPZZZ*U5jm۶]nEFϛ; CtO@nR,ge{,)ȂO!^Bm2}v=-!1`a.vn8Bx`Fw:{T5x?7}Xy)Zh~&v}c;r{ `(ERlwXPG=+ӿ/Ztb`Oaֵj<ah)WbcOy[5(tEAX7Q4w+!ߋ>,AJ8#	
+GU$+8Ʒ؄ E=FݧY"tsܦtlzvmV^{FQNYj>M|ig+BCZ/9HWF5jQDϢKh]Wt;(L#`
+9kZC2c ,L<VGyա3K33RmnT@=qs
+`:AGqRsvoRH#n_㯗/ì?LtFiEk
+?A(L,F,hTŤYaa[8gQE3ZR?) G: ޶J{Xc㞦=%WL5K%Q*Y*c=ۂ-Ȁ/NX!Xf \>ACȆ'Z14 ZNAGX6WWge$**W!9֌>%fRl42{* m596FPgF3Mx9a vA5e;w笼ڵk09wt]?e[j5wygذa+W4iҪU>k= QS
+A"eG4
+*g(g"Z{m-תX6sJjzIP:E)Ē7\V}Dhnm\_Q^ccgh2wo'Mo':_$	_uWo{cZ.&@8 y_QPLSߊh>S.E/g5)q]p4fgZB[0Մ:Uj
+ba&ВՉCJ'y_Q~;vmač*}³jN`*n<\[Uҡxc`OJ=qP\
+,f'Bz5='V
+5Zt(DSϓL@kԞ[<Wʌ.l0.?:'PCNKhUb[icXS.S;hNynӚ`ZZCs9
+$]mS:2>/;+#	oÀik(å$ZAd,kxaJlS	BxP7];C͌Q_ h]Ck:'1hi	Utc^y
+##A͒xmhr H:ޥvEXo^xT["Ha-2lQt4VL?96c`+[[r-k[#:2Rs5_/ͪTt- ITnl/*5U"DI9D|= "IAՉ10iOLbZuQHK?9Wq6`.N߭b(	4	~-[,7C~ڿ9ex&M3<þk׮@ p7?4&唭5'偔SS2=:ga[T9D/Yj.Dc(rliZ\ymǡÍhrp_FZ.`
+Rm A2~]v:i
+Rzܬ-W ׽zQ,y][3ۿpA.L9W\gBear,E;Y9ɶZlݫz:RҭbY&;z ~)v.RL#cӒ\DH4/%uh	|Q@)߈'fx="Z0Fe[O+N*4ADQSVW1{O(KcICXZ6{hSIKczhnܢj<grM^]tNSzk^a(o>43=Ày>n͸KoU+1@@hFZ5(F{ʧse󵤸KW5Mo)e  ` ƊVbRMm"4ژ+P䦳ekۯ[lC=ǣ)w8WH<hI:O\Cqry1Zc?Uw3}`s@cͥFE0E@W[lb06juӘπ&yި,3eF=Kb^@-FLO@%YU=Oםv&;yqt;03mG0,_j=
+ա6mc4F|ۛxH,pGP|G/5+3fBFC8x1pzg4mO1E@}nBv###̇z	,U򓔔^y			]vٻ7UPa]v߾}tqzJ( Gh삤K9#(;FE,O`PD&-D;b1VNkļ]թ#ZNOF.XƈECrG}  rg~z9g[2kF~/J٘0iItb0נ@WD賾)v2,L?*2ž8.BZ1*l&t_ގ'WdX XD:*9 )Xܼk 46 >2|9~"7 Qz٣w>r=`wQ^&15}E⻱愽'p8~j5co!{0.sNQ_sXqˇ{$ҲApXk*2,s&٣2|[EG4Qd6T6Ga))&=XF>șFg/Nw@;8,xƿ
+G`3k'DE> 
+ `̌EuQG]Hi2ں$aUV)߷γf\c;Ю]k??}	
+ñ_{l0f3|mJ6E=t0YYdqZI1//fi`7$TS11=ߩ8ksx"/xROKAݐ}(]!J/.豥yeEˌWVjU(Gvz.?у|yfq:H=^WGJEY㧲9}ES YO3O9v~NeaQ8`Q1iC$nxbҩF7MO[N-((6mǍެYsYjIšCh̪U:tՏ<۷o߽{7-[vK/GG9vR788ՇuN(LdO2Ѱcr*3iF=,ALu2.2cؐXLV[*BMYܮy R8pk~Ev4Z[S
+yx->kӑ%(LwMi	_ J?iQ)zGX*:XdM@	`H?~}h4@P<P>%O< È5>/[~*#?_&*]bꞛpbS'B\ۓ|x=LVJŤb.sb5+Gu#}L3Z<5˜n+N"am1c2_8qcejѮV 2!mEo/Fǡɗc}
+gZk1TWYi6r0?W\ѐ(!h6W \/`9/ع\$3rT/4@[8ޠL8d-m-]͝Ĺ_`o9<+#f1ʐęi1X(TӢFW\?1Rp]ƏRj	ZFfu2>jc1 j,%VR炤\8u<¥VpigF8_F٘sNOj [Ϩ
+JzriJGQ#&Ɔ)/Smh!uVMgo12uUjȠ/á-' o~tRڴit@>l\~_|~,v{ر5kw]è]2ont0D?D!{7ɈTh"!SF&?0?+$5~sƩ% 8fen.zq2p#,!X$WUonfX=8Nu3 @a8Q fIfq'WyюYT'qџV11g#VmiLT Uq)h)s~nl/xT</Xa`$Y*#mYFhDлCyb0=1l/Dx"p*:HI,4ꫮωĹKgu
+TlG^AK
+fZe#Ňnkb-)<D-8~f,#'2Wն*
+Ol$'qhY1*FЅKX=jЃPڥC:-#-Uڢ<߇Y[uq8pS@PbGpd`1͵sTge$攕W˥43y=^m+UD6 (l@s;_AYD:+nq!Ӕ=l<",KW<kp)ɌFK*p^) /}E/7eϯ#gE/:.OŚn  10ťIˉA8MHm9GB
+x#{K=?7OAZvZmD+L|<y:^}dDot5F̒F*kOhcx0uAť>F/䮢͠XJ	_#q_N/'? ?`	nO?knK.ٺur-'^ݻw?oƍ۵k;N2[
+84?9V:{ \q4$.ͪR 2'
+F": _1fSoD# hS⟞hG+3b4%h˗/׋ՂRF_[o̈W(ȑZ^㢉11ϵep@*yYR״䂛xTlFauشB2xaoyh*Eq7[lU|ū|$EIwI3Qx,j07z^تʣtA6@'݁
+B5	OlS,Y3NHy5
+r؋@=j<E^`kc΂900|W+ql?
+FTާ`ڿz)e\}J/lE'y4~U)Z6i!5jEs,H)uDZoLd)Φbh탙.u{kn64kH}|Xf
+cs
+P1Tp
+〬^h?ᮮapY4\.v}Սd[+l'{Z6W>;_FY`92*T5l; lWɐfv؞4,;R/`C(@z|sN_zB"Oo&W:z\>Er^c{՞8Q5!%7֒k
+1Dfͮ8f81>3K}x
+`Hь$ܗk#ngr?*ï3kyE]ZwsZc_}tT
+KR0F.]ޕ!*QEGN/{7oz_ߓTQF-Z_~ORaF|NGY	αb\vD	Fp-2#3RJ 1:#iu4&[	I1*^"C?@19  gcEU\+⼀\[)C!?9qU(d(Oeyn X 3-,V"Gnka, q0^OьLeO4D9SEY\yy;<aA^n4, $}yPGڲ/QOc"~z܋Wk+Gt_D-򳒳{YD:b{pslr/-
+;8(9~'6ަhoQbʆ^!;'G)~9eK~PP<'Z+1:=l6/ք2`8:Y|2=obz
+WvF)`KL;63(ϰ9xS[Cgrr+[iGdPk|aR`6+|Sj?%eM`,CTijNwW4ŗFTQ4,m[h(kATȗ!Mn96;N[7҉`.yQ )CD]G̢&~gba!3FG1˱hL%Թf8b{Vb5b[Z=YE\Mc"Jxi44sZ=Y2Q0VTݱhM] <-c";sM6Rn}6m-_|M6-Y	_Oߘqsvi#G\~SO=رoeB'Oںu:懞3xԗB(HPY!0B;[G?4l6)v ި௥M&APtC@(9!jM3Gʍ{V:UFVB^M5.^m5")U=	ʘFp?,V%wTA~eE;Hi.A{%}@Oloe܂!"e4ܴ̌*W7\2x<jk1yAUz.^KWx4+A.94ԁnw:*pي*sY6K ʬJ{2n*diD&xOZ}C]CtAw/XRU=S؞S.7:>#쑷!ä^P^P2Jڑx65)?I܀(hZ@\[X<PwQV }5?Y愲ǋ怳^gth(!,68^՜eۊg\ 	'z
+ _Kmȷ.C^K/BUɪ2;{#fco$P0}_Utx5eR/^V0oI6++
++e=
+0:32Ud0^AEϋ
+|3DUm
+[jcKk8!2c00xGd
+ED]۱cUxTۀRՐM4JdBSA1aG`Tg fHO$V<o9a;LMMTR5rF2s؞={o:ujyN]>m۶=3 ?~Zڵkwn7nܸ5k_|;s|/@i1\Vש(B+pflu]/ g4'e,o<?+^A35nU̍Zl_,膼 .r?RE-pKR,2WU5`23*r'N~s`y
+ 't5r+n5hX0OFXHVE*ОŎstIhnOB_1Zx	\'ůGx}B)@|wMqZYU|-{F+sL$݆a`52>zHz" .,z`+	<IRNI_ITGo׬'B/SFX$.,KV7w_%,S ji;'LYX!d#x,&anaG/ZhW{R zfc?]fAт2#<jdA"FG#^i_^altc\f2_PNWj40vs"lhih[ܝ`ݮU_sK4x51&0jǜg^<dFYXZky	ɱ *R&qrg>A{-FvY-=EU3rd!UB"+&ĥv*9 5?nUWvbd$?JA{XE.{2#XZ.vW
+ןىF; ϝ29/RY(;E䅟g@S4{LS1;i	mUqf<4QKv6PIy4> ,8_~%>fڵ@ 0vؓw_8z:twqwȇwRY <1ź7~*yM+2RD"Dd!q#KR98KUMGm	`U83@RfRuN71l8$WY}r5v6Qgns\|%ԸIh.#< E(]L'ޑml ԋ<+VNFWzQdHExYl`2Q)["(EEM͑׷7|ό\ǞC[9kvxQ 8}rȍ#$`. gfܭqAsQvMNHjTNhz5Y.
+Z뗀hI@YbG!^mtA;ў!tjՍPHBMkY%>q:'nb06h+_@Nb	6_l[>Jc]|ɕ8!aF5PPA",(i뼍u(;G<!;د60*!5N(Ǭ&î`f/\j_se8 )G6.7}gK=y&<x-6uF Ąc9|N<ddL<zHo>xeUO>q0<DfHrjaTTnW]xH%=nUf{Q̮c;.-1IsĘW|PՖ~nc:rh$#HR5=┍>JO63;;HK0"|9?%Ο&4!Fcnx]Z'v333gϞۃSѣGٳgO}>/=3 ӝtT
+H&aČX}tҬ
+ u GнIk1_Ëe) &F0IT
+k׈Fhb/Cg";8;cqTÍ$f߆N沜`WfU̵+2,^T/Ⲃ-J
+ƿNg*+jtmV7b^v.j,p6@3` Z}ECs(e.,4\\cȎ$j-oMz;h	4ǑA4,߮{5*SLx.PŻwr(~׶s&^='Z<Gr*pAE
+zhG[˪ys|UUKӓ(UՏ*/`hO cltԅ&7^Ac+"/BSڌ,>@vhٝ>R\ycc)陖[X=_0fSR2r -%>582jNЍC6hf X5<!6eA[vv/r$4WvSiBm\d=H%<ؽR?mؗ(BlyGd]33*\A_`\bI6!άO&{1'㧗*ݔw6,G{&hy&SUѦ%<Șd  .1IXGڏXZzmi	(!S.b.c	,)6HbˆOM{Wcs;
+^3NH\a41Q\(Z;3xD
+LDpGGaa6ʕ+[η6m
+U"##O}s
+vO:W c"סVmCfMkYꅌFUB? \yh ׳2jYۼΊ/y,.iN\A0ڹ#G*KiEMgfMwH.p	p:b53z`'
+sIxqQ-PAP8f3 ȋs#-Tx$ 8>?9<eKX="Ą=chE''?4_1Ir$j.I ]`iu1!(pKghKuw t&pwSVq=UίfҽZEVVW@z`WFRb5 pq|pOV<]Z4܁H8C1p5ß,/f3TX1גn՜31zT/Z^^Az8PŞ[i5b ,#ZECǏ" .;@8 #/85dA[|a@օn=`>!=nApq/w-l	n{.C$ .TW/|w"eW[UM%RwRKu,^pa٩*/`(ܽŒ1WbdbΝwKUUVCE^lpHF.k`bxܢEm1ӧm	oiAmT o AZJF0yJŽ}2jPO|K%nG8wfeAsÑ%h; [YQ^؍xߓ
+)))
+"DGG6+V2=ey'ޮ&3l
+,6HplX4a(dr<z83Ůpay-ݎjmrl_LAFgoP)bT=DySDTbwׂbPCtE'2vhRA3s;5"(N
+F]OKx燝d otb`Uʎji4X:{(MW7LZ	E쪦Jʨ/f0Ql<k^l	Z/XE`=RhYv"ĳEJ+L@{]14oqY+`kvݤ:RL%D7窋WQh g? (XF cNThSƽT둗*Y0ۢ)Ъ08EKmyT+A{c@~mU٦'_c,[If>[8txY`L3-cv*4[+z^,̯1Gz;8Kojd⁲:`%&u[O0d/?q؎gsqQ<dh\ndDrMlzռc/Xsj<\Am`p឵ڍm<=Fru֊IS[:UZm?vV
+F&3~m/1` 6m¦bl8hu~9ZݴUB9ب<,1c{ >ު#bŽ<TKj T2Br? 48j'p"6;.Feyq2PyF/ߠ kbDᵰuXRIrBߓ
+Z:-ZԵkW`СC̘1'?2o~)Lz6h'&
+X%2#,ta
+> 1/1W.J?	o*k\mJ\WD6ԸliDR
+A}* P_	ᆞE11oQ&̥} }"E JKhK%Yau	~-igsZ_exK,%,:WA%Bw]5ݓPle)vNqUm4VǜZFы<tiyt	FM5nԋUܸj4,lh	K^˱DxTMcb=
+EJO~u{}sG/rS?W*Vf.W#ǉ:bSPey	Y?(@d1Jyq-NN[(U-K8x5ujhL/(?fc/.ڷO\f^a;vmCu}ГXAO3mOgdwnngɹ`Ά˷[
+s-``+iWخib؍pD~wkl<FsycƧh⡀Ȕ']FN^b؜ɈRsɇ&C~x,jzk$W<ϚWkǃ 3FI*U}fde	soq^AFp>P89:"CZdf8qoQm'?&B(C0ע+`l RG/ITNAX
+X,/ܨ&E|ݫb,,bu┸gh!Uws}ޫpߓ
+{iР/,,<8S{R?4Cmϡ@e,mFC$Ls9r=sXZfv	
+Z!7ї<rBJ*#ļnq3H15=#ZsbC-u-NL!^mBǹBHEYq_LhG re^ܢ3<P
+m"e+"[	^[4MMa343ӖV_%q+Uw1E=9U,lӼ4:fL7 )QD敪;w[g'ox~ -*{6s[ES	W:9*z(%l(w2"|uGlTTM13P\QqwcXf4I6,R#5s5ʫWi%W0?	@IfG&#=p J}[6@/_1dpOϙksNxɠd3$mO|5^ζ]mݶ۹@݃_Gh̿ŰxNǨ 1>EU}ٯL[H1^*Ȫ&1ENrbLPt ؇qt>gȝXWXd+wGWmPAl.vX\ܟό^;bHߩTll6Fq$_wg0 G@U27#/88X
+-m<6R{:R l7?|ld!}*1|Xe"٭_#i\rxay+.1?UNTϾ}<g޽=zj&M`hk3;dEM	imɓ/V`9X<bn_\Zq>
+yI7b!m1w2AY\VUMW\ZQX<(:싲.YUhrη%w(""te"ٳ]Yc13<9ǃ^}IW{iu=/cR;߾ufAz<?arx-5hOYd\q'{D_F{f0[
+6IW%\aM59JZ܄ZbL8͈-LsX舅U|Ҕ `d^__ 
+=I1U^j;slu?ͻ_ܸgQ)V"wY{\=5Kѿ^	6{PN;l
+v^>zLk2յ֊:nĵO\Wd=9#Gmn hV:oyЎ6X[2[:2 ,5L(ƮmV{o>GZXe-]eo{X57v&6)TcfF
+m~mAL.^sq(<6ZHp3ּjdvY2*>%nU2v"mmbYO*\6dln[l0@ I`rd;_> &ǰɱ}PA2uT-{0ʫ2LceM6$[콣04QTJm# E#+4!^y!+=׹u>{?={~ſcp<BR`*[G~S]Iv:F\|=m8tuP?w/	8WqU0jƶ'_jXEE1ד., jCBEA9 (OC[81Y6x؂_'ѥ:zjLh=]<sVoB_a%' Pe/DN{64[2i.P4Ȯ=j̒&Ø`(ΊQ(_^1⸮
+Q}-+$
+X:C)Z'5e\|*{x Ƚ*d9]ʣ/ǎk{TE5W'rZbX6`OsAE_>cZVZv],²>
+Tﰖ1XI*e!H:bٴ:F#\#Wvgq1\(݂]!zJ:S1~͕]s	xǳ)}wh&JG	4ppV1QG$UXPvs>KK@/
+g|P%5{ӄߏQ1w
+'[jW,l%R:B`/$4䐾*p~w7O%kfwxwVr$J):^c eDDKr$ۗU(+6<k(G	p"քrb"hx.V&hcQncQ$q	f/E,:Jǰ70g\SQN0Uoj uR
+Rz64t:l̤tariDP}S(kYCswc9T~П^Jo|J;T;E	kʮ15%bswvip?{YA<Xe2`$!x\t*MbEoARmQs,-EMy8SWgT.Ȗm`WtWZ3X_ۂe2Ygrr2!3@~x9TN*d15;f{	WŎŶ (-Ec׮r>Pvֻ_xsO #x&^IIKs92s,	wJiUr~6v]0&ь=_:s%1L0СFf۵_=U	+mWzyi>}˝**oE@?frJlkns>}ghXR~_7\ǫ+X=(cnKrµ])çVKvI @U&?t	oz;Ԓq[#g^w`"ϛj	/t_(O+T;JZ1@.~<e`&[@SK+yYO5Cb|YR\bVw0?j?Nh+5GF(TJU+wU\<O\pJ>H/Ӗ'~Xŭ10%SόԳ/J@齖Ycql<+72ͭ"BŻG/h+è(DIЅQmh㨢;}-[m`@eC5H9xRIM/&x3	GyDmFQykpcoUYDsec`"6vy/8[v@
+iNfϻs
+b ڟxr
+,gYj[h@	vf<)]c<x	Ee94	8ULhЄDdIvDGdr"SWD$AIx	 )WTs+5	0ebQ-MxXǍ ֊1}e( $k'Vx)԰ril8*#c瓌ˊ[mê9g[W5O` H&<]y1.u®b40/#nmqmT\f(|`LbKx#lfUhUjбzg?	P|N
+.epYQΒdTBtF_득P{8b5s%qr2/QăuA)5)w 41BL~PBP'@Jѿuk oP{$Qai0gM0wKBRr
+'Ė־n+
+zؙLDlᰬCR.e-	e[u07jAoѐ8oM
+=V#hx?:s$~?$yxw1O4D^dx S(E66vjw}Ja!XBj_,({1O/JKKd_El ޕ_;}΀*yPp!냃CP,ROJ7{o/s"~)@hOcs~n]+%*-QW[#"[eM2\p^xNHM9l?{-++2e𳼼:ŝ2=^ѶHhο3>(;XC[RطnGBv\ M}uۅ4|O{y*T-І)bia1t+Zt8M&O@Y_<`Y>$uB	P%ؚESpMF	UA#%ZyZL ДɜK0YAG`]Ճ~N2X'ͳ,{SDUmRjݧ:ydP|(<xVv#_ 
+Rrmvn}v49_lۈQE}%sGaIyvfCcZ(z92HcLu]P1w|Yq^yJobXjVbIdUFGYBHrWk~xl-|UXeQh/[)F!.+.Y5<!Vjfa.HP]tiW6ҸP(deh}BRBv|g/B`^4;Ṝ#K80EߪcslOĀl=IQ:J?S&5Ŝa9TOG*BA%m RTۢ
+cHD]z<寒|%j=Iqۖ~̾<,֊Ќ9ؐUYVH?oodYR<Q'rUܓn
+Gűyc"
+zRž"j~*_rBQ=Tkx=p㣽	kwvc=zaڕ/ɓիSϿR)#:Md^Z!n
+=0gx!ѠfP}9׹to6,^ܜn)%je9`%Y'|[R@-f"|8@p3n)%3UqGR~`P|*z3X*da|#&IW!,T<vPR䵀Ul̎
+8izƲyfUVNY01\m\yQLs.3|Ĵ%%[wH(n<Wɸ4W@aE<`i#cK%@\r' `7UȆxVo8s-,6ӟ /,W+% ؁kOlƈQPR GJ+,<GPvOq ᎣB(s'\pyǦ8̎;bu:!)/GI4'"`lWŜ'  "rI/j|dMz)heP]tr@-+<Y+
+=Yz=g4E~V^xʲ^By5|hd ӸcނkVx?݌+OK3>a|.l2J#
+S^#Q4պ!j@yϜ==|-xhXMo`1~UT>x`|1/Яt]0b-hСD5[e{Xt]k'Qk{%rl0_pLӟ XFؐPxuЁt A;Q{4n(F9]%3JRN'UמÀ)}bŊ}|'+W_~qx6NN* <|4͹JleB
+DBai`.Xij/Fr+PE<Y&%T1 l[`i+Ƞy/CAE5'1)Z8%t(YS!UZ(8+NrmqTDɚo/ac矞-x]8B8$q$0	۲zRZI\ƈIQC0\^phxY0h(LY	͖ `ڄtLI<"}m :&uC4`:fHb)4sy`cf}*zzЕvT20{ΔҌmTx](zgɹp`^IB2`q.Ž6B!&oK~Yհ0X	Jz\)]=eQ;A00:Y,>*E]ML"ej(CA5Dp1pHlAG(͜,(́)r2P\VAvƺbXW,RZ<,#nq"$<Ⰵţk=7 iT%oF9]/JU=z*rJBoPۨ$W_y,Rj͖V{׬Vy"m &ސjO">cٵ
+j >>R}q2Ɗŋ3Z哑7y(ɼe<w?P=	 C|fГֆ~ȋ1Uu_c
+DKo5#&(vǏ%ƍUOu<l	yۦ| =C+?ԁQMI@<ŘmAeNEnLmaYQM)yvll=8ժ9RpԮW2>d3?v
+NWS
+y2YBHtZY8jxr=LS|z@%l^wΗ}>>شCbq<yia=(cŶl10E.WM̱ckU	0c`%.pLa7f.(4=2
+clD.^}Na|ReaG\yQywrǱo!8>,A	-T=O|_Zm*f;B?e[w\C%\%'t*a.@OoK2d,@PN(
+{]9L`uDBTY0GhjHɮ/4CJ10ꡔC4j>q֤M!ls|8O-պD~ъ+,hbǽDAy6\@Cu/jw/JΎF熌shM{"˫hcIz<>IJm]{|9^!N~k<}s8oGz d%\jNE'Kˀi~9r7֡$"`eH:R#荨y5ѽwLe!^)۪xJz1QMqZGÇ<]UCa_AfU̹֕(ES1õzf͚ x,Nivd8vޗfir/+Z]eeZsjh3fƄuQ1@%\j (F\O`D@*abCǞ1&]Œ=0>~1XN%TIK"/Ɩդ\'b !ZÝe_NoDU55eg57&4r$ň)>AGepsi{	hv&vsPoQ%%&骘Dz}M(תݱE0JWp塖p,߉5#=g&K;V70rԍ1Nz鳛 fSF jn]8m7$ZsF偤JYZL}ׇ0:POosl
+D BtBR*?Q\ UXA+X$8O%x0zpk84,|!ׯJ9nH/T@azܔ5S֖lnPUۖjOnS/D7诛miaoD"ԐeIm\`>5{ ^G~ZbG"нe=yCF8Q9~ie _Tr8ɘ>1N"cpn 0ʀhv~SY% 6z ot'+܍H_s'K ?oD[G8͜4 k& ͆7cʨҍt¡9mXGC8T{;ǲT \x=3@%C|YMioy6^}!9n=|aw֭{oŊ@ėG/^L|$:?Aĵ[*x8YVGsjD"G1	w,Z9H3.DEgu	/vMDyX+kHZPp-D5%wCyzΈ1XhW_l±Ic!Ja2e&"˪+}!U9?99JҜ.\5۾Xة`\wBN:@wڄhQ2^bdjbjH'gj!)UPo;?c|	,/XeL|pA@ObU<ڌAn;(Nǖbs"0f`T_"'hLը>YYQuXTJ'>oq؀?^Tn^̪{r{rx2]Q!$uQhHm(-C!Z5Y`m͵c
+A:$i
+
+n7|TYV//1jd5e:0Z^3):,Ts=kWu^_
+]G%"0jxdG]khZeTE$,a#flߌɣ`k!o)ȭHWYD/<ө ]a7KF,ȞqaTe<ϿQb'TQcA}Ȼ[a܆
+QYNrd- i̲( bj]p9Ϗy
+hNS<#$1*	OJ${λ	}gg~_x>%_49^$;uA@/50PU+8U2"=YU_-+ƼD`ֱYO^ [	|8y҄8	ʺrZZ:8PrYqnYq5]xNi@B#[aj0\Gɂ<&R81,Zxd S-c69~:Wh6/7r _^/b$ZEGFCS6R[pWC.TJNuc{p$!Ub+PNDy hQ!S`S+놞Ǡs*W̲b	_8F)^[tV 1nXi7&բ@L4;2nxkީID%qLn+ɚ|r;X i)"iAjɿSW"!ёFz'x&k1ީ⡐Mh/(	k(A@%OWjs	?U^B6Mo_'Z^|)Қ[RCuswy?zs71{1`'	mBq;N_zRKrоUx^]>dPg̿nx^S]ԨmɽPq#L$&ZG<<OLܰ?zNp-{7Āc\1{6DGEBe<K y}2vڊGB@:;7Ns)vqh	tQm$(9(js6+{:g72ӧVWkFEQ~>زeO};%i*R?ܩ5Lq]y-DL\^S7S,\K+y,sOyJŵj
+!NucU8Cv $aWnxVh} 32mGĥcqS4";C?="ަ/o4N&˰oĀ0JdmVS.p:;$n &,g	[c)Kcjm)i2NP2tv]jG\e9Sfn{ptNDVBa@=L_3R)lژD{;#jD*$7*6 GưXgcN=5Op|x2WМj⫰ߓ\O\8BcnUx!,++x6.l%JS_ܧ"[
+/¸OnC?jQ~AS}M?W-rʺi/knoxIV7E^^3^G:`A
+b9ۅj㊤ 
+<%L(<Pq'EzQ<z?\gCjx}cj+}Ni[pqdQ@%- HhRt{R9|lC%wki8~Wt^|"V#ɠNPbe E_x"b7,Qm	<V]mpXNkP!#}bHhk0ܕ@#	%g5$O~% Q>݃k8h&z|d7aWK{VP_qxy.tR"T=hQ热wHm510dp8\]ap(0 N(*OE1ߤLq[8YrB쪄ˣG̼S! -avYU>WBpACgܜ+!sB0\E,	Xl1=;[滵i祐e@uدzɑs<RZMC$'BrG+ͿOsI;͌\Jbٌ)v5bYu[K$4!X!:F(OqF8;ru8ר͌ƜP6"򬀻}Rg/\2Re|@0O|ujYlZs=hAmi吘Bm' ln(ni7uE6T|@7K1csNfɎo5'n6L\KuKٺPVxbKS_W7>iC`M}@#ޜ-H[0xgK|t}5ݘL[s$PS聚[94jFŝr*j&>OoǳcKC(7˻TYH58f&Ql?uF7 k~o8DzB|v%\ٳ꼘ԘjpzFq2BߌrytKfp+T]`pZֶp ew>gPv/ԐbK"#kd	!{PvOwv_`?%qeAU# nJ.*uv=RuX]uV:MUyYsQ<j;!?FJ;WA{On#0o\8:P`4Kq^@NX]9e>1ڞ4|;`pت^\ͫ+#N0F\.N~b$&y J=H^ +ϏQSu1F]i0	\0xɲ-++S5%VS!Kgs|;,|{$3t^1u+BHi/Ǩ1 OY`߀`,`+!ugVf,*~N˶|15Ί1
+..8?q֡KiFtS9*Ik\"׈ert)E9_*(4;nWP3PS=mzGX3mHաȍ󄭫)V@("O@	֬)^[h+:	q{5Rȡ'p^pXN?p*40ZW¸,Y|{if԰5ePΒ}$;JyV_W\<S]ڡt	C+[Q;65Me2mHj0b6L/罩#=|28pc= Q	k|9NRT՞bT}#?A
+jY!җY9BX:fSK&Cs?z[SGUwv_/NΎۙtArF1TUPIu*[#K9(%J|FY\CΚM?K<d/8,wm{+5?l C5*U n<NNvÖPS$Z	3.ޣVl"w7ff-$or\KѦfu	ӄQ/P-,I]6]ussW;U.zщVJveE5ozy5>2&gtRaS6B⮏>3zsϪrAgU;>]yIHa MFRt48,lmDckZ^jOhqj|d&r¡r0`Yxkw<OnG'QʎmVq{'}FbK6ZyakyDBQ.z2r|V}ZP[	 P%,dvË@nBcmߨm[
+XOY?[vɬzq7-wn]j0b-^1!PreUwoK)Y=ZrAd:R?jr$CK<UV7ꩩ:Vu:}9sfx~*z[Awt-cDl%A{Rכ_X~w?Yi(ܡF.\8PViʋ _툹[ o2y`c~=SC.36h*$\5}3!:<:&%!"S`: Ά\y&0ưu,--]nOu0{8a`+h
+~u#ne(cd1QӪCը}jd5ƕTɚlmC)$Nj 8B-Y] Wj3YK|D#[E&/p|K;snVeŹ(KPW>\ (Er/W	#]1`=_<:*6$8kswokya&Iq&]"K0|,yq0蘋8gp*wpHN{N!D:L'rLˈ){Cr?4v2?ؽw|g)F𔐋g.4VYJI>+'.d\Tyʚ?Q4CG$i4uY/]+!.G	pʲMo$M衾3DL$6Sdu<%!2 j 1vVAH,@{CrAo_.7}Ysyo1hs|#s
+i.U@椾] ^.Z8g ,ᓃ49A3|YUryv? 'pxB^Ixi,%re:Ǒ׏Ȼ-JNģϽHm/)T5
+ۡ, PYEچwۘ [@3j]~Hca`	c=`. O3dL_hϪXʋaA]_|7`@0z#jx;OUxHf-`/d-ζ=f_`w_vkSſŝ͋!U~%tU28[T	%x.#YאEwkFlO*?w<:40`AY&,!IF\w6H&BFkaj>,󌃒Yr4͋quK>ЈhY!x F$9 jݯ2"!_k"l@x<e`WToa*lmZ$SvY3;}+8~%gXvi릎/}	1SF߂
+s96$r> wO{1ɐVl| CulJ1[1cxp#|0KED9l5ZywGp7\6NQ9O%#kﯬwJ9/Bשݢre|/>=qu>og%x `W|r ;	h
+--
+u3DuaY`ԴmIN>n~_TDޛҠ1J7h0ׅmMvl_aP]VYSjּcshvs <ꦣI\!{[}CD;QbGݫxJNBGr1T~1=ք68s|o$b\Dn7[m7u}ނ<x^4uUZAr7mv.H
+FYu +9%؜H-ZƄH}2,E}3'H{'GalԐ_qoH5ڣ
+.KY=KDVr,<m=]IDfV:-px{mݶ>4kl?^
+RAxV']XPx`Yqk8$QS
+O)+lL*vc}
+c8; kڷ8˪zzϣnjQTPBkM'k ƶ`dʊU`}WyF؀
+ +S&5aN|3H&,~d@	Rc;]Nүiҵ`WתM'!AK4ΩQv4Zx	ceAQݨ\F		$90{XZKYYG8V8#t3LVu㲏/<f
+Upq*ȓ9+m1Ōw$jbB_BS[tnipc ><<'c0vWT:jhNk:`n8V?	L-߭?&BU}gGu+֪..ЕJ 
+Fz@ȥ17A^x%hBNy`ߚ2``Euyo](Asco`7
++IjvfVdaӛXxn9KnV:iQ{xMuyO%J^8{ǥ5p, f\	F`:v jTt5 p} 	r7=ҩ
+t2E?G]QFmVUIL{K$ZJ]iG/5m}U,˻V8.Ϳ{|C;OW^JԦ",*B;W^fuarx!pTog}<Mv-^z<蠃ΝS˞S#tOFAEy$:fUrFs<R.0	Q/ڃȣ"xa aK~t#A|sQ^8ДVHvD*s ?m	}Ht.B0VbMOlZESF֠.
+]"k[PoT|)n}[K/,Q@?[؄/GsU IbCEk`lW;}@	~΅Uk㤘 Z3dDRTHUlؚ'vO{oL*cimþ;K1=kuxcς&`z^zԎ̿9Ge9jaqG=!cTbuQa!z`g'S(ch,MnlOJ6V ¾|Hx1*;Xh<UT`RP@pL x~IXr__Q|73Rl}0݊vV gig	s]CbB#:Zv}^zׄᢄ@p9$84su/x*G2J(S7Ir[nYS9mx}QMd,h'}!VX\׀6}kq{S7ܓ$Zzͧ+/ DJIgw虃KiAU|bXCtPXͨK<7c/TYcQH[M@?n1RVF~_Yy7a6m{O93~NYCyg_PWӢB0ZRu+LgpXTe!՞|1df|1e;YH`(CSUHN9Os!I	!^VTaa	f(C>Aۗc 4Y|zP<)oNDivU/Қ%RFR*awRr*^+!1wz_]%w4XLkLH4QSeY݋=J
+G!EG4ocj9N('.̥h\+'Jk-9Ƈm[E2fmH҂ˇ"T0%Rњ/<>C癵S 3=߭X.m%)f4t&g\n:P˵2B',8%z;\vIg\=ZD|YoX>N$tZh[9,eۢ`ku[-xc}C|b;6Ti_ث]_hɀ3XL#,.<WĬ' :B G5;\=t:8KTX
+>mI4Y3|lR襘sB<zk7˜eJ{KĠ>Q	n|,EØ-9U*36ήuHĚm#]ʫ\[*wtyQrOz; (y}ƺ.(Jܼra++hAY/0Jgk+E-g͙i߹B݇nU>v?O^{?x~q]dc[BN9[p3(C5*g;iZdp:k˾|bk:i.+fIG&+hLҸS\	9V%b$y:  *eb52 ua\,_mh[#0G/&,ObZ|b"j<+)h"CUVA 
+:# (@]%{݂bܷ:W(0Ck,ƥi
+
+LKY$K3`PxPUkb<:_dm+R[ɘO,0k׈{; kK&vFdss9Q³vN=EAx)~/u~vWy<ܡM nmJu[J<}B$5l;EbГ/NdWjd	bSrd@YloX VuvHy֔hkc4?a[XÎ9fH吾[qxKYbJ\sDqvB2tɅIxF#r ?Mrg')*)ZtgOSՓ=="yM/peݝ.a*өZUtFP1綎*.v|W*V;Uu7̗(aUK"oH~igPp,	m])fUbIB  뒽Yf$C^%ܙOfeTimc3a 2-þvvqN݁VV3/~cӗٮǖGmirܐm`!?ypPs63eQe5{,%汴9XV
+J/GL`[I5VWYlѵwi~1_,iZ/]ŘI]-Ŏ0_ׂ!Y*dfٮ2(ie=+:hD`Gpz3ak/74GBoXivAQY,Wyirր*-u4>7zd|4q߹SҐL{C/I\yqH|}kC lE%~״O9"xBcj1,F;>Wesbڒ_H>`%1^pw52j&}q@[X;U_S4.tZh!
+	ݺHжSQsϊǄ7$ƦFDӯ
+v	Uv_8vɈF+p嬬wD`5yMjD{'(iy9Pr϶iu!e?N宅ِUjh\LFpSKx孧G$(m^VTSs[
+@W_ctT2jTZGʋV@<Px4ߙȻ=u)oyPFIΣقvoQfv1T3U7cJ[T/МGؼJ=0k="ze<Q=M:LO9NyD]4_43)33Fd<!i	\=|aqYYY}NAKBafcj~LI-q54M]wIm5OAqƤ:i^	:r\k}W[hyR,]ZCU,c	>@Fuz2ך^1lRD|n֪fiI(f=aȏ>v	n}ȅdnbY)ǴhPB^dӔ"dWKv$)cFDӊ^<1,v!<'0+dT/$M4Y8,!It*$a9z}6f(7Pj6) Lb$t62yy 8CczsȻ2(\DYi1?.KԭcRk)a61KB[^U@w:\&lBc4WGLᰫǉ*c_L.6-H41a3T	j	jdQxV߭s}],_MoDV4(`fr%M9@/QyCdNk
+j9`.pxÚy<[Gx(cڅP<4SB}H'*_QUPёdL3f:!5,.`AU* 4ۨ /ܕ{;J0j=oW
+k/Gy2l;U^'u}\w{tEHnZBw-h`7rJs9P
+_+NЗzBRҗe!
+5?Yi-mv~=}_O}w
+ڜT_#疲lI:`
+qq&9nhXHSDE{M'D$aJ][D?L,[JptMڣT5$,;'c4OvJ"r52\%Qoe5^&eh0j{n-`IߏIXЫMi7%wbC,ET7z![%],8%"0;Gwbw%|WPڻy5}@Vǈ#+f쒐zTY{l2l:{WYqW{xn3K1#b?f]i==K'jSqu8Єygֳu!9*X
+a릎Hx,A:*/ZNܤI9?pR
+U
+ɼo"H*+0	a|@U\!,rKWRL_p.uawemޚ]*Ltԏ&?zo~?7YaG27b_䍯q.26t6d9~GPQwj	^;YE\/ZZ+GԵB윾_x($cJD3faq5OR#8H7>}ŭt	Ȭ`hZhŠvcg9WTm
+|G겈v&-	q5u(V'"@,psp҈ue9;(/*[~bNK\8H]uUicfM5gBOd]ư3{.n5a%qtCcd$.+VTh0 =1\	%Y8.r?GCM>+bVLK*%\=^ lgoA!ιaIq,ѹǋo*H̉*լ95f~GiaƯQ$ V7Fs2>c̪E  pPK3(6_z|3Th$
+[V4%扪׎0FQ>9Eg'=șRtz+^48۷)QXp22L7G;zu}3|2LʚԠ3P+/Tyj DamG9(AX҂?`^Pj5Pq#)d^.֕,Yz8\Ɂ޲gDpQHk$&AWe4D0U."k4(3~l|6d~ԛi+E):$<XB]W@Gbo$B.}MX\tx 3.=x^ydDc'ղ@7=D7]#6`S4(*iGr#|$Pu_fTܕ
+`[R 8-];R_PvdGK i QA-Ǝ6C>Scz\dͶ>'*W.l<f,MOyq,,ZCϚdb׺zt?7W/,S_*I0$bJÃ1k:{ ؗv}[ECE
+쟄v-#`C2ܘxr*sc$^;YHMFMibttm.ʴf拿<ΧV3|PRH>;<)]5\-؜WA+t.ʃ_`*I8K>}A2fqԂK踤H$Dے7DTAπ!!ӫGշ\?Ahq82`Em̿yp.}3'A""	Px`i#oqZ}qps]kY9ؕgu^RvLSZZ$7͕A`
+쏋&ɚ#|0:m6$DVℓz(x	{?-_hޑMoxegGf_.	A]Ef<N"4'bНp>Jp>$i
+&-amgN!I>숓yے^Q^gg14JLܹ"8/XܣGN!4_zJܛ>6Umޞ$Ἡ]
+
+XB#lx^HpdsqR)iÛ]uv5NKpMGE譭#]=jNЯ<5#iIm#D..8P.UzXew/Su&mtʊ
+\Εȫ9v詊ݨnCK{9&g<ůZxjrz&xi+\WЃϗW$3hU~̊ZfrgׯENg 	;÷^(\P=OU߻JZv.
+ IcV1¢XA߅-&=Co%PVP}H`cZ/*%whAjhvJoT j1\^ɺmN; W?kg9jtVlts`XToYY~!;P;(gLM]wts4{ĩʊsUzs?}:La>ťIUzݾFrHම2x
+|V{Gy*TPmK(7߉=o]3wvkSpwGoX5ݭJ5%'ߍƱm-+$7:qvHI㊐o:[G$1z>H'Ts<yTEUۊ=ړ*3}TŮc^/GojZg'u}ԥ5w.sCZ`oϪZH㓐\%)Tj琜zV}TUvʫܹB:9"5VCcDcyԏjg6X+h\3N)8w.VRhMTiwsUhń}@;bOIL/Q0w|fFܲ%2,&sH8Vu[G+j9Fpv'⋄#M G:F
+nbX+Ӝt{Կ4+.-шBkoNh1\
++͝-z_+	a_=$Tr+5Ը_g/ e cŀcG1|pj,dOn_
+^T1Ӡu΅h` N
+XTZD9>|N,*_Xol3eN9vdxK2ǍqVL1j+	kf^〿t&uT%p; )l%RIu44=I,ge 8ke0a\ȧ\.|r *Y"τx0,j#f}H?qFR@s@!~]"'o(j[wE7MR؈9_h8SV6+||H=KJ<xݔ\;ydI8`zDUT	jTy	KϽ$# U"ہWpM.S`P/`%eݩkD&oI){S7Ј!Jr<(gv%c<yMI?N>.6CU2 k(H.ޢ}vXgoid8,&6d*Kd
+ы;Hpڱ5O8%F:qMĒB_kvLƘS$DaUudyHiUTsJk^`v!ZWұ"hG`TxX>.T:N&+QwNT6IlbF,]#>Q8iTBw'Xd>PݧDI_ &)@FmFr,$N|Y?Kͮ#COc7%EgY`r"\߁Zʡh\BM*z9+>;8,S@plSwKKdC(LR<3^U!2!
+;4hМvL,ۢ(L_ɧR|6\B[>#JMjS)d\#8\UUa;-
+"l岬5FD_^c#%8-B7Q5ѻXpv]BGWW\*-9	Urӫ_M%ʙ!=ͥX&B~7:ϑaE_<QUqy¶4AXk*76so`Ueu;;|2 [N]*#IJh7nv-/ .
+̝AUgn^x-7B5pVKS+ kh6ĩ^s0K"34
+ =G(tXګ4@`fٻES#9!M؅qOyq޻$"c>;(gYVTclS^<<bQZ.u0!9-{
+ba(O]K
+2*4TsplӔE.~SVB뎡 )YBO*JE:.5YAJP(i2%Y̻zIEКMք^In_rm= <cU,탤 +@̧>*T]9X'7-	8 F ״]dӱFG-qu&J#HO0rN,* 3fb@B^#Jˠ0Pڝ%S7agw#o[4U:N7m&kL`t?u&&B۪ TFŚY\zH
+ti-WCA˃^	Ku)ЇOh&W_h$,u!5qx릷v	mܥ_ar
+;_~cAC2tʸ[>Bn լ]I<=D'&R,q>E).M{T\Q񷹧j@P.U!kGpRC*᧴,&姠 Ҹ;SWޛ>eeFͬ&T?s,]]Fixhn!߁El#!$GOW^*bݡ2Y촛Jx<$R=|'1!ķG Awv袋#Fصcǎ+WnԨ?.ex
+\9=?-&mlR"\Z	
+{<PsZTYqt3x~y|p:U'֮iD)*|p5*PJ&I--X5,4j! _¿Y͹"KVI7u
+||>:G(,2	lvN.#&155b	P9[O6BnUS<C%[뽡	Zrؘ#$e GL(A	BRWDVK)!\(pkSƴrNya$[ ~$U]yy]פȞP{YCCdL9	߾D`94V[ǔe#Ac&Ȼ}\cgwC[Bw֭x8B3E53oE'Spp_F$ۗD틺\aw+Pk~I8\[>ReR.%?> n{9n-m3冗['	_8fQ&uϡ6.le0Pp!_,ܪh%j-Q+aZ<:~Ε.XzhG#u ik
+4u#mc(xK<5eWmd-pG/0t9UbFf6^AYsxpm>NȎڊm#|X	
+[<4՗vv>{vÇz꩕*U!C^3<7w}Y߾S(X:j38JNFU RL>u*I,YiHe91[
+b+kx&1T.=InDT~,T},lQ?Po}l?ʼ.dŉet- ^,g5OnVV,аu4E4`kvCQi)q/Clad}{l,	˒!j!ee߱Ty 6VGgEqۤ@p+pO1YMULxÂQ kE>@6KQt &҂t!HSt%餋X^nE9asV)Qu4~n_oH-W \'  y05ȼ}GWD#Ih/#ߠx|6|w[kk|y|]4t=}Rq.<|)I}LOˊ
+p>ho-/UpѨ˞BQ~zVO!GW͘y]:»
+L;~7h=#>.IjrG~wY@jܑ Nz^)PLPeM|ޞFi?"5iA]뺽t{QcќQz7ac{v>!y䑷vۮkӧ_/U j]@'$#*?t.9JR+C|W*_)VtuPux\xM*I\.:4XvQ//NB1ZuN\ifY
+uG'ˬtO>G-}t۴VLWd58Z$pX%dEliUl	! GDlM-_?,kDPU@\I_"n5U"[$iAx1@=Loi=hJ0[_>g(@\FJ`1g.89&rxz$a-:;$ywi=ҵʧ kEdZFɿ|_e~c>`Y	\V;_}-CI^%e+iGnDl9 ׍OցR,ފK!,d_A=5;E2r?xܥ5	֯CUDգi[=Zĭrtl	D7]ۥCxxxeVXxXCP ;>S嘥>7~Yq/1`s[
+k@`+Y~Pt}h6B4b4W"w!-8*ಕƙcU!38-Vcut]v:-09FG%1^Ijx.W6qW~׎;5jԣG͛7WPaرV;蠃ڵkϖƹSˁ M(<׭S~aKّ_ .q'<;rl<A{Xc=)^R{G$"Mikp`_Se}.qb{<{eG$Si롌ec IE$`\yXu\dXEQpL#L UF7/myMbMb=+D/2,QA :Dnjc0Y.\YAY(hB#gu^ɗ%E9$[r#\a	i6T덒wXڿojT7 q(ͿJ<i_yGzQ3#G[/{T'&7Ӌ,7$;ȥ!KDEnʈDBXk%d/xXoj̈́(\~΀d/t~SЯSmyYa7`WۓtL3BtT#ыx~&h/G̬ln3Zp׍3\ZpC|U>?kd(+s}eJ]cd8՚;SWWzعY{Q.kVGvOs8JBpaYG۝*p^!p=K-s4[xd;j+WjhlG>`t Ssi9MOU^[ǿQp.MPq[n6|]hƇٵ'|wq9IRkBPL:UM;[`tY@"T{bFpa8ĢZ^R3WUTρ2\+jVClz o"΀+ӝ&*`Uy,uP!PC[e+ȽAU:V%whr@ۅêXeh尪E7PŮa,8 4͐qUVK\UGR]$kD ;&s).D(QM:0	_
+kPI']sє['3"y*zK9B]Qj޺Z%pby%k}]Ppx}΂?= 7Řo񍺳dwO}|謟ejhnM*f|$i<~:9SnoHjy.zڟcSyd5NĝS  F"tU/&UkBu wIĤ];8OBcu8f
+]+ М*jm1^G^-+zW*꣐>Gq(S	J]}G L]" ֶfjվS`]|hjӵ x
+%9KBmC2iO?UTDh4Fc-j(vnTA")(X@
+H"PgMא{{Yk=kw/7$ӾZigmm=wZ[%.˗*>~vvUKfff\_u7Ɠ[IeyIUKϷtb8Y.qM_ցWZ&:fbu&(Uf(tm7D -=]۫24ˑ>		vx?kr2;]*+˦9UZE5׳tF`aaY̻a5#gz/v-_[ӕ^EV˂l߭e&Jm5Aԃs~DR,H8[>yrEUZs|	Őˑx^^#`g֗Q!N,d/.4K|Qi$iυ)M;Gn(L)vZzؽ-[!*-j=v38a0[Wty~$zhRWKΛ_UNf.ZR(I9?VB-\;nmגj՜-E'̇gT5(˞t:eܴuuZ1BEr~=ԃGw}7^~#>6t]nh]:Id:̈́E)MD{ vF3(aX)XPZKq-y3<ӖN~7Lv0Xg)=J14U&ɫ2nKM;^=וKV?g5F`Wb~qoď_w`h.F蹛ӸS<|GnjEM%_~ۮ76""nN23<b2`٘_%z-?/pB|eh]>4Kskx)UF.{ژgK{Ms$ߦAY]сhEV66t½&_/6C~u~-ft+~@L':CAg&/{|?RL_swCq{WmӿL%\%|#&|@ *?6.4QTG&0zKÜP-oЧʮ\ S+g%_ $0ETv\#n_IYq{QZ}h?nϘyCH}_ܤ4+1=,ǵ2[+ffs`(S͝Ӂ**/U]w13^xHPrLMҪ-k-i5fǼbm&UO4@*
+Tܵ
+N+cj{a݋xn㥝tH͖^7\t	v蓸t/ILzC}R;L.XFsI]#Sj	p6t'U œgj\jـ3#]CɈt(ep#xPgDw~fÈuo;}"bgZ-9|$z~*wrZ`-a=E3aJbkCtnkq^J3чT=yNuϏxTVC
+=esB:Ԙ!#̛i45VB(\VK-gO}ho+l	bDT±NKp x0OY=6Hh V	^+j<0תVsLu -[WwJ":,gC_l)7
+4ѳ(TMRjWl&4%T(0f:- 2^R2wV*QP?K>$4oig	]XdK+DlWһU)θ;3~TqgaJj;Z?%L-s=lo?A	Ç$y@|ٰ&fFi_n52	W*l%Sh%tV1w!i@`<q?iy(6iɟ5}/Y_nLURM?~/}AV;\]#LR%H.aj41Kss4/^mu!ыq 8zФnMıWXTRG^ͭ8hw7CH [S0K'Fg^ݞo"8He\ԗ=4U8q+
+l:whU]Wsr[ZyI9{4
+D954E_֜	=@4|ٳg_sΑ	D}o>$y]ኚUF>?
+{y]THa)9e\J*U^yҺ zd]YH%Qer:t^x%FN$sq~kv.0B]eQAx}ZŪÞ8SB4:X*MfZN$0UOWap1_0TCu=31kP0M/`4l
+7pal}[=Oҙ3X>W+]nx^#ܠ9[%ey^WN4.^dU*~=)u#UƮ
+
+acG6ܪ,/	fY~T<ǫlЂӬ[g|//q <O6ZsN%`bU=YpOl%uk _i)n4bs-VOV6ݒ.:fuvlDcy CWkKd*-CDcSU
+︬$a&+f'vkp8CJj^Y0eC% ۼh M
+ẖfeKOGl0$56lmf[R%*`W4 {F|r^uyx^"7[v_n'`=]۷ z,;ZJB@W*Xn奌9z[	֘hRoY+ڸWsfo[rTӞ|r<1=HTogS)p\ΟulHY'򅦮Ofۚbv[+,="jWMgL尾a)ŵ-h
+QRda(f_`:Z.h8>(sڎ)]{
+1~oX5aֽt@-$N>Ψ*ͬjw(i`q/DM5 k͈:Ei%/n{"ж]Ò{xe\܄qw*K0rar3\tjnScVfels^f蓪/Wml!6%f[KtۢRK&9Wc{&%\xa0U3oPy	)M3W{C%H6|_+DV}FiNwӦck\?aIhA	C.kzF@:^k@_ʖ$E-Wgkrr\%Ok@1ȩ<).0q!vր|/]{_žQ8v0E-t$#L`Z؂򡟷~Ic4̯ &|V?d;#X}.&uQDS(
+"?%I*]Qj(EAVoI$Lf_uu.yLJ,[	< ۂBĻMV@YoW$.+nzɃe-稅V0G]_xYuz3ɻ^벁	C?3߅274ygU~dfnA'8Tm5Wsmo
+@fD 4)j\OU>jժ{SXK'ч$Ž3.gC:͑1s(yzsE-^šgXΑz)μO#R^}b?xr7۫fcib vmKW4/ʹ2֪F{>)Si-WGe:i*Tk_$M pO-/û3ɪ;tznN_PY)܏u9->.8yn8N/G5Tde$͹$Ā?Ŗd]84YL}fYP{EV3K l[|Jtk-Xhʬx"BT|w\M
+C-u^03S0 nf+I`p
+Xm`)^?PG|YhV^#Zw69շx{<EC/c?Y=J>d9~eLL}ʧKsJssp^e2-M w.vm</q\֥N~]PC9^ٓy7uI[.su߬bz1tQ[u¸XiWP*afB(i]m7tJ"F&<Edұ6mߢ.@yW(emRW8x0Li9,°Q_p蠭#l
+ڳVGbYљ:p? _߫[:2$9>:ր_:q!5GinMmUJ= hA8tݖy,g'. ^HxϣupmYb'MK-mm4=^j$S(QwkXV@<q~xZо@IoFߠ[3ܓRO~҂i}j=wM:4!?<5I5꫑O4[+ыL<.Vv/pmi^ً9|*+[u` Csav/<#.TPf ${@\UJkw=L*uy|(35uc~f.hWk>*|6G@I~vv&npeR$Xs92/]1U/x:2?4?EF#;YU\ʪ*\]S,Ϗ⃞)|4$S9KagݠVUI8"b1Dc\Q_Lw:x	?>:VAOҵVvuկ+roKL궋|&]AlFGftL]]8ɚdߡ`!nr%X֯9ȃ<*cAoK<ݗ% )ӏ=PXˁz8ZٺLn/Yc;177n2&rcaOq	&K8 T:aqh>W%_N2	HmP
+x6~[9Mĭ_Bs1&"=nTG_>?_=66U֬ʻS`]O]1U*YXYnzBiKJ0ojhpwK~¨3opb?OLG^1sZL7/M{ 3f.;p&aƒvg +tj>k;\ ?+
+x³nbn2UAY-A7׏OoI܋AY#|׺p:yRb+޸8NL^~Xam+g SRtTØ\W-Mk0KIJ@Y.@k?*2,"8\PPRsgXYKCu8.+\SV30c.><'XWQ;-Պh	QXKb:?o}+^LMP-dv&u?]Luptz3Ljۄ?AE#:G+PQueBT' ^v֛DþC(89.-;ј̛#Ks؎˺8wc>~m|)u']V=9r#;35g-뒬p)\֕KjKܾVuM.X6Zzwش>hiE7kpB^>NhKY)3=*v`I37n|vƊO.
+ZHn	>ﱅs,zHvq=_;,]QZ]<I]凉٥9`h4Qko.?dMq9|޲r'6ZXWS͞k# 8ze6V}l.P,fv\^Z7X º\$H0ӱ6nmLfX*#{k?g܋	6LS\W}UG	-iP{<h),ۘ[ָ[_uxr/cx;[Q4&sY\F<YȻ
+2g(xqg,<ܫ_>[V	sXPpfUNyRYr*74GF
+кQ uKSg/GCx=~HA-<`%&3iq"e_q75qQH	vH`H+iMof{ЖtT=|B6+>YS.G4%8[ni͋h2Rq3]"5ؿ!;6,?O*pƽ"d|崟T䟄WQ^<-ô)_
+sQ0c_PV2_v	U=#ueO.^V!DU/G3Aup}&}CJK=KFSVx-H\>Ĉt|]MR̸vG>04ݣI}cf@pI^jM{-^m.UB=)paP`fzA4gj8>	xLAdn0ߧyAmndMc77oba>8WQͶ6vCtH/a:N,od쮬VSb'`/xzJJsNO~LuWOnQ\Lh,tri3V:6Vkjs*-<3߰^+P%*>%.|EL/1)2UrGȞ	CtvV]:^As|V= ߃}Xf3JTz[j'sSj5ɟo"F'$w/$bm+Y`]sL`0nh=WrWm9pJ.qHbA>ӁT/;ๅ)AΑb`Ӈ_zad04鴋5pw><2NLkk{sp>jTtvT鸣'SQIR\#f;?x@-H#_{-8?K=9nzuhetPq$u[4!̭K
+goq閿}QڣeyEiuzd=c+h}10s`m;XWtJ.䈓 [fUxZ@gPv
+ ;3o]=Eb0Ӛٌ95gi>K4OـNՁ]`aೇ^_s|+G	-vvb:djxr[ #}U1I*-u쭗lIb2gy,$BOV)5P
+]ӗqU|\k	NjAYDb{x3ǞcjTk^k2-M;{- I\\۪5iYl.6AvAN([3;?%PYb
+:
+osMpl>H*c~+gRƞ\{5[CA%\gjqF}+5jEȍ츪)o3u
+R32)03*B,O+J 2U@0)K^q-Aͷ2^{HשWƕR?*쭋رr& pimoXyV~6nw7E߿C݀t[PGi:*@mȊ12_R 
+,θ$	E^n%
+ƾGdy9,UzE/FlWmou<NzJF-R%=m|rre%	A]78D4a>ŏ4!,޲lJg`w3Im]g]✗Fu̗>Oqz8!Uil˞7wT=B=\G;*n!}Acph,&<?<?rpc2+Ϗ)μ~9 ԫ]C|Тmg@C<vs%OftskꮾlYnfy)vO}Vy,YL4ćd)\<J-_zV0,k45C.ت{P?$LDؕZ25Zf-Wr!PR} Oy& e@YaW<Bh&̗i!x/+meP+C!܁oZzQn"4FQG/ad&t]|Uwu^-Onc*F^oxr+ci)h*θ	~IkBM5In .-V9Ui!2yZS
+@-^sۃV0?O_۾CA[B>n@A37	2
+]B^fcd`ո0,Ԇ^M?8a
+5(Li{VwӶ>5B[`	>^	[z^|9mY.RXp	|'ᒍL|<XLDspGE`u+K-U/Mho`-[Ժ^%/L^0X"7jaJ>̶b&N-?%O$v'AK,12&fl/#hp ژ̛|x.+bQReZ?å8(TVAVyIvH-k<*T={%^"3)%egµoaefX7ɒXd Bd("\fTpCҪt/ bC
+xl|H9HM2;S&ZgJp"-tBw/]KV5"8O;&mYj_}~QZ!=z̤_Z=4}nJ-תoyv=aLÒ:Ҹ 
+!lﳮ514j(MgGK<)fkT0#[uz+iAyA#Hið.Cm[6O#~Et?nV6&w{ݺ+VstFQiqƻF­9+f<2]9<O> )l0\LAX{D/daUonc
+_pY'K>X?XfY<cELY"/BA̼ɧ]JnJ.l	>%?nwY=8^'ZVpJ]j	_R]^LK[u$sAՃ?p;JԃO<2r3194甊ÒۍHy	iGVixZ;<,4P躻 t&f,sx.e3ecZA
+:?p΂ҀT/)Vu!MaXIO9C.]?ޤatN$s#1A/艺>uk=ng%n;'Y"Yª@)iI}]d_hJ}s5	{d2kIU?SB̯	^?ݣ[s~Lg(θ"$ ･vYhU=TtgÎ+Ҝi69;sUĸR+;ot	__W-/}h;V.x-!_WxWl`HD#Js5H;G<W[,cKCZmm1KxDoTpZg|S828qฬ}ؿ|yzD/s:3fQ`?*>= f;:G*ףִ2Ltj/gט=JRTg4X 6|$Mq;FNWbpJNP+zݢzk;\^va+\a$:%LOmO}doVђO2{`sq,k]VX4rB$x^+REeygz&oNQwUWse*/ y5j|JX
+ɝf^(O9UBn0<yÐe
+B+S1XlE8_8;Ť\C<g CVfdֱ5fV_UWNǀ}An%o^1|# e-/Nkk70
+Z``.qY[3 Ǿ T0tTZ~qv7L}4Y(|IuT{&Ќm,ͤ'd4Ƶ.l2wwpvXݞ/=<q9b~Ԭ@EpsBFS}GM4+_9[˝)d8?<.aִe7t[:>M`poqfpx;q5~5./Li: ~|qo'`#RL{sHboHԡJa "=zAjਖ਼-\7Øc\Z&7{V+vs[}.h8KГ} ~\	JLʖwLp`W82KYmleyF3 ^gzKi0ih>kkK9RumN#vݿ_V=8 Iy#RҨ,77,ul+UQ0T</Ѵv ;e4qA`#ck\˺梓z0`e7ފU83z6|է3~2(ow`%'`1ݪ@av+o&<_򀼐_>KJn7QP|wq4	3^bΞTM2XJ˟H({h.mr&!OlW6l3|qy1-zsHbOSXَX1`]c?;*>ܭҜam[L}eEK/%Ge5#@^i\Jsp"n(+]LJ$!𿴈Īj;vru wxgvw;=r<޷*z!4=qa}#<q=`SO~q@`%Ր^@􄢴z&1'{oA	=c`蠄&J &ܳ^1ڌ~dnez:Gn|=ku:.S4|gg]+LPѷ55uz˙|sxkyTsSΡs(crX-8G,_AdS^m*Ы,BW#s壄ݿGA`*Ks\'K.Ϗ.Li2:^FP7O'ysZ[?UZ^Y.6%Ε:t!	J-˭5['0uƭ*H{g\-1_^dCm;/ E>R[^qvoAM]j[4ls.UYoj]%ky̚,c*gʰcdE:K9R&aiG[˔Qi^SqfGg~\EM:UPW}c)vzz 5m1
+ʺ˙V?~'uF,i9gO^z>R;
+1~T,xI=ȍ*_P+HsUUw&-fJE`b(Nؾc%ȯX\<rsP+i{|ũ#ڋ]ykiNޘ[d\VJ;8a#SN00hp@W,⦺G/᭞_tZi~̾S{Dٱݣ^a&b%'A@+8gKъi.5-Q+n$RbVTEEm+j9O;w<omFz5Slw߮RMCZgc
+@dvi[+]7Xu?Jd?d;1|<h)8) ZV<?e|N/+X9!¨V@)[U䌑_UṘT2*򫂌otz/*pY^";%<>ǳN-<S̘ d[e-N2
+U/"[,-J)$?Vþ<}Y{,B0Jqu&h1WS쇚pHIxyT6wU{WTsC}E/y}{4h.\c~]3; ~hKWM1Ӟ1qc2=0Ю+Li4.bXOIMuThznu7缓Yy3 o
+3J+f$T"Ag//:\W
+O#Q;P0J[-Z<(8瓏cPx>=pۛ&J$E"	آ6s|/+Kss[4mNgt7d]8"/-J{OGZ:ÀK_ qpnQ~;fFLG^jA#<ͻ @k6x}@צTǃ5@Wxq^7I[:9uh@W}Jɿ6VcqVF8/gMOrhf;^Rգ]mn'B-a<եopՌIAc<[l)tLzy%F<zY^kޔ9p,nȫu<t_,
+_j,
+["
+Tr|\z˗Ѐ?dӌ+_!}ZiZR?S3pkڊ7 "yk&;^6ɀ%w}f$_$Y2Xob~gUw37oYǌԁq 	]\xL%g<,V`1W66W#R^v}R5,}>~=wi%;vM$oE6<(<#>!URAif%G&u8kp;X f~?ؾߤ􃶦OG4u*
+J6ZV4'L比ƛsJI)ѥ;VzvZv`Ht@|4b뵨'GݣuGBv[Ŷ6mimM4eE^I[9ө:En.ZL[{XL	%a]mCwHOyQ`k>?nE -hFn5q]#Z;<s
+>te'f>|pǏ_>nen\f6@0v'AKk gsyKiNd&(Ϗ|c!skf#1kh~;|9TgGa:!?Fg1ǒD眊οeϝ{	p{N]3b:܇PW_l2(΂,ԄzQ#;|=WMb @۾
+4ü&*J&js4#=^[Fֹс2^p,3Ywh\XPL̸ar% ⳱7ex
+,u li[ZLnQZx
+WԱ</CMhn	=-\WVt`uFbR5OVwhcMk;OG)h&5옪 M_<{8_ph/59qk
+\*j6xR_?ʈGת?i|E@oG"/_0 X~ ;2iZndBG=Zu܂#K-Ɨm,N Ū{\1%✛IEItǃ\pIFUy>* H0Fɯ,]2F]E%`H0`t0k,kPViyh4s@0#`"G@vw=	 e*v_S񃶣8'AKdࠄjx1ck}È- :,鵢ck\-;\Q2'Amg <Q1^$>4h	GX P8E)TL>/IcNp8V %rAܧJ9(-;j$~PPp9\sCqd`m( V"M^fN1q6Z|~+7_1WW=WoQU~t-3?xS?t"{r'Ⱘt!ָW\,!$r4E=[|d'58qك  [$Jӎ4= 8kER5w(+Þ+.-+]L[P4OuV6R2MCLsLώ)e<6UY6MNJv8s聮7γsbئ]&:=<?*91b#
+n!#R^|-{|
+3KZ+N`f3f}ċ-{3Hi' %=ǫlVgz;Lg>U-5L5V*Wի@=[]Lcj?(l5ys
+R;ea6缘s_	n4>炧^mlӀu޵rq	Q~vBxyRÓ[y\ClDʟd^;.>*H!:@C:y42p-z鸬f\Y=VԌ%|&a=PZ["T #K!HFJE\Puyʣ,kU\BR3\@0AL(<xa=uH+bt׈ n}2(Mb0Fr+VmHQ:^tL}D+m?ؔ8|Тߑ4sI}y&{VQ[ʺ%ujWmoW:ԾbTvP0X˾0o,WA*JQ|xrus3Ò:Ј4tIy|ݛRrxQ$Ɏʤ3no0Z+{p
+;-![Pg@P";7o/Vt'RAƷ-Wx>S?~2Qgp<L_keL{?\(Ls%0f-7UF>5"%.M@ÒڏN#gEi9nٺDn\AҖ2@#z(ݢ{b;]
+*LgeZt;{zHuqH<rhml,wz$P]Upet&VP+q֑&nf\qG{vv'JpT}`#(ΰF,7cdjQi98l%H}@L}ˎ*V`uGJVNmeys~ux垘HKV"WY%uCcyܭN|hq+_ʗV	>._i<Yhg` e%}>I*)*+]}Mo­czawh+5>a%u0ggl&ͯGl`nרUnP!}1˃cBNM4)KylG>uYRingz>LGR)Ѡ{aeeOhQ 
+@0Dsl4*DՎ$."ֆšmߺЭ9TTA-¥ȥ0,Tb5tgat7,3c\1zXr;lݣM0":Gnq@[ EM^c+}ʗO> @-T^9r#'494	T=|EmZ` ;\#6<`˯Dlo"VQA/}V	>q	2SӞU,w^oPv-x4X1_z%~vv-,>|(Li::#LXNE9VfXՃ|nA+:1`1 D9y^לu$4VwU|Z|16^b~W5t V7A&v/bBy9Зʒ|jqˌaa^q7M0VjeK5빛i/$+s5_(39W?`lGYkñNg2$M0L"/AU;Gnhyj{a1c2ov1t\W4*kA3ָ0{bWq'=vpkNѵ&?D{_܍V@[vkT(,54uĮpd .ޯ<H}lPs@(qUߦXnuVQ^IlB5juVijΑM~4cjLÓ[2T3~7,G4&uU\OC:WW=k	zھSN꾢8ull&5vJ	j0UNw
++,lc"-^4 exh3)d+n9z[k- ++ ;a&rSR
+׵+f.e3
+JmRY{GYzxm^/n҈`Vq\YM4>7>U=K劰\XzHaJ[q=I%ް&ތecimLWUy,9~%̃RlsoEroӅ}NBfy֒.61˼|\z-ŵeMf#Z,(4@pb
+m%4ЪNU0gn-Sd=uh=$o\:r{hrUc\iKsYZI)c=6`X"J'@m0e0Wr=:,ci@p&}2MIw_iTZ.8^q[#'Tcx-eݦUhb6PMYw8be=%T(4(z^J^8Kvg5\oz +3X$eL)<^F;3Zz>xGkU3fDb3~AxP0){
+7qP.%uy_>SͺFjo1l\{M xK	tܨ>Dp'U
+,JدLBSti`*M0SANlpٺ|~=UÂ9;`IWm_dxY;yt?~vv-5,3n{du),%YM(3Z:![;#⮞9<MY^Y	K8슚">X${)FGJ6^ERkR<p峞#(6ɔC}pY\ ޤ2Fmk]\G|vCw^:
+Qni_ѧ8Wi	:3{0\jw+?%$b{d$96Ȫ1tS!~ܕ/	G)h:"Ó_?lbc{DwFCV}K:0'0uG/jh%b$7Ɲ+>djP̕8_(PGޱH 5bp{P.2fWzEKnQp>W/6gm+拿!AgAOX큽pÊه6oc\@uq3&_=kt[>o{0T=_4&Pf[`gsԥ4'H7v3o3ɼQ1!wqƏ?{Vq.Dsf+輝5w^xE}ezDxϻP854GW)E]U$%qvvSewOElih5,Ns8zLV{^VKP޲J+T(C,yC|7of&x԰[{<B^f:2ФNA
+cCiq[겼$Pu|Ώc&HwPJ.`F^Pٵn;ܲL/U%C800`:l.{l2A6xPFRH&	{I& 
+?q|/P'53E2bDܯ+ @rI4JJKC+彫c~-ުUr>RinNy^ܸ ~@p[0FO!w^Ejxbf[ѷuVL_3^CjHdq`IEiulqiTA<ղw/_fߤĂqp'p~8Hk&}ԏ%@exgj ǳ/uѿɎfsQPS,w3ȝ'v
+O'VQzi3Ĕ(jy~-:&q5~>Ҡ#R;#OÂE-%F; iY38aH&&YJ9t3jnk/keo-ռūtl~SŁ[l8`-8Iŀ	8 (_9y_ӧk-h'"Ac=-FZ;ŧiPmd8u_7|sg~vvC6dŏJqUI3pal2X9CUb4X|r]]r#ck\k	W:/zEn(T-깤r8<9M[gqK+4i3ҒƺXݳh/;R9@fYgrUԻk;&@
+ \
+"::(q2izl/#vN[U[Fk>x@׸/S;bХq1 3h/f@?nKf[1hN:I-m^z␆V}A	#Y/n3tФvoZyl4YE]YICJ	GkDk_hMgl 7'Bݤh"sb2-o^n^c	t=$@R|Fǲ*l54q~x՘ s
+97h<N<<eFӪHyJM{!?.~qqh\츬L}T&BX}Фn`% Sπ#:6=c>T8R05:E~c"^Q~/xRhw=~|
+,71fNҽI.[/X\7_'ga9`]UF<6[Oz.`.(a`N XE1z\VohRWF䖸%X'*;gF'(3B5HZnl}=0pɺ>$3S1\Ӆp]HM~ש+×`ih8`ZE|M7دXzL*c^q/TPˌTʜ-΄ak}S#/zL2cǠ߆ݽU!U3\i|=jMqm)M&a9{FmR1MFy$Gtv0xXRǞ1s!X1͐~q@<K!pg`wt]%V䟤pZܯBQ"9Yv:9;=#Ypy%\5pObTKŷ%j[%O૪ğ'y{`\#8wl3,{uʑX^Yc',y=2pnyНWuaco+V#R^X7{񊚚F58a:7=9_Ϊ6wM].GgWlXsϘy/G,Wh?/TblG}mWݶ'k[%|( Xh϶W1 f&Flґ)E]zOR+-Q./h8~vO<k%Y? +Z,<?}֘_JT8zTZ1͆L,/g0\uaVY's~S`X.uW  2FVA/!4xA~'LGi㱮.1Mij](vg	QLP̶td{)^x&6URN @VVG"W$Ԗ88Q4
+<H=۠}k%Bt۷NEFU!J
+z1ގ/x!}WF-UbhƦs6nV+|1e+htZ5j(MifD57$X<4e8ݏG8gݬ-J۳aXYD5M-$Z]`P`<ErwSt3v#M7m)Ҕg^Œ-mJ:WY!kԙ&;3^AsÔ=%P[4cQZ]8bSG[}6lŝcL}P3XGU,ArÓ_1,^rY3^g7gHv7nK=v-LHEԷ4$@BkڨVc!WmE59,%@ٶT5^Asīj]~I'J߯ /94`D`]h|=
+dn'`xyR[8$!=ТGwbJN)		Rs~29Y1ghlOne31\#6<-3벐u➭iAοr2g-/vxCb9Nl]/v<%{,Bc9q: M^HNieUﵛVˎωǖQ`HѲ>SJ:gr6ì̺8/
+Ka%@^ 8D^Uw;U,]4hg>bEQ ׆&v8 %g'Ã
+hVܭTY6FU?MC?_/|NBu5J,zL4_	 L X64j KKOS,N`]~wOm#'E{r[(B@\I~>g: FQEԕ%-Ϻû)/GHyn>{FgfJK3vw	9oT5m]LRD_fz׃=cjpdT=V )JmN_vb'q7-֪f=>$I/4&%,r}l$}Y Xau >L6`=ǁZ+sSh옗|EScQ|	=J!]q9&bKe]1,Ϗ̎q9 i 00a|mS҄q{0\yQ~ic	e0]"rhR'`yΩ%z3+uNTd"2IT̗'I&,	u45mտ]>?ׁ=9ݪYkUM`֗m+Dx2K%]8J@EzcA5m-jEՔt>1#-%f,߄V4,9Tl͘YEo.bDz1>+;3	r	#!%xJ+cmR_9yKUpu]ŔqΠݢ0C hƕ	Ex\9w֕k5~VQ*#gh>8ɝIdIW]*1%?Uiqvha<(}Tn(gL˶{bޔUFTՂK5Hyyj[%v4rЊ~u/P ŝ9.ƂPma"3v}yjn(,^8r眦Z9?#q):~~0b!=Gg3F0}bah\E)/rEf&Isخ4$7JڡH(E^K]TN:qs;
+>u^Apd|Nސf
+Å%<fpo9AS@[r08H0T%qZv̥`P򇂏vN0{1G/0rxrkFW)f2<- 0)kQUe%S4x˽dSl7lG5.׮ɛr_(6?p8׌Pr:v\$k \Jbj*\)d78YH21QARPs8߅^x7k{(|^|ZJK%֫* ;g7mZ^ܳ\oo/2XCY+/QA¸re]5.Q+~7vZ3uP5M,Kj%`BŽ] ^1ƾ?MO_</YG|Wt$X_]+gKƐdgZ$BVYx4Ta+<ZyZE8y\ ZTUUS*WsULeUiIGj{~3
+&ň#bUUUoU1YSZmxo$Au,EjϾI߻LBKb6jwȬVItb4cJ F47:lhHb_dἝ#7vO!m3,5(!
+r&x
+_qK܄)YUG/v*^6Sj:DUat]Wh^3[Xp><kYODsFiS(-Ķa^δB=,(0J 0ͷpp^0* /u?SA	=^/-0c0C@c`2`a(	&2X9+΢qY?'}
+<2!P[V#ie"]g;|8yAxLσp<M'_	K#/U.}ʃіDdZmdWX_
+brY/Q2=KU`@hX0&K,J>IVIΫ@oKdշl^?'f$@f:NEwz-Ǳ./fQG>1"D+fv^1s  PFVpI\XD/֬s$siawE듕?HGXT1z&.S_O.ϏzjW4	o-4L=_
+tےj zy&M0uR𬀉9MsV'-FgD梁v	mVq{(R_Buܭ-#=8PN2cUz,7V@&a_vM;m+@ӓڏ;$7KơoT/)/jDAf\pA3.5uOM|ceuб֎շxLŧ``EK1z}n̧lÈu_oa͆[=SQ.%<|][<Y[g%T䋞^'o<AKT]U yqPݘEj2
+S ոU5U Jw>kzwinwL
+c;*މiz9]@^2AI ڥ3{r^kEd@XmK5rE}/ my9RɰN/ KPua$cVjn4FPu0#Ts+ߢD.v{'B b0rfE##{qm;oK4û}(/أ\nCMV_"MkyԤKϙ'{=jLI3}Gؗ<SHz)f
+qS}yf_ЋE/Ћ%UA2dHk=i9yeJFBo}e&:4%|oeXB;u&9Q,_?k4V7AH?n	Ȼ?	NCpmQݽuDTLyՙ:T:):pk3v/?wK݆#!Hn§)haa-u{sDqp:[_(KUE<Ξgm$hd3ָ'ʴ?{"z~lk'v|O-YiA^XQ+{̥u^	,3 tVBjEU 1q/_= <ݢ(AI^k4|[Wnm-y<[5UsYXu2`q&!7m]w/Z
+-jGIU_mX.BBZ+>ęeyei 'J=ZAH4Dmqހg9Jue]șs<an/eERlJ01g~]Yh >5`{$>/AV+*+r~м#k3xs֐ԕ-Bywec+dUQL=kҭ".8n8)fd?6{&)p}08z[Fm;.g8VJ.C?0jp΢|S:y=Y=^5./&s!C&v)1D8Oᬡ"*=:@bEG	4c VcHyad3C:0<9C@
+S
+l5#)Ma@EjgѾ|?%]k QJ725PK-:Oy	*nn	DlY[gggTU<++#{I`p5گ},VΎp[nFgZ6G^@voZ͌ꊪpN(x5}zy^k=Dʌmi>4HFФn	Ҳ*]<KO5jE/OeWc:&jI硧a=`	[ֽW R[-X= Ă`}S KuQJXH0wW3KƋx$WV[5|V2 %I{ YYeVi:94c10b0Q1`BqЂ"*$@$EEDQT@@G1( dPDyց;{bnߺt:=y{={gpݽ鏖,&ݍ݋`f#tBKydġ+Z'3{5x
+pE⇀/Êb$1݌>9/2p9Ԣ~5\X|iæs氘ٕj(IoV/ʳZj2Hh9gIQy7P=C9ʁ +KhKM:+a&Kmv[hINvT`1_F`n˓8<򁙮E{Rte'.YhLCdBGM+4`ϣ>(F1D &"ӎ!jOF:3&߸ʖc!ŖjgGǾՖh@{;}$um[ io˜EǠ'`~p{76oEYEZ5וǪ=73܏L#DY44S횔nV*=1-?U1nzʥԛ	p6nъ0Fxk &	0ݧQI?o%ϩ7,9Ռ]TJ;&kNE<3'FGrgK,}25-h@qhF
+ڬ7"LuqbC3aB^{kFe;<zT'-{˜=:	.jU!'ozPܤȜvP3˻iⶐP6Fޮ|r.w^y\P6*; Vr^Zͯq^wV{. 
+Rn	 +LUbid9)]Z|v)VslN\P(`#&\=4{g]g;؊ggD ݻ:&_(zsļ6Ѧ^Dr3+#&$Y~lMbo	v6V|xe*&tl9*R$P"/8D3L$ۘ&ů@X@x-L
+KrߊG o_]PGmQ|3['{EHGzN{GjGV>GXVo+|=HXYNW)qNRh~֕rB:&\!YVrB&ue)ʡ:NFv&R&4nVL>[[|j̊lOn[51vN#*=k>$C4(MEx ۣcdid^wj,WTyb"썖Rzw:U_`0xn-ƙZ[^|oTn[_k zR<ޗ뽦MO	P@z:E~:wjP,;IXSOvkS\WXSF<^62fV䀰u%yK9Xc؁urGd֌j},DnXƜ3&}d9qxѢ$X#wǯ
+@@ޮ%epӺtzC]3#ecP]U7'>B*훝<IhY 鵉E5ߨs9J-tTd(&Zc^{aGKUNʿ:&1҄ 1XVmptQY#EL
+..,(vMǰe(acMUŧL-:};3~9҂J`8Gdx26e*bش>o- VL:?缘X}n!̌eȄb '®8rD8d[Je)
+@c Yl/ENlq毖z-Qhe./op8tkZBNyap`7۬Cl엽
+UF;MLsq_l=.M^)_ZW&-ixb| #XŶT͈]wP-¦a'Ъ#g[gNBxp+}\A[eMgUdFh|vʲ'!-+%3".SXzڑv}K*檏c\ ~CЌ 1҉8CSLDZ7\3|'}[[mʭK4i;6!a]zY0u-jt:֯r_"-(\!h⨉.Pp8Fw)E01S
+/rcsa7D14ļ[* S됌]ܙЌgB_,?	k;,cpKt``6utf.f<ݷ*Z>ⶱ {SNՍ"H!\eI$^FwJue?7w"%%ZMnv{>c5jT\\ܪUuW-ZXjqSԢ3p>ی8$h
+ăFqYb^F%Yi0bF%E9/kc0gUda!³*qMy~?=\'*njyŢm$rJD!c,l^/j7z n ʆ/-apvŜcw2/-g'TmVGȫ>!,56˛75>t*M "W*sZrBE+ 1F92	sAUiD\^wxd Z$e P8Ĩ
+\cBIO)GaSOrI 虺E,_ԸA0=o]8 =<YgW;6GS׎~ vڟ*ŕL)j3p.Cu!X	2
+9-VF7!zy |%A@gQ*g߅\:+qlxc ,Ϋ^oB6?-^n3i&Ie3R-w<W!s7<#s=A;thCN-_{y'7rJ.8<0Cq-&*s"+ם̸ƅnLֲ_GgMV|LN?; YٻwzPV\=*kckM8sZF>>5	pЌaawGb0S.yl,Z~NkC(2jj/1ޞV@28D$s;*s*N;H7$rxgSXjn^7s1}yLҤI4=Acǎ]tgyر,w9 qЕ2a&!,.(l{x̱9k2:4k&ӇtĶ-j
+;58 g k^	zp|r!<!n-*UdJ2VWz$ CJxf3 	V8f"V~(;~Z2?BÙ=dّD`%8(0F)A@0WGhcAFםbV
+ٲj9#;͸
+\\#s"v5.LQ|+܅&Dp(HWkm<AA3R$D=y$qxt-FҦ.qÆfgHb^〴wn{O1qOIF#3B7 +?=v^6и;6¿8E<I7?:	@mA\1oa4ck'-0(22wxhU0H~^muD<^Zg`19=PeTxyfwH&D7@)_/	"I "*M'q4Ǖ%\¸d;#jtU]++ݑTY.|I	VE27sM6J́OX/摦u%hbY,'M+>qfyȬqXި->	؅I!=/`z0f:0zݻ#2tb]ONP~4uUw6{¸aQEQ{07m'?g~zu+QrW@EPAsZF9`_ɓSRRm۶?O$sloh)]S7H6Mck P:YQCY56zi8
+:|jb^i'LkǨg?)&p]! :nƱ9}8ļfU0#g1>RU^K} lRU_)(eex~-3>QPӊ{@3AՂ?$WBRIL.8(iYEaB:Y9G[HĲ%f.)~GΎӣ^ZL}+-<q29q-eN.Vxp$sj5HФ׫R,S
+vJE  K XE@,dzGO}#:\E10*Ȭb1GS^6"kbJRx
+#D.F~ڬʆZ52p!pZɌYEo`6r)91ABXr?.k!0ov+]%SYI}29-@1t2|gnlo}!);4ki6ˇ5;v6nB9b&sCOFDC%Pp,woV7509N.-%Aҗ+87O?ȻiU8"i<LoE#(ebޝRVF10:{ ʰhG3 }5`g-<PW$^Oz<ZW(9zԠFlqK/mlaW-]=#tb/Pػ֨X^t;R6$VӥИ+	RTKu[TWDK2ot^ޕXGK~
+D-^7nܸg}jkkw}լYݻORЌgq|C2@𘜾p~?kD|Z#bxx
+FxjXqRޝVrܸj82S3B~-X<K C̊l@s|.S΁mTdZ'hQ (bIX+BKfdF)SsA}㝍
+pgve}NSŧpZZ*e9ȢSJ+U	I؍¦CdI7wCEy&HL<JEJ\:SԘb?AO'.( d o](D_e"Ǌ˦]=Vڞ[qά	MHrX`C}~5;cGs}@|9a/Vs:8}ZzGy=>6=sI8xq\0Ɩ0L07^+9MlWcUӂA4|RTr=w8lDJ7PMD\:e>_,J%<s`n㗴FFjApWkqVy#axwDiA[B-n]E{Uǹbd{c{gʋ^tQ8N(y<ϺCqߤVn`M85DE@14c.8.7<u}h%X`}S7<`3c(	K.;goŬKGV{yE,#xM_ (k_ Q>bKge~e8Ǉ^KZ}mgl݂5Ǖ6.^yM{ｼ/x,'|mOc3ህ1:"s#HwXG52kܐrc AO5ߚcFofyy@iUwi!|U>#]zD,".Q[|2oeTUSp'6KJc(]sh4 O>ٓ'?98E]#zE+YadDPǚ2<k|_9qmbhjI:e Wy҇\~K ,G/Ƀ.P2җ@&V-kElCy2x'o}=s1c~=i]l%v2ꥴ;vsQrP-}_i/oAGdNƈJ-%87+=>8ru%GqInP`=a[8i4d-L<I4F3'3 <gP2}#gcU˄Sp@~z֊(qFe54qhN攙o*.5)n)jcB>g);)\Y-DAu}|&CTW'WpǹXs[vR.vY̳ <C=ViU a%*~ώj+wae)@jsقtpEQb{j
+yO[	lY"<<s&Kh8{titw@]hTGSFx
+祳E1jI}g_M;Exx7>j3>^,Ǽ)!5emXqKⳈv@Wםq!:FRGOPyWRժ=|43<."<n2<sSwidc?:{cWqBO4ZY?C_tE;FK`	tOcsB*)E`1crωȘko\!#+Z>61=>Ҹ/<j<te@Bc1bFlUiGK
+mŕ4	OOb(QDہZ:(YG["J+Dq!~DrlN/C~h┢?^v@("r[Nm<M-Z$_ll,:G/׶`feDxre &{Xq<=,hx6`Cpz:)!]m 8in~4\wS??{WH0i%4:OG+ݶ\-=S`f)T%yܵb~padǈģk:q!O,K<k-T9'<..ҟ<[tUuNM/(䴶RώrYƸ˄h9jxz(
+Z 0QjuYO-r_&UБԂ ,\r\~KAe-8DB.UtQ!~/q1 yvȚ\ٸ /Ä^S7L!q[㺻F5^c_` c.;u;@nj1b,$e8 xX$!rm#NN~zcoOqK!GCe\xASoXjoQN*lz8l˨t vCxCOc9 (.(x}{nbk-^ӟ Э[d>
+_1ңGN+>64"<S6dap/Web!/&9mxf5P9g$n1m1D
+I 57P<F3r9*xT؄ c ;g5cYC`gU;$b ȠɅ#mLe_SFf9a^1/yNaObj>`7"m]7QB`92aU)hD,.٨%uUhmη<({:"ϞPGENk72kb[a%.dzhFGG:*u#X0飉ɅN͛Xl2,fr|tT𼤮>Ip_ǣj!l$H_::YyFY+ċ&B0c$sa𕜥-&92(^VQ5/!Z; )4D}nhp۩O^7L+5yXCwM,s@d5UZګk?~B%\|	uS8I3/"j6<j#Z:;>7nnX*8BLZaUKb/F}`Xl-b41K䆀sSIOsUzBK- ^IvLm?yXmXsKSE։QW`@ü>V]Rpg#sUpd>ޝM#vISy{aWs9y7oYpJ_p`1VinO+<;8ށe0mlfH(#VMd90	&-DC,k2 (#+*Xҝ\pTW8xסCš ܖ¬#1χ`,GX>#)2eد*'p8J
+ ԈuRTd9n»McX"	O}0N´CTPf.渔")捖;/ԑX4Y|\+w1`:]	\~ň8x2zgw'\qDi6$vZ	bnᢺ\#k,j(VQ[Vg~s握$	bckgAoDA݃-5AUa1\!.g<g8r\>7ؖUy]F>6xܲD3+}Ӫ`G]|B)O*;Eqc4/v_-K3'텰_>c/p,+I/J .Z?ig xuWT}F:~eCĩeGuŧ$vgiڤ5̏IjqGAB!AĈ$PV 0
+59?gb^;Goȁt\nc*N8=_O1" UiMvGo5Z)3l^U=Lf@65`=t7,#iU Mb5Pn^nv9ieE@~d; {c@^{c]gZoM[{e˖_/#Qhܸq˖-;3;M ?Zjh`WYSZ#U;<{J+m('9,0h#5){=ak_1Z}U^0aDT)àyM cX)H
+Iƹ`X` +0oAx@9DTGnRyg\VQT9}6pZ	_q1D`gI7LFeC[n?I(PQ	dkn!Mgo]1˷.β-lyL圞ka}O\JZ)7C_rw 򔠡"j}9kM~Uc0A`#f>H u )~?줶[S΀d|֬],'o$o0!1d;ρ*Vh5uЎE C_R	Cc&:1+]sQDBqu][~W|^9g7*Ԋ?S׃g\WkFhJak2NޚD5HN/<N<ס;;=\}RMUPVrϜ2O[o@sJytioKڑn4ZMCc"*ExN&R`v43+,* Ǝc}Gs_b7:'vg]v$ܑ}ڦ|82;\X1&;nJ}޲q!u]	W՛۶m[Ʒz*))d?6 =oU-5N+ϰb,TK; >3MȠp}6.xH
+dszwU4\GЊaak[M`@tWƬ	t_S͹]xFi
+AseYPaL#\07,Tv r%*TL*+@d,[;\"]V3"k"YxWr ~Z:"k~;Fj7
+SoUو}dLLșP mf+XBCz R0@s*<ul`c(igˑI//>.RL%M!PC7x ClhVB>&c-pBII2Ppx,a-"{W߅pޘuMQf !6xM 4y1%t6t./
+@qz.O;>h+3SرZ0'+h<G%s`;;RడMps[vLRBcCL\VۻR$ËTH./[WpgвZh-5vX]"ba[VY'!& uP2VN+ֵEx<bFy9MiΪ01+ǅpzf
+8$Yz#{&cܖc70Pm  ;,3C/&8/9>}gT8Ȑ|;Xʖ'oT^уjYD/9rx$&б1V߈ 	W{v_{aGKzX9z5Fbb,x 0Ky놬X>E=ApZcap4&	71G	Y<6/1t Ap0Κ2A`r_p\݆:H@a`"w'R܋e!t 騬0֧$b،
+4jf< &#njљ5tq:W?,sd+ߏ~ sb2"<v\cs/I܁AKrl 
+g,ʄm#彔OMw)R̭|KJlI=n屶is86u;T 4=m{lQ`b2䝇z?i&Gz-v^)q>)Jr4_mqK7)@niL!_4nz6^
+#qWxvVAj\!
+Lo\%!C>0/zyǉ!(@Fi*5+![UHr	ONOo޺H1T2|~ZMKկnZ;CW5[`+t.	2%s#1<4<^y-|$b)[U;+r4P]3؟F\m,oCů߸3݉A+`,Ge`7=PҡwyVёWexf𚳴N|T[<FhCoMF'{T%EJ2`+xʯ ։ u%bb.n?wSn^Rp ([1`(Vn<,s-b_XAVx}JL4(AMvpZ˰1VLhRHBEB\gN+>CQNqt
+H+=Spv!BGsƵ눽`9-87#;x^xv= Ƅq-ܞWMaƱl)ǁ>cZyӊOg(K"X//q4Y^tԛѱ9} +xV(#	S^M"byAX|)BMpv늙@ Ӝ:9A|ƞ8Nut+
+rqm]`1	9r~#2kpi nBuap!U~ޥ>G}4ub~g`?'9cWs@vMȻogVҔ!i?Iy=:{WnŧY^ݖ.ͩi_vv5!cBFd|hG_/*j|Phi$ͫ5)1Y\eS0XI{vFc2hNbRI%7GA?"b~(\-J&g<|U2K,F`Ip	"LWyqet$׶Nc pkZ絒.1UH
+Eܶ2uR-l9I]%#xaf2g>qiѸvMfx@z:e;1oId"z]W%uo!E-_kt'ΔMQ(4$J3|;xIuѢ:Sb67&ޣsP{-}bUh?FM,i	#C;ћBhpBW暂QrT^UVUйcGb=] xz#.W%pd
+<wcy?}@dPAY'0GH_!M0Ԫ1q_mx]Nۀ+AɅ,5	8nN5+=RY-pv9i)	C~$Lu$tmq%8)y\rx2&rKy?"Jrl"^=(! 1kXTŸɴ܎JL/; K;Nx rSJ`vIfxaĊmd	AUTLbծțm'15? p7FϖS;=^]wцӚ\*ȚdcyJlS|g>~L=\nuT)83e8{: ~ي: y.r`F.0nϦ&Kmq*M\$`tiI-XpDR<OLV>+.le-WhBCWPT0cȄS/>UH-.˓AڋNI>t; %4̷HE)Xлp6D@E84$-ᑺ`YZ.dvɱ.Gl 8}UT_`R'!m/X`7U +zF bTWamG(xWvqfj`\Sw?.e,1ں,bwzv/7u_{aeS脼vէ`X?7?6zA#l)n0HĠ`CX!FČr #pY5hZ|0(1l~
+<洒PX?0,s6UMʿԯ1	d,khq]A=~{XmZn|LNA @p/旃1cw8P^c"/0Br^i8&.MkYvрg:z1lߊL ƪӱ/_,eȓRM?~JAw$p_XNi 窠L`TpձaSzu|!
+5Z;x<"bFg<&nWVK@[Pͻy7쉱2s9mĊrrd!u93d->ƒ=Ҭt	.8QiYSpp xAQvXBY"TpayΑkZxGJعD
+siB@1CRLT=4\H%Jօ
+xgK_YuJJ)WH
+}a()F|~@6^-W`&[*'}.&:}xCQKg>`cԢs&1ERh@2=syziSƎZo|7u%Gy:]/aQc
+^)g=tEvBOp= 82-~o;&\Uhi)upO|PtÛ7dgzonHEW%X=#{nXrS^U̗Й!̹0޿GKt@XQC@'ļ;2A-a|pQ7?zPV&QNdL_10}S׳gꦕ3^)Ǽnpgwq.\|pPf( \xQm@vNa/!'هuhNc\0@ұ'YbUx&a\|.\0᮱l0\`bpg\81JMͿ=N-:n9
+N92f+4l)-#8F*sXR57]ʴ[	fJqJ>DF!s$UͬȁMԅ`$?mr\-׬YW]5빻nsi5#N!`Q(ʘޝWhųO,bq_u`G'Tyg{>u7fs4\W#>Y[7R{~8,c6FްZW7d[p:FJؔgv~t? e0HyiC~\P5$r@hsskXz#p	3>Q3|dxU9$} W/P镝-nvP*IJOHַ“.:8aB{sڋDƂvac9by	+J/3z]2'P(ɸm0O)N#O1$!XG (y d! P|gt]i8˖"tU>(ގΪ2)Ƌ-e]Gu3G9wSa*Z~tv)q5oMYK][OnJ|qYZ'>UݾMbuGsM݄݋M^	vԜ}Cig	/b PMF6^+ߣZ,$rqC-.+&æI^{x
+wU`Q&ϑdH`%&Uh1q|
++:]jMw:&j8G?'y.O~Ujn
+:{j#ngp{9._W߇`Nm`Κ8̉z@3+#עp?8z! !Rio14DhƂVЭs6Jg7H".el51of7Zy@QgVF
+۱cpl	NLrZS4S7'x-xJbHC ׷9˺b!17fg}fx sD/zdmÝJ0ko~NodEȆsR7ˀ,]grZQIU4Aa#.k,Q2ǊU&术90*`vZvjַWGE^bl=P+.ϵ~ҠS?2k{@mɬ괒x,
+<Ɏ:_=JR[Er
+m89D5WN@&pDHxU4y	B:sx
+q76!:{TQCiGfQ'a+qahLtcqvBZ`%vְoODݬX%O2{Zb_^R?ҩX`)?@Nⓔ/8
+RPrjfz}l,C5:?2n0qӧadcE0^kpaFy(ngn:]ciu'y$nj6fu%)hWΈYh,ܘcsza.4Yy#``<L9=p`TtF	b|UͽK@l̊3˕TFL"zꀤT:ӳg!炿 CkocnvUD =lTxԕ_y?WMs*WxvD?fvBR>DQNmɈ` C;{g~XN
+4d/VQv<<s4Jss48UptêD(n$/Lǳ&j*z ntP>,u\F&J⹅	#V{XGxylUD.}(OiਤȉhdD/J[j/$=O3/B
+O⥫`ڴoh=k吢t{aUR%W<,ZVy9|M:4yӗncxZSp5:wy<Xxə05'-@:iqiwOYLш=f36~tB'`3+dEJ/S֋U]7" ޖ3K%iș7$޺5+\LБnH{zE lF{ߺѷ?RNPCLCGdv0uti:mgҥ>1qw.@k\Bc*4s^1cӸ2*a䱜Wi7k28&;=Q[vGGR3p휎a;eϝr.|{Ei+$	Ks:^VgU)gdB^;֛`Cwvhv:c8G0JNA@H.#M/;vWpV[m#mve})i4R,<fXw;ȓc'gUdW88_M)<ԵQȩ7/qmNZJs);{%Kr=\?ϐA5C(>T =\r|ycDj'}tPODsިhp~ <OhnIr"q]%_iy`	]M[}ƕ;{>wRcrH?XV[:
+T=E+'@R&)h-䍢-yFָDBWWvɆEsӅK]!*b5v숢fܭAq^Ctq8OAet6sfyIL+>A\3<ХSw7nfq"cZ<U״'ؿ^3{zuoĻvj4\mZlqB 
+?Y8K۴M|ef\ݖ*4zAGyEdp6g_ozOk/Rh)} c$r3Hƥt2]l
+xCg=ϐo%ϸ #$̵VZX9%s{
+%f.l [-êS"%u`5\`ԑN)<a<[3`pVXx.`WZ7'(-`+7N @s{9ʯV۫ţtL
+O`XQ%Qԙa\h2rygRM2g4 hUHU.T\0L;G-b8ühv	;8Zvu|nW`G00}yyJX<F2jy};qV:}ax<毬	Ϙ,UYA)b£C9BJҚ<ҩ txOp]-nFy37="ABZT'4ϑtxz+F$m="k|.HKRoEik*u>)vџSoTdg64Vc%uv!߲1BFNn39'hU"뵓u0$m}lUXD~hUmenawEaaȥ:jMxi 4dcNO|~/	jt
+ݕ.G+Ek6K:s&0/m_XyKGZFz#k6oI6@Awl	>zuݎdR_h^2aaQnŚq:gê %|vŦJ_ɪ{bkxwA0i'cB:E:g~mvb _Oǅu7'10Q{lŋJs[#fGjςF:.,ݧ	E1ds~ˠc7dհuX~0  bȬ	+\ACKj<<ELܪ#=.U+`g6a 1X$lďǬID/X*Jį҃g;p96g8\pļvˌ&<));!3nX?}[M	ezEG9a, QU[cb7wwlHF$@:xqYx}"-\ծ@UsyE~-Ns8j1N찹~_^#s!;hp!GU˭	yg+.ٴEhͽ0@6$l7"]Zew:5T6Mms_אZQm9,<W#T"ꄮBV$;[D9J\\CmɁ\*{J j-oQI;D5DkO\xݾ97WƿݽBRrAtָ.r<#Pjo
+ќEތ9ǔ1}*q"$>tBƎa|职8>%]CZ[A=3^.=Nśdi㯔{wp.uAܔx?ƻ;D!tۢt W0yg݄=KfW2X$W\ 	cZSCcszFeԚKεML49.)ǌ Y+z5؊5G/C2q"+F~?@KY@X^xΩW^YD
+b؏~g1/3pH=,r̾rsO`x+bD3yC%e<d(9IgNs<0jo:t65
+`!a41XX\(U݋bG,q2=X3g)Ps,Aei3Gu-hKyݴNF5L?
+OF=e=̢]昗	"v2PGOFRz՗*>VMb,?.F#~wDiEgXb:-{߰X-szȚDN)<ah<2mFyIT{'a &G"pfV:	t{`N%~.:IOQmPu'cVB(3^Q$]y\`NuyL3Blx`*iJ7eS$
+?()"wvzAVǲꏍtv$/癀SΒWE>ޤ0Qo[=,svTw>5tc˰@G5ખZ^@Pg֌is߹?yf7'=;F'_ы	uN]k_eL?lXI8ܞM߆U 'dTC{E3>=^=|_-jt{3ďܷ??K6F{M=yyLjcO)~F6o5:	?ۛVGr)#iOe20X%Fo벑9)vclȁ =9\e O>Z(t'^l27,pwHd[;-^A.xdD[`8!X-^#1~?#p1昲yb`1X
+E TEK;!LpsfyQGQeϺ@XԢӧ jA)JޞZ.*C2I=Bsqj.qx<>9.q,2S*EDD{խ)kj*"R60e cdUxyWQ͑yKZ6s~eoiqKnmՎa;Y펈rNvߕL,ai	ywqp#
+\JݷLk'ai#@z;<F>5m
+-;+9cnƊ"}~'մI) enB~WvD8'45</V% ?a~[#\kvX-9"LE-y %o2A=xɱqCojs˸U:89~.>2ZX'G|@[=N8CX9YF_G{k34qOC֔lGw
+>rJ/Ϋ9!n㽳͉OP^tŨ~?ސx~k"Nz}IV6/vvϭg_{aGK:"]NSsGYq]|TLR6$5&<bP=vGCd<Fvv* / ~ac.Bŭgܑhhav,Ҳ
+C_!ԟBsscKP6JsL,<\s^r-Ee¤uPE>?Mo.{vWa@F/=I8MU)L{PY5F+dD}T0K߆Uta֚y.; XB
+cw{ZWr o5Vͭ3RG~AHu]
+Vv3[h)GH3a\XLcmØFӓ.m Qك|1_8ZaxGv8t3𸜭W(4fU҂w✬ˤ+RԱFq(xB9TF)Fh&&2Bx9>dyOf~̳(LWi1A,I5jt.#E~Zok
+PRxaYr8|٣!0WKϡ'\dۘGf<ʡW(N̻AOk.uFmI]?6ZK /seo=YFkEX4ܔ-+rjg	Iȥ1=\'T]ǖ
+r4?R-nKYקpDA$CHM={?ZjJqcszļ13u9mLvSOU<BgD j#Qܚ	;Xz#E7GHl- FL+ѫXJEYVB@Gd,E2 LWTF=vf3^\!9~gԿ,QbN
+ұQ: A;\	KeB '1e<TUܞ<
+ h>qg9\>,s
+)	l$p]Wz6*޲S$b, gU6+^{&XE絀*SI>"2$(,'<)vSW(X2g<I+}:M1F2sg!ڋ>[*+v"?FUoZqwV!'غW
+Ep9^I]w騬Ѵ2JGB5~Eoj
+_ѹi^,-> 2'㱸/"VLbѐdc^U.W=YaI5YRQ*(T+z1qi%A饿b\r$̝]ـ I9&	:F0y\*cN/ρ(uj,3ɼ+zj*Ϫl#p}ɲahނbu~cgDf;h%tb:3TBEK[8c!pLbS]W;,cN[!op"Ƚq{ƣJOTX
+X튐W';XV_R}ryYtuPصݘx'&y\PqV{aw3nm-nݔ&C{gG~<2kbZf`.u0CAX'vs <=8BW/FT`ِ;mEG 8-mTTz*&vnwҕ+q98sFJ443ˏ#Y1).?e A~h1&< ="s
+Zk* A[̂-XT>rmec\@6"k⮒77߃9M`:M]?*{
+YY| -f?&q/s^se'{;Cj *yC,:XUߦٮ_ľ2s1gu-ilZ,uu&,`N'3chRA-{rruCŀOx.r\?hp <߰T +^i5@%2d+ǊSWr4F#JຼX֋-c:GF/ E1A cQVӑ"X-!
+ie;/P^iJi6.:Lds$RQQ/#+5}訰ap\D˚_;2WǈNglU0G&b`J%f1oZɱpvc̚@{ն<!CCpH;aIz(6u?+DDLw[cv~c?d|Z'>ڵ c'hb?t3fA?~Z'Vg(ipޡ[&U/取b86sEzH~u(20et{v& Aa#f`@
+{Qju]$Y_w#뽪Я6^U?#
+q[QЊu̸8ZHtzS
+Q½xY+>Ř؁` GSeXm¡BbºIL`"r{we!#0`Sb(ٶwGuXJ^v-^ \x	F5XJ׮)ө-?T<U58穤*9Ȭ.Dp!@iHîGJǰyh[`ciwV;ؓĪ"Abq h~gqnqfK!֛֫Bd9tȢd7⒅OOw+{N)lN&=h"HeMa  Lg@3^zBCr̨bK	GaYپ=nrT8oL+ȊdΫZBN8
+J lIpusH&#T-b=^?Cҟ7_N'7>^=lȭ71:f+q@{ju<:	}&+,۲
+"ZGt.~Ç&sɍUt`@#p	^Z	RGr.*n}i3ykW7E"u7MjM,o\%+nKu[wvX=|_-g2J>48<F[Gbvqx*_uҧ4wiKeTX.cBFetք'-VRf6b*C:ClWsh2*OUj)+3/CgdA jմ(({JA0͑acp1[B"w9)̆S<TwUT>UՅX$d3;o!Ag S=	y~Ppvs0\|$)S)53L!QafEVnve wFy)֌ UgUB(h sǴFe}0eSr-K,N:QYGdMRV<uLh|90~qΊh%Pl3e
+}=\Ԁv(l4PdWl	Nqz>X(9G0Z'uDLiUN-Q6
+:=plC"^s|.(-0D;*fVFI-J~;rٕy/utqL/lЩPblߨ<I(x˸1_\{rD,Fs\*#8	D/+9E"t9\`\GӻVͮ2/t	5'cap'=y-4J~CŇQ+TЇgYI<QY\ehȡ;GǴomu L_)̣rr#-lW?;B໘.jGt62xϷ!L5כ=6t9[J,K{cp;9nnzv)+ Ei6i|n̢ !l۳3C	t$Kntu@I@!c$r311E^_%6!Nas[ZP૛w~"gЃZVkD."#шFp#Cy|n{b#әqu๖3"Fd3}Xv|?";]pۀ.MxeL.8)Ega9)v~EM,݂=9ܖ#[hdc@^'gqUm1>O.g΢	:kZ6d\tX,܃R̛P	Hꎔ`֏ќ5Cw-!460#;dyd[C~|/
+V.ZxY<^353k.On\AN(˚$A_|Ʋƀ }Hh6}k:zVe#7~:f#pb:AgN!Jk40w`q1 w$y8lt'n\qSeMB7Z넺#Z<:`7nlJxmK=@:jVET$seâDDkYh Ūbnt*M>1$v7E)^4BْD)%.^J&mFB\:w;dz?Ĉ4p8&͘M=ޭ{?ZjFy
+aӢD|'jT+Jeu6ѵ2NQXBҨDBYkmO1+-DWwBrs+}[va!EXVjM#Ļyʾ+,5Cj7!UMS[]-epuj;($Y:i՞OLN]a*śʩ+wclOh`8{%"5
+<L+>are=5$j]`&T^ͬ)0Y㱷1M%q3o-]23󸅞2//X;tKnuOHuOXkP.|'`PڰH
+^nMYkEBjh9-O&4yAMO("Y5\!*(8.o@I:o v@0~ވ%s}fDs4ULh$0'
+
++IqVxkAƧ|l-@LXjHT|U/NH
+;G\qbF40]I-'(sMVn
+:xA&DԢP;():*Ѳ&5OpJsUl\z_5XU$<ģyfVӎ˭sq`c|>2q98*4N|'uZ
+'ObaB&8Fo8}	JtZ'e|%dHW]c9~$GxgyH1B
+[qSH|
+D{a?Z
+[!iY1Kub]z])[AMalC>
+R;n`R-6ex'Й*aɘl(OiDȫ}ooM[^yeKaЇC7.zB)Qг#[8C}S柇e̱sPM.S+sXlL;F6gTp|O@^{b+f@vR~ș"9۷Ԣ?b7ZA	X;"k *t8.xlnOO>Yh	O * `ɑe</FKa\k69(3һLriѢ)r9m.
+C{5W\odn8_c}sx7mȷvFGiN%YHxc #c  ߏy<O"U-<Ql^~;WP]M
+{FPӒ? DE往i
+3ڲObrX1Q~B~ѼSĂ9?WϪxT6 sJ㤜hVeZL>ClCj{YY]`(ŠĒ&`xccƂ2((*()`1AA@"Rﻞ?/ȍ^ϙ=}YkﵞU/crN2#58VTzxc[,hiβXfwy'۲z'ρwtc ^Quw	=k:4wF`JW y^Ȣ6.hs6S@ۢmƉPOTWv#AQZͱLK w+"
+j;nC btWQɡ7r{d-D72/ZipOGx"p%q+RY9S=D;I~M``)_l0Va]m3rds Fu7;Z xYD*w&l +C˧3LjħA(<OU)8J|b`[!gZъӆqb;GuQz+*fwj]Pʌ{Cu\>ꎓ;ssŊ׎MсM}Wq=2tqU]A&Y.o{T~'qZliC_Ƹoh
+bGXƃ&NcހڕPݟU0)s7jbͣgz?Jՙ_:
+s8?wurGX9ýfQ7YMd㼇rƯ7c0]3t]XPőœ|JTr)K"qͩF@!ɑ\:q>sst P>IQm:4k^0b./&gXU3Zm+UV:
+$@9gr5Y~rf3$0=wW'q>qfp,F#OrT݃i K$TfB;(߶3[QmSk]h.5Dcl+b^!մ.3%8+ހHRΌ~\4FkekR˧&Cc$_Y5vUp5 G+L|)+Sp/{a.WE!.P)v.s{kesxS*V%#RhGw2D$8\G[
+e
+	
+M(Kx?⺙ᴚRFR_iQJǮd9x~NA;p{T~+Zf2Sq8AܾtB^ zvG g9hs(!ZrhTnqnhE3Z#Ez_KߍO:=wzuP Pz>H[;Z#'}uOԲ_7P(R\a0mt^DbX/
+kق^LxrǐմݡRkmUiNo.
+f#emX٨uٜͯfλ]ϿZCb~HN>}P9‶3sgHU4 Α:ꢴQ'lLlpUq5Ⱦ+M5q38 7tdϋׂ+DGPӡ;X#CwtsG	rB ,op{_<:YŷP?Ruja؊{-#6?f߁ Fs2ԮW<.lk/\]bh?2#Xnj8̃G Of&\UȤpdƛ+SӡE]L7ƛ@&ig$+pǮi'/ X5ZyE#Wn*+laqh:apW&0CvQ}|%_aAbR$fV6gC1DW@ sA_b*z$J܌V rmYoxkZ`_	 sDW]vќvEC
+d"}s&53JB`cqJH]`$RqVv9&?Z^eJs	UM) [G{:Wb]	kluT&ќdƠ&TგsG|u
+*`EĜ	Ǉ>8ZzuhU"j&=+ǹKFīGs<
+̤N͵ѩ0zۼ	6ewͭ&Tne0c"Z߁{FuWP0	Jwʍ^0S\*+vƧ.TH,PK
+_TL}e[\i9s3D,bp2KeFgp7ֺTu,~>U\BqtQyG:'qoVizce VwP)@;fpZ*$QȄH;wU~|X\c(>rz>s֋Bs.
+{+|۱} >2V%2NbqW`%P=_>`=0sFaƌ=qvS;85H:bT6촎
+xT3AS<sxcr]T|1wȫN*nXA)U_WZR<PţM9W0A#*_	μ;i&oA!T}|%_D`Z)r.d{aN]DgrF=
+6*ڶ/*硕|f Тg8BZTMUQ@̛(guϕPVxV}[<к%nQB98hsWGȚC;ѷ+{gQazf`J/8Z&>l Z&>
+4{ֺ0
+VA)+j)
+z{,W@tdֺXUˍO@OD,PV8Y}@<x<- ˨rVoT>"-<`@&2G1(vAy.˨p`q̏1LN;kcը|3کc_${3\in)FYsڋY	w<#`-YDd>R8kxAyZ~Vic&beqy?YQj9;iq(y=*P/ML:6(Ȟ:?fF3To9Q
+BHqʸ
+spxQrl
+fIGSq{p㋘g<mA =j~_=~}DefTAncu>s~8LF^Cg0f^?"o\=Pq!F\MZ}>R]{kv6ӏj]l@:*{Qˑ)V+/Ń+{m0[HV
+\ƒw/˼z=`G)l	@93{JgQn:-FT=Ж^\$88KPGb抠[A5p?P`MQ#YLjE6SJ(>v3sq	iu(Z鵇/R>QlG*0A1h':\e>EN8
+/hA\ *>]Q~L!G׭,(Uߗ9[Ze]<'RA5Uy 0]0\nQq2ɧsALP[PqJRFVQč79K>BzrxmU,=.qߩfNV|n-'xQħ-D96
+-_x1~l1])}>u׉7)-/UDEo7kRf:@LTWCj(ZAXGT0sxׇy0/@>5G?&(JAp*߆ݠܘpBo.Cp39_뫦R77=$7UuNv&
+w>FZy:~U{
+wRԷj`w"V畎7۵2U(e`.Qg&^mZ1\LDm0ե\BsX6Ythf}4ǅ+mR򾰲ףOUZx+1*
+ 
+آמ7Xj'ꪫF읈w},uNTvU?v4U12fƤ|p~k&
+`k6]0]<#;/,W]˯ʼwU8>u3_jm2[\Xer&#lі;\Z4d߂&z~]܈G+2! iר"'-"5aW~^Y#U*'7*Oo7i(a㇢yF5NT|` ANS˸2SnRs(Jl@v>j	y: VnPGcKAuHE]t#zgBNs=LNU]Եm O䑺Z-ņi1KjsG(ބW(e4J,̰k2wa0P,#ŌTw+RyYNf2
+y`J&<\}{5^\0``[YYE'
+b3z3YX5Nw۠<S3Rpdׯ&6O,GL&_g8quayG` ـ,HS eъ
+C#s䥜-D~МEv34F-bKy0ͳ98bٌ	LlUWf3f]"12dd^ĩ!$+mS@ߝ(ؕsRr
+?}@P0=} U+3\y)\w0C'6ڭhd^y{Z
+᧥^Yg5H/^o0dowt#<tOH+yrPKE)u.}'.3ˈ7w:&VW)	w׏x;e^`Wfbm>Pv%rC 6;lӖ*Lz{z|b2q4s_16#E8GT2<>b?T\%>>T`FE5ѫY?U\{T~'h<Wn۠"JOY bCz58+.⧽9j?ad~oCkAJh9͎epvx\tHm_N֊
+y7x.msvB!/g1zz5wpWcdtѺ[q-$GܥacngZ8|IT(ߵһU	\͜kz_gZqQf(Xwh2uxC?F㱎s]3pLZ<duJ̈́S?1r5/r1Gql?(7d'"TNszx2d;7=r#AaXY!}:?3
+QI֯-$-iw1T`9#}bȾy!Qx:lFvէ*hqj8͚@U>aT8:VaYdf':U/]fZq&k,,wgp/b3/9gsbJ5͹Juko?tmv^OJ.`ߠ#7zrɱE4rwøԸǘfcP|79-G&m!ӫ3Zs۹6eKX+1pPvސ3s'f*_̳;9`c\,gvbŗg#&ae1N6?Û(99+MY kwD sVNjGLV3W(Whp1x
+=e	=#ZU-ֺxHT1{)OT.2~22Z*襳+Xܹh,(*ccT}'o{:~&7@y[\{e;LC0{wC6>;[keָ Yê+/ɼeA^g^3,vyfڱ=f!8c%غA's^8O\18;5ޫxbk?c3pJ_`KMFoQ(Gű8x朌!%5p,±z' [?
+Wkܬh &;Y 	Fm 庻;ո{Wa4dd0L"`nFO۩g7y;#OU5SEG*OКe~$8e.- 0당mΚ$S<;\-bOͣ[^YI>3o=J*U+W~^{UFS&;=zhaGx:^ytјRs>TʙE2|ѫ*/loQvuy4c)XUYzeL
+T]Zw^k\~%u&F+uۗdqsOh]n JuHY]NYe.OWU^Tf NcY}*pHٝxè8
+NjUp.@E؊ >hFdV1pL{NS9AG/<IP[L}btTY&:xٝŽ<WIIT'q)(fgnܕbDwZ8w%u*PP(OzS .A^3췢/:ڥ4~3xpS՜PlYq_y[_*t?ڊ2ᠩD,|<:!#;.a9grQ`DTpsN/8	$Gű+Wsh?= 6auk<TY1H:C?V.}=AyUjTHjpܟs*pqnsh	?zZ &:[u	A'OsS<'ct饎w6	&֩uMA\ZؽU!lrNF,#l@Wΰm_BeM4
+dN}L	K1LDxc"mQ6NmX6;јސe}V|8+,0r.lIlsVRm{5jС2eJ^֭{Yg$;QHUGȥ
+:c,`ʮVkKmv]&j!}dzz{,u˷T'cn+Z9\%/L67@[Sۭ:p3]eTQfjrחdYN+v	-r
+-Z%pa+WzPP͑՜|dڶT#i)^:ԼsgL\QCv0e_/
+\q^Qݍ#5͏P(Qyqҡ>4u#H|^T ]mh8ȢGS]CGG|=|[@8?f~3AgvPMRU莳7~d0:p	MEh/c/zЌ^SkӴ mF&YCj<|}/957'Upaȃn?v5e%m92)Fnj#Π}v㾤b9,ϐ^ [}}D>g7AF??1bDZ)N];9A٨tPZx3|z|{[p~r*>)A3$T)'k=_Eh7WZ("OGZ$G3d	W-0GWS ~Z}*C0` oTl9G5+Sż'&?Ky1U.svݧus1]Œ@IM(g"fbvH:nol?a6|0*
+ml<
+/(;B!qP$.K|w?${&<p7NWo's,.1B1NG1)̜(j	 &az.ϼ?%H6t)([3sa*=b!DK{U\u;:es]&_qܔDX]vLṠfyV!YmB܂mDfVrdy/L@n,l(սD9qohn`E_B?G;r^YQ(5A:~Z@sQ8(<U\aqm	-VT{2'J9dW^AK \-T8>PiASȚr:b*dl[vɱwG{4$吪J/W0PHo9's_dE6S^ѣmQT{i eڛ^[ JPv5Nvr'qG@'R鋁wlU=*21nw?szjlQ v;D:JxgP##8lU5?N:aDOVQ*q<PB1@|?*V9oI4@eW/[wb1J/^%?10p>fJȼc4xF+x׊uи,1O^ko"[Q67C;@UidRaWLOpU26cJvMft26;&ř*1f[|![h1~h͚5sdӦM|n],?3pdτd~ۑ nlUDJ6/*z|Ҏ-8	uR0{]fCI}8˷e A[Yq2)ԯZ·8sqO]W.u z)*M̠]/~.J5?.&2M1#*N(R {W6KpU18£c&3`hr4֦]XGV{oVªg\6V0O@;Cc<nXi ,x+Le:wV/8p
+r@wy3\Q%8*fk'>^S+3HPtnȅر [5l#(m^[Vtł~ v-)G9ibo)[
+ZH}.^UvG锁Ǔ8]f66-b.nD-3N8<R1d<:ndkf)"vѿ=C"qbnDB^:"3މ:?eh
+k⽊3Glii,`*rccTe9K/dFK?%T\3uT]ngDibD(1XjD}GPf4Nsz"?LO	3z+ f0丂MZ}*̞(s\X5#f?s;,'QEc@tW"s2GnѪ/J%~Z6ge0è[Al_6JRILT:
+v胔]eζ3&,UG:j_,oyw|3dFG[)zoV/t;j%FjOs^B3V]zɗze L\ycL
+5ˤ0n$0Ь\EZj^RNo6J	,~^~n#q滣`\zbt'E'B7^s)T4_DQ"@@){e}?W|Emvfw0q~a<*v7*/HѢhB4?s
+^3EH
+C#U;K' ԝr^hOp~
+uUwXÙUv3GV bXvA:k&RN9$hbu[pqOЇ.#.nrG5%t*2lqL]T%W85FTl;R}FRhKytYj2W@>H,gf	.״|1S:71kscVQyG{*@ p9#@3s[Up\K*QV2s֯: smvY־(%a_M @G+`Ψ\'WPˍ]+D$%'( !"x -gV SbP)0=Q ԴB/{i 7I}̛(Yv{uezV)4)j3'b`3\
+:ki!U9_^@h2ݱV4=J`_{]vو#Lһwuy#INSôBqW!s88'u4pIs2\,:஺yL`B)rfiJ)Oj_Ѿ*đ6Ζ;S)hj?fZ~O\mG5EYؑlX	PnVe(mUlPb4ZU˶2B@:U [@9M?rrdQW>KnC|J{@=t+Pbhl&~\UQpxZ|Dk7q3'9pmg<
+]lVFBGHԔRqq`U$6V>B=gZ6[$qek^
+zK9ƭ5|̳u1l⦖r׍CWq(m(5LE!7;qb{3e-PG)/V"ZwޓἿ p +i,t~0GM᱅qbs՚ԫ-&nZXn_0`@:do2ޗLyGrql>SAou"`\{Yșf6FuNf(x{dqnQ@ j*4&@<G@0P4+{frӍZY7FZ<Q(~B5:V\HZ+kL=~M
+Vv?!:G3!do	vf-ʍ]@W:%O.=ɱtv+Yq<J(>T`x^`KZl5iמ<_-=%+7bU{h6=$bE`WA2Q_q* yj4LwhWn4_UJ.Lo1/L6|)dWnC2\K*S1	WPjS#OLOGH"cxWOް/i̈ԭ2CT펻ʿJ=^i
+JAU.+謴poԢ਺tL3C34j$f:U~Pgg|KBg<Xn^y*+"-$|(,	Fĸ`Uq;#ᦺT.>M9K9Ӊ^.Oܭ	VDʸծVv]Zi#ǍWA\<Y/2ڞrKZh]T=Fkg2ѿDf|nќ<?.ׯ'Ǳ~U__|)-Æ#6y$+Bޔ5oth?tePԷF=dtz@ިÝ
+*wu%3W1*ŀdWАqxSks0Q#\	/;$ǹ-?euE8C`
+0"Wkim6T3<v/4sv]Wz^p]J~H7Kb_c.0+x@X}덀vr4rH|܆\!&74"1bWJv*Ug_rzapEo0&Q8L^u1wEM|1сEr&[920,
+q
+Ž\y̼K3SJ@y"gBC/LmɌ<;3ٻK8ֹ'(g"rJ/'ܦm_a'UCd.%dC=Zc7ֵYn<X+	VTxqDBÈb_QW qd=K}=XX>UyډKǊiU$h	JՁK Ot)0'?OYn1~.C@
+}VO8P4y}QC1S}jFI2>wm޻c?vve0ZL55(GY2\Gzl|'N4k+uf֔)6Mm7)Ʋ+4ϖZpoMZFX;]篥E#r ۿznߍdٶhfA?S?\	yƥ#rPsIqrN;+cFX&+\\glAY
+<}>:*02A'mPq#(&ы{W}1WGPہlm|١򁲫UH)Nc,Ɖvi9Wc~1=-Zj~ɜmeBE&eKfGlFwEάbVZl7'o0}M&8_w]H/w.
+Aŷڈ6֬;w @-p)ʽaѓQ0t1//\r~Lz
+J33ovv`;PΜE385_W4$?HgzÃFw/<F:یߙ
+4^f;;E2y'+x+)# azvf|åW\kcիp߀W69G$b?E-!l8Sni*3끲uYEjTXE[*P(eٯ̎SxZ}yځOQ܂v\3T#x9⎀'j8,:;#^
+pA"3+rL%t7.s Z`qysG"ŧmUT"id:30w:h?p{;{
+`LL3bL:[c/5҅ޣCjǅË'ڎP˹T7aOXXokck*FfUU9<5+Ag-=}U(GKWEOZp2}4"'i1+a᯽La;,?D87qep{Ğ%Xb8܅} *0i#EJ~QăU<"LX#
+Xڪb3\`݁A-[Iq5-6G&#
+Ė`R,s?3AU\lCKEc.2"xf"rr̋1*I qP41:.t\0K!䖪ߡӧlٲ6mZF9昭[dzjt<Nb.~
+" E^
+ʘlυXqFT^ĿޖeԹ]!s|eX^nлr"JEdfua"+
+d>67]'wƝ"޶M#7"".L'=D.*xumA~sj3Ep$:zvEO*旓d{/D11QeR(s_x`A5:pp_+jq\WG=U1GQ7T1jEȼ|MV4d΂!ıߺj&|*>[_{\BoAHZhSTWL^\sч׺|vv7;ܛN6w
+}Yc3+e2ẞbP-ȶvIG`W\=tw z.w0WT練2.<mՇ]!ZE^Pbe^ˣ`U~9g"Etqdv3;"
+ cW2NS*=[7al###,Qu;|tza]@<x+k   ŜV/p9Ց0\":"dx_v*RyL--A5Pm<dՠb>zâPݿc1<eݡ2s9a*5nE;)c"R&&㶣vAqS5<UL22E:ᮖݑ]hi'ZK>&nwYڬjh!3J/˼.?XѰU<1_[vkߡM6?0<쳻;B]0Ůe֎$W(.m-%*rY5Qxғc6f_E^]l9QtGN.*bEJ`a˔V3MjokJ"9ｌqt` av=vWN26y#I1i+A)i}W-#37!먞9k\iB!H3m~'_5/wYݿz+E~LǼ]2řOE
+\gQyG1&.'2ЏfH!(=1ǥ{V&RlSTpCH:V?/>"ji}1Z{6YX_wlڮ RoZTď1QmvQ8A3cMm2<fy[ZT1Yi_	37Ch'/[7]6GvPKb✕<^L(7y&<eQ6u+Amydj_׏;耾	@_?WwDanr\
+B$óVztl*@ۀ-E\EoD3ۚ#z/;ZNtuq4I^3=7sGV2ΐJ/a8] tgd'#C>͝!MuĤSD>p'?#u .p18j;Ѷ6ٞ޻Oƍ0 
+ɠŠf\Ӄ{1UD">ADr!(Ua_	v+ٸq0|#~x۶mww>=bסTZȨv.7ŷ*3t7^oTF	:Qw{.5s7F):'ȐSr|FS+*T?BrS~CT@˙*6kQTQYp]Gq]`&60inE1g=2:.ZPbrZγ=«8oary)J-vR_%^d|08.]+Fqhg~T R	,?g(>0 ~sh@w |{:] 3@[sQvo,V֫܅64TEw]y&:@޶6 h=t+YgDc~J3\3l\woG$r؋.Ń(vZqH#)/Ә 
+hٖłAu˘[_D&6|uNQ^v7[z6B>!'A[sOU`'=qZQϴuU=SQ~ F;n*⫂fLjY;{,+fqtV5n_9{I~7mf0;yXie"#adr枌r3*5ˋ	NES5Ȝ΃dQyøz}
+DE\*QSN2[]b}k=3LBeQx(`G`;oVp-E"J]ɒ%Kx&M*>r'p;2;e(23Vc݃\igf^ykg^yՋ{|Wj7#(ƿ{qE^}]RMU,u5(fG')5E["RdӫsqE\{UWiEZ`J2JߺHc[T|83s#J^+ɪ_?D4VB;Xj*>RyӂG*/wx":)?&ּhHP ׺ %Eo0-B⭸J磈"#XX\}-)8Vk6pqSS<t8ʐ{SpUqd*'y*R^|K%tC5SȶwI y*GSz470~l>ݩɌǺ{
+3yݭKG׺=>)EJ5rij)NPG\zX+PW"D}gPy<|U#z[sĠ8 KEzZ0G3qX*I?Q#O_Yi½*>6l6zM{]A91yW!;*eunT{g)u)_vhXgiްx$+zw$snEv=+@YXrU7}Jg1)f~?bO٦iW؜-
+gƒB~0bO0oCGav۩l=r tOZ4|e
+5?.`$<$ǭ	vn$I$Jϐ]dN$I$IUHU$I$Id_	D>}zF>I J$I$It!77v.#I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$.;v+W駟^3|i	'Pb:u\~˗/ly)UԠAfϞ=gee5jh۶m_>q999*T8zyUǌ_jժŋ6[ݵOүyq&|V6m
+c)i|Vxॗ^:tAhݵD_Ҟ]dgg_|'N<yr.]%\r!8;wnfhҢEJf:u-%|ٖq&ٯebo2dHҥ?/vsGzz,X.;+8//-?ꨣڴi[la;$7{ԩ_jwu_nRb'W6{?I_j?++kkyɹ#߭[7lvwy穧ZfSN9W_bh7ӟO>7ѣG՗-[V
+mS[z-'iW2w+k֬9C/vsG]tͼb]aZR|zh_=-ZT[ڞwy4{^vv/J-|If陸4~-@lԨiiӦ/JԘ?~NN~zZr_aÆmڴ)-o֬
+3f̸[xK$%z['.'iZeyg2#%y!d(fkҥO?lKʕ7o^o~&MqrGQ|{JrK$ݥ$M_K@Of͚䰇UVc'9;vtl۷|U*-J5jT;*6_)j4{IkqH|OިQ>Dģ>:u3KXky	/&f?={ZB/ĕqGudΜ9wq(<mڴ>a<` P`ĉ_v7h_?Iwwk&ߥC'RIK w.2o<;yF?4W^6p_&O\|$|ҥ_|2=؝KZi 5[lyɟ_eI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$bŊ_cǎO[6ܲe˞ӧ?II$I_L@GM6->2iҤ<pI{a}Ǐf9餓|9W&O֭{[I$IVx2eʀ ߰aáz]w};?iӦ]7ŋcl,_|o}[I$IY5kvavqƯ<׸yu-[G1f[qUVP%K?YgUR{gժUӟʕ+װaÑ#G~"3_iٲ%R~bիױiM7D9x*ڵkwygnn.?SfΜ[O<E˗?#L	'pW^]|fӦM/}yI$IM>s#߫ ekĈĉ|Wr!/q3O>d 9am۶]K.^u'?l.}'|z`:{u,X0iҤc9u>oʜ3|wM˹{u/֨Qk׮oakvhѢ̞={cO$I$^}ջ;qHw>
+PoǙL /h_~g/_6|%>SL٥yFy~g]~=Y<x]nvUC:t (SZ$I$Ir9TPc--,,<HyV[ )wvsrr_ъtԩ/:%vܹR4=z4o_UVKUV	;̙3K}Iڷo :ue˖w}#(>W^/oR'I$I$?\7|377{5k)`vyvb߶m[/84f͚͛7㏷nVX''O%~?Z*w_\|9WXpׯaV|q7I$I$_eŊjrpV\y}Yd8qbivw?,pg͚E/. '{SO__r%-߿?+⢋.*wa7'?_<I$I$)/_O{/o3R-X8I&z+KYgoذw8*To]^bؽ;m'n/8p ?eʔ[nw5p{z{$I$ɿ<e˖={v?Zjݻwɛ7o;ԩW<q}!/8Qs)N]0or!?>|xÆ~uڵvA;	D[n-(([eʔ[.@t]nrőW{7n*֓$I$I${(87t^}կ~OjO$I$I/,~矿W͚5:u?II$I$I$I$I$I$I$I$I$I$I$I$߹Y*+++$
+endstream
+endobj
+10 0 obj
+   267506
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000268522 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000268496 00000 n 
+0000268587 00000 n 
+0000268715 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+268768
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-2-rem.png ns-3.21/src/lte/doc/source/figures/lte-fr-hard-2-rem.png
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-2-rem.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-2-rem.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1223 @@
+PNG
+
+   IHDR  }     WC   zTXtRaw profile type exif  xU	@C-('tY}Fh}O@C*$qh 	nj^tFd=ʛNul=jF;k?5W|J>,VD  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="637"
+   exif:PixelYDimension="384"
+   tiff:ImageWidth="637"
+   tiff:ImageHeight="384"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>Py.`   sBITO    IDATxmU}7,vߧ-KEQ	l1FHM4FM1A]v;C\.\n;w_}Y?~gg3g~>97Zcbbbbbb
+:LLLLLLLrwbbbbbbܝ$w'&&&&&&;111111݉INLLLLLLrwbbbbbbbܝ$w'&&&&&>$!d'&&&J߀C~'o6 HM8QHu}JȂWgƲ`0"}" r=}8uN[Cc05tǳ|f(gljUX\(;Q$P,Pe 5 ĲY勩Xl Li3W޴qqI{\?ʳ	eKuJ{a[]u۔&8]1IB,;}ۜ-Uuœ}+Yd˸6qR\ZoTZDK]-Z ܔg($>5^OaٮKĠw_V=w MX1|=>T,?J-z{:ܕOV-s*{DRZZ#i[g:7G]fn<ڿ\/U3/w28{n"7%XMn Լf,u9@jTXejk`
+%UE_PԒq{Vr;N[Lh'VHŦ0QRS))(d(NMͥʤ)#Ҝ<-U3hbϜc.BJ|\v?	ӗ|g}\MI_p_B:Ǥ6)QFΖ<R@~oV
+{T"!(h8~QQq4@cu(	0$CpA
+0	l0~hX`Z!NWEw]y"(3H$9ׯܕgnNPҢ47X %(b~ueNהTO7ٳ?aM3;|aVt-JՌ|8b[OFo1(F_gX$Ӡ6[}YB˶1Қ:li8ԊDtﮧňh]Ϟ 
+m46hhЮŎRqvr=j(ر%SB!҆x$&*u=K9܏oMBNBrr<:Uk_0~1ҘUp+$y§ ġ2!N anq> @ G:(A( (sxu	
+ӧ@K.LoJ*~ݕ	y?\7#XTZY";!WH;SS̛uocTis{HDr!  'M Kl5Iuvܵ[,Ӱ`t[o/秦`ƽ䉘@.(m%bOVh5BJJƖygqZR\ϪzkZyT}j/Jծ4L_E]]R,η)5Ry ȳ@ܲRڣʐdɖpiDӔvByL)O4g ŖZGnå]p4+.vU= K6:b(ۦ	ӸR\g/>2UaR\RUϺ5/s;#_ڝ~Z7~{IUP[}RMtal2T	RG(ap	]Tq*@5?*omպC\؉W#kr6b(f惛MC-Ӛ1R(m|%0&r˕#;v~}dǺaz?4_7Yi~Y|3i,ۖV9/y?U&/t ͠RZ=$9WkTrP8jmtfRmrQ7TPiPk+ǟaWsa85j_5iL-F 
+ZA)4*u!wB)0E7QBg'	0lV4JJ}Y-~k)fdLz(y)f)jLo:CiGG/uL	uK{V6Ubеj-6u~dvzۼ;T .򆲺2jh%͗gt/l[jF2V9rqZbv}KR\<N_O_QʅNssgyy\-IՠivɠwiPar[{OH'2;3[d$fn5Mh<C?,X]zN,A<ư^ގ;#O VE,GCy) PBP(rc-%אp6lDtX4?Or'Lۿ0HHzj
+A@Gfh5# >]Y_]+4[kmzDFe;'
+uw(@CuX%b Iw+*c_tQռolwX;0*mp()J!D$D8(MR.l/s")iDj)w+m7r8n\7-y5뛔5RWr</O'(d!qQ#Jlt>U{%155:j"B,shyA$-~c8]0ZGeJҞկm9
+ /X]ޒ'R(s/=qs5!R/t)/Lkoyqtjy%W{ރImMyr
+߾DMvr9Rn5IabJf !lSMB,bi$VM}uI~86H'׫֢U!Kl2=奶kZ~CXqƽR:k~'~Zq-̮%WCaGAqiGbwpBh63[mޱ}=WLi4WbiA}Z2>8"˃^yd%_F
+ljW' ={Km"AD	At1Vpj0-
+3J9fokC(R닶SxKlv$4lYg٘wFp7gV6h6>(Y<MkUj6`{ZUa~1!E|gfӏ3.;^l7Ӥ% f\~2Wj:aMY/*$n\XlcPYqAMQ}PVUbܡ9_P rS}	X>J 9ѿy޵'9;O]arM?Yϳq+24vaxaQH7.e| djs_
+UZi%tnmqiðA(،1U9ƣKE.!4UƈHCxu̝fpMۻ +6!pۿruI7>WJ3ޢJiqCРEΈ`I9"yL]{`q#<TBteZ$Ԗ҆Ei&L#%zŎhm5X*kE)'n,bK(ۅj:l-va%Jyչ@Ӥ|\)gvjMJ[ܬTwIm%{sF@T!H+^w]?nQ͟ko4Jqβ2F|s<z
+=B"pZ;,Jq?SđCD`S"?j=N@rBPabӎ3`,Ԋ<M 7FO3{vsPrvAQjUM6?M'Wͻ2qmOx\|$֙R`DWYTh۴6Q/0JT`kh4lRVO$<aNg=.]BBU|>WnM\MPDiAQB&tu1;)p|JWcB>/8=%[gJ^fb	|clJƣϭ&!Ⱍ;n
+C*ʑDĩAI<#܀Ѐi6f`8!
+O, իF]ThN-Oǈ0]]T7gwg9(#10֕dfA?|g^^g辫r~Yni~ {zb)/}활AH2IMsSo)~c(̀i(U+&MkiKa*Ar&-[j,ԼY]xl}B6lJǸdLRՠ߸ηG;/6htmƦyc+桅S3 cak-G؃|ŭ5&Le7 ACkԧa5~H)},!+ Ae1h
+fOY_p{ة0}4vfq_EtAP8l:ay$ԺKD肀,4XTJ
+ *|ڶ	?!]KMڪ:714kPN\Ns[XTϠ[wm*i0ͪڎ{vJUW7tذlEo7*FNɸ~FkҞ;[2aUCkkڑjFkhx֦R ^X?׺2?+͟7_hp;sP 2ǰ~{FޥA(r p<
+L/(d	 Ja0|efYV6n4w/Z]GFܙX_e$}>@gl@GWƃSơBKhP-1vms%BkCcئOf׌}t'{~"Qmzz#pazem՞6tΌ6
+Y'3]yœ6ZzUݼ=;*O5hR>dqy\!O˽$Uivy?߷Ck3gּw;j0tT3Mc_%/B<V+KxBôl; Ӑ% Ay"C,]l%:~܀S66:@2abfvEtU"b4ќ:4#ϟPkS=Gme4@j!Θv_Q:q/2~ΖNke-:a~9'Í-6?ZH]O_/j4MP$6Ȕ& !64E	P~D[Ov:*cp#NʝU{BlscտXǛ35kkf>y]$6C-/?i\"ଯ5Ss_K# `Qa5絶!Q"˶VW#ϟ5fڻp>0GK ð|Vs/7$  Ȇ ! ܄[pRPDЂ[ǉw7`:_iJ~퉤o\}96%Li%+viԉUf Vҡިֆzx߭@rjrx ZCQG0zc~,@f3-8)Qyf,2grNK/hPhb*Msߨ3TQt+մF<un*OQEIv܏ESn-fǸ1WŖq_)7k9ujƊ jn/ٿ)rB8ZUjp8UX*!q=V1MBwעDS),%v#<Y[N⩙S!1,R`8x얛>D!ZQQZJ5$fW7[`Z5Sq?Gx!w=.x$6mK^-,-e#U&eOfX3-mr1#V6emٱhNpmĥؐmXD*RTm4Xi[6g"ͤa*6(-~~S~Ʀm)N/]GҬ<Ϸ"&!7; b?(:bRB߫$4eق㜈39?HITuz(\p11@@)^JԦQ$(2a#©  3Q$0lD}47C.B6Fe
+(Z;qng41:
+:Ѐ2zaB"KV K0p4e;kZCkE@8^l}ZU>&lUA/kW>9_DZsm-YH..:4rW$yv(TA(JPB*R-<JUʏ-<$+ɋrMk-Jr jze9%lYǾe%$Ѱ9]ʊ9?DH'Gݤxy9E%/L]{TS#%{QqeqRޅ!J5XD]6@4V0XD<=`y杆PNBiF}YÆ([SoS{e	E%rkn7!wԙ=ҡ[Ǜ4P,W]N:E[&q;Bm)&ݙk!{ ˥!mjsbb-ui2CI$	,ZX+Ԭ<B\"_0gZbazf<ݫU+ԨxB`hm?m?ɭ6/0~Ovu[V퍶&RnBƏ٬zdQ8{aQ"p^0z맦.KX6	REq	߽1K]wվs=_PUh05)eAF#n7,%Z!b8zUP߬i4(+4}m~5JIbå\p͟bu_\gFI)ܴ~Rzm=a14b5bѤiH6֋3s^Lb5'ضloS|2w*d"}BCsv!I\S]*Gk<]/NY/-?i:_ 'Fv+Rli,V.TǳefD ~!	!8yT-!g⬼ +.)siqe{uuKD^4>4 Tw,x<UBkl:"#}`=Z!K(P$C!EcD=x-V0sA{eᆡ%y;܀[GAKPJͰ`v!ɞt`(yE>8~J5x0FCs0ù8t[.ʽ+ɫq}ƶY&xmaq~PɉlE!rS)Qu
+Q-ca|/D8Hj#ru,U@t*u4\&JT&v$/<<$7}e9X?m\iۅ8Sިoz}]~0?h?Vݔe:^v'{yc}K<c_k= 	[!H7 V\@LPk,`zh,^N9	w!讞U8!lXzXyhe=; 	܌d"FuNc2)5z#[uJr=Tn8Uh4Ts=P N}YhXjm#A߼&	V<*6UT~oD(Ucel晲;Cqڎ慽K9SN\@4( Fq|'StUNKl&x#4	{=KJF&(ʯœ+Η    IDATʻUOh	E,R-TݏjBr[^p[O{/`x{G@ge=$"(KGH"/|Kg;U)1s?n]CobNf8B;_ +"c%.Es})NTdœ,F{Qq0S0Bu~(-(ENغ<HgYOv0\8ng
+d $t*EٔsEq/:j3FNJJFJEb;'yQ;qxt}qg˥ު?zW⻟>^Bn:X>[woieHU8z!<xi9uVHBǃ(r̞0pj@uD%0x9(CmQhmE
+G°PUG$9(v?"XF[2SuW5qdK(7Z76uV;URA='/[F-H{I}akPS)wu7dMHDR(u׊1ǦʏIJmd&aqJ[f&U떸x|EӶ%b\$F\Z<Ň=<[J(yE7BlOe96?_
+tפœfڿs627@<F=a]9d*n7 "/	D]%'5j;n]u~hXA,gmxã]
+}WbnLO'LWiIT"K  Z1b$HN;J^WZt\Om Ȫha&rKx	tnDfZVpNdxhyƲCx78e{K[FE%c=d$~ iyɎhmmdy(y])7Y|fBuLvxW6RߗWpBH^}^{_='PTnJqav͆9!{~MaJ>v>$#O-nC؇#	a eY$Ca{EӆR/5og >!f~oA)E ]x IILFؙjMg/#tDIRzM[@k2RM\uH^EBQpPn,+]R?$?7Kw3xvl1ʿ>ƬĺЀg_4!`t/$幁uK_J(Uf1-JF/qyq^\>}u@%t_tZ~x鞖nΏ噖qO)v)U,vSYB9D	)ka2HSE\f0l"A҆B:
+j[tj"$j3HGhlEm1d.0<ڷvEPfFELԱqi8kp+NCZWbQ
+[kFa}nf88"˟WTO:_bdh׳o
+WBηk\?e=T杇sL	tdʭIQecNղЎm#lroBUPt"voi^:A#x8~].NtW M/r~j 䥍Yzr4zI|1dZMOܘ(SkvE@va&cUbXC7,ފtY KPA#T0pXt#ZnT K),eyv$JRhLrwRgN«&.kt7U$GfOMj\ f5u@#B+N锄*t,T2{-99B=l޽fTĶْIӾ,kU7994]bBLHFIiЮoܣ]M;Op-FӺ%ɞ#T;(⒩UZΫ-㎢8`Ksk}s])U;GI}s4Ο=9%#߻? qp?$Lyӆ7eᣍaX|j3 0Xέ#h"
+9-~uc6Xgï#C
+phpa%aF|gY67CDӳ*9_z׆3
+Pw>KI$\h?yM"v%W)m7o˶Ǐ{ALZ*? 8.L,*d)$rTIrP{yNy6Vi`Z[-y"Qj75NCϵu,zUT
+5+Tݤ'<-d<ߐOr'o'D[f\}|;ucABnb|'kO/ DqJkuqo Cc}>%"-PDc8UP0֗_7a S,s
+܂ۂ, :@+.Ddyfb$~jtL̝QɇZsj0l8&F?h7Po18?8|Bέ;rZ!HU7Ѵ</~')ί:e$-".$wz=!˖])Pfb@,\yJSPFƺÏ4j-?lIif}Ӣ}KIҮfK־1Ws+($}h<wvkWj(}VB8Z;Irf%)M0e)VO\hVFnT[86s
+Dјbl3b(DB+d!Z2ip|40#68mjp|k`M_yY'P]1P1@v@zzXHBCrVViՑ\=OYʣ]aDc%<HHAwM.'(͎gthTZb;|~x\$P<~/#<ro83)w6N_h?)/}d?^}9dzjNT/bvWؒPsa;COuIzevxn"SX6 ǆbk;e{.rCP֙(	PKÐJ"9C4De
+p!! /WOFB.R@Q:V	+7֢.f\nO)zsMS42rDbcQ9ސ]Xs
+"ޣBuZm{t4=gdJN#E(5tIԜBbӰ< AT$/,%ɏtӗ㥮}QyUGq'!щկ/ԮjTj}2wkdi;SvD)I_kChx ;\kȡȐħ2vx S[y4NAڅ,A(2C!>Z#@LJm(R$q@2*~كns8@),lpl]!Vn?x0BVڗ[PV-#yPBnw|.RH@X8?ɵKin5RZBAc\εDaoSxPڮX?+Uqz^qA)4R@R^虷:)	á?N^i?ڟo׮_=_S5ksc~kfo(O]o?VؒW{5p};Q,Qo@	vaV8Kģj1*1َ,B{,J !:&ӂVs̑va`2!(_Gnё=7bk?:¦PБZ`_{-R5)t IDhPw0ߡS	QrVD(#*S]Qz͵,q%6[ȵ(KjLhSh^R9H&kMRԥQ`#t#[:s[O_s5cэHlY4qRԼƃUǞus!5 jsPgb[LҾTSE׵ؿ`lΏ0^9MYuo?5_y
+B$(q:BY2),aU r (PIÂSx}fan!Z@Y!%&SjOB4Ӓ_eyc+dN)JU%U͚)m/Gn3
+XɱZ)0̱QT\oPbiN;5)$zI,}@@iSSps*F
+@PǏ(R`=.4{w'$bW`f8MJ|PwW֮i 1ZSC0\ZȾgmuB (C4B ky<vEQЄ 6	YuNRk>?@6@kp6̞3 0\Auc"E}mV`  ϶Z{>3[@;k?u{=Ӽjosյ玭dGwl5YZ:ZI(pBtO)Dh5@R٬bӠc?^~M^r+;VwT2:$iǾdիMdQ@۶{T
+ !HQ$߹y{nmns{ &u npzV	B!X(Y"+Zҳ:~Tԉ}:KZB$$&8`ƌ#1f@8~316# BH}*חsυY+fUWժ	Z$#V!+(10pZaAWUUr<AE6]w_gӂ@u (S8Moi\}Sw@èQ:\_
+8.+-ۖgILC)
+qIAvs]%''Telk:ٖ۬a:\A׺:`_V%Nk5e3/Vae?_"P"oOdTҞ}hp=L_p8o<.if	;Ï)O:g˚w$ݦ';/`;R7,+]ʠ՞Uod@æ*sH7@x2 /egn KB?50݂aBkViG:D0|QCkhJWF2kt/Y(̲xߤj۵v-as{`j5S<s{6?%UkXMke	% fh֢I/ԘyXUSAZR'c|}J'c<2G1_?]k2Q}v5ڙH80Z,7 quKjXl,尵R.t1HyJ:Zn\!E6J
+JgK97Mi'}r+AۍٯGF/9 tnvFadR4!,3= 0ZCl}"C:`)r:Q%P%(gcʠ$k64 BP *
+}DlqVQLMx./l{D*s+]/͏Ư!$/gQR	9o<OHwVUi}_Z߾S^5lB{ɸ>6vMФҲRBlZoѰ6.p:Vu Z^)BKqu伟͢zVR0ṟzVUݚ8$nN)Jq(Ja{|B!j}2	@kC-Pd7BᅐA u) {CH]Zp@)UDd(x+d/Pd"80Oodnz
+9>[Hn3,
+N*BďD((e&>#ĀI@zFDfzd>8̐z'O_'gz\JթU˓3o,U뀕+[-129<M,vPdZ;6?MIU\5ZlyohmgL~ʵ[yOVrAUomX'z][0xGY.*՚0bv( 85
+R@JMp
+5ع=L jJ=*=	 >(ӂ8V  { y1}^QTc4}e-@'뺭W3ڟ!pߢU,8`q%12z+	H	,tRYּP`'"'J-7\3|1PʾMd_}Qt_2SxQԚZtlzZ]ߵ>*m	l#lW+ypR<?$u$axރZ
+bxi&<~Fpj<}zWi4TT=n²cdBi~Yc6 6˨s<GL`; $}dZ;0}$,rdc=@#Ùe w!8@!2,K #02mJk^MFORu8צx=JfB49FpOlX1@HA6)Fqе.Zg Y #Z@&QX-c@t g=T3%+O02~ZjW'=_LWuwdtt(e<B ;pm'ž(@>ǲ.нǕ6PS0
+4(u@(0D.sv 
+dӁa1epf`޸@a @<!h,CI6D	h!Zh{6a\˧AO=WXZ!~5*L$&_,@n5|MH2JTjjb=H+%n94UkZkEA\*4U 5阧Kٓ0l?Wi6x<n60:uIL X8ou]]};W]?-$gU}˕8e<,U2(ۥZhFo{"wGs/z·'ɯEÜô{5·P
+	!͡aG(eFRu	;@ͣ.60ڄe1Ï`8`&l`ؽ5GT]7QU*W`Yv3gey}2_J5FNĶh?/OPd!mNW, m &!\}`4H}$M]wɉ~h\d^$A,+zQJS	*mJ\.d+HHbǒ9`{ hg?.Ց8fuaʋITURe=JD#y ny~*"~$=dk`&tϛgȯk0n#PG!r=,:oDYrmc@Vvd@tw&̑hwH\9T
+ed?aw߽vR8Ɨn6Aˑ=J4 	!BkZux2G.?L6|WjK6Lviƫn_#f-WM~6/et b~6ϒm7ͦJE'ڎ;Ӯ()Z(bcbޛ<)NtLڀF
+J"[n<.$R    IDATxhOwZHh-!Nr@A԰c0Q0ֈ2D_DU@k<dn}9&CXԢ`]4 KMԤ
+$
+t2c5LpFi J%8K=c=#M!vաsJKDΔSjZk9Qsy|\hQ͑0J]cP>Cne,T/>%#r>0)O)4{9a-hJ\{1}U%_J5TmB엥j6_&o:?*;_qwk0 xXsYU%A(;oV
+^wa&	&P
+N2	.h`7ŔCAkX. X.&ۨr bo]GRa莨C.eKv&O7
+9B?~-%EBgt90gne& 6Jj$%Q)G	Ȫ%e%24mpbP8)PJ;GgњO{"B[<ftZ4cx ɟv:c1/t*_? J7E+߰a EPP^>[p`Z' bWn  wDP
+ވbcs-؇񓰻&	U%D>Bևׁ݀(Vp͝p)L~p[hU}9'50'lKsMTJ~qd" &h"9N<-=3H|:QXl`l%[tsZhRݸ3Ry%4c(eB2}o佽;8ƔZއeqeU`63pۓ'7r`: Ag YYbQ{b6&;5,^*CFj @k(U(fȒpPm2\| I|-!`sWMh
+;H}(A܂ac)`:pC9(Z4hzWTNZhen,wd3NL4еE0ջ.iE_7Ժ/ C9HGBRX5j̣d¡zXI썲3o>&4H4UN&0
+#zWG()߻v=[?(F&}ϔj$՝Y}Édÿnj޻jquN/${Uws |/]+waQWwd1`pyjݳh5 hD0L/!C	zׁ{Z3pJO2&?Ȳ
+ԽＪtZ"$wͯgὣcXW7gvkfN UՖZ>*.YXɲB3+R2]ZxFrȜ}cќ¥&@zqMR-(yn'FxCRB.gg5o,4EuW#RTH5W7fs|E.6SJ&~poodw<Y QWn 4g:^	PpCQ`r֨R3#Dн>3| s.A+x]T3%vuD8dB=vxBP&ȧ("4Z_
++
+93=qk3/坋͗yj5׻gό>7UV*m4WT.L&XJ=H4H4.6ӻ܂`Njgd`޷;{ǴɬxqyruwWkfOP:t[:U[󟽸h4T~Ŷ>8ݷryƝv56)98	j-(>mCpUBYHM4c1(	n Atbn.X:X<Fsu$Cx]X>.h]nB:ݓ'Gc6NAIxsp[|:"\9-oyE{ｋ:'XMt`T* X-<Oujk81ez
+(\ެeAy6gvE*mj4zьp؀ l#jا6\6C6MJ9IV|oZlWD״|0{8%D'5~opoP;c~4ST¸f`se`9,&8AVrs(`^!@	@[a7 @9,T3p̄aؠ~6@5yQ].䕝QJ(s:*EjrFLRmJ!-%Tҥi}vp:]iZ|CA(7å1&0)Tz2o+8h}s
+mB|J#nM|'rlc+&ȤVI]t8~D#]Va۟IW*flg7q^V:QKuu9yа`G=7"ۺa 2F 
+pN2A-9JQ0}T)((Q-o!K8w@]tðB0.DxLEjL/`
+	H"c(k.>V<Av\Q!V]6&wXdC9۪u}lˀ[F@R74h	'422XC>ڱAwM7:|3':ntշiM.t^D3-qJFyvs]ƍCJFY9iJLK]We2u-$%{A `yXWl^J`(]JB֨STlU&T	4`P9{~e{AE*߀n#C2=-%{n5~WBZH+Vdɰ%͚2p.=bjz4)ՎKBMQROsLLx#{b)bsbmY"M-r @;W֊}z@F~yb~92$cU⥮K3`lV?djtׅ+~@·&7?NEIKq8p<;$&7RY>1 3{ν>t %ac;.$	xMc0\)>˨3.NA)[(F0cnctr %6(Rp~
+4OKF#m:z}Z\.?ws+aQ:7U-TDW}yMnqAp0K3OO09vfAd5G!.[xau֖C6׭%HH21nj}h^n-r~`vܳ?rqd;UJ)+6YB4!zltXF{뛗2t`PHQp8MͯuJP"0
+`80<pCHס#a> A81MhfC	(B 
+ElDA@
+xL6(iRta6s;/_mhc2yRY~j!Ɠd\Ւ}
+l15ִ>4)aDMBǸ佋@;R"]-4Pq_{[=?eGipϼ~Ogٝi3y`#y:_ַϋ,,ttt>n"hC
+x-c8>Vh` ؓ	IF
+f A
+`.#"KP$n ZFnATH{`9
+^>,R Ӆ߄ahȆ`v0:-"#Oybd	ګnP?ūzgحt31V}ҎZd 75tHmR2UF=2I@@jĲlőX[ΰVK<t?.@!u([StEk !39QcNehV>r"7hB&ϚW<r[,E0+_Y?kok,ݺ^zG{cgIڼ|6^y"$3Ӷq4/w2g8Z;<A]*9r k(;@ޑQhFs?Z(r,dCTD؃#=6dd 	3#}tFC{+NPM.,#j<X0 e~_{·4cY̸z/tWȞж7p?ɹJkerLF>;$זLx%}F`ԥMZm 7Zi:4(vԋG_~Ǥ1Rԓem=i} bgJq6N!7,t_aO0CY.q1P׵7ؾeqE7@#0a d'J0g1XL!k0C Y=50|j]^*3
+Ucᭀ; V#!^Bcr"7t  ,a;8->_Q.(+s(ʻ__ZUl~?m
+&Tik'QvCa٭%TdAYYlFԴdR^Nr!SZۖ,y+ {62"IlvjA˿W
+_i<Wd0(ϮSTew&(xNᴑA BE+ vfw(KMH*3Q5.ceD:qH&#$#$CDPHfbX>B2Es^p~+ln"AVY|I|_G-BzP#>Rr\W#7Ii\◺tkīQijvl/7X]0]Ү=UZe4D_'ҪihX⤰.A05'Gխ2&*>hoba;Y]82psn.5e?xvWOݴnxoZ#tbpb}lrOwEx|O7WdBQdaؚ6)F !6..9ǽPpZ
+@( 5aFd#38E9 @!"ha:X_w[i-~
+(dKl!WO锳BϫFŋ֧6WLUf{-#SYHTܾPo֘d>ӛrԅAB
+K`vzSCJ3C]blӇ;8SxR!ޟ>Iu{:kI9R7Gwyi\ I}CTMns	qdl;z$~Ps֗ܾ{֬~R8wwyǳZ݇dD:L 
+$4+IicӃ(pv;a?ho_l| nA`Dr	qdk('ppWQOo"D(d:˰[=Qjb1p=utC7;]i|hQ4kk+[Fɛ·+y(~@ruX/,ny fr]ZY4 
+w-(rnWrLRtVQ>wZ|?!|AAG94orn9t|:gEm]{۩nDqQщD42A2,Ý<JrA(m {	Y#A=fhhBg(3z!Y2!!!:_#C=Q̷gv{S9uNnDmJ&VwIc΄dUu֠2V9[丂hκ|4$ReBh9G*tXTi MVT BH`~`g}YiK'aMfban0[lKkf~&W]]8ۘ씆pPnkjS:.g9~AHYԄTR.pv4nX$MҚPuG@O^(6C<FDj!(caPQ  eXѻG8dV hHxP3Qg Ul1;	YNf} L뮏˛oHྗИd+˓/5~xs>f-* 4'Z=XfBDm8PΓ;v^0k!LnUv'@OHN@lLbL-c3Df0G/*5GIYlC24Ok9$U/4^9D@eۼʢ8匭7;&8/Mw[ꊧ92A1l 79A5l0uCg[ava}`&Db
+ZB	MT܆@	06k 50<(S!v/ lR9(dx[
+f޵?_,i}o/ԾcLjB(mRRq:ԇƹauD&I!	IcP8IIL8ɍ(3Gkq(~6OU$uOe鍶s$W[?)G܀z܂b<.ftA1DYF;(c$cxL EG6eǰpUj#	qE@)_2pe2at1l\ѷTw-O鈾>']6: *buuuJQ8KYa2Pg[WMbO:UfR"Tk	zdY}y"TG6=+)6\JS=H@gJeVMGUzqZi0J3ٮe`12
+ :-^rEiBPg_Ͳ*۶ﲌZ\Q6H46Mի?,(9(	l !W),Pp ^r$Ȯl`BcpV"9>}/֠ېMhbYn=3Bf
+B:E2KdE]ô[0GlZ.xd}VTTڨԢv))m lrv(ߨ0ꇕ.VzsZF,9ҏdzb,7*J!3%
+PX&"8}'KQyw7_SG20\}+RE黅\ӟ寪.Ϳ&MWz?8MHI$4=|裍փM,rtcZׂ*BaM{0YM}96>xNeBlwy50ܭ 탿?tF jB>j@H7!rpKO&p[՞E%5:UçcLU1@PdF_d$&#6c9GI+2 jJ͛WL:&N';k߈GI߷yRQ^($/oϖ<Y׋jqO:6kVAQ.`htF܀0ZeCVgPL$    IDATdY(g|ET%^V7aX]38!Ξ]ýp5DQbtZQ  3
+e;@#X@]5``&i:"Uw[<
+=Ug;6(!9(+w>#AECacb= ݦ)֮ʣ9U3D.+QDt]'!J"!pC&~)1%Hh }9m9,(u&9s,I;d,LcKyDj?o3i̪[Zד_mߍ=V3VQ>϶1L}2YEqc`lT*<B]B
+6ڊeנ$6lP<9,ZAp:({u*aPv˰"Pb3%J@KxhZm h#Z˔2y\	WխB(9
+_.9X&-$xʍtа)2-du|oܲH^H9֯e?!G&nǶd[SsALIIt=s[[^ϼ8MIqSjO'ZauԦͿ9_1$T8Cmճ/߼S#zퟐVgV>(J5 EtJ>@`lA	X.y
+xPPL!k߄M?Uƈ?:,2$op1;Y!
+*d	gC|U}JbzVh/#Qe.,{iUh;rwQoG)x$o.[~5nuPF .U̢z~ݫT@Ng9Ag8"TcTj\c|})oJN'iYzL焍'$!^aWz6s +P
+`u	f@(bp#Ļ!mW Nn 1쩿
+pNZ"Z3.C\	gBV(pBChE2 0݁#`ڠ&O13K_ڠbG&qEX_n|b}S5ICILH#3v,/X_Bf#Y	|ۧoԄ7ԏ7qĈh.	$
+j܈ž9I@ܘe6IšL=KJdtǚ&߶>p|(?Rkwݵn\5tݴeYiNM7yGq|d	nEtZ7,bz0:pG0ZCtyqzfAP0CL@t&.d3 >̂@sXGs{nG_1.{#>t",u!L_XO3ز:'{M/ׯs 	$"fQH1)rh%ZYieْQ%ҒFqd&T )H	ȡt|waWmy8Śr}UuO
+K{}iyg~i΍l#!KIOɉifr\_=d #m:Y]^*N	hWn#ua]C+-*fWJHig4D$a$3hѱNADV$W<R,G4Vo>J1ó>oj5N~,-nw/3T^DUvCˠ #ô@f@ 2
+e`N~eO,Q%Hv&!2Ն	C !P 3,U0CAUyE5\~J92tOEqH)uIqW3Y]B)5QT5J2F\y `XUKphZ)ˠEU7^+le?h~hդ|eybJɯيVM>!MɩO&!nW`(niؼ'teݸY8m\|t~߉+;g=2Au~b/A\a򲐏U4gY]Dm.!oA3mp1DsnUBQN@p$P}@ITtλA'-7i7an{ۚ}ܻ?i
+LTT
+TO|ݡܜf/_)Qc*ĥdtV*.!{Q8 	FmH`(NB.#%RR.3,uiaB?~6y휱O[BT]ձBΎѯ/
+PJ+䬧?[bRV?G;mjN('pNQh'ĜM{k|л/@1>MC|{Fó\XelS`fqx
+3@g
+R .Bc>,܉ͯiۃti/~/Z0Zנ$$3"FGmRd#6pe4z9Ҹ!^xrum/lUШz:L|ǌlAwZQX0YHrSV-2WNmrSU+U*1-ZRׁ\E↦~!MѨP[`8Wu$|z_yuSRV\I){\i}bcSVRx(+암jaEhڨ[a6h-xV8	1d:(CaplC
+	L=@J̀0j"PD^G!+HVACؽ<yP@| d>	ws;π2)rP"n )	1k0ۗz}ay?HH (JlJx$<VB1FM)V~>.^AP\i!+d孞'q^?XsRL4;g!,+LG6¨z51]L"ڀL[eBLdJLaHC:(bxSv *
+Cm(3#c	݆QG	pw(#
+gPem@!O`H;(bmĻ#de>Cᷠ0<1M_}!go:O(mmW"g3#=?_bRPi!5b[H5.%2TL33%|K%1,pfնTr:j5^"㚶ɕLh4]H^?ol|.,oDW^/;Vj>r4K 7>=S7̶__2SŢ]{Ջ% \$ )Ѭ;Z%Ɂt$.q{a+70Y4ݘd[:!Eb݁ f#8#g(Hwa7Q\C@̀P=l<`Bm	v4W__v~}Kq!QÕXweI]>^y 2=jNVs$5rMB-<\m[dn!S}GfV(7m֩ 
+r(|)ś5YJxZm>)F)+Q~V:Ϗ@5듁g~vJq5-HepQU.s|	 Ly*NR) Bk	E:IkB>T)lj`6(t(ǨEg x[QFhz A ,Z7`65D+ &14  pZg?6m.͍$Zp>Ϗ*T/HX|!~Jў]ȥaQ!k)WR**~%r9@RX]7.oS`i"nɼYFP{Eu3W{ԟ76V~7ړBL)t]Dcz{EQd/g#$1ކuA(4#'U
+!{}@3u!8GπG(1s&.?lpDB;HG%e)ª2CK9݂SG6Y&һgO_&RTߦz7'C@ɤ>@lhjޡj\U\$>ttt-c#I=Q4)TZP#V.THkktplT *!ߑK-%iΗMUG,[7BX %FƾYB|?9<~~%;(}޹jmFiͮRT
+oAw4XPp4CB͐%U!ۅ	{0D*Ցar\F
+
+EK~pٰ1꒲Ca@U]wH]azڈϕ^(RrμXN"m6UATqƬI|\_7MHГ+lߊxF*lTEWJ	)߯:8£`t{eT!zƽ:;8}C![eSdОe0{4'3;/uI,kS7ݨTҮ.si0mX>ÂD=]ӈ7a0/BwA%D:iSlP]4O`( 33 h@Q)&YBj^GtfPH6LNU螁0lQf!i>+X6%?P}b}}ɰ@ZlgT$\Q%Bjn0el;_J
+Է0Vv8s ʐg?[Y8:Ԛ9aG ȊXLn
+-1¡ݚh"=[ A6FEaH{p:̵HHztaR0
+H ;џ y$X>s0\d	!<D}	L/wmta.>H{(3 2єdda1|[n4|zŲuZi$U WG`B>ǈ*eWBVFMOUEAF[cc>S(`NjH]-6M]LXuSp"5+Uu F!}Em߳P0@R)w[]`[T1Ȱ:|JXʩ~R*k\~3{C?Ŧ	j3Nht;n~^ڳq][Uݵ62ߺ}e,{RmCp{۳Ro%FIP U*3("Scdd}(bE4c2Biw>nBVl HH7N!8oD<(^F} <FOjk)PPu1(RJyAS^})0S5hhG-3i/yTmI)jtjW=4R:5U_{gkrP}g(sՏpd_pNqd
+eĥ@:ZxZuZQ*ĻRX_T~NF+-an@IYS~4RAuyqRk{n![i| {Vz8)9!)z0"A	0$;wDlo0?P.M3g.CimK:B1jWlk
+<D[( e́;fHm@4tF2aezY)Qs?ܪciV	JOLg[AJqR>J%!uRL-ֈgs*PiJ\N[cRNs5Zcy63;ϖ9J~`ۏ,CJrEh:4;?XA¢ls(SXulL
+@`7J1SgEݚ^>x2Fwx;!4´2YA)Pe vp ;7?݂fCT L6'Uݝ=0\8IV"wkL2g}sVl$Ј*D/$RDpk0C\:U 檊z"T?R]Bh]^tZlD%}y^'!MʞR"F51*dڢFFrT׺\ѣ<l7 89	d%@	$!o96lL]2ӗRȤxIw5s7͆R3B@Y״{(_of)k )F{Kp'8e㶰zx .$&Cm1h-!4F 3QƠfJg	<tkA
+h&MXM>LE`y0XM`z Ӈ}\!LݘwPƷJ~3g$Hdil{WyyHs[ݗbM9A\B.?RWj5T+Fq,jvi&RP=6Xt8RZ٭bi 0YX+I^:Mh@\X`cmu
+sK1鏤˄Dhί[W[ZO yJr!B4GtUh_ôE6s)gftAu+:G!J4c 1!r}Ԃт,$vӨ"(2Dx
+E4oA}ϣ}D} k-b>i Ôq)[eABR5'I^=w1ޜ-ENiT]	{;}֓ 0ӵb%e!Um<QvG}/[?U{)	}?1!T@	wv"x]jt4qW:iBTH:֟nq ,_}?pۀ!p[JBP
+͙@k N:L<D)L5xvBQ4(Na5(ݚ
+D9vBs*"~Ja7oaסVOc(	_W`7 8!h.qXU煼O勸(ەH$zK26BK%LmAu
+HFLj.j\RS4[vIkY\zMq:Rq^NSUeRJ	$Ėpj=&"t*-V́nOU(H.Z1v[PHo"\Mm{'U[Bդ]YIbO+g/O˗́7Mdâ|]Y]p?Kһɳ19+]K0t,kh-L$QX@}?MYXDH6Pb|DrxK'`0xz E	́L h@6@)jailTuiQEyFϿlZf7괪82-MrSO=Ik]5
+2 7%<<BlCFrX!ޔ}Mca/U;lhPʦ\p M>b=9FPzr0n-^}*7}$7+uiCR9sMc}5Iҵ/lPș+DʐN MGU'+k5QxCr,Ùn44> ]FCs=	k
+ц1ݏ;9xAtPVԀ3#AdH
+o gvS0=H%Y-xlL̴խ5UuKDXƳ>xۂpJ(/W	jk[P$X\46B.m4 ^oW5^Ubɲ33W1v~E2Eu>Â2T%t %--4&_R    IDAT= n
+Ԙ<MEMGc/ t`
+w
+ybPBQ
+D2B+Tkƕp:3;2~T)>6DuOta@E\a;/T/w{sFܕa-,@bMx$RI9k++BAKu4ˢBGEPnND$@<SB2Y0dףJ.u	\J#I	`QR*ѢTP/tϲo>n4g|-7|ϘL/qe+q\-緹\4ZzVڟWo?>)}OUA|(^5=) B{vH${I`Z:'1sFYvie`/D̠bp}`&:!xbӇ(<E>x5@I@axq~C`p`J8sM3I6^3Dhts;VBcI!kUfcs멺Aaq5vrN/7_jc!Kj@&YGM'n6]2 `E"TmpEjJ4Xhi\>OTsӅe0|Ti]/=evb(gܛT//ʊ;-f˸G<Rq]{EFq7sYB-%}ԫw4w0IN:P9G42(@ PPFz1e(vϢJ!0~V<0feu.UFP
+UÆ|'HU#%?l>;=DTW\PFoz:ii1W6/\Zt-hs.
+P?'ُZ,=\,.L*'/_BIlj3*
+Fuw5gvVXgQ!bk
+7 !Js%
+"MH^ڋ2lt+1N-H%E9
+CG#a:ς;1C^B7Q_<8e"dNJwUݞTYB1w+>fwEUmw/~pDtoBY1o
+$œ̓"+GGݦYjt0
+qqr5I(ŀ:a}f>iH3ӤP]1moFsvx9YtJirUYĲ()$@	`Ѫz$ӎBai-W^/R~d۾Iy{~qq?Z;սO	c}NBB\Zym/p~^kԕ7<c=YxH:HHB5`O![BQa6&EXfJAIhh\CdȻ0EpUl"tWaP*~QNٲ|1cn
+9/e3LMm|̗BQH5+v]N.$7˺ﮢ?͈6CZc)Uo~OO=@ԠRXTktjS>bA#MjBqF%Qr9,k:~r{Nu=iHιg<-޸#s8Wvf^;khyB!k$ˤl9HiKZC$!N`)L_ӨO#QFh.0-̾<AlB0<	fN4Q$!9*DE(pXC,f߁x)z_#݀<9PDCxcH@5[i]$X>QE>*^ΔӞ]N *#c*)+a@#URְբ]Jrϸ=eua6f?hs1ow7_3YC{m(s((fb	̈́]GAvud`4>dBmPjT96D:a#* %j3 x+@1# A)6͜>!ß/ 9/ච$>螃H;`M-\o+;7W;hBw}	wzmwyKo6BqWێz"MކOfD J(syXqiQR uyĘBٻ͹Jb\DZץi(Ts 4'%*,tN4#:H#/ԠT)	Xr['s5Rӟ3׶)R9.t j\0P3?KT63~N{Q2X=$(^F|%?(Z}mYn[= {Bj14 BV>:5
+< "jj[9͆(`4mCIԮ,XS] :Y5~-u5Xu ZPKgn2al=Aa]ctnJm[\,;iX+dG*b#uRB4Shj10`@?M^Z"e'|,R69BRΈO?Vl+dِccL@$ӈ@o	ŔRr).*>뭇y씧?QRmwFO5{o}v37ū@IpߕhZy?jMxn4n }*@H!!'f_PQ?b#`&A sO=
+k#`6 0{H/; ?PA1DYBs1{F ؏2օyJ3׿ԜC=M_OE'[uO\~)M(=WJvHy˰Rd;
+*iKއdƏeOl;{2۵ilOgO	)$57))[7wUվ;zxul|h& ~Fwa0}6N2vmg$$B>F'%͂@!fð(^0D;=t =q9Ze;h-#E}R鈣w81itᷝ ^нw$y_s?s>_>k_{;y?__{Rozӛ:7RaӣjCx֦)Du9ب:s B$%2SbJDKFѓ+J񀶹rKJ %(1RՎh rBo=Ru	nӢ\jFf䱊t:|A.KOaTso7tslBKeO{x۸5;!BLq>hC;+egvRAqۤDU AV2;3PDC>)hZ`6P?QǓn=$Zhum=\a	0р@(܅	(݅7?k&&`\,)R֤llr%1=6	1qY<LAcu'wС/H!U>3\P;-r}TŮzH˰Cn+1ȇrȑȞήIdB
+yzv3WlZ/(Q4l/eV/7'$F3)ꄂ~y ,J]\3Qt?<a,@ KoN7g+"ˊ` *G
+hG;(FqBz	<݆ل=gFeZˈNv́,7Qny9@slG8 (F]a@!@mXlUǦqrEqSɏśv;ӌB1  ?Fcgz/j[_޽G)I@dm\0e g(o~%Y-R7v㷻87wijlM)4k~̱s+~_G}gA	+@>Iepy, 7hŝF>DwQ`  ehD "t,AD.G	o&g)dC"A|篸#%8T)>9a̏=؉'۫-c۶o[n#ů|+zի;M4ERibۗ# 6a(kcTnWXQ)m>z.z(Uɐ]#D}둖IضXiХX+4ZC^UHA%D0IR\\ϸdNAgUUN@ju4V-p_ΤoOՔTa4qK2m:IIuLw0*%ojlKgg
+~cuNkڅ^}{Z/PU @}e
+J'ң+@u-πY0<hMu0F<C$@M
+Q 	Ç@9}P<'u()axHGd3S30	I50zWV^w?{Us ,Wa5pqCQz'oGzӦ|p"u#.U? Gi,^q?]#,ȧ6<SCX7s:.*谶CBE@,O)7A1n%<Yu|ջ?0r'/SlQ~\dBv ˝ρ`wm槊D"ayyd]XM=t^c!]5m8s7av0>ƍ>	wd?
+Aq(! ADw_BQo^D|7 ]E>x^<8~Ӱvkox}ayG%V~gxs
+7RIP(U6L}e\-S"u}ֺ-j&`Xi}NE[*9sh?Ҟy%P:ǹҵK(.c_*P.keKo_g[_̋WP:PiVd~J9ā`Qs7CV- ݁R(cM=0LQ߇i0f5G+8cJ*E/kOp_Gjˈ.ÛG%QưH`:>CW#܄ 
+'@BIo<wLy}o,K-*⩧ۯ>|^nkMX2wWR+g?B#b}uX[Q0+Ew]mV&S \iDP`Z-Vt>Q*Ηu08\Rk9	QܥOF"jAV<jՙ Vc:щiRv5=y6`bVg˝\Lϧ	zbFƄJ ٠xU`Ot+^j\/Y*Rh~&/oO|w7뽋:X?ɓVe(B@Y1P}>C>QGh=lf,U@A#raDC&h98TzOCwQ?G#8	ͬSG4@{!+hMZfaTkkl-u_MN0	x%rU8+@=ma5HPMrS1иğc5UCX&MrM5s`boNWB"tO(J&@IbNIVߟ}[$w좡KM%NN_X{`;;in̯v:MԃO		ӂH(S)`_0j`:5MFZ\{P;|[!R|@-0fPD@v"sfZ؅р]Ùϝ}{9L J3B#!cl2n-eaa\QHIIRRf*2|U]lGC;ΟŎĉ9<ǰb9X^Tx0|t\n*?JPF	ԣJiYܐrڲiؗ$Q^,vX29eJw-6~*ޓpT9w? X&vZJ+!J;r=.!$'PYvi.7Ek<kg?p#(!\3P߉),CpC$p	.9T[	j34
+(G jíB"E{e.#X} :'1\3'p*D=d	-D:sðHC1H]׋y1~7!nK)K7?.,[:QBX#k&i=	B@桊Ԯ) ObIJI@gx꒚YstvH!G$QBE<]
+k&;	ym$/-ga3|2Pq	rڥg$SaE u!Fc?t;#soߓ-*%,Qzc3IomoTwYNgTeI}IOf Fd*Ca pƱ ^Y`VːC&T.;hԮ9
+1jCFGP Ԃ`%Të#C~+5"m{AE
+V޲8ɘ7XYuB:J^Gb,ezBg,1c&\2`2CH6S]}0RFiPж~&u)N<j˥"8G[B{8VV,'YDiڡ$T3|iL ʵ!/
+NǺ|`}/lZ ~v|0^I18	"D
+bdapԄ8}]Mx;1<f= B<kP8瑷
+΃QY*aMjAh`f	P،(͗O'LMIU_~xTH"ҥgfH-DPd҇lAپC{?#Dv۵Bc^Y~n{'T_)Vd]mOh2_ާa;s{Η	29L]_#$.4L%eÞ{W{)]Z{G}=N<<>u$@q bhn8<ʡVM&a
+>@­mQhPGy:P܄C0=8DhpQEx<ÆH7r=\Љt?qY׋O?4[oڕ]֮\J|ӖEyjܠmqt'=__N7-G8Ġ HYh9$Ч#U6U$Su#gj\'6tu%XC.@-^[Dh~驕@xa5bzYh)CYh7NXGSʋd%#|z_쪞f/Xj{cK9GJtl;W xRR`D@yR" 3d! 2Fڃ #Z!]D<A%0p7FxޅP)%0Z9H.è̂*@:@ևH
+J/0-; sfb'%DRAKN$~    IDATG-bh-g9^`IČ\J"gnydT .Lh$hsbkQr"a$q	现١>nB%9[VLfMIj`Mm;=iZuwbr(&م.?Juo	8Ikˢk?sF,t-[Ac?ROf}Mc[Z,E3XEƱ!>uXՍ8m0pgP0[P:G<zك;K6ABt
+dN8`BD:pFl bޠR-B̺؛)w=zr-M::AKac>$3~3e"%h߇cvBivşwvⷹ?Tt"K,jR.v+Yveyu~yֽCͶ}H
+HFwMk=_7Ry֬R{voD=ũpf_v#"!r*{%v	v  B	p (Fu<@o)X>dn""-qay) (Ny]]B(wċ}Ujq7M[n%I}kijf_4͑GOTCqf*C15-&bS'*Ur6YeE*jWex_R8r:,Sh<RTAM91<
+}`29ζպ@騣Zr1=TSZW3,%=@ (6IqI}5Xl:R{JhHKN4֯[j
+1뙂+?tb3?kS-%aafS|.~r;,'?«nY4C	ԶpPӰP9,!`=0bhDlTyѽʗX Q5dmhu>
+AKXugaUP°9#$sۆ54ug 1\RhHT}rNVK|:)O-oprOGD(<ٜ>U mD`N zDAnfvU%#m%`=U&O\g50:IZd2
+-~jζ߯xf7{X>-Z$Zc}ױ $5"Cv9a.p1J"m`zGe0
+ р595j߃,tCt1P)IX[+OpUxaACEpvϹ*8Ǉh.|Bpo[٢uE"C%W#%*c|l>zM9UT\8x }E&v<mT_ebO/z;!Rբn"g/xw(U\2.O}\lr&ݷn
+<Dß˲4Es~<Inǂe_5<P/VV|{ݥ[WWөo|z3r najED^Nx#H8etA
+dTf 3V$LZAk%NPhŞ~HpJ [F6DmF;O
+⧽^toBв{>/\ZZ:ve]>_XPgԬ'lڰYòqbcrr,NtWlBrfzY8'Y%UhuNEqHj˹l0Wԛ`[>F7m) @LtDJ>>/D:Ig^Ml_KFN0B27Ykux꠨DNfr2s1$]Q~<v'r.#FW8[M`J֠tM82T5D:'@:! ZA->0]^3|)މl
+`P2@(\@F`. dCjH֐a
+yA7a=I2FBJb ηMeZyU:ѐH3epd<<ɷd$EP1J'd%@♤DGjQ(,ᬆu9q1V[G),znIꮆLtd@]J ך>Ѱ0Ve+_D^	=FMvJk3n qze=3y~n\]cݗ% ـ[EAA0<7v
+cPsCJq\82؛s xw7Xd ۋ>q3J{rŽX~
+yn!aarzar]=%DC;B.'{bMIdv$+Li.47c%䵜.V;廟m>grkFMBzˏփ8ߤI0	l0~hE$`k;?T ı$%iV~]-rh݃/im:N!KPGm>8<c.>	pFwS&zK6 ΁]p( !$.Ϯ7étܴ; PخY0IL{q}ܯ=zѣ_W^WCø[z;3jmo߲eG>B)q馷~U wOR[Ll@!%kXC0ckؤR唀w~_S(м`GDʚ>s&D~Db;@>g
+莚I\)rPTRp 8	
++bSns
+*uUۀ W5/'M)eR0beSYHiIUE{Z|OK/iyhe3W<Ay4
+4$TÂS̑(Ae&fB`6| f, 
+"V@7A ː
+ P<.&DԀYg27!3(, '2[c7j~ GLB{g[zEA^oںaS0Re}b^#_$r NK=;Ћ}J` T HA
+C2Q0$",`uUk;d"j*U6n
+t3G8mT5h@#UךHyn"2亜*[,FҮuL$NZnw=^>d+%+!0=hAڇV`"!#X]p*0k!ς1TtE.=!DPp. 󑯂h;^x'	 YIj "O.l,D9cF},ŧȣ.ax %,=f}?Scl&DN FJ[ph-Ŭҵa0Y=?5hS]aZ!ȃՌ;S<F7Miֱ$u4-5}ZJJu\gf)K-aC0xWpx?&4VԔa<[1\_T!@J%v!cL\hvY/"A OV @gLycF8W(6ǿ0fGO<_~8'Nضm~wqGݾk?Om޼	?.?_so>Aw9b|![bNǚ&[pVUNI|Ai'=۴c(@TrMJ6j^mHzEc@#+V٫ 1IqOhX(agz@@Ͳʧg؅=,*r&"eZX5oatA+ OoKJַ{}O]aYwt#w1i1pJ`nAkTw!\ a @MYm/@phtFM^ -T~ÇQ|)  d6d>W@96ߏ	h$=VHwrx"^L*vM-"h;L%k:;fEkHӀs	$<KRɹ[$euIC}#K@υzN"tA/OtUfI	UX*m$:gCZt"I }[k.8avA{&;] fvc!H_(}Up[4lyF)x, ~<pF0*$ѸC0F	K0aL"DjVs =>BP
+`>蟄UЙGuGʔj3P+;z~2xc3Ns[,6k-1.K]4c>(KBNE[r$Ȥ9Bwm{0~sqz0|ip#g[b6.3'㈒E\dS/9"Ҹ(h|qTn{͂aag?]=hrMp DXY4L	I[~$I)	fǝ'3#^G2 P$=X%t0y9EDmv"ћ(N;F:&g1:Q].Ly!`<Ru"$!+icAXɫˏ=f=Ap'Ro*~`l7gaD>N>,Y[3$N!l MֺVm"l6ȕח<mKr٤\NO M
+_Gg@D]}@akz,~AUzPYXh+.9
+1"Z˵>~f!r$RO~"Bh^1N]3Jۜln~2/}JcögiCkX9nQprbˁ*,rEg`p^az],:0}=a0P<y2~6W s+9OGP1B 6jPd	x7
+h'>cupo<M_BOkGJd>77	6vA {hWoO[ا*ק9<\!+Gerq\IJtY}!Ber&~i,Dި;j OS>TU=JL'P@=P6e0mJx^9Q+N.ZI9Ah>M!5Fʢb^&ǹ1n]ua$a:y*Q܉,2dQ8*xāAx'S0g%P!TQptb#9bzF>XV1;sQ"E->|`AR1;"^Bt_¤*_w3sg1RM.}a'ugqJ}F۾ih◂Օ_g)4ֶݾ[Es`7r%RNd\rtyE.WʟXkݩo~==@z7_T
+YKiZ?`(	Yy4O;.{hwpRNrg/tްu,2]!0}.G`9pX= BtEaX;	h!	knp0E׃w+sTUF;Q~>R5RѰB&$oVGS|pʽ\y\Yd/7Ƒqf=(&M6xr6O"-
+CktZAԲM*l]!z-CB@V~IZ¹TfYq#PW΁>S&
+£"Fȕ 4V2膵^u@mU&?7l4}&ȮwE/]p?,6N} LB0##*S9!@M0mSQ܁},*!^D@%E9za BtCv
+I@b8~ I7P}Ϭh޷dXMYG
+dz-T8`I9ԫ&)Z(
+[<(0'^P3|Of4CjC zF/>wU8MarB=zdK?	hC}!GjO7ȅ@/n
+2P+ER5NDwjtMQ1N-ELJ=QKR;NzAav],vX$Zz֖iŝmZC^aI[
+4QFw"Aoݐ!uHWwQTڭ&§aN2	Dah
+ #B,G-F>Bq ó kmso_i'/q،%Lu)ёFKhϤ=|m	sUr1K¿jJUoGk/_j`ǵH`{fF.?r,oi~oGy~_&ٵ_kR{q-GAe>C(,XXɟϥe?Eiauv0MW+	ZͷԪ_2p~tlX2`Ôam?Fh/Hpf?lUD܆Ue-yh	Á7lj[z@fH)N0}Զ@ ./y'ݿq^=g1NLnKֺ0}E?Px,Ėqh-fjN9G]~j1
+Y2YJ/D
+ RR.ֹ4PbFPOFX[uH-Ћ>]}#\!Ou?E@pm&: I\'.qMԡrlBhZk`A}qǖC9aӎYJ[`kЕLn0ri8_LqvM{qRb bZqT/VZAd!NNl[2<êB&0|@6Bſu"k݆l>"BO: @zᜇ8eϢ2! id}QJ OƳ yC;stoGrPbȢܟOaqOnYqAKU(ݻWy@/8%t0E_a']rwߞWwmjh´P)Ucp(٩B}jޜ#D-Rg<̌9XlOuW!F&x,LÉi@Ylq1W[I1f=^[3S"$WT|6W7-D')hettm7L<* ZA8(J.Q	?DZ$g6T`@ 9[6b/Bć!.Bx`>^/bq8%4'doN,+|ӑr$աCC׍SךjMHI0	:imF%rZaʜdiP]~yj-Dlr	%|Ońc?')U/S&۾ PRyyv=&4%nF0LZ16N۳e؁#Kl٥ -{G2>`x X}Z-!'8HQ(V>U&a>ǹllU `iB`e
+    IDAT.&D,@oUdJ5uTg255 6QGAa{~_?Oz^n>_]'?n?װix2̮m'/tWI~Iq|Eiak|wG&/)%>j=#y[M*|z3;j-fF
+}<Gcd!nnUP@6+q8C}BHMBu;Ĝऔ7ЧQK-uDGOocJRr)!۸e|sW֠R0<;mvztj~N.HWooW9>ʵV@6dAI;pY
+FCk<!9g+O¨"[30mH#_ԅXE8 XA8Yh	Z(^'A8F>Dne)H-NrNc}DT˓^1b"E3M9]@NnbW:d/;nӱnK#:;=6Io\O6e[EuԊz[?OzZ%m?2ٗ6N>cB:8G0Tv~CJlVca@6]3I"ZJ rU+Юq$SScη|[6D-)6JIrR5Byr:ctj_1QPx  % ZnHjv":>X30vpwN!; 3`GB|d|iL97U :0k0]XF˅[ܿlӨfWP6By .;Si% ٍf;[\?&T4˲M~d=ޙ[$n˳tv)ޝ-NJ4+_o3,K UP~DH(T`YKZ0iwμ!.	9J寺c-;9_=e]BtHrs4f2,R	)7u7G>>U]b)!^ .t)e܆[E,z@ee0=9я3 W{{)F+Fe6?]EAJ;8
+s;5envфwzKJq8S#D&[Vv;yb|MD#3iITY}簗)`Q>;Jc
+B+
+'Ckd!N$XWH*0ED"TH%ӽ+'LT4d.Ga1ݕ@2bQNOgtK>kDDTB%o>Қy(gK'I~gY8;w_+y<'rtW@ʊtX?cj	7 lYhxv2Cq;F\>
+/{galB,ĵ'P1ydˠ.IdMpka,@tu)Fk˗jS&clT`)BJs@neuKd;MdЙZ)Б::ЇGU:iH,T ֏Yhd<rv^5f}gGҐ=$y54ڤb=Htb+1n7s^2'rj!J@vh(gM-l^XNtPs>/H?32k*s-V
+8h PM.?a0gV sY5=" lqyCcxWN܌?WzǡڋwIrօgRW &MZ4`DTG٥ʠp'yor /UfkƓ𽄤TcX
+k8i;G'$cd_ԈLm}r坖u4Mw W[\}w@k0"Bm?Be	R}L3NӺ+'[:)ˊUtJw@a
+YƁayքRoрcKJ>La `=5Va` fb":
+1pxO0oC4Z]w"_|vg7Y#n>1̮Z~f>ZgdOTaѾc>QS5n jQ(4?u&y۠yu+svQ=km^βWO)FKdKX+q[2OP/exGFmRH#3 La lbb̺\s+yR~zM*B䜤BBU+If-F;6!J/O8?Ut?I.'ͅ-Yv/v"LB~ݳ&Tjٰ*z15ᰶ|`l#@^TڅK
+ F~F8D4"R%mc)>	h	wM=xFr0ka[U]VyKdSأcSNC91tEF	xҖ:)hAP/ݜ*8GHazZ=md\c!=:b\&)B% Vs^u@KԽHV=Z0iN*g$Ŧ\Nl!]>_4lEɒղ[-@&vkpX ,[Bt8zhðtʱ8P0fPyr^Dڄ3 /iegU.~޻T%THߑCހHED 6\FQDAPM TwTR.wך#u?P<\se<z濱or k 6 9 ib>baOo ;7ʝ|ƥL	:R2Svs$2Y;VP\S4؉} y@9vjz-!şN9r}".rVǹ}O_0|pl<fpvBeaÂ_|v8-{])Re>&c%ODy^S.t|$,aYz8\ofgZ+{mZGhö}Hf|2I.lqݯDgJ=W4nR
+Af 7QقxWA
+M`lИXOַǙ}׻5~Vݿ)Kl~0[Yr^c9˄$Bip(U=8/% niLDX7x@-b1B\@}Djt{f%4eDKM"9ĔZg:)3ך._&7ș1^1h<*P
+j3z9ANsX]}ª
+ʧ~
+22Wέ	W3UrJfM~fy $n#BӜ-HnI]QtbiqX%dCP3)hfQ__=^ؿMBC$#X=kgR"&	ya^tfJTK߽/9*q2aM
+EJJ\nt9' /J:O%ze^#zq'.HP5rvK?nC6GP.&9mR1`W8N~N & >ʑz8kL:S%|4E
+ZXkdImGrj>muU*yV+ J5\DrYYiFTNۭ{H
+3 4d^Z
+ҋPA/xFX#[aXlyӟ-:JMM\ef('Ɓɞi͏3߿W/kvKSߔN~ۼ !71l$ɵF/'b{y$nu^a"j~Tcm/+Pޯj|~<
+jJC) Xk}V~Ii|z[KHөBi)O$<ySEnS;])|R]JoqBe>lY0 CHҹ^9᫳|Do޸}mvs "]8Fc3..@}5x5h:[%.{ջ?7?A{-H)ggg>}hϞ=~xŻpNJU,FXj#3ۧ&7 Dj/; MkRW)#rJVO%rZ^Thk 9.sb$:ABupOle`&pщԦϋg9<
+kƨ1^
+W+!8]MY>R&;P$MbբI
+^kP
+tUBkQ&&"VDgJ	#0]˷IJ"F:;eK9Ci7ήض(~MYq02dQW*y8/F$m@kr8v=gb %J0D2Y!pVFLIV{C*esraC	'L>mTH5Df {dCiϕ#LzM&)Q"m6}FwtԱIv	yw+m~LEF7@-SRGhH/i(+RmvQ_'y+9l2O2eWjxz_ʵ9nߥ/TaR{ɵ5
+,iZFCiߖ}ڍ#p|U V]xQ@X	58?!t7ឍv?;qrVťgm\,@,ل*7'RcNbrLDYk>,ۺ5ea
+qR(|c`}/qz
+Ch6N_J.28~jV8>},Q?
+My>WŏΟc7Ė:
+<K!I<Oڲo\Ї#	!DP^O"tz_)ݜg;[N-0npÃ2>dƴND%/+9s|*Ӈ PێAaiW:^)R5/w5}|OĻ{ʣGn۶g:O%ל/R5KׇW-~8UggTݿ,۷b@QBVwjPHlGYKZ1H<f	hMVvh'Rf\ZOT7sS<n$u,bJ\wVz!hPt_-,",+d&JG Lz)aU3wT?phvD~Ϊ
+X@zm9x4	zl<҄sP~xdLv|5~ !5Vغrl{g	IW~;ͼv.^!Rpy~vq	w3ꂺߎ+ûPz)yF2BsIzeFjhB,b9#cQ +HmKt|(P9SfoMe:~:/(ͧ~TF*0ZiB!FU2yXRw(ROɹIz4ߐ#dlTH5ayHC-z'[푍#}Ce:Zٗ&z!=_%
+I]+5>sRNӤxI'bŎޗZK[\_!2Cr$3n`MbY\Fcp:6&aи	!zz VM fBQ9K'~T|'M:
+UQ۠FeWjJ ۊ=t129Uc#EЈj$bg?v7?Dm48W	;cI+m+]?h-Nw,(~-^iǇi1Zb9Fg2$yio9aZ0́ie|U*?Y@G8O5v~nJE\O"Dѕͦb0e$w16¬G-XG,QBbNyJ^gmk!k}G\)NHr8Uh-apPiOwBNg$?lߦ`T[_?YP&UOۍ޽{=)~8knvٺ҆g$1,*dU䆚yl@b@MsXbf#UPZ;bHEr]WdY-D䑆	fKd@`c4TW/-^O*
+Pϵ!3g7ї
+VcDיL#UvNbH"vTn]_׊8ܪEɫ'Jݷ1ߘ$/	|Ku2~֝oؑ4 *T= AFHW".F#|#ulEVL}(Bd0l=ڏޕSy2m[Xn)]ƞTzNA:+cp0='$rx" 7ddϲ	yWMYđjll,{OƆ8_;T1rٱmh+mN|lQXUrv_#6Z17ս?RD_#ȕALu8m\K2i>LUCE<~Vj/WS;6Q{E;yCWj q~y&`3^y`\R
+%vb#P@Om\ >|Y=!PJ(R6ֿt*C<(EZlkJKxP+TI+uh@kuhqˋÏrku- !2L_F(L_.T)wZߏL~8;5 8k溣?wWJ%*7Awa,p<#[HiPrpTbheZ,c"^q43bGw7nڨ088?R|*MveZHIBИgpsK|
+IJFE+pˌ[/4j8
+//V\"gٕܴA'/ͿQ`(΀q@#@k1F}3LN~D?8M6Lgi_Z7stRT+[;?hz`=G᧤"1e|l:tGrZj^g{Mڏec I\NV28Q"tN7Mr/Kgo4ZG:{H~z{54[Țگ!gEPYd/m	 A&&'zȄMkEJ.)zCֈ(D(&><CNDl*c p&ַ4NPF㓖(֐ N".`q(> g0܃ҵ ĀJhzGrrN\߳Օ2Hg0m0e_-8dF! lf kb &AZrACd"VG^Mf/DGB^`0trX|,&&9O$uBË́|    IDAT&Gⓒ##}l^ޚ+CArG6$8yy>~@lZ8u3ҙE̺q*6م6mKmS;Pl>fTn,4?ϱHjߥM~вo(_1mǐJS NwqݐTŠqs $`ntf ჈c4{Qv0;+%m2"z)-K*ۂqbh}ɦG%,Zrڎ䰅aar-Yi<!?cl6wG,ep~Lmi~>˙ۨ}t0V"<jZG
+Q [F=>I2Tz-ӂ""ʎקY!(4Kכw{M֣·)P9 k.>i8:GȍmyN3zn<ϩyܲ|AFIvz}el5L~%gyv/CZl|Na)Att~???Сn;l6[n}-oy_?11qȑ~guwOw?0V|V^][@gr"擜tu=\@[C?\lDn
+d$Y2<o*r@jdii6eLƲԴ馗P,N}5H%Z"i$@t;B'}<mdQ[>N`l+d*cdIyQ=v[ w7WHd~fqEG#QZgˌ&Y?^|ǣ|JG(|!±0Es]v;)e#]R0J0Y`Ր|3 vhEvB0=*@p/ o$o,d2'6  dGV瑒Z%8`Q]!g9EyB7'-bϫ;)HE.(`іG}D-MrDbףP\RP?3M[IzQwurC=}LK>- *ml)M#}bq$6KSlW[ؤll$PAa=&r
+ E㑒7ÿطJU~\p~}<ɮr[B׹f,41 AkiP 	e{3X G0g`lg$sZI<m/ZoR@wOeJKvd:n-SlXl}>(jjwLjߚW=?-)J_.Uӷok륷s#  ;-BFP_ﹷF9_`Z4NO6
+gsq߮yc@JTƑE6L[+u˫.|Zmx9+vAd),Ku[:kSBl (~~R4%Nnqn7Uʟ0m{;r"44R-a.Ǽ|vڝoY7]I(Gv>}awx\yo|v=55u7|.J?ݟ~{#WK9t%,~;":+2eOy?JNU'<(]+~fM]4%2׆ڡ1"!|!ڦkw׏9d/ڠD֬"׳T'PlYWvSQTN>PU̚zIw3B7K9NlI4+8N,-z	C!p -4ՠgFzh)1.
+-
+NCÅ<bP6ԴW]~0[KW·Yk^n7ؼ3/h.Anca6)!nh:cB0_|%?~װraiQvEڔڌ]3ֲ)|u;'QpmM4]
+6'bFj!9,NtvQ'"KWc&+1mQuf+YW1Q|&Tb]=eX$44_=2nkk3tB=`d&EI.}?:OrU}G\`3R6sM8]	 e$(ڲ^?i57\o-Ecgޝ3Ķ~˺~VW^R4`܅ (Pm07~B0>vJҥnKKl)
+(ǣ	')#q'u`PBlz|F䕜U-6kl~9lzO	5V/rߺ?Zn{ǒB|/^Ҝɹ?m+/lNaɉX"ɮ}_{Ia{H#D^}^cv=Zo @PA8@}#N>s}U6@5h4|i}q6Pn	p/Z[{[M%(a98Z߬,M78X}lnzF*:
+߳cqrRQ7V,uQPJY{{tf\]Z|uySuזs֞GeYK{ag?1=?ҿG.
+},_$uN;.;kq3]~eJ&?X8|)7?Lʴc3jHVrmչIlGICN|*PG2\j3:zdX&0(Efw)K[-.ULzj=iXsGh٦qH}|H2H[!NrxcTdf7'Jh
+ڙf+&-}W'`oeZY*frV~c+U)|,Imj^q I$z+(hA9pPF|:w>c8}6N,HجܔWI]46i>Mh kuDk6
+XC'YԞu$A8'NV=2 @[W&BdI.errbgL)O@v;dG <CRMSQbQ0s&)SKۄf_?U!8#PI~^i!jy",bpNDATQ1Vr]Drb]vZ vR;3ﯣ zirCpgm?V;M Wr&]6jrd=yf סCC?}>չmARYvj!N"i!(kh_ 
+IsDXv,+еUNүf+~Ե~@1: @?yU;7PQk_iU?H;b?=cɨs[d=Ir
+[$&ҐvBA	
+eNX. 1DC6-'(V=z؇p<@q&y\{7&ɮ,G)L"${zPj-/K8y&<kT' ;zk;e>FH7v~r׾l;X]&[ѻ	'ZHzD2%VZ'6| {Oz# gk2Jb`_hA2Jbq(sUh`v{R7[َ]ZF'P0ݴZ"7m\*f%{jֽRmzThbMI#&ԥA"ڠrZ"+)qPE%hGjTY[TS%+'46}5dYQ,C7!P>M4EN6؁^p.!itj7#1̎(
++k½Dfs55Y}yk&?3C>KY+U$vZ#D&3vO;}RIbqU6'/  / \}Vi]舒0L_v4eWS$6Yj)FhpHC!sI$wIЧVFtD'#)͉^tX+xYbBMԞO:(3l21s(=Ʉ	&H5Ԝ$}ME#}$QN&X]!E'S^Ǘđ0i.`XȄeP4}c8p0iSQǢrT9ʮu US!MLEk?R<e)haL",}t>PC:_ل0߼\秴mkiLBڲIX)u	Fʫ'ٽåڛ>'da:&%JW]Y~A|s?x<J^mc0c+QrmEW*dl$/㔬%Ֆ84L9^U=W*J#& ,Ta{)[DzneۮGp<tVwZN;
+<GC ϷGQvMt9G^xU*PRz%i%S(uN}i+dEi\i>Ii41v۵꧃7T?tϐjnCY1ɮjuDol7x{wyf4/w_Ϣ3k{|GڷOt]P20:TILU4bmFFKej3ة^=q3IYlqKI(NHg#~P4*Ʃ\rpW!%F VBkb(
+rM8訝|r.k	z91zBgjyOuE@C$X%`m}\+CUN^lo#/$&Á	rE:=fc|Cc-CiT'IL Mڶ)mo*,ׅ2Qx<;Im |w!v=Z#I..b)09$1)9E҃]U2,c9N=|O_O"sjSzmuP4Ɗq
+#CB}d#:Ɏ8
+ݸ.S==*22b;qաYL_Z˦	`Q 4Zل2ՑEENίBttZcuTE1RMz)[Q<,Ȧ9cQ@ka	HQDMkX63)H~0A1CJCa;y}:r*R Yl$h-JUa_}zCEnESly~`ma"alP	`Å-a!Vǲ\!֦^%ratS%$[ߕB$KuPJ
+bDG=QH#.d}o]?l>̮v}Td{}G|/býgoⰬA䕮}k.0'4EWL︯>=k"$1l$ (6!R	I"fwO~ڰ$RQX0,Li7Ɛò0\Gi[k^(>nlc s_jhZ'RۼWi!7Q2=NEk'&bkH9OI0GqtN_b0rYW]yڷ^μ?)O? )JrFt`.[pLt?c9	ܒT3M$k;߲*BKjBfS6
+UCU(vI-:ٚMN'̓I(]aVHU22Up(7I/;M8sBl@mM_LRJuRcHIl*2
+9{1-W*9gQ>]vᚾs$Պ)PPh9IvV2@G&Y"%rMI~NkƥKׇY?fY+XoW/ncnj[H"Vcs5
+lSټ;,G}9	b<Aت+! 5.rHmc}Ho6XHҒiD_h&+-2C1K&2Pb:VdCX^-UvT7Qy۹Nmy0't{EZ^S.D/za{a6EMzP4 E"  Y?7$"*3)7ȋ-4dWZk[h?t {kHv^7IU	M%Xw3v$7avMѺv./׋~M|DiZW
+YR;H4sDS~ y.']gRU!P:4X=הϴI}[7+|Mc`Rf\Ct=RY"}+'#qnI~1 s`f+O2oNǪ|n}eOhhRp,"4PoEA\P_i#MeVHF 0m-qāh-V΄S@}9O
+{ aƧG}7\/ b&3mX.PG0Ld1 J"R8k˯ghG:⅓;@j]{iG7Lsٵ	0JGך#pŰ_F+ϋƢ<Bۺ0Z()ҺuD3j8X/3gB5$b<Qx|T \QdEk'̮E~qL*?SL&	Mrk*g % Ȥ=NB ˺AH6oPEx?V|W8AP%
+m+Sz!M
+[[rDCT2E<̖3Q1U&{%b'@#w0`Fnl4'vb3"֣\9F5=7:(gЀuUΪ%Dŏ. >_qs[JĮ^.v7^zk^BIhYћ\nN-EbA<󇌮5%UP2BNXf@-ppX5T{l
+gV18p9@%%fr":B3f:J]jDH̚4 9sR(MbNꔡe'gV':&a]V"uuH6#\h#8_3P/ 4DGR2/28F	0LTF{.U%5r@X[8[ٵkdG?枮(ZMɹ^п0w$|KL
+VG4E{B
+ġ	c&]XA!6ROML08+_:2
+޽q-t[nL{=Y~v&vWKб+D;~ڱnWIa_If"PR	Y,RDA(l6(E{kOyIvմN]~ʠ&2m74J1&Xq:3Nc8ߐr^^XmIòv8.B;O():S"?4weg;mJaX7On=YFp
+)
+u,xYs$"´@i9 %u/4Zk}oRؒ,;6bl &K/&$&4	u70r#ےjKURVݺ{~d0Dkj    IDATϞc5\5+$K6e@k/^q
+.|E
+O,PFwҿ,]ծz)vmVj')oZZn}L0Tj?ȲEk;Yտߚ˗?Tלm-^8CiێonW-O&76dbuPffŗ;=Ec͍^(nT[B(*l_RSk ُ_^y|\~D-I]'Q2;D۾1ٯ[1_rN)Lb/'|)zЕ,w)2\op(Ys@%I7؛C	52bb	'p9r%[}k#!]ʺ_\J~W̵iqOR>rem;ƿܭGyZ8y@/յ$7KZﮪkG鏍I<+Aa=]vIn;f^Y&hh+xg!! ]BPeYL,|R*=L]-$6kH_,V0<2AzPP[45@@bc0ú]lCKݝaGc᠞aC!. ^YqR||nY.}!$NudElG8<#==wM?'ś%xiu]eu]3<A=eյ5f~i#JNWg[iҬkB.~gO}ϟK;z+nx+TǇ
+U͗r|29cd!yb\Ur>SR}}L})ޑ'[xj81{^X?O`g2~}EJDj޽Qe\$<lc)Geut &Ÿ~NJ)30xxx^sᣵwԳ@5X!PX8H-&C
+B^<A-eYGxKr
+\LGdBqyo4/~
+qk$euA?T>f}-ޞoj7~(^jQ|kizo>73_7|_ݿ;3@}y8:5.J|{uK+A棳ŝIO/CG*ۍG{Z# kl[Pm\^5
+ɮ:*OLr=>nRTb;rsyIo {wa;[jK鱆h悋FW.]<Ykfk84g:tO-Vj͜|Zr.%@$":L	_<(n`r_ПW:&|ɢ7GUurKa倨6vkꅱƲ'M0+1)lgbj޳0z*݉^dÍ{\+//f1P/&	O2~uH)Yf\:PZaa-E0ݞ}qV\v %e4]̴!MZ2,m>E9g0]Ͷ buŤ!RkBU= ȶ$ٷgt(a(:T%m~Xp-ݐqOQXv%{ou
+P4#~z^㚀	ä|hk%--lo3̬Es!#:Na[dj4%|1vNysդz#9giR<+nuEp}ܲW&J,Zyhp+yy>T?$?nG#P
+*|X7y8Misf\18"fNLij(]´x𷌝?3<6~dZZsԩ|u; 8/K舨*ʗ X:nY{{?ٝTr݇>;K|a\xX7z$ƾ3WR"8>F"ٿV.{{՛BU~g'yB獮)1Zw:ꔱm=XȉZXE9neݵ4qX~S̴yWהo=7g2}+7~"%}Iѽ#xsMy4g֜ӥ9<3)_́k[ރ]*Jr^N5xP䊼_N<S=БPIW\;#Yn<S}5unT|
+K栥
+}CQhj3c+^߮yToHRh(8@nŢ&f 3PS7бhd<iұmJ۳
+SBH Ensu#:RcoI}oKyE{B,3'	-9Ob@1O<
+8bկf\LPjEb ծI\,l.62Gy#70!Cz~S+vK\e@LW~Aԑu*᱄550hwSxU	.QHbl$r<ԳcNmʄ,\بW .mgkj"	Q5iGJXY'bM1h#>[ၖmOdY"ZH#>ӱ/>&߷ ^q>P`̊x.# R^oX22{4P#9oet1ŏo/o󪃖ϠTTFvp89-LWv'F.0_*웠&s2x>77NZ\YjilS͑sSYcmge{aZm=}/^e6cm̸|ȴǱDY#+ Vu5i,KWd:;5jJ>G(z|=n6j5܇`aiFG?)ATN'w
+1qk:0e֜ɦǌ OYSda*魶àV+g?t ayy6h/# 
+t庣L>HT\ {^dg3k5F4ۧ0]%k;UuCwY4}Wt6
+>n!=rqOL[oo%ӣBL6yr$r3 xP充_;Gz~G_Aw$6S27ʿ/YJQG2w4laʼ4cOlWva{4VWnTfSEDgU`Ŭf׎p1_n*"// TjdfnX]mmI&;$f9g;bh<df{v͜1㚐{ e4潑]ɓtthnVYNZK-> ⿪0TJKpa
+\0a9woxT$ytEm>ofy\ QSN|)j(
+Y7g8MD^PPf'%;fTJ#þAK{DH^.ǀߴY.Wf-j)P7cճ
+>nP	Ts\JVĝVC,sn'jfTꑓXD;bM7^NLwhāQj&i]!׊@] ^qGM+r\v./c'jk1(7!u:XB6|犺>?ysO77m׏T{ ͈ۦ8Ӥ[ 1CoYu:AmӍضOXӑ-4KhOኧrӼgJ˻h^rmsi1\Ol4WQXhT7r0nG/3yO^Dh3:TJ`>DMԢʆdI٫Q\g9j>2}0'AiytYM{*rY][4}ϥ	Ahޏ1zvtl=4If(WH^VGRИŕ%HGG-+fc\~(ձ
+e/D:D<Q.1@Y ^,B`o;bZy:Z@2>t7SwZaDY['#>'kǆ~8UTe	 U|> *w7TqxKG>6ZZC|s g!<q %%0AyigwÇjbq)E!B9n`Gw괤Z&+{OxBab!{ŭob8OaG^ɾ}iT	`eGyZ%2gĊjMnC,T9~S+Q'eXdS0@ <]~aE
+x^.D}F%5Z!(,)?Ӊ/1G1?۠&|E/7$jc~v޶Us8(K΂7":!)k2Kf-Vr"Ns1Z&L3S۵;u
+"I9+l /)X)&nS`B1lSjJQ~d~23Xoh{K*ElV7Y{Nw΂l+*v[L/9زQ!H@đZLjj[r<6Ԧ=>(n&3t/r],xxڕ&v2.j03ē/L	I9+#p}j]O_ZiǏҝlg?([!h!羅n}. M㒗$7VhdԺ R9xWOG!5Z*ԙ⦒Y9d%i늡+w,R,j& EnfmE,W$F]4LUvaP^qhkNOG2GM͟2M[2G9XVW?W7Iosi}HF+hMf(!(Z[|Bg
+M	]F(R0Y_O`-$P`w`QL0Pksߨeu&0t)5h`o??WZ6BPUE\k\@d9A^z>QWu%{'drߤϼc|DwvioPM@N;QMSmyO9/_bW(r}øۓ;RyQRG[kbKV_f=>@OUZfc74`[ZÓ9TI15DGS~bz_ >5kBxb(A9+sӮtlӐ$MW] #۳̙u֪ܷIR[qgߞBn|
+x#~B?
+Ì>t=q (˕Dm?gQgE+y"qHnnA|?Nq<>"G71x^\)_$a,".&؍ݽPƂ*7YzژX2l5sB-n'= t^ەKT?o﫸4,-]ZȱƶWI+GP=/l}@Kr2xtS 3v~r	)km{\3ϥVVڠgf/nY@}V!uJ,YT(ZcQyԜ77,Q Pa&å	R%zC~|ȿ9=~A74F !?oi2rlx&|F	7A@ɮ}z>S"psLw[9OELQ	])owUPr`Dequ#*AIXVET/3(MjsNS]$PWmjcEC4uv/*?S48	^Silߖ<ZQ\L}HKT|:wy0<$xǞ?&$+yRy|7	֢<f!OQL1܀[e7 #cwҁ_WCPC 6/<+	AbA5f*a[Pb,}ǃ!%: +NU9 Qo>8ݯ>IcPC{,ʲd	67+`vaaot$ySu{פc˝tmLY=
+~s]4@(y5~cۀf_͂?7tOe7gouEN AIJx7c%\y_l̆;8kuQÑp\9AEfz67Y\=-a9Ԫ/gz=͢W-*"$[#-8 s+1xQ#Y=4lf!ڧ.GD z"]suP*͂v&ݠVkj8إ/G{gofQ6I4>MpAQ$။aEff;cZpKy{o}4e+)|Җnlٓ
+ 		&|"YŶ-H-dz#UbF?W|w`x=ZddD>4nr-m3ɬ=Ujچ)s'#:QD^Xq/lCy5Ħ;W((+^ԦG5aL3>kxØGP>OEeQuzBsWG3^sP'm	:u+xWQm;#142l:T59hXM:P\:玖h7=Ņ,-1uG|6a߾eV3U\͉e40aJ58O8ny<i 1u](!y_e\Nxps7bKMx()͑RKU(m;vNk$:[î,HB ZdB~OZ"7{[˲j.yďGX9r2<\QBAB9sI)Hk  $6<@ @98ѽNz#cT+O&#^F*10R]c8@󐔹T~f8.+Do:wWl֓kwe=o!>ؿ&	Tg*(esĴ}H@rrMʉR/KI&˭QBgK;OzӓAs]O^h6.O'jwuͪ"vˁ:]Q@=Zΰ0֦B4P<¸:_GDU<6׌Qumۚդx㬺6]\
+ayk$Vg'"،K00buHrvJ#PT7M>>?Scniyf6C'pc]);&~zb^i3(]%~*BAA,ϯ,oќLjܱΟҫ;5I#jaɓ&el>vm:taEWMr"@K̖<PD89rِ^u8s*RAycS]L*%ﹶڒT(rU+F}w    IDAT'5$@Ǌt, bºOLc}a<06Y9T=En[r7|fe8O@@˙s<jx$=j<̰Sމ);beۦ	_y#фMSEG#]o/k]t6qʔ/ƴK|q1- |:Ԧs򐃺"5#^h'Ԇ"q?_mO)rKh!?q]q+9SE3m^	m
+.U=ӖˮԹc0iZ2}U'=o=(2_"`o;EqG!Q@\HWS{GOv0b )Q0fŕ5	1: ,0E B	ƨ "aGafG]B10&NehTz G=fiwC:`.1E/  j"Kd<7][Q\d	zDֽYvr<Tk	o(-4iQakZY~ߔy	wnga9r媯EB_:OEyZ%~LɪB.0CP2fx|qDr2˞#/, +J#Qd6V7s9N9WعL0V֯˜A9bfî<XV!g_m 
+!6.J=r d61_`u3EmEG	c1ΰ>'^ݡWnؿ'Griӻ6]k]bqY^Ѷ}6E]I>kmӭZǧ6]ipc:nPnIG\.?n<q͎8dPhާǏtA8E3Y#]q|K|VP+ kUcA {U=2-2Ie'19bfqW2|ް(35穑^_AQU,RR
+銼_]ՔE(~ubutg{\*LrI\yӵKjG3wjtA7t@')ii}~vqd{8_Sf*z[:Ņ{txkV
+guQ?c%+F	;yy,3NtU%E}j!I@9/rb{9	""PC4]2n`9%ãCdP$ E[:ҩlDOd}3~Z?O?ռ/η\繴xYr{_y6R2nׅD԰E
+97g^6Q@j֠=l&{&HMT)N܆ Ja	ʇ>SB:h#H^(Sx1E9h."1ǃ&)7@"@9`Dh !6YNU3͌zU?oi8ШxGv>tZ*4{wY3ƿҌ>Թf+eyNh>;/^N5͞z6@H?Cl5)	(
+tw·׍7=#_L[s;} B;JR4Jlו\SgKsY\kMli/~tɏɇ5s:0dwoG-ya!%^bEŮDf}Iٛ g=C+5}6<֖j={rY=yAN=p{{Bݣ9"A7Ny^!?1cZqסfō[+1-V>:(jˆvc?ܹѥ<1+v,riBbzΣN4+s_ݵ;c%A&<ZwuZ1wqj43^'z۱^T̺kc*nYY]iufӎne*I&vNՖjm/ɞQu$7 t]ôrY?RP׻بAO3:7Hb`;CE<@,ٖt6m1`ő5M:RN/lѭ}U=~h>Eqf{).:h8"5L~p'5~Fh)mq!Oɼ<20Ozk=>ۖ5ήLYgQVu䡺XСZUS,3DBf,(	'$GAƲT5	Imp(-	l]Q5swp}p{c5盖g7&Nxg-2nG8~2tܝ0bCXۚξ  QBP290a:¸ZEq# 82G2 3Vnt2ES)6HQ«9:oL{Z
+
+~N&~U	/13Ͼ0d2GyH4 !љj=ctARnnUA4:5T/{>;γ_^>
+ i#eFxs|uU\pq7p%8<>)+??%Ş]̊\շh}@fWkz䪶;owr}²aW]̻rKΤk\1mf
+F/]yب=vuv4{ٷ1Y&1:sfq$C@wrU6)TDw[ruQm9	c:$9f^Vx8g%ϛ?Hp1l?Uaв4BsHu'Ԕp%OU1%Vk>53lѡ'6.OW/0ߦ8Fݔ7U	.֨l#8C#As--5ꦜ0VIꮌIr-lzK=آ܆Pj%-r+bOUmpTb$(1=u.BeAqYagL{mca omy(B٫m .kwmhGOJqfԊv/UΉ<04覮o6Xg/tqɐOi0WW>0+PZQg`Vܙb	v8K{^.E2MlEGw,;F	 35=e`ϾX\te{A)( `|r*r5ݡQGvu73!
+6x7}wِD]Sf5UrXS#kȑ甼%0 j<8(g7M&[Yk^?E*G>AXHϬfBjTUX5U]M1e>4 Q$ t(t:a ǇRAZ;Saw﨓fV'h.1t<pM젷Ιq` A^!A);eԛOHyY2lRW%cp(z|`v>omu>Ӭ:XxV?'ٻ'RW͸GtLy_g%*Iqw30>xR8ؕ륾:7Jnޗ0~y[Ußf_\+}c{w_}-roо:5)_?/޺'W	w,^
+OK;9_0^Vq]pgGlg+wISfQzYTvN'3Jd?xh*A*$gvԁd@T*.?|O\b</^//&rHtԠ\oyeYq{}Z}~f>[&P0_])6$!-EH儷faw'krxآoȗJL|j(FRlXDRjO$Pܮ!gjiV$/F-	].跳quuM}yXionjr3Ӈ]|eE+vogo5Qrfq'l(wcCnu`H>YCPۀ;2Js{qRdqC#I?R%0jNu/hW0}~:4qzxՈ̉[|AjfǞN?ӌ*GPIb1ޢ51-M-GBMlmVztKeВ=CJȣ֎}NQTy漓J#,B%Hg6$3?m-iuG;($B)BʭII5rj{;_['W>&{sVzUFʢ¥"-xg%j Xb,%!`H{A9b)yLv3x;:X>x  ]!io3겫;|nN_rIP(e#!#N"aM06 a0X -)eUI**|9|NjxyZZukp\d	'퉢>TͥI(h`ص\_	JM@>4$>hN=QPDK'X=ngFh94\
+לZX_*? $.Ɔ	џq?M
+=oFvϣw=iWK3pcq~{FH+)OTӶak["՜24?~0-D"n}ntTsUJ?Ww#q#%[[i8ߝumIlm;la)$B߹nT\䳞Eb5voمnz+wL{qap%TazDjNm"iѽd2kroXO6ɾus뺹5y5E~I!L/5K4`]S{ī)^&;*4xH(h,rKڨaEL&>蓹=yY8ƂtQlg6ͧX"-pV^@TU[rFZ30PBK4iԄs&9'kًl*4tah-tm5 \
+8!@z`\\-.[tiɭTh
+YsI aUzpBH׍j	%ʙTnOLH:嗌6&4jCHVh'FC@ X4aG mVkd7	vʊ:42Oxh;Y':RFSY*8p'ramfE\0 﫤=#V̰S9f4 R2}GAjoI׭ 	NHZZS(Ħf]eJ.[<ow6C<NTd-Ƹ+257..)7H5Svo$P}q2?x|܃Є1(8=hÖh|Q4,9>hȳx) a4
+-i,F@  
+aQkcp. 3:;gaoOeQJ+*(꫼²,5D@s)(`;9W++hnFW_o0}Cɉ~Ǖ8snU87?KS.X2gh9Hon*;ߖj~smFOBsqFݘ3?grFM]N?(Դ|#ij?>沕V8
+0ǖ~Zҵakw䵡qvu,g*O]^|mcCה8[~2y^"ɩSYqorݱo;)- sx2hs'ۋBZ20#Rc~_!)E)
+-.&2kRXC/2ЫX!|UTQ 8f?oй:mOYHL(#7tFf:]&[Ԉ:պp^Tab60EO6[f[
+0"$Dg(SVǢ/LPYLU7͟MDnnXK5XBe˜ȶsW
+ݖ\ݣbfˢD;eq+[-[qXlgjj*F>W{rbCz64Qu"tdkм6=jt!A'16WI1nz]Cxj-Mrq!FX'00@aNw,?PE6f\SQe,;įәc[ÉZL^@
+×2kà5f<O Ƨ#N7#,/eXaչn|ճY$d`ݱ26*{7߮_	K/Lmk|q~R~9ЖWc8$tb<lh])b c6[V9UuМfd NMGp|L^7l AiRH`92VH<lW;FπPxmr5И\k<QDj itŰllJ	fAHF`2w}pB!hLưllfR O&S֗)M* D]}&/nJ[Eѕ-q[K)y_yEH!^c8q-P8]jw~\-ߊW/8QrTwrqd%GG(}uI1Qjez|lwڔw-BK?YlQvܪ_-(~շI6̮Ɲ	?=֡#GM[OfgTG#ɵ "W7?+uYӶ	cխC
+*LfS!:65Nܱ^cnӋIqN%#2#ԐN̲%fgMLo]ߩL^>!nlՏWxoU= gUsdZ&-%}M@%BLN KA=нzcU$GPD:nWw{9awטqnk7K'@&wOP]: 0_װ
+]2HnDnztX5ep,7gwea@Bbq>@S6U<ԓ-N
+ihaLpI-tڰZ-Gʘu4$̺٘~|l؜1b4o$R5Eΰ<+) ߞc/.جucՉݞahS.3&"0EGS''LۑrLbb]P&d2M7r4lz	c6Dr¦tpFmYR9V/\WKGo2 UǓ
+J,>s[q1h4ZϔF{:qg{4DQcrBaz Nxx,0^*"xP
+NE
+aˏbi1ʑM0g!@>Bk&τD`40܆S}lΣH1Z[A	C4B0X'YWEzXk,,:e`@0Qy݉_Fafg)em:I7d^y^na h)w0/AfoIQWg>g+3SX    IDATwWe?A&:_ktiYh(yŎX[j/)g˄d,BҨtJz4ghlvµ!Qjľ?XtfKgZW_n^.
+5nl`$!qaqizXMG>RϷ(]'@h\Jϛtn8ьHa,FtCeEϺq\+%@h}=0LK̏K8%j&M9IcL{{g/׷n/8>&Hshϱ퓖LFm?~2E/` JT10Gmnr.Mܤ*dZH
+# ae2cl/#&z^fX a5b1`Hroڷ99Cn5J
+]˵ks&k}I\'0{%(
+=Uvw<zk:HLIG3yX>()Q"փ[ƍT+`]?Uhm}"7eA;NnDsIG-z:DڨT0Y@KN33I02*dǚL͓.'tXbe]80M/Ujv4L'ǀT3T
+#HnU n&X9)l1lb .ts:-~8$8>?9aT:ʟ[qkQ~cuc%u#S{L;L}~ܷo۾8~Sqݜ^.q[8RP+D9DA(2lU O %D}wb6@0^G!2,@P`."hA(@a"a0nF>̐GZ#"`PP 5T&P$}u:Ň.k*Pm"Ka;P^ǐtʶGo/U!(?y$-ٵ'N|2
+j]hJpګ6щ|ꭿaDǉBX~as(yc"j;!;fHws~M{ ;?~O57dH{/+\PN)	|miwmyiK݊yBmB-T;=+?hP}gWt<ίȊrcZsk'X*NA-5/H]幮4oڟOWx<{SYmSjo
+ÏڡRR3'GjXf)agH#P4B%<	1AUCIzal3tzVbDn%cҼC.镞>
+`퓉mp"Ӯy\
+^kvPTiB!<˗5U&k|Uj$Rtxkw(}mx249?Ti#~C9)@ъs7>?ZOjNvUV>7]ROj&WS%w2IVJƙ<#e禑ض]9;#96y
+'`6ʼKЀ׆{sKĚf< N肐lj(hڤdt<U$6kll%JB2!,o3l
+X|\dMrE8y3 
+2/ʸFCe_N*&Ɯs/&q4>#".#ihӔ4QA3g5]Q/Ǖ56o&H9&g=@Pp:ίj4Bo(_[sk[p;wSҗjJ5>4^H<GփY<pHN\C-Fo-#MwfC5<Qh}D	> B1ڄ[HG(ƨnA6@6B0dY Vl J $בtOFeI:1!u[HFǨvD Y"(04:ϊ^({"v"!IQ~G)?*T?z^+ZO/xFM4R@nRWުtunjɏWqvT]'oj&hT}Bf;|0RB
+ϾnAb\f;W	椞tI5;Hw-(=MžTjR&hվPZӫBAL5S3t8{dt$wWS-H6s5C7gFfa#a$fLa1Ǖ	[T	m$h-z^FhslVLyJwU%gyrM,y.	rXGî0{Q=lLj!pfx33^ ClW(CY)|:T,t
+-Ru[ـHj5Ib߷Y%`HFt:@:޷QsbFGXצÏsJLP;ͮزÞ&j8W}?찣m7~(*;g/1p[$Q&mg$lX/?L
+SȢ}zb5?!c"rii|3r'*	H.':ۖAza@"<&ĥ	d9>&-5~"ÚlZ(wԜiCv7Nw+A,7T7 %B@j
+[0_.LUmOtǣOT;鐢9g˴SˡglYΩ3W|ezx?eTΈRbyv(5	M,aes].Ͽ(NϒizVrx\*yqV:eMe eC䘻
+d)`;v0y
+#@`h/l q5Ha{}:,.yυ.f^m"1\(d1T
+nv~I6+0"rw1^ l l褏<ANuR=돃sH"cwt'FVJ-Ai=t:Q0qQI#M~WEdųbJ09"Ud?mg8ugg曯G?n{%|SںuZo4;d/5yΏ[PnTso?^npb?%$Uu[
+_퉸}\;~1!iV\wU7lt?\O ~7zUvukx_gs׬	/t~
+#5gjKv?týₚ9zb%jRs]𾺐\j]e+Icd:H1R#U}QD'XȜO.R4;h%QfLK13%8$0?&/P{-^cEOYI#X#^6N<[@G":Pii?7F@x.~+Xuzꅡ1%+X(شon*R]ȢCeNeTȝ>??^ᱵ{S*ՌMW8#L0gl55BZt#Wӓ$o$zӕQ~e
+;yfNƥsֽKs5fƸJHs.j|=QNs>/αI
+%ڡ)'Ɇhfl&Kk2kVhjJG}A=ǴBɈfN5}04Dynh-F*l5JiCdjx:!MɦC 3D$b49,-Xlq9}OG#nߺs>zau{*{|aZ?Mh/ϲǌ)IA|mi\m?AHnYˆ`seu;(C/cxr__EB4b;DdJA(AKNO4f;X}-Hv-6=A(00@i2A>HPn#R8%IihѧO6۠B:vkpC/4RiG<=N,AQԢJoE{1s9$$$lIW0Ii~Yy-Xσ3 ;q_r%y{on~>;sW*XQQZ@J59,~j+Jq[Ku0n!:EiˡBǾO^yR&Ǿ+猓0 .z⒚\i`S: SWO"W;؞iF
+dߛS=hy~7yk˻a>y%cqE3m\[RڝSX!v X0ΨI;̪CJgvj.:w<6Y}+?sh)&4}GP&g+JdX"lC}0y@j%SCsg2S"@TXej'L`YM!	Y&d=a*
+NJ6)! #XJBhݷrU(L%5HZ>ϖ"D%$B߽]mxŹG8(]ⴟN߾ط.GJ*jjk"Z8+*J<L*GI}̢o|6t@þ6[$t-[Dl;'0qbzHkǦ0V7lF6j ڨX- C^#UHvRM>DRbJlW2ûj<Qlz![9?5lɀRk$&$FgťKw;cquBDI""нSGe_GGm%wq;k8{U |0~7`Bբ_|ҁeOԛF\͝'%6 I_[Fe~¯CK A+<ae+Wd,Em75(%5aTvY)܆!k	(G0^p$d=ހ(bTHGNcԅ!]ˆpKˀA<SWJa}"?km QΛ댮p;&<Sڀ> ^Ձ=뼻/4;;7?gݼ5#rQ^׺O;ZNun4BbJ"n=ԌT3xVg_1Z^s73#IH!)}?f!/.$&1@O8nkݐjJ=S>%!i=CB7v|(V{o.0nlגו|aRcXWlcZN^fv-"()ZJ#_G(xm[W,qe%~V	+WCC`=3kǚ,{mt0,xe`8&+=%fp d:Tʍ2"43 
+cdM<JueD*RT5eoyZؓRR⋌ęu2RԜO~uʹ #c-irW;u1k5B2JbF	q~E75ߴqŌmS4 }EJ\-1Ev#OoD+(I d+M @n%žu9b+%Y?K+%6ɠrJDLuQSSRNgZJWLcfPԌ Th]e{S?f8I{Sjn묁^0nynCx:-R)mt6@*}||uƌŽ߀폏<.I/y4Uˌdß<J.ԬŖ^m^3ſ[~hk}Ayci#}G_C' B;VBNj591lps',rq-+M DeD
+k24w]}NA	30d~x%N(* H6Q݉l6jsHPa<
+1XhBE{ENOrD,BD6p䕜m>*P(5p?5zp6j}0WKEN~x4h7t\]9|@o?O<E{ǮO?3y?]v>==gϞ{ߛ?ӥonhWUmR _9?2:luL馁[SIHfGrϹu~뿫Z+f+']KYc]Һrv(?3ӫ/x7ALΒYcQyCcv/	yn2uI+}[|X!@	qn
+ݶ؊Tܵ^Suŷ!6n"(e8'BK/.f"-+dK-te] fn,;z\Mn~az}y<dc[@vd<!:>a'P4}REDem0fSlaʘIG0ԑ6 /kj!ۘ*(ѠƐrS#'N4eDzl-.HmmP;+S}BMh]х׸1*/pž=g?0~cV]vӵQb;8{eȏ؃mRMl$=nLNiD Fb_,z5[Ҷ
+])A/grj9LZtܕGGƘ*abwb23ŊzbSx[
+ 
+^QW-&&M@p*ݺiȞ'S!`d+FCxV9c +MhWC멚j9w$jeIlѡEh8S;).rh"FGˉHEJfjG*fWKJgzF"v+5m`1(~ebJuTu-G.17F׵5W6'DE<x A<D(b6T搏t?63 `|dI 866ݧ1a#QD#ioaI6B!"
+1^@y+6s1u&hi:*m@9D<CWYQVaj-ē	E:-,![ާA5*ɔ\_(ye+[QmJZ#).?'W?JnW)j[j{\ ~8y]Uy;t!$u#Z7Ӟ g'fo4%aiqcy^?:ݯy~F״G髳y{_]X1fJbۺ_J&%db󙸠at.t0*_ԌNj&[M>?T˟kSa
+5935=lj%~ԦTD[ hޘu+2>U"v) c'ۺęYB,2Go@/V$=w0&ĆE	خČ	Ad65Č"(Ƃ")mFČT *_RSfjf) ;n.#qùW>Q!yqI"tz t~38[tq3{i&UvPi;W02NĹ}    IDAT%ͮ2 ~(]6?>0Lh~}%ga
+BO
+i$lLXdɣuhFC#Jb^5w=FzC*>5,0(dDMO<icsT@fMs_PMhn
+Ug'fn~Y8Ǧ{ܢCJȢ9)XĈj,tP;JnųRñMk0~<pCHt|ѕ(}44c@;W2G=VǾh!;,G	bݯ, c8|v"Ha'bc0>B-PO6(v ́@Ka/eZnM#'#3 "1z
+b<A-PU<ۅ`
+	 VAMezr[h",0X!m`jJA+Զ/(mFV3Uk(/t.).CQr?/>V{Di~I';׎7~V\T4=7tYɉI5]SstP\] *6un*Ҫ1bq诒IR2ƛl_;!BJ?BƉk|BXO,Q_$!E9ηoX鲕~}|Q `,R3ƖƝ_bVNT|7SSxw43@aE0SD;R%9(-	S,{HFY&
+F{'z>I}}N_W@H`07 c9%Tvkl6OʩFɑ4Ɲ bUeRBaܻ'J۹;
+eز̄n(djb¹eѵD##)?2Jĳz\erOh6zR:_ ᇅU`tVkC룏qʔryj'ɳot֢ݸf+?3|Xط	57Yz@Ll+Wͦ/-e?񾽒\.'6rNYЀ-Ǫ\s%ڀ2	'rEW3y>0Oh-r?Dڨ:}L751瑺C*Z#38mS6I!M)ÎT ӎ63ôa`(v#c*`,p/\K ({YJ/"*N(t}8PsfdT39?LMYz"(_35I˄	3Qi IM"1S׍YX?c0n"(Rp";;\BBY DD `| ieUy-<W}*()U#%v.Ѩľ]Tb$(*(PTKTֺ۟?{0_=ΟgI>ff ZD6@k3BK	?Zm{7d~r;`'0|p(B	q老*@JL~ʴ!,=ư$MJȡ$lH4e$<ҧbC?:^oe0RQ]Oqvϟiazk6sl[[X1q
+c%ۼ%ݑa\]	ƚ $W:C<7źZai]tM}ԫ<:׾!^MVl"tX|}xPS_hcyGm"G?|R#!JQb* OzR7윅5vMvtUqoɼ%.wj#gW._1Dǃ)J	6bX3]l>9bmd0l(13rm
+ԉGe:ӽ!`ƜuTQ6jTGȅ]uuI BW:A"%tȉP($PGjͧԡ4ӮvTh|cE`6\~O25ɀхq9MdyT1\:Aeg(;WZ/~KOtwhPJ┒qk)Ǿq'f4Tyoh'@])m-.1V$)Saq͸8칅jW>Z䰥ݞqG'}q|Nb8Z6ѸOǕ"k}ù=\1@(u`DAyE4BaCPg1 `BT\e1&:GrI
+EũКrW>?hîxlޕln1Bort1;TNwÿbi'U_Տ5oӗT'>hJӼ(8bE1Y<51u~n5mx8>^<OaH_aX:T`Hzp*HCLn(2HC<dg©i``U`*P]	%A*
+c'SP["n,!b9'a41F7` l>LY Go2]PX>,N	y(a/j}V+LD=h6GMU5+ǹE,LsG5.DH\?RI2m-i-.`]g|"嗢iqw}}}/}6oDeiob=)*/WTZm)ѢX3߾#7LM7+NgJU`;_TX7Tů^IMG6_EQ\]cS/V)}Hk6o	),f{W¿p;&Y'V;,Bb8?n͚a~AM6'
+Y&W6j,-4JMJQizuWiGzz1@z#k\,[N^W%P@%l<~Z%)xl\32mTim<LQOTs$9VǹpPwǡRJBU&GY5m?\#Max@ڦANbsD.kvK<ֶxn>BtIi_i?W\sU/s]+0?_kCsc5k|LN:_-{`3&OIv1o>'qۼ10AB\R^1#kzHQTʊS)R調gGţ lvy&o5@7QNJsv E,)+lՌQKCU0F٨`1>`deNbrlKd	>5Գ P`~D2(hNRh;A)I^I_0?3/츠.l^Rq)4 AGjGYYq0z\N\8!cܳcQ1hm9y0t[V߰f<DзLLa;~Q L-I$d!&ęO>Yc|!4p!\PQeU$]$].C	ÝDAkXPorH} 8	hh	n,-(o5@)"p@93ʰHH.[ i
+mpbh
+6^W$RB}O=vuaj}#I^(L!z9ӲEq7xYq)vP^.}soH.;M]O/um߾} ٳ}  ַuu=ozӛN=^J%˷:RdŦe9}cN(V8?84=/$dS+ߩ>f]CﲌkM㷌-wdP.Do76<\l6Bشb|׽s|caxXL3<A z]oKm.8)3z:78&JU\aCi~f/I{D.WcFJkK=+tW3L,WDUb$QP%CjUy17KFM BktuGTm@N;d mD_?=TyxXݔ0Nr$M4V
+e)i8HA%KY\Unb$ՠH_<bҀDZld.bC^\ !'d/L6i+ϟA\lUadXvAP(Fgm3D_1]^p()Nњ{8+Ո`O2\t.mRrښyG^񕹜2\8gMvoaFϔtwRPHT7i$\,v@Rp(}ܤI꫽SlMbic6E;J\^ݞV3;r@e)Z9l<W0T*' &q3)-	: ѹrbr`?"ņCiMU	ɊA!qDNXicƽ ɫUgl^:!!%\ZǼ|`s |k\آ{G)Ic,6?;:~}bR.]hOns6ߞư}ԧOjT&%@.%E(	dCnq8eP)y{M 0$m@[X	B@+aYfpQ;|^T nE4BacIvn L 'G{UY@k,tDI	i ϸUd!f^ׇF[*k	A"ɞG+On'FF9]ic۵v8yz[n+\|[n}G'?s=a{l5mMI}|7_pxE+@Qk?bwVlNm6m7)SNcivV/|TF4;k|{JUol%c^yy]m
+ËfBj=O	v(͟16+fEi'<R~G.WM^-h2fY,J]v<'<뇄#sךoNlJUcA20ԋp ,釗dN+&qr/ydyL'8([j/b9ztmG&#9xWudPНT,ZfS٨06IMKl!fP?0L.?`f0H"BI<숇f5[smj@Eų8Ɏ"FW)&٣ާmT5_ه7r| A|G
+5jVO;(ء9׹6^T7H $|TռX5KP2P1K4Lqc*DZ~sS.Ohat.K<≇'E6鱆y׼%Ϛy,7tAj#."b!2ɷڢDsEQa,SelP{"ݜ`qS,ķ06I͉yALHw'|pI>-Qh2WTEǤ*3*|&(6&rNҖU7I/	DMQ^lnN%\b^LHT-Z}9{_?KE,|R8ޞ@}2\iu)W%D~DkpdhΝ`aqŠ	B0K&FNpJy--
+V1<TV	̠,mG QDH Ea08BQZo9cgc8 2[C܄3
+A4"``c+eA: \B<@4 ! arC[Q?Ӄi>5U#gpݟVF"bdy>]U}ꫲ┹J5GN2H.ӋhJ2/<3`~$ok(
+1hN.y,[f) o7ljZ#N3T^`W~/M'Y0_ogWz&mJ_B1D?&6JJ<_Lk7P.Wq6똷uxQ?gTk\aޗb@)d RkKkɕqO&7_0P2*"@
+5_D8d"Pԯ%ˠUM xhd89w)d|293ȇK&)gg[{L
+ I9Iۅ/!	HbPgBR\)sbc"+P##|Qs\dFb63ȶ1u2aÌvhTN;L.tF(huKk]vY>9O-eUĖxܶ~FX?K"` Av֘x 7~g9JBۼw0y!f.jع{<ZIY(	\ }wY"-Ifʠ-|69иYP 
++r$б@_.tЉE*nXX3)֔&6ELL0J̦q#̕kf|-;Yl{8_'DЅDZV"au}Ӗ˥gҮi<[ i$酄$wX|bl}(QLk_C<,PB{QЀHbLnBr]4V"ahAi*?i Vy YChFD-#셰Q݌NVcp 碿܁/yFwTgd%!\3ligtA5(C2ĳ1x@ـl>᥃d<"U*0[I" ^AQx9\=maҏӗ:--źatX-i:hkB.jPZW?ew3yO,cWΒRRIrv]{@
+Z4lF]YֲSڔԘ*!J5$$!Vrv<˷%ق-aO,\#XJKγlJAs)d٦$EO4?0vlj׸V0SHIN+u0?C&rcBe&!ZY 6'fO6%!sƺ]g>hhR1:
+1oY.-P4ceBKOK!)
+BiQ+CT Vb$_n?]#>of]k"1iXzj-$4G;i{\ȵmy/K8m~>k]rG"k% #DǫoZ|Jl7R4/[boOv90jؔfs6y77	v,ʞg3:0SR5׾1/j"L0.jO/[Vky?4\v8	|A{eFq~qn?`A!hJ4#\k3]+!e5ذ*Z3Ri eNv;tI,NlK2I%GlJ{6,`3BRT %\ٖJ
+4LUюe]Є`My#:n1(R|{\I~)GMcZX~{_ݏFQʷ9ԑ7xqk-U`_]84rB#´6aB${s&عg1\koT    IDAT0+(ba!T` 
+IȆ`rp#Yeq	!:tҨj#P?YVy o$=PhD-PZqd!E#	Pt !\1I0dC#ј<0md	*)Q<J{uApG(Oƃ7G2@s>WdiZ{Zo-3iw??o$V\kIyQ2Dglum"z^]qzi6ddiy؟(Jr˸{06SXj'Pri:3lJ{mAr=h<'YZ$xua~8;ǵ~)~OrReJ:xt.ŦgJ%uE 9,u\жBr~,GGY PI}} a
+YgՏdBۏdb]{Z.Efo*dC/e;mĹmCet{.W9ɪ1w4^Fc9qH2]^
+5ɰbޙAQ&i,y_;~wźҟ`GVk&;:o_gT/_bws5x^LHaf!';ߗ^~t)H_wߗ_H>jGU\/ox/Ulyp^_Z7hq:wjNW5f\K$	QYL^i({sAtf6֕/lE%%|Oѳ@zP;&q[ҹ2I9t>_/w%rР,5Y..4rL[#9@i6X4?ΟӎR8alD i-B8a]qowN^!AMgZ`vE.I(U}?zJQ$h-lM­p7!s09P
+Xe%vqLDKH{c(	y"`&c hA8zX# F	E栿8;P@"m%&P("0܄]]0< ȇhGrh )P$
+z1}JGI@cF2@BJ"Pd`ql{!cBw*2cZò~EH*ĎX\\65c۞w?xh-꾢Pvw3ϫX9j+%:7)MM^zՎֈߛ^q~U1rk#$IlįC7vF_(Ց9\ǌivfΕ/nk3hcf^I{~u4wy֍\9s	4{h ~iѵ~֏d8jSc%Q*l,n_{<9cS%@phr8MKL21铵C}FWienQ?a$,Vɶ~'zLNg&: `r"ɏ{(FqVKўI UZeL˔hըXh"/W\դ6GbU1F2J̻v	)Ź ˵lǏ-WOFJXH+H\ %6%盌0yEv!WrMxZZ?tVkўcis#$c&ٔ
+9/[9~ns[8mm9Ɲq|%;R
+@%a$J^Q./N͋/lGkǥj0:Ɲ9Q)l+Ucǆ+wNk'*NR¡ AP)k{u]Ptʮ4RFe|@-X6ihNKqH9A!ALd+U1gnᡴ#+4hKMFNE+j?3/K<fp6m>a%ɋ=Ƒ emKpќ_ǝ2z+ =Fs/TQ_ KnG.!qcX# jrf 2IPأ0J;RQ`$z፣q& $yd}hf_N%55(o Y54p"jA+twD0:#hEt -ON@Q'ڈ P
+%aXk,	C zN\T5G:5Zcůŗ)0ēQjBbOA|!|}_
+7p#ʲs[9[+8:W; K_}GnO)1TGB+og_~Hb n	G~O>pi>EtRMhuإK\օ?W.:+qA?0nW)|%0Pswj|IbbʦHgl>7:R<6NVySN}jˣu='LSv߮32,ghc`(9{eYE\>LKjLw$Ҥb<`(虜N'YhAD'QF/|,TդqWTl䨠݆=kC<[3kb\ixıu1_l7^Bfu-D$.Yڍ_?^zO^lRWvB$@\qzqo"$i4%yK=:J;hO
+Ƕgn4~3۾b2m o]߉l0!	J;r`qv!gmWqzQZƫZz<0T*%	 &]tD[42i`͢<(dtN=>AZw|:b0:)#S}}%2ݯU9ک!zf@9I
+Im4LtR#@ǌ݅M6'cݙ\V{|g<J~l<LSXX[Ճ譀fY/rbY  H(U+:y<;	M	1E+I	F"M[YG)ׄ{"Ck.6Fm9& =LoA҅P? a("Pȇ A܁?	¬3ޡI	T;P"xyV!,IFԂ7f"@Q-$X50Yd%Qp	Za]ԣay4@wi%Apmo:HB%z0_`[Z|߳n$$p]e/mI_(Rƥ3~wgwݟLn-W+뫕o8#1H"iaUk?$sZ##'`v签 |Cga Ka_DxHk:As^!TǠ8:\#1CpG GkKE
+Bk/yg_įL	Mv+V|Vwη5SK{&Qv>=Ǹk^z4zJ0?bXiL	|Bihcg(LAYu((CD]uޙvScSrOE`i,m$a+2l5 MuW&unش+&jxPL:hjGD77+MM+os5k9%YiFպ.)Lu\ް~d bݴaR0ڎ}Scxвn˲mi~f^bGFjZl~!L^c'䵍;Ma@)Y%ʞ[>&jm/.vtyg^l(~H:?vXY55ڸzvxO+;2H.ox"$Rr||al<sWD/31HFr"dϪdJXVs[jXa'SYA|h(3zj}:)m*1Tg*V  ᰹~@|b<H07-+}p1l\:~e\BH戇b+#׼{]grU^ި?+߻&^70+ i'z8c7MazYa['_) OLf# E"Axc;0K ZF	Z;HT{#PO9 è!¬ ` 86v[-QCj[08w %.L#OCo8*@( AcG pQ6Ya("F#Q_< vqE
+pZ1'"	VN>	q4_yk.(2hKbSoNA|_L}FW_!:̲//$0$D֒ha\hL
+$CxEdew0Xp'f=fYdy'I9?,Rѕqn "KĞadͯrvx8I<հ>1D4b;ǹ(:Z~X
+=+lW`f{MqX	h(߫o'ћbCRic3eTO@??=+U}s?ߘjģTP+`qi]"jG?TϢĐxNlpJWΪ_X\lԠ1	KOϦuIϪ%:Q&W@ʇkYkf,5Wjbq+{-߼t3I]kl68rڲh/2P)KL~@AgGɥ.k\~ǱnS9]ʊuZ:#Z7rm(zV%F/j2J_b}D,{!b$0{K_e!y_h	ɲl}r1ZYEvR1 ܵ(Tʟ˴[=AzY*7DVA[y/\ky;#Zi kёG ZVϨ'g,D2G
+5(#v3QֈujlRIҎ:@_}Q(Rb%b%B *'[[]ɚIb8ܨ`1YbG^ƃkJճbKQ'$Nmsa|Ei$89v<Ci2zVWa OМAHODm e&!lBVi$`](*"T{;a*٨*-!#CT.C<n"ΑLY-!lm	p("QP!r<@'e	CtpJp
+Þ ybG<[Uȕgs~w@Ivn.WR$Ŗa|`G EWM^]<{߽} 
+!v		mNC=J	,;Jc.(yYU1DЇP
+JB*ϯZy_zDtsa6ї	#pʯ鶟G[oB(Y $ԲT!!3<;7KFrlTݶy^/Ki?ɞ[)}Jʆ5Bå?|mܻ84@]P*י`Z`qw;]bj/:+.uAXeH7lE=2-/{){XTə"cd[KC*՝zjBA<ɔDn[~º X)#Id%lڹHreR3|Nzr>'y[?}y7_>j>57ԬƝ+\cf&߫	RJYntgjm)U-uS^)m{޽m˿tDin?캷:-o/yov|3/N̻jP$$NFc+j/f䘷yq?!rMfㄤ}]7H3bc|quS!'8U35HHN;6!JkJI2n6u2-*bT
+-b+L' R=DeGXbK,;ȴSVɦ 2y5tP(o K'դ`;V*cQrOj-4D?.;ƯMöo?\>Tyhg3ZAxet݉(͙^n݅\92qG0Gyn@+pJAKD}BNfu2TV@+Pp	$ˠ%4zOvS1|$`aTAM̂ʠrċ'bw7B9;{-Uk3V]խhPh	!	؀	>dl08A`A"B[jR{+U\s4/juQ.{^@EqNRz=$/AlFpy^)<L6A(04I"]|6Ge(		+)Zܮi{tGm,A>`u#"c2D8!>\,'4܅)	+urs[̷ߜ#oϺrIHW1.JC<_W9T#P~."cxDpp[&(DRoי6~^oa )0?!JGʃ#62bB "62$l	[Abx0|K|P\+| ~|e<N/fER͵6n׺5ɶ]1ed;K8*HBr+PZwEm؟4R
+/*P")N.Cp:
+N뫃 ¤K*Lu5ȔN@ֲK7A8tQ싔\3%{gЖMT4qk!:t((?ݠDXrLW/7Kh~Ͼyľh}wL9zɛs1'oNS|
+>nY/d`HYJaS8Jwz[qz6Rʖnp+WwONEן5GAv)}y6ɶm qӲ~&%4vҶcUR4j_XR]e=
+ ާ8;4|Vn~5CTMKE-[29Yb"Dv4;VTx hm3IaY _-k(B>+1/Dj/f䍣;'{|Hge1 $kEk{~5r$=SJ4;^,8_˲S'
+-Y%AVϔ(~jGG&ي!vh,Z8foBDqLSFH@u8)!N \DЊWC/~d
+ʡ* ]H Qsւ;F-̐?fB&0+(s)i4yAfJ렗P?*n nDM ¨bi?qpV}R@fHzWߴՠ&!d1>*,o(En#D3`,,Hv[FkX%r7 M?\#H&_3G>f!cjx
+$>77rJ{;DЂc-~r45P)~똘R)	( %*LJ!ϸy&}$%HJ.&*u;@Ђn`W1l0ܿ4LΪr- y\gg 4ӹ.|]oe)WfOĲO8R     IDAT<U\3/Vӡȟ0Jz@Uqmg[7/,S7w(*fӱ
+[b|ڴE`$*scغEzFtI9mfE?rQ3iNH?e!Q&?8}FyN?ff{azK<Cqbczv[S4S@i01S{ u_Ro}lGtّ)[D}yA;-[jom$2t{WhP̟g6)"L97n&َU?3i>槵O,ogۖvfZ$ic2Qzx鏥RDR%RKUR`92Bn=)f8,N"YL+،X*&sF3,$	TnϔcѶRO/19r;y-@t!4?%-;t.V1H~Ǻ%`9;n$HYݴs
++he!	!%tYȑշrACPe:&@܅`:F	vQr,EևȰ 24Y g`,p&!WCH jhy@C΃8	'k CfPziR@s7P^i9D0f@8 ѝ3WaR2
+6"vI4Da{@ n &baC/VGïg|0c󚅊l$J^O.el1c6{a-kWqvL)|zvO3JBLXQtVaknp[s1яXyhw·{3]oG@B)g=p㻸WNJ~h9':Eiañ&deK^{4Q(>M(:ut9!Ek(E\*px<'eud<mjl69#T(I,b$k,H(VJԵɐ7k9Tn}yΦIIP91Bh)=z"8MRʔUb_ؾ0eH\iLR.͙re"[tQAThީ>#d^nN7	=?.?nN3"Bbq;?Dڭw#P\.p\nh?\{eF;ͶsW
+#"vft}U.x>xRΗ26_kqHYRҍ]{P ҵo @8]gs1AK׹IȪc}_*h|`}7#E㞺ƏET3nr3e2'4U$V(.[#t(_Tp0 bt,vCj'۲e4ʀg~@)"'Q(kiǢ-oWl4Uyg/S*e#@7!Ήs&f3<2qA؅B0WAt9-010XCP2?,F`"C szD
+c2C%`6:`04Y](nAf	m9
+k|Hu06!fv@{aM@&0!"ˀDD90
+p'yŵP 5k*Py	d)g"OqW'Fai"D
+A"RsA)DĚ(ПJϔ
+iK0?֏,\c&J/+},ڳuBzP=\AIz!]cZHbk$U*Ki
+2"ϑCc'6r?1b\B
+HV~g%MaC
+(n!Iq-s4Li/7
+1R|oY+e4!e-ߐ,F:7b"kb&ŨsUQC446
+gTiyS=TZ%t[4ENҷ*HWɶگuLAjU6h[@N귲27TV"鎚g}bGHe癘ʵg|^^k,V(mZ!Gmqv7P޷d4;Z6^N:pw] ,9έJ<_'d4{m \}|cc7p y@vc޴DtlT&'$_jpϺ%Jy'A%rv㫤t+'b?`}>ĸ)]ݏI -'$1a]'DS\Frv1R6Ԕ/Y'@Sq)r|ď50i!FDبd+ّ(ZdHz.kdSZlq ]>2#'}uާ3γCI-ϸ[cG]_&|J>E8~SsAwY6lʳgİ(>#:E ꊳYQLGi3D(mC @BTl C@uPa bX AI`M.!Y5QVDt(3`&2x	H}8HdH	( P= U`0X5tI%P5`9WjHC49$1q*5H%4x_iF[J#h/dZ~DNϺ ukO |%P\Ctwӯ[O=ݽgNrdi]Ⱥe
+1e-&yuk\FHX,t%9EІ#AtIB`pJtVm`t#D{?['@ #KV"Nn|3J$Mk_OH۞-HÆ߄f @N)Xq	כ08c6Gхy64v$NJ;*$ Uӈʒ/&gxmF(R%TB80#SmׯlIWPLVmLm2(9La
+%@REq@&LY+:.?bQ@$KRFbhd2%,eUgG[5Qz~1	RBV)972ڈ	Q83@Hg	Y̟k,(_B"ηGetվ*㚆nM')MBN:!aZRt{\Rm^2^P/1G;|6$Wmz[]a)Ny;])l>jOPsl(;3Wdݰq(㑰vR;T
+]-!9aBH<RPmyxmȕOdm+$gd똆Vn<eJTI{>N-h{3N)M7~T<59}࿦^s>+cϯYCD^ja cǾZx!qyŨPEsa{:3+L9<Cy̀̑tQ\ j9(18w]=
+^#ZY`?
+:{0y:OP%aNAFB>@q"Y=PXgd oނiFtFaB+&Dq$mo-A&hF6@a
+Y+ 0ac)3c5Pq8*zL,-sT~a#ϰ${U	B?X.}3Mgֿz?JQKǤWo_Wt=4M~#ʪ%鹖uTZ͉B_yOI6*cﵭB"וBeK(l@J	C70ltf}U<ΑIk@Id)L' 	)kot˭4De\,Ba'1y~Y"03e@[w,͝Ll,oRXOHV.}ۿVk+$ֲbÏGXVHA5zQr"e})2DFbj[SNx
+PC=̈OTMbkDšha#u"ovIy#cET4B*k/A.Wސ|5BT[ړqv!*StgD9dnxm'oZϖ7IY5)yHO)Y`c4H%ۄdhZ0>8?ecAwj|4lo!KoGɡ'ZQ&@Gҙ$9<t]!(uBbӼԞkODt6{ʿKD'|Km	Qxg4|=6%0R}ҥ풱QL%1d*6HN27(ktu("R(0P Q~jI3=[uxAz?-P^
+5;_(Y7AMۧCo4554YN
+5o0 P0@)AIpHUJ#@ ('`0\Q{+	 n#ڍ 0!shPTk
+|#Yyd>u$me	%pV!砗,wzA5 5y C1Ur7DB+ j@{!d! 2t<`v-EB1@0mvJP/U5SrVza<24l
+ʰzϒ$؏ߥYwoUL_t]>?{6ng}_/&buZ7^S(~[#	N;D P:4 Dԇ@!R"Oa<m{.LG@(Xy@	 i0@MGJv
+1]XBJ<]^L^T
+23RJwKUJ`nf!J^{)? 	]͕ޑstԦf%DZK}qƈ~:ӦeL6fho10zl_ #s
+thяi1p-Rq7)'ډlY#zH$P6Q/4M8, V6hkv;ÃMMӒTJBpCYvj7\L'ٙ=菖϶ku>K/P'EU)> G0|`y/iw55,g!j\$s	Ώޔ(yHqrcֱnյ纽u(49MS,4"d-OaVwz#S˼ݻQJi6R:SeeqRc$ϸ4nv|ET_F} Py
+LT^(J4<Re Ur:eĲP*<CIek!h{&s5#1龨;ھR1e(;m)mICeiS'oIMc,<Gp;`n i-Bdh/=M.E0l$}G@9DBYj|8h#"OaA9RDAG҄3H8!ct#C2: Bb"NёA9x4wykiA@F:g5v0w-D~ĳ^10H1rVs	ա!B$0J0<P7HBm8 d1,E1vm:4a c#)42"4]FoJjӸԞDNFQ~ z?#JN|ׯk=??mv5^p\rߠuK5;M;+ `RS7h}'!0{v0XviXn}f hSנ(r$x VKD( 7QAg(B܇a2ia
+^k=0f}7J(4m
+!Ǿr0sE(Cz-orJ*77hl@7_"EӶMEˢutLUj)#CT5%EywC=|ݞ.S"_ N%j X#[ݗI+J̧e S:-~l;!_*2l<D ,k2oԼODَy9dXc}qm$J.mv>dgvy7	HY]3ukަ3ru}qX۩%TiR;`C7f6vܧpJ`y"m 6iKi[	Ćmu ` JW,g?$
+>Twhmuk/kNVϸ@߱iFI`	౮ǌn@-j'*nݐ`iuHɣUxؓ jZk攴"5~_#iY4ŰZq>\/[Lv?	NR	sڳn i{*i1~%o}ewKG'US\CrBQ2~I0md1]Щ;= +Fq PB҅SG_IG`֑PzZz#i!|69d}!è!#:d}P90F@ב4=pmp m "i o">o3mHPىpo2zy!tJ 1BWLdz	q`ېVFa O0ojm$
+8a`KyCmD b!})`ߦaNGg];MRl yDukƎ~*o/}K篸O?}ڵSSS6l8s뮻NK/3gm)k^#F2OˣeG\k^q @x̠$7"gX^xQ(S]B2@a!p 	B˗qvX	'_aA1cR6L~A)(bi F6!	%X4"!0-,̼S)V,χ}ʇELxsV\~yIU,>FWRerBݺ]gKJP&Eb SbUOK		ꐑf@֖kaDTɶ9)pb@PP)u(60؀#D% ǲL@6z,\N'\db^vy'pj&[XN˳3!| t9vD9J/j?)j4;#=!Vӣ bȺǗq8^a"M rvոLFoIt'g<SDz,s(YW^D.i&0!dtkEٛ\yi" ʕg?iPy+J.ĺ4?@ݯr<Dv -z==L]3H^g#HN8+7"+r1G%5ԮaNh)T~Vr^Z/0y\}~N(-JH)PXOu'6-6n$F8M~ܢ]FRcyt󵆶~Xg5~ĶSA&S{Ʊo˲MY=qm% z{d̽"o#ep@.A3OR&A$0KX|C`B`V!TNCZ	}Vc    IDATc _I1Fv̄"/@/!m¨*>B h 5ǉ;0DGAT޳H0G18b!;j:'l'^lH63Ћ\ag!n*C8i`N/otV UoD 8CoDzNHQ2ֱkOgil|О3XW.7ƽYq_{ӕ_O}W3_WC~s|U1v?U}\JH	?ѯ:~:ѦeyIӡZͫ'4NxU(	)u/덢u	1e8%h6@̈́f #!꫑m
+`yn 8m|5BU!RIë
+( 2t[epRx'=!Pt5$˃_iG*d
+4מ:0Yl9DarN
+8?:LT4',F",Ўn/'*dDTd$6|^)2%B#Tr^HTT.'#	=HHH
+!e'(I|Ivm_\|p\&&䵖G)+9q.^A(D*6|C0`*MY˸KןaxG	(y-S |Re?Ρ@{i>BgMs:^m28Y"t,ۤi{s }h:ՌϘRӖwZY]0,4\)(ZϚ#vMlVӞo_!TVI/ź(^SPL,f"DxO|Չ1/3cճH)
+*?!/\L*iI,*FdLZwBDجmCc״{_^[w\ƵbEq3L/ZIr>ǅ+w	/>nhPʓ٬
+6*]jG`B4" r0Z˻M!j îA$+2Gq3.HZP9DèZDp"<aǾw-dx	FJr1?a0#`6t	wbHN@$P9fC!{qX18x QG|D%PyBXh.'t  naygj l!Pv ~N	~ax&@\itf<5G*j_:fod0H.:F X(77K'|*k&_Ux\$%K R}]$iꔆR t@_!Qt@JutY7TvQY,DPpyzWR_F$+WdK#H<Wv@ 1sqO[J"|H	E[t=GiGJoj>V2oWx.&?gb̏qQJogJEP`>%I(RF.IѲ1#HT;T)A;dmO=^NiRFH)p6I-TUF+:r8I}F2ڻ1LΏ7U{;?1h{r9ɪsm ]vw4ۦk/%Z~{q1~9>0 !:+C'xJ!BvDB.V;Yx(p*Z"8Z^,A~Ni(&_[ k4BP4MtIrle?BiCize=]kW+K?gdڍak EIH7:V(%P,*XђHu4.,PwV<O+KFh-SIȢvd&YU$Q֨Lͣ?gb5rwcXl>(dі?q]{CݪihwN )e
+?5m MNw	Bݴ\C2, $a@96
+B|<ANY AU? !"DYrLdmP<i)Hڠ£&At `&̀5{|:)#UD t퇡@d>B0
+yh=g56 fa@
+aYCt3e)4cXEd1AAa$ݢi"f'+˼_QtKQ_}h:$eT!I.EV]{|no|]q7x]/˭V/7zY|U''wܹyS/7Qz Xn28,L.-lͦ20, ta$ř'J5TC
+4)?_-aЅ;+ff &a!aUTPi)`0D=$} 0(!
+Y5*VOM@מJ\:+~G`p1@ Eh7z199jӸ	
+OWÑưhG./fz3F[dFvhj5ſ˟07U
+pX-7䣁Z4 5X2|dJfA
+,bV?hxa&0h4'푘now?(JlJJ؈`$+(	L1t>^=gi(_Y>].}b|Z5F;E;ˇ'7k:o&J^+ei`ܷwp6#ӐFh%]*Z-#!%gvw~h-OI4&KU2}-`-険vH	J,sv,Ίҋ9]%44~DxM[ge;%gygRc!"yxd*G$HcQ F@2nzK R#ӈ1Y{6Y"D044&oo! E1] mY߯8U?GW)4v]gwIz^_yC=z^iIv&>3
+g y$}pJ{B+pd=h.	nè?H>Sy
+܊|dtjGu@	8K KH;`E(yhCh*`}PYiVS>(d?P2)G"{	p7|snҒ$#!b T
+(BJAK,TDJT^]$4!I%!䜜fݮy>}q-2F]pxk><hϓ1}tuX5$bH)3>.H2^a<C8vc
+yf}\eOm)oDKLc7}ö,CP5!Ʀ3g
+5{<|ϷVAx㍿+W/o׻uk_WEw_W9ro|7|/]dtRsOG{ȫI=w7ɳݥif	`vqԠ_9yF{7 8.n,1\"nf]A1,4aF3
+BRg{8KSZQ6[8&(4z7/
+͵~z:}6o8y4Nqk6CL%JKҨ[M!S57+3gJaEy]O=16(LR=	/$V'z@b2griNu},(YXI!DȠn'EÓ-AnX|\
+]%+%ok$"W(Q}[ԶRfտy4NYs s;{*K@טʖ푧jl:/=p.$X&` YlLBS0+in3,an?5$5A:.qӿ;$(]O+j}ƿqz3,Vqz]`BRUhe
+銼WDL8P{-hES:+9e3[f8ˮ$QD:7!D>X_[^Ѳ"b*֙чjen!B8S3:_X\zw/w<fLWJ«0L*ȫyt蟠$Qd%TAcO0\îi^IIŪϰL.(Bx!w,CA6&8k~4!v"z (fXMtF|$'`u`ugw{>U]d~;ɦX%ylޏ]is=2.7%VS-::|FOƔlZt$2NjQ항8SsJS#&]r6G|#%m>#<rUW}3߽+}Ν;?r-A|_]wG~GMwϮQ_T#Ql/VØ,;h.
+CjvSͿl<u40MLSg^i<lY
+z[K4Ű?d֨IDS^rOkEF}nlX.L6@`H¬S	fqtaA?(Jʧn,~Cwj?/K}Y<I_t5{te6KFޱ
+PZ9r2,tE:X?WzMyȢ2ҏnQ*˅6^dRdd.B35Ho5GE1p$;/u)ywXUFlS,9\ZۦՃ$?V~e	վCnI9'P/򝻻7iRi8~[WyF(Fϓ:ݲhfE.q=5s(UԶQϯ.bXDEP[NIHN4IV,_IQih,e"Y=f#4i.a^u0	v4溞((`QvS<Ύұާtb>3-Y2rltƑOmcWv5l}JvX͘8cl^D^_T\1Xr(z)@ӹ413df?<I?uf{Jמ[}ֱ3dw?NkۥxTMUOnɎ,o0-@Z$}(	GL<-٘tFF`5^`;hQHQ2Oh܀α&@XA#ONS$TS:/StFREZ71a2;1,"мcрipn
+f	Nd@6%	m'X%hʉ)yFuDk1\<4fؿȴQvQnfli{-ٯ+]=zvӶ6MG$4hW
+]sov*I{o>yC#y2xi8u?W(GOizCkK (r
+-K#ixðX;/!"6[JxJm<°hZ*Z$@x5&TI&d1	'°P@+|fwM3޵S$mh]R|ʥ?BivEl;tZO뜽svZe7+ډb<d)g'hk^{=BUK$NIX7Fz=qH?_U6xβƺX4˦HJ@ͱ,d]k'Rr:1EM4hc	SL9TKkOEɭZs>8ai_aؿ:_]lb_8j{[L>Z旿h'>"
+׎V1ͳ]Z]+Uͯ&0a"!p+cȰ,6O/՚kiHIG@m)6OtQI]pW'oJ`+;mڲz{PHGu3U
+o 5Sβ^Ow[d2F󶨺Tbl,(hDyQ\*{*vw̼֫bd6Ǜ9Iopeg
+5J8y.HnmPX`gK8U_;x`4ͱwƧܵyհk~$DJ%0]"h%U2<v4m.#vbu*qm0\fǱ*T/a]EB]ɇ&<.F^tՌGhYs;	/ =K|p<5>Y|΍L SbU'`^HNR&R1:t鼐yKإ`[.`4]qx2	Qyi7f|T1KQpA;f\dous}_Hɿ+,yE79)^9>7
+EQt:\t:[[[Y}{;;/R˲	|w3{0B+'Ok5jL7	E4Ĵ@ hat<vpk	Bm%rXn&#k[0ڤ2ڇH'	ey4P$Y@0W32v0,G8|Skv' о}4~b ٯ֝"C
+Uou ;tzl]QQuцtK+q1Li>$ooNUkr'L+CG72oq's?R㺬ZmGycgN=XZRܐ8~(]qz8׎y6WOctjwol?rcg]KyqPܻ҄gjK>N0-܎;)BFeytiaڸU򄵓/'l{X QwhdrIc#}}İP9 0LZn:8%`[~e;	+k3dϐFP-Zq4ŬXT'U;6*fV4w8Ui[4*:6*?g-Jl%ǒFB[Kvw-mϙQʙҖcGҲ^>y|Zhm1(YȊJ{qd)Wqܐ\-cA};5}_nAYs;G-"=&={-Lp 4GLyU!a]qEX/f^&XfG!6KIb/3')d=TQ^bT.|TerV4EŘe2{(ftYf$݇U?QE6["HA66CuJ˄T2<iƶBqdH0,a2X`fV^nKK+}%E1H=IBCnNz%7KٛӔIz)\U,ٗ")翕>?W?3-//+_m/A}<ϻk_CnaJa;Ų46ߺ?gӋwvW'h3s6-F9kOjB.NXi7-5v$@EM՜uY:̞[(/$cڎ,    IDATHf<YOG)JQ݃4qJqr+g6B`{E0l8݋J\7=/v5ݿ}\u7d+@զ*-,k;ҏ]n_tR.˗vD=5#^\{qCCȩ/W/it-_̗bJhZ#Wq:WeyJ{YÆ[r}}Ӆ/'_̣a~\QIpI|]ݚBDohU52NF"VxWWg|Wѕte`<ūX}vvs/IdhcK54q.4FiQ_ R~u["$:MLb:{séWI((l$1qX;J'֞%7KΧ[_smf[w%5sM*m'wP`k3ݯZ%(-ŊX]lϗ\ڝ"Rb3Ag2S(}q3צ,9c4*b*D:KoNL8QE'h|pi9JB2tHQWyFE):+OTF<tIg(2aIHtUQiJ{&`.YwcǙ%@"&:ָEHΰ1kd}J
+&>CEd=Ozt)ҧzXudkHQDGAboP `0Kd#}A##2CEPZDTw2b:HtMCKQ9/J$7WWԲ)74,-ή,){vΊ	)GmO[ʳԷxIFZ-0?tݹ,=^r%O<Vw-Yb6C~b(}TyiZ!fcClaoi#:ZSEb{İ[]Tt0lg	#l>497ԾhS%2Z߾qTwl]q)1:[«(slkZ4wO7k=pv:PyX\ d;M^:L;ѵ^"LRIX}O<ɚ;bU`u)Qe;Ŗ~ dA)DI(TŖWQo=9|fq\*.ؘ?nʵSqbYX/@2SEI&hةt9L^ḄURz_JvdtV}ydn)R8~:YTW֟z@dxElE}TAk7@Q5ьdVgXaOКpLݵ]$II#0ֿr>Lbfn\$Ť()Z+t%+h9'y}O[<)PvӒ3LBxmQu?yLפ0knAVc&6
+-jrʗjJ"rkecM*S U-X図v$į-9wƚ~*ɮ9*ej	y*q@TqKL6i$O(-b8̟נqk0:$.^xӣq9#LJK>:Oq:.%p^DP1O0}$kgc5qQ|Qه(YRL@QԮ"Sp{ג0JBpbp;3yD=>&צq!yIar *\щ4vNUZ8氷oN,Ͽ~4}{f.)q̧foN,4W4z|U~GbZj-Dj]᛫izǹwG;vꫯ3_|w?ziV*N_WEaavFtZrA{cJpMVea4	Hhb|,2t.vAeY8L|StA=M6:fD#j;Ҁ<ŭ0P M[X[#Hʿ|*Z'O-V~esUKZ-9Lw6͉!մ饪ϝ*nzH3=DkS?WZ^eFOUie^ȃ
+5ӽ~ʅD9560,TW<9v~"wgdTElb3X+JU{?f/շٕ%+\Vyۄ*=8>:ǣjQ(MSŹ\Cl*ۣHBЪ3E#&4┰̶LTd4~!$ca^hMcXmæ<nO0$KifV~m/<9˔ΗMsAjYOPT--gj.+4l=TFZp#ѫʉ6HCt3!kk&jnc!HӼ Qb<+Kxdyzώҋ2mHmjgt3Uud5O;NnjQkKփj?~qU[}ork96Oͷ6)˨;WV>'=:{$*pJ	 "|{֔w0zato'+ƋOc6|o'vhLrLc5)fU	 b3-tw>ߙ~B؋q]T_FF8[buרYtߨ;HS|;7Z)bg|AyoT]'XcS?ǴfAkـ(t9ʲ˴6Q!PmtQ,My6$;OFP̣J{yQO{uJ6V/ʷgFNzg^s=sss('~OO.·=ԟw_r-wqǿ <ȹ,?znYkIHStyӤ>O2CLx%@HLk;"o0]iʙR]&!OpkY]f֥uqHK>0p8M1U:Hx6"Aky[M4	YJSKxx]Ə&Whio;;{(3ϔki~Ze\mE#CĹ
+mS|a+8lIl%j>4EA8'nij|~".%ozEmڲp6_[4wV͵t>AǨ2fVŰ֑i~Ȫȱӌ툢l/[䒖"(\D3qz} {AzJN7wn>imZwMt^'7/,w<<8*__JKYY%?T%`4w!-6͹~IЧi0Ŕz1|JTX9ZIc8%,di%z/*+
+2BẕĴs?ܗOOGoM5OtKsqӒ#QcΜ/KVC%ʑB_}Yx)s)Beiv'ygASضEJѿY~kV7pFWߩާtɲ,i׾07Frw?i]{=dOq-S^~BHy&gh^	7ǔ]I%Иe5tb0KL#-9**nRD>&)J/gYܽH!Ib^3Tn z!72!G|(1yib/ K Fb1j'	l_@Ӹˠqv2I_r!sxϧ߱6*yD"Li18>B&O0lεRL`drMک=+ZmkDjbs㭵oMgoD?\qVyd34\R5o)G"wЎ)p^o^{o&~?f|D;=v%\ͺ7uwϪsX?ue>Ә۞t*}K]=,j4)a$3	SA4$RnTBe!`YbqL*oyN3Yô)-NpjHp4`CJ´hbNn"%ҘpexҐ4X[8gWo1̍hTN-YrsFDέ'A ׯ_,LGF8\T	JI,#!`Gt]7K[֩if=ߘLbtR,ٲ^\Q)Ԣg5Ӣ>suocw>1a0e
+0McVCa~EŹ2Nߖd޴6Tko*?{ǎ	KoV~PkKMl,AJ*m 4*'7Hfd	nϒUlǛ'tI')iHe).&ێ1/2.#TZҠ!O[B<%
++3Y;uCKx:١#?0řɯBPRnqmRXm9~@,WUoϴ#u"v9-Q
+sF|]
+\DPm-xUG4Z^#'KޟiX4CnJ4MӦVZd0aQ`Tk}kgbg"6Qi2%OLy$#*AHZogT]ne/$:Ix*uڗa51|+J|L>(S9
+>{t):!]T^L<@Ŕ!:.'}':B֣݇cxdMBgx]`VP1ӓvRDd3EQO(J;aJy4 HCLƬO1gJ(dWjurem}?XO5~~,+vjY -DuJW
+լyEwף|JZm3-6~_OW^?}}W10dGw]ꓳ!)rTWADS+GV"Ad!YB HpJmi~L,M{A8U&kM>~!Q)*i1](5q*5TJET)b&N@0bܣ`Xא&#0-&,x6ϋ}ZZ;DOWSb˕0;3嵝$jV/P3WJ|UO/'ŭ%JgD֐UMc}KHg˿ZbgY,ėd:RGCXQƖVzd^[jٲ;I1_)T%Uz 4m߷IFmZ{Iz]XXn4kM*E&/,aP֠\1=DCmT]gIҢu	QnTN2!aNQZbxE:EC'ZW+(EaDSsqq9sJWJ_NRkRpRGmt_[eRٹ{m0?/V5`=4dkxԦP?Yb31bT٢jSZS_at}XZ+F)c{֓J{%Qrk][L9US6nim΢7\1ܿ"ϕ*'ӄ"{h4l~v0X Rnh آH|yg&%BHu9zObh_NE>qvޅ!IWti	VQ^UDOfeػIN`-'[%b-2u8HtAJWCt{b@:E%ٔGx;6hT$&^Jt$et<k~U&&}>)GoRni]|_G
+]&H\Ztv(jӮT]k5|:aQ?=v磃~}Ea~}?w~0R,&a9[D#$KQh_lm{
+%r4}xUL!Ow 6ql9=Dk{Yq* 9H&4"G*PpQ<ETFf~ZOn"kЊp["mO`߯{
+~~JP$yyQJ92Pe1UvXtٸHeq0f)tk~[
+7ӣ8*J)33iQuV3D@%% V
+ _u`\:1$ k
+e]%Ҏo=Ѯ9VRW(CSƖ"ɮOYv~..K<YʱN,Pz`v]*eL{i%
+lp|{Mf͹]nVH틈H&8U)Y[CL7}2YD:ш<RFg1,
+EF~ɥ>LN1L[E]"mkZl(U)iBI1EB(CLbo|*-vKVk&z͙^=mFlX[^M""Q'lO՚h+afʫHm+ez|1J1%(Uٯ-oV(\}<P9M8L+Cߔ4;O^hʤ1Ԥq2N!	@MFi"Ep~tvRĘ5S%.勘>A
+.ymKػVk3a0ۙ|"^rQ%on>G6&Pd{9:	9gwE>fb=7GJsU'ZYS#ld;><T?8A|n:{c_q{l;~qJcN7d3_-g+νx?DӢ]2umpD5K"0s)?oʞz;sg7~Rk1p,""1_G+lpLRiciq|pDy3.l<7bp"PNdDi#1Yu:.c3*;(Bv}zVpǣ4dt@}b{:+ǆ$OCf7IB0zo?,egp^΋tvI"P:'+:U9V=Rk5ubS=ВWlW	9zsgOGѩ@LU8+1	U՗ޓ{VW&U&R؝)ݹL{Qv0BTK~ǅ6QsU>(}#Ӝɢ}}.@iEe4&EAsvc)Q"JCLdLetA0bm<!	JL @xm,yњ>Au|"!0l)63f(v:y,y|y.{u=̮1]A:KęnFn mWmcO@3Uy(%oTiBKWes}R}̕s_t4&	@LқEZSh'rr|}U'V]q|A	VVI޲
+ۥܡDyL4&zIi2 w#蘹kIHlJSf(#$!%HDX*fw)%T{8E{7%zl a0    IDATרI7{oU|7<Zs$$ 3&C1!7@ّ`,,1	$@!fuzΩџIqXuUSgժS~~>w	i!P	kQ)FL|ҥx{1|i4RgS}NaU 46޷	*^xH4@)JRo?]FWh8a0
+J~{Sqf]떫`1.u'4	ڛjGA]j[%ߏmAdp׮]o{^׵ZO?ɟvm0_]<?IJwܜz+秆d)+v\t縋iSj3^#N$JR%mXYLm;G)08E"Ԫ7Oj{<BwP)OSOL18L$#2d"C3p)U1$Qis~&/YB3%Qrj^[? S?mhA^zEB2[Ln3rK\3lArN~bJ r&3ڏ'c8U|Q!Xd:֒'6nv,l2GuY|msu\LZXOT=az.CE\sk]ST퍝Gst~2u'>S{c^gWϼeafi]V|orīO%1eDxeY`(nR~sì1"O1mq[I2"h_wp8U>^_la# Jotlf( 8`kiqzԿ_9Int_.Y{gy$Ժ(mRl枭/aX1*@Q-0lQ1n),GC>TkSr~nJR1+b>v&zy|xu{[7~M.ݪ-+5W-A&HV_gTұ)Ĥ5<X.p,WOnh, k'ݤVRRى74UЩ]GxhkU>=Gbd{;?A#:݋!#+QriE%1 Q΅dg%ȐXSב)ݻhH˔36Se)cJȇ2!wX>2C)t"CTA&D<<{|Tܼҗ<AM|o_|o'مavnJRYJ-/zѫM୓?h2p;{k~}{=ٟ={\}պ?VsAb?"#PzOpT)Ao񙞻s8Mgc+FulQɘ^L}لc{0\AnqHMF:`T/OLe1w>/Ӕu;FJ)ybf,rR"<H9wH}}\-W_ j$m"f$ Um[|mn焊"RkUq%Mq(Tr.rfz+NIk|cxqw]W-}ɱ-\4ɷ?hH
+O?kK@7,azM(MVMuѓ!U9/\Q7 ~uos/Mܿ\ZӋ_j;Ϟ?9Ul뛣uQ
+L$n{UJ4<fcnFI:M2&6`	9ʳ,=B *nnHK5+=:v MtV&:xT*װl4q<6?V*_◻c'
+KKǺٜ-Z&SQ[eQUm*b#|PT,Q0{<% EKeêJyժ#AvV0?p6PdO-/2u}yqǚ+d|:L~TVW0zuwiF7sp_%/飚Fc?ä.u֞MBe><3aO(t>#c.YJhDRאamWQ)70AXx"a	l(FE1D/Sz8qJWySC
+5"tO0xan+;u6͠{E3B&*ED57BpSƫ0fۍWOϹK) 9w'/{VrW?vfBٞ-G"824=7^ԧxSNM&Fq???y?nkb<`0ٹi~n%ǝ:o$M4E2uqnna8W)MazEBy2Cc?xSh6*MNQ93LMpbCpqIaj;LEJAqq(pj<Mu*^]G7ww+~>eKJ'l?BJY$7m痟
+4D;Y+kXh-Ȼg_Nl]U_)uqAAjSΔ+tz%NTJѯ'E%a"Ytr隐2Q[?1՜]Ŕ!2O_Xtvը=S~ᇶ_QaW6*zݏ36gumŴsàɒ+C¨CusFO.@QNv4gN	9wQdo9(t6((M;=Es Q
+08D	NwӔ}" '$!xm4)XyBoR,./GUKLVFOg\*k~{y8[Na]ّOĬfq¾zUsRCWԖ !+7{B+rT7~fyѵm~=ޤa'zk䆊,ߓ[?Stޚ[Z=8u$!prra%w|STwm8
+5E4b+(&1C#1COQcOQ}>2a`@eO`{'6!E4a$VDOR{%*yTFvc qvbma%*$VP9^<3RF?@x(wE+wd$C ݤ[zGlڏƩj}1e=Qo=}-){BlYS+ɮ޽P/b&~VoMdCt0o~7~`knGL#OI"
+8b;As+k'p}JMҐ4DB7xW[ctilbҥIn:O1}pcή>VM]~q۸dCN>!TJ6!mt5bU6!gic?aZ,N!n`$KI6N=~Ui%K@K.Ys>?b(M_4QVMUqV~qⱺ{RV5.JJ'k3]~V!jKs1+_Xyl髇wUuX<v	BCZH ;YZ./ojrb͇Ugζ^]U篃S[->4v_9wڒ/>SvJy)(R}sX8JdAIwuSYAp-NvhEhQ}ߵS%V`V'^ǝ%Z!)MM(o!ZÝ""s$=d%ggY>R[C,0LΜm>j'MW= z]^6(#_YPXrXpU~uJvMkwu"XcN9L0<}Œo-4)0L1!+Y	OJeh{{v+3qLMAƂޖTsi|ʶ<ϚƑ(Am♷QæVk^c:-+8n"CI[Y~"a:6!2%^	bpA҆At>0ʸ@"L%!x50gpvRҵOyC40zQ8^a ld/GQ1>r4kawt{)BQ"['v"#s3Q4ãXU4,`8(I<hCHEB LvWǺ믬T?-`.8j߉N?Rw>$BG!MtZgɏz7}I1zP*3Bi<5~YsW:5ΖJC}=~pӦME/:}2QKG0:8FpM#
+XYU.o̐t2\jk'n%S(yDR&SDKT"s*vFpWbO3x6JA$:n%aEL"#3{,#s2Yǟc̩+;=xh8ӵu|Dj'|8;'khgӆأþؚ07.{cŕ>{sFuqpY}uI~%%ʣ5hSuX:-a:yp3ۜֆLիƪ/jMdTћ_k/umrQb8L^kk&aj|LVǓ1Mfr<Iv©7LYmENy*R!裛L`2DClMǭ[=L{@cUvn4lU'^Ý&R:Oy;ˑ)Nh^>VfYUe2n#`E9⻷g
+|4It%u\.{fk٪ͦjisWKb۪@[UŶy,5JΈ뀪6+rrTUOse]PI=_c|jTre7qf}7ܜ@Ŝoߣ|2.ZԠK5^o Ec:O<tF9gq4/ $BqQd3Ac(N
+&P96&CtnDOE9waǿ =019JWRkIji@20APIy&Y&&FEj8mꗑn "SnB)Fg(0-zk)9n<&ڧʝr7bÖ\>"kZw=Dd_PŹh5u'*V6%/n~Uw3ϟ7 A7W??裏^7tә3g[o~-(^EĿ2s#v^lL~"p<0~.aX6;/a,dܥ)!sNMaXaA@D}>?GpƬѼFPIphbF
+[_NBRDkTw4(b^BK6plcrn5QnL7'PZ0KMb8yIù3N&|žݧti3.lwyD,HX-Pg1gR0m'wsum֤kFW>k`Z(%ZɃ샘5AzJk/¢1eb}M*岥kBd<3Z2 |kJa8rJ{$ɥ@9c40 M4f)50-v4FJ8M{:a$@3=TِdfѺL]AЈdNҡnFp[N.YiĭREhLW*]wGR6gK^16)6)LάިrִvYK_ƺz<T*8hPlhs
+\]jX2ȕRb|#kwR;Zm.Rnx*SoU5]{kb&x KgZ3Ҙa%):'0,/2KahfrJD^zOzBn;[q<LrTN֣ru{QbD$Ȑmŀi62YT.o7:Hb`L^Frk@Ź5
+trB(ȘW0^C`O|ÚCo'Eh:fJZU(ϒY=L+1YİLme} lQ)Y1[bl=4S-AnhWJJU,S5c-DDlpTF{7ٳǲ,۶}߿ꪫn'||}}~Hɶ;e/{١C?? 7o/|~ǾW{7>=◕w9o4mmL
+Y!HTd%%'O霛nέ
+N%GZ$Ӈ"n("t3>Eu?
+E;K6&2|
+ sPMaHNK9Gcx1N<I!3+[9IYLGKMLGG(AZl^h^$DFZECə~Ϣʡzc)j 骸Ĥvj #ľT\Y%%Q5+(5G4OmRlWyU05k"ȒsL_y=p/S[qofŖ[`a]:R*OtL_9RR2x<HE)5	8ef@T=:ó)]h4
+oSۇn#3TN6&8&Z1i3>
+dFi3돒Զ#sE23(ajȜ)KU3ӫZ])eu-ZSOf:%|S\	#[\1ؤbRrMs!*>q.>T A&KgFbkLVLY17[_W|$`}7WqzM\IivE纁F*JQȐ^TZU2C:D;m	ɀ%?[HaȺd\I^~1gQ9cds1;BR##9A+QHb#z6@;|c`tk ѣJW%`m׸I΂ ]PNV\Eo$k+T{Jy,#
+U󊌥37U*wL,Zx%ɏx_*;'/2N]V"9ݿl>廇t%4_7ϜXZ+EҟȢm(~=n}?uA⹏Sՙo4n<Ǐ衇gyvOOo#GT*RO|⦛n:7o?,ǿ^PmO|4$W	ǵr}p2IQ*~
+Av$X21nh:yHDu+EUc|ELbQLJiِGp SĄKx 1ged0f	!#s`3X`ݤW/gJ$q1ݏ?Z"WP    IDATّk5m:S9 cj	 ]#0%k6e[zS\^*PgI"uat숆^ӽQ-\[AR4ҍdrW?/F3 NǗ]1cݯh64!qL'׿Y0Ndq|zbh+IZuYkniL򢘟I4IM_pAĴ0]'Xr<5HT6 "\fd< 4Rc3G鄝?ϹBtE30:`#7H&UYy_K%Y'MjG?eWymy0SAPMy錼Ϥ|;3Kœ:aJIIVf"5ɱm
+!JxZkfB%GS@LVaNB3[k}K8~{wXѬVr>%+̲{R"J^iAMTdKe4r 4	ͤ{KIz3>*܅;KΑv7>bJF1)ys
+~4,~9=&;9BP#s\Ir^FGXh%|yVF )Fq2:ߠq
+23okoD4F7N_pLB%˺gb>-J=]s׬)ݯ]}!wF2qYs%z͑U͔w__qo|׻u5g$'?O'3Fo[n?3غǔm|;?϶n[Eev{mm{owKsG0,e}ܭԎΠz8ST-3X_ddA;Wm5IL"8Ӕ;3No"\ƝHr 	0
+4SĬwhIݰF08@-&k#J	D2IDs,nK`&;= ~ZVIټ&ҮF]`$'ɚjOl
+ωVEyZqr\:\sELY5m#JN=NmÌlYyk8eM̧OS;Z7Ųni+0J/GV{[ޟjͽ4?_gOiZWC?&F&w	mRo|Z$Dec{d	F}p~Zk_.2j[qjT0+D=8-L41J4ul^[NeFÙj #&4ks6Jsy [>In&2Ew=xy8_%=X:[
+ںT"(U.gWL=(g5c5|mZ QuDyTAOH)})RjZRZ_hhMFZ?b_wR2e;J^v{[wQɀ4l3yF46Җd)vB:G4& 6Uy,pax96?oLI{-R|D#9I!|YTJL_qSy1z GVڊ]}0F4~|^ V#aGN b8aTNB4~bs)_EQ'YAe3LNz!sl,­cxd1Qrt<NE$0ja4d6Ͽ~^ZVA]>߳bktn}9ٷǒnZtT%.kZ035e&>뮻moG>{[w|)|c=v=<ozӛn馥Z뱼جi!,f R]+OBJfv9]bE2ZEI[cA0!YȌdL
+$YA"f@M_*0<"(#8I} d"G:41qJh:M#=/.փ%D/X=;2ZXIg?RD9y+gp]UTip|B/fgjhA~,jvRЗ=Mg0RlB/az|Z '٤sC9͇+z)}gDMmEDٳ'r]^ϾGP;8~1rt^lHE/Jو# 8&Q+1i܅zpΛ"%43[m%Zet?K&tELݎ$My Af0vtDkcrѠ>^WhZ8|pky1q!+DևH5adɶuz.	,@FY{#q WDV7qljԉEs֪wzf[b󜵴\PT(uw|iI~oym(}c9{_$5[KYle-<Fc!`dqh@gi^n29|
+3 aOc1GvdJRS KDHh60<~7
+RCP]W1bBX((!Fv]eN4PW;LnPAb 0KUY]q<,E?To|Aضn7jsn֩㨩/$e3{*He7͸kjY(纐mLTTum?}Uɓ'?>w#zի߻[^_z+>fzNgjj{ƿ=(ܟ?+ׂώ/J{lYG3q'wSی[" bΣWҸ JИ}	9]4$Z#^Aܣv! w
+~qmȄC߽1,2&JR a0sKp	WpZ/BfM)wF yFsE1zf\OP\gWy[7x-Or";4:)%X-Ŭ8bNԣShΈ'j@w6E7pl MJTey6TM-#L[i9B[fLVWieWTÞLeSMfٺziq0~&4m7Xq8\䅕Å
+WIZYК<ʧKu
+LeE;Ee		n<2Gd#MeCٔLt@ KZ7^ƥ})SiUߌRΆ݂aP0	FqIkJ,H]k Q-&sw"]M(Ϧy}wY+NqƢ1-1jQl025vD5Q}W4Ju!\QvD6La=UIEW+l*Gҏe#Ͷ&RH_tfq7I^Woh\TnRkTߑfn]_n4?i$Q̑`#I6Vxc/N)Gv|L2&ig0|͜dcdQ<2zqj72ғCC 9ƾ໥R4zgPg&@
+Q*FN.g-TB>${h_%XuJ0}Ҁ"%)IDQl6&J7	]$}x8е} /˂8b}'HBb%r:^cia[b
+
+)k!)G_x<~~u׽Ho|Ν;/?>#???Ffffqi})(,Rڶ}饗~+_9\\\<zUW]P?qڴ
+h7J_|vIbV^i4\ihe/v*4*-=SWé,@|*8uLE&=K]OKXUЉ;T<$DZŪ̑,PEpf0?3%DJs1_2iLXR&7kݏn ۯŪo`Zj?q.Pm]ӰWNT/Rڼ^MNjRW=>0<3TGL%adN_p^ǣl
+cR[)zWS`*VƿgFU2	]BR9Ig=eb^뤪w;7Dsс&/1+:qp~}
+YP,,t!ȼX	Yi!1*'xI6$ 3Yw:hT.:J"*hB!)$8S-&MIL4(ήSΝOώr%*Ʋ)L>Q@AaSs"''5a*mj@49q[)laBKgJnv94-)uy޾Z)={(ˮZtvN'VթUVVD@	`Hu}`_`޵l,ca`	 	ԒZcUW<u{0~b~챫8笪ZsooN1}Tt1).[~YV[^{=ߴadi1<tV($ 0IN!
+4E'`` |> [F4zAr Av"?
+ Ge_|վԅXC~|Av4a{BA-+#؊A(8dÅ[3ўa^,?x
+tRW؏sn;:]?^Mn(d!]>EȥK#x|@eftR)׊ɞbO;/~gu֝wWb޽w}]we733_N}s{{sk?5n[nyGw|o۷\ZZڳgcGQ_j̯~g(mYNPNx B\i;ORFGe&tB@u]%Q޸.ʺP#مxF	D5C|kK0;YP9aĢtyP<';,@2h/}o~}1/psY٩O1z5[R]LI5u@T!p1U 3"f02Տ1oaD	zEG/m!1VaV}2nS+) zr~j6qYM()$4.bPv38^$i/;n'o$?mXӮu
+1eAArF_Pi<ôy~APz`tJ%Vav,-d}N	]gɡ
+o+]?;[@-h>lP!0HPQċ("_@ =	 9NkEnTgD7y+W^*Fmng
+G*7')t1b:ܓfO 	Z*9POGefDkv.ubiY
+Tq#Hsv+\yCΧ+sgLmk~kl(+PJ"B$=cBփ`7e7`%@yho>-8%cV`X|i"3
+{@yWb _^9и	Az.
+sܲdbFu+ ?ABxx6gނ01sPaM`P$ڇaSPH(uw~o4=Yk5|TeRu6۟Y}*C  rײ++Ɠ,W;ϴYP^?{8>!We nEPB&̕#8"O?ǯǏ}\s-oyςpsh۟gtMv7q׮]wuח;wx[~oKN}uGm=a;knot/
+Qtq2p눣	ʠ`&Qj ~յmHP
+yK9g 9D	֣Q!N [lBsPD(lUgbp`DQCsD10Fс54ӯQ%H{P
+NIJ/*Zw8ҵcB֜O'R^-!8rp=fAS}{M=!4c%:`kpstKd|TDlIM@v~lvIO[ʡ4VIEt?͕J+CKu%XM|-BLVǄ?̻5*ey^Oe%q^nJokQx|<&?<//R(	>8C&ZOEy+$G!%,3gId+Px[@+;ADB!؎BL6$	Tv@pH~g}m I_f]mUe6,O?˺T,U2WϢ.ITrw_.'W
+rIi^YCD tDsk" 8eFq)e`f-n*TeRYsUeDo5g4b>F/a@+w_ΊfӎqOz\]J_ etP$9*v$&/Cey(oQ!4@>Pa0F`o5
+T^=ޅAx
+C1NtuA7rX!x"8W(3QaO!_P>F0݅#!W)uKOK~?ͯb\Aw-7cع:*Ύ.d0~=l3e_{Y̹	u}c(J\Vel+|}[Xߡ?ʖ-[ >11qψr}Nio{>!8#/bw?`F[RQ4V;,nuX]xQ|R(28>4#!3A+5e3A>H6!2x0i-83 :⣰'P
+g325P10zb Ctt=I(z`:@(1b. +[m..Vn#\W;4gS(`Mcp|Q}mHu
+NwG
+8/@!7QӉa
+h]
+"Qԉk_*Q@N#2ʡT(bӴ+tQ#b$XI_hz}L̎U[|a'ĕ[2t[.&u UoYXJ]9鮏i>9J	0KH`
+tFtHLGPv9h%@!"E  1@2&@1 ZC*0m!DPkouPbR核@r5LU. Fӫ)+)jhj$KYGqT@JRQ@ ,b(hl\ъ~*C\kByy_T\i$Z_KKzSkgG6/	GvZ    IDATH113C'u3616ߘ50RB؄f
+@(d!LHMW:ʈ#G<
+{2EсD_b@y2  ^}od
+JD"1 !oAfUDk @on-hQk۝/7*$^ʕ=|^j?󭱨4i_*.c"E|絸bjaL9-2Ǜ#ײַt_w	!ߺu+ ˲s۶m).7D??jZ{ٽ{G?џ;=]ivM+|cJ\LmE?[Ȫ_HKO51ꓠV	"@;\ O`Pgp`VP݁H.>z`աhY7LTG]m^sN$'aMB`MC0&0PCw*<#15Cpg08"cS(OA7Qeb0Q-^fW_gTȷ)`MPP&4#5_%t.S'.j#>5P'sQ ,-$Ś@A/6&eF\1Ntd7)re2*"Q=U"ވc5yöv|N"F)ibR˺v=SvAITkQ
+@"	a+HC-#!% H߅=s͢H f&ؓ˰6:.Dj2&H9fC(p7!8"Bt"Dނ̡y0 o#G\>g4	a8ne}ad|X1#WimE>UGe2ff*bC᪈UؒGmRyEb@OdSHa\#j TF{V{mXd1h^'uLR/O=,3;2op
+Yt_mnʲKumHu8ka(,		d1uM%=3f}$F߀|f(¨?P\ށ6m6XgC wk++?
+j2p7!աA{~I,)2~;vK*eO,?UȩaQq)\ݺV+hP]JT湲LXXAO&緸5K^(Z&+P?Nnᆢ('z~|hv޾}O3܈-%OosŖ]J߬W-%7qFR$Y,HC2mYA JQ(0JBy [Σ4	h>z!Y( aA@uhedˠ:>QfMF ;"(V#=û c
+Q$x!%DKQIy8,J׸Vƿ[ȑ~U'q,K6EЗ*-Sw\VO2bX=gԔ߳Ʉj6U(۲*X5DE4P'uKj. өd$Q6ggMT4c2YˤQJsY;UB@[IFf(FjvT0:q)+͕Zbֵ3.g2,­ BPp* 6jFQφLW{!S* ϣ
+t`mF0`ԠBa R!
+ia$DWHY)43%b8Q<me$C\BH&ZЦ!6| fՂUKpJW+겨/X%FT
+C-sh4\̇'\ I6l$>pl\.6hx^+dM!F/Ce=hH<a#`:smȑv + <N4MԺƂ
+!
+%v+`LBk|gJ`vSd'.Lh5$@-0`Ch?`+yċE8%HBuW1wٿ@x49/JoĬA)ĦY_AWc>M(),vЎWy!@;%⊹~MPRh?G⋶z_购ݹ{IG׼z!nvK֘n)&^oǥJY:dFŴvkaW^	V	G^^o<k(D=HJ> `tto}B Q?
+oFDEJBd0*ߋW@-VX0@R#]h54k4 /!|
+,xBf$3k12ӛ;BqJq V۟+[OO(cZA(XW!#uz 
+#H
+	JCUlRmlSKtKhEuzfO	d:l#W
+i!3RT-Hri,#ɥRXrƃ/^/E?HK*C)d~lkⲲ({xS˷R%;T𭵡x%B)^5~MH$
+W1h6
+tV	a ÈNBsC[ @q0/Ez 3 sU@( ,zY`u/AxX(h6zKLCoUT٩uHOZO.e7MjtD(n*V7.V@:&cSʰF"s[*LXr_4
+ָRT(o	|+`D.gu(^ӲuBfiٕJќo?ލ~Ϸ?MikB{T0_4ZAK`nӾEitЛC0"7`^ :	>@a4탳`>\I[  y
+_B0uswP9Q
+àGp>wB
+f <ᠻ$jo{MhzݗX=\LF=x?n)n~FmY[-h8Hv_kTb[;,DRJj7fbͻډ|SD|䴨'ؽ{S{챟;{4[}f8xG{CQVxynwW8GuR`en<v`{G`ztJ"zIA(VGuX3\{Mۉν0Gl]0*(VC@F`e @HOvDϣz5Zw#^@1hǡB *_k>Ў6W"	ddM$ QP)U?ƚzJiǦ2k˹
+S6F)qUI
+ :qM,C\pM.9lgM[9k&:-ӱyy3|ذ` u0J1	
+o)dI?J
+J\#qJHU.?XY||!)V󁤸xfkj)!0 ~"A50`Mj}"9	c
+ឋ0Ǳ<P' oÚ@z
+y"ldxfP?\RxWuO?"zd:3:qJ R*QK]ޔԥBԢ@d~;푊%䈦)H*L;41~9gi^V}HĿlоN{U"_O h2LkFK4ݕ4qiDu119"8x?
+́3jͅڀ	@v7"?cuuܝ}~wӞ0? L!:N'8:"OOhk+/TerRNtY1InwwR|[{*_)K11A~~ɘ8Fk"QvYHhbUl  GR1J2ŏw']=_|ךE/z󋻗]v|Kpa7|,%z?Xw(16fWcRBLՇ>i_ɘ,CX=9R36_*zGS+{uyECc;th\6@	DјnB Rv"< o3 1lлE's%!z*tV2D;QO'-#h颽d(eFO,4oj_.CQPAŪP-+pTw ]g0ّ:qt"vK
+ȦTJdCK=G@s'[@lc2I@+e '%26eSES-*sc@JP5Z}9ʱ)JbS{"_$T9>OHhcc@5(mfgaFHB/WG"@( . 4 xgb šQ%%{A mPG ao	{ 	C<><8> OF|m<MnRZݹn!T0(:G*ޤj"vMӉL$a4
+](P 5/Tnc<zr
+V f2:085N9vve`<Kaٰor(vn.&xڳv{4!7:|4ODe%0!82z{#;xyݸ2O`A-f8#kЇ`L}FaЧ֏u?700F@#2(EF4RDq?8H+]r[r]m7g?LyBIK˅lD|ScWR
+A*vVXHR3h.}4(BLD❹w~bb|w=,8J8Nϯjݻw~ӛ޴{;=]ſhS)u㛒E-j.)As-fII	?{*"1rfιaT'p	"]. :w&$x
+E8!d !;A= Pbp/9E07Zc(AK0'QaA?<R`T΀;	)A?/S+ߔhl<e[*iKQUi@KkjMj>-9ohPhml^~U fGj'Dla0=LsIM h^lJVb  dP z,ż"fS' 2@PIJ|2zk[鉵환u{rM;ric"F^҂(`ZC!rX>^J@AMtèφc
+hz߂9	r=!5 	Ԃ!x009e>Ai~Y~a9x/%I'5at޻BGA	h~672C^QuWMqbtŸ3R44GB:ԞvI]8 PR"iUH=>u<%fv!rF-X63+ɛ,-?Ƒ o}{iF(hZA)"_8X_E4Pd!l`<h6נF"QdHEr|h.U xA?d?GB;=D{!"'7A5@!\£-CJaZ^uέ.ߢt8H'71^%gTJiK.W,?bh-md!YM*)c%ZMb~\26x.i']֙_.6[MDbI#
+?3ǿ_{f߯~v4|޽|+O0Eʇt3vΧQgW{,!J^y?C2'DH\
+2kd&]<0UǰJPNioD	#=.:1dh><E 5-(P{Zj!X*Eq
+4 A]'K`nG=h(@ Vzf歁}k_M$,*""ZrI˄1Qn6ǎj%B)Ce[$R' y&C%Hޓ(46)ɈA@u8j3b
+$Yl34BO#XRUJ$E' -hXTI	:ԜτUݸ8bl q~0Ry] T&҄8riD4Hl <Fi9~xj߂tFkƿ!XӠxރ*\1ѿٰD$c F<uCA[h>
+1.MRV2+H;?[]ZHTԴ}+@$4	MaR8_('hXnc!Sާ7R NH*4MEE 31H5!JhU[U` %ƐZ [ta>jio}Nrҳ(oGB+Yq4tVgqZCRUj#g 73SG>F|,ށY0X#׀2!Z(_N@y?σfW͜?kм"F9T/ .Nq(fepk^rSN-3}zw?!M:;EIG
+!Q;~[t{+{([Ԭ [n̔&ZR!٥&\p*RY&.[:za}`ŐoitY5|c엿]vs9xb(I|g}vR~~WȊm_>So&$S}/"Woz[FoγRNНI2Qљ~E̀(`z0=8u%Ӡ ,`VTGXo^i.l@4|P)@A40.T^7!d
+p6P cZTj܆kQz)ԂBE *#_`SWFgcI"$|Ri)YhC&)+Z(7[BS13)/GNXteF0P*amMqjЪl̀UH@"Nn.2G*ٕ˱LMkLiDD)up'SZ5,MO%؄rĢ+7|P>RtLaTmݟ]	'lKP" IhJr]2aY`E, _j`s	X6BpvAq灺){.Alػ#=j  :Hdua8 @Ayq6t[㲵TJU3VqnPP셇=\i!JƩB@	z$hf$Q\<6AG$BIvQi2 ʤY(*}A2bIZU`!)vQ2P[41h+fW)3}:;Kh0WaX[}cq_Q3yFԆ<Ԭ 2q@
+Aq6    IDAT(&ހ
+{.6j	}5 WߗS). ڐqDCbXÈ!3LUFyJ|2kJ0n03F٫t}B-fMI۷ڞ	elQ׎EbhȽ"uFǆD*aj<@-m˧ɛh-x1H<mii_@RGI|+Rr-?Kivw2Iks~9BLvP(C4(OvZ;VW[J_d8h/bAc(2}m,CtQa%[z<?jjy2E9{ѺB7@9Pd Ud{ye@J* x
+to'7,)ӳmI{hf"b}7ٵ (tBB\1VXaF'4 CeA8!R&խKpn_lR&+^B'IVJ4		j"dD`D)E|%tszJI+<HnLyG7}-#3f/o?_/yڹA'JuP$hV4y78`V;	v
+>Gr"5>=uhXț<|x{' N r KA= @ Q.@,Ar6'h1fkOwLv%^%Z"%(( Rr'55b[~@4I#ٌ,
+N^(CRU8ˤIPCY$J.uگMO&'@*Ot?k'٫>{|.{Z?+ie9y}Jy}e}uVAH:A70o	>*c0]0S HȺ`6V	$־#z*1^A=Ʀ
+ð@谶9}7@uN 4M ^`xS]۲b5˺gyq^.6"ήI*;3˱o>nЅuGɼյa$b: tM泅,8ѯU~7/fՏ`ܟt]{7x}ݗ)駟믺ꪟQybb_if!t޽{>s'GڷO^
+>Һ`Ge/[0g:yI{\ӑp|(Aiˆ	Jap94i )*5,.9~0BxJ^{3!p/샺]
+>׍Ow~eɭ;Pt`Gb#kUmwy#SbMRcl,"Dh/Uᨮ-S1fgy_/^wR<P"[7R>L.gdKW[:r1Ś{FKvUs+W|;ԭ@I$IXDa0&c3 3 meExFBB$P@R{oVGm0~U1jOyZs	amLRp(hl4}2d3S UNh]^.QRNY3n!'@LѾkIϷv.G{]quQQbT)7M//HyR[JOFu|Z:U4?EyUHai "Qz?jRVE0{3@ l	QF!ZB8{soX%a)BLeX[KXҸ*tr.Nz_[박l!ca]e\BU:^R43O5!ڦjー@Xۜ
+ӺHEzaUXbKR5Y,U.?ȍ%Nm\cD,Wkh(% rWLߩ;rbXss |1@adgĂ
+a" zzҙEI.xn`^85t 2C{t0 /V8}Z4STZ)Aclz+v׎/n_|#y^iCQ~n^7yAǕ跤,:HteS9<СQ1Ѳ_ǀezܦR=ϖgԙo^nҗtQ{K_}\.*n{\R7۶mܯck|xkWdQc,J;7oԷ#B,?kyKKzsťwzk"Izqm2$]d)Va c `3Llq) p&0<@z?B0GO3@Fބ	^F 9 .hu"mLzdL3 QyJ
+J!W*3VEĥDjGW	zK*9m!rWOdKm
+1c#t:1YkGӶ^h}3`%Ű !	+`:H2`22Nk\Mp:4q3<c1|C_@iAEK3K{8Dji|WU{LxMB02Jj@u;&?=l	+x9uh}8ϸ] YȏA.s͈~<!0
+ћ9mr]R@hm&xg_~\[g l)t(ǧ|ޝOύWǪbx?15R26q2s<m81%KlhD"ĺNt6eJ[A-6|{(Xv?RyDw	pxm\!3̮<.eʑekcSDmGa ,@ ,6>wB'>xCH &l@F
+!)qO_Q>~B:܍A,܊ £Ȇ(-ǇhjRNRz|i)mJcn?NqwC }@_-mʳѥڐm6eGH
+ڮZ?u#׍\2Îؑn?%VSTnj޽{׮]+++A͛8 3'>7hY֯#
+$;Vzk* 	nv/_7l9l{qtw%׹I%̳biC1'-IqC(7
+d+1֡p
+DFA|ŧr%CP=X[o?["?[I كڠ;^,iGo$4r:,БZvfADDU([-rI/Imܨ<P "7E1i=;%eCQV芹kʾT,A+2K1BӦd=LFG.Ɨ.9Mb Ltߧ#26y$*cQ"X+	eg˺7.tY'vgjKԔ֕\kT⋻9G㴆M(@pScVWa`/0P-FѠU= .PChI( TLI?;|&"DZ(&Iz[\*%#nͥpc('".LWc5^{9 طlXCJf<ErK	hⳅCYc/Ue{8#c#ư?=%&Όc1PC @L4|&ntiu^lQpZ;;S(BdkW|eY;)d>%
+A9.SCxŭ0W!܍ꋠXi!emJ {]݊ʰ9M2TP%}7%ۺ/m>B(f|}U/gwRo
++'WG3F&d 0rsl	QZz+%=h?9 @v83ΘSOv"H)mRٱcǎ;*ʿ_
+^ >~ӟ.
+/?:n')EKA~8{j?~htpJ%e7>/o÷֊oW
+Y4{`9\%\ @ -$;џA6@ 4^ >
+gV/?G%s =tC{(~60	{ C\A;)FfĄ	JƆt5.MK̞`N.}<ӎG9*>MlW
+S爫| *UIM'3Î>2GCdn'%ӻb)R%VjTjJM;qS]Q25Tu8غp%qѾI#ܬ>DHZ?_~2_%WӍ.\`Fkbv7D>!R#j"X	 Fl#_IQنBHsV3? JwDdΎ-|f3l)l|ZK@-<"PvrswbS3<VþSnG貪}ˤ-BR,vl:4lhp^qf̸G'PJqJǎp!`@ee	#3-ru }gv+fոӍ-;xo$Z|9+<0s_]BJ0hD= +6OdH#,CI>#.A JOGD!N8rC@Fރ:9d8D
+q$4)l9cq|~	3ckW0He;~emJR0}V z$VZl!W{CKI_RXIHnIժGov([&owK~T[l'>jO7e/{ٯt(˲ÇOMM_9 $yFo$,6Q{Z}K;xO7;{Cu_٢Ϧ1BƟJ xZK+{)Cy
+GY;2={\*TVaf0X> 9ly	!	܇I6!Q{	E>AMu{15kNn?kM[Hj.IM5dzR=#]+쁪 aTk"ME1X41ٸHBUvh7`{MtjFY*s|IF.)f&mkE}2ЉiTlZ,</d)טQydZ%:xdBGch=eO0Ή.šLI1⇍	rx|@ǒ삒ZW\iHIiᕠ%1(M!n0B<$M0VF|6V
+0 bAE8&lAfP9I)7/o@G	
+&+RA`M*< FTڌYu} W9MzN۽l{QOդECa2K(]1Fぜ(FBJPҸDgíM3 E0iPkf £,z6UV)LeeR=K)ߺ5̞M0USclqz_@(2W]@k!\]A69?
+-s䀂:{y_an Bt@FZQUZ#U-«<+YzB<>&WV_4ߨԘ-/dj8g'\ת7	(?{;9TL15Tţrؑ@ygp"_>~"[~agew~??[o~gNMM:t}---5y;Q~>l6g&,w?=̶o	_VbQӮ}l.;*#Wj=-9Mާl8\Gzݗ!5Jv#&p=p2Cm΍90epG:@y=TQ3@2'A`M!A	 HC07 ُC&HH,?[S"UU{=2P7skt%{ 4K<NHWwD9 Rgt󓥡.dϳhHW
+ `t-*]ȇӺ*#Bl"܄E254G-R9U!'`2N6>33W S8dLtzrPM)]MuI$хQv\ՅÇمu[	h1L/^ո0IM27nwr*ջG10h.Naב3@`0A	 ~&AFAiV՜t鎳J_^\(Ԙ"t%,Vx\.&;4$*s)xuh@)IQuE>Ǘg+H?TӌHAG2D 1 }-Gx(?1 k rk;(1ڐH3NKXVdMBfD]t	̨0}:gKtmV4=M
+WXNX6N<)ni˕lF܆H46A@K>&܂ɠʗ"+7@3{DwZ;]$ȻHWap| O%`|u?{/F/~rM c؋O H^P+sdI'k;$4-~͌t3{
+zl鿭@Ɉ}w6ԕqب<1θ{<=z7s=333aj[^tE}s=Uo뮻NJY~ܝtUС3^3qOמw<ɱѺR~(.`l<fGrl4A)^̂#	K02lL= o=tH^Z Mdy$-}-X\RL*c4THtUQFe؂lVbv-'h4j|@I"k1P+CA,+ù<rPvSda| !t HMsFN9zdl`f4RqrGF#*$e-uIThSOl~G}g?IЁ^A402Ц !G/$1n_*~RbzҮL;
+o&a1Gq
+VP؎tb&)'B%9,UƛOWy끀N20B"`ae#'If<-
+r4A	YޮtՀsfgݯ6뤱,0Ll%|#)S$*٘GG҈_u!P%L
+Ӊ,8M9I h#HP:Kc\7R6ujW73:=q>JR6GHV,|Jkl{1Ur(5g>1d}hSP1|>?uU8mjYkzAvCևQk@eA4    IDAT"NXZKS7ޥ%ڋ/Vٹ<Y,?Y*~4?-ᴣQ4G9;:HaLcJ;ӥm[tJT]}Z]a?/,vzpwӦMx;^WmHc$T#tC+q3Q~gj1v??ea-xVƖRΏufOmk-'/\(zmRoo(_.xe<;^.k`%F`hÙ@p'#9
+o#)אwP~2X	|A.@~-كſXޅjj1F8;*vL.d~H)%>sRMsA3bD;1>FPnʍ[sSihGr/*_Mq9qB3h%f_g>&b$[,N!NW%2`O)ƨѐ_'g(d}8[qWYv8[!E6tg]C.{bW,w5 3qR4u.9r
+a!\;"UD	)H (]ހlлH:HHbJWS5R*#L@}byk&3)sp ]JWr] IpoQoHSd;ad)N[ŽW\FdrǖkH{%vQN۽<Ԕܘ*dq{\GhZztb$# !)=~Q$jE,6agm_ 
+Ѧj?I<qre(|Uo,E{?,h> -aA9;Ř[KACDr)g	|{^Y5DʠZ1rudC$ R, `b 8Xz;F.XYҕGd)iSкS]H՛U_^evPZ;~dQzYb֍䛪=A~fj3A~zվٳo{wq+ys)?!]o:^a8DW/'Q~2nɺ;(Z_g֭ZOH։^qng>J"B2ϾP}kY~mrR÷*oUr4,nJXGԃR(!@8'
+G)v/	Ɵh߉p']ݯ"]-X18ּ%Ukb55TKcwp.oVӢєY"*2m" DլP:K|O'SU`$¥#yK\&^k/-fk9nV-3CbsilFAP	+:?F!9ugP!vɸ6  j:0K4	'NR&,ʢڻ^l^ALS79P2>[o
+,vX"[Xs6/T/}3.9RNUZ=Q|ͶY 4 OQAc'#ZAa㘾,U((~1ki?);s±{m5Hr}h%;&RJW*cЌX%6v~ ynsof]nt8?`O^JOZJ)7Qol Ɗmx˧4.~dNk|rrqUQka~N'Xk{n֒.$%8q(aG.zưx%~@y֮CWR}!&H
+6L5R|B%GXtxGJ<+WF*VFP4"8BQZBցZpcX6Pds<#/Y%090"Ǉ]D2@+yLpѐَt^^*]˭B<hL!I/TzTQFJ}[ZfϾUI[|]ϷvUUλ֏C;}RLݭuDnlEҔ5^vћ'=yϿُ5k{sب2FGz$H=Rg44WP3ŷкN`2?m߷jaD2R{ǁ#JOVfgwEɕkWe(X*oe	d
+(CpH" 2]Gn/A6Jb(_
+u~Ιs,ރ_KAvqߓS.5`B-m&(HGl@,?*Fo	M%Hr,=ݡ	CywQ3:SfRHN^GbMg.&hMSBq$+.jm5]P<RIË"H1Ew$1zM$" =sDX5˻SyjUR]?ϖXČ䦑ե7+{*&5+%,'9;֋^MUe+8cx%d!jНEy|t	& r$Pû-ߎh?{ߎXZ<?ml˓oK&;25+~	b3@%5H)\ˍСqn˞"h A~fz~VՂt7}FչE :/ɋ#vvi@=6tBfUBU#h:T8TKǆv̄uV&ZVM+'rD%"զ({r(O_ģ^ƸVxJۺWQG*GݧZ؆1c]:(F g&G4@w5T,YoP4)/6D09e$PxP6Iqp nYBeFC)j;:Jw1%a<h{+)dU*_ɓZgw3S))7mkgc䅔EfBٷKHV y/p"Ն<eKvٖIi7eV~K=ww|K^qFyb]1R6	wgz4TSGx<VN< kwO^+:BcJ3yJ\o$ϟ9g~Q:d|;x6j8Zv/Mqԁ1i EԂ8yy4`jgPu7Bt3] {[&$^}8'rK7_?jMLƹSL#MLW#5hJCxftd[ҳ1c\ڢT74#IG1F"ȵơZMY|#*Ԥ2]hc|"7tV;MϋMiE05p&Jh}@KRtR5}ܤ42m4Ѫɲc^QD|Eyl8M,xg.3U#\֙/X?$W'*|Njwrhіm3qzbÑ<V:9Z= YB0InD1OA0,EzyB2Pb5t|b_CWa ~X/!cy~F'|sPI=LA3&wSf,-K]6`l:2a&635=Rx/m7S]$UK2ha?Zso^zq`2uJ&7'Wޘ|x%="q!u<~R&iH۩ڨ2.Yn(Rmkљp50>5auR}[y_$
+Ue0&y'GKҫ&*1vq+C@?ŉV,oF\NazZ_PފeX#mCgpy`6mM0"ችYʷ  p F1O8(}+ف\O'C
+7[mjXA~MJodte< Lּvrafv2y!IfܤaYt%ޜH{_2^9^gޱcǿy'?ɯ~8l"%$3ȶD'ګ[4Ӥ1?K/4`G[eeHn[U}b8кsE3+;\Nۺ/׌^qnL|?`:HZ*?<蟪u1z7HCS,.AaGIhލDh\7 _@S	bT`+(=mALW.Rf*0In#&sq,_h`5VIa@{xD p~<*溮ՑePhCj>c& i4ltLCUmػYIlCuS+lxOҩxaE&ǹQXNB
+
+&ĉZ5{%)zμk>RXu:9c10 aDS2C\E2%ш$?~a?GceJWkkߪuT;쯩 JdBm!iVFXV;_7xa#K(揮į(G:*370GE*zXg^WeV?T#R6?to4f9*h-P+d6DEl 8#sS^hokRhK%Ҁl&R[ҫ0jΛـjfJgU,ȵIkWY%(\	2]U{w\.Jtj6hwMcF#3aiB`"Lhi܇7^ /!Y(^Q|*_̠(|ð'5ćA- P(2 0lDXvKHbv^%x91r̋-,?8".͆Ђ\GJ ӏ{56s}<^DI*h@[k]yGf=ܽi/*tՑWs?~
+㼪x, Pn)V dFA_Ota-e3̟ǵzbM'=SӫmjkW>?r[÷Hӧ8q	ܬ0~y1e$ hu<9,a#N(1EqP! ! AB㩰' 5}Xi %];ɟDHTM;s@t1F咒Lo`ĀƮeWGʗ06hJΤLQak;[%1%ۧvC`8Ⱦ"0m@	6FI[NOt"z	}ë١[)zނU&CP!D!fL$2|ʎəyd^V"@UJlp2H/etH.mO8_zʳoo73]Zz!&I.0A ۃ!sd)+7pK9:PgQ6" c!Ths{}뽺>}kt˫z%(+2/PߣIW%kf֢qrY7e-[-u9UƸT	TV{|1v;J^j?^t(]/b(~Xr!BZ
+Yi5'7UFBmmPz?y4%B^k75ڡ$֪r2T6'̛.:TűP`̹kޕEA2O3*tw6g ^*|sg;+5{_,w\8E$">EiyovQ֞PH]+ޏPg"}|~A@:>(X{`O":_0@u5w=B%{+!ZWh
+0,a۞sS^֍^WuʱNﯓ
+W)ݨ{uMF#}&N/ovwSjcG,(s=g9cl6f[l=lU<_YG_*fx㍻w>ӯZW|#E]tw*1r=r=J+#rCځi$piWUFjpB<>aav>`5|]6?^w>}51g[;<v<?Ro
+x<J>)pxʃ$J"[EЂ@+4G0jbtB 3ҝ/}QQ)s)9eORzR)ٓ	ɕ-XgCBDVln|f3tavvYu٠8pb>o8iXs}o"z٩qVޛG[VUsf?շUP( (c4/J{&1hbH%ÈEQT_usiju91oZc5{ϞkN*b9s=^ Y֐3*]s`l`!7.ei6=^c4锆
+s$? #1Pa3Fp@BEt	 (a3 m6`tę)`iǦM9X8I/Bv^ӻfb>(; raz}o8as#}*/Wy
+FQW !Ak7-X}{;ʃCšW},~.k[ao,ήv2}Wgá^?g6'	B2kd,54\s%Ta'8]~S'yCܟ΃>٪մxv7{/wﷶ6B_%p=~S?)$r;.ؠVGHEj}Cu 63%bM,pzfdM8>	JE.$@<58skf9ym_RrM0W?03󁑉_΃
+}H `f`rgE0-P= fI|PQ2$*/^pd7[.0	pM&v(>tKp&BD	FC\~(^HHy$I/݋摒̨`x}9b^U3lY#J0Q@k}CZ
+O=3b_Y"utxk8w-Zn&*wӿsG?׿ 8|;?_r%7tw꯶mv$!ַ֡Kl3%[tЏXa\"T,Ri
+$Ң6bsFxvI"`˾4~j1~c'?̪?gH,̔`]_#%?/-I:̺ۨBo)"'Tf'\y~~kqLu铃u~	T0dc!a&%ء͚W+}"3NDJ=e/yV>s-MZbeK 2pIEaFM|96/FEZaݥQ穚hbO8FBg/t3GK,EL<fM(fa!+Cڎeb;|&*Viǜ0ģ̖(!`K<x+kll.9jvmgHGFɖ!XS4t~_ hXdTmЋ94כ,t5+ f9?'Q@!v    IDATNJM$R؆SY}<]zK G[}c?i/ƿ1?UTX|
+:WO_uwU#u!/OKB?5ph)l~ųwds_rѬ~]`b75.*,3ŪDoUTr~6
+A"@{̬%%18VsiCʁE͞xP9U[͒04 Sʬ1T<D-p`J^1g(X+qY<	 ݟ!Pf#F4EL0T-6#~WW%φU羹9*beG$?X-{wɬfIapKs$ruԏW~`Mu:
+iBNM!]`p#ூ@ ,1pA-CL <|g`2Q!,ۀ[ ;~_ý0w;S k΁7j^fpBz4րڴL@c  v?|`-#KzY#'Y|S~7JAs.? y8.-'8̊gI fg:3,7WM '9L|_G>򶷽;|_xy8p`jj?ÿ{^|x;.3so_XC#<Hh=*6pY?6# T+cƱ2:-"Qlւ[1Ka}mC/ffjr?~aն9^}}oGwL+}%GgaLwUcGs&kiv	ˍ'vY
+=ެڐIًqOnr) 8؄R 9%'ugDC-%B9h2N(H rBהܬĞަ?߾]`ߐcCAbꔪ|47+tfϴtI?α0VjK!C@Cg^j2ss!u묱l,I~HBXՇ=.8ݡu<2ZГ<s {7.+ND;7x(v0&|em5 sCj8OzUb+/$LOͺcGkBqx͒χʬk~~VWb|&J_1Z&ϕb_7z4UhWV]4S	?\eH(6ʯ]Տ*(ڗ(}&/`t0` 3re+9VJY̊ToNت[s}2	@V~}d@vG%:wz,Y2u2gyRGk{鵒
+b\фۚO^ɇJy`d#!"څ|3O==I hYF)2e} -j+k_z&rC	''пqBo9/ݼDk߻qa}CR N *AyL mCg>0z&d-9SYyg!ډ` tVPc ,A C>E< ?EzxlwAs--(R0$<uXR$9Fg:*-ná Jo?0ߗfk9[׵7NT_?L_QTUc(5⑺~b75θx& 6UmRW_3ʉ_0ou|pZkq??;$;`}|1? 
+7lD^Y_.j`1pr)Cw,[Z*HȀ@Ch`S.Ŧ@1(XWЌ|Y`QDVv~ήjxwEԫ?h;8FHL.uզ|# u'wzf;NU>Log9O$z!EK:=F91 @ ʁWjb}&"͚{O7QlC> MWR\od3LRŒ@,#^ek-b63 (m>a6RcJ`>4Q@\}H \t׹eodԉH6aS.4;ÉTq>aMGKKsC
+	m7`	(*c9
+Bp>?ʷ7xUe3*Z Ss_|8ʟCug2vy r lnޭRWzma6 (A/>Y17dLnmd(8<πȉLY(6uScV#Ώ+3:3лØ0v#qqa=\ٲKZ}=:{
+_fe%TUc"&ZSO2LAqRE>/rB|]O'ݽ,:]]'lT=`=r{Zቲ._z|]l0:ch#rwٽ(|8%QG?.1[ð濩$f 0D I뗆?	P	)!P=	y` t&`.$ X"7
+L- 9tU%D@VpK84o/w?]
+nrA'D×pdmTorlVi.UQve%G>xkE"7[x齜FeO@K(Ïͧϯ˃.?&r7nP^q8p[+~݀1s	' GݶmwߙրV?9]0I&ܧM$jeUR91MbSNdVIRp)l]@Lb=d͏oYRգfoȽӳWG+8Hz8CXCџfd||92#~5Q3L9v%2 '_d;}Dʬ4/-QS!ؘ:c|%ի܃^ t(*eV6DcOԶqLo.uY@&Zz%%//c6?>3%y_8ck%8h(TJL ږՐ-Uc[j$LCnAQ;2)vPVC;k8%ˡxvK'e	qtH+}j Uٸˀr P*m|br7
+qmk$w&ECvW)r<'󤫽uK[f8;Cx4iη67Jon'YY|KVf.gfxhRA&v
+B0,<sL#$efEս?wEv@>@ڎY*q֮()>aˮ_pЬbBo%+ELuSWQf![[V_:5ږ\Xv^{]̄eD0QN.Z~+כzʛ}ErYIHy 7-  JDWbS*)(=|* Y!UϟYQyۑ_rU׽?H^JF. O O!@PCx%T^)["2` '@AXN%? [@`!,iv/ʀ,0YȀ5^gzν 81}̚Avډa_ˊgS{ϰu@>6~"_X񾖫38_$rYϰ'~ve wFXcqLe秇W_;7gFxݯ|+]vM7nyFDƘ1 e.Z%
+b<	³J\C9 8hS2_Q\v`- 褤iNMB*\j288jGӡD9X,i[^]9VL 
+[/'5.=SG Es$Z]fcQE,gp0koՙY_f% yLl+5CE=dz!RV3 /	Zr;`״oWgzK8>1)el r*ss7Tk/ﰶ=F6k
+ePr0z|Qh*bz,QE5\ۺXvb=aYiM)b% ࡣ0X^ YBC	U	f8R	WY}:hau\i@i4Dn'G^quC(
+,2E6sL2.Xx tUrαV)
+[)s0T"b<WqرLoQv%qCl`!@"hu@;(hT'*\p4.
+h*#Xt3RNK	3K[jx[9)ZƎs@&S(uBzey@ґ; 6k*.wVc]˃O[{UϤs74,kӻ->`Ru`]e&8ԩ
+PzneRDRU4$	X:0%p/k<C	n~QW&݃瘔N¬8|c\nu/*W	~X䵵ǉ@JHU͉Va\;8yy}{lU) &6a^p  2@9GdH` (OB0d1j0hAy=R}0KAuc[T+<MN|&yslba߹a_X0{I~(}K/#&'ۃfds:Y7sδplrI,4VU{ݯkq/swg3q?}B={p]vٵ^[	/.HlDk- T j"򴷳][+>ȪL1[7en*9
+3nf}	=V P  " fx(2e=OwCk@0gVY>nn@īb.:S+5u]>h>I`Wm"9ST$:V ف[<eK֒;?lKK4(! JEc{|E1"-˟%Y⼊~º~Ho$7^7/ez!gT2}B_4@jӐ./)*Uz	BdVmWBP2#hꂞS-У Y<kKODMI'iٟ5=V|2n7退_Ӷ1m6(Gl*!rWvS %#[ÀIX<Q#>sϨ0dƥA{%ƊJKl-[  ,f)٨[@O@dS VbtNrŮUܻz8%m+^kzչ:R8cM+6a;Wq*9 teL8w;R譍[9OfZyá#(yl|mu=c] J9 BamGŹyJP*}G S/}h{k w(;ͱk)<\&0SBK~dFGCy[*џɫWx[}SDb]Kr|v vX>_\ Y8MTTaMdyph\`0+9Nꌱ@Q4;G!at3 ?Y Bm;, z8UkBc%۳nz~Py
+Qti]U@2L_zln]g/_MG9[,~|kXy` :Ƴsug/(_ok,͟:M:AEzUY+}`9~{W-į.@kJܝ:u3֭[wm~}$˲۷ݻ=(ioB~%!d4<7{zuA  =ם\r#$!CJdlHlQhR%ǒ,#Hl>"hA=CEDHDCoMtYp?c7)6h C"4|Ii<>TlEB/֛
+*ʎ%feW{CXV}M~d@50R"A<6o;<Uܾ^!00eA3Lm4/>؄\,`].3̈dn͝eu8 )[/G
+3Ǣ<-{_dfX,y*u+u+dӒ+
++22	xM.@(}]PѮ=b-NX-1vH?d'v^' P0<.0TX`$03g)SyXאXh(@N
+tFCA޵K%lϑ$*K,#A tAi% XcnAzU[P~S0"=5t!@&@
+Ög	ȀQC]W˒-l`,9!ZZ<=s]P'~5y~ܗf/l)󀄶+7)@G'?:N!>ԨE-@RXOPAa6Z
+Rxsn^ՒefCÿ1'&j˪ev(vs:lAZ3<I BV{jkf+Y,qm{,Ꙫ%CkԎyIy]e/H6Wo^al=t~Jz+g+fu~Ku,₲ߓp*n_V<uKH# IPCnl	q"0D*p`5}@aA ]tAuq X^*c8Z@Џdlw.~$'W^*yRܚgY{%?g>Ld&3 ,	֕lRYAw@ Wo&|޵?w<_oHDV=	e#VeGzֆX{GsjˇϏ @e'DCgCK嘊q^ EPP"K.JC*dIj27lҐL;zK_|u*6ejKD<+5̓/V[iH;GFEP$;}DS+$g$* yA%]:KeL$XsP\`I1rģTXLz?.QCLᷣP>&DF/+>;/iw 0}#>Jxg:7H"XcG}>@}iv  @$ou#]u(/Ul6{,f``>0uCK3%Xj"  I\ёxBu,iajiָ-LۅQ@ٵ; 9g.GT
+c2KTe#M&JI8#`*9آ n 4[.M2Ⱦ2Y(&lvAGcH2 Q6[QtgzeS,yܦ MI;ZBP.b.N"xxj Ps6Oy}Z?!>eΏU%dE,[)
+H{ lXBxCl=g?g     IDAT0~Yr~G}~c#ҫ'o%'^^T>QV/]l-PI&z,j:gbـ-EfeTzR/×48?Tb'fkv5vvyl+ofh.o=Bunz? ,w@u%,>y^!xU셴MˀD@^"8\BA{qcs|_:*ͼ)ё;k,-6kϴ>G{]ZIrRz%ųaV	n
+Y8!f(b9G2u6[f?Łzww'3h_gL\}׿ؿ3w%կ{,Z?cW\qsF9O :e#7Tc_l bSqv+9تzfkvYnlْR5Ƈ66,%Va%kIg 1Kt s-mbE d[^eE([L-Lr4MF!	9Dtu	F8ȗu)'` }#'#uSɤ4)X퐁t`xAfez=CE jr~ђjj[cm^m @P>fl]7YxĂsuV~T\Z_Q{bFE`P$(p9{ay@ӽNfGB1g)q.e'J,(ˀEFUM;A2lp:[QQ!}|	WUq6q܅y$U
+zc6,M*9PubIlۉExU$DPfa1稏L:Ijc;_Lh-q[؆&]X0) gA$;`8a@"By+Q'WɪAvbP':7+zƐ_g%Yv6 @R^MIzpq0vsf\g$cmkZ^09pl\Z-yXz*/McuQqR[WWա]@#Joh;%Wg]ª|,כb9;Q~%뵋T1hӽ?%CU]McE5^kP !@ja0,M!G^^E$-Uln\okoq. *>C}~A` _, +!S Y.DGAy ڇa	(eS Rrq *0/?'B|18+%I~FoR􁹥;WsubQso䷓7b3v^~nrw{?}%k8⠱r.5oQc}[_pK_ҩ>}q8/}KdlVfBkș{OC>=%;ZM>  RnVԝ]jm
+ a2;&.ʾqwר,B>X#m5aaQLߜtt==
+ e`xٹ~ͨ-.Klᨴ9폈~ȇ9TsMr%;/UZRk##&	WHvB&4I1LK|Qn- (?8Z}c~rSܫmجia~qai*`V*OVU~X\//(Z@l{O;?c@069/زXL'S
+SS-(3V2!vС=-/zXq@^g&ShorfAyXzKW8GN`yl!	ve.;YENU9V 8 L;;7$Ȫtxbs:9#}5ݷ6ҁ^_rEuj"{,L ƌGÿgGaK6mjW* gS
+n{ l1bfB;xs@̅Hғ.(>[2։Wz{޿zrtJf#T'B!jc[mZ[iI_:p̰OΏ\fė
+|WsJb-pףen8@Xb-TDE}XgE,1z-Zm)B@ :ũ\o)Ea)jK^
+@ Y
+*wAԂ"!@i k@8`
+p0xA*P9 uP2P PIk轜-ͷ>:ޭAav9QsUJo͊YGơa gKM0RyXL; ZolIdzx"ӫ]Wwůgg>s'?EC=W:cwLt/(fzb1Uy˔1^fئجN{ޱtcg9H-{#eCS98s_yJ`1t/(@덒-MUxyb2ҧ9j( m)߼{<TOJ7G9XC=oP  /w2 tvMZ"yN@ZHNguoHM.-Lꋣ+F_!٠1 ^:;*~gc%f߹WBےE_',8[Ru`3I6yK/vK)0MͦUfcsWݻ]:y={oͻJP4-9c`̙9zȪȒlضmqQAZaS$<' FZ1<K`'(QJDƑOK*bo
+o!)2 xbu%0Qj.:#$8STs"a P$@I%nk+8R%' wC\iܬt@<]<(<Nʟ  ˓;,8B7RTkray܍_Q+my^"^ULHԞwos02MWfFG[FA0~Xk_@~4XQ}lY*Pz}.߹7STeJ,+jf/Hթe1򙦳k*GǨ_֒S/o)T#IO83_ˉɀYP!"@=0lvjQn$Y>`M/~[<gAI:7F@  Q Ơ :F6s `	E(r1H2$=贚\ p0r;Β y%I_֬YÞs0}9 -.AE%^>71W<1H_gߨ7 8}`f{Ru\DOF{UUkcw=rBBH4Q"HAE(F)*M BzrNN?^}r=^}7^s<k?sw#s-?ow'ӶE,tK,˲%K̚5o?SN9_rlb!t=2!K3K7ǐ*w](i-WM2Q78Ǯ/I3rx&۴.([+o}XxJaj"%vwzG*?~ۢ+;E4/P['Sb`-S*U`a;AjƱ?~}h͛
+d?~N$3f/at9=Z uQ6I e IqAe#$ ?ѻ`NRkWsO(N<'tNĴ~m7vTEi'm(JwW@,
+e
+ets,zLY&]!%{kDb؜kŴZ2M{o"i!QtRN*j̷$ ַ.UB*TCB*!(H+b\`6}S
+E<!̑vh-ZRH:2M5x-a21VV4q)#A J3OӇBm-4"p Ð*ZWHty y::@ T(YlfB^Dvs<f/92Yax,J?]=_H<0-4/wl|h5_R  a|sndtyCB`:6k`ar5::x +=#iJA .u0x|<NvW{LhcW[job6%Ô(G8_Qm]lW[5a{_\FF*I0]x1Z[}֦OxT6݀Q !ڥ1f!G 4b(B6i
+;ѱnVwnLČF|A7s2HP davlrΖ$$ϵR}Z)(^{%;Wh#rt<j}7HYFM7: Y'{ț??O>7$ݙ8F0?v(.d3^9]Ҍm~;W1
+tNDx"]wt7!˭dW	=eiOn(EWH|ۢ׿?:;c[/ .ҳ:KӴvJ8No};Z#mP(zRʭ7kaiӦ{ߴkצOdl85xxw:BI(5/ًQOtf ՊR8޺m!AqEM2IΞj.Fn
+O})
+$R%0nr nQ%JAG٪ͱl.W#S٩c"Q*@Ph6UR`c(_2qfb3UR 籥eicCP#US5$W7Mdu?XAJXd0S|ùX=@]:6 ^_C09!c,2Ѻw%1 n|3޴_:F$BYS
+/)zGs=NtFJ|F"%?ڤa<^ 9b8;O:A(GU-kK!(D"`NQ>MI1!{`Ll@ۘJoBvv&@$-G;l4P 5YNI{Q'-HSh
+'F-%FI']GTnx> '3\a&JHH:X#1ES{/~Tv!^ޑ;'o`˥[qnt)_h6Bʀaѹ7#A1UߠiP9TzY(U^n MmLre`d	uP@:3GZീ0W?KA*+IwR> q|@WBbvv\κ0ٷ}|3o߀q-? 8Z78a+VSѱTߵƼx5'Tq p9Ri/џ'(8B :V ,:CH "qOwC Jlc>^.KhR/t]Nn# 6&6ZgfR]+Cu (Q{+h  8"նB[/fDJANDѾoRtdDO~;z1#P9Ӓl^ѹd]_wd{ftNAXJ;-E(EkNQ?-f(Eڟ-6L1ثj3"(xrܻ46pl;qo]q2塇7o\pg_sg.?gx?OϸۯwҥK9昭~+{WR=f-f@f?_iܩ3~aP#)]HPdtAWW(T-ix"ewdiuHpFy͠A7LR}?'R9~T9/*o
+[]'	j:t!eRd2\5dPX 7	eJ7ǳ@
+
+BN5JZZ6DQxFmrڟLsܤ	:ȑ4ȘPz-8qF6ǟTڙ;gܽ\TOx1w&B/B*t>ƓlƆte #c;l_F[{ϴ{EH,X7Ĳ-ek'w:6LLo7R~ndsjt'(
+>)1ʺu.SU#QNd(B!F:5TْN*~7vՄLG_kVBAnU[tK.gݩF#17<
+E;E Lr,O7"l18X j#v-밈BHd)Tu<.U,/w>M?c祲& FWK0is.N7ߏ_A|m_doaw[j"'Xz	`^nA)`;!5(h	TG:RR! W2sENl)AJktQjN8
+ 1(V}^t, pfm@#eiEB5Bcoqn:޸;35<NwXRY#0
+rǼƯ1aP6##Eh!4 eҁXαwC+* PTILX	V:)]O;Jw/S5ZMFqMb0!p1ټ]*Q" rAf5(v &08gL3M$
+={'rzv0
+AZu!:BB'k2m3kK2do˕2	/\*t뇱'ڟP?ۊedHc
+/+gNe(]mb߭w[wq6m:#/s/3+_޲e˓O>^{u뭷P__O?}!=7^w9&Rn=	:}O'	n)whlô)M<
+.x|0n~[#7)vu`YLjt\}@FxNW:S1!/>X(!Ibw'2q\o"!f)n[cɱ+eNáA37	L&3uYoqۙ1\Ra2CPOTL+i/#$bRDsێiޢsM3%T#8;@$gjOv-aNQK"kd_?7`]YLJiQS_n]/Uя@R`ǇgX4ъn_SID;Fͤ(J<fkVJ. " hF	B%Zr#Gj}lmۨ 4$B'J0Dt$E\gnzo3ɼIYkm/u?m87-S᱾:dC%E(b_'n&t;^6'J    IDATtuGvhoDbhZ֘ɮC[J`ｩGZ\(So$vJ >\dպ!J5j曔`Åm]o-h4N-7z&u0ٹQ%8/_)Da!_nD`HH#Rp[;Z7(+9tBGz^qf a\;2`giƱe6!ۂds /3'kd!?d;쵍;{LgFcP<&l͟.aKedzDR%g]Hge4#otYJτø+%$?\󗔲KmO&9lӴfxjg8>{)`l`v8Q
+nLJ^־ftO27C 0:܏?GpSqZ?9.ӅfpN&+p2j/7l(,.O)e(^A6//g~r?_ow}w$GuԵ^-ʤy/_|ʕs{qlYC=tnu3gI'o|o_~{޿,!ьPj%,l܅	E̒uCDkD4R<w$0'7ލ_#1
+dK?98}}O_(ٯoW*邲FpZ5šCBE2th& 8ޭXOȱC1  
+AʦtO;̦&6ɘT<=i]-\^{!TvY׵SɾyCB$a4ijOOzߪ8W񜮉{4	<l/X7<Ƈ'K-P4ͧha&J7{)绮V#:?(,/4?޺`ʋtdXU"{ 3=Af;%?#yOVlM35!Zm$+ʐ"Vq50T"bHKTdbS)0jBe$D)+ h#6FSR$Q(D)$0 
+T/=P lё(Ѝ tTn.]
+g@k$CCYY{ GⅽB9diSCtWmRI)[<f	]0,½sW֎Bľg9C (L  iXh@S:Ud`@$t-|qֽgZ[	(ϝk6EHBHBIY'd|Rp$õUAfYo({^ɒy+B]{MR2$02R(b1K(K'kɾ3=t֪ejSW0E 5	bzᴚAȊJkLt7gmdavBQ:^ż}[ 7\,< )  xl&zAz`ĮF63^tF߶jT
+_CG'
+ъ>p
+e͛% _P2GmMu"*eӏ@LuOE}kyda/ǟo%tqs=MAqܿ༰w[x7A8nmGyD1uԏ>+?ҥKߨ|ͭ~wEccc7|u]wM7}݇rȪUcBJKT*jo0L8 miٝƄwT?J!0*S&涗/H8ٻ^c-Ϟ$Jw(XPV)_9<tV0QݻRlv+l%1<ji2~,Q2#E6EeecYa dݼÍ.cWգ褆 3EG2Uٛ,G8̱xwbd@"P:cqO<]z'o=,ZʣՆ%;XB5*}@P ;IYʲ6BŜ?Cէ,R*,ڟzdo' I.DJE 
+ M-ϓ2F/M+*ٽ?D"֒Yy6e]LX>oGT(@ٺ@LT#S* PEBkLdb:N8 r|pP2c@G^6`juTvL3ٷO'q\KeqO+p<P@[ɮlԋ4JɰRї95o,B99Sٍ?K'賭ݥX FGzQohQRZa'BS͚<}D
+<tC	Jk6xU`R= R 8Էƀ0!E< [f"*)Xy3 $4 2`Xy=cPCbﯕT	J!k*i}Ӗy-,gLh~\wӠhݻB"r撱-&[-NwG[tx.JG8RpJV-L1bYT Bh5xF3>O7٬/*GfO_C_j4)ȓiRg+ _|GJHbN<BB(P< PǸWڂ8}sin;Q-3^|8AG*iTqϕsJ%QѵWS54Q"ۜRYx(H,)eb*Q[#AO޼kyC޶	=2*Zh=sxڵkg͚?w?n;<<x_~ |& ,kѢE?0 H)g͚ui~===/~s_p%\7,`gf[4{!n,IJ9}{ue:/̝=~ͼ?^s5V9?ruZ+:|j}u%xT7[v:Wp]bln|_d767\@( E/sR\.jx_E (ZtlsGOFbF!=#d?x2}7tVH#zxRźnSNW dxn0'K#(*T)]pj?mКI5JS*{zl$d(f2F%at8B15Ϊ cGGjhڹ/te4ٻW5C>iuY?yI4q3BHTK4[^K?ߌAHmxCb+vف	ʓ@(UC)u]Ԑ a@
+8)"NBKl l[nyޤ##VόMq2ީקEU#Ay\nnN/ASGlGx,0d&]Gq@f[7>Bq$x2ɶx^C 
+:D(l~z>˰S~tc[~@<ƵL3AwCk^?o" H#)	0Pp:^7J@4 	R wzvM4'A>@34ia3m$	jVA0,C ﶗ;G2@Wx3AC01~YZ,km2Jx\X1/G{cV_$*	O&Tˌ>R.uE CQvhCeL<fsdLlE[ye=!L6~Q}O~A|fF,tmag9Oƃd/۾{`|E_ez뻩8.M!HL1.Jwg~R ^<%IvilO\+蔾Oh:"JfIY?q+&nKRq)d489ǢP :2Qr^س-]'}߶~{zc?U}+_R[nddddddݺuY}+_o'4Ǚ=*0Ƴf(˄𜘘hoo{\\N(:(ateμ'ܽBKak/RtY: 7NR@l&ӷ	˸_)]a?\_˙;~r0 LzWV)}+3?G\"V0gޖv_憋Mb*;-/ cmڟ$(.f >S-(mׄrL|";EB1|զ?.S{rTK_[㜭G-WXNl ;mo!:c\hUM`GIBձUJ't1d0& I9iegY=J	Do3#7dxZ73)f8#nm<JwND/Acܛ^"0⟁QA$u	ASi8y#Q#K$  _7(ڨ#x"!j$Ǯ+VH{ѧv4^:aoan/jF&u GBe 	 ޯ$gsB+<U)UNG5<Igl$썪iݽjneTG.yJmGe J֚o$_ʟ
+N,~"
+K$0h9Ѝ!@PhAsZ#0}ޣR@䂞L26PvH)haF1m<t!BCLꀨv1d0HNhNB!7,PtP
+]e d|2M8'B4
+Ye-9]YVs;{Eɔlh#hdQ0Hp3vJ5Fiiʗ(&FM|F79lYb8ݽ|`%ß|mmoODюWwouc8[11r k	֫3OpI?dk1duq<琦}Mܼ}V2jё'b*8O1;:{4UG&2CIx2V'=M >ОLLm&}!N6:{m[IӧO/=k"=3<s뭷o=[~ƺ{ZvkպuLiڂիclVV<(sY}yG*A|iT4%٬}=mg9{#u8}\-͟v[{R)x<M	X-*?SsZ`MOe 9 ӥ*86f?gWg;ܒs% 6[L3ݹ`ݤ7²yk)=CP}JL|۸|9=9YWwGH[ȮLK_&4,d_eK-qF?]b!wmY냓/;R;Eq_-VV'5,е@iEate2s
+h:_fhO%ɌfxzRܶPJoD'Bv%.-侗/bZ}m݅_vr/\etnusθIb^:æ3 ]|s 
+m:ȶ<FIP3
+-,ceA;E(Ma *T"oa%@XqK:R9)9Ș؛?K(dnv|l,MOt5d륻YdӕFߠ v]T]@yyg Y_ͽ!۸7fmBC{Ѵqjb?\,% A0r5	 SfD
+2nA 5ar#h@@`y
+LA) FpT ^0[AfD P
+ ;6B@\wk` ef8"IL$`f⨢WpTY'eapcpe<dO^qK֝:Riڴ6{礊.G Sg 953s9S2L%cMqkc|t$sUu2,S{F7 Ͳ<^Qh8wd苔jB8Uמ)ztp dݖyo4_鿋, aiv}A'N-(tZY]qں= 2SceR9t3Y8|!IpfWتwmFȼRNWI7=6駟~/O:?|̙?|xs<s?wݒ%KVZulr?~N;mܹtzќ'2 ӊmnlE`ZP8ˍ?b*k?ɁOd/-Dw{o{;HG(
+XpU{:
+rOo[hhORQ"ڟdF|(A<^/TrҸKQ4_셋t/<eעtA,f<.R$)NJd`Z玆8%ueb]['{9gkP-Y6`OT
+='Nwӵ?K	m}%iP)rzJ廤rOfl8fRV0lNX{e 82D&[7S>EHEV(ū͛1b$M`#'TvwoJPn> =^(:1D,Ti9R(HZ"+h5-'$ TX0 Љ["@e8U@0RYeҪA:]C(\bssb}X?|
+eeA&JAu} D=7o*[CVx<(ٻ GɾBTLqJ)Rܜf˹oD>ۄ Lf]r    @Iy 
+	F44*g~ e-P0qr@9d#6	@YF# R`
+Z+B(hy!K vAN `bt*OuH#(urm@r2 
+OTr_6@ ]2dsZ&]Yf&	tm-L4I,VAG)T )rv#V:vOٶa7'dq}C(ہ0>lyGqd&{l0G*G#'I	A|D(fG.eqP0~6ٺ9=͟ԛ<ML1``RF\l?9S1d8f{׸bTތl2P#<AZ6~mit±febWOʬ6@n1H=J '_8W|X}B5@Zkn*
+s9E=2lgu։'җ/z{7 ,_k_dɒs=wFGGwqǛni}يp7|sZ,Y2mڴξ(_E(1X)Ɂ    IDAT') D h|^uk9uBp-?Eh릊}Üf;033Gp)s%IFdgͱ(Y/Uя¸Ap5NiLvkLvףc9ֹ7Zi:{{?dVcƗo;ttaw~0yv!~tl&;((i-)~|UJllǕ2ӊNdÔV Ǜ9ƋC㿝7M+0t_Q<(MwԴ,g4e[K@Q3?ӕ"JR16yg8]4)@MSz0:Wul-27\UMbzmRN[NƽlF-˦dG,"idD^:Rv2<ulRjgk3f`@#4d7e2\OaAn*<Ißq 8L	TAişZN6ɡ >M.M0k,7&ޮi8GS^Be*BېlWcY*$5̈́i෠2Ѿ܄4%(LA/Zȵ,= 31R0L!	@f%۠A  ̂0$f bF,Cِ,hY Q"`
+2R $) MA!	P dr@ Zo6j;QkaoOpӻwL?> IE+^$bQW|LITT	xHx PJWL6:XX`+JiՃ3?g;ڣ
+g  JW+c٦ARFg&N$D=_.E__㭟~&(
+*9(]Ȳ92/҅H&U8!CRTfx R<ykL/vƼ-F?Rf51M)=%^|lo4qB^Ή'h~z9sttt<swyi]?{'2 q?Mt/YY:5N`d]Ѓ{:NyT$I:!4MN'atmB䬛'[EM{)N
+4^3~MɀZ)ru[tGZ*ZYOT/:a=Ogx$vZ>ȏ>gV-͛51F43MZ0Ƹh}2/rZq)^xbԊ- Y+#d)"vC|.`~i!$glCƟY7S_̗ꭚ'{BTZپ!,ơ}ӧҬP茒Β,+ $Z;{Mvk;w<#r	HJH$drA s,lIBcr ,(F3i'?f[ݧΏS?zZ{wٙzO$%js7v󦂿f/d$u燱<hh?zJHla11ʵiPPt! iQV|YN'?W	//g6tXwa:a	ZuӉ:^-;<7:l?/Qz[r:QTHL<&ˋ	'tpT{$bZI=r0㽅vAp+.>,B2hPHԧPdPI.0q4s ".>Tg@]C,QFA0	>81*5QVrV (" +} h^ݽk(CȆ E$(
+b~RB|R'Ye筤g_czЕ@<<OŚ|
+ CK#[<j@FLh]H@#L:2`rFxp=?t]}vŶx,nd򙅞tOҋ]0A^+_1{%ՖAVqv!0;|L2!I?S҇voٞzqfm^x9%!wD8G<0}y[ <76;HׂO d4.ܯT?^>tA&/Xջv%Rdߨ﹘{]K_\p(}QW^yM7=9믿n?<@ݾkӁ7{#t0rƱ~ݫJۦTEjϲaHsJ/˖G+z!oUKalYkqnm/SJ7QzaoIwbm{%hȥRmgw''>fΏ	
+ƖgO͏j̵]-}QoWr9?)hjg:=Au@뚧eًׄۄ$}=0pye`J?׿8u$y);➉aضNWHjcf8gXKI瞉saFK<ybY`tn̠;}LJwkY[ȲWJ$x_a]0dGIIצ<I>Y@~Zi[j r;zתlj-% #ǖ-*#)14dGGmi"s
+	yCTWhkU@W0	k][&jniZ/H8H/^FW{]Ketf+ɫjUl46%׾յo7*O-둱_b.7W/Ԛךs 5EK<2쎻~aFp}:]Es#8/'47@k3SFé"jC*n?<B@y= T ^Q !nC89ypgP=#`1ha`®X6AusP^J(A8t*GQEmDPE+f{S 85.%hU&qD%c7TΪwmXqHF daЃha(4+{));T6ȓݔzDJa}¶~dJTm&By(}%x;J5\m}s/loAH(0;ŲتLɻJ_ܗm׹<>̟gcX H2.6쟕_j$js?۷ok/_LOZ*=#.Lc\QH]Y^^^vϷ~_9x׮] G-ZԂL]&vϴ0y
+JA)zgٙx4n)DekJ)fC1m-M6&fSFou>9~:Qc&,?)Ҧ,(kEUZW8ݟ+[#0uwQldlyqBɻ޶X^z]O&۳jŴndJ׺,g{˵}E(/)j0zYQlf8.
+	nA+Q3ϏoU8pJ--aؿ_)
+	-zv$xqPa姹-RnERmp;yq[-k{<VΟtBwO􆟜O.J~\2'gg[[w)ݰΕmMGm[rS2]Jm\JWx
+XJxҸJ]rB>}0.6[ٙ8Op~StپU߷:J/6nV|ed4 $Ńvd)=V) e |x]yA=˶JXY~;xq8C)[aZ& pEB!P,SCmJr0ZFhd]wt!\Cx!\pg)]PEv";v4 CpFCF(oDچQc$D(oh2Fs|+|02,0ZDu@!Emq F!|!,bA)?I^Xo|w4<FJ7jGƚtߦMg#:]j@1pbluQfA-%CS ]*ȌŠ]/GSIuq  U;26l^f+u|AZ?M%$Ɨ/+x67?"uuϺP{5n \qw;zɾEwn	Fa{2-S4>!a%$;W[2y`{)qOպYtfz<&ő-6GHu`] 0M^Szl9{7;ڧ~_ߝ׾v*ws=}w9?Dn̿}TH5}7Pay}H;c`ط*ҲeyqtXoGF[mqOſƲ>Z^%l,-<l=a'}矓)zs~|հpCr)p6hS3yJ~'/.Rmnߓcεn_;vdQl75[.?'W_7eKW\Bm.aZnqRFW8GV J4||8^xlUcc.U+?D֚\ϭ~6p/50OVEJ5,!ɡ"J%0Ob+y&WAC֗˷`wMލE\suNN7	;J_XVW?V>Fiaٻna \8? Qz@Y>!x"O8gT{1LU}($]'yc 2\VJHUiߣ?mx>ߙQ%PP,~֗fyqlf'zۄضx!Yb{V29ߛϬUH[sǦnhJz8Ds8r#9JMV?
+ax?(G0! A6w %DnF>܃Ja2[a4D  %BGރQZp2D2;;!<@y=6(#YaЬ!A	t` @uQ(MaxL@x~OvўCP C+6%u_l[qU~pwD&@GV3{9Pb2,tuJMT-1J>'JH*	e!z.gj!R:|1(˟hUBj`͊c =X{q`X]bQI^Ϊ{@(T ?q~ѥAu5/u+?0$l;zw^l5V*u+rNzކE<}	&-t]-_<VvLUws__0nC?!OCG$n/5HBjԂaOweA^ؐguW^nz1ɏ̎/	ܯ]M%+Wx%?UIg8I~f	{6{k;Kx|F?zwۥ<q̻O=;έ}=HYr6\]~WF__+$MIvg5~p@]_FP9[lY(	B]-,?flm864~tu2h0֞+% JH-ve0\i=KO\^qr֠\`yƃ,i9Ǻ+N/
+1Vz߰xx]T4O
+oNxDХ4.ZN)]bd6Dt!0c<dO4E_*((2Ep)a\Ԙ)L1Te
+9°LIvԭX
+%QźwA&c}g	djB7i8}1~fꯍW/0<?ld٠*!y*Pbank(md#=0؄),(MY΁ph|-1}F;E
+x%!ʠ6"p @KM!Bih"! "ۄ?/`'J2Pw h a-Q.>ѡdֲcv_jo|#}YIן0V_W0Jˆw6N_nt@Q.4E[vҦiIWf]@*!x]a{3$g/xx!tCw?b$_yQ8J(	[oEV|,$otb{.wK,%v˪.fj3#8?S`ɎMBY7`Iq ?v}Pљb{*փQ2+][~'v{,$s>-~w"ڲ>_78~򕯜 ;Ow~>?ӵhu9[F}% *`It2'`67*Ek	AB%$+k3`x]Ư}UsA.Y{K|5t`v,7?7yc
+T|[ʩBgyss% W_[*۳Yn KwW_`e͍Wڝ7{MBoCzQG Xx`4{ X__|F	lN	GPw`y@c{K'	r Hc9zQ%ҍ$}-w7.9Wk8Uui~-&$w_s;?NM	2طJ=5bi=7 Xh[QRRM愚؄%00e6ȍSxkZ[4Hg8´`kݨ^~x(~Gky|'qf4#Kl#$	l{.fIm*;g8qb6`T9Vi5XA}A X6}#*YEiF#\߀ Cuuƞ60> :$s(M}En壐w0"]EHdM9DgA	E^[04E2B0>nCI85 ~n]G(7E} 08aJt:jkmgmXVI<OW;V}X2?8Ox*IMR%u:  W>u]Nqod)%(?ÀjcAjCQ^lZ {&zΏsŷ'RHݜ%2\݉|F!JU[W}( yLmŝJ)SKx(W[?99p/ă.&$J\>8L^T⸊}K*qC?u۟]t^{.濋{N+JvvM	߰?{+8Ǻgck㭦    IDAT*`,h	EKWLZCFS	=_covqr7GI_MG|zVZ?Z|/N_^0y`pqʲj;PX*׽Ѳa (^
+U;:p\n|RklJuT<˫RoyYQQbfW@jkn+hL=@8²4Zp  -=CY i$9v<ܨ'1:&7ژ<p M[
+܂eg/=$s9?a5wzuް*Bd@^/fYݟG.&8S{gKIlk_rl2~ŴcAWWlPKKmK=ZP԰6)axRZmS²@a&O7ش=w}Q*SIlBi@?oܯ*MGɫ,甚jV/.ns%]&۞frӨژ+
+iy2Go`C?1#Cԁ*@9d{Pdo@E0ë{ AH(f2!B P@&]0
+,dV@e+&@iBEXtV}`:0
+-9QȻ>%t1xDibrm@a> ~~EǠ*-**! @OzcW8R9?<wqNrۺ
+=]v@ꩺsGJ|ȑ<3f! 
+(} ϧ@)
+cӕTC/UR/?n||-D/Ix`J#Q;$Wk|qw9]~M_&'%s\͞IPGWRP2*9?px@wyitwԭ셅nz֯ahٻUJVW{iqcei];ߢd լwdϡ$E&ДDeeASr?hOIBSWh4mxOK.曇p8[ϼ\WeewGgi\3a^sld4T&tDlzsm2CRPŌQ_,m|ǹǶ-#*g,BG*Dqc7?\LIwf~	q|R˫==SfPjJk]3Zsy֍8~UFc'TB'//u~y0~y̬6cKqim0!΍4!Hcxi~) ՝pJ9~lo	љټk v %z+%8V(reTWJ
+.0gW&vw;VwL^ٍ>0Vb|]TW{_剝_ejy]$(
+=fEV8Mkw
+XQaԌeLIuܐœQqTǯMGkwmvbiXc.+mCInHJ{}mA f+w]YYtb۽r<B<!($,Ckpǃ P90el[SaAHV	p |Q!#0aTG/l8MxA8T0E݂G8FH`A|V:8-F`.NAX+1n8JQ!aZGTp
+8:/'/tY'lwV;	n!-m|uzE cin
+@QlP+n1-Q1WB1IםeV,'L>֍ˣ8]$.BÑj%s5SsI4Fh][61%UJ"Lыgn|0~*O錮\/o_w_ՃOjϞb7rϺ }),t^GIFI^vRzE&{OzNiqcԭv</$}%y׀w`b:{ᵰۘH BBXXZݹ<ht&mYl5l>~	`w_.Ɩq_5_.{b=4;+귶o0ƍjتuYG;onZA77]pJ X^lf߯.>s<EsaoBXKJR 6O պ%/k^h!юR93s~z30`A X983{\oF#I|׍,Y XeGMm7@ @+CIY?uT36-)Wn
+U gm`'J04Ξpu}2ڐi]OpB(;TVww~QUtwE/>K3]@/J5uc1;JkgUy#%	X6۷/HiRG@<b@9$/)}<WG8s+Ǻ'̋3Jד楄(HWOF+Xb-8@8pa(ǨR0ˈ:`Bf?@ y,Fe d:d=266
+`I
+tlXps wD# 'ˇzq
+=Id̃H௅)இj!AÇblVT (Փ!Z>a,]xqZ!+hx5=x5(C@
+K$- Eox9AAHtPǗW1׬t]<AfaA~Z6aQ&#ZטB94(Ed-!kc+1hcEpc(;OxQ'9cK|f|뗹HOtg_Xi-P'g/1Ĕ[rN6BI:]{\Gu%Uwf$|)	)v<mZʔ9]@oO]tU{.o?HwO@( ljb-PmϻRTo;ryB}B!Xn_Z.54;7kFDBRQv.|ְ~)H+ 1%e	֭ryl[`]x~)N_$ehM&!ʣ^ò$1&Cr@fM~&a͵"OZSp	iRL$p+ $].Ө5%0˅
+PCN<Em܂* \,R2/Z6<rД	uUGXΊcHzޤf;	kyGS͵bUH6)M	Y@&+!VFM/dIU%'AJK9E둅RMt2۸vʟTTտFmR3ָ(Zk<N9_;+kJ"O7-u v.Xs6{P P,)c#T7!P9dA8:F0|TS@%7CT0zD	*ha* 06#b	#QC#0ԆD>Q Jlh(%P<>!dֹ= 
+|v"X`T>>zOCF\	,K{py~ryu;[9LLi}}6糽R5YIϬX6ZHh[CU&H_2t`D~TeFI15f=ŀuw(,s#Y^؍ϟ͏_%S Jj\˾d]gmJ)uoݱqԖ8"mKm_?)x_h0ywDkOhccM^L\U-YVojV_]׷vcK6Of/J3.ߙwo&!zoVJ]xǣ4,[Xy
+aV&v>N xx]?T)T!(qrNT+7; %X8ټrƶpYlCʻl'SnYBlEWV)8l~F[مZ7QPW VV{tW7"SBR(^CpK.|V8c>EFS$EQc56 N%d	,VZx V~Pa+Ƒhc22!Ҳ%܁NL|1"ւroԟ탖p:_+a;([?8%^zl]>I_PBM1m~`%;eqo?TfCj "Nlŉ	b`2wmXjx/{w)>hf$99'[!f[mc&Ϙb8<-ΩWXƸj-J+UV8d@`P`W4ZkY ZMg ZwRQوXN#"!P215܁ .p*p7־	5:EF[w8S%Yd/G:gFAEuC@C CyXcgHmyX{FO{AGaW |uhUPx5!TQAJx@ת_"o?-~+Q윣ǧÿl?0p AzB'WXMWPD4SS+X.[X63B4`Ψh	ZԭgO>{Sʵ[=#bCݾ=j)(WU槺]Xav!!)r}Blk߻2`.3	mJ<6cx 0TƸeW5络d[~@$/ 16BQϾ_]W=K'ݺu5\s8|h~}۶m:ɰ<De2Bd<]ײ/p1jC戓s6J!9TޙW_2O8VW.vj5fGW:έY<Huo40J];y,Cg,?b7lCxz5zunvSxlYC5QBa4 'aOO$$6w1dMc@A(* X+ǧoSTџ a ,EpzX5,sP
+imH]Z:@I,ך*P@M_˅̐Dp\܄3eci ܊'H^lm^}uɳo|wռ/8틟?n95K	|TSך+BQr]Ďɩ֝<1Q[(Y)}yES n"OP?Ki(5Ӻ۾=ATڣ)+i?W5 npv
+'(
+f2t	̆Qۊt27Mc
+͓ۆ#`-#;BA8ڿE0gq0@%`èم!]D8QmA݀(d܍K=W@M ){U	S9B6 @`/,2SE>]=8PHetWuyƓno ߏ7^OOYx(~}Vgpg+YQzZ['\/ZGkL"#m&/SnآîJd`>5MOG/<1o#EƐ1"6pah`M^!헬;ETPvy`}ҕ<etgoN.'RW6537K(56`u'ZGPP)S훻;iϺw)zgY\+X~b&LX;}n!|X&|=bqFg޳gf޲eݻ3NY=0m=:J`aax SgOdQtRh$W<JH!aGzQzR4Ǿ'2s Q~	:t9-$CWgt1A)²:)&oHV!ޢ4xhtg[WPJP|s:x~a<@s=Tќ|>3rv1WYUs}Z;fWT@-@`6*v7M{ZQ(4YE@((RUEv\9~a<Ϲ8σ78y}wc1a<!)qS2Pa1q2Ǵh6AYM%G0e7hLxӡnPcA:f<8dc,a9y[c8a1Xnj("'$E^[~{x:j}jg0}nv0~84"ʯcGʫf8V3JtQ*#IsVÈlaT0MTSYr8_~#/7)oj:7ַ0۟7թ~˸|RO·zR]FkJfTU۴NcӲc{?Z#q`C}
+F(SkXc(${u!PXu9	fn0k=Dg2140Btǰ:f㘓:lx6F(C|($k3܆
+b4Wi^h>2yo2e v1}+HF
+]i*
+rI'9Fcs݉/oĭg&QtӬTe(~T[5)"[O}f[*WVR59|3
+-[کը$UXٔfC5c3fBE?/:SPزH+W")vY׼7:Z<0M+̳T>7.Nyϝά&g]ふS5K_wD`_jϔy?̮׻ַj:+UG80ԘΧ\9Õwo=ί]/`f/y)W3w\տYvwnv*ʜ枂OGa3cZ$IV:9`S8ze-׵ZN+u.Mn-:Ulh۷/{2
+߿sЛbfWCʜ"($. ߲algy2O}*/.0ǳWk(Փh!R`T9eNUQiah=j{D#pD{YBw?ei|Mw"C m`XiPd,"t)2e)i:Ni&,ä!ydO?T2z긐4aQ/;kn3r\D]eWGѵk}'JngD,=/;쟳
+IKQSZ@"W
+WL\Tr6~nm6o(jޟWK\p#xdOt?LT~OkϲVVlr~P    IDATUL.FwktghA}=a-Q[ *&	o2澽h(34>;d=	iQL@g>Bi#T	eh]w!Q<=H<E=s>Z =_;.Q>eDԮ&|s5T	Q"bu=t~;3#-&EHpAcL]ImA;PGXyBk,gktf>Eɐɩ;mԛk&uƐygDYM,߳Pi	Sn׍'+8cCTi\j;LKGX$עz鴁Z&UZVp*9P" [L+u+bXV5!v+Av]|p7}vR.}KdV5GI`X|ƾss?oY'Y9?(,۶ȪY)RFӒr`熥;]붴g]隥%8iٷn\7߷-v_=n(u DaYJuuݟzOOoy[~Hzl}p!	Z<qɪ^|e]ܷ$dsޫ}eIsmݹ=!Rm.m}0ݿު믡	3;-4&~b )ʒqZ)w+IHFΔ%CLX[{a^k'"kת<u@`X4&(~]1yӡ*<i0dL{ns)$2Y}ba1Įl&Op:(˧>CY`T#epgdyOԐyL7WRa؜~mEk4!$hXPg4ro;η(u,[|;,;Eqx;~grtǧ?^k<8Ι9UjO%j[BDmʬCuB4Qr\6lDloQNG7}qz~G7NrmD?_Ȫѫ=o<6Y^)	e1C	o`h\+9Nh6U9A$KSeMS;H0> ȇN"{PU;C=sd:ÙBz_bPa4Q)(*EԞFTAŘ]O.#-ϣ3}Q@9$Y"9{*(Gh۟J)Hi3>I1B=t`*pw`?`,Bm!$!`[ln13}kg3<͟DTUG8)/q*]BgUWPmaXU2W
+BW.*dMEԶ0u[2eĦ35K@KuU ̞O:jh]ATĤq6dݙp>[n'V^z!wo?|&?ͻjZúCk[WVbrɒ[I<8:~kqۋ^j2"XTy5aqlX8t_Pj{)כ>6kx\Uo?dYXz׻?W/Кo,ǘXC?j6bqjX֝}r8z!<Ky11_Gw[B&&G;Cʒ´HFU5s5+g՘Ȣ!B fo*q<OGGM*Rۘ6Rd	))9tG1EwҦ
+	qHJm#%^2'!O|'^[!CD$ eF5Q1e_h&\M:p
+!BkIʌ*Es6)Ґ!F=Ləϧ1Yii(yeSsc}u!atS<~aƳ_tؔü)ˉyc[K=c),Zkٔ!/\m󱬚;]k3u
+;-A6r;MSN6ǿXM^_iTrSko2!.2m"ǲ	&md$~]*	KiĻEIQĘ5 8 h	Nl`6/#@(ӻwRz_;(%=.Q~EAJR
+ $!0;xIPD:s7Ph&]u{H"Y'ۥ*F	!Mzf,c3}ʜ, [k3C3(K p|u^ji?6n6JU5*6?%e rZRorm%zͰʧp`T1*~dU`	F.}USV-:5rRX
+GeRg0?j5m>9gȖyϨa~'*rhʍw'ц-Qk|l ΅=zNxr_nuϼ[ɵ<d//kY~}{rs]U@\.6*C,uη?7L^%(LuZ/|7?=&5M}w}w+{sveb{UhGIC9E(żF퓣eQMaCmW:zcX_Uj*kRRkܽ
+(2"M+)XzFǳTFo/s%0IFDYà(`k{io~ۜ,P&A=i%#ä(gzk$c]:y¨*:р<mT%yaS56	
+"f!L|tCDHʂ=!K0S	e20 ]CiXDk4c(s"P,g֟9^fWFQ6(~yfYNjٱ5͚M K\{|랬x+GRd5ʔuW颪J[D4mOg0MnʾSkV˕rdrm'EV
+9ؽԳnɋYۣa8wQ!it=ӘԧhaxMjX5:YN%"" 2iReAK)iPFkEW`_@re)f(@X$kHU'g!b DOJ){&9,gv-@z\J@HB	=2qIlbw>.3DTEH ~E85iE4i,it&HYh~ɴo9mJn?۷(e%0i;~QTNmSΧ)f_>5w\aL=eJ5۵B@T9CH!Q:F.Ma糹n#]#jWP-Qqؐ-6Ccg7;u=7N_Df8>}t|f>ǥg_h3@VgįAhE5XAʚ}!'5}R⟰Բ!Fuqqbw+WS"ZR.7t6c<"D|nQq\0Ͽx=ϻ eBO7(sj]!6<V;7}淲2k+oݿxU-.rړ}|0?tKsbFea[F8kL̜>5IlA(~iZ~`MHEP?yn1'BDAq[&IDspNayuʂh, IgzM
+o1ϴyhLBtК,	hk2{6p Km<$\~c-1`DxMnh@clۢut3q{ $~2#­<Dgr6%1ަ}n4FJg4UY׹=_Y}.NoLe>׶n<-e|Zoh]7y!vj^~l;2wT@ϥYu#zl)Ba~ERNJ}7oCk'+.JӫGw?Vﯧ[/ܬJ$BkF{jS5Z ELUEl̰U+("ʜG' gtN(fw9B1#~-c=Tl]RP>s2$5OYL*BHw`ͣ$g輐|k{	$/j"|||l!3d3aRw6@y4.eꇩRCx(b&.F+h.<'S(p{HBzàI+7j/t2m.xH|7z~b4fLiXYBm=]W㨲}m+,`Ҡ&l'K@KJUcTZec]@JDb\KSn1K%y`<>ʞ7gwv;rP'~b7~c[io_˺MF߬tm_eMQv?Uqvy
+L՚3}}eޟ^"ȗw/G<vkBL)g%a#Bv07͇x޿K[ln|^]{A7ExtBV<M(zk=+ZkgY7̡i!$UydE`w+ݨ5`l<NRmu, 쁠!(2jW<J)åwưC!%8>EFS@X;'}M##^CZHEUvcI($aPZ3cz[	~dHQ@9.;P)xT81Xt0lHvקsX`d3<@o˒2jsBZ<|l</i_4Բ!W`oM)ƻKzeS |*:js-=JLLTLJIZdKk7gYr9`[vKsG\fhL74۷V%qԜOFʥV;8֥*3\&Fmث7H{4/a $Z}	> ^%8DL\OC9ƞ'h0@g@հfI
+]zRC1At3a<IyX$R*B('h*62F7&Qulg-OJ9Ӻ:IBDK4.h.,n#&lP6Go	"
+!(g$ l,e}s3o^GMLJg״[3H>G3jJ4RByȴNujԅ%,WqkRڨvDEKV匵tjײŊjH<AvIü?f<cʞoޞGluZx'~q`>PQQMfuOXk;6ՙg-{&957O˖%JD-.!bK	+iqm<5wd!0y\0fr={k2̙ؿ{Lo3 : E+зY9!b]E?><9we5ϰU՚{aĖSƯ鏸ޓUEM5'4I6Q KUivI#"O"R%}Wa90M.tcP4;$w]A+҈$C2"2=/;+dc'LثǉXSI#fR ,Y&8́PI>Lt;hhgOJ>V2BQf4cnD=,<7Ҙ G8|#)И>6YI:i`jG2ĭ0y6%.`=3˞ٟЏ_'M܏ܿ*̯kmMuUBZOZkQ+kW,,"ҙ-Tu6?
+'uEyPJA=_E0-v֪D)ȔE9D`D=]t"YUg4 M!3s/߉@)EL 6D9llP_)a>:'ݤ<>$ҡ<-.)v>G|qMx:g/PT1R{U5C:y.0TYϧ`Pm"uv>G$Iϑ.ӼQ$K|@>$8Qvi? ӧIv ̰=E8iLUR9XﰽB8$Ma󌝭?H<gD]tlg?Ϛ%EhWrܷJR@*GPZB"WYPXof;F4W)k-YV+5MI1/Ebɭɾy9F鳧߉mOo_/#WvɏxvfK-֦)ϼn}((TYuG):XcR˙qvd7eJn惣9-Gۯ4G~~;7nSeip?kx؝g}JRlkhM^TUive['QƩ7YvGMoj_*KS',@*6Vn?Yd1,LUI5+d4;"m<oRΞa4MKU`Qy
+[p3\*1\ƫTiLshi!	%@e7Ic(*gx*PFH{'|&_q[5BHFg)R~dVppwrI!O'OZi>;u1RtM['{j0JQ9/h'K=a;?`iظ8hn14vŸaUZ 4(X?ZTE5iSndU]Wjmϭnq4ĳ?7&B1ĴPI~ޞ|2G.vt0}{Kec)Ĭ-c3q
+e12v. 0bLtA@Z+c>jclE	2@Z[T}@tEh$[AQ .&ER>E4B=.	.FPo$x
+Ad}t=N02AtB("$OIRxFUоi_t^^&O1,6^h|ܴ@%$}~bw[w5SOu^EVf!
+IsgU}¹y][jGw
+I@FUQJ+JVFBL'`\\mjYp64Ewƹ&p>fh~~n,7ʏ4{-u&̯pɇk/k~(/W:(uPVa򲢚,FeUU+q~(U_:/S"w'o2N,qW-rk_V3a~o~.jV^.V<}7ds?nϏ}csssqlIC_"pn䚒`4ze=1|o퉻'_(rTl?h{3jJi}rm"%Jќd<fkw+Iњezג1TPOc'HhZ)IG	+[Hvpi`X4@{+`{=J:ĮѾc$=۔@WyNU M1e74I#AkUvêԥd#:x{Odİ	a8*'|    IDATzUI'V%O>xf㏚ݭ:yQ^~ۼ}-I~k1z0~E?:eQW}Km֎uRaS?ZW@s󪕕s?jiܭju&uCbWm~0lD D~ZR1ZGk,FH@!M<Z~ wr`8h%Ul0&V|F{*%>C/"cu.UJ$k.Śk8:ûXT	Y0(j ,)S<)¤8 :'9w0"Ÿ}2ƞLHW:H4<$8.vL(b"*77
+]M,z	:;[?^4\O,!(;/GoICI~EͺMkt>)=ۅLn̪ B50/SuE%yL(!w@{Ү|W	Qs顶SnCC0DҨJ7$TilmCnmGڵ|Hk;,DZ3c;jy7~v0E-CMJ
+Nv=VsYnZrߡRu+0y_^վ(^1azE?S}<\h0ZBEoڗ;7]~(tULӝ?|PUXz˸341+k-ΖʂHh&No=bOc.UIƟ.V%>feILt4D;C3JV	f1Uk&.n32dp'8Hbŝ$G$7ޠH0M>Xqc I61Iar}Y,׏W4h'~z	P4BJQp^h[>zAlqz߾y>VglݲoY_PZrUZ;2oy/wȵQ&wc\E9wֿKdyqLʾa>)9)I9>ˢ=U
+e8	R$s?3O>à	1{gn&6+Q.$Y V.& f^"CL2}XSKD3L ]Ş,Tw!$KzNi>~sxWޏсsax1Bp2*99M$'ߊ9`vi<a=r1`Wi^աP`6AcԐ6$~`uKc?ݣVc=u׎vt?m;Z*L!Ue^[l^@|3ںwZ262'/".M-#d^3Ζ =k*0aM4+gX&[UQq1eZى*S[^ߤh-,}y^r[e5o'	hmoqҒ9r6.UkHˣy5gU3Iqf'rUhFOBҾk<8|~T|6+iJmu^Oݽ뮾귿i`91pFEBDoݢ=׽:e{x5\wmU7͇ƶOy'xt&CKq`!I31}4К2ǫST%=ĩxeRdHtLbڜG]yD4hϠL(!b'FQt S5*6`5p&=2
+@"!e#Mğu FUN>dM6%ݧ"o听P&{gR4P*éaxxm.
+pc2p"$y`x!JǃCBģgMcs>k՜k<,E_6Tdsc70ێ_׵VH	(Z/u%+ Lu&ʯ0UCn?rvTdQK8z`UK2?ex)R,bE6@  tEU $UfZـ 1iQ5eTOx_d㯑&$GHNy	:GXo<.?zsc)Ȗ1Ac/PE`tcAp2;A؇N=Ht7WS	AWQFrαf}UJF3%2I1QbcBwYK0OI,Q&ِepBHUixҤVWKI]dYqAQ.>Cܸi;|k/|nv;vGZ75b[T@CYF>abyܕ.SZ*L!SWT+VSfFoI9:~FC'q1^_W->%ayel+18Or3-ַ6{M9ZK)L>5+5u]dSS_$徶Q~0?`@rVη;CRDJn{oPw?z뭟ԧ.o}[?{lE:nul3<T_Պ(zA!(E_J#,FQlI{i<T<F/Ue/`LkZk^d@kT7MmCo,d)6I"Q+RN>LmMNbQx]R&Sd}K	(39ȆL^-5T9v~UCL<!91,.{EES;΢FSlG 6WQee}oιv99՜*
+) $&h⍒`HonH1ѫ4Kn^E&*Syv߫_slF\X_޹xXc5y{W)tqBu'`9F{	KDgf"'ȣ?6eNUN_ӟ4Yv/.Ӎ0Vf:+У>WSPE:BX{Qݘ-3M)E2+7r쩋I'?/7韤ʥ9;ޣHS>DmRg"I.ꔢO,s^ՄշQOXNkxK 1)iߏN(8׈_.0{[݃$N 3#4!- SV4=aR]C@:4^}+fJu8KkAqz.u8TqL>Lup;Ǳ%o6!BA|btYSqc6ݓ81..ix$a)?~ ;3K-[vԶ>,U=nsEQ	jPgUM<A{XB0kB9N̪n}^B/^vʣ6KT/ҸxVof4/XX<[+y}@ƪy6kAq/&n2a;Fʢ:ۍ'm}.x}>O<[ooz_e}385dcV뷊zEܞ[?ǥeGTq,,}U#+?vW j4_Sr腤IWlưߍiW38X)3LMG\1^Hs<ED]\$͈lvS y熸XtA`#TS܀bלC st4Gcu?tVvfX\@Z@5"]ڷ3uB|9!t)IDz4p4׉zx9JɆwsX+=UrYXǘy\eN7(jCm$S͟xi'%D>黏ܗNwLl֛*W~<C%UV\ϾC۶EL۲USW]
+Ozs<ka#ڹ2o)s K!ޤ	n
+ק}Escd݃e+仨 wbƟ@5 S V3'h~3fRh?~[!+Q-[	nEx	>9TwzwzgLɧq ~M&eQ '?-H> Qlwj[-$мH	C|3.#;k8\eA'O~ o7ϕqcaCi*}LYZ&+f)t[,G$mv߹]eqGK}.#t[:ecŒjD2PX_-mjK+bj<VpĨ^sɝ,mH:ե.gVg2>~tz.N7wu)
+c~W3|ʨ|`Liu䧗g/OrhpXK}J̄鴃f_owww#/T#g~a]{W',juoy!ٔ:r0f2:87m2d4x0ۈD\[w.77U8.=fȶ$;sJbԝo&cGËIA̓7Cyl?Ms7K]x8!!p|N<ֲp3">Yp#%XdvJKL/>F8x-U2D\}Mt6r[XPg@н(nc*.(0;<훙]p ۢ|hd}W[Dl?KYܧ,um𗥜mi/TfIEJe}JNA_NTɸ4b4kaa-iuw$Zg1zMۅ^om?zb~f/sj#uMh.!$uߢ]o#!fe+Ivd #c
+LNyC$/Ҹ!)o۠ejdpVɞ >
+g,ilR]2K(὘zw#\T,HdbIdѸ&{oS2,"N=_g$`5e06(GBa*+	ʼhV3> R&:JRFQ&>|8z7i@>#Z?{{|Rx@9klW+I=6k4!j}4TvP3;jČ GS.#f=Hbӹ:5Ht"zYVJǴYJlY(t.(1q{FS;YWbgZ_&6r7<!ѹ	zLƓhj+;uh&C?~5~N}=yϏ{<AXl,2AHʔxsD{9<fub=S4{ztHsa?+!5{dS&1U]8.BA~,\+T	sA740aVIfrA:K'(8>A	nEah"?{:etXJpc&WH|L/s%eGqL_ F'`H0yL/c*ZwRӽS2~kD3T*
+*$&*,#]SH:c/czk0ك15fv@6EM)!޾8e&Zݳ{JFֺӿGZoO'%wZ%JTUP~fn'c3y}GymE@=z@U*SU?mn`4AL:$h!~{>7hLE9%`j'>6:g^ӧqbsA9>DȮмo)n':M? C2ݤKؚ-U zjCIyglA}8O##x'	8l#3AO1z-	D(sǐ/ lMx
+Uo[bJ4nBx8- Wۆ"|2Jԣ.)#5s^JadQ̫P7)9gsΎ774Ϲ:j9WڭMM
+O`wDUFilEpfВ #ֺ"AH1c= Pz6j=v.z1Pך;ٷUffR>}?q`#+彾zi7nOE*ni{YE3U$WFH !Q 7'e-L}|Vݻz)RSY_uFq3oџG>u xVajTh]8fo׃On	옒_/䵮G2m]Y)=򄨅1~Ng֌/0.m{!Q㑺+*S >fظ 6H<Kg0JRL#ZhLM]rl"~U$PW	NHvH"kXC>D(t(Ǥ8ҹ`qOakW\T`zou	12 ߣ~+BlOw~MnP>M	Kg]d^1/&l5UTdSʔG,&R'nO K`^>xNo۝JyrGx?{X9Ս\!"5(qnMn9Fjo_jܴ|pT/_ιgRL|?EϮ,az䣇HpxMln4A ]Zwny'wV"}uMX58]9eLjиnLjz#Y.B :j9+-St^9%u d#,  Y&?K͐/.Mh1TYPM=!b-N(9[_[C«$WRMc&Qg>a{|MPg%&yt$t"#efGg&W'ڛUO@5/EeLLfM88I֜A([%:iI#iFƹs_FL=1gl=˗)R%6'+\9^NmX#!ms[	?"=JךڪAyJHR//s:՞amӟR(MKI%%O僞MbmÆ4'S}_R<x;n1>l±w\}XﴢEыYB9ι!t(3(^cl4
+ʔdp_-譏zZ5~F?bMfp͍>2h)/=$>!BޢΈ2!CZL;x]si,I4X'\%\j)GT3P ;%1]RwNrX{1"qއ>t    IDAT	S'x- P>efA:xSbM$,1V\r8|?d(azE7}bwi:r2J~lж٢sE	3JksD;JCf<9Jxϧkf2~تIQ#z+khD}ןS	x]S4^"2|	!(")i 9w/-KHTc5NKLB|BQ]%<EL>cg8*XN]k W܉Pwᬀ{d~/} w?l}2hl
+Po#`qƝ4^.VOun!d	Nf3oƍ]!Zo+j=fi"Ozx:-/Y~=mBP7^۝F	)L}ztj2ж#
+R;3VJ#-kp=st{z\&XR]}l^vFU7r,zqܗڴR-j\Uw+J R]gϿcX<0a
+G{5?SYUXu[vv;%_|j+P;GK-ʴvu%ڴ#J+Ơ}"-k_7K#ڛ/ZOceu[xn2kb9K9H1ɘ'-Fy/jF)Uɤj4'"A)5LMzgu9MMqq=0U1OV=.KH*Pud"}nɽ面*:.k`p"xNWHHv:A8-
+OQqItj%M+^IC52u'Gi9n*Bt/S<8"~o>g""ΐоS$5|D]q0u\oXrI$ɫTKaMjt8d[f[7DEb3#:ά4Qiժx|YCjKQ/pŲZ_N'o776ߊdZ~+y?yt3n]Az ݣ{!*TD* :J=AFT o+}I!h~㘜b&TLxL('|9fTY]fqhKLB	!
+񕥜2i!Blb]K.lP\dxG}b@z Ր~x'(SPM(Kdp:ISNHIG(>UIl>},^G^Wʬ|BG?Sچ/#tCSe}KOZhf7Cc]NS׶ѯ#GHփZ$>_/bgݯmT 3EwNQVr<)vaԎ6Fnhd^ laU,	a́NH`w	:79Y͕/ uXyڨ|~!+)_iz2L&䬶~fP񄰹wmr?k3ѩc%a:ca<k4kqk0z>vA%]kb,Zt	aT%2z4t8*'lQW4)Y!j/SXVo9r. ev&ݹ	LBdc*%\.4,BxL{:g-$./ͫX:$8Մ`1}ME5$<Ft
+;,=L$ͻ$?<@q@A-0%G瘒nbhhgNxF6:>k5i>gX<Ehmtru67Ojkݛ]Wnwg+Ls2VafV)aw{+ʠn6ag?PZ1)_Bq}^"iƿ7MiqlS&%܈?gmfxM	d)s[P-v	6&["<EzNQ^dG~z$?;f#4vnN.^ޟ$@=B6>Z#sW?[P@y8<Oqw"ҸиzDt78IC5``^t7)j<]}`rDsՃN]Y?cM[x/,E<jQ]飥^08<rm`MzXlUn Tiߔ~ ` mp/}n\K{^H^U 1'eM B[O][WU`}+Clwdk9PfU'qqΆIL}\/|\tکnbE_<Y:Bm닪klX|،k|: uA]qrj~0yF3A<JϿ%/^mj{tDuQޛNR̆q|L)'4K"c|bB#=5N1O8).p[׈?Hv(gjߥθ(uB5&D]			l~`SSNPXA(]&ŀOznRO	:q/PS_B%4ayvqB5Q>& '&=JStA9A9f)%dDO1"7Ȧ>̌Viыe):Dƨ޲P/
+	_ش>nl	qsƆ[շt;Yƶ)rI|ĽߡyftN/&<%\!Hx!)+d/{oӼ@5(/R^y?513=EP 8R 626+1Ŗ cg\`; ;K8+YTgǖd,|/q:˔ױu"*;otykxc]JRT@УNq|KKa[I?u/vn~&ز09AZRߖMcP]
+↗뤦YǗOuK
+wbfͻrAIq B.J8ժE,ʓJHGsÖ3^Oچ7IQ6~alZozrQjڪEo[$CYN:,8¸rȩNW{*R8rw[GǺ` Tpjƻ(*=w 8,j#rGi-&^#hU}ZM4yV7</'L
+
+ǛnP[폖95?ݥezK!DH꒕;5٘q'>+4!}5eFs2axl]Q^s	[x-:7|As- f[\m3<Kc:É\RMP($9:_f(;輊]x]Z/C3'L'^i1y杘 BFXM'V/1|i_&
+'P>b4]!!~ef}|ƀxT[僑ٻ*fs^WVKGIa+koC^K~hTK:l\=%qAc9)rcY#Fnِu<j!sZsk96^k>J5KrNz5c(&*X߇10W6lAu:_zRQml=g_3"_ʋ_S|~<)̔swQ!oP1ߥqՠ1~=BXC77yM9Bi,!lpwevj}qrg_~?(9u>ںr~Z	9	938rV'LfG-e~eOP>M+ޥ`N[ܦj_7ݼ8+#g$aVWaSYvQ2ԗteVIKamk{'S˽⚋eZv*Ia(B[;,nihQ7Bowu'6QЉAk㕍4*J7.~H	T%EF߭ͪ˛	B%lp<QLbR1:@D"l<ƻ`Y޼Y:<	E2׌v[kX}5%y9"e|h5V_>A
+K`%n2fn)]<f,!Y!~$:#D>G8㳬|+1Cuakt7(qQzoSϐ>	_%<NO;/&&;NN	V=Go0xW"=O";]?!U>nvom\fFxƉߞ2ZFxxq/YMgfJ FRSMut$xv8#^M_w:N)f;imMkm]ҌhZK]'NRǓu݀lLUxk "ݡuҾ*qo2o	zFolkVތ)w"cm`)19o82mAp'.*uP8_Qট!դ7@;BMJy=
+St߈-%Pƴ$yr@xզQ1):# 9G|6I[c4e|Kq0F׼t+ =wm,6~\m{mcy}{ejۈ'C	CDr@hUBYKY-QZ]\ּ$սXHdUr#vyr0NZȌ@
+"1ɺ[@$vFrq+Q0%Hrmt3tEv*ZWԸDoTVtGR#@8zŭ@!'УRB94֝~4ï0KE@}s(`Yk+`W>h||2n!*kFons?@9\'N30ϵ51R^FH[WW;'j3Jv7["(Z˴1JdHQ~:'d	V^S):6棄:R	P.{p (H.h}ӧ|@5|`jDt =R)3}	W?K=1}t݇&'+Lb2!a	1^xkS2ޛSg#p
+yA`}r'?~'=)n'<$h0֞m2GjTV9R(hZϿIa8wh~>\f}ET~<:VpXSl04ב>EcaVCTL&{֫Iy?:?Ipoea{ jw:j5L_;쳯6__VG&;B}5@2{S4n!Bv)vČɋ8!n'b|	7MMt5IPNa=Tmxާ>0qƁǕ(uusKM2^نlVSYvpY:TAjFRNLm-Fc4~bV_UzeZ@Ȧ;r]l9LnE'8ueU(҄}7drhX վP7{9y'Ԩ,V&6(m\VsP{k?a
+Z|u;u_n!įʯٟK5@AM}U/EH9  x0d2/=͠E:ѥyW1yPtWL\qz*$ƸU&a'lOh"!^D;]"X \antY.>IB2Hp5A`i"\&:D+dħU6[NA;#Iy!D-)*hߍZH|%2$Bt3᭤|;ObRU:bO4McmT}wӺ/Q!io.CkM"0y渇1k?~iyM"˃Ԋ{`%ٛ$TR[XgR~kZߝ7A'?ip/>[!o>GrکJYiNbx%	*`:L#$5!*qҳk>:~u6Y&c1Zd,Au(Ѹ[!|=u gm.;K!?t|*|lI9L{E_d(qf%<!I5])2ʧҹ"]zwuIpBkFX5)DappgUu8{ޝފIR>zgV,rd_P6TOrzPy,|>E	[ll˙G#77N,XNм=eֽGK	Z֎LLIٯ6+ΌXΤ:V$ٴ'`۷V<0@[b+J[tV@ȡrlweR(GtVЃD3rlܯIui$ͳYG; [QE_Yf_Zx}\}{'~#Xk7k?lVI#Uf+noovnR.~k9Wdh[gc!m{Wn]YeeNkgtEL#nѶeWyo}s^QA(($lBJ	-0qLpG {rbpYQ$U(S^^w{nZXcs89{͵Ke+fD0egL}k$$t;U	S?td	12L
+1q"nkؒjw\qEORM|[sb$:v7tJ|":$Lpq1n[7X~/BbTLv,?Fͷ0{)|;qjLB3$1`67oc4YK6~I#֠$1=ny\ɐѿl7=L7V^/r13qԘD]/+պ&/V^}AR<Vhll<5ڽ	-:K:g!<1BR{Sp똌ً=D.dxj=  2)&yX!"ZM܅NoqPkXO1hl)3"ɔt_}EcC'6m6Xn6-Y6;ޓ[}j51yiZ'={BrZD 2(!KW	")m#[+ή\LUԕp}RV6V[rt}    IDAT"nrozyqXtPNܢ;E0__t̴_B|PrQc"R㸒 
+a5-vM?:hyaP.֝m%|ټ*?|G>~wxy䑟Ï=bZ&[dsW0+K*)c
+cq=&n2:(s<f#?7[{"Z\@zQOB(`GJtEXgtbt,˦	a0F-2F9E[c<D윈u:Ai&GUT:L4NPɇj#L'\G):UpP1.n[!ySȀ(tCe:oä6!	H&&#H;6GPۚ*N,{^=3p1ӃC*}VA97t
+p<}Gnibo16.uOx\-ֺBh蹗ѿϪ;cSf3G*0_j*;7&ŜtF{|tp<tK6[Hb4^yzws©8NpG]#XCgxK9G}=!/!CdLMxK,R^{ΰi4]~BYs13F5)_&kd/,&cz mv?t@rpŇ_GzW
+\{`8(4!n21ёYݭ˲G`(:gK/dbu}9WK#:1C%QWmN].6kɚ'¸_KrDה
+_浼U103I BҐ߿6y:ΔVkeKSE+K_Gٝ#*c#5gFލe LMX[33?(6+y~SgWCu?~~?~y~G}kkkO~ꩧxSr?V|k_zui/u?DuZQUMk[;>in@Ԣ()3 hahikP-K16F1h/f~
+AT%@|e)SEp(fd a*LTԖ	:Xtt<mUaǈҸpmMc7zC#0s@5ItSȐm$'F~wgh4¥8=Hķ.?<cTT{GOS8g9uc$W2 '!<,P[cnj=hJ.wb~DcaMQ &I<b_鍬?Nz´(}YUXkuUդY	?~{YKkA{_<Ͼ?o~paT)Q@Ct-{(*q
+E%\"09w_ `zѓ`))E<)0Nd@"ؒ[P_ǝRjo8Gm't&ݛ%/<s9dCʴᓿ[ȷzD'q;TSlE|$S kH)#er/`pDn4}h_5~f6d7J1J~2K_
+ggR}6PWKVOu'*S' ԤR=ݮ&melVE*]А\'
+Zj}+İ?y	R詙\˛[NbPjܔ#+nq1wS J	ڦ*̈Pxu5<~B['1He
+=:hSنӿ0\!FyjXlˮ3Քwg'ֺLb_e?ݸ|:#sڽE+{9{9}YX2xJ}eJO'<egǌ	oE
+RD-FplH\ǯcOkbNQ'H:ٌl|"UFS&_s|B(Aԣ#*|v2	WXvD=El۠u/j>%@> ^y;zFR||lGNPՄ->)X!ħnBO#&Gd/o_͘&:`={di}1%]'85uLF9v瘿D|2D(I%\Cg*aHHg$cC?Uֿ59^n&+zf|X
+΂D{cmO֊s"f=!tnܘ+p^})Zcf{7x5Fkv]?a>}E2%nS`^vlۈIw}t
+WP1
+T%1o!<IqvޏjS} yco?)hS)7_[{+$f8، Q>UCFDzxG(؊'L|Snp՜6QdtD5YZ:~m_i?mk}W4(&W$X3?rolgGB-zfe#tlLBQDl`Љ-R[jLEQTSi
+a<YMj%v^h	'zk\u}d2vRݲU\<5٫+m
+AnRā<P[;[5b:(W%//d{15P,,/"dVX\[_	3*k+λ_x=ťK~'.S)q#Mi1}?="~|~GEOp}&}lvTxVwǕxK  x57^2Ɨpce_Wq|E:F8>qI̶Y<|@H!9t[CHe˄S&g{XeL+IppSXxuBp/-098?⻐16gYSXi	'!Gv	cT}TXx0Sd"}NѭLD8mT@xV4D`-W&HnHN jQmF,R*}x}~3"UrW/ο3)!+/NVbvCR=mWGU;le69[X=͒2]uk)S}.:cGEgz4n!X'@PIp }O8xG.WA>AMmT=$簑!?:ݡU `C,94oY*!rQQu_u^+81u9^DآbeC}CW.fg+m}-FoHJl~Ǒ;|ӹ>HeyeM5ڬ9eH[
+_*B@ݛ\4cVȦlE+sO(O8p~Ud*ayXu<x:3umUb{yݚML:ѾeIPmkzdcx=w#Fa֝#w*3➪ƋD}Rݪpeu|&B	`lu&l83#^ϻ_{y'q'=?xUJ+D9k0P^16Y
+b<a}hC<<(ʲ7J&Txʉ7Vvys!w/d_ )F5Y"#B!(bFMy*g= S1VF:bLwX~-0NQ	^pEv[8#0d؊Nc[z!XFHdyX[3c~}֨=Pn[Pj2?)&"dw#N$y»>ɋT;fx$Yn!꧉l`~d3#$'e?+u.Wesw./v*}Da\sqШn|a=c5VGZǛsY'ٷ}rey{l6[[,u
+NXg)ŋ0hBU(Ejnm^B(kdWq$ϡ4H
+1)zJ&?waR8][8Y覥WUxaMɻio]nP5tFz	)	S)H./4'\&2ޢt gw;)xv)%|_TbVxDYa5m[Xʉ/'zPi(t }_}i$;dtp.*DMwje<1@T3)$BȉIFzAChiMCVùP~q"Eq-vd^mխI40<YS-.2^ WmWK+UZ))ܶbd9d62Ptզs/n$q\u;ZxS?S??я~WϟᇿDũK-i5~u[kH9N&&ʜFŘ^>)8gxbI\'Aܿ 0ػ&[Rf:W"%c5~9jb~5܀u8>NѯI{/wB W)'`uڧ&3zbrh{Ԏ }ט]etS"XDx==꧙ѱ.
+#&R \d@r# Q"8?%>&%y;'~(
+Vi㮓]~Cd/ByT3TNٓ4GƟvi6UϢ|fW1%.^kj>^t.D1Sr`8bxvΖ~ IQXTGMR?{<#9r^|SVNhtIQ;$#tɈE5'hQ_!:YF	~qL5T3g<BķbE(oh}'pW.jT}[HiaKTo=ƿ"zX7=Bw2y%ozS`oj.0qup5'Q4]_\&7*U{^Uk?_e#%Չ\}Oug_''Uff~M.8s=1{@6vonG7^Stgv20;=OdАNġI#m{NvQ{"S-Ůl3ݜ4D;S-GfSTzdt!f\WtGf5k{L77TR	k7֜֊wu\4'{ƪUoh8nMN|Ufl~!m}}رcpwȏȝwyN}9ƃH9q5-<[Q7 ϲ8dz|2Z2V1[[?8y/H[9p׋E6Zf{;g;\諂|L_ޥpCA>#lppI>	h)X:C9ŉ iJq$nעJHS	j4N9!ŀOrG5I..WbHl1E5SuւDwQଢ'H }^"8E	]CQ728= (.6rwCx6QT=d{(zTCܘra)slq79џ[^Wo'tBIuBI&_]n/%ՉIjV96^'t=9z_v6z9+{SRV٠A'4(f Ōx' ;~
+kWp;HJt<E=[%{;Ib-zLm>d׈'bdZ5w!cŘnX.Ïz91;mʄQ=	SԻ5;d	a>q$'y+;oldm6UbSog; ܢBWM ÞfԧѐGkR^.D@h˵	S3qf}=Eni}0F"b뚙#d
+k#i:+Ƣk!g*ii[YLM,K5іG2i*
+ƪ(`qcc0{~;?N_,[1wAiz%*Xjaajv[r513󮐯']??_GPJ}/z.\y᭵ E,oQAUq0p-Hu]HN3sqi70}CcEJBRCT;Zkh2heUd2CvALܢPԗ	^L?m!>h67/W% ;]!>B1~՜%):e2~hmxmgpo#\j8AAE0dW \?12$JqP[%Y3cD_O|CDgͷE~SSt!)!C&@F1
+6yG &DL?C."ۑ.ۨuY" K<Yl焨ꖚZTR;n]A
+4,#4.+ͫ{f67JMf?MJrKYALvZrߠ
+pB k_'XE8kȀ96dw1)9&g)uTd/'.xG1	ÿsK՟O"Uᐾ@AXKT3Wqb5-!$Y|]&EJUaMo p^,Z<^]|FM#T 1+PgKֱlf(;Ȏhxffojv,ڗteOu1/"B*ᤌ@*IVS2ř='/e$ϸb
+Ik$F\9NJ	/Q 'u&3KXKXV]^W\TNz.uf+߈D~]Lو,	RX{g1ѨBQΦ4?ŏ8؊(Ϥ壗	@mtd_<w"THP(k%$XHq<k"XK n
+/:YC1w| (.m0drx t1%Y)1*q"d4nǖ8MN3CuTc:S AudI/a5YN
+2D&䗩cr{?uHuA6 ]f&8y(Mlw9t@QMf9LI();$Pė4VIPv?{R^[Y_Tz=~fvɭw3ʺU,
+(P7{0uW<pWLyEx!u*%~Q?u"ӹT%H-3}N0={19EjSlv@?P\;Dp+=O= jgk6[ k .(3*$:i ,nbrɦ7	I:'_G?_ULӿ%'굟Mn#o$sE~k%cْ+%'y,\b_S/s*j_C;5	X[;>AW>uC
+n=٪uFa_REl,uTcXJ[L썶<64WWԉUdKGݺPM    IDATJC6m5Hg1Yq?8<TjJʑ92C-"؃\E՛袭/g_l_)coݯB*9z#KolR5 f:v	Po|WtE:Z`d^Mv.b ?d>lD:BIkm4NH
+@<N!y'+85Lema~to&AS;D5M&:#y`4ߌB?aKAF4wRy5lITwS\Ix/6%g5kqi<Fpw	5$}(?M=6Lir$@*!Cwn-qC\?	~Rki_;r[xҬnMɝ#3}֙h"BX?neZVjG׆lE̘zQ0r{_	1A!	:ԏ1|l}t6sП8>I*GnGq)zGl^oܦp7CNեiNPT8_ U?JYi۠14(.38' \`qBGs,FN	sAlȍfB̭6G">jl7rm:r{#sS۩ndw"n)qM(i]ra`iDі	Tm`<"EP^]ƅM%"Jݬ]Ǣ)K_-/uʢs5i(}E84W\Q#<UM؊V
+aMd<uT'vi댕s*`AurWV\+fi_ٶ}sPZHf_tYf_6k
+u毥0a07({CZc{aeKI}PWnzΔEySƱ00z-1k;F3<N
+ /н2ŔH1R61%^!ZͰ*sRQ̘^gzOSOc5OI3*$:N[2AI7oV9UZo"p)G>s}P{,җȞ$xpzg/=ZP!z؜c"kǘ?'4.݅P09^tc:)ԺMr7OQFizK"/L}+}deP'D+ZF'w?~ t^fߞβBo|3fU}LRd	RG)T)B2#^B))^pQT@%	ݷ2@aTً}F!X]c~	l(6A(NPnHp7CY;4!ek6LޅJ!Zo${FѺp}${e>B1ئ(KjYYcƓ/2k5h\Զ镆,{6FIU[.4T)6;G3U*~$ުVj/'|!zd%[DMMb|Gx]#P,^]/xfʮ<
+vb&*P+U֑]c#c*Wsyð\3'3;::B4d<+P3DӢo$jb&1VkNQ\73^Gm_ϻ\wB̍G`\Y_ާi1ݥ˺+߳n֟[ݗF:g`wa4x{U"%ýnSXƕz35eʩ})aґ1ECئs]pI2C4C/0x*c|XXj<:eatߡ,>HUZFT3	{`&Lf$ӗ.σ AHt.lILG	dkw1@03׸Pnn7MS$t$XoŔ!\!=ؒ㘔3MtNKvߩ9h-YGAlCFڴjo77Z'gRHMXC)Ϗ<V[i`ZOۑ=i]h5*WD᧢e:ċ= '})Q8%Iou;wu%TLxr%ܣDgpXRn:7]녇-PMT2ϡ'kLBqI. }-UybL|^O&*Y=Q}l=jD?X1Wk]fd._-^b\ؖu^s#4/zc.Uq]R;P~O55Śrf۱+M'hmȵu,ӾtT][Nf܍-mriiaA
+glkѓ~[MgP4&E
+UljlvTYY(rv}5pw"rw՘o8b:}8>!U0bܗQ0`FH\%Stz?8h*[a1QG7"l!b1!`ـ B* ]2A=LyBm!q<LEnjKH?|QYQɧu%Ǒ:c2M8#"h#¤Lw#}[};.n[Q5v~՘jFp7!#=%yY'zƿ7)܂M2@8T{7
+w_#$sC 25LBzG~cHw3ypX}:A҇f{Q/Zy1NzQ7GO+l])A[?x,ښeN\^ݴ?K]sZ'uITvUA0Wg(BR̨($\q+2N?MA$Ք%-Tpԛ<	n#"TW}g%e2Ѓמkj">v>QQw[T$lpC!~\L8.ɰM)/^|H81֟Z	QZ}t׼kδ 0m'TjzO[#cI}ad6]N HbDS=h/;Pm%Dblnӑٟ"O,F[کnϯQBxQL7,[daO5|mf:m'3;|n[$}=.G2;jʺ-T׏kHgfd̓-ˮg>1第!3kT%4!D#dIbc0ecƀLӈƨ Y @\ՠ̬w3?]X-
+Ƌ'Ƌ{;ko}ߗS/~ccq6ktq J׺_m(oLTG+uYOs?]#q2DkFdqX8M*7:3lz+{dUciBg2TEU!eE1&i,lQ%l?1!FE!2Z'bvCҬuc:%\!DFE=cOs[HN^Kvo`v8Bx)7Os>޷v)/AO*+ )/x	iSo׋2)c%)Avy:&ۡd1FtL<]?Ycle @ͪ[(\L`ը^tݱ7MW/n#7h}{`{Fdʾl%jFl_苐6¢etL> }TקhE;ˈ?~Gx	_'{Yz31)g	@i~sq!MCk ⏐BȀj2;CϤy8kla8;Ov5&gp;=}e׎?'֓~ÍZrg+X"kP`OUؔiöV6lP}lY%jeF~ge+DʨδK{2̮/:M)DbEΙhS+y/EN D9S]StE[D}k4ZRҘU@F'f 90lT|b.jdQ>2ES6Y%Rg6zdO$6mqdf.Gbu~|~96yٮ:ml;y7;aɁgOk+L'!jF2gs㟗&l>;eJY6~<c OBZ܊?@QFgm l?Ac*a,ss4l:`$)'8(HO1fV6<f51	9$>	1#q"=	hO!ROQY`Yڦuz&ttkϜI zsH{o/G%߀w-v%:IF,,*OsÔ)?dom%gfBD6XI=L= 6a޷3kuH;?.xã8GWC9ʌk,Zh>IIP%4!$zG >UDXu)=}*AM6QKpI[ݻV	ƚCx{[cdXh7^J ";Ct+vr(BɇƁ=P]#,"lHU~!=izb}14q:Z}|-EfqE3鷃ح٦^lLTƄH\18Vez0+ة֙	LbajNӡ[qdGm%G4⤦.IS3,c	,wf Ϙʠ3SIDfC¤)z[
+c6\,L2Ӊ'< Očڨ%.LYKbf`_ode^ݙ(u~<JL',h&_qY-G亢>CcXw?l6+!YvM{*C5]FKKFP&$#SU-1eBex	`$katyrF>I6Lo/S1rFLM<$dCuLOSRl` Xwa5^uMP[Sތ 8e4ƤP?,@yjXg2ӟ[nO_g]tY? C~S/Ls*e(s`HDKY{7鍳ٿ[hΧΩ5:gFխBP,k-r?-8`n7Z.<k^['`$ݣ	#něDcHbTF
+ۙzȐG	\%^b~i~WG=;UO=?2Dplfه>@4!!kAKh	]?3.X8G{xvkuĒ[JϳYu?ha5GojX޵[C3e-a5?go+ڢݴ+kZ[Ͷ%{`bnF)Y7NűTkV+R5<hpdfkU0('rD
+gbvjJ]=N$}EI*S[3gDp&w-܌z-93oCHo8qC.$f#hʾ|ę/Ԡu/Hwq~:otǃۻ/D9!or[(aVy1M7⑸IܷQ#h ^]Sm,1!r_&BgǯCc*%#F
+2F;!kfqBvBwyۤ[oG4oXRO	](dt(wq{]aJ}HE8˸Oc/c)!8DM/K=&^dv?ϰgHw <K6ƀlڲ֊EusVXqu{fݵ,Qg;2So+l)s?֝{ʕu4K^ˎ%y6kMo?'BloO{Ns'J yJ6[BpZ4nft#k>ң[t1~%*
+d"M_Ey(:ATL%<=S+";Orpx]1NjF1#ɊGC`c🤌#=e}rå?ߙRyV;JRvVwohkg]U7Ƣ{i<Jjk;KTzNBPayL
+Q_	(67qif)r6Bi0wԺ-|Eg/-YL2XdF)**QpEyK5Y :ѕ*)'u	D?5+Md;Шy۾\m-X//;JvC}9W|6um}poճ¬AqKY4&ꓶ}Z`,hs~^Z9ޡU˲qPl)*C>ò	WiH&HPxrH:Ql}mR%ȫz$H:	.N+OOXn`4u!L`ziӽ2ypء}#ƀS>d"TL.8sMxF;pAb2y0%~#ýl޵{ɊiYLA<0]O5D%{Vĺa/LgsӢ;߽>|~r5~S@+cxR##ZYic'lZR:ap6 OY`;@:̉{eFGҿa1D8*0
+!ъhh]ZvqaCv%!UiӨ Dw*&sh/E>9j)ԄjjHx#zAmudp&f6 OAőF|%7Z/*ݭuo_kvQ"M89m'K4{2`|X͵ĕIJ"C)-t弻13#+@%h)uɼk*$I`b3
+D4Eg7ѨL-0zNvsvX	d8Rhf`ẢMWt"ћR:1 	E2\q(ʮ?R.4XwĦ\]wUVe9۪7ꀳEQDQw^9~OėNFa;[h'+N>%^a/ο\ /,kvW"`8||r.ڞEq%w`haX.ys<bG|rwp|l|\lcmB0L{RVRml:0H:f	<0yOtp$qZ-FXa%<S2{MȀzaAGi!1Ȑ1q#A7}sfFc[$05u`9Kl
+_ָ)O*#s 2`ۭ7.{<=Xν$hZB샍Za4[Z
+n1"l\\-]8>a|qP%]}F2Hv'߉!9Ø]@Ky{/&ynGg]:û:ڇ    IDAT9TXj59WTX-kHB8k{Bu)&NĕS^t\lXZ)YyVVW^
+vnimOC!`r]X&ū9,[Wh[-瑸b);I`?w.zFP֞f:_D&/GzTk.8-<_8CvnRͺ@[ݩAE/Xٰ,lk3jjWtډ-Z+[janvFZ7D_$N(CfCZ):H˯1߳k<x.hM̹A}_	믖wY`b|~FV~ųUoeRͲG@wWVe+lwݹ*a{/ml6K}dVis]ϧ7)	ynI:1Ak/MF-ۥHYd|ptegA;g$e]A	i,Q(X.(w1:Gz;8-7%v?w2y?qsml!O1|O.a/1
+ =;(<S <?ߪzP2(L?ƇӌV1, {ʣsV݋\eo}˞u`u˭7E;ZHRH9AN([3:K\zk~&di:#P%^d*p"t}wS<۱[|clP輜<m.h=53?"Cv{y/-Nbէ<1>bcn{=*"oPdW94]1cip%Gqywc|eZ[?:,21؎'fPZl9¥BlPXiy"kGRWw*[b[XSs/hhZj/($؍+L !ژL1XҔ%iGv~$bUߊj*he&՚إ{Y+o[3X+;cӥbڬ4[S-QO,Ĭ7Ƴw:}^^__߷oG?{ꕗ%vۯ~w??qw?]w۾0ر.F7Z`aAǣcn:nq݃Wfk[]a9겹۾H{V3ۣH&pc9jmvm<b<AQg'$0ç	Dn@0.^lR)siDl`{+DOѼ^`L_?%ANgboB8Tk4b!/BO~
+.Ÿ9bZ{RY;atε<Ѷ.TsiؕL#Q#q}NnY*e_ޤ<٧y0ض6GP}}Q!Ns_iEf=5yxۥʉ컑|L8?υq"]8H1ğG;x=3b@xoGzF_EqP<w@$V{oqW\1 cC	'"k2Yݳ)iWV֥xڏUM`ju0_gmmhQߦM$E~s9N)G6ϻjڗB硼6RwR^բgmUgط/l/lvmBD(*T
+L eiePzz2w=VmٙXQfb}yMiʜq(IH3-qA;x3@QuDTmWSѐ0/UK-M]'٩*RFKEfvz53Ek&!l}䦟S߂:}K(=oM6j0~_=[ƻx}F=RA6ޥ\7~U=fC6uX%XyZX.ÍNgn<ܾqn᳻kd/Dk-i5aCUpX6^#,ll:B}+et!&^iV^,^]"]m9]` ^:_2Ǒ5b).,>Je1#z	
+Jd8QŻ=#{gSLB:lt@Jyyc)䯱D(->;)om94b[#,t-/^RT/$?i|x]R6UiuU#j'"QU$Ql"q	l܇.q;$>K(+ B+M3QS 9\`w`VD<+ELXIPPû6%r/`4Qvϑ3e]~oOZq3>kVY
+N˗EޟMU&ՁѬ)iP^iխakas:G{'ݖS5lR+V'&IjKT=BQy"LQiEڨCh =3P$R"
+Sf}ٺfW)HtZI=R
+1щ@$̌6'HuQ08?Ϡ6POU̎ٷ\/,YǶ%Ob
+t塟WϪ/3oO坖<^fWԞ>ʲk\,UR(<QF+5c;!Op|O׍;Eڸls^D#-,in^(x0٢Ѹ-S`xmt[b{v`6n MHo	+D8sqZ7aj%&M.V0F%/t>A$R(`.Q%K~ж/j?Si}yqaukoeZGT/k]~-)_Lez~>V7㶃 `9%	E0SeX6	\.ƉP{:Vxo{NTB5i]3F_C4"@NOSF3X٤Z?\dg:EgdP9uK{<]uVS/XddLP&,|qhݝ&o:8^~o|Ƅ FϺ'|k5p/W -LJv,J,xK2KTi%HrT"YlǪ>>r){AC&XM둃g	2c>ߓGwӊ|QT<3#)lPh˕l|0cSTS4\hW()1^2?4	ơc-YzLmypmKpmo{}ojо#bwe~7+^Wֽxd5zlz44Ucqܭl\YݤuX+i5iy4jKב2|5L;+7dQ챚ی.[mQ1PZQ&1^'50FU-5[~1y	~U"Ls+`r|sojΡK]v(:M9*#<J_D%xIU:(d8]xfcx݉{2ِp#3ꦽWΩA+>M ~jdڷ'jy<:HTK
+~2-^݌~C xl:!cve֬oa6U'v.3FavǸmtE9JHS.->qԌO24vz {$;>o	FX}#0(T32BP'H鐌њ07Z/fu'.;%Y}[Yve7k{;]4TP;D2u(p?*3uзL`Kmyr]+ *dd.AdŀDŪXvzݱ,urļ3
+ȥBb6Vba$pJJ
+ѡX(Ma(h(S"M%s1~O.iSل%L't`9qDS۔˱3iC.}S^RDƘ2xcjF,Ԡ˸~?N}/f5%2/j*<
+^oE_wuqY{®m]HU]:x@Z&S;vttJ7$p=Jh-V.O}'ۧ!ͣ+쀍Q3ڇyTKK1Ő;CDqė(vp"41>M9.~נ36[J.;ۄ7`v=JC=;AsP ؋ŏ~due.a݋sT)if+_кӉOW'*h!JN"G\L_k!5ŎH'oq^v?/+=#y'F7eyseMOb^
+!ۏ!m)F%""PVHMvonҸI=f+q\ՠ\#{V5pWOR^UD\>Jf6c] y
+Ei˲iN]dlEAQHeۡ,(EEcN%s۔~C=p>f-D_uu'+upZUŞǤHKupjQc
+ݩM-yDH(esfV[*ݰWLWJ;5S[LvӹBhۨRj%25#H'np23R3\W,yZQ.zvEsS[r&75WJV[f1MQIG->$_QD<$7@<[)yǳ6?#?{/-ww76~F)ZoJ,f+:|g!D{Gm|(/+[]xuK!AZ#.UPUt[dc	u:Xnͱ?c;nF4`s_,N4OR؛Z$T1;K1¦m
+TNp?Ff9%+`N.3{r0
+@?CFH󥔗6T0_K`_]
+W K,2BsieZ?JNJ7s`@!0	Gjvzgm5G="Xx~Ǔ⫴խټ{KU_y2/^6paͻ1g"hP&HuA! 5~|L9uwPlҼ	2-7a*#~4q9dX]d9ͫϥc56S=eƧlZP7i{n lk_̊Wl1i6&uڵ~ip'7F79rOHQ["=wY%rnVƚևVH8zZoZtv;ա]=HppZlGjӥDAܵ܌:sD#33d7/:Luhg&+MOj7rYڡ!h4E/SC=E8,owE;2e &?dm0}yH_yhdN?e4oE`@xMVq{wv0Kw|}ƄB$RĶ3~YZ_v;z<h|D),[aMY_mv.yV5̆eG~yN+:K3Q4q<Tp<v7hH&4p|FA; M] n`a!.$4W3&c4)n#=Dȷ<Ftz輚S})Q9Ht17ܛ555^"<fҳuJuab}΃gK]z6f{})riU(}kK/UKZj<lˁ=!z^#m8Fβ6symeN&<\osL.ckpZ|oz6&;}˧Nh'=Opjr{|j3O<IRTt).zMSO@$)X-:\<LƯ+gg#3/]w>JݘjyjY_u?tͿnRLjup~9eRwzX7H|[VrmR_߲ρ(\zi4E6fbvCIޑusPR_p-ܫ:nfvEL#=E4ҫ]y LilYS\b6b_jv
+ƚgd|оqb'6-6D{fv<Gz%LͰ&	ļC~YMG[f?e_L<9'Ez1}hk3J7D[F˺zUo/+z};e jSĴڏX (`8;eI:#jcT%VK*z)F]ua.Ph.јm`{J&!?lѸm6SUL7szw:RgiޅU7]G8dS]B8D?O|@p=)nu:gUEXNez:Baz.m!%zP:Σ	ֳE[d$]/)up}R"ZQ:akTʱsEqA1eCG:$ۡ4*^a:HIW1)9v?I]@8 (K:e;#{c͑|7S]y& s)ߣaj=M9ex?kgL7	:LH`8@h,oL)klCUqO;NnL`;'hL9?a(Bru^J=n?:ɾ3._y߷ViDWDX.ׁUׯ׹rhݰȍ]Gj=3vqa\e.WCq{6eԐ)[sVb: %~O}[kNMv[H,9?1\ɃT32fh	afkWofr&ͧ;_L6ߊ'U}6imZ"|_]ݏ4ɾ>8tzQU'A]jEYs0ǭ=fꪽeA¶IfFDkfo(bZ_lK\&/v
+0nh]SWHA]eCzrvI	zT)m s!~'b|doƵTSPS>!tIyYUs~>}STR4RHVBPDE<BnB$1h(Ei*7s?6^os+#s9;"l7s6L<v>DeȀ	B(0S21EtjQn҇d!:EL^+,~f;EwMJf=뜈&g	3DRS&Lk'}24    IDATrg[L9/+10WFя~㦃׹`ŧ,@cKܧlLE1&\%f6jLB4F.gq02 N»	#@UE0;=IY'vE!v
+0sGǸ}3wUO=QfI'HೲG5{|u.˞h|WN7-RaWT{]QVjN'5v7l~}+JMsqyu`A.MԒqt6h㷻g72uEeL͎Fd&Eԫ.dM2(ԥNv.=d-ϫE[83jDJ"kȺ-j0;Zn\UEu`TTI
+y6)DEV&}B'lv>yp^CZcX_n};LѰ]1Uugn/V?k\oӗՁZWm%WJmzO:C1=7MvwN ʒRssvټtxql8^)KYԂEUT^@~w xSِe	%m E݃1#rُ(-OܧL[H2F)&BZ8-U®d%]yILL> T*};V? |,VQmeu#,d][}}n)/^LE0=E45_?ZwՁC_t["jOMrlXguUD-qR|O(XRw<qʚ=WQB_b[OQ/o͋!)2򔝳\::uxWʓ2Er)#&Hjbp:toJΡ\,S;UǝgeW32N	g&7fBWPcWFQPq8
+< ̑ݱ[EA8BHl-~3׳bkZ[~(|J[N %")ＮSE:9_6Hc<!J:UKɊ3
+oƵE]F׊鹢nL
+}!gbU!FÉﷻkj1i	ușIt-_fRS|In 1T 4uo%-ij+J&szyjbCPoŖ8ZHai
+`RlfgQ.?>wNK{dͣ?m;{ou9~Sѵ*uIGkO#^j+9ȲkFojG|M)C<WbM{,v+TSKL7pk`HX.nrD*&@m=ϡ1O@9`HFSƄkK4RONs2
+gIw9	Ob7my3@m>P;#>=	!?G}Wk).#m!v<ń_DjsW|k=T9Ͼc\uY4eKV<ɍu% :7W{Tol`+?1amu!N_]>npķWU˕WrRg&yHdD]g4AwyPIEWЎHMY_ݽ]%q:GT	"c̐'9I}cPRn?[߸=k2+ۤpq($WƊRSOb!,]8CYP>7>K=!ht)2Y)06M^8_Fo"+Z׽Od);o՞uad?:ϫ9.z˓@~=q@w;sVX9@2dWV<՞#;*-X7MENbFq̓:W9jɥȬ.OD&hɕ>51JPbMC/kb12[ɑ9o5ռޠ (yKF$Im=jC+wEi=ӿ~gȋZ#e/p>77ǵ4(h\f#4m뤒II|=^ɋGwhf)~a->υRRY$|?Jc#LWO$S C2ڦ*	B0<$KPĻk>S	2<uH7T	<G6Lo=·Q6&Eߎ#l\1!}Og{/:ŔlLm/kwl]:~jl-OkYIyط̸w3|m-,̓rK#jڴ:޴|_$+ˋV׻C8{yH|;ڲa}:+e%OrJ.`zy,%az*dzA0'Ycztkv#w!9E$CnAeNQ]tDT0B7A'ap"Y4!]|%_DX.~e1H61EvZd6H1nQ#^8ѯr3xOv't{ӟ!ɾsD0p8t}RԖ$c}r)
+O*ZnÓQۛ`[]sƴrxMuK j*ZP+ʊtH`Y®SvMW4ZreUmGS'JT=;]ޥ%DEftIА>bΠَ\e_%M2eC.	`jάOzsf`(]L cs.cǡenLF
+a^8Ieڛ&՚Ձ;i>T>u,A}+\7YRh&ϯ2=K>۝{]\J9LƇj39)!^2OR?5˦;TⵔKnnGk}T	7	!eJ>5cl~`-(*߳+?bLA9Jp߅]">I&'>'3, >:K/}_߽kutD*Z YRkitGzȎ2Zڕ+tftUDJQ5s_X\_mڏLjN3zVwTz}4zmY%C	ӈ"B0d9m"-G:d8:ҡd@39H.#ۢiC$)#=Pl\GW<HTW؊e.Uar߬>N%Z$VrNQLN "eO(oIUPĭ$ݱiGTL'˂ҳѷ/ͿAh(˃EyZycVu#U(A#RĖܪ{wlkqucyjW[,9sdt2[gJyֹҨT-{&W~KU1ǝIWS%[Xuђ8WY g
+D&Vu~Y6*j;ڬN/-j%\M_ "3l9C!P_f+opr3p]V"jǬC`g%}uw{[_OmɵFۭߢVYL+N*=R;f;HJ&Co3<nQǍ~w"Zb9nvselx(Kh]+,8ϮBz6]	ʌeBj$#d˦@('Ke@6y	L.3 [q#PPFۿڵdԮEVFIރ5OyV|6Y{:eh ['S6)s.Ϗzi)͋oX8ڤxNq}#*bB'ZTTK6iqX:%uQg+=o?S{om\wݻ<oms7|Kiq{Qm=vl7C{]@jԺ}E6&XHp=bv!6'0
+V?;OSL?.j0XyqCx?h ?so֞>>NjQPa>͛,|UJ9etrFk}BE(<P6G2akgfSd1e5/qzQʑ%״i֓i~lY?ocӖZݘ˹?N6ؖ!Wnr:m~gֲۀ_ܛiǕ%A8By$w#n"םUۮɖ*QXD7҃\h[ɸkE)kѱLͅ@,ADl}߼Q)Bv kΊFłc&fc~C=!ďb>3Gg6އ,uٲl^RYnF?מ?=30$>DHwޟ6҅w17m,luYjh_۔Z+V6ڔ9mFWM1^dD<DJPkAW=3xrz08h.}^E"hlC!Ex4ov.<Bs5T@8mE
+1˨j.L;qSnfǨYTWPdHqߢ0u1%MФٺ?)m^ݺ({3W27U:yƸBԭ4b9Y5h|ʦf&ql-ZjczZN({L'dPMmh@]	ɔ8IJzG)	eJX(SIGl<4$ݦu2Ŕ"0=
+/."$@3T捌?Kz$9_(VAa)M'wI s%y4ְjKdCr`)M-,7bHi5dNkw_V?ecLFjXV^$}.*xr0M_=c=1~VwFwNöuj+|%e-wA~UTL]OXjc}xښ׸j}?/}ݲʑ"nŁ0N˕~L[l^a+tDo(gJۑ,[Po"ة6c3E}V^31'%HpdN=sCWMQ?Q=>ҽ#(L9/;6
+ĂK.Vm_gJg_{ՖulM1+lIGߴpzV' N^'M_$|sG
+AYrD3w9I*EU1~!3#m
+d1e!ne&=Zs$cD@ LkɄ* p]ⵘnuE"lk#i0<E!&5b|L&M0L(܃ |]RL>E5ދwݪOqgza$KC EF3]sbwkﾸhRRLR$fVږ8Ң.
+<N'>J,Q屶ux֭-V\^:woK~Y~۾7J"ivN4~3FU}*){t	g	<ePLfY	tAêViFS2bLNri݂Dac27c!"=v> ~@J&ǿaoP~d@ ԏRI
+iA1m|][yКeʏ{ENE/kyQ0(s/fųx[^֛P7W!Ҭ(7^wTfǺ7ywsu:.nra?V{v?I#ɗZt^,iyrsbP\QK{e¹P7dl&
+'ڞhUc:DjZeRH0pŞT2>{񜼡!Vsg؜2`(,\EػT#Ǘu9o̫=dj+taQ}	g$;Nmus|vJ)-5?4vyy}sBR+KoUr;DJjn;Ey;S/AWA:z(m]_U+ʺ$г)lj(2ƃaCYC4vi͓ǔR!F7"=4TmP_yrI67| iDySY|>yGH׈6p[4&QHg.qa7wEx>2`1 ң]_-auh<r2VW/3919ѐz!p}۷KٷOⷸr'G@iOnd7dVvۚre[^_b"Ѯ/L{+Ǌj+%ʶS)q<pp'2//=5ݙ6Di,S$S,-/X.yƍ{ğcUfwVVHqٹ	iӺ4j`/]?Jr⛙|wCxh/d>Ms5Du@E!`
+]j $g(ǘt9P>#ěcrM<Ql]lQ_br8OxZ	c14lmSQ^n]6S7Zw`Ku"ξU{`syy-ug59OՅo[`CYy`;?б_Ζ鸜հ<_7ՓE)ݲmfGl!<FڛW9{p1Wh&z=n]t׸2_/m_cjNjmH[sG{hNUd{ճVlZ+LUKݚXKi(
+wʹ9qȜZ6Okܳ,Vƿfa"+nkhʮ[sq$Uk
+ג붺sY{>6~Lbt]GyF|Wt2~N?qt1RH9̋x`Rfز/L&M#tEqYjղI joVwQa?1qH%$UI4RN+:Si"-:$Tޥ\1B<Ie"-iI!٘2!<zWQj"eH>;nj-Hq)KTSdqvC5D'X3l`({$"\>8}cX-3ďb2=sXϲy:_xatttyB^ܒ/O~6/tW`%iz4Ual?_ﭨ"nWN	Qqs/5)xr/BayޥM):K)ÚV߹νlty~kUA"@*d{gnf: tf)"]"t~FILr)FLݦq:%߄!09h>ALErbƳf(7IcG kIWOs	@2:qtBF%!
+y钮#$Ut@`*d˥,{үSl<Ao{0tg>a` -Z3;~vhU{}En62^dYg;AWk˂,'\i#Gzuskw6sŵ    IDAT׾+Nٕz[4FzYu}'LϷx]sehe3ԗ''%efTs@G\쩤Z=9T[[f)7ӱQT;cWWe&kZr؜Eg 5-\|ՔBqCd2v$V?0:^x&Ѫۆk[WjR6*:uaSE:uKʳVVٹ{F0{#Egŭs0wՑJG뵦:!_OV/| !͍?a♷MAFkH$yvU2z0|p둥kGQPctIftj :A4dsQϢlr2L!©D|&KtҾ2.Q)i^9FlߏXU	cJSԮܤXe|'Hdwy%]+=O_ar'!]#۰lΟ	j
+H}M((l̸νYqK6ߺy5ƋK`Y*OL|IT"\ʈZL]Dռo=DrqՒܓ/48Z7l=CojβZ@UX}tx?*KK0åSUv>]!dtlCDOLe$e
+@RL}yIQUDP=4d'IV75@'~(Frg*®ݦ?JQ{>yDx7,sZ8l:.K8QyEHojgUEy,>%(]ڿ>zV/̾8^GC{fk5\MK(WG·2Ԥ(zYt/IZFjeY)HvLq.;4KSϽtޮ&EDf+)Mr/;ry-;pJN͂jϫ)L[&zmdĺG4Z }mp/:ȅUyGP_T\2_zgFε>%3NU1nuVZn,LYo4߆Q4s!Dfۏj6%)>vyK+zٙm]GVZqcК䍎эF볺{$}0Zڕ/RUT%lX6QC77Hh.1"vN5ИE2kh,3:똊*ǩ\&B`5?w=[Y*'AzLĪP"Cz@"kޅq!:ڨ:6Uy=(s|	w/a1"U;K1(B-,WT9u~Xg-3Y~{!PR/K197PW7>!բDBFw4~@h̒sA",:"L#PWqyqQ-=BE//kBDJji76vϧSN3\3d4h,bh)ҢH.krWvî6A!N`Y|!mGR9Ə1T1~:ߌ)`AsKûS!]K4W_E5FH&/3dt1|$!-ƫ&,\Cd!UAxd	R0_Ժ6V1VQD?fKԵNB/Qr z'+=_Tz?rhx_ے5iySg+լ-1.EZ	6gm3W[nZVƲD`:޷^HOgpkaGfҒXpvEfSIlSwQ3rxk$fP'ZJ+7/
+ZIn6_3Og1Ϋ%Vni~GY-7L7QeuPFpzΒ;5c?=~VɭV&Ͼzojo䵶uJVi-\Wwڿje+FZwijg:PU˖Z~*ZSuƃceQT%YvN^=gl$²l=+n/u]9xQDWp$,*^ReT9Y[GT%^;  vQKEϡ+e {/`
+Pԏ,"]FULk|,M` UhNvS&[,`
+):gL?r	Ww3,a{mݫk]))¸xNVsZ~PTYa~87q%RdFic,!U%R[vv6FR	:jAO'ًv?Rm,j4FߕϝUl8\tM&Kq}ZS$ 0<B/#%צJJ=aaJD`/G{w/%=vј
+䋨2@:V5)6 SW"Xj*Ի:S =iSP0}wу2&XRH"sMdB*l˥OʁFS($FYtܟ{9e=YTˊ۲|R1as0|[Z DdߖZ'uɫ\#km4m1};җG:XTvvSl=F~@ R,UkH{MU2F/62BB82VM8iAbEUH_6Ԝʾ5ZdM,7DkK*Nbh49W;ج)#h:Nte0OQqk<c=~D(ym~"/gųGRj;-oӂBvjn]Ba-uIA-vv0s0;_A{-n}2_'v!ZB U/SrSkh>9~ЦY`q8~{ǴFZHl]:g^8^t\{RKIk7 d!B Ieќg4|y0Se	I	!C`|Jrh]E: Mm?vlnQ& L@`u09elrX 	5-<֧>PgNFOb*70}$]#ߠCrSQ4bN>&eJ1ٸ]4w_^~-?R^sՉzy;rWR#R`WLʕ@FHڶDذND-֛K=78Jp`F=ůZѦ3M
+3PUqYѐ<Ų>5.U,	P&4ʌY5nTd=OP&b4'Hר"	d|2
+@5%:A ϡL@r"kv$l6)ǉM՘r^DS0їJ;4?K+Wpa4:%b쓞"9Gy5Q>	ҡJ2h2r(CG!=ڴ2Yqr`?ܳ"g2:6w/"i֏X\?V쥖TɿGo-[m~^jz,=3ޝMiyDԬQ5_>URjrיriK1G{)GءWOFJDn&_r)2Cmt]-,QT0T7Vu$2&[5+)g3̘&g(fu]7qDcFona9H3zU6~~^VFzsyJՑ4^-5?a;ῘAZe"W:#J'v]/$K,u|v2!m<Me*l17n@8U(}֥E܀hBnW+u1^@U21|`{]K#,cL OUX6y6p;H2SE}IcAgaQ6aa*[gt!ഈ6g:n`y,<%J=t#$(]"-T@Gؘ*at}ڴ,υyt`"EX]##IԨ!ĘlFŭ5 *(Rfw3;^ko-Z{gyǳ~g=0 :d'd [hB܃=.@ê[^8ZK(iBlr}`5?{1#A 0WnI%*QCaӰ/\ND$1s^j+ct|U>HJ12'57؊lRjU%m!i4ȑe2@k(EݲSdٴ.t QA		Ae82nC0K1v(C`6*TI;(<PaP9)ĳ)JhA倆т #P8?VCс9s=XNFO]/GqbV B%H*1D06 @(ð@-`e	qD`DvDHP	-A9U)*dn!f'!4Hz<$^EYl̇lyRVݛMrz|MaxI^tŠK?oʑP#Mq&[1(N6Hڰ~"UOم~ˠl"G_ l)вţ(J`ƹ3d"Rf
+P(b6J) b:wU-e#BfɆ:yIcSҚ&2C@8n(iWS:nT]Nʹ_ H2Љo&O5'?yg7n~4==8_|СO_lҵ8PBN8,MKG<2	d|Vj~Ql]b۳Y~ɟߚ/q+YiT>tǚ~9?uy&Z8j|:e'*]SJA+HQV 68>t%IǾ_5@w^wxn@Iq4%Pc$}!Αv	N2, 2P
+%P^x f!bf҃݀Q! *sdC$sBt>md2!^w0xy"Q]Q%.#< yY{/@&P9TÅ]̡e-@kMd$@{w)ZK5:Q}@x7?ݥgqBrQHbYq)IQ	LB9A&ꤗhBMhZ[w#CB-}GN(ın<?U#A*H(""(	)0,B7YՍ("tJ \"=j!zZ HP SCGrG=ߎt
+`5`)DF0gG_G>*\%D D*J!=!|10B}D"Vpì!5 ( @BB5ECkd),s=캑`{}os~{tcٺǵ!rۅHH^+dg轍%p6MR|!!ZEDo=.ruJ3ƭjƁ.fgڢ@Im
+21>$Kt*$@%ʹTD@dwIpE$R2YW~\n(ccع&(Y^ &='Exgf7@A'zH91
+'CUP~]\.~;<oӾo]uU~7xw_}G_W믿?/}?	9SYM.͟H52zA$Wv_qJ*r"^0`=eRgtݽ!)N_~>ۢyoBlwkm5yVL-!6STM *vq.ʕ] `Xe<(?9(Eg$}Qg霢*>|?
+?eZ^R7L>"BwIi)М.*ASu>+H|+Gj~	oF[ீ`WH<B<;RQYڻ,8 Z!G:{9Qhw<!(0x	KF0X>dP9F8Dt<2@ Ϋ?&_QM~:J {AؙR.}X̉bp1'"Ӕ+9~Nr$Ѻ-b+qzY_}kݓ)-+2G2v7PB1MA"Bzۮ2@У|v)(x B`&248+5@-x@99xO 'l"!CG4|̅ʐ,Ce:g3 ]%T ZwM?1C Et/X+Hv"EA F (: J|^2T
+-@m8P9!dԄ5pFhE2,0v@9DCdhL`18R2zkV	BAIaǺ;-NTj<7q
+JB׾ً芗^aim7_MIȍ$HH&716[QMBMbK22DGJl\h#Mu$"\_1"Cٲ耀&S[e~}FPLAXwl0`H%kd
+}P8[WSW0Ճْia̮\tB@&S%"Un/:~gϙo+2CqN?>ӟ4/|&37ArH/zIzcmJauRlϵ~ۍޱ&q({IHsj<VfCi$.g+,㑴86FnU?d*U/SL1?zTMx̵TӲvjnU%qrY^UYʫM1l(zN,Ac)l;o?F A)7!՘e>\41}Rp[E1upyB!ii 0l d!*~.RpaJ[00	Ri7(a(!j8JQۀ"B:]aT4|&(VP9
+D-`Ր-`lv0]x]4'T>Dڠw3REqv }E@tP[{eDn,'r\h6\SK4o_YfQ`SƘʦҶ_imÔ8?K5Rq?GזݯɕA
+MiYN2<V\ZívBcdј>>Y`	&S,%f8qD˰)J3!S-A81PلΠ0*QڂPrTvW=	%`6 S0"kp!5Hd>
+b070 ^E(p@6C0`6`4CZLIxH=.h6A< e:kզP. nZ˼<?ö9|qv1g+u[!gjO,t=y.P[l}/}m:֏⌽ǌA-nva'T>    IDATjzKtEeOm]akDJrMCVh@F	0hIAtWqwE$Z:Y@ppN萀Y"'@wy*l2X1J29]R	YmRceu0;|	nbyW*۶,۹s\p?55uq=Cwil5h{ctv!@V6L_,z;Qq&!QɺÏ>9=?~k#sKw8]i>858?7.O0!RkU쒶YR1L^/0xo>
+0ycNs<$}(`;sF{0-(yu^BRf67Y9:
+H,AiFzRpܶ~:8QApR0КF[C @DWAە pF 3!VYE1aat/MP<Z3HBnE%?*.8(MP9
+*etB$p-Ad(0X@<@G*F'YqzE43ޒuFD-cy^~B[0$*A;wH+STG}IWhk>~嘹p}2;eMs?%	IlrL]t9SaWW\4?zW.7J1mۏj(vPڱTF5P/TiA݆,A0+9F9D-z8 *S#%D
+i[F! Y$m{aPZ}/@"6PGeX(ʧ"]F$@4'Q!<|NmGv#=ч#-A-¨uK} jۑ@$p?$A(nCK1 %NO V m{w!gpe[w2gŉqvi^}ıom=.gb%#ITMJ"-Zi;-N#$ܲ8mʚpt)Hj28Msը~ KNvNϯ$BhjSC 5H,],ӘN,b/"AP5%ҫLke*2Փe*/>]~ؤ 5H!U HTcgSݜ? G?ַtttn?ߝ3oK$ *_`Ûb^b}hr}\g[cJO$ɋ8i믑ojTuRG5k([r?on·E;s-+NLK]8 [j{qH,^Q 4j,)ı|Y aRe[w߾aVe
+q ˺wЙ)R9!EJ,TP$HRlzb	{
+}^`џ:Z!&Q<zeΔB,@H<	d"FC6(h E tVAM6/Ft Rpi%`X(ĶVq|L]X-J5MBN&sŌ5٠X?uN|t#yC 2e`
+*u&t Ue~&׏Y t-&[`ڱ.?Ի5)9MwK_rj.Ve ,<"agG5 Oa99-(Y@`LA
+  7aZ<%PhpV2Eu4 2,y~>x	V"B3!"F	y @
+z**"5PÇP̅*Fi	VBX
+hсVXα	mPVA21܃
+wfwPZQGuVfbi<(jGd)FP/Ր|0,;qJⴊe˺_,^2.qͻ8?hjO5;ܬ|d1&$>#7+j?>jnHQI=Ų9I@4NJvl&gj̩&uQpe>D*nT	7S"hAJMNBնH!n+Baz(d.(SZq16X,xLRDc-S@@߶eYvW|#~{MXn#0b? !Ʊⴥ/-~J;AqP350BMe?5~M{xS.NRN7iΖ]6@(EP_wU8?oymLaə/Tl.7;g;Xnk'YXi^'q_ l㠴(J1A6RqrSՅIcS;O[Qsi:+67pJAkK.c,k\+?rdfI4A{aJwbr0hep3bc[?ЮC+՘]Fc\uW7[eL"=ڔ #\Be@wpJasQ@`H&&NFe&2+c~)gglUkgaxTc~zu]<a/=eѬ&'@hH-;01h%%j5=[f$Ui \,O_:bP#J;G+	)JK	(gA:8||>XYºTO.r ݽa{Q}* EvD-
+ @+hCG҇7ʠEGQ1$z?q2pǐ!%P 	dAgV/#X n@kF^blZ!~	Cth!]0Ić <P1Xd=0Z#!b*ܮ!24Gsj|{ U9Z#_}P xI((/Sڦl(vYq,e\rRl</~oUFƭ]Uӫ7k0xObjXiۗ*P/̝~-%NLۜ7T$9#Q,@;kMLο3Chl
+@R_!ԤboNPD@-6ao0A@.FL	P}ۄSp	)s,}Wkޯ]'/<M[n4M V1tN366Lޘ.]*J5Jlۖjo{)7j˕nrc<!a'[
+.ߪyN?ǋRsa5?t7j>Urfq<U>4֯(Ϙh\awi yþ*,?!Ĉ|ƷYs_h8xX|Zqdbe=>~޸Mvj9J^١jmNZ$}[vU5/W{"G<Noi'^_@rزyuZܹ=h1kM|͏mOY|#/NW=Z#϶|w~l4Û~N0d)+ͣ:@BeY}PIOBêB+bC<SB<17~ٸT;ɟE<DO6k͈)6I%\7}`@Zz>'̼
+3i"WMqc`͵Absj]Wq甬vk^irBtۺѻc .^M;;`Od2؛>tmb~gK9Cesl,2w!އr2~(էA+ۨCPeaU`d;%>
+;[ SmPt~-aB96t=MH!='qTNCC15w#ǑQ=>-h	g4.;Co2n!5C0;ATȐ'#h??*/Ԫ_7fY֭w*iZ;RNSKKU+_bS{8ҵJs
+A?2 K*杜.L3aF
+jvݘ[bU'+-+
+]$vR%T)#I|"5`PKE1I/P댘4$KFo=;(Aҩ	zھZtM
+ ޟRPB̉=>P/q,RӖ
+&JLC݉u_CUynG?QR7oWt"$W5K7o8y@R{_qv0.tHIԏjf;ʲ)^|%L_>9vbCPjq6d/k?olT2g2u;)I)	Km_)YIRX惵,Ao'&ߛl8}q0zrE)'hmRCڟ67y5ϲ~j-Z#COMs>,7$Y~m8Ưps@H֎SRZ?zwQ0Sϙ_Q^e+ʐD8|Ji2)*bQ$>֝"89(Ypq46r,>ӱS@	B %`6n4ZcjXqvm<6HY?yv\я&uEjKh@le1`':'P43VD*3I E@Jl	m7H2=m!s5ްo՜{UUއǭ6(0KY߼$J^ڷtGכ.Qrۺ@r\Y-h۽<'Jǚ͛,Fmh ʨtJr!k=ӁCse6d$]J5pNq@؇a>vm86~	kF22vcEȖ,1Qyϡv&a4=j"V(o ":v$}cX
+j GC-`v$}WAcR%Y :.,E&r^eyk[f	efWtPl6H_*Y_ dN\5/g$n:_%f%U3SW\ɍ7t:`/;âa #yED\_7p6i:s1;l
+-;1nL QUUdw贋ڤD֠3O*5Btt'vL*Hʥ̗c|%$=&a-ԧTU⫸wߎiG}?xΝ;wܙ9w]7t7{oxÎ;]5tU^gs9v[߸""ɕ&/Uċƫ@ur{2FKMw0k ՈUeˌ-rS]0:.w{	
+ mRNipB8}hͅ8wگ/U1h'[=w껋B8{189N/fkZW$b%
+h Fk5>
+۳Jbe8x^Wzq${e-t+8g&[/_RoUJQU+")G~Q؄(G9P$2}GSBd&:N*1<@cv3@	qcc-W.
+|!JkhL|{JvӺs)bHuY? CۄT!eO'"ZF_C	b-~P$?/vũOį$blN8vJʩyomJ27rY^<? -H9PQrXmBi M@<UAi_o_d!Dڡ#r̀TG#OLd2t2d!F6AI51U @oab~*6=Fa41Ԅ9s
+O.PAMmD G(j"vAAhlY%XupF	A("rN~㨮ƣױ*:4g>BHfZsY}YBN{x=97?$/3޺uGxO_n_)tV-VA&v36Ty #aR93̞'%t':c#0i.1|-b9ٕC16Z塤6)m0qsF'J4i3Bb"'iƺ?'5tdM BUCޢ!EK#OXz!KFdjK1JӼR"ί~Lo6 sܿ֭[_׮z{Lgu< զ,&?AD'ok-}RȍqlwiqюTIq nF'F-zZ[J+[mBNk]{9f4^hmbɟ$PC~cd;| yCɺUK'MYiv0|?gRN&م.({a^yåyJהm*NҫN!7N6{Y@nZImoj4N_R'%fq,IFE1h[R;[6]*	`yƴ8Y,o^nf.K/-d!5ŉO7T#)_kO8,	4g@KHV{GXP}(r=o#'L+L!~0J`M.Ra~m0EHfcKIA<fLr.7DUK_> Ԙ91"4( PhǓ FY! 69.&gRC%J
+Uu|ټwʭԫD;QV'?Ԯ<rf=fOI5Be7F{͚,=׾E&վ}4u[m,ϧwvanxQMQkbu]I˺/K!@S!X)Wt "A!sX%J0
+"'@-Xc0r.5$0kPTlwو|Z(`Q{jA6iP"=h#XB0$F! 쁱匣>%ЛCe@0gƒMnH0|[Gٜ( %Z?.L?zDj^mtwWžyqEß pzSލM $Dd(t-Ue6YaR7{.p3x&ׯw\lCsj,7hR$ZkB7wH][L=fp_lz&ց]R-B
+bHƒ$N%e#Fc,|*_XϏjP3b2[|6oO
+-?Ck۶_l֣{4뮻6noz&=S}Wv*AAF⍕rZR'z/gfqvQX,6g]Z;};%^*7.?|04.tͻ2:O8/ߠX]ẙ{S.NH~)ft<J{fbg; u^.Մmݕʇ߲ߘ f\Z?XS2W?BGo0Zaۻ@N 9    IDAT$r8J|!7·?KPalY͝yqV(v|=J/jt9Ưv	@v,^7sWFӵw(j~YoBl7Eӂe,;>?եktlNNQ=ϊE3` #[Hb(ߛ`QhZmJ5\{359VңK2ŠHR35i:~vQQcMBjTTwrբ>5J$'ĦpIV1bqL{<se4J"g[Y5ټǉ	?eVGYï$9>/al9J^1gk]̇!7xѻ,EnTJgů˲8F(zN4`76:]@oeTJە9 z=5 Lw|%F#P$`& p!0A9
+Aw?"Z(6QB01 a@`.>xF@a"8f"\Fo7egQ(5(CgaWQj"XA:Dl92P
+qHӄrLIDmݗ$(:]++OxQ{_4J:^gRR֝I~^ M.ĉe>gE~CkSAךBŎH?]k5~DHLW8njґ.u6h^vA,ZZ&M8eZ1)jFA AmZSeVݺ7TC|G.*-U欫f9Î5MXsHBu:VL"U~}ތϽa۶hgފ\5a+߀mN\lkggI?}Hd-.EQvTu 	ZK|A|@
+5Q+_ovZB5h
+JBn{4D5se٥RNZkSw?tO4z8;Pr(^&g〉۰2EzHwdʟv&g=-+ˬM+O>r(HAPDAFDO-m
+OLZm-B4"Ir$|}v^yqq;{5s<aΉ0}gcF(=?l'Aa%igp T8Fp.冪$~U;VGKϤtأqfS}BF񛲬&86gGt|Ju   /4
+P?6C8`G !hYG[jO~Gʕ8Au>O>l2GP]&(ȁsEo1jX;-QcM[M-Ae#NcHm̵bLM-NXnDj=
+]q6voqGXku!?J#lN/̲̊3)^jѬ[)= 9 j}&w0gBE^~o,voZ6ٓg.,Rn 0u_ߘ;g<e@PD0t2 v Aֆl	/@ P@;> (o@. ہw`]mAӏ!.O @ `;!E`yN$Bp>n>f` Ħ,;#c82/NP?I*UB;\-)mqq:x 2q|+_.{",γP7	=AZo?\R"Wbb3\M
+X..ʴ(5H2P꒨8#6+zO[uGnsqXDƠܨ\aq:MNdOPK̂ʹgFu>&}B`^?"kIx&e&2WJWxPtc[1ХIq^Bt!=jޢ8*pn` ơ-G5RMߝS7컻)=~?+^eGZ
+T(=6{vok#lruݿwnECH`ndVB[U*]'g}^ٲzEJ7*QJOa[uRp}w	f a6JpC
+bh?V+Mğ*ۿjrxC;2.ް;c\alǖk-5c܂X.?b~HURBR~ q/DpҞr}hG)Px_r=s0h.6K9T) v9P-૕Zr-w6s;!\lrZηn$-&|nF:1?UiҰb@HxK4]nEC Hcʕ!e:l7B׹nrU~~6t&KSPF!G5XL)-ή8JSFj=u'@ qX90K߹y=Yq+H7o:8*J
+Z;:hv[J3?Vߛp
+:ۀG(DU7F 	14 lC~ D؂b N><0b /u /ۀN [=(<*MPx,!l	t́4V`\MUy]!j ޔg6Fw^"dpo)t{~(. w~";b~0 K]QXOs]Նqc/Gt6SJkJ$t.;<F04Ն |F(S(Yۤ3ӑ^&(aTb-p&QP Ш3r &T5 %4͐ӓ?Zs:Eqh}cR75E6}>=H$x3 h~xCGwjuO4@?}#NvHJ\(xEf_zߋT/>)t_P(h$
+(..镋ׂk}lT38I )U߂CefRs"'I"g1uu;L\Y}gz#Pk ;zBsO>4۽!s[.75M9+_졅gZ:DbMcmI~叏V"Q'zOn,,Po*,qTu,W_+&v
+@\' HIJ!;ڣqW}2Q-9= B4ak>Rl	_s\c|C5BO+W?llEch.AY(׍[K?qylW5`A1l](bHN1dD5`9DڰoR[
+m\3M&xqqG{1CHXLrxo-\7X# $vő8sojEk'Pjftw]4HPz$.%xoR) y cۢ c\atE+ G @I 9p<)Xem@o"K%00!XZB.0
+]`1Ԏ#@)P/]+`$u-6zw!Q`n+xu`4V\@)vJ~l,V .zYzc&gK=84u\(B(z28^۱hVYvA_Q~>Ub_2(ΐ/,gMWN?qm2϶u+Dh=CQ	R
+bVaWy{tw**jy5srf?l4;XBW2^,VlTQF6ˏwQ lT$fDZ>WDy\l4ȽooM<ܜU Q}TQRGK"5e.-[׽//,`m<4ڸR_f$4pn'KA}8$WkhježӱN72rmeU7lеp-\7W6k)'ܟK5Qr<B3'P
+uoݓ
+rQ.j{8{k/de;,~q'LMwtk!6F┺s6P%g?˳rcOQHpB'syE\d!6j5Fv܏wĞw k]rٳ6{J?}Yԓ vH2"!% #Ze*)Z`@(}.YwܞnO_c@C\VCA< 2:(ĉrBY\l.q/Zt;Bi?!Y([-eKøAe.EZ;F$RiMQbB
+ {*EEr,. d-1ƻW&zC٨^=1E*]r>.{(g0L!,B_Mq+MV=?D#،!L>=l:Bi^Z[~j^:ha*մ 9xe)HA' +l FAm }P[U }`3 6`U@~A',(p ]>8d=8.Tf@qCy y-B: C r ,Ӿ,n~VzT~"{΢g+kr~j /,R/#釪7m0a~Yݿޘ^!.n<W*lCr}f;WК}wOsZF\dޥ/tk\5E!#2)z  P")Ca_ɰWp  XvR#0:-!"nG-5ȸ%)G {jKM2Aq/hK v٨r}WUTnyUB1:K?D0	.oYcxw-_R/Y%Ue}+Qfm1?4HtW"XxQNP3ܸ|l=٥W8ǏRFKtK_vk.kQ<(;70ST+)d[((I+jvN!0
+]\&6W/ǟ*ٿ\eOnqO3^XXekf	=eȾ8PS3wrĨpTR^LZB%}uBtD	gq #udSܭ~`Gnܣd_ݦsY;=^.:?\+kEi&Ǿ۶axQ| '׺We<$dɯ?:r@F Q+]\}yO#'VJ.~[1M2um.hy$1toA'LtoHWB;ɞh0D@Qce p0`bř87mtf'%Fҕ6?n&l	t?Ea(769UEG|\7bc]R`øZOs)d'BWk;gr{drb=, 9=Ǹ_o>e{ YaJA
+p|(R+@s(R`6P`@f́,)vV;dN@3~Hmƀ(d-)TׂL @]( rK@:@rPDZ8Vm`q:߿@/8^P"${޲`s3xu,;}\tɢ{a8eq~kn^-sF3gO! PHS-Yw{*BxAڦK%ۙPL]q8 0$ @ڰ#=2?]):hS! N5-tact]wM>e幪HC]t=:ܯ⒅EYv"le 	IygSBӣL޽~'W6+A'8w*S3=<L!?6 C	6Kw{^pBٺh4ƫF6^ 	[d˞,;#{˞%6,^GЀ'`7J93,dlho-)j]\g/Lբ;<04\QKlG_(ٿje}6㘟1(^cU %Dzї(\FF븚)PNj &=EU_|ⰧL6u|Uqqq  +7j,EU]y0&p<9:~S1P
+,j;6Reko+Bntban3;S
+Y-ߪ>g>fZ7r~A1 ǫK&0XtǞ e\ùcWYxf=a *tb"Ƶj@lq PmנA S%Ú IUM,()*B PkX10LW4*[r}%s]sZ+;i8=׬P+^L/5R)N8	}ZхiBMVmU
+ B(ǟ*7pyc*Z	Y_ܜƐQa n	$dY P1 wB҂"?lawA1W?2hol	,FAydI`Z 06f!`P<CR:P*-@){21$eCﹿ
+y8 1'J]nznIצzfm/us
+q\mq=6ݖ1Jb9\LM.TSư6ngz lyd 8^*wH7c>9NV@.-#}lH{$YV=}0<2H/2<+Kj[KTs ĀqQyN.N(LLLjzRS^i»'n<t:k?+G+t6kߏ:d@]~`);~__+oo_?Pb[<zxM髌읍?![ɇl..cWyT='<g.~	^+ z)=V?+i7qq͞X]2#(zprr6B5BM6U Aq?2bcVɾX_cZ; 2Mq.{rEb%.r];1!{{{H5?	^5?(w,,|Tu16mo_?o%+?]>4{7OĲlxe0/ԂrDιZc{̀k_^>oyQ!?0{㿣y8xu/p]V[^ow3q͞]`{Pkn..mJlpaڱt'XX$:ߓmPF鲃6{Q/    IDAT#P+)F hD'f:_4R&SMk[Ozf=A1gvTe~K<Bڳ~'r5SsDnƮe	}; POT.N.+J<}3._*};(N_N܌	CzHzZ(@+p<@)Tg@搇0DV%[ 2d
+iHh  ],Ⱥ r:` sP9hAu tI*/[j 9hxhؘ^s{m{YqTxUk-!RN[ $f#%v=*䡾scF G%P8:,<m!6~f-\RO+YJPil5+ P_c޷;Z"-](SƮc0Cq`HU,Ce
+o.+Nb9^Ӆ0cPF վXF&%\5KخB4A <FD0p3PcG3{ҽk\ئZ\1\o#A@걒}Oz$I&7V;s756ߜˣO`&ڤ-8F*T3O0` =.O^b[	`.~QsB %{D\Ѹx35ʟ@j](NPӿb=#x_K\]2{BHDrbV~ !-Mݣ[}␟^fW;^~a"kx?q G\K^n2d^Uփk'`,Ce<ln7YdٿG
+qB{\qQt~Qy({k@ډk{3JcVO
+XXq9EnT/Y D@FG_g=_7w+'fpڢ8޼EMP"6Dl~l=L"Z?~~xX\\nkӽMn" 63γK" B\sC`K9dЕV}F.E*DrTtL˱8A~͘57'hkܐL[d.Q+BXX/J6.r5}.Ừ2@(JmJ[8ഊ<8BW	`Ji-猗kWdGry7"Ĺ8 J<N)sF; vkݟdoThFCHj%̆T`0I4tx	-CoQ` A,`rЀ0P0x   4Ơ<VM6;#Fi\)Z  @/[0[nQzUʷ"F7J=)=JpfYt^nl$fj@6,L-1YmR7K{05i0Fq1<%tc,M:]juoM8C%%T?%(`{`ڠAvॼ -oP
+`	xIv<˱HNh06*وuGsIV; :Bm`!$e&0 U|\=k0Op2߽k=uÖ-qh~4< aW9dtB$/βq#xhչd5`/mljA	FFHᗇH} /FTE3qd`ݟ5X4X8t*v1s69u}a!;nƶb	*#OZ]ydV咖ꐽBZY>)MC1Yȏ6YIP3EHDbs;yzj]IZ=	 }?6L'=,? (Ksƛ{jU6c0ǹa51ۤ\N8doO[tZ&e;=}/e{@(8c`cwv/]_D6}q>yozFMe<ґKѵC9Q"h{$a(B4+ &RE&kp0ZYzbe8B
+ B3iLieX@qDAȸuYE`JtW_jJ(E#ppϏ=Xm!K\TՊ;IRW?F}z@ZWyXiSQj
+ŗ:փ0)Ҁ" `6d15H`9lnlDaM@A& 3  @1V s  2> 
+Yx
+̅|n%`.`"H&R@s̆@̐܃cA>a8ƝZ",;Ѷ|#]ݟv|MӿV4ӿ^UXM{JȍZ״R	jkjazs8iX\{%>ݖՓ+km\*.XJ,pRa'$`Xiq֕62aoLW6!e2T!i}`_vZhe7EWHP"@n2FV,`I?f{|O[W6GpkK\OǥPP"(RHS-:c(Iդ1Vɺ+K bT8iI*/35^8D2?j㾍ԍ8*V;1ʔ.塌,,D(O
+eu_W!VMp3\'{+ՌMZus3jB"۸\@RB5R#0L=һiVcxBgj!t%
+5bejKR7TuoԺZp-CtPl]_	YJڸV vr#FHY![yqq @ȜRӌ*?Qj<.Oҷժ5'\-!do~6ހJߥ[ldLI1JՔ2K#PX
+#(@FMk; $$<iHՀ!6rlCd&qjto@D=:(ٓmRhCA6*E]\8$Նpb+\[ƠP1STP'rpI/G-DҾ՘GC0$Ve #7?fO+z&
+γc	(=KYRO3; l'i;8 yzݷ(	eƋ 6_^
+iVv	S a9C@0(iOZ@=`y8#`J@DQTx I !S0>P 
+Ha@J(2@   fp}@\V 㖠(!Av+RZZxOOϋ-뉀=q qUZ	\n``KJ\Q;wzJWJM}iqƁ\Q^J߮#6[C9%6ʔ.WW۝BM`T$j24EOUU,,}mXWDmHFȥ[3>T./:!7D}CR6r5' "k  
+$5 Z! pWU$+i18+㹤mr*B"k5qS}q^ Mn*חcpoX֝bd!?I%BM`\T)(A YO
+TrL?g 0xt~*t'AMv7#uh 0B[CICٞU3]F`bU% 0B :RXKMժ_$=2]0ʨxMzEwz߯:7םp=Q)E\ٹ-P	w^#xuMZ574/v 0Bi]Ԃ8-*_d^\yh\U1
+q*5n[2{~Mp;ObUjֵ%!+=zĴdo@ݎQ~Ǟs:4fEv6;r"S0({`\^f @ a?H6`F";3ǎ"3YW%zQfi;Xrc0fR @B @X{P.?J1 >NG3o\%
+iT\MZ2r@)FwJ=wb/G׎5.iڸRn0ɲ$#]xTI(Rќ-co(R
+àb , @q`.(v "~"@$! ! 0? kU@6U` ^29hZ'@K0l@$ݘ^c qea+MmΫ-"8>VgG1M`( Cȁ8;ܩ8B5n3 s D`+=#'msDMjX;:v(*t Ys}I/I PPl5H#+g'V mz.4sdh-^"1Eǹ0!l&B<m,!4îZ#q؀+?>k(6~j=pKq;
+tBvj!Ubc{ҸU~qr~P34BՄ=Iq+ǂA=fR:0E2vz"GE:XUa{j@ze>^KBUnq|~P+(aJdYBSOF )bDA,.\m~(FF@
+QPipvK=+D	ôAukw^$A~Cmpđ=~v~Pdվ͢%(鎘RE]jsg=tCj F#?NZ/D$N\Y&mY~B0jvywM>кQ
+X|0Oh4F ,8{KA.Nk]q=s[\!((4KPZcUb#	?!)NwoIąq*lKe7.Iv,ET=e;;EM$AQaYF.2E 4f?.EY@GSFHҒ\\ɪRP)"UҥL7{Rz	HùC:{ʦ/.&20d!3Ͼ+/"ɣ.O/XxzE\Q-~rx~x)?uf,;RiUsIně\wUZ0XcR30X-S @kY/Ae 5XD al== Ԧ!! 4Ak(7y !(29 ^a\Da=ΙB)av!ITߒg!eJ@.B LȻ[c2Ѧ\ζɾ?{⍣G	JoGKWE<
+@bCw=Ru|C@rɕڐ4#zaܰi?w%ȒC(t7jg7L9ӆZN(S 51hwI-u6bT-EJF9MWq/̄u\OtCU=_WW6'I.ֺ{l9o2]vi[:814G8#u%0F
+`<WK.i(R,xX !Yޥ?ܓGNxaQY	?1E"G8LĪ{S?W\=!/ YcmT Cw.zdX7V%gkL)6n {y^A\ڱs?NR%$4BB@ !2&c0>1> &Fd K($ F7?btUT*kUtk-ocXw~N^`VFv/@*9{#k-K>{(bo{C,7Z(3S6:cwYg`P'OhQ]5ֺZ/48F<ZχxߩizRyy]^]n]1<;e;iNM˗wwZ덊Kjkٻ0J8=5~7]^3wFNծYa!fk VxBE$@M	Р,6tiqO6-&iZB`E
+"5HpXZk@Ҹ}ƶH;M+0fsM63MRd6?P3.t=zgb~HGWfz~|yn>ac5G7	/N/(zr~dt zFcH:&K&l,?\Q&$f`!|҅rUC 2Zy1  ?*d(0  d^.'1t;>
+<tWN̆@[wi-B`Q1h<8h~Z>x]=< &lh|;{O]'4r>.iޱ12`mT?APڿ%U;ڵd˅>EٖC'w1*ٻK=pRc-/x <H:ק	}D}`3έ|Xì{Jyf*2ݟ98djFj~"Ol{Ka:6*+wiq uе`]\wETLuduPm$呶%LmUSSjxk?{c޳`+ H e:8j[a?SǎTՐ+^  7{r/UҲlb$Q'ٙ<=QKsO&.Yʒ&[[6 PߓM'U;ǚf6K ^~ #%+, ٠GZ=#SǏU8]HO5 +!`jY2Vt 1lFuC؞{J0$>^> ugsyT4|fRЧk[OȍmW:	>g8w{1lW>ov?Q".m-oQ}iBQ<+-^i$y^;ޢM3`'g~TJy.+I8?t䀶z ڳyIŅ>!CkӏTԜ[_ds#qYˎT3L"jRn%͕j!@iUcw. QH gLM֡tUM06cfMVF/uɸ2*$]YT#Ӟr>v(2N0Rn{mxt*O]ƆԜ<)䓬eJ^7f2JtJڬSӢ݇W׮F`oR:ƌ.  },lX1 (^@idQD	 05q L~@ǜ=\/|sf=R9k% Ӽ|a-!D[T\.$y#B]]UOWPr{ M:A	zg㷎w=ZoSziZBڎ>4fxz۹Θ/)    IDATȑa|A%-M~/йq9( P[K9#ر[κ7m\u2,8wGԑ9LMY'yO9!fgH*d,`X ̊tC<K(P!kzNr
+<3	Jƶw}xbxo~whV)-X uҫpdUT,::xbw]+M>e!2LbHzwUz'AY߻\\'TϦt`,]KfWPVW]~Yx6iZR:gxm@W&Cn;BoHX`# ݡO4KPYE:ˑM"^W)1R:laU1dcEkՉ6[ίF3w:w0}'[cD]5kY}m1&QjNk61;ɧ)r;W54;/Uz>/^Ý_k_
+q2w+J_4E?^VIf/3rp6~o69L>J(78Q3YuGφCJwSqfN(o+1_n(]_344w;ͥeLV5b̌UUV;K5@=+;nV3	'F/6P#,P
+&;QTz[ pJ98'o9^R>AŉM-^~n}+/;aʂӪm2}m4PbwSdr*jYBFkaMG t QBY̌{d?9pcH֡ h,B: ܇N{)paw `CLǳcdeyڰt@:?Xﮝx&eJj]5(fu9^o[*I^[[JamKAɍ͏/8V <)/kawdճC~?C<-^9gH3;,]mM(X!<|8o\]G\<KY=&>Y>sewH#lezCr}녘@D6qPXgSV-R վcL}<.ReOUr53	E,-K[;Bs+x^M1*4]ywږ	]Gr<5w+{rq{6ĉw#yR=*MS<^ʲ&ׇigjK@c؝</'ÃR/hS=Y`XoCvyw('L\Y^+#mC*zScYj.rB1IB7S'v4TyR/T  |+#yL퓦.Mvp7v~o:ۈnht/9QFgE |8[|yzVQ'):[3NmSIwN8_?y/ÛZ~x(:'9}`9Yȋ8eL5TI=x;qIZNfZ^}}	ݯL]ijN&ra]"?Mݗgjikn
+RT8PfY-(b"R	-&u!dv!`0"s,ݔQ㑖JXPࢀ!bMA	ETlnY a`ǚ~OE 8n64!>"Vɣqxr6&όbW>$	8C{eMJ܁y@["K]iqiFQw= ւBAV0D wdQrw10lvf(  !d[+K[
+U sȣ/eQ?,RP
+^BV5` cF߸R[#+om+0L'ɗ+@q;+ãK8{4M^@*R@jX2qID*OԶESq>ŉ6Hl#r;4^@z|re%-H*e(ۗ)X%@  S~nږ3v9(Ƣ^ڻ3(bFIX%(1&P !$>ÿ<Gwz"$shpj-\[ QĨ|Bxу<h;/FTcPg%iST/Wwnm񯝊z"~a'G]dT[Fʵ?6IY/;c0B78.\%F[8KTVG2\&`0RN&%g3QKieRM=iuv#ԉ1'M4-'.9\UE9EP)LGzTS< h^^3P/B~T0R'qo#}k1%RS6^^Z/Vr7#~[Q]UzуRka(79ί"JV	v+t5nl{xǚgewvVJ;*q(9X %x=6Dw.+.hQQiB$m-QYRo([[:4Nta?Za|
+3*s
+!Ԁ
+6Pvb4خhڱAБLiu! Q+$rn61Ln5I+cc3xF.CP>Ps|/FC}?W;9Z@-?#{oJFpt[[勥ixĘb lZ˸*	RH?mNN=AI ZoZ;P%eG !ـ,8Ѽ *	h	&0de0LP@0{N=`WI}\#63Z1@un(Ĺ@(SzSVO@YF({w~;.BH"Moa\jk쬸gqM5'&n'򔀮dDBtJ)UyL?Q1c/U;
+#{_a~#z#zo|fE0m$!C\40C >a1
+cHtY'~+#
+j_ݖ5Twrc|EIVPBO}7יxtUcko^U LL L/1bbxY}'.~u &VcxK61L+bdNpy$榝h"MG=ި0$5+[r{rƒi,.#-HU33րQ@6%ItYYc:.vV 蚇S3UTwqn%S;jYjRiPrȦGH* .k)dX=#׋;m:ӣ&{^DO!@^L[,) 4jӦȨxX0X)ƚgKL\|oNcB_*3FJ1郜`Y*HJ.1.D`7gZ78mş}g9! ڙ^'֧,Ԩq5+ґȚOR*B@rpD#XM=*؀ 1)TPee!؅( :լEvIv@v(H5vaڲ4lh4;X qE,P\U'ۋ\awMR<؈#JoҪí"?1V=yPVO
+B1/b
+Í8O#2xL>Ra@|92̓PjmU5P2dY5	d%րCBknn_;?d|yXs>jԯ(+Ź>[:VaU=Q
+ezpٴxKUeuj/ggSJ__G|~Gz ߵo4-Vz^iMKEPJ=`2-om 9;{uʆ1D[/ds,wqa"K)ҹ&g6;D &fX$,iwCF 9d9%zl+fʢLJ?Lr=g}d|Fikq9ݵZbz\<Q̔[H.d:P~m;R"tDtzN m
+Ҷi:ʭLU&2dzzRhGGnexaUfK4jbד7jd|Hm< $@i
+ v0uR$QcmNW6#rw-eg8Τ
+
+S-9cPc+G 20'}57Zq1Fi;6wtW_g(N\V9}}R/JoߕMCǾ Rz^(^/on	@y_.bFcOv	yPQ9)_zmW^avJ/F0eOF]M;?AKRVF/&XI^>mֹK$*8*6_nPRj#}ELH]M`Յ2\HD3qX=CQa\aevXn0`bz:]b&3DW.vtd,ߐdYD5ܩx񘓵T2|v\~Oj7OQ43k jWLʗsLJ^5L{W~})Y~)Z(y~Kt<ǔe&۸s :T9w$S߿T6c`:7C-OKȆ@AP</b
+JA܄,20c)acP
+Esղ<|E0~B2^t1HgMyuRk)=0~x]r^>ڕ>:.^{մx%\;|iu~zhxirKI1,_X?nij5gSqaӹ	tK&3b~K.8]<tNԸ."7'zdç/>42$zPD-8*Edj|iUr=5r1Vmem_͟!/T#HOOjoht4wmSߏw/<Z鶲Qӹb6sFK1b ۗ"O25bnWY_ZNqG߰Z$G$AXf\D3a& W*+crqv]xM*X,KXʚbms5hmԎ0X|)T+C󚶴 :lj. ]cLuptKie5tF7c熺sڛVK=Ѵw޹:l..reH#TO?0a$(C9r5}4":|BJWf_	޷Jy6ByPN r|oZ)n-P~5\ i8	?Vɳ猉"ns?)aP\~kk ,vu."FJB.w4M h{WՉ !8eȩMuw.1\`-@D5Iֺj-&HJ;`R̊ʖbfL-a ,;ГS3Tknuc@Y.X8\<b5}'<Iz $M{νU V B4,?g_&x}=>/Mg0Nz#dufS+u0ۿ}!+B2vh.ծ0l@!-R[@T `ơ)ZN';O#L'O`u0
+ǵ1.j%n-6,sGV)g:7t>.䓌&[׆?t+1N勵iS:]h[Sj1eƱs]*M?rOX`ӏB?(^ڴ)v%玪_@&P<eoVCZ,6to:n1[xS]i`52^rҖbLF#=YХ-j@̂mS]Qdk\NnϻtOT;P>!qو< ;$.vr=!v)ƒ zr;ӀnZk4QgWOGW6"ˡ"Ұ4#z0Uy|Hr۹JZ᪭bׂJđ^ڤP֏PԦPcvE5Sb:P >+t9; `"fO9XnH/Oc'@쐍>QQGi?:.Qrm/Y|zp,ޗ;c:-R+ur~?.IӃ/§{~7u+`({	޷?~2}ާ[wSϒ%Ͻf"9gGB o	k=xx􁽽*k0|'s6Ï>:Q^gq8^EQ_-mG+^[ȳI=mnsȾ	>.3!ӗ94+7@ܐd|SÍzo0
+SImjCj ^l(:@CXXjS:|:1u'Syr O>?L"ǥ Akz[z ;Ǘ7L<ч^NFgs'Kw^_WE+ +XxBcW6	Tɔw!UU*zI[& 61knҤizV̏6=x +{Kvn|P,qA*!O,hu/)L&L7iйqܤoq
+߮mP+/ΏAR'0-<ē_srݬt嶐Z`!pr:3ƒGLZpG5kk8BcqX 0RVmDׇ6㸆,ؾ^p  1xH:,828f<kQN21-rw31ՙl|
+)FY}эM`PZ2uaeiY*pWp]W2(S- /t-1fwWVi"pyGHk	Bژ#4iWZCr3s¢d5
+
+!&fmb ƌa+`EjuhLhڢEѠ +01|K7T$1Cȍ7aUz>^/^HK<\xDqX~ᄢT[#-T<^]>4N>$UWwyvck`C\    IDAT%uk
+G:({l8 '5j!%,Pck{,+_W?_&뤞@7YemNqv5Tꉩxla5V&wTum;|bnoW dbڗ遞8% Se55i6 dC7&NlhaG.sRD:ȑCUV ;ƚYi--6^> rS'L6jg2;QC[azRaeQKˈD zYagQlMۀ) pr(L>9H0,>JNf ϵY3'3p\Bd7}Հh	ZGYAkPmL-G&	Lm |   A
+0mEh)H	%J!(	G;.(	;,@Cà
+#c/k4*y\?~X3/^".u}PEJz!B%Ro-n
+8r7US{{LbvtyuѯZ~wAuIӹ9g$*S@0ܥmLT5m= 4DGo#b,K}Fu|
+: =LI2! 6sd*<CcS*|Lz;OZEZ*5 1J
+kKEE5+McMnG|Tߧ|濆<^gY.m\<;^o	U5igMZg02{60ĆlTĎbnSD"2ViOrۘ$C|P|9<?K^* ᖇxgՊ=**x`gɶU`@m#F۶&:хAOb֠ŊO51d@be4 CY8[XBPUõyﺁ0pOA٤'Ekux90M?@0ч}-m&胜޷ܻSYv*F/gnJcCIH0i0}?jޕ<vLJq7jf#߹aZ3Y<G־%!wkӈAMc#?S{DQZwb ׍de6pH0<W@Z	=7w$V\˓<rȥ}Sٚ% Pd EEf̐Z5	2-jrk-|4B1q V&CH(r;d('wTY4\Z<ҩ4)qq!N.Ls;	J]]E.9cBrs#_O>1?H#?<E	{EYJ/K4;߽unWfťeyj|vY8M3iz1Pgi=~as#0<˪h)	ƣ'1~;E1oĵ&[/˳)׃th'd9d4[TzM9hCUnͲόw`4MSr$J!JhZɳ iqPr7%\v;\vu'm#{{;%.} z\^#T\3׋?ȱW^TfJoAyreڹnpL- i]bGF|rׂ{ `=2d7sW$l-QU_9`v:6C
+X4OڥHҚ&>#M @rQ  #@|ַuesMU =.zws[.Z~G-b'q[1T,V1Oǀgjk
+R^!V!;U['՚*Ts1H iL9r eEaGt~j&^AZd^igU9A4q 8"+ىeCVVՉ* &4NiU҉&*+8m i0e]	bg:B`7_\^Hӎ/WzRok?V !a'll.z>rn,>6-2߀Q֎K h,̖V/BҦ#=KyѦ;צK=kBRȳcibG 0tU0Dlrynzoo$(զaii7IX#o>2`нk#ҽTzK0 6T ʒf0a@ֺrp:ŶHX"JXG[`qXÛDR>FB@( #'> Pĸ^Nf
+DgFi* +bKD@,djnG=i#:qAF>Qʚs-BVmnrNb(45ї}k=Fӷ/̼LIǘzQ>wa+Z>ʔB    $ׄW @<>ݔxL0-nΧ@5=Ƶ/\T1n.06zk^o-$W׎ߘF9p@⩞{15N$N@)9X,	\<o$isz!TI[`u!6'#}0FY-KVu8Y/q1e*PΏG,ښ.,AEY
+?~d^O-ي4BZ[GY>(!X@ti Seei&]# ӫ P_b0L6wr& ,Yb5ULk8匿z<3go׿w 0F(ڒv@D%>}" )0( }oqGDo:v1J4~hl]CZƢ("GE. C
+mU,3M!b2[ 6 jbo#Yg7;׶h3l j:K":1eLR0% @n;]f=5{ffO(EPDB&
+$r6c8&XX&LdB a4yf|нNչAr뺇TU|_W*_1T)&m*Z~iE,ԝ;+|EQCu vYJn sf*l:!63E+#69BW?#~覯o\l>8wywk31T{pB8>1_f}O&[zɎrl.?P a4'wWO֯
+qOmAm&n@9w$ooz0L)X1X4jj$CuQwGUyg%"#N[mQDZ{v-@i@*b.K|oXT|OI,+8Ȓt.1
+kV-(u6ԥu
+Ҁ	@A0ƥ"lҒTd|Jt+ɲ"Gsj%VMo(2-/Xzkթ _P6kť۬@(QG!I^T٢UE1lgaY
+~o4+x	J5:V+
+AݎUmZYPjt՟!16:鲀N1xZ"N@y4 Gcky%!HMGPYW]#aHH6?^{ǭ%oYa[$CƎ%œ4g	3sgPҬ<EJۑ-@l8| tX<ݮ\[8=A$,͈ 1M11P	++ۆ,kێRHQ( N:dCU$#.3"JlPr4$ԓ jl1ZkUg<<<\s{׾βҤ|`qZ<dbfxʹWeQJ1XڪAԹWNaj8wl;Ut-zLlHt>#|N)YUv6dk8C`FRxTO/vSDt,MeK`-d LlIsk;h-
+yzB+^7d˨U5S冡n_Q!|RPeywZ;FYҬ.yݥv\O0:Ig)&oD2ۨʝƎ&3:ťgfӺV\߬\k#8s5;9K}bLO>O!r)s#{\̬}ڬO˗:)uz8}w|KCgXl=>_$OMYqy`mGr;݆|pz?{FW-X͈ĸgs[}1VOovQX+. k!O!㩅J(R)jlLCb݂5]RXipoD^a#Q>AfEO lQb) VZ5)昻OQpwq!!8,3tXl(ͤƐ#ɺF9w"d%k{m7~s<tZ^<\}[7y1덝XK_D/{)[1civ[kgrZ<K 6/#f ()R\#^WG>Z4}r}xUd8۽qR}`i_[EO9;ȃ-˥/4}> _B=ȯNhG|BQ|ov^4ɯl?GSd'{M;}Jwk}"QT~ X_UO>нseZ^d)
+Aym6y;!{ɰg8lٖu!?hi7"u9
+Bc"`:S@OYpG;˔NTw=G1_QaIY^5KKᨹ7'#UJxر
+w\Bf`\<ʆKP<~%^{$]Y?ωMozxZ3wܽ-ѧ7K{5yODK3XrS/H%:L5sO1(9>-Ql]6=f!>ɐsplƫ^Wc;?*oL-2j	<"Cߵi?Lffsl90"F8b϶inlÈpf6
+y/923505YbKAȲ:e"*U^Lo[[.Okwsb)ǏəG_s}Zܓ6O'e*:l9⠱C3Ȯz-XY<_v:O;5iyYy^5GD:7t'\'*3SCp~X@WWy~fV^~....I:o7gz[jPKT|0a٨(*.D9 鲾FĳG
+LDSu,^B"gUYoWssP `@	t`k.2TҷƂMS٦e\R$G$SP2GBޚ+F+,GfCaBrs@Ave<vԓ&ųF;6k{3{+6v*/<Xgb.>0ί%,)2(/$mo׹=ZO*v5ROTw=X	!0ɲC KF87AF,;Y|սdJ}673:Km6Ы_+#jŽCyE,}q0to؝?\w>hbuPN
+ ֲW3%iyIWʝڌijX;ġFh^P&m>9Urxf\`2[9Cl1,ĠoP + qd0"3mU^h%3*aUėN5eou6ZeQaSqdb@5Dڳ\K(Gǂ1=9^8L~E8~CЗwyOW*o*۲k+ڵ`KrJ55eB*Hzz4~AbN韛EE08ɮfqyTqB3lF]04X𜔆L]6*a>Sb`)Rڐ-hEQ<)2{pHv
+Δd-؍rzŬaKD똬	@@`DMg_y VfRڑQso!@eeD@ܛ3B-w2^8ߒǒMu!+k	
+K25n@<l3~0^QS0?x|zj2YEao+};ˍsѪ=V pP^^I)s\i''.TV8Hߠ6m'GZ/~9y?XJ_ee[&u]rYRwo|QS5 j M9P"؀/V4yXSPPzU7
+eYj#6I$Q>V+urBX7YTҠ @Ҷ6%r pֵRKƒ"'9%e @sRM"`,C;ي`kD-za=_<$fu76|ȓ`xVơgP??X(5kFz?TyydiL.pΖ8kzΖ}Џ+?+5ԩ#c쨔{&irZ*p@O1Lڭ"%\@Pg9!᫒qX<u8{+4^	P	#W3.a"7^/  |64^α߉JV/^Ĭ4땞e!>i~L:Ru#uR_u:kջP'fLm
+F$z@]0Ow$b=uK;P!66{Gz=>k<u^gcohfF2zu9[ G p;ttS okAہ d]tr *12=g:d^lj!6"lxJb᛼cu	g~ cwy_җnko|_g_՟W~S ӫ5u3[;53ɊXAm=hv+,=V]1Y;"X,VO	,iFݐ
+ݷHfjHi!q2EJW8-s&#zF9ieZ:h䵮I@SYY̂ɋı܌)3#ŦaDgrPzW}ˋb=5~?s@@k4[XoDRWzR("&JoWo
+ϟ:v},NN/&)ƪA~[>a}qlO<lH`(UzT'.	fCc^h哖WKCwrŃu_X9^vVejϺ3xUOTʎfJ[g<Գ|0泋j{faȹ(,\o>VL8ϏPoXhϔJ9UP6UXbxX)(1Z{GE-SZXMɑ:
+4- [4Ō{#pXo?2Զ:q*d'{1 032|9./-hc:    IDAT#w9:Ƚ(gԂ/u7muKuj;h1Golw~QkGFM຿{{}5g+:kMӧ+EYeڬ8jz;>,@^M9ڸJʬ߿2X	ZwFo|OkٜfjA:cCQ<P{w/fSu5^nW\{Ĵ?urz}NɏZ>n|]{7;^_?h)LUALCA(|Q9U<U͹[<Qb/x-m&ny9/fb?)=޷$*jXOcMAGGU2&Vz "
+,UPcCe̊4',+FY]7x1H,]UՏx|U'bvںuz_tE>-[?w?ύBkɛw	bu	ꆨ! 43bcj,_jM)q}Mae&rx/4dsJ%:=;]asá>qƁЂѲi2Jjs<+C|r\{%50Qͮx$:jgŊ6d"+GPH o8˞h]323ڊ%lʃmqܻKcLny'^
+O</yάgn6V[YON2E5}
+D=A
+fO+ԙ>͒^9]#~7r>^r_9ռ8ͮݛ[?T9
+}bT''Mߨ0ǌ =h-BFSuYiveN)5Smhc(}\'aLWߚ;Ro>t{csWXWOU#P$fd!y (OM_|$]YakZJb˶gSR>JٌȨWfL} Q00XSal`m.0tMrI8	 dnAʉ+ȁbH;!46U?|QfWί}R8'+/_ӷXrhNȽZKV~ ؓS#~m8hZ<uz8>Q-EڬwCRbnAcUnm>"h-Yv_LO}]{_9bI;+x7oףixG>mNX+Ah֮a%ɏ5_eo;IWh%~;GoXXν{BC׌g/Y@PXWPh%_M'X<h/Lg9̆N~AGk05aUZs,;gX-IIEz}i㫇fo!w//* .Sn@o4g6j#Gf5Vw8ʑuD^V|vc'z>6\f;sC>aE2f#f~{Gs}oܸq4I(nK/qoX `&ڎ;8
+QgUY-R]cv&ZhفPQ~	!};0%R):X@eA]Et
+Kt#&e={`j8ӣcSb"nզ/)?B8,6g[$Œ.\9/֯򴰞Ē H~ڰۺ2 2ݧlCuG7	4ɐwSZ(66vܬCꈃ+s\gWuzܣ̴/5v4to$ph?Ou%ϗ;slq֫89Ǆa.B=d?w)}SjKp74G\-Yc?pJ9ۂ/H~X1[S\hl6L1bQpU؂wc\\2Z}W;cr3ЄlrrJ`# i:ujAKGCEXR9,f8>@!|p!9,%10u6P Jp9ѣCuܤHi3Ix<PP#9|VwrZr{zzC{pTU/1&x߳T􉂭
+T{VGb&frsCyg-Ia4}yf'uS+ىǱ;9ʣG$SC/??X_"G[+7V;<wE
+| "퀺T^eK N=g#v{Ki[k(˳ܙ/k]_ދ"yW@X+$}9SS]4[œ\yb-|KbOxD]u+ק9bOR\"2gV~y͹k$m5mHX\~HIy%77S._jmzc.?0]Ο@3WW;,8m}e<㋙@O;,gVu4ղ6U~PlpfO-2>O.YQ)̀op;sŘNIeBk.֦VuQb)`g՜Db'	d101o߾͛7WU]>9j%Oޝd%~Nj%[{F[(p q,d^TX@*z9 HWaIJ۳s@mǡ:1Xgxn1#)ͪmW=p@Q
+s>EV硨sCR̡i56-5_lINAJ12"&4M0FS[x8R3:80+l$rǑbgÅӚ7CvGWV+Tjr1mj#ڎ+,|1=sGϮ8rDȻi.y
+uQy?_:5õ1Tv*3M\vMߠ:@>ı4vȗ<s-r-s/v	uF[WGcvVJ3 7?DxJIUS'i!ot)኶j
+cs:vTZFu^ag1!V'- p
+/R%Dl'{L4y\)F!jHJVr^GfĺwK]%XU[XA V;uǀEwb	Bz7jUom>պN@aVmR+Su {Y(|lZ9rssם8׈*6l}s~6e^UwwQPg9bW,Sg:joQ-)kHh`=ɏ1,@Zy?|Y'\Ϲ-zsy_85&_^`qyAf+]uAս{*:lZzUA?]|~,m~ijqƺ[v0pb=N	u7Ǐ֜{狓=F<MpXıe6,xw2;3à\K%Hܶsu60^EkSMv>ewAa%kj-h?NfUz[oo~?nb6lVP|1޷[]I5vqcH(;>Nie(2m{fd`P>T@ˇq*-SM
+ٮ 7}:ٺ(c|{5!V-ؔz#TDc@X3rH$@Gmb٦YuƝ=}I^:LcȽ_fOm/p
+Y(D@]qHrFz^Xmȣ.?놞D
+AEսeVqd\PEY:Ru~ XJT; Hpuţ @ בIvR|}s$" 3ujq̺bϠ{:٫`9_`"4(/pʧ-'5DGbw$naԛDo"M:#5΍ګj9cD!ѱU6΀YcmWHFBtz6v).)f(GhJz`G԰g8dQĲV#q%1	>]1(=D^lת@sb숯p6hx'Y~I?MYߧ%*gkR3fyZJo+q\^Z~(x:i<WGJ!H=+wH~}%˞?"VHƑ<$vƼx2g;[g'RZ3xN#v$W	a:Ajr=qPs;zk~'SzSFJ|yP}ǵ`8`$@/Oro/4s\DglK,.??cٰ~y1{7yCώxOvXa˩Ո+cCVi[X8|0ci"@Ǩiw-֓4XggʛY= CKϜpUUs;S}F=xӹo8SEe7 xY	@XSӁlˤ<+7Y/zы㎵g?\sMVO:,ق6Ӆ>RP3e*.:P.(67$ tY0.BBGBc sl]A๥x"Gwo`!WTtl{`nmSۂcZP @uFqI@PAAiv9RkvGe V+}=)ɲ
+r<֯0[R  Gz p|x_noSjVb@rgÛ*Ѧ lOvXT2(Ov芽x(洼@ \o8b/<\ɝqy2RIʋ8[]_{-ܟF) hVQf=ץ_`勇KA先Yx@ln2OpžT尕ҬPN\0|EP^yHHNW&|3J1 s$V	`e`ܾ(lPẠ"@[9bsWrJiRʁ]Y5PvJZN&bQLkVpQ 7 @EOs >Åm31'0laYMh0奍q_OeA eY^/Yej;R&ISϹ+)/dW>mX{񦸼8}i/~o_6'όaFYSL@cm37iQu4c0~eYIv1VZ[\cEL	D?7͞LK(zcئCnVZ"رq}m&*򞤼a/.b\^lhZɛ8v&Wffw]򜤸t-}_z,7&H5W?7v*Pq~cWD*h8 Is)`51Zڏ⤒¹r:!g6$"hVjqL٠uMؒc̾M,@Z1G ((|-GF.聲kk)[e!d6u_(<O~?t'һ1kY<e9'G#*O@F`b}@G4$
+xaoK荰K>5E6x5l;E	U'Z	p RQ	 >b;(i0§<Vf񙊍PwZ:++Hv%z6؉~3slDdHKzpYX)'r[Ӭ)  X'Zj5<Cé>>5cލk)[Km&z2nn?6"g}y<W, VunDXp+Ǽ_bwx:7bGp厴xJO>M_#LY[M?-Oxr`- j|n(F;}@Q8? _/뭚j ]LቝL/ Ԍ0K̤:]=}UE*0%๩Yc<EY(A)$"%9hRJ*¤ǲ꾅خў)s{PKhY$@TD}Zs 1U	4з1X+k2ѥr}I@YSX20$b `lչ'7oRvN^|O۱:b-s|~?06@iy#zqӍUvc:dҬc[UgLWaHJOf?_uĮ~jv|P6Li4pizGYgm3ɟ75Vb|+ϟ3j9Yq܍yA[YZk0>Osz;j:/VVSܓWZj ƎgJiy?ʋls{'{a~OuaKުLZ<|ƣ'bW;QY;~ .nЧ)3m XM4[JV僩ޖۆ&YZqCpn%&SK/[MHS̬Zy\C.ɐ:u"iIL8bqzbSHq1()FaA 
+X`> RTbe`-#B+fqJG|-ѻ`,a{뮻nzz.1W{ta)1a##jMC N^A*r`Wp'Ij(]Y6i;SSY^P/bVz_e%$F.4G	%i\c
+2e<̏`Qu6)t˺) @Ɍ|֩p{p>;)6L{+	1!hUJLrMQ4	c+ĸ|&eYVWpb8
+S	F#?mMgdQ5]..nY
+P4;߅*\yOf!ck;\Q0E0C-9]G!rV䶎`;EDwnt:>gP˟[/Lf0UN_mx?Fu瓿lʕQ[#/:[ZN;"$@ gŒiOzSaݺXZBGCF#iDj	`XlĂJ܂mV=k"+J*zzbjeVXyBy%j ՙKJhvǗuF$Ճ/vyos\g5}Y[gX&dzcO&r|Ӓ=wݥYٲc_vK_e)o\|"W+=YqY=|~O3H{"7vNc59_
+uZ_j;Jՙ}HiLz_Zk<N^kh}ZGwwk$~ko4uz:RoD#p[Ib    IDAT:3$e"/r~{By#0A_H_Պms-Frg/rhΪs[	޺VuFek˲L`vM^CY8?ZZyJylSwQUwr;dIBXB {yYXŭm[ֺ=ТZQ_ꣶ?Z_KEe	`LH$3Lfs~5}@{f=s$A[h2zSB_<Șu&Um*`,уeLE?w>𠀌H5"rF8>TwhCb,OU7^D-QIwoY
+^~oqkooߵkxZQۣuih9n\f
+ l,` @V"@!΀@#tB"rQ u2P!!`+0HU*[:2AMc4Ш).q#H0)H6d(UPGeB2 $	 H9}b$W&v[ȳb\	Flf{lt@aA'KiBF-J9%:N
+(f5=8aFI	7K'Ii.{dX}#ܠrPjj*3$S	uဌYXKK@sī>CE&}R9D:].3  zYB/Iqi@}=&GAvsli3 7!XkSr=Ҕ|/
+0oNRGyX LQF]&}.HaPsawAj2%G9* ӑ 'Cۄa,XiQ/	"<
+@逼U ]wh*PAbF pi
+e "P|w|_ˤE-vL}5&GU0%H1$".!E		 0= -oLUܠYkA(NMpH=%nJa>6]Y_w6Ii@]0.+܊qX>b 4uږ=r!4Sڋ9sZ.q{o ue&A13PW_eLIeկdpSBzc[QrA<kDUYMi3p@!L{E{l)oÄZ
+_Cu(sKS;?bE9fRŏ[s>wh(TE 00H_~1{Yǧ.> (f8&yOΐ<U$_$HE&(a*w: 2JX p#(e]aSVX时ŭ-v{P
+ P>G]&>!sdq,ӻφTst*OR`u'?O_x2bQ9ֻk3f}Y Ç+**֭[w~NqE¸ʤr~yq0GPɱɒ
+Y, ;K-C@ȲR\i耴TQLe0l_0t,!AO5;M*%X]1)C1Ic @Pd @r2,F~A[>EP@4uC.X#A'J{'-%WH޵/_Qiʂ)Z#Z)PP2, 2)O:I@vXǡ~´fGji4)TX^lB3Fp7aIg]Y'} 	{TNU@@@ @Ƥ3D`Uܞ0.!L+џbLHO&OP0"gx}í!MK&^عɯH#	uiR7u?K  dsuq{Au˩(a
+b"	0cҐ;>M%\&˽B4VH<rʼ¡WFv[$!i	QECF/d0!RKp`PF w/*ŪX&")egq<H1;^8LjUB  ` `@cĠB& @%Ӥ8$eEB-EV,uK-qbZX]f>-S#B,e:LvT
+a>mO[Q	7f챀3&}<ٛh,OZJܮœOPdqCz;,mY#_v2)v:L 3phz;"% ;ƕ<wK]b̯w}ڳo=ۺ][ ;L{<CJZpƲGNe)D| kM!1&ddዌ5ÔK~/.y$f~寑O<^u~Te@p0=l:CmZaÜ1̚TR¤9c1K)
+5&fֱw5f\jx*aPښ`'tT%L  C^[LQUC'O%廿#$ڔ	"XN
+!1iR!ՃJؑP2jhD(9|^)Vps`I?
+9v'aÐGcN&w?afmmy],//8pmNKƶK"T0p( Y֖&K!,UsE~	*i (iMI @40XW%HdV(Cu$H\E؟g),K%iDbzO4ƶT'iBC@l
+h:I}H+ȴ-n9,0Y.db.@/~aP-E<I͐A}&h&R3NySe| DL5]vS)>h2E-zUϑH}pҖmeԕGΠ=Ba>˩ďDܔ!!IB;iNNfoLLLH繄f$aE6j ,[3,|>Ay5./)
+gɨ3ciE:<cIŲH`*eLuǡ"մ=ȅ&YL)}/0OB
+L]W**Ar/Kb6fT$VXpI(CI"C؟b&KPʰXaP! 0̖'BmaYdZI#eT^YhPpE,a[ۍ<I'89R@C]9K1
+ L;eu-aN0'ʸ":7J[ڤIk1E*D G  s+}[?	 Smy!0	x>3زFέɘ3ҦTW=Bԕ7DNVBsLG YM[Q,5-m<nmgH⡀yےUy 4:8m^;ӹ'sk;Cr)|zXw&7u! 0QQ(E%|K 2G))BM'mOMESu.']`&n)ҖHB#4Gr@ @CDYC;nM"L
+yP  <8C2@[i/p/taRd	a.),J(ʰÔ,U % ci&QoF 0ЇJ(r0C|$gUĒ4U,}.B'U[l(+O?~_|ƍ'N쮙4iȑ#ţg-Up8]uhBK6e);^KE ˳h`
+,p ~82ǍBY  tҏ*(`-tc1gqRKR! sS!.dr|TP@-fP"$F:a)ЕckpɊ
+ @i%ʄ&+K,p~
+b$1PraGAqMk8[a TSA5%حGԞyIB"hĬR K[ʘҜ*lsH2? mύ-ҚPRan2 ڤM`m`]v+><~HӧwiWU yqVƴ3Uqk`oyOy1}GX٢;$a*oZ#K9k Ħe)X U]lq"me`ԘZѤ=&a^71ye+cLfJ.?L!M=o=lW$6I) b
+a h'ʅ2)(ndY.QOD(rPJ@3A K>/@V~,eG ?:t0Y C2 0 E!4MP.3I'`1Bl1FS 
+J yASB5`1#6L/-mU& $(*Q_W(W_Y@yMKi>m!˩F0)
+c;eYk
+	!4*g#i}c8o'-Inf/ڛ1DX F]>ӜDh	 @L+A`s)+ӹY\cX )҇==.z0)eZT5-LuKDǼ52 AޏdjKRlZD TAĭIs&|wޤ9Q-s.aMpTJYl3 EuFf L)(6e @yghf32HP-Ttٕ.ܕ^w퀎p1D3@b,8ѤSb3F  X  jH,	  ij[;저*A B\Et8i҅cOf?g>m.8ϜLv	c`c[(..>'3;18-?ߕeyĈ555ÇՍ7?q\;#ZdIuu]wV[[{88@i3gΌD"wyg,4iҪUx8z8㸿C|88]8y88w98]8x88w<zRU.:p@7vXUVVv7tvvGW_}5^;޷o].)y"5kViicƌywvWZ5uT!lii9X ]8^>IO0$=3K/$+sΩS6qpO>WXѷo/đT?O2Ee˖.a:t(Μ9sڵ6mz!u]WUU~;Cf˖-{.\ hnnpp|/w;z[o{B{l˗/GrD^8=jiihll<rJ~سf͚6m*!C|m۶BV*䰷o~lZpl$ʰOIzf;3Y[[{yum۶ز,ۭ("/1ƮxA=V9rwɓ'ᇧE]toD(/7ni1vl哔H,#BP(F3t:򗿄/~;JM7t2^8aD~3f]v\p?O>pXyۡP>c0'/7'!(W\QQQ`v=жmYe龄j~; `+rxͫ]zu8^t_sN>q$=&)_ނ Ƹ e]f[o%I	"/m߾=TVV
+ i?O. i8pN }U!GnYSO=vڴi#Fx'<K/T'>I9wO,#F.>|nܸqeYW\qE<w4M;qң/xϞ=_$G]hQmی޽{x{9RJO?C')ϟg}DK.㏧N:tЂ2Rz%i' {t-
+իAXh޽{Νi?iӦ2f߾}ܹ0ڵk׫
+ Xv])w+#/Iz?}')cɲ<uԦ-fđZҧE/Beeiƍ۴iiy$9sf84mȑoflٲ隚S[WF^~N3{8rqϻqqq<rq.qqq<rq.qqqϻq.qqqϻq.qq<rir_ 0eʔ'x|O>.^z/̟5yN8#Fzj>YwlڴiC=}=ܧ~uΞ=[e޼y?!H.ǝA,YhѢ͛7 Ø5kܹsG-<eY'HiӦMơe?я^&L  [H.ǝѣGϞ=n07B;{PzժU l6;k,߯e]xcƌ{Ov|d2yWڿ+W<֑ǌs_ve^Zzuw/8j(]+**~_ k6o<ga8.//w\'O޽{]{7FUTT<CMӆsݻw;r͘1#J8}˗NK\n_~$I7o>^;Ｓ7ܿڵkW^5kVUUՆ>	&L8Gx֬YCI]w]uuG}cǎc
+PSS<y?޳K0ܰatɒ%@ 0?YqƍÆ[`Aw	&<S=aϟ?ر7nlhhX`AIII2<kW^y-S=ztQQ?gϞ+rРA&MZz֭[}ӟ4` ~qܩyo n5HӒ$/92HНcرx)o[wqƍ ̻zk6rmٲV\9lذcn6UO?i9bĈ^{GY뺷 XbEw4iRO˵k׊ȏ;5<3륗^4m۶m=._\R]]]}}eYSL9rq9beeeIII]]껋>rwǍ!𪪪7 `0 o~3ݱ0C/655,ͪzdû7OVYiim'8._lD|ʋ//plC{.!#R˲O>~{:{ٶ}쎙L Ŏ|=o޼d2yd(=U4K&Kď"yNJ,~>矿  n{З$I0`$I7a֭H$2hРEݻo߾'cpc|R$3'k?khhGq'kUUUr `ƌ\rsQ\.ٳo喕+W655[n͚5^g?mݶiӦ]v͜9s5j>?aw}3\ӴwgyiӦx<o9s,[q֭s=Lm۶Sm۶M<E.ǝիWXb='x}ݻw/^=̙3oϙ3{Mp'^z{nQQkxGygdY.++6l5M;   IDATn+r]wk֬YG:;wC׽]pm6A]uUh~3fhkkϾ虦^{@S}qܿ;peҥ/Gz㸯g_裏88888]8y8pB:qqߎw
+    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-3-rem.pdf ns-3.21/src/lte/doc/source/figures/lte-fr-hard-3-rem.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-3-rem.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-3-rem.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1201 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 637 386 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 637 386 ]
+   /Resources 7 0 R
+>>
+stream
+x+*236W0 Bc30˥h^_a 
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 637
+   /Height 386
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+xw?齃51&4jMybbѠX0CD)+MED,X"RDgo=}b=us\쳿{ˎv$?O$?O<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y$<GH#y_>RGH#y<<`js+]>çgyίߗWb5[.J)+kItARn?]X}yxg}>ᯫS?x&^xwߔO}פn1uEgSU;@7~>ܘĻW%>:?n'?}צnAץ~2T{[}k4~omsP{y9zy7RfdM5GgXvz{h(sGvIv./%NH[_\?[wv9%s.;;옐5O{jR1_3Cǧ-y̩2!m;Ƨ=yGtzwjf;;l5.ܛt^ÿc:2'2?5s6E7uFuyv|
+3hvӲ&ZZEfdY?'҉Ⱦ[wt7M
+Ќ:l}Omnߺ>jJFyV:al痣9Cfڙ9OΘO+*͓iOpNw#;nsވe{>C3<~[*EW`1p|3>ZK	0@eL.MA֕![}ߘ)~ސ<gah[bG%--dȪ}{Ϲ`+u&?+C2]2c8&-]V1S2QC?!mɘίA-ബ3Z&/ͭb@U~t7Ƨ-+0cfl.VC_e  	ꜞ5nNww8+g 4oF9O͜Y2	eȿuy7r(dz}S2gC0w-ݜw[Di8tퟘ(DϨc萻'Ӈ2ArCH&hrTxȏ
+KKXZ8%cV̜aP3e{;CCB /;7>4a]^b^]m"1|;
+Ze (6@N0AG`衁K/1|]Xr(
+r*
+!9/A_Ǡ^N Wjqυ0f}TN'"s$)#[;&Bsjs2ھXWse5O_xyH^xī=Qynb)&^/T"<`˔v"6u+̅Ќr*4D]|(۹h´]4:c"3/
+Я~UfШNy5 eTry3\F4Cʛ[ff剠}oL@50PQ', NX|R<7ZCk('g4a\Pp]8+^GtZ7;zXL&g9~{{Rx>`
+4)^uYG8 JoLLfr_IE"]:V8/"S	c]ΤMWþLq+,AAFGbllD-2]/x¸>uߣ 9@שbi<JL':[42>c7Pt`t =*C80;:7ĕӲA'ЁtH 0J%t) CS3g2_8Oi(8vQӳ2?1LIQ_}a0`b}-eǁ-' TN3G/c7;*JԖүRam*9}nC̴s"Wl.zSZ+rkF%_"^0
+^̥Dޯ1xV|t690yeBEL%ES;(Z3iKrY&&C6}(0cJrT_17IY12! bP|8/l|k,)SG@o42X,BPn3x%a7yCn3|37P&
+t 6O!+]x%/J'	{\7U[E)jQ:,:ۯJB V"TK#_XF{( #`{ԁaJm5L0I)Ɯ<,E=#	ywX}2@'w`A+|tågahpBYH.ZOZ: Nh*33l(<v~
+i,^M!W0Q	/
+(nL&<}׼^Fv!	$lD'D-~m=eߡGﭑKSWTȈ[9Ds	QX1>Wb Ji}2+u$Q~JauV=)8Dx!bA`GAIz@m:8<:vF5:=FU@0}H	@(3. 1"
+;fF<ܹs=1m(39;Z`JNZƮGao(8OKM4S`P ((55j]e
+Ϣ<Žp?藠0B h!ATd}r;/).%y;eN>2^Ȓy툦:SevP3^L@4/L=aY|_?K[{d40\1+ַ0XE'Š"X
+?)j:OӉAK7<Wbyiag!D>Dݿp?I=RF
+Q6/
+a0aLKWD%5B~h"$V\an(H) 	BJƊy~J1=I<NxuSq`4τ!s[q!@
+s)t$U02*aTNf?5"3aX1ـw u60ƴ/eyYRغ:Q	\J\!Ói 8<Z
+!NiS
+&6_(&s[OP桥)젵=۩[X& X{| G%0_}QA%Y M
+,&x	N8{"Г.B
+!@6j+8J<ۂq0j3UZp+Ѐy('x..'0p*w2̟z8@_C괞cdQ]V[(B10_E_V_O%4J%kK]h B
+/ʦ<PekEpvz6|v=
+TbQ')ӳ#iaCǧK+Ǥ[h*N]M%̀ k\zRmmͥ'ο*fm(<gn	roWʸXu:D௴a^Yn0(
+\0MԼe&Ci3
+Rh0]	@Zs^HEOA-'8){204 AB5Zu
+?$&X>ÜB`3M	3	Hw-|ģZTʿ<nVK[iRjjr</Mv?=Ov-y48!\jsAbU
+.Om~Q
+f0a{dAx
+l1EᄰAt5{^e+CAńZVҋ(iZ/%94~dfI^as]SmN˴)XUt	,3.+q#\@9ShCLP/C<ˌ-XcZZ[/DەεlDp{χWw/(d+	0M%߆jo-eT<j*>^X[{| r[A JuY7V/}w
+3ᙔ*p=ip6n"};HZ*bSނ0 ]f;(Ln
+zGVP)sôw8*ND,|"ۆmo
+=cttZ)9!mpIrFBiN @ 9(AmȆ[}:'RH.fr"ov\eˎA	]ص=pPi1)T9sK\cf]Mmͥ_6p
+:PFYf}~h5UBNڜ-tB>zJ~ }RFX5Щ
+5Pzhg|Kb-/eŋzHMFtc4DzӢ;<sUus7T-K/(*Ri2i|	eH2=X܌/ZB$[BHxo~{JS٣ [e@xK/J| ݁ UH32Q :FoE8J mguUXgm6uLU'+.WP{cTvd_ʀLИ6PnR+#VjCd<à~V*lPܵF
+,T>O^w:86NjLI-]`eXr?<9brP^?ZG01tyaӲ&¬d/mx2)8ԫor&O%]R#׫yv޵HA[z̋~^_07Ф+Px.@_[FYxY|-վFfЍEOC+`JJl"cO|jA@{`-8zq)< ܘvn#%ş%^?K`ȈW 	l5~QPBy"	d
+I+֊l|vu@6r,eӲ2AdP{Q7udSw)OזPK!*(y+-.Z*
+,akEn}Aw) X\PX|&*Tr:HRv<D"U>n?@<PP̜e-}}rFv.B{= ECtCuYIW VWx{!0wh,,&|oaj1nYm9}`,;#"\]LBZ(BS@-V[ H"ej sujeoR	k}DѝB
+[#``Y^`6A*}Tmyl|7^L/`Z[fQqM)R"KSyaJ jP{Xm˙{g6@;>2G-E-U=_#&5^ѶQ	m%HfN*7=a@䀘-0fߐp/PKI:\-mb7ahnx|0,i@,fk1vpu-b߉2By4ܒGp^ 	ʘ~ygڅ[LВ8z6Iyxbe6ZSG0r鯕
+&v\>hڐi1
+6eڼ) >[ɓ!m@#-ܜǍ4cf*:H kƈg  o3d,PEOaa$t4D OcPĘ}:"D~f6NJ
+"2Q`AK>+q)~h5{_f>Dyʌ`Ǧ Y!0Fm(8oA׎aߝs{rς]  7|!fhRE|)3U{wxnԑhי>\aLtfhbz
+_@-F>?dƈ\(\#Sd-Eђ!Z%
+4(py'XfY7*ɆvTȃth925"[Xٱ*u
+,b$-бB6!aanhdv8)d{)#ZӜ)VjmAMΪ%^Sٜ~LF'zAX){,j}i[61S0^]^MަpdWgav_(r#ohlV'm
+{,r YW|i{#.8R{1qh@^kh)P-
+/ !{%<m,Gbˊ%& σ| &&x3tn* :,~:̍+:&M[x.fbk@^LLGx/n-Çƒg Ix
+`wm}r%=kǍsQzn@du}\6P<~^צn37R<>vpa6Aػ-,2_=&CAf" m?F>%TR\>%s6K#ЫRjޠN2 .8ZJO@~Q[x@\z2 !̾!ؔOXc<&   Z^0;W}KNEm.:TmT?Y,ztC2PGk);}v1)'ĸRnxK )LϚ7X*6G@T/8f})v^m̖#tL.ut2B1(mD6BeԨ@biluVzB />S3)r;2:kD^r7hsM^
+EN`}ՒԆǣjFezv~t$)GTY~1;`P@wtÃPP*Pf_	2)U ߝvr},Bs0r_8`"G\X}q9Z
+C<zw8z2Pf<ձȼÀmiQK;/B-OJԃz˿֚X``%,QSɎqˮƅ{a]Z}C1,z,KXQurPjQZ!k@4]-%@f3'|;'6藲L~\
+II]PZkOLج\bebͥ'QEydQ<	;bHx_1ڔKhWdel/rsmIEi+B ]i~WdkG%ImqY}dQ@o1R%-!Z@~ /B(^~*]tCo#q3M%At PR~QHKOi(;j*nKILw#_MAgM [+&?65s悊f]o @!I\NRZZ
+ü/KOI^A>h٠po""H ʹ.7hGƧ௙w.cef
+^N<o
+Zȕ cW<؞Ȭs@֘XMa?r˄a5I>kXhuK+ ;2nn݂{@Y}_{ׇ+hʷ"2Hj^G(iϋg8`5!%a7y3 {/eYc\lAO>=~eߍ<XWc bN`TrH:S)Ň`]Qpz|]{-= ĠWcX }`v@lg1LRT |*o=tZ	,F1*X:vY%|Vf][e+k0oTC#Ŗt̂9TiB]3+a5p+<L*B%hmNL@߁=9kso<RNkFmRw 6=#{lgB.:%G:#{4,Ø:x'hooebK=W \ӖZgu{y(-	*5!
+V4Pm(PrzT :mh^2n,MC+}KKh4oBLb:urR2ЌEkeND ^ f]<s{R-jj |ܾ`P]>ZhCE!]-p ːi-Qˎ_^&Rk/TeJ؎_AyEFBrbf^Y-eˠMYu(yp5Q&Odp]
+Q~)Pk-/G
+Pfe|;4 mrD֊aPm]ުX(01)0XfM4cr1Ô.Ge Lj:}erL7Q/p]20VCUa"X%SRA/<{P)}0ԓ~rĳEomd"Y$)#5\g.3O
+5p vd%4fgpdo `06(/J<ms,m7rYm6`d^#Bē޺J;ZWxCd?z1m`kU켕z!Z!Z
++mw`iC;r{,LmFLJM~& H|] H-L
+O gј6zxNp-Q<a\to-.qP1Fhs" *j)=0^ڀ `S3gK}gnGZa\ڎC b8{adߌMzP:!?ϚB<s &Ǫh $zND6+k}v5:n-m[,¶ƥWleZ%U,4+܈db'oUd*i1Rv'nī*:xg	f0:EV:D{PU1t> Ѐ&²ӚK5P0&g4"0(6`(3q~y)Px.6{3ะ[
+L䡱
+]E16@L !`m~ mC-!+??yS	Uy?<P,F@s=rQmfz	>V3YN]:!7*7xAP^$2Zn>oc$Y92{^)ۀͫ\s[Kc?͖z$^ڗ{P/6LFYO)vfS);`]	qv'	GHAHoLX{8xJo_;hا G'O{W$¢Ƿ(/mZ06Yg{+?/I m	4۹nR%b?1֥o+^mLoc
++/x඀EiȲ)sǹ~wǍ@	OM.r)
+a9y'e,Q	6ǿ@jF--v̼طӧg]@L--c:Ai);V!4;h^s)oJHffW$ FdH,w,/os;=̫g(v ʽ{A
+ny0U-չw*ŦkO0x2И,+Ҧ[K;R+޵YR9{FX]ha^-%S#a*ygh]Pw50|Z!?3h12b2,J1.a[UVz-
+QZ^Kok(&X|FcZb
+P[=e$0(:fmNc' ?^%*y
+c(2TrS!	hj4;[ `?jr)y;tғ)aGq	wžd
+5s*4-ZoPp֋E*3!X2/N䄶QQ3}gZsގ 8'5ۧ a0]Wn>sT4?QWn<Kmkb{f'Bx_٠u|C#`쓈:'r&^68Kdwvopo[I7*mcg7^xmfa ץnjb]XWlK3(&F+@ц[}fڱkb"q㵲 )lhcaٺhWK:gv{kxo8A/(r$p \6?ycSX>>3@U *iO%B*VgMjs߀9Ch` oL͜
+KD7R	Hw+>a-LI1aRyC_x;7rd^M`l kt5i*rZ4˪Ie{S**vol9-|IƫRS#%SWhC"6A)ݶR@rݑ+Ӏ&!y.,:,7z6Dٱ{L,JGGr2/D
+@*nTQj^ѯXQda˺" & NM㺼b{d{5Q{j9XPj~RN,;7UHә}?:傮](	8"˵}" !FQIqDY/"6ÍtW_0Z6:ۇ
+t(B
+4$oة36>b;kVH̚y@KLVxYO Ej4o[l9S;^h1aUre+~o2#,;*,7Bu0"Ah-bpFk Z蓱Fd(xyۻ^3Wa#``0$q&aeDXBkv1듭&X/̷aq.)L<P ẰnFq|L##R#I^xձ2 klq\[KC_8 yRآB7s,;pb78->WLym<VviXlãd-#:o,)oJ@/saҞ!|TC-A3dƅ ,F˰5038 ;|{V`yN~֊lE	~62Ċ~.Xyti= .vwxYFɲz3UX3w=UE=;CkU%j9`2W$$̀!<w:<[ EPC%8jʳҖ25ϻdP^{|`"=P/(e!t`Q@;}e?QZ< nZDoa5<w#GKA=4D4Ӈd-P}ږi3Q!uMaOW2p	`>٣6B@GOHSM=igoFl¿ LͬͭD0P,C:AHp90+킮zz&viN	;6,GҖBQ奻-kՄ @ Bs	y͑&#4p-eDcmF,!/.#=˰?߃bcgWhUtxAan`8$&qȤj`mmZ.+}%/l
+5gcAK2*mJyX6 8T̔ڀ\kbgdS#i
+7	MX2^ܾ""BoMyFЧh<?Aa/&2`@C kH߲b	n">nw i_Aa(m*U>ppr
+WAOx8-Nm] atyN
+j)0g(50@3p	sOT-\/ABn߶/i02>ԍi|
+?DVOУ
+Ib4<:DFWn5*"FU4e@7!yDנ]}u;)NuJ6%'a\ǷS]l"XVb"[UJ_άȷk4//?
+*m|4Jr׳am*As@ط[
+(&#J Дwϥ@$@mtoLϚrWky1"VCyvzON Tѕ?Nqmh\/TqxEFR ݗkjyyW
+xEGoj	Pi LËҍ?*hO>z~LyCoٔ@*d8rU
+	2Rg'B|&*,L :#-9}ZFވ=bYCՐnWfkewΔK0.s|=75UAW8Ovb*E^mG%nZE	 2 ɍL[sڢޫ.)z`VpȓO/Z_eϛA=&[oдN69eT/5_Xʏ0(B. 
+4d,"s@*X,g!	k>8!sc#n1A:N.jkFm0@&i
+#@3Y)ZǞVPϊ6߷5889c>! eF;nY0.EhV"HM0UAM}'-4q8;Q*6~N\F^!`P
+JՋ1AKxJgj[A[`yȾ,;1$"D$.Nz$V!GHg/oLvaFVo:kYu}+Zo7CJ[<LXEg?GgBi,&Ns$/RRO8;M-'p]/;	bs~y	JCK-9(*®G~TvGO|,
+.zs}~wHYPBCaRKO|<,~X:]!SfP֊\9Ȑ?Rg@ K[	qɿ7EG͟JH1%8XRA@˽U9(Qҵߊ৘E-}1=+VʦJPiN-rfs*^MhE,=+IHznf'lqĪ["IǧΏ 5:eaMT C5Ir0R0dJkEf~{*H[Ֆ|^kc8BWAr0R F!%jDLzZ65Zֶs.4BudƊb*,Cj`Gut8EFL0.0Z~/dz'cF;w|	Zb8:n숲(QxeL@IA. C5~JR__/t[ȘsίHSx	I?KuGKO#!j(;˽= QGfIck_Ϡ"jD4jQ`k*m+ؘ<Pbb)#Ɠ
+=cxgYyb,R.֐}a"%>`*ƷWGßh3067y/Iߔfn`IFVˤً0X^;3X3gle7	
+ϝ5.qw#	8-sS^ {c=A-&#rf]2c]0v[t 9(Z0O"#vrKWhR䔥;j2PfAh.b6Bm<g+5_hJRWn Xedu,A2@)<n*@'*MT(1gmς>! UuZjxH),%V#зbb4|7>5s6!Oe'׎lw)A2S x0+ѷ*,O.%UF
+(է+lP<Zv_;Ov2f]sFZ(DnV{ /79cKM,lnNW#l.IƨnѮ/݈7pAlO:{v?s2gqK* `(9v*vO!'22ˬQM!\'gf*U*k6vR $Uϭ8M93I߆J40-ODD\-p~z
+DF"KJB;g;ҺP1>\noWsielN͜AY':SQ) _Bq?#o2oSU픩#~UnD){Y#_]~ꫥ`ukjUރ)M0SmWh8h/^xҠ iΫamth`&eJpwXb`QܶcHw!;;n*|\#@9ˋRE`X	BEħ;f>b!leT<Ak{p0LJNc٩7"3SZ@a4bS(oyUd`g-F2(ɡ<LVy)/nRئSd	-~|e7RYڜ@KW f4[*t(BT#τXMeP+`R$V7BA8DXw3"C|5?|{,S΄Z';`dy($G!k<xr~}ݟ26UFЋ`m#2ve)h
+4DQ Nt~KIr0R 蟙R_p~8N_o=sRN̫}9B!86V) f?Ma_{6j檣Z]g@k7U:^	6[Z6ejkáGu"ZH6l=La`kt3tO?4`wu*l0\;Lv/26y`߬<Wlt+]lzRC`GΚ5Q'T@9T^.k9gpUW_9C ǧ9C'?J ҈ЀԎws=oI++t4w)s7
+Lz6Gm|'NdrA,ba$m;X_H\K=qJ7ENivC d^M?
+VͩV𨳝o~y9Θ2m(H2L+VF|N%-'輠<}Ns|u)>)(8>}F .WI)
+<}(04@3prķb8w0I@^-;"#һdrM*l*9Eޫ1cNuDIU;\MH\2d.]C>nYzɮ5Lhy[888$]A	'c4#6``PNa̏>*lHdT҈۶RG[ޱJ)!lW<\vlBФϩ>wIM`s.)Q1
+=E?"Mkh_uhRARCu[Sp5vd;iGH$k{3-+fN}oImt% 36v,l`aphʽ Vޜ(,GVo,O@y7ٳ.A'k(<O!λ{EB<ҾRJ)Bn	ވw.@{O`CNdWv=dYo"yj@_	j	?MV6+*2yHm]Վr	Zݥ Am4JoAdSs8h2Ez@%hCJ,;WapsLDi9T*EGo#>9¤C"R4}@ tUp7VN͜V(7@a R[.FePJ "c=t@@Pgb%"׏KA[DF`<=b_pxR<3  h1',:`=Hmֱ痗0SPr(EBJ1ޅ
+9sF(WW@*=}Λ6dmn?@i.m0FP(x);EISs;_!X!RQ8Y6r^RZ+>1R)%e5}\DrN{J^3"C5
+CÈv"~~{Aފ_-TթeW@&|8lb}FIF͑Gش]y0:r%x@LgRػuC@=.9ІQ_ÿ&uD~m=	/I;|derguBIxS r+'N*'r}9[3a/KFݨ<qR"*HS2awR=nP҄xG;r\XTϖ߭tiXKf*2JG$|c/}8''@GE~9:|ĄQ	lK7ι)#)D@+
+44S2k$Pٴ[$>Dr
+rbr(1mgzՎP>7ʆDMɌ,kټJ?Br"'MNdW鏕q>u!UЀ .G1
+G^/P3gfIo)jA*&@vaT0nA. "*m^ENj驡p ?@hYՋ?ztLy4Snн,̷\Ο8[:Pfٷ$W .4+#Z.O[JJ㝐@[nl/_Cpˋż'KNt"r/+AH3YepxeL9AkC<tEI"-Дm;.ĶYZYVlGмS-{}B>ؠőiiua3{!ŉJ+=/:(-=8g'	GH6TшCla9=txWsrj6Qy褐+3l^(Cb2Ս=jEFAwOLLs#uF9lݎoEX$sٴʨ1&Rͮj yF@H+<.M?ÅQfky>eGÐؽ;p<WkPvdUkL|{e6|ѹ`:`=#E"n>Z	B0oW_*_82_+0	h̾U͎wnqWۅ5TAmwWrs^x֗l{5T},g*mS$ J<]{(J6%J!WAKl'X=	z~4q5'DUd'=y_,S +,RGDwaԴ)vAX>>w]0D_Z}!rmcRy1@NkRl@^/83+5|rGE?W"
+F+ 3BC	 P ]ioUsTܭ+x:9;"iO=h |w^d\D\9#I5[dE8Ud9-mTI$wEDYJ=i~Dmyrx@# Gi}#^X	"˶lm~)@HD9FgI6*>{$)1Y{_T&[Zޑ)aHʬhM;C⅕yF,^L@i}ʹD@Ve|ڲSq J,f;9?
+,ȞC3@Z ș
++pl r"sP3CoNy<	PXHW f(PёIX>HJh* K֜ڸQ)svcXʬ"0Qh7!}B%"s>p<q˫	xj(yU!9h!L͜y!-ɿ,;~cdiAzO$ Uc|`KPHq7/x|٨PÜIyů;S} Bxj9BZT=ErgYY"#an<TSlWDa<&M:*̜HA@VL~A׎-|5kgE{G?[t
+̈T	ucmn_C-<WÝ]+ȹ-dTi|{>ݰ2|-	/'?kHhn9+wrk(ˎAm-/n);6y"F.B^vg5 : E砨*JF_}Emn[lRJt&4t#ӟEZkn73-DܳkAml<_㥃vKg#IKNQ;e)pPh/)M&h\Yj#ki`,{$VN=9@
+3Brfχ>OvCiG2ݘpK4&CB0mg~ė+=u'Pk?q0.eW8wfh=2ޯHqlM0#2uFj,N<@?R;z|Fre}ZU0;
+97
+.B61
+A;?;
+)wYe#*~kSɷL=89tz.]\3gfA-csɩ?#0P7ރ)s~Gm,)*hÇi`%m/'p{T`0g_'rNC(2Myҫ SyɧyY[4#k48P	O(X1-{\\lwĉ;@)æɈWFѰ=v'K^#oh3+?=;-s3GɸYGm$crZԄ͓ÕYN-lrFR;Z+rroi]hHD"SA騊<P) t`՚,7zKFz ^Fb2'mp(S'?󓸋,=%ūsDeI3J#(s]CEk{˃_Eq"-:W]edyEg˅73UHwhu@Vӽt8cZSGfDn"!#n[-"y
+j,){0y!*i"R6s8=iwPvR!xdvِK2dE9uab	(<@V%61uŉg+Rsv`KN	U۷Qj!?yU%wdRU*B½-e[VS9L|ۻ<><!mZlԕ&~7bF &O`glBpvfPD➉wF|'=c-=8)cae;|MFO1!١xe4 Hn;\]){8:סς0I[ܗ9L*2P"=knFGZOa@a4:47+teb}~w✿E՚zLnXZ+E@T{04X#{#oM'?\hֲz]73d6kIyfmD+v
+s@Z M2Sq:uWl!(}ӸrUbFoSs,Qrǿ%C)]JO}16f+d9-s: $h? (ZZ^Rvܣ'B]-tFomx9 mD^2HA<]صe ] kEnۻs흴 ed8
+UdS
+ɻfs&!\ȠtE*=	!}V#J8.{'c+' %?h/b\FF'@j,#ޚB}@Zs(0hOS,lq6	o>lָImUur`m7>{{SB5WFmTo;_\X|]#`<د-*)bbGw	aZgg|T_u2 7Fup@hMͬƫ`zUZv6ˍN/6(p
+>#Do0v0nӔA
+ΫD6uvJ<"/ur!~(_k2Np9"`	}T'U*V	+%O[T8 77R	'! hw"&=4Vbro(#K0Ʊ_)ˊKH6-_%0?o%W2d]7r~Vpq
+I.bѡgũ|E	37#x]ćx_qTvلUlRgޫ8X%`E̸]{!fz7syw(S=-7Ѓ	AsΩͭ9qO?;w BE=)`MVh]s7FC<&_<H]Px,vg7>˸OC3]AR}W)/&(?!W|?&yyn'Dy3?No4FdNT,ttR<FUPZUJZ\|)'S3g(`	iKTwHSwNgzM"ĆM~pednG9W*+wmhLN2<pܨU8'xي&45&<"P?h3di].]uCR=#F fBi)5ÚY=2li}۔d	.~L+1{Q=P꩙iWMx]ؗۜzvS3lYS!jpZ[0i5	x'^#{;`L&eYn͉xq^]!MaX7Buj?ꎮF)@3`̤繽l562X%OhrkgKoșYRWƄy/s#GqGe?Easڼԣmم
+t"it];R'Π S:`d2?qVN|R'"kCt 
+踎qFL.Z}Q:^(,;b('wP>NgpFG>gv"erKCnжS)nivp823ݩv:T
+d_8b/QsPJ1`\Q@|]Mc63/#H	h_ 8)+~XR42Ġ67J%A@"_ R[x4J1?{f쁶?HpQ)@ʹ㶗j^'mmH%ߤuz_h7E.-E+gB9p J) *i aJc@gde[G-.-u#48[0rOlк38;d1I=cpoٮJ\<ƢDlYPt9wwYb8b|d=W!aBOY\ٙv'	GH73Yc@;C0FNgTϻAp^?PЙ;5v,v)wEp'x0kM$l{]Wpq˽ҭ>XCF;|\&ZOkduTh\no^iDۭ3a;cLyFPPSZeA
+$Ag'E]}Z!ɿ~59c>JVc 9o'znZJOIDN(/Q %4n]Xkvi(sssAV:qrx</>%2-=FSj.:Q\ab
+8z_٥Гh0Cg	/nhKx]΅EfGY.uf~ܫlazZ-?n%^瀺v	7UM_LrUg;ߴI2ۺQ!h6e݀^$K+H}yۉo<EV\k|G06U`4%GBDX=Nh.Nb^٥Vp/?-nQK/H2ou)é@'HԢ~*˺6jiSÒyE	0?[`QA'uY,0l K Ȥ9Nv:ƅu&p%r,qsb
+W'M:vιJί}"͘;+-hmoX}q9~w:Cݝ'	GHi,(q-z	
+od+{7B˩Epk!ݚQ(ZY
+OZeuR-~ܔ9'bو.cDNIb M|G7)F+L4'a
+ HjBBoH2"f{mm^olp#2,x[Ԓ7nKAWpPmsQ&ѝŃ12:j(8` Smn_rTv/XpPߝ@<eNX",G7Xu'@>23@4/I@	ŔC"%)FyCLdZ&UVQ;)8S%zxTɝѧCjxAZMtКUʈhNfѩL_*@s2{o,O)jE̹	Pi#f쿃?R\"`Ci)]5_^y*Q
+^j@piK'>((	2<-֐QL[31yP6;(qHԆlғi*yhSb\N=C<4,#Q,>xR,W_<\b#,*d#A*@c!Rq)O͜MNPc$=wlg݇ɽh93{]^kb{&ރPsU
+\ hd bJ(D&X"c8$<˄6ۻ"ϥՀ2-r`#c2'aH1a
+zQ(2[#*W	JV;3y=ʝ*0 AdѠ;+g(̍<>0X.<`PVaCh$f/{iZY/Q!@Cy0F1§ si!ǌp/<2xB"G7 D$Hs;̂lZE4@pGc9iL7领yk4V،J~L4t^0YCQQTv=
+%
+]I)t{ɿfDݔyEQ{v9ahzllࢦi-@:sCVޢ?!JΚ+k'u [Q5ͨrJڟԯPZ~MfF-@$/h1
+65@SKQRȃQmoQySS^ݖ=d!zFu%YL}euC!kX7"^A``	#-?HAN?B2U/s#^ďR	ShAS^4֊}
+o&}&Iy/: 'rŀK)ރDg븑˿ C)f)kF pP-vX$	_lW	-j[lP#/6|GFPȫӲ&BWHdsI|) ,|"#M%G`Sun(]e2&<?:2~ X70|+Iķq*^(
+$|C{st[5(:8m;$i'Jz$^omH-<BU"#`brDJͽퟌ=:; 2˳}mR	߃'+$~l3ȼ0by]_sTpWTpg*Kx܄a
+wMmrBESSR<ʍS3gަLQB|%ΧiNܢ[z(C$	
+囧Hܱ\-ݕ:a^`S .W-k-|#ciW»j^, gvu%BD])p3P^kUUQ m*a+:=kȹx
+\zhtH9%cn$v|(c.s)j;'|/'5lwjCJecrm+M[r~Y5ĵ[zOw6)pSدe;λnrFc@pa^Y3UGl,MG)g &gttKs,?b*Ӹ	*@ǡ@h =Ϣx?EϜ_ ]-/}t.ȡ&{pq;$Zk)H_X Csh7PWW"=M%<LRU|e܊ G+Q1 a,N3!G)hB?361-CJuHD [eFS ;rdvd߫ѲUu0Zx$80+@;JP mP֎U	 s^x(3_Xi`prx8R+'cB~Ӕ$Xe6'T`-`
+R:9F6gq]˹Qg(z{y0Z!{-lCE㣝y#*÷iH
+CޡM[oDFpZH'?skL%Ŭ~.=Ӟ-#-WN*(t5V\]N9YPPW4HSp]
+'SʗɿV	C{1Tm*wpԺ3g` p.X>VGӖ-7%сN±6q8Ҝp:`<U֡J~gþ`\HCsy͎i8 }[lD'|ZmGƀr{˷"lvl#r ZLɨgL$TVdE岊5Ag5d|ԫ/'`b2F! /RN|s/8R\p(do*:DUr#׹|ᬀfje5]ؙT"Dvvi6n_)??4{EyPiYED.2	lˁ0h%7lԦpJ¤F䄞wr{a:_nѵiՖcPdOfߐ=d"C6va=rP:ۤ3:Ҭf Yg^L`Ͽ[uxM&;kAaZW%>Ћ{&3Lv{~{^dfVB?;9Z鴬I
+h1HoV:ahr3fREי()&;
+C^i@`Oj Ԕ[|;hL;8 J|K_ ]WIHLjA@/RQDm6 T$PhRՈ#sp3ᖧv0hXЌt}xS:GJ  SXsI0st4iӑf@$|I+a<O&."0֊<O;">Q`=-#̫
+"lT9--SW 7
+8<vJ)o]26uic·6jvg^ՖϪ{@WYetQV *cE͆(M$HUivҋ H&73Ο~;ku]7}}99{?Dxd^p$w-+I5f_!㞆ihOtMhEYþPbh]]mIp_͓7[P:6=^lS$UYg¿D^*R_a+I_j2bTS3./	*Õ4t6-|FaΫ
+ͽE/˂&CWIz|Ztqׂ`\qKċ3dtv9+vx,N/SJO!{ Q́H y)_œ|y/l5yxܛ>9h/U/yB=Kv؜wb]O&WF'V$k)]Xh4g1GJZ+οL'φ>J&V
+Vnoq>ҥ=2v4[o566~ۻtr嗗*U*99VZ۶mWŋVښ5kCZލGn3z\[9m29U5ͣuPtiLBjJwǠYaX?L:CUfGqJ;:0*!TW/Pkua<
+pgKVdӘ@9l,<`WyK;vi8[2@>&{u00|p}*ED'Klk9 |.gHV[1)cUT67P <"+J~%9+;p5O +d\M37pkM&Aa,f@dˋe7.͝cT-nkֵn~ɭ[U'e>+^GE*8, HEo;X#ZPdv+Htv&wNnИӨפ+O?-ܪKt0qyRa;Qvs0ː0jV~ĝM^Vq|<(IiCvq0}'?<) BS>@녡,@O> >GeٓUuH0_q;ErZY[_]FPULr qcvYX^o_^W@_YV%*K&LLW*JJ5>!XA}<ZpqsFV(zd̬<pJw+SS-8kLE1D
+9tڨI}҄^^Ε:g򟙖h	Id6ج[_1]:
+z.\𷾤[;I65Tk=iT_a=Cݻwؽ˺u6cƌrʁ}СŊ>|yVzE9rl\`1xVnԖf0majLパ-X:7Mʰj/8,R7C a!YQ45;q0
+,59׌=d @M:M+WLK%WosBU2ǀOOrیel>\Lth=abI3*qad<d5x-/V\Lr>nCݗ RN|?or0_Ha@h
+DiJpA1Y,	?.eTtMORA/YlOI
+ƙ~ Zr1CASL67*.a_nP($'b4JvC%Ic˥3o3xTŴ]֕c>^C͕oMl'Ef@.ZeLN-kU+fdBQNZB&cHn$ܮܮVý??7jC25\̀̴m|jE&Y	e^lCk5<Z`h^5EOAuALWԡoAەϊaSJ09*,v^WT`v.̖ćخB*"_-[U?"GipU=Wȯ_MX>%ӯ'x4-yq)Qߘ[x;*"cF/20\.9빺v=@{>b-;^KZmG-PT[~R@wm2Ylh-ۥ@>CNVgsZW	ph^V3<ENvw49s/;;;""b7jȷpxڴid?Z/Rx6QI"ØH,Q3]&?]E[}ges"<k@b@UFV*37Qt-Ɯ닶}hQ}#[Ku+~7ĥ\㈸帘_֊~"q'}ij'W-6D 
+)52|\/%% <~2>&G>L-6@M<"SAf$h.*mZ71I'?#[4%[LTeZ]\Bl[ Sc]E%3h.O+)XIٖ*PGMϷ1"5`Qi2nQ{\~
+ow2[]㺵]- Ɠ}|Ml-e1[U쫺^q*p6+kwWm)l\39yr/tUY߂ٺI߃|18On夽03[2bh_)`keՄx :pw"Nso~bq'!RpR;V1S6f[@v]Di!F9A{ٟ'OnÖyW!K	9	{j73>W@iMOR^l+O=y|%Wz]iX鞖*Upزw*};S~Jod JOrպR,b>tFM҉.0	֠r&XTd;]ei]]IC+,b+pqMrc5zEF\Cc]x5h5ßzɳӰ;bĈcǎ<xH"ƍ;߱c{Z8W^WWX)"/ɶlpk+%XwL(
+i͜uދ&9<[	x=TkJF0*[X[	ce6<cMs^8ܹEUmf1<4[˴67PnF~1i_%w
+̸O8O e
+ϴ \T5W%G4wTRwgp%+h+r,ز2KAQy)hF	dg;*721c&p})\f,Kxز<sd3M~8T:VGBVƘ(L7	*>@2@!*c",Ce_\+#gM"Zzj<Ls
+a}O-e0p҅hMl&+jՇ.49VJbŌsuEČ}#064;V}WNz:rpό &Zh롞<}f3 dW΂˟TZ)\I[R5EQm4;B 4r^!͚7X07q1.n{0̊:yh~V.
+mjcȈU;sIQIȗSmW ҋ@[PͮdKgn!"C]}<fHs  Gӭ3܄wTVُ+sຑkf$	~5]=`˶y ի.Pgh5~xϺpQ$]NY>̳\޹VXTʧ 'Nuv?={/_W_m֬Y'4i{r?Mj{0jsGOt?	*c7F07팋np2:<@ܔ+1@o%_&Zw\Kb!/k),fcc2b1[@@\斸N@TԋMwH4ͻ&LO[zsfώol w#  q@{D\;FMlwev6{>Cc?P`@K!i;v(M:;2׹/͇)pBLS@9aBzsoࡳMc3.Hk7DN݅Ư]^J|&N|# 1|-݀G> 8JMi_Қ¾j'@gyP]chg̔m#\[݌ʽ4;跭Эp]muc׉롊KWcE.:[ȣq!Ḷʼhy^s<?ȰƐ2zEJxBk~zbpB~qPϒ|ͿMmg`Dr|w2a3̠'8>:
+s¾g5
+	pB	3/|ce$$X3ǧ^ 0Jz7?V{˅g&Zm
++<sȨ܇bt5 \S?6tw[Բk[H@I/O+ԝ~D8ЂBC7})A{=LF9D X|Z%_\Ԣ̼:_hEӻԜj4ZWmqīeKVjf׽j'!tupv$sӰ~vUV[:vO]=7`5Ѵ5--4qfaJO"0D,+>ޞtkl62093b`&`Gi
+D[n	au2N
+^3n}qq]0{@ԇPH,-ӡa'fXi&fXKb1M	9$v0"Wb܌MYh<!һZ
+{6I
+ד?Ue;ĳ<MS°神!Muaʮ+h쪖Ѱ6g	yi&-nNK^^!8xRdkGc8/5<KdCVx.%Ou8`ZQK-UDt66GbȮ ?cery -}J墴24D8Zt"J-A)7ñ=X4^qoCxCV-b(cBz
+,p8arģIǶ =;{*Ø;<,*~[.4+q=p>К@W<)^W>ySyQ.},CЊKU7v>k_	h2wdSvU4}ïtoM.U:]ϸ'$UJ.|֞Y	xVɩ%=8̋tN<@3$>OPU2*Xi:[me0f 0ѸLtK.1-RZˮ^o2lTl8R %[Z^۵5<Ax	c7ftZ}+ IhV^QxV^M4M#vBf떦f:h9gF.t}Ӱ!삹~; o߾[]X:QtK,&n!DÅ/L:'bV*B3SẌ~;FƷ;`=U.XFv|`<fӊuXUmޥ	md|vQ|fҽpڈqp~`~rF楕g6=@s	rN8(͌Ş0rTx>樿5wco[?%r12VoWbEYgcTƖ0<7Q(K߻bSn	 %02C+hJӅy] Л>
+2KHS"jzMwºPhk/J,,B3M&{!?^.5=TU'::/V*( Keqp̡JE~B6O67ޅgZmdħUx"$I}x,3Ɩ7<{gIq&̞44͂iGb#P/(KK&Ӓv[炶 #p)'h^|@'߮73ڜji𙝽̯ ߵ|z6s?i2ZA*"\j'U_CsS*
+n|5l$thc	2-a5,ZagMs.vQ8sH%[`XǠFu8C&ǡ\f{ӈfU{}
+] jZI'pY,*}xlnk+ ,l==恓^:iNuv.;\={~+
+gk=Ɩ^?<n[X-01**61{T`[X]cZ
+*C^@΃02$ԃz сwBe%<@g&9h4_qK8e?n
+~ XtM7T,1iA( kN]6
+2bQS؜ܔ< w,	,,>CbYܧ%[ØN36E¤sQKyXΝN>Wp|pY]sK
+=|t6:zrw
+Y2/ r֔ ]*"s`@)M .\{i6»pDTlpeX>Z0ʷg=i:FYpivct6J۩xq̘	id%?Flp.syKd~Fg#<%S{\Jz*?sf9.*LLA{EŹ<gȁ84%T5KPzf~xUD,-4c,mo־z$Őb	}ٓ^c*~vn*6^IcFPaA:W7p|] #北Z'3xJ11Z${6ӤYZrJ(Fɠ=g{v=Xlg
+Ől_HREX<BlyvM62'!z';f9zp2+?.sT@.dZV"{p7^^(WbGyaO?`#G)|޻wcjԨ<}|F1U^xᅿM kIď NbqA@NՓ3YY`nʒ2փA"`oJ {@TE7Y1zJbxǷ` hӿX&B%pDRq/4sZp q׃hNnlhvX1[ה%&c7}L9Oms*#croZX+o.Ghb{4
+څM5(,){VڋBy(¤8G
+bho	Av<Ͼ\Wu/401yign"t3zޚ&ŧb;?sU	0q8l=ov2e4lڶVC̚^%W0mLRazT>i.;Q\ebplx,xn&y'k47,)CxƖLyȆ_yҸu*11̙u[N-l//p<B/w0P|!<pP}5Кۉ^e:mB?vmꦅ]@oWV@2way>*Kѿ]	òE&5͒Z/@P<K;?I=B/!+#c<dU̈iӔ<Z-⮘bJؘQ<tw'9i6hKI'(.0jqK-@vCZ &񺋎tH`;  ?}`lfYl9ls\^x53R+<R[A"6
+m??Hp(q֓:oѡ=p@VZt9%%^+{Ac)ӌ2qY8;A1hյn6lhGs `(64hdMFUYj"zT+̞2.Z,VpRIzq?X'WQi1
+}YCep6 	bRp-3pdD}P+}m~,夝k+nSq"~~0\4%O3tgvfP#R5[__cy\Y\VW{Y7/@ZF77wfbiU*yDGIT9bQK[{e;xXK
+ꋪ&¾Y<Qxo[[~WKX$ݳ@[q<9GXVU3,$UruǂeAViGs,Vу /|(nEs0t/ɄGGCt'4' dF5'yYͻ'9dJ Ggw8VM m5QAD@qA\`y1&٢hBZnNh\_:v0h?ڇ9	h.sPw J!yܶ0x}eUj׍OhlЇtB .'YMC0ύ6_вp|:L{Z(,Wd21ArLd=Ha4t$'ccu%Pǃ/93A 9f^dӈ&>]>)lbLٳ^"v[t]`Kj?c./Gm-r=*%$$awǰS}?Z`h.S͌`g`┱l	O95Lf&x!1q0LʋZ\wHٙA:-x;,"fbHhO;FL/xS/Br	Ǫٚ1Vs),LӘlƦOGifkq1
+@sDg*&=@XY7a<w1S0*V/OɠB V\Z[<\\k~KğSͲl#bBU#13˷)}CyUC@5Ô Wbe&.FdOH;'3l}͵>[bE2! 59m¬Į}5LO!4ƦE1ehSh1t@ݏm&j	ҾfV!|]tNϥI4%4o/U(
+^%LdyJS5E~Bb4W nBi)}DQ<*m~/b;1&wMmC[m*+ID~ }\s-JR@tuaQ8lt'Vȋr>ݢ'[ɤ᥻3`5WM<:h7byZBښc]B373Y41)Ur*UM1NJaLJ ou[{z/_ſ'[vH{xia:iqHc+X/hqe,HTa{יJ6l1'	ۇ4R}Ƅr}#gPF93  1Fɰ=mf)OPz;DSN;=XcT<@&	lLJxFigK
+6}AԌ[k%PBxԼ؏k-p8he R$[OOvkcdزBP,_dOHͣ@-4N)UM3s⁘Oup mIH \hhl?~U$	9XX)lw|h5PXzHYWX5nJsLCA(~Ҙg8{br^m{JI>l&"n{3m9?#S,Y㹃z0PS7! F\ru%yir=F<xDE"xFſ܍#uY۸"bTN *ŧ	FDךw*|!wq0N%n}BP."(c>md}:
+,gAC{
+! 8m0hM`:̚C  //fz"_ݪ{)'Ců4xJV׏ÃI*qx
+6so~z=Og^!ڊ(f-*$4'=R5^M8#0ӼnBIqG/[tmZ~^}竡Ҽ?wlBd2O$|O=C<-oA:sMC\jDi^Is«S}?Z
+5qrDŚ)M1"gI e -A<-4.vQc+l@DZt9uFl/'٦d#PL1=,(Ȍ4U0t&k۔WMv`ɹIf:ꏿ8͈Loƀm
+WR[E&!((V?Yfv[g59Ԧh͛vV65ĝcgOụ1'qi/I\Q4|S?H]%2SM}Շĝ!4E]<+IIGv,`x'hUrJ.2`^$(hrlJNQ@|0cZ}YVʰ7JVI'"ed纖=rDܛ<KNTYćս-o˸XtQx.0	 j<1y+HOWs)0FrN"+sI@V/iwu}ε/-nmvhch/B{>=Q%}6]#~Hq.υ 8]/1t#j=ɿxq
+<C-[>O)N #*$V]FƵ(̵w2KRBP涢N[]@2Ma)?۵QOBӵPl$=olk˝^t׬*?gB@q|6f5 kbV$x-i_6;i73\fZZ7mKurmwjܥVn@gFd=gF!"&_E<)5+$©"<<^%W0-]"txܛ1#
+vSH("T%aaڸ0#N艽%
+2"aU;干X͕j|DrȎ!c$+o,e2#f6!iU+,)tψ
+K+-M 90ԅEl2e\Uj&sa`2*z,\`xݑp+G>k"mA(;Zob&Vb
+tccVFs"y#n%(7=лVJwBC{=K	@qs~I?R|0: ދ*Z|R!ppi51ݙ	Ӹ)P9U3ǃk
+suO8,gk}-Kc"=~wԝj gzP55/j޽C1\CB?\:*tpiOUGum3!@~7uݙ-滥vzh:Ɇ7ś{Xуz\.IVsДM̬]eݪ_s!9!}}N9p-u誉A}S.a]35uq)oEU&17[0dm	ŌigydVRD	s17[lc#,@Dt'ZlqAzs@=<5.|Å[-b+L]p[. M#[]ݝmKN
+~P/ ;/xh$nwvxx򀩥HTPqwZ͕`UcR"yJsW?T!lYoCX0~1ى;b^>@qLs3>zs^ڟ05`LH;r')<N xɟW5tsIgdUS	۫|곸JP8RJR{0_>O5dlzOPur~]~[jS=2A-VWĎUH@
+  L1|9&+^˟{*gSM'3{;7@a3
+oy}UPV^	߫QDjpHΖCwrѪwKz}Xvv,Xj\HEh2`)+frcS*/mpE[N̊Au ^<lxNUTMUx5s-%
+H-}T|OfAu=|>yjpx"?vP6,^P0v?md&
+mY^{cTB
+ۇ@>LDp]xk)e7: ?@{AM">4g]랧tu!^wIvl[pMi&ꘄ:AqqnYN5٪V}?]u!Vp /,)|r+,||݊2䃰,CSJSg"xhl-r><CPvxIb8M'|O|vӖX}"|Ny /^nxɳm}O/M2}*9/$s#UKkawzY8 h8x-g%>؜,I+7rdڔYe20U==0ܓ}U+dĀX`'4W֤ΖXn/|:$_d̅!r&IF_fuEQg:m(p:
+b=xk1|0w($^mA|Y;c16fdP	oSU..'urcyi$-/MGſ2̋,ZHwV[MR^N5DRye@
+nbXYOֹJ1h5ƠRJOOXHQ2m➹S0>"~{<+90r-^$wL+4A<6Ҹ"sQxʢg˟2Iޫ% tӚcƁ2P* OCsmJ ᡟ?=)txShAXБ}_|yhњ^pL,4`͖TJ5#Bmȡ;)Rz7P.b1ٗa<xvнRE
+MHVcw4PkD\'ܔ+rj+cWbmV3vS\bZ3dV>v.{ൄ؇X"\j*)Zr]jD]9dB{i^xdpt)@ng^Ru4
+o}]
+{>B.{ɫTmsSŋgdd4h`׮]QNOz;te0L0e)/l
+xpPc
+J2"#`7(fg2L]GVvJCb헓tL.b9ć%dICU[1&>&\O	zdj3JCYhu6-V35S&cuE\ZlW,j{^S#JEMYr@k>5"PJFp櫇X<p5Y}ylS՘l0Ug 0;Ck).Н[tбU"IWѩDg+~i6u2.~kW&[>eh%tUXž[IiRGK-]*6(i	iDo荦^k'ݹ% V
+f!T`wVaWYm++6\ѕ<Jm,!s:jÛ*I ׾"'GSzj?]
+V-vLa讼PWoO_,\:DU{H .gqn+_k^7&a_u}H~h<>]<h;Q5c@}4㒯ga1Fſٸғ!ޏNgRYxdKw?(5ogRݼL:p=~A+GZWJzޮ+:<2pυ5*I{{/U?,Jv+C hN'S|EUm+>iYNb'N=3/<xpZZwGILʳrLg
+G,݅g{P׻-ܴ#'^FO {^1	qD2JWazb*$O-3>ز0#:٤q5,x^j;<Ӕ}v\3)|N,;A[Qe1OpĪ@ؕxp ا\X
+$y*ӒHW:HVIݞdoB`%8Z5=g?Ѕ9/r|H`蚮9,&=d@ܒ_"ۋDskdl13T@'CNX񂰱V+P@m;ZeQˉFo\m[h~
+M"We|KcGA~NqO4gPЧ,n]0(OcTy&Ad]YmQC@W"YQjhO'Lm0Y^
+E6d aZ>D ,Z D?T0hm`h<	{g=vPP{aGiˑ_օ,*tك4MK]]$+~	9B?>Ay/<%S|``=PEYJOOR^^eYZ^ZGC:^ L+rsT[>Vcw!4<N*{LepfPԚֶb¤0H'/i|>b {\[݇K	Zf}~ƁV8mO 1BFiRVXL6 axI!ɿNv7c]rɟlsS 6  j;)%n&X{`?$hsx۰$40E[MvqtSr*CDgč.1kPfkJVooT#IX'm5uG41r̞s:!=f_Ui'N5P"D6 y< ;N{h
+Ͼx@9^*5OU_8H1NUPAO(^UGtYMtc1즤Ge\ {$=o*I5^ٝ">#Vx]^Sɞ޴g2H+;~B
+Z}J-43)1I$. +洓U~$"=:/׹~h'I74l,L҂޶:uYY΢A˺!-<AvaQs*($tgp>ye.ΓQ*Y[Gϊąm3"<atk_]mI״}BUB=]tiObv]"K 9b +[>\q^>FTwgfzӸU: ˽<nO$"]cL(Tm9cWYY/U(<W\dZfN;+%v"1#ZgoW᥻ҩFvPaǕcFBJ`1%Ub5[p\Y*PlxϾi 2+!O+^at9P^xu{_`.9?|Rrnq P6A#6^|j$3?3N:OxR3؂^J|! #` 2XLYć_*h0ANoksLB L$ǧ^8*E<l&*9[1$	~bK@T ;),g{ -a?13
+yNdx4T[tT o{xX
+1e9rkC`awh)\aǤ$qƼKU~Wi@
+~m3E`wŶvM\5.{?>ʰ2B{Yl.shl_L>$x<D3^VJE1?&>pnVȩ;
+4>o$EãGy%J4$[>ߺ*{kW^xJ=gvnci7O N-Z07tBD	bƷUwgx͡_֋JD`̖c9l@῅]q/{r,px1L|	\2XQҰ]
++ɼ>3a[[U0Q񯂶X_[:奝M'LmrS.gҦZo=.&:͙lćۻW#G9|Rת\lkV]C,xoC<~b<'<m^ϱ$;EltpT;ÕaVrH@$.0'ßůnx%>SuëΑ nny՜CAvj;=!xgkƾ?><.f"aBGƵe@.9!-L&|ITuBRcp9Lv|ʥ(7SR2g	J㷽; Reg+6|A5]YA^ w{~WtJMd0|vyXsF5M>yQS|w?I)żs~p`0C]ñ]bFǔַHYM^l[лĘ ogq5;;@?V
+a.^rS~b< ٱ	ѪBYOZP2vT0`6CKR=5z?c8/׵Mz)@:RENv'ChIgSՃ2`KR|Χz~Zq5c /DK=+Hq=ۃ+}!0-	dh3]ㅉʴ\*Jk@џ5/B?8_`: @zNZz	mM~)>㥈W[#!(<(C(F+h3g{?eWFu52䂞4耨ocF0J3g)5Z "}`az.^&U|"M 譝Y|mlSj! V|SV&vQX"?">&TxJ<}~>㨺}!bW<w&W>̩.'_ow;:Ilgrss!C~.~'J>RJK;G"ɥdDdFX%xYrTZyl㝐˔e1֞K0!.ignGg)m؊xJJO<-,6)@]I
+TT*lٔ3x_V(K6
+[hkJxaU^AaS0Y(hch!W*)ŪG0,6\
+gED)j,}l>m,-gncVY
+"u⢜"u/J)۳MY2ƒ54L#pO8]M~yd|+Z.p=W<Er|r:Nb8|`%%<cg7$v#M5$4(,eYzAv^onpPzH$>6FEpu6ܫU-r`"ixY=Ch]Cu)G5VE>)-54E̳/=Q z7* gsKu`&y x\߷2bMOs/}4hO<3϶y +I{(rh2ւ46χ̹CմaX!mM4Y*ܥ5}@-vnG#q8UY+:93P7rVGȩ\GW^B= :u %ܳQxt(녈=.?X0ՎgZZ429qu+j 0\b7//F~.U(b0srdNuy5}t?#)))E=묳ӑs7[|rIڦB@,n	TOHOf ݅Ua*62$RV,`'T ΠV<'j=0tL\-:940en\"gN+/]s:XfruBso* lQ SL8%b@IZfkf}B0n*N$s+kinfemۈPQpY=dmD<+Sѭ}^,r%XuH1_)dӼ~l16st}_@3`A  ~)O;F⓴5ò1ǌ2_-c}렮lb?ŬJX˿݋4y5% P';qL7M/r&[V/0=$1CsI9`	~Uj>EOL)RFyJ 7-ճ^xP<U`EsHA1%J4/?h]T^8]>CJo-`'z[Ӛ6gC?t`z{r5og+6_Ԉ
+,t9VjV
+ b)6UU${hl,I{h&~Xj>ܣf%,}{@^%W.{~30ܻ75L^|gheikNk'S{S`Elz)b_Td"W]B7[9B|(		KyD`8URP~&kTljuë/8,v=׿4|?g[|Mv#[\;C{4ֲ.[:l[5p!Ϝ!S/ҜNU,.kJf(IRs	dX^>e=X^ ~^䔭޸)y19eĒO8(ⓐ15OB^rЙkI[Ѳqn &#nz|Ļ*X+|]qR&C[?=$?`9>m|+{~x_M.!7f]:-txG4T;̏H7+I[C)ۤi|o*CbBC@׭J)j-JGt<s1z[FS3X*"{Kw5=,'~</pǳĜ/5AqEW_<YO뗂&^q?h)ġ	-4g
+	;F!j:u?W[vr3=vWW[+B~ȷw[V⾒ݪe2(3CYujbA§lV0O4+˲]]ekXs{:*կ_ЧJ]j]: Λɧǭ- wiVbWwVlg+E[[WjUZh!_/@w [9tJx!lx	mcτ[U+>>oQZUa>Cfg\;8$n|T_a![흗zޘCb0j1  =1OO3oafQbez#ޜ3ZGſr/;i@jwfk&vt&AYMxYa`
+A-WB(9`J>Ǉ`,[ Wn`yMLbNT/#<!
+CZۘµ2h.p$>3IJDDNpn=ĤKʯ=H]@hc9vhK0]/Xc18>Dp*>g45(m1:ȝƧ\b'Z-g񂼊C&ŨmcXJvc`-Ww+CAVku'<t0GAF768o@*]:w$ey84qaPPl5eTSz.ϯûR}ݳ1˜}Tz/}gSkWڊܣ5's櫿:EGW1Wl>Z.d>#?si-* ?e-%x]*=ʉ$ hPeD)/;^V7sNҽ@Ihۋak'؁`_vX.?0A ^%W^*Q<77<zΞܼEӯ}gC'ۛܨg58 bu
+0A@&t榴Kmc՚k(ثr[ikk>͟|vO-/r:fS
+8jb8nv҃Y	OdJ|iUekgO&p
+fD8[JK;+WlMAؼshIgڌ[X.캻((@\bI#|1UaO/|~,3.R A"bn.mbY'ˬ2qN'܆Gj6O{˶cW " MO]ݿ@xto+c?@-^ QD+TŢ*j)@67jy;"?-[8Qzb)B
+WRlb0N4n;{\eVZ:H5zIt5ƧVh$~%J.uN>{uLHOnpeK!PR55njh}.JʏO/-
+O?R5vvi{-86qtњQY{-76f[X`5Dnĳ:p34E*_T&.v`pPG?(:j,"Zl*>5әG@[J}݊F=KD$bPqdzU?|+Tx{&%sBiV`dCꄗCW}إ3K/ZdL->jw<s3
+ŷV%p3B$aW7Nuv[h7YjIb<U-Mʨ2/c`'$s4|3#J&zLVb-[q=!-3ʞڲmMNQvw[T^P=R7۔(\aD %K@j؁xcA2GEٙ=<`O_n5\E*ў{dA(65ts &J8Oʸ9Q)4Q8Ӻe]܂:cA^>+DiN&6vѥLÂ080/e]J\E5%+IK%_k/)X$hwe+;#AZɌ1+wo\w᥻qڜwf%>1*=6/t/v.$zp[\)!Ws/CC|\h%hZs|5׷d>QR4lCαo>X֣Ezg :A0(/b};={7Y.s"a $VEIy*Yuq %g0V1#i!1CpRu1	kH7 )䧗; Z:"#VN!}/X*iV\2nj4}/F쥛5/rȫLj,3m7)49j++epك	x8M2,|YvkiAVoW
+OrE;s`u˞=]_a取otF˫o52\C7&9_cЙxX36NgNTfI6^z`"*PqZW,*>!=!G[y-f=]˃L
+ʲe؇YݤnwUȹ328l혍5|S%U⊱BQQT>۬d;3*oYoL7|]k-<׃9=w\4m1b⾬xlf222WC_-O<W&p`Wx\>{&q# tNؾ"UHYv6![Zo6wWșVHRߪyDWbY5K-EsS*g%<C7|Dc1OAh_ZM	X3WTZ*䛴^,x;ZIגz_[c}f
+nC?RnP2؞ixtH X)l/Ǻ|N5o`hWZT~	<O"̇kd%>yyӖBJNȸyisH<.u>+à0~..]ۋ
+ө^*v@dd+t(8	?fvx1O|D(/ =8P녿]7~{vkؙӾXaPM;y$})b/}:i=7TAf	5;!4j5*I3!@IfN|87Rϟq/
+jOhnq=	db˵MtSRNxzU+;ψ, NWp],wk }"{,ݡo-Jֵ腉-*+U 5W	e; pUuM$@"ۇYpŚBI0Xr斷h;]AG89Vw0}quPpBj:Ō\tN&)-
+ULoP>;Cc{OQkEi,k3mS{Jiw3zgͽYlVh)Y?nt zsxI#a#zܷS`wJ;tH.XkBRXݭXU`b]!qeOJ,5-K_.*BRRJ 0Xx*VW&wd\;Of{+pm2 Q \b:DMVb)80@gMˇon~F\v( F3}Ɛ%E/Di99KuV&lEVj_5^ﯙ!^!('d=_	5ó@dEQlo^DxG8O49$հVUΈy]86	2N|I+YKԷchdYԹ)W1˅arS@H\Z2l_ vBҫm~z49J(ǽT̊( 
+"ERv%^	ojuH?)x/I;>XL.$Wd.쳩ؓ
+{k2SUfFF(,6bYkѰf?}w'Vs.5Nx`Q煠Qe^3|tF^%W-ޤ#$	|0w.hn݊z>Zb |XxbPfT'Nz.$AJ܃_zNT%B
+-^MIR5Dl۔3-5ZxZ_FxY4͞)roy~UmނBYY|`/|9[$WAb͵ΫFZX4."'[2`<X3(F:g{jOj1>zXY@e̢x<o:ub.%_;*ޥ}ԇ	wPtq|۫rKncFv/%{⼵@=oQ|f@6o,gӈ-*}[3xŒ:Zfn;!8;vEQxSbJz.,y]&@-_?5+kaRq*,.CjzIwGKt @0pBzBY>c ւ̒QÈ玈TX.A㒯'uMH+}@G`8y%<z`bLK(>bL?fLܑT`M*|[Z@0)׃Ĳ־l7-nSwPSMvpvPNO6%B^v0p"7ך>duRyr/1Wգʼ]jQ߿W	]
+6 4cMh.ۇrXwiq=!=P'7rNO|VӞ]y&8U_Y8˿t^Hñ}SjU?*	2I+i! j/Ox+YBXz_V׿NDZGۿy(WT0M oh5*}Y@s^]ގ)BŁt$Kw|%9Ipj@/̖cV3luW/g 1[|{llk%NV``N6lwאAo FvWz s}M#vHcG+.C cY/=n᥵K8QĦ: {=s^*Aa#s6}^"eNAV>m~o7\_a取^m$^݌Pln/X_+,Rש;e8È9ro5G}'bKG姗`l=DlCC5l\Pc\#3&'urf9;@e=b3QB9r#"FKQ$IQ$BQΦzrN=`LϯN/+Ë;h{2v 7^ȉ<M+qQk,덾)$;ŷ_r-B.*t;Vg35K|F~:&>EhJkOH;K0 ʹ sq0\U:۔1UE9BC|.}L4v-
+2'+w`c\%vu2aj6ԑjӣ{l}`CTǔw*{)53;Zs`\ڔG͚R^/\\5Me-Nb5xV/||e^iݸ僢ǍoX	+-&=8LS )gJ|+}aG-{}gAxYT7<̿hp+g[tñ@yV/WcL-&΂}GZ>QH+!~x&VBw;qĖut{bNW}vXu+|oqԋ
+^Em'Ouv[Tf1IDqƠkVV6,Ob|z"a,`8Kymks3LLfM6|Mz	/
+ILG)v])pe>W3Eݫra
+?Z4\<vn\ԕy@c%UV`4#mAK6nؽӅP?UNZSØ]y
+:?{u5c<(RI[UbY}];(؀ JH$D"*Az=|!}77gf9׹xMTvTuJ\Ϩa8GOLBVjUu\ӸZ}ҞQ_ס+_,!9 <4-{Y	)M܊G_RARN5q7qB T^Mߤ0j	o3K%u	tOim9cJ^T$ M !Omw|!L<?v+bJ9R~ńALM6}KP$GÔuY2ŸH~WI8DJ]a[R-
+[ 
+):=~UQҫ +4Wlx%W9B9otPc:o¥h^)Z@D1gOv2lK_EjV-?X֜obS@-Aj/$lUe[-j)3?'^ oi~C/.GaHnN8; mPȢv
+G:A]nm%Ԧ"7b|v/`'gXV$Q_*79IҊ(uT*aQXv*<ԒU\.@vvִqlt9)-vXO8|ay_(`prK9ݧJbՠi:Ք_nΞ`ɅZv̐*yU)IA$՞ks.e`w{1s=OCFչ8I7zRWðؕV<wokesܦVՀV-DCQaÓZ}?)IWl*J숱,ӯc3y_O6wRAW@4+*Ik Sq̢2O7[<UC5(aT	wpv^堥v/nPjl^c$L7ڪ_Xq-k j(+X_*Cxy)x8O Ju2U*ۖ7>;ֱpyYQVxgAqe24owN p5NeIi7u\)|V,5S@~1lf:*,kugy88swpz&ECtφm*%Ȅ,Y\ yVдa.8曢Oٰ6䯡ͻM?1lDz]2]!m^MS<Cݥw9
+Gʟn|qʳÒ^? dWzJcLƥ>8D_IoZ0UĶ4\WC+	IA:Cy0(< &
+C@*~$wXıw珡V9&8V	`\ő"<Va%Px4*6!&0_-t^Q~E8j;^rOSrX<W/vU*+AB{̄Ab&j1TǾ˩*rFy=<9?M=<|9:Ԫ̭9nn&MѾ+3*/-%e쳬)/ʑi"/nЫ{Qjw_ 	`r[n(-9V?1-}_vٿ]΃4-{PLO5.]S!G5dCJ>>(Xq^O~\yߐ*{Q^c
+S㍛ʠ={G>&B8:Z:;KqC %iUp^Wt$+%(4f.vE훆  mFow^`5/U`3'pjނV`p	|PTP+P|e[ֲ 2?les=XB©ѿR2Ϩȍ=Uu:Ui4EFz/=Ey>-^͑u &Yg*3"&Wˤic
+_6z?M dׁꊫ,FA>/m3xyͼZ4D`TlM1ūaK{ט:(pH56Z?B FAT"oɭVV]`-|uV>;UV9J1X-=Є^}cfʭ~P¾y6%TqA1}cKj78~bZ1p6niu%&<
+I4(?8#(pE^=4m^)_8*S?,]<tכڢp4(~Yj,5TO[>T*W5laEY=G0|n8ەJVXMLoZ	e.F&v-o]r|cG_k2%vC-GlЀJa}cvA>џJ<1riRiwHPpFtߊ_mvTev5bVj_s+aQ8zQ]8~4->?4|gfցg!e(6	7}L憡Y>]{_oHK-촪a[t㰍@96	z9()h;6l:Jk316$	)MOTW106\P'#s-]:&W"0:JbccqY'z	zO)A-{u}sXX(=J³ 7
+J̷B4Hf蔌ޣ:!&rU=F7t}I}Y@+Rg"sfImȖ@^}0Y\6Y:Ed;ŻPvEAUԿ&vQ󌳼oA:ĶCv3_x
+;$aUR3ʔwy֘$;6LX`j.cUzU* I3|pH0}I\t@-.0N([M;]N}1uXN檙l݃q	9Hjn;mk @%W?ބ-~B)p\,}D5ҚV	\6.tSZq b&\z bҴ^[q-?}7V"-r櫵w?l7pFrM¤zգa>luc/`sYF6,Xb6SU64_aC^9 vkvy84`]#؇
+rv?ZK)7fQ(T0RU~+I3G	ZeYǫP0Z`x+twWSN=8ufff{A=MLL_oAW8s~8cE4>_$FeV/yN[5Z	gY0	bA^[ڵdWvz4,J+MwZy˟o14J@u/\9p4bWxDڅ7&3gI_
+W9 vʴž':ڰ˳ӌ\DyۣR+:QeR4(-J{qYV7>
+`Azh	SS-oU"ZjM_򺡺q2[Vv/}k<]<zcnSiywa tr^6WT!u9`kp|!T憳4:-b6~ hľ-w`7L(sVlwZݗ8wXAG*0VhH5Ң9$H>@L}k*$
+}5~<̲t(e+giZ9}84ǧ}-KWPZ+],>&f厼h#jF
+rv?Z4ÒJf3:jOP&ѱʎ0`|rp|WN_V8/aS̭	^{PZQJNȉx$/jr.zY:16@WeWXc쳇z78/j+}`V#[M(0veGmO+	7rv}KGI88k	|+wYu)Waatݟ'jQY$Y0خF0KEx¦xdLl[nEKӹ0ZdKUtڋ=tDCggqa}]+019Ygٸ˭5_I\rg#bm4ܻ/XLñxEyM5ybRI0M"|/`s e3^"KOo/cҴsE<(#[Lenm oVVףRZsP|:_d;CNiuCÓ[aqzE)8FU:l|WWp %b^bΦaۛZ\fp`hMYNW	6U^ԆJqyR\}<) uOh#[Y8x
+^Zτm+|K=()=]zTr~Y&Q|EnP8Rq2Lb%Ղj('iF})۸+4eX,M$I5˳3\3<'AH}NXc~EiCzzW.a4Dctb~mPok 2y32ݜ*}Aw`!,
+tcX9[]WhRf{P0S<Zϭ0S1eǧA_ՖͷB Af(h Vôp13j~umkgY`*#R*n*zƸgg C=:}gb9V}xr3NC8WK13B}6V̥-\C>\Fd坂e-CK[h^Y7E,zZ")MRЖa4KβuJT(ߨӨe8?ȉOvڔȍYqqg%%z7Pf<ɞÓZ8rF'W2vXCoމ`sȥk_<4<Ħr9O~.
+&zT`zyjgcȬX0:`K6X42+p$yv6C5OVpv	Ϸd%KțE5sTL.k;(џT>*;"Z^	kɸPiz$/{̷^q k3"'Jy=(?k+擂fb-sW(tU&iV`Xp( Uoɺno"2u&Au?L78!:c)7FGkg};ԲQ&YQd,1vC9?lQ]}FL^ǆQʐ2CXYL9xXBx[wMV48GbESlxHnMc*rcʳ8!&hyN"	K*ؖԓJIP\m0qgo_Tzc(w/Sa-k,U!춂捥jP<(~5ȼ/H}'⏔zg_k<Ƭe02Vpsx$Aol&yژƍgq!*WJ?yhzK#rqطzD.5kۻGv ޚ磹
+`Tt6/{f*hkA--K[f}&E]j .`Vx%.aACN$l{Kd]Dhy#\WWFn1lS{d瀪>fDCMW,w%?sCX?D]p{Re<P̒[<D	ɸJԇ︬0j[v5]7'V@X)?Ka`ފq_2{-;sW2gW̜\&29m}0ЬKĕl%|\]mí~ߣĦ~CwuO@)HZ;@ 4uFjՋ//TL`w8[M zK4&WTAl?vULusq\CŶ 3 8?/IytآWN,I~sk`R=*ӂ3OVdY5?<˛X8ZʫF4E3@*Ҹ_'m7X9Se6Lw͑#jC[Pc۔_Im]clyZ{<"b%F_v(=Dʉ[Oϖe4fc/{ 	=PW.Y@^|WMMo2Ծģp
+,TYvT SgE%lDUAv}ӰTbwUgla0&ȷ]r8P	oMめuP>x~./4ͦ5Εrwhcدlㄜ<mU)x]C-f#取r[40|5[KdI_G4QҮlIGZ/#+Mz51Uv>0"qKӯI	D!( Et)Y	i]+
+2;*~	^+Ɔ9앇{phg,BoYGeava'XPÞs[&2;>Q	fM:Fq/kl(<Q*kKra
+ċVmS%o$-ivp*r5i'l`P#yFO;M|@u'`H3J&WZ+)M2hLJGڹlf?u1NĴ#ĖMU`|WcoD;!
+LY:i?c`׋Cbx q<j>aYi`0_gхVuBnZFx\FiqiYwDʳlQb'`V;H#45J\)CkSk?J-9vXHcuyUdW@iZY|ͨnͳcg`0Ɵq0S*^`K?JF	_,iw=j(rhMA5x+Vf:Wxw=p⥧s^Pa]GKOeu~*&b91iCr+r*T.9:Zl&
+q̳mT._/ެ)^t4WVow,	ˏK@4+^pl腄&,6K+qڡH{QVg(SEcFjZFjZ9
+$'0Ş~PڅOP$Xaç4A*7Gjg2`떷d	]Tj앝gF:(Z۲VG&VO\![J`]yӯ~u׈՘ML/J!=,Ր!˳IeYǗFbpz)wOmb}@>N?OS Ŭ }}Vl/$^4^gUWӎҎ詡3>HxA<ܞ@ʞ~C5<no-D+[ yE==G#oU<pG_Uu/2*&`dLҚ4ʔaIzB ;Jb&[Cz>|t':O@-E,_A
+ba+.+1Kh3	bҥoǺPhdVp9ևRcFM/5m%oaC9гSh:`t`^+2y!.0{R
+qgGyŸSgg1	fJ)=Ҵ1
+iNa\&zH/Y=w`bpx!,گ3L(Cj	2XJ8VԊ^ͫu2죲wjxIdܻ(0CG%,
+r/vω" bu&ش%VRRl=Keݼ+`eAQ{l`AlbTH}<=c[z;(n4؀7X!\wTX`m3[v&LB<jSi>*8g`Օ[~ Ƨj;ڋo7ZG[UIx%|u1eS+4AL{"h]s_9Ej6RGtF̵۠FWh/mn<OڤZx*pl%j8Gɸ4톢ga)OGYN^[
++'TźkCRk0|lc6 Hm .z,brө>gf䗁<z&ܶ.?j~+'+R<CV% 2hPh;K3|qq	h.=bgIY~zM@`-2[w[ޣ{G/Q<Xi?U>ۅOse)V߳[vy:[|T[]hoKnR9kcKAenOy[_%Pg]+?ogs^~Œ2bAXp@VQMe-;@f([t	Kη@-ae@ڈM"ߐAFA4WBJz1_@+4j`!mJ' }6 񃋟zo|.WZq	D*</[f:$a̽"adļx|K>V{gOF5gpqY'&(I>0&2=UUB#Y.|483D֤Ž5~{\#4ʦrWcgi5NۦK<O	lڿÞêo5'_Tu{,9zqu\7YtUFf݆'
+}EC4nȅ\4 bhBˀ`:Vw%b^*cVdXvwyZ/n|lx	O6|0xt
+"@+-aW 
+}DB=
+#1C3_P=E "hʖJMZb6s^^.x
+"~p4hj˖:deeEDD\y啋/OWS"rrl|cOgx4KY:^N}p|Qi,Y=~TGV$YcqP˴+'|~	,[420(+l2'sn7]-V}A#Vs|~;&b6H<-$~E( JeIGe_4.}$>a@=m6&}@k">B5-sk1(h8;oUa!5C#lm#X䞮mp,<>*^UIέq8ZoZ Kzb$|^4jxJϽ[|^`Vey5vXP9@9E;\UPlV" 
+$GD^p0|7owߊAtRӥi}k"U?!pFyvv&Yna؉.G.aD;N\{Y1G}OX-	3yvTZpv9|2liU]ޔ[	T~/P3a?Z΁\gKV}D5psTh=޲?nRl|0$r~5oC̵%;VCg^yA_qqqAAAΝC/**O	)+1闗e?,5ɸhl^z*^`+^T/ȍ~oZDue`9
+I>VQې2dw('[q@ \~0e[\&r H/Sxiٻ- &' ~Fvobi$"ypwBoUf扚MòFtg2|ReSN n&Q5atTI8ݶi^jݳ<%dj8U!(us*7jDKÒ^|nxE6HJ{sƂt6]"֎ɨE*L/fH4{־9x_:teU_#?S-unr_ܠmZVCpSV/mAR70W=UjfG}`橱e/?3T/;fA~˓Հ <j%p5ś<:r+|e.\26>AF!	:G&QةgԼqc`p{ǺF;(йk*v7UOmD-A+yPE
+6{?P3ҋA_},ħwnU7.ڊ BiN`_	BD!6B~#o8N!
+gnǯx84=Ga,Ga'͘1G{g>w߅Bwy'lVe+e3XQu(L<"'Pt3}Ǆgg*5'ۄً Zȗ#ƘaI/\ѯ+u&Y7TM\m'(ۍr2/zJga+,؟ݠ_߯qK ԯ,*9eH+ I?l{>P`}$LpqqVv+Ωd"_ Ƀj\oDh4uL<թV	{\b`رOn1i#\EzAqقFxP\	P;$~(-If5`լ½:p?B=.Oʀmr\6PG*mMd01_&VvC=wfۊj'a)]ڞLΠɷ\Oz1Az_[%I'8ϊ9ωwWѦ٢Ď?q6<SqU>++_fώ[-cЍC,erR^t 5JӸsLbi󹛞)$6+!׆9&zB9'LS5v7d]uʥȼcaWUP].	,F[Y9$n`w98OQce042	*t>T}p~vY1cw8ڴin~ߒ)?/NixJQ_03&.{Ӑ6mW\Y/Lޖ^]iNY$ E V#-:/bba ($5oum0λt\$+ScV`&P *`wYǤ"k]tbDA^ES-^ґΘD qZ
+.8J<ˬ~\|PE,	رCmTpTrh"nD
+]t˚osܗjO%76$Ke<*u}ICg="[	n#5[ V}[E=w"'nPk&_Te5MJzL_M-*چdi#vsO$]4SoRܶl%Vj<֕!XܑۻF=֗q
+.oNCX.i}aŤ(mcүYQ؉x#R:䰤6`կ3}h뽢SFخS MöFzsQp"Ԯ<͇nv)Ct[|Y8^z<rq|e-P3nlBH~ }E;|'-
+[gk9`
+{`
+fメ/@yJ'F~~^ V&#]|9~;\tEO=Կ9T],ɵuytׁ~oeYc2.4'^ȯ2"'ƣ!¦;WvFzMfVEμZ\UO̾Y +Db\&OvP,B}˿Vb9cHο*X({|cf<m:	F/m +Rm0YfW,MRY$ҏdejlYVѳ(ك^QOv=/@T6lRW6AUdoAMuFw~+r|=9>!An)(MdSK]-r9Z'ӞQ
+H~>|;إo]gIIh,pT"j/p*}Ac|(۲V[Pn?5H| \a[0|zZٿ8taMq;Ex1HsayB&e:y<||mɒ*sX&J}_1(~d?Ɂ^?1l.S|R8jIp`NUR OZq6ۻI.t4=r`I%/pG =[|,)ipkA,C3Y@Hn*>sWkyBlu G*~cko$>opnEt"rvg$/>汁j:,x|v:zɡzL%2צT\}ۆa4 鸬S>0*/|`cRNc,-Qfͨ2s*%st .:\{2by@^6oi)aoɭ/ɘ߮xMaսl26
+DVVlw| οU] #Hbss2%Z#@]_H
+ .f3-ax].9	5^Cy@nK+=uqfvu[DI_G
+8%v|ڔ\}}caXlFo؉#R-Jj7"	=gPqYJaT<|ƃ|2*S>j n@;z{ޑ,s`-MPGpy<76+;^T`}GzAm6~t-o9oTLBox]Gx>O0[TF*;U7UޒD7f*`Zݸ^>yJgKt\j:G!gA*5C2s*y6l4hamxc\O.|̱gТM]3ذ^KqiKnη ib&8 9!4Jm~AXUs((kݪR2Qͣ{̀$5Y!GiBC [ԧ_{LMzpLE*<$%=r]`Uфs]jlWQVR	LΆ>bX=ʤ[V	`!`+0(Q܇e?6%M'v{SJCĞ {@Z켸DzDlw<\dv2JbG{ќK:ivV7@!PfzgH1{Ț	J$&]FGe	h$1Ac@ck O5'{h:<v_Qv
+4NCs:F/bcTo; CXuye7WЎ*xZJpcSAd>.ɀngUW+TaS4}cÿ*5^W*ҾOy8s%!aGb]7m,8~׺z_w#	\ALyF>2	5˳0{ennWtӤVv2s˚~[2USh6VGyl8_T}@p!/suBK[|(!]W	+>n3^{3(Wٸ<b<3p|0kt<-xUqxn79ka+icfe3r1,}:(俟?
+}3
+<aIKҵd/$\F'Mxj%Tr;GvBZ0.wO-}JU
+) *Ag|K,`S)~^ '8+s~r -H,`ꫠ}Қ~f=|@+')gguײ7ٺ70V-g>4o"iUgPȕ	ALց]N*e]vӪ;J q0e{2|eq$n;U~k[]W6X]A#hUjEnt90`@,TyRKu^MI"V<3 AVW<20\. Wjjk({]RwegTMbCPk(«zw`0~3ܿEUd?bQ̝ڭǅ{&mB9\%(RyzܰKHHT;e&Iw3l7Qwu\;c\U[;KzE쩰u7;Kei]<:HsSF8áaUq^X[XG ^ڮ]bZXε9J J~6N'z'!Y #`1;s'vnE[@^%)%_*{Q	7nφ{뭷Xߺu끃	AÆ9sW\q'0Qз?2mL0փv?yhB//R<9C(f#fWyTV#S.{'+K|qCR$YnHQ? 1p@̾U,vC>@ rBWc!X!8ԊdYB?)S,}ūsg6VڵT:dT6}>A5DK!	gh; kzE4yZhI@-UaTsDo6XPVW~3x -HlR=+gueo\L+D p|%bMϨyp!lW߳LC?3$`Ofcs~̸hJ&mCc\o
+WOVQݛ5*-h=FUqM\#y-<OVa.>h=I:ˎO՝+jYV<nU-Ҭn ˀwuW0׹$:q|v]Lr،cv`ܸ1,6iԲVUȅ`hEu+[*=획@34]T	Fi^<EFJ~Z9Lq+`BuUΕ34EufJu;pW<~O4kTizSs0WLav`}퇞;]O+..'Oڷo	?wsn#<aab܁ke2"ad0JRoD]֭\ /|OUpLi=]ƖڹCBƀX{W')1>i{pV̮PYbI`a<-njb/JcBgUZUu-e@a/sy]|R8+?hLϕ`/(3&t$0vlߨXh¹,	1};Zś*dW5A {&KpM̺/\* !M<_y!Հ/Qߴ*BqJĎc2.-MaDEGx=)݇]XQbQǏ3exrBHHj5$"EvRzK \ WRx\'mM(mc:M!4q5z_\ɕ> G*]̈WQYZK@ֽz w2MkGrإk<6Wex=+zْ,tGw\#<ZF4zw{G3jAoCUm*"}cOZLb:}	}o8[>'A5B0ý}"?gc2>isz^_㩚ug.iAeMۼc
+V}RXie\=/aW0#O*UWJPPNEIV֪~~ʬIyJK6TXgy@ _W=_UYs>*]S}d5v>CؓU!|nJ52̺*>&zH6IS.G4Ȭ@gd]l5)uK#XJa4&Rw/)`h(M	1ԏr5OF}8ga](`6];/&l8UVTA$jƓu9*טwKJ7l<C>yԚ8]uDʳ|pUxM[.Mc>㭬^ƌHi/1%imJnbXRL4sy]}TۗJ߾(-:#jGQ<<
+U-{8-`]{UWaL`>UZ=\\y϶0[4L`q8o`t0ljŸ.7^Ǯa-Jl_,5K+}"O^wLhȥ'R=9"6`P+*ϷGCK4 'a\'Co]9:nk>|;ܜc6U4zr6łACq~hmg=`sa݇@tv>jެHҴAϹ++V,*ZӾT%/ʞ:If&Z;`߶]OiD,-ByhAyO]@3̺N;	AwqgPuOBpU6;Uؙk%wJ03 mJ5#>(F%TeesAk}$=(ة\%vB/E\V~$c%ceF[1~,*9#yC-Ih^.^o^< dC&
+8X׎N"'~L|Aρqc0S"Vx6%b9 MSfֽ 649rH~"'kg^Cz&;44ޣA=Pu=mY@Jy|V
+ 륆7m$aD*cH?>Cޥ=.|A]s:
+C.IpGnOラ̱qeٸEØھ1S{G}YY/kM[$^876-;LFck^K:_M}^ k[AOMj5|h7mxSXZ]^*/l}^Nc9ӝDו3=)hNrЋƗ
+v.wc664t{.GaH\_7<'$2BNᶒ0W$5Ti)#HQU}_UƐͶ^tfIaHe@8gefk}0Kv0(%xXHhB[E a'E4@{95\KFVkȒ'$ԫ\a ;Xj	DIW)#d-ebAsmӂB^8 ݰH+}N=cs-uik41	X54X_xͯj9>i<vi٬^,'{2d.FRZPz۰W`Cbf\ -IbSf4H̾$.tۄ\L{)/P$Da2ԣzP,
+ˡzFuM?<R_}u]#$W%Tkj*CX%<zdʞpfӖ]zxx|;2+rcEs,]@]W(5txruOnYإ8	3zhWW8=VE-G%8'.GCߙROӗEdoYZHꘪףgz*lnMB]#V6sE,&a[9/X7_y@CMmb-zab1<9AԘ73Bv%;dإrv?on5:Qw+wLoJ|+ğI27-FV*r&IVzu5gyNl3@s~CxjpU֊t j`υ=s},bAN(x6hei<a\&y)S g9d	ƙ{	|D~38
+0j}QEf' W[x4݀;@7~81FU4}?VwWC<(]Ddv?2qݡ-x"aF^u^Q],LkKzTL2 v36!	$~S~;UiP'wJÅ0'5ib"S5L!@ֳzi,50_Fn%'G^,vLP#չmp=qP_v2Iit9׺B+r	-^%D/_E ?8ݡ^+1U>^Q+FysĆ߱R[s`\a``H1:oW0vV.TiSYHqA*\j@gxC[Y |ulr,xY^ >ϲh<Ca>>"K9֥`^@۹[ovR;snV}ZZaoQʿC/sl#取hO((Lll[蘌 Dd1̼>upP	yggxQ{	bX)mlS/X /BA|wIQkW|=T_Ac0y,	VZ!UWj%-'m
+ð@kΜcCw@!f@y(vMĪ2/zp0_vrDh)p9NBRvSZYM
+۷L\H .xauUN+%cUVNk#rOfr>"*`V?v?ށ3cȧׂڴ2bT1b?T_#_=Ҋe)Oz__+YOZ(50PxT<7	[}?iHzr_O	;:ExC`3>4j6|d6WSl}W]c_m~-{W(<v5}$ۦKy /ȮvYTkyxxݰ4Ayvӽ
+󸬓fU0$Є3#5Y1PKzbp|gR %,BZO:oy"<zTc2,}*vI%(Vkoqarj";'VVh'T )+#X&aۼPjoMuX`2Dj>U(3`+vo;()b/Xif*Kj[ص^ػ']KY3u?*I%2xa[MZ	DV S"tV֫Y:CAUT7ƒ8pC PWT[̝@ 1Qp%O]@e݆s%«бz{Ί	_t R/+;X*9- 4u?k\zBQ2Y.FE}4dTC&y9*Up0Lް]Ql,>ϨԿ}[v3Hag`VG<<2leݜq ÓZJp'pu3}"\ukЅ91O+WGS,fX	~.|b-Rj%.v(ǣC00`|H3*DYhkIqCalDOVE/]pV/Uɼ~ۭyg||	Uxn'h#<=<.QaJQ9t^"@5@.soZ堸On=Nuc Ò%%bP5Dsqf1|+T*WyO|Wjqq*6`t*'l~x66xkk-G_Kj%="98~FYb;XT^>oc>+&MrRl"j|v菖yB:8=F_c.kUS3(I,l,IŔ4Ջ<Kkx7V<ʋ UF3Vy{\~ոwqU
+dvv,4DxnL0|v.RwSV޾`A4+^bTr5hUtNE]GY;^U'YXs3/E2Dڈ81\(XځI"\Vq
+_ETUlȆvϪcUU,9Z&г"7$ xhBëSc<Ev$/b'K*(M(&įNDS*Tƕuf=y]n0TZ	5xn
+5>kRx;J*]5پM60b74$,VTl{CƖXW.Y;f
+))Yi IK _hm T)pqymULm%y^E#<4Σ.Oj/vTAs O`Ҵ>nB=1=-cq`z`\ٳ&B[T(p
+l up>٭ q }boޓB}$(zr.,󑫡>ymx<O~!/vX!X
+rv?Zk[ϽSctV7e|v<^72BNOl[Y*/u`.́lq*t /2hi)72JDDT3->5 !|]Eƚ:ռTeB[WdR0
+x+pl*ihܮl@°7}NUM}`t/lᡊyiϵHv+`9J2`9".VF(EĄ?Q]!}\ ʙYFx=HaÖOCq7Pyv%qBlW0xcXR[ontb/6h΂>џ[5<i7Ò^ָ5i2ϐ;;;N9jMCЦ)kKg{$[ַ:4I1|Y%}u+
+60'2hMTgnY]ՠTЛ1HUlKpGYEx!0jVvuA)̠!.*d[7x<m^:^ycL%&5۔e`⸬SKRo0uXA?׆%3l-lEp[W1gȁ|EowIIւZlWBB<$l2*@!Hyf`"{6/6E
+kLjO[;ɵ k؍WSz=0{nX+4m?TOm e~9|]0>j<@%^y=]W9'<RC['RseM' Us].~|A=ƞs;"w\$q;һDD&W0+<o "c%aɗL0Q֊bh Y1e6(,k)YWu,)ĔLOXz	=Td]CSm!^
+e|>u#Yḽ*ܸݕzw3t;0O?YFZzt|ݜ:cWO13#Fo!6awŏQXR;W][DEN{8x/b7%/%Puklkl)hԘ ;O~q	?F!eCĦ2<kwqCn~TG[r%l*m`PM޺G:}mxt8ct!ڋ;xNbxhtT}c2.(JlO_O<'z+^5|6և[AFNoXhW(:R<2I9ӀZj^v{1-Z
+r+jGVsΖJ^F˕X .:*\ ]ƁB>џ>+꫖AEm*qQHz-'!®ӁYGKOg#6BaRICZ^cWEYK&wZ9?ljpRc/°>&BK	uU%slAҰl.ꔁ'Q!s~%aU 
+ 6-V[xfEm{9D0hJiU/Șߘ;֕$Wɢ/ZK;!/͏b3H"n P؊;bK6v^~	踠q8-GAL/-· ܚ)OUK3#a9fo9H~.xSe*mVӢP>cg\}\5U&0)Uit:CQkiV2q:䗬EA}Ϯ@.*H'Ƀ=mr;k*𻳞ǧ)ԭqiM/|!;>UlLT#KmwX	dx2_QcrS%:b>AU],5!/@5yS4eɵQZ*i<:!+J=]V!4&㢒Կ耸
+Sѩ]ص{QK؄b+;td|E@\@X\8}&lsY^VOS>Zu.IYyU*yB6vXgu!d93Y=%~$!Tsy·rNDj3&8܏U]1Sn\˘[~JVBF$F<
+:()W]<';*qY*9wAqYNJSY'cy Pma3OStXZXƢ4(e=pe~uEbm処.U"3>@>!.-gхXO}l1XeF)*ȧɌ_Iacj"W*Ǆw ^)v~PR-l!0XSA{PѱAB*Te1`}ZadOlW"fsI๱Q#܎kbܞ%GYؑVm V0/}L#63<Y+UU1VP/fсxb,LArhBgOyzIڭ phng{+F>tT_/u@vIm6Ҝxgy/ .jD9KpXZjL/;gk]ט4f;v@0ߦOw/3?XR
++V4;WztAd'^hccըZeimPCybo6# <Ol7GxݼJ4TF䜓0<9o|v]Aq|Hw*J0(~$װ᪀ܾ1Aah`sHj"tzvF-jS.z׳\	ݽL^rUQ
+-+1Sz~r6r%*'6T6@m_#cvQ}»;o`OύC<+T؉Aܬ\ݣ?SKXW++Hi ZV6PeיhCNU[yz?rSIۚ>ΜG{YcOzVÇa0*t=U qV7by7(0_ͷY,j>Ѹ 6KhjV}.S䕏jB@[pk ,}VvO1W4{0bvZõls~`4p*.suM4i',\@ۗt#.ϲL<X&oښO	u^c!UgRppJӯ-Jzqi710n84?l~vGxp)$gY13yD.5̳1bEnY]^[#U}f,A0D?͡FAJY]
+'
+x;칺EپBQU{*kBl~C@\|]ylltCŶTz
+8]oGA^f7ս(N`I|OI6 majll!<%/șTҧj
+VoDTaS,>ac3,Qu/Ms ،N7D/v n.dc}Ƴc4.,k=	XJs+@$vdKMt/{R z/8NoR:ڲ3Kab`(.@<?%bGuX-r=µ9#0+@ w֍6r=()@FMUPI[		n*$d|$NqD1a)F4)FLvIM"jkΙ9Ww6
+YZltXVsd`_j(h7+Ba+<k2 ?Թ$W1ЦrAupɠnM- t	A]h/D['pM9._5ܟ֩XWZH=q pQwU禀Jbצivi&(yzx+f:+:Z$Vk!s5]LWcI>eA/Ɣ͙? kwp{[S_7]͌GT)/zw
+>Ŕ_#lfURCO!2f54@^)6b
+ƅZ򎂔v/2m[(|	=YvvCfr~d__HV.}<f^ml2Kd D?Ͻܼ|u<6o!||TO sObqب*'ռހ7S++NybX+%i+q	W2(nE xZP驰VA~'<Q6A
+8	00vGm}US@8*Zv#"SfYBj$յC1 jUK:jm9~[VX/fQ_۽{/}	GK~a={Wrb= cG^>;:$iB>:>;s\I͗w;GaXQi7MUԮƬ<
+J
+LFKF񊄞o"*<tAgׁ
+Ǻ(jf},3=`r	n6fwUg7`Z0V^($Kgky[Z=7	t1}ԅ.%'2 %ryode:PFw豟~Oi<U-4aNa.	=:{m-/q<W}<'e?< 1V4Q9wɍfGNcenf.NңYKJq_pt1Ip_U )vyz<)PGHhc*{ZUng&2c%{V(uB`A+U=3;8d{ul{Qs7`@DAT1*HDPdh:щp00&L﷫p}skCyo9kS˧zZqac4?uLxkv,˪ap00|Y! ϕl@Kg+Afx5~20pxJQ	tPty7A#o=CaA:5BEzRo8>=)?IWd}\8ϥ,x
+dYUǄng=-b'6yk_]T峣sAUKl+83Z4sjSQVBNڴ.p]Ufel;G;q5t95#i?>}4oNN:~꫿k2˜(Aʓ.o8p9>8OdJfjV}b0w-i(P/84|l/i>d/N~b#j]͸¥mlq^ApnE`hp4%83ڋ(Q8`p%e܅D^|[8
+@qvl>{I𶯌;f <:u-0P0+DqiA}e_NwPe-8]Y++"?c(D|_VJn0]No3Ts
+5 fizrakz;\053"͎cGLȚK}j"T^k^ޕ)y΅p8#Wl[%G/uaQ4xS!1KQJ(⭹\3W4E6;I@(aoe¸]ecW~YO~q`/*;gפ^ƻ7kԿl?OvQUz}a$B-Juډsk,oӓczVCWJs0BxSO,KXQt@,@iⵖwvLUj;zwalviufixxh4 76/zit	ݣ,$hcf	>{7pTB ,0eBrz^އs9wW\bG)fe/(?񻅱ò-_zA 3||RT?\.r33"1>6N,].T>*,D,px1 JT;Û5kvw.\pŊƍ+vf͚2GgS%EJi-cy%V/09ⷰU%γG`9-?pL,8awvx#WX3_%V-lɗ"vs'ΐ>n<ҞC-k>+yI+fx_6婻/*yoJAphv +Wlrl}AQWl۷nfnYȀyZd:.S.
+@u=X._,q"`+XNh02;Mģx8x>^Mg;2wW|N\_KjjEu݀qʾ+:Xju.#}4Ie%ìoenlݔsYQ05EQځ6Mdo-G89^B;hC@=[2 VIY7BȕzbJUf;`bT4~a6qd컭pH%@6سKJ 
+FPPQF?ޯzmz'}e< UWj{譢PfUU|X&oA=_y{Ǣ*ivAkJh+^`x!HL=z(oEqZ06%	7RlѨ0#+V)/=vwOBvj/+ ?}2|wÙ\ʣTfY>9xtYQ%n1p-,e/LjY5;*w,/U@{Mv++dMNpj)é݅Xvӳgϕ+WݻwyIQHUg!YGgYc+O/O*躬FIrt^>7*O..j>єZ]424S}G„1׍$
+lSv9W3F䳴p#1bVw:&꽯](C]4ee5uf78t-%VC/M;[76!Qb,PPE[e0ߴ`SBqO/Bŏ/ >!@j~-rmidoyx%g'42_WOL=)?z"N @\_w>rjv0ܨ+&k3_q$f:xe9{YuYMP;xfȝ)$y/Z2o) X3DYdG4y9@g[L=D
+)S
+T;
+sA.U@|]}vO`;W_Mݵ8rW?U	ppm`Ԛ|-B| }!)"iFF*j99G*Y7[!{\oi%eYN)i3)T*-[/\=Zw^VnT><0v(0n
+̓mjj6<f. +X˓&4~''i谕1 R4chBHᰞ|r=k 6bzrˣpO<3jlG#ߴuO=݁Ǔx~0<j@ aw}Qa* rq(34 ;/zbEʩ[yjҊLojlY,y+UoB.v!8(U\u"JO[^p8{h*Z3s2|~,p&{3m!TAg
+\+_])پyKR	h+ 0UԍJ_K~}<Z>G	֜ VBtV;U&*˃2ai\v~{J$n<H !PkJnYY:ߏWǊZ$bc*2ɋMkOU)͌yk){{k>BQ1ވWq:_EojSWe]aROAV~ʒAe 0l3@Vs}pO$$`
+;oVws>_,wuܳ)ڽ1?;1Ф<+	},.t}*W񬻬e3p3~a4cr͆
+b9hBenYjR|lKjhXvpbF԰p:^7SzZR!i|ߊohC3"CaİK,d(^ZiEh  ߁6roȗ@FmeBjS@gED,_	аa 8V;Tji̓"6&B;w`	f*H:LYb\?-GJI3"18?mv/6͋h2n\kn)Kn-O: <>+r.663(͌syJk
+Xx%@(3-wӊXq7))\uhe\s{p6t]`w0Ξ.-aPm+jWݗ&a $)6Ф}b:CSqAz #^m8#/GV]T29>j\Y'jWYjn+pz<3*M$ܰH~'IM^Sہ`"?EO
+kzL #,0̑}+WazlcUj[l/G\@*/g4ڌy;4$i=5c.o _GX=jX%iC@[PudBu1>^Cp~RYh,2)(3}*ۃq}MhE {w*
+zVN`x?BZUqz!?IU~	bk:swh_`R U@/gvl4ϕ$vrhdncSc^,zdmFB]f4=0vw~̸ܨ/L sKy1O<o\Or<d<hÐ<<m\ʆS!]:m+8'4Mlΐ-lӰT\t5Js㑖KsӼ'4~.P.*V ($w5r/s0)meq\V@+m{[[[{gDGG͛jiii5޽)gǎܹG'~'.i(!	^.Y̏)ڴw>AEI8Xr
+\!V,,h!,PI	'cs;뾱&w(OP4uyCY+{yD4_UHNU Us'ȩ
+yE->S}נuXr#K۹0\\#9d=c/@ZZS~P: 8O>bS=,)] tz&gQ)އ#lyn LQ}֡ kQJa0мIf$ZMPZl(	;Ήxwsi=sv,/\n<ݳw}01+afd̈Pc707#Wp%)<:EƶU|a) XлS͆UAg0ko";-2yƖ9ZQ	7TTSS5m*x]* nȯ
+RL|Tl 5K+Z_sϚG""kLpc?A]k!gd7]'P2Qy܆'5e52L0ܹf%e[iY.ҒMCýBoQz>rp<LϢKZ  KI6
+|# 7m҄>WWr 3P;*cFyRA;,a_r|>Ś64i@~Y3#+W>5[A/ 0b`Va;-|VO{ v$'b8d/LEr"f3 Ѷ艜ocA"v a8;;{̘1yyyk׮֭GCo97o>jԨ|~/}Lhwk,(\ޢ"/MHQ\,'O׃òΚ|0xiڄ+8#SQ#f@tU.EPY`	6/sd?j+4%=Pwe˕mp 7
+\
+5[zg
+L762eJ.4 5})_DLx{XPEU,no|jzY_%P_ɾJw|]ICQ
+#ފ,F=)?f|^tNibj2gEŶD,Y|Yan-vo|#zƐxS6q_xGEJܨ`9 OawI=k3=6qcyk%	7srNIu^+F)Rn_yMk	џG$Νׯ6DaLtK>[* PxY%}bs~0aBWNEAoP6k𙵠', ,eM#CAT5R6@	µY`4p#,wbڛ*WNн{ 6U2ЛXʒy 8GK,
+4LxܬRP,_L-[ֲo~{Wd]'ο)]+sOK.klO	[R;X;kPډv/X9+	qr1ȥ (ɥ/ʒ.ﰱRJJX$//ęYUAX<Cwr4Ϛ5kv?;ӟ~_
+(I&WW]؅e^A CWxJdd%q}1{[y҅IXUy-?fUvU[af{d뛆ו)^XYC 
+&v2y:e7cAgyv2nUd04!4-h^p!>UȤcdU<"3safet	XYјY2k苅#exyԑϔ>`ה9=A.r\'`k#ñɇ
+k3K	p[K7gB`cc@3f`w&Y˓+y||
+n굘Jeo2ˡ xi~!×URt^Imp%	<'8/4<颺К<mt.,=OɤE=ÛyLjU 穲}, ?+
+x`%,x[)Dsi~X_iwjUTj0bB_/W^H҈|H1̪]5:hԊZ.r-ajZ^/·oJX~W-'GPlK$ nsH"weQYSvtqߩ-wxi%F>rV2T Bv4Q}(gZ*+U.F)ِܻB>"E bPI>.ѳ
+fD<XnH\+k3_͊*.rn"l#[8nD ^/ß猞ÎG[. ^ jVwnРAEEZj5lذ_
+(]v,W8V`
+0T§Sa#ý_,roU@Ě҄*X0jua5p},}Ue	XTm-,=PKgH#hԡJ
+FUU:]w=(;~r:#ʍ*û&
+O.y10]dk Jɖy/Ʈnfv~8eG=DJ*-sє#H,xl;Yrq\#^$RɻT)B=r<^HӛW,&![z"t+M3'a/+/zvƣMY`qzrLkŘDH;Tj]+)/zjnT>\ k*U56$r:&^5'ӥL-M>KjZyly(S9"z;,Գѣ|NJ:+]4"P,T1al*~>zTƞ
+2Arw>mYj_Ɋt,<*UDַi%
+p9EAMV[e|>K~!LuQE	dxicqgO[u _E66ptK?KgamF4Ъ(2gxx1?`pax`MDp eߐݮbhYKf5  cmIE0Gˍ.%`lsrp2YeEpEqd9qW4lU@0B9eGR[&vxV0/z2;+#iG/_|z]wK7_*//뭷_Qӧ	׬l4]]]t]k30eIW$>'b3=
+-MޫA6ٗ͜-cF"S^@x^ܟRgJ0Z:F	0A\) >	DK]UQ{!8{+haټ:
+ǟ<R*\._1(N%0u6vZYРYϿ\Rģ4+22No׊n%A{V֋kmBaK[t.
+6#ń6%v.i5K5-#Lob2u)<P3Dsc&4ɏakhneIi)W9'
++{|4~2,IgȪU7{qBxW9-obdUw^F|?6l)spaPsk؅@ԣ@6J7ƺ4Z _-ԾsB[2xQ+HNl+BWp	phK[&kK.+-VhxO{7Si0<p/ExSqzh<5Y#gD,.\??f"ZN/^y|;OESI[XRe^@^~2b+].D,vqVqrBMN{0vӼ͓^؞6~5=k\e*<,\r4onN nagmǌqe̟qjv?@?߿?9p#rp첇= Icmp*AV}g%`I`_~̓C˓.\dZ:8^͵	NWW8l\޴4Rv#\ʥڽ
+WwH9ŧwys#/2k`=ˋ4Hɭ6zBwz0'9\+s("pǠv
+4Ssl1_hra,H&y\W][x'a9<-jt <";-(.K;cNj~4;zfUڱGXE1\#_zlʫO1>ΉX(O)Č­u͊*\j.}&m䜿>YW|Z췺Q3S
+롅9쬇쭛5ۓH5 'a>:!`+\ؑz֞.\PVIy`Q/kt,B֝?|+Z!`wb97/IwKRŻe7Kt_< /asJɳ6}_(D:xGSyĪӎrٙxN`Tে/ϋbNalh=Dϲi	4lT;u`uOȶ}vPjmߐoĞrP`	)]h+=+(l̓^ّw|F3EOa0S9 c𯩅?ũq;/(3$ѡ3#q悘'&4|ӪgFVxVݴB~D.J-SyԓHr]?~#K_}խ[~}]Ó;VYhX,k`-䮒[YBHǶӡj3oMz<ֲJHL;	6/I|P{typdQNrV*e% UhrLi^XUt7\vZ='b[!s8ώ~:쌥m!<#^l2A[ԭ6
+WMt`= %E[_gb-s\>P^oeY"t7&֛6 ^cVxD`d<eIXEѿc\laU0k*k)xXg˰7^.\󋙵I{!#L'1Q<*tx[q6h$54AzE*Wɀ8>i<4Uʲ6;+bWq*ٓ#"\.g5Nx7=()Dh[ixTDa4$ŗYv.SPW;	ֿ^a۬zIO,nBqt 5}=FY?8كܗcp#1Qr58p;Ho4hZ$%^ˌpyO}quzs@O$T׊
+bF[I/EqL_A!o J\,$|;x7oA-HK$U}&CLПKj1{rM}ix=iKS/UzN	[!yYMѾ
+۝~όWhꓚAQ?5l5-
+lğ&F	My(`ƍkU
+C̽Lׅz*RԋйBeF`XŹg5Wϡb{"[t|FiH)e	Oqᓄ.E PɧA"SARpvRe宷 *$W+zZù	bO67)Al3qZ{ě9bK]*[mFY(g[j.dQ^f/`9g{e CC/ǨP7F>^4ħܨb/%̢G]~m2?f^=gN}
+zS$;wjӸfwOh1|$5[7Ja}?;*]7 7̍*6O6`	 &O7ڪa/
+R![clzRBN@{WdGpW*D`߽*^XdZkR8-tk9ޱ
+` (	BWJT+LM~<Rǧ#*7TညO.&.Ps'uJWi-{O7",-}¼_9_OȝoGPf*OUpToєM-8lz3yѓfE5ĝ*] 싐il	rjfLvj؋B5>؝D0MHC|̉X@#Y7nЗS8ဴCú	]ކ/=uj#
+Z:^w8s"$lc"x®n awׯ/**b{Ν?K *,,\n]nڴi@tO:_ÓW3D|֥5v,>8cbq,A[Z1_^4>I➀/l]5
+rEV{)nbJ1U.905db`jJppPz-
+O^%84^i]wyC#vfy/h/V]6\w|,zM1w_WiiG׈eʃUXk,+-9R`"<tS<xt>=:φEPYaEٟ:$VL",Iׁ)[X<T쫚
+io=9:TYTΎ3R9#:abGf0G'ҹ$\57 tr<(CsB\-WR"/(êin3]˂
++GvGU>EsvᏪeU- ԰g&c82xh4muUrjVaHK\UrI+x(] a*\TRi:n
+m>-bJg{9NE_\cP[~,?X5*MGW ,rrRhivTaKTNwL!"obT0ITy|2t}<č8mߓ Ԗ?yq-ƀ8.8ω{X^9E\qSix4]ɼ/-ĵ)y\z
+ 8']DӼ-=f!c/t1LҥK}ըQRSS_`?0TiĈ			}3f̄|~TWվ\QV-
+p1nuYM\K8'yV+rFl3pYxz>z@%1b+RNp&tf" \uQK-<WI":߾bhRͱ"vfMzz(t@ C4<㠇{,>؜G1| ӹS$
+C`xC/%*ҠeP;M(+d	m$yx05`|8z҄| ~kBa0AbL)}'+Ho@nSq%"v@C0b8ŷ8>8 ~ߠǉ.9-G^[6U,ƻCn6±{ܶT^m
+c6O
+
+ѭ
+%[,k4˴ևvPCG+ì)Wumd ]EF+
+$c.v.шԥ
+vXj}>;E_g10t/}E|MmP]}I|EídMCjқeFyh /JYgY-@pnTF@+>8DYd!uƾLj=Z`UcUkUr@`0J #sf'h^Ԟgh. yS kqa3#k8)4txv,,'1c'6.}%*-=3N%EÙb$Scp/3~7PA,tNX	]muN}3"k3cAX`$#Yu'Ό4֣&o7.q͵IߚOnÿ^z|a/uyff
+
+h|:j%A1sK,+3zEXLgI(9ҎtZ@A#WB`7/582Jڦh3gg[7Ό䦏DUM^؅.52l?܈0YSG ث"!Ԥgda9EYeIsPKiRY3Q'5ySUdC/#(b"K1_60M~k
+r65Y0Ԧp9&6ci1z4=Fx^_q .sܯO(f-=i$; k!ԉnvɔ5B%LYrCLzNj|&PIJ%7.ʹyWmMGr)7_@VS
+U싂 p*bi_N5| |oGңBs<ة@qV9Zkǡx\鞂B<Sph0[RxwEx3>d0>Zp+{J:hT&po͂7b;6ݬ6p{`;P{ȓ~[ZRT$`f}
+t*3$!-I]ՙ~-p(XrZRc1>聾ɵXw
+~.6 d}e%vUx|<J!.^{u0O1AU 鹹Qy`,}+SK ?v|&#PS%&ZEWyDU=[/&.x^	_,3u^SU"T6kk Hu)iZ5{fWsd,j(.sXR4v[:Զbq&IyE]CYH5e8n{_m`I}GM[NdAc^jE%^Yxt|\^Fij؊31Y؍af`1޺JI`٧r.	W%n|`	́{8TpyeX3lTMFFu}ÓL;łۭ^!K|`.
+3kx<C͏@d]ڇXyήUxjb3$v	Ԃz^Boݟ=zgLSfkT>;Z {{IC`^0,*s_ٕl偿RøE$qrp8MsH$%wMq'fx*cҡ(a 6#Os*Wh?:tHql U:;*jzX]R`ZpB<<^4M0ʹ)'5yBvO{V%6⓱KҧIsU[CkfD,r4BZ9\OC l6'!U;6rz3aL/sp),ʹNgJkv]`T~ms>Ms:vQqcŕ-05t=gyxfSs@iA=	g9 VtN1,BsIEOA,'e(o+TuY,xX*h2\?cԠkIxTfb96%Wlv/\UC-;ѵl*Z-hnJh+/Msa^^G	˧XP.:yD^Gh.f$?|*ʒ.e-	`79#&}0P<C,xB}牍&+9\5A%1jZ&p\y҅/fˌ@|L3i-bՋ$Uim]dFSoꈬu6{CS84:I\mD7e^H,a{vł9-Y$`fIa) +	[A^pTXpy8,:Yhe/T{ӸOJ R}DKa]ӒC­M_]g@Eg =Y%aolG]!(nTd	S bڋ,1Y)'˻'&oMD7|NݘF	8A!6l{ݣc9eeUWXYgCȵVM;ϋG{,!_PVꍓUZnT-Lh,o޾oYrL8d٢5}q,jJ? z΃QaYfO>%
+mذ{+Wu0;gOJ`_t^+IXB^j3`UiXƟ$1UiGC=$UXt<JJ$	;	U*S:bHaUi⵮/>dۓeXWK)(fq\,((.+ewĵUv] !I=_Tk`Ӹu UU e.Rrw=βgׅ-fZRZ6ripmF
+WC1-ë<06^?˪Nk%z`&5ِk>kf2^
+?`[N+ ɵ	sYΏmnUd̓{LgP.3f-ώO2k</	y)IMhNA;%#xq ׫%zlkB 
+*/Qᒠn@HxU/B
+dwkGRSҸ+TP3X앃sME[tP^B&ɲy\qޛupvV]$lP@3~wtǈ32psmfDǟYőMhoo9wJK^Ug죝Њ@'B6J{Gu[3"Bóf6GJDvz-r}| ~
+z$\i]?<;z?phc%%m"1Oxq,El7 E1J&~mpK8n@#۷F_݃+~Æ;tp1bرCݻw#""x/_*s9JݳJk40/ Zږ-֠=#-'֤7KvؿAE%Z'bbTxjpȍ*ⰞKߗaJG[S(?8mR(pEJ䞞8]CHW=PtU	<e
+(y%zO2#naBr/MSaA_Z/v)|Z@@YQ^'B%	7T7H5W!66>TwSf(.035y!g$7)/z\L"Li]2ˡ<A_%`ba[ʆVlZ	eAF[XibH*jU+/zjN"N-c2*,mne꣝.KU~b9$yb.=%m	S,yk|A%un'żPZ5@V+.3h6P^?3-"){\e/x;X%߱zvAXms\TߪrpU'*Pc@f=˃x5I܃smz}wj^xD&^gBKktbfD>z[ ѧ_i	V%\u:.^rUڵ,=7DIJ3&dj(n -"HX򛴓YP]2.3(W.63vl-V%ر9dN|aYEC,+Rl-K%~T;U \[7_eLYQViӁnQa?7om/?UV;vv{_/xޮGb )VD1Д[ɼý}8nӛ$Ӷ}^H*[2eWxMWYcYM9B4[QSjښkLq.ؤ} O\$ر̂\%	׳4~ӎKzJW'v&Z eY'-qi\iOra:tJx1V*S{=srZ>N>Nxˀ@o}1g<(n>Č:<&gr1o2x&Ȉ^c׾j̓2d͎VXB)H&d԰_3^b.ˮjEn|G+ټd`.s[](Aog	\w"Gz]Jժk#T=y WrW_X`
+.7Ծ6`Ҭx$PY(0[~2ZC{Wh36ghȯJ3Ӑ2B!&b9Dr1G`tΐ? (3ypq/kZ/I9VBB"69Uz'm/zեIʣfJ3ܪ#yя̎Ivr̴(xWԵgqB{ڌ7{>0VZp^-]IVn~#MEM.i*OM!3"gEVԧ?frR6j9t@VĻ(IqEUg	z"Tx6,Պ]+ـ'ýnDʹvic̒h8)(I+lDTU0%dSm*v:",HY⥀0Y25OVBO<}lW}XNlg/k=׳;$ܴgtVsJ3Sp%NolUqXV|αLz9Me{BUjƩ?湕%^I`F|4!дOSYvVZʖexYa,)5+7b=ׂӎl%]$,NEA #|j¦۝3-|(ѡҖT[\jAI;Q.V^\:XQ8`%nM Ŀ1c8䰗}9d?	*x/&,1}#ł}#,:Xjco^דt=՝tVytF%!`IT.X.yA=}~}bVᶀ2ԧ\Yoi.UyI&P4 s%l K΀&K0H7C*ȝ`;C+Wε]gRTG#Ѻʓz[]yKoa MMe@U68~U}Dm4xpif@Mݚh/36 
+-o|U"N{ DaR20ep}nႹl,ƄXAp<<vɍ5ˌCrڌd;31Uui<9qB==TKz5pEqvO:پ}_ܤIy=ztZZZFw[?zDO{ċvC-\̚tSVr"&#Ls&^3OEܠb1s`SUǁJhuzZ$8Eǁara`8M><"ZG@y=\z<ȋ6#<f嵼%lC>f=ױu&^۾
+:| F%JJ/c{p(Zk	,8.!xKGFKupӛq<dvCJb8B%	7Whs#y!o>?s!p ңY.+c/"	 ,os]yG{Ȍz1%= Sf5^D,H9\Zl =0vgb<̒+9~~e>s)h{Yʸw4L<Y80Q˗6=nզOgl1P`Uo/ͮo"Щ0VO-.`t6^䭊Uᤞ#Z1Z\L9§-]kgpG`=|8̎|{_Ľ@WV)ӂЋx&r5QÓfaTJmWcz*Vc/^S}֡6)0ŉ"үȶ)ã/}ٿ^>[^/Ks8404E_cv6Ce Ӂq)lfӅxpUh9k3cprFlXA#+hr,peV^L^K!,s:mNGotOL(43"Xxaہk2}gϞ۹~ϵ^?g}7{O˫`ڵݺu;]gi>K-O:ϋz~A#?/z
+6PR
+9cK{%]
+b!߸.+T;x-'] k-"NkC'[ƣ	"GdT~,oMCJ\J =)?\L9Yt%b8>4icl`x-ДeͅmY3W$<VۋDt]f@tŎZU;,?gw?U/p9<Kj2RMn2Cmf0󃵙O52eN܃,P3CwEO=;!HbIpK)ulŘ])pg~_Z)GS<z lElo=x(U4aWY>OK}/\oy,xG>o|$Ė;;Ny%3RKLUӾʏ&xZ/z
+/R)Ohr@$$2&1@){zU6Է\ H"+tx/ܖk
+6e{EfWra%x4|Xy3\ނ^h$#TˌժPIm^	ty]A}ߛ^E,Jj4PʔSܨi+Ɯp`kkD,鿴gO."t 	4"k3mH.=K[!EqN^ Xc[,j뜨#nNʣ/Ypm EJ̢ѪDDϟߧO͛va+,,줓Nׯ߫۝noBBB~y_hӃ?:YK꤇(@Gͅy3^M&ro8p\p=a*SOB ,SQ@1QbuYt	7w`zX7x~U=⾄*03k22`C)YTL#γo߲˥mWͅV#U'lj僙+.IOLgiܶ^Oima>'M
+(?[TxISW]A![T5-_I4#ïH͍4y/0lE^d.Õ3;5)]ndoc'԰Vo6_8s=l`sP3%< o/Z6X<F%_|\7 C`RU41#
+3͈m1߫6\0M)'|.BSIĨzn1@aOo>MԞpL6XwPAKg̮r| o[*
+)u,ȶYācD UT@.%9se1m-tq<wy<I<J/2i "/xu܆g}jАpN0ZCpXwiEl0+VK+u;o@03/zbr!=R}iu\<]j|IN_y49Z 8'A#msMN~΋s_ׂ@Lhlgix*ak[]D=j8iyԑM a׃.To֬ٝwޙp+V׏7+ڵ5k~.}~޽{srrbccnsu~i&ޔ4_Rfxt!<zNUQ*&=6<'lЙx(t&Lb1OIr
+rVT1W2x8e[$@PUW	%]l
+D Z%\9%TQf,,019wrM4O`DZ6ϻ2~Hjd0^EJ;PA5<q Zy[ k<D
+F1Mx2b[x<X~.p0G<kDFC"3*1xmlF=>clOnhq2EfXNv\`,/Wb]%N/UѮ0e.3砪m)a@Ho7t5ӛf׋\lj	-ՠA妍.gaV	AdzSSKJUlg	; 2XIu_*.߱*8T(MPhܲ=<p_,q1\ .Ts"!JXwyr 0c=ڕy>lޣ#y6ZOr
+8LT/MӲC-9e+Y,93ȗ3"+ǳ.?f'Mkl-p{W\J67<y茈z`F۶jO
+gUq42u|qmRxL=	BKMlwV\'rR$ܨ(gh뷲s(Y(Y ۳gϕ+WZ@o߾ٱcGIIɣ>nذa˖-ŉ@K/Gz衇ŭZǟJKOSV{eIt[lK6'Y"nƣγi8Ho4PI$iHmeXZX6A/rXN0\i؜l☦1r]P;1K25h/]rČ/P Ӕ%<b^1 6}|,&)m4,Zb/1vɑ2Oʂe+QR0lT0W0+#'mfEV؜uc?WP(ॊ`LX=Xdy>>R%&Sy	]l`1!27dEX}c*B	۰М!cQ#_̉X֩,~ciN3hﰼƃmq VޚgX*yznjE*ST[ne{IoԜuZ;pK8nނ6#X|oPSՖ<Xg:lG ($Ut`q5U+8QUJ_={*۷"}*yN-b?Zę'Ic'VȕτJk2Dh.@ӤEOJQ bayѓ7[{Aznh@|{5m\\2O^q:Y]t>&JJc퓳jb(6~8m"4=-/7]ٳ"DoCkVxxuM}˸`Qw%G]I4sz68@a~!U/rRRqN>}hѢSO=~?99#Z!X @cSd,' 3K.Rpe"IЅ}t2īT)Kk y
+8JUouz+_h/zxsף|)Rf;cV[nq>%XBqR۰Xza}F=٬.3{]EدgNyj<lGj D-٧븤uxf$xxb!cQ^-*h3宣5љŻ>gc,cwEu.ov6iM,bjiQW3\b]7Y9Ax%FldeѶLaޱo^7
+-\Kec 6嘪=x	.\i<m@8nB|"z@/+dh(⒐P+Y9VIgZᝊRYW '+_GW֮=Cr겙Ee`#")ǌ<b[Ѻh\-־)Uv{>/:\&tJ8jCۤ*+@C.-vGZ/AwxS<UŝZp0/z6ΛGAQq=[]]/jˇvY&[4j6U ,!&897CX(M~5mT2ڰBE8`R\˷}/Ԝ9=)J;cBP,M[S8&\o3,^ZG'r6='34$ARmSBMعty{x7~sC/y6mhϞ=K#FX'OT pJG(!Fe(h.xJ~uX[%?fp2[cl(kd͉{-MlA22Ylok3cxV\~뺣Zr1A';si995ؤUvq?[m٩/qlTnYɤ0:8G
+Yv(>9+26o%~"a<wafF3f$+(7Gs\.1=Tx9) l6+NS+0rx&#`<]ތzlr0e0bj?ԫb]m+PՋ'[&Ȝ:f! ^&kʮ}	5`0`ZiTt>!m<aak .{ʒ1rƳpN!T>J
+V8Zɧ9Ϫ&JSJ8?o@5rWwt6.kkY݄Rn|,kE9K~h5W 	}mDW9tUQ.v4(rv7ӂV*i0h;RW`yI	kmby*2VpH7ωX0 ykiU?@eIa 8]T6
+h3ޠI}Dsh!KNYE{?Zv(;h9 ZMF^p%^s!ƋO;
+olIj?ɷxiUEO;%ٍ[sL=u+>0> :3WncK6q(s,ȉX<=|);w>h (s5x:V"0,,lӦM?vaÆF/iٲR員&*]CA4i]1WMC#qp`6:Oŭ llGIamy1S]ұ,2CJkMGEIojk7eI\ vώ	 g=	^-hˀN?	s.V@0-U p\-̈Kp*t63Nq\?Tuگ<QP[=q,xJ> 6aϮeQvOs^TX y`_RB+̖W"ʯp$fBX8&vI*zn<*/^
+F<창 buR0]{a%Af-VrMe;d늙3S=|Nya}!_a ,}VT NۄՌ
++?}a{B4̵ai$ G_@{+OɃqƺ(p&=wʻy*	k5gLO<7aKZŗUh;`Ι׳ j 
+ ^}GÅKɇv		.(6`4k^klJ%;"W\%@-+r0\`.Lң~fD˴72<m*u!5fMB;4dKwr*@] a_ `Τ-  5*zt˘5[Y
+P:]̆t:/}8s¹&=6fY?[n8߻ fnl)[1ҟ\lsñOX❎za(vg# .;`)pIII~Gy駷knѢE.<.?@;-,,-.=znzҥ7n|衇@k/Q[[nmڴi_?~~^i4#k `B`&,`(,,XzO5JBZ&op$^nUc}P6I7qZ#4i,vEi?Vkl8TfVA9/	1Y?2n Ȕq3#kE$N`zFJNskfW=x-̳ru8䬆lv&?A.:Mujp+0C^#fEӝy<Y<ysnTNh6@{O.U1F5,8*Adv5݇L
+ݯ^I"GZ;F<$2O3t!/E`<w--Iƫ|CH
+|*{2x.C0t[254R#NoId	^xYK^i*d'pO*ڰ!Xz-G߹KlUM,mU}wҤBl/@Ůnr[\\G	02W2X44_Y`MF`ތaK%	7ʦ?C f@KT{=ՒG5ƣ!6⹮xP4E޵MAgaǀQ9K8)c`Fy*;VCIs*M-/
+Lm՚}[2г&=c`ɰdd PIM.Cs5wЧ;KCR{\^Z}% 8NC`ph'x&95=-샮's}9v>7l|ٿŹlwmtyԨQ,Ss7@<߫
+qwI",fF;f$S46K+D'2@cr2>Ὂcbf*; 㠴+Bll`` xr&K97vfq0~ZU>lʔS ,+D碯\ea؀r}"ɽ<{Nk	N1qtpuAdzzpV)Vu͘cC@;7z江I@nmƛ2|\nғp^p1;PaT۰~W$5g<Tۋk !!_p;L}6h)7eqEd˽p&APBS?xUP4R 	D,Xgѱ86DAQ,` D@)ҤI	tP( EzGiRB0|<y{޲^kW>wcPtEƌ	Ì-."L5Niu<:/5^n2yCD1;KRNt*Gx'|\S]00}0\=gJ8岧*Uݷu5m!]]\Zϱ^`XjNy`$sV0G\BvMa=陉/.6,Mc)y-{mI$E"4Stp͠3Ow+QJAUtؽ(.}bzhC+;=N=0Xw
+ң\2+-~AAz)pc	).+-Cw}կŸ(^5:,"w >e:#o8%&f6IN /pWNn_Pӄ]O?9 .]\pe||Q722緋/ްaekp>_%5z",yF3%/1x@l'
+aΔT-#)7O2^)B2CzaiG|6|N;rJޒڢUx+M.gMRā+9SVMH@d}Z41DrZ[N|y8^ƜFIQFY*kEh؅Oa9 WuH4M
+ar,X`MS[] Qo9uYC_/ + fҸaVfVu;8iUhZ?gՈGB	sNZC_S&l_؃(V+?<J;%J01D4i{V{˾˯JgHKBh"C {'ڌ1L &	gɹƶpm-Aڊ^^?52U!w']"n5ͨB6ji`
+|̻.xyd^Swb6;;Fq[)mu<zgc*bՒW0;ZKa1}*gK/=6<-hN=fcb^g6Cs onyr.N[C۽lq5G^t~e|kG@g@{#,*F&iU{U+0zO=R*A3QSJʯ,~MY[Ԑ	o3D^:ȩ"H6:&[Mkrgfd73*]t{͙)q˗6ݩm6s(WQQgΜ{yݳ]`MAz$/j忈3?sD񿰍xs&~O~PcI	Qwh6@sbt;BgynV ΍bg96*-CWC$3-Yz.JKp'ЃDx_xK/Qb"('v0@?3Sf%7s(󗭰H>YCA@/̶Š&'qbA"K-H"h lc|T;uZqPgrkM'Nq9Y(Le|.40=N|U.^a
+) v8QR<c(S^M={Yq<LcQӌ"$wDB|D3Ɣ4
+3@\hrl*/4߉K[AG}G4ބ@{jDՙMQ]F7@>d.Ia:T KKꏃ`4;p~5aŐkNmyW}O&Dh\G̠--H/Iu|9Y:^΁J^!r\[ 4ȏXjG^8PˠUjR%ʂֻdćb`< -,ǪPK#$;-4m>CG%k\0l8LSQ_4=Uh]MDMUn	q`=uN
+ԑCp,w7\↯rKkIZO	C[[B%+j*چ!h5gYeGy^8ofڵMq-fVB0"ۀ/M,r`$eʙ7ByM<F8lIibtWqh\V܀pf'=icɜm[1#Ҁbbn{thNWJ]x"ik!x<$i'g\Kߝ*ֺOFqx}{Mj:ifv%<Br1iQo(^5xRD'0TFHsi-3C@$jn9@.IM|oRApp\ׇlRKX7#oE짃>T]0O`+:3Kx"<!l̐Sv)noYN%rmidT<!Yr3#3`4E3(1(Uo	۴а
+ƃ4r,^3zgQE@0Ɩ:tqe(|Eloua2a/y^r\iWWCޛ¼Pi&%szK-.6 U슾^UeיMvT1$[ū?gTVJvjQ_(.NM/Hi]A|D&Snd)u,vxf.?BikCeM͊;O3'1-oA5>d=[]eH35S(#1芰Lj&X}%|`F,`
+^=bn>>A95,їEeƏVa})xBHFyl	b !nx語< Y>p36>:En4a4aKh_u7o>?W?/d@l/}͞lՓ|9хGzen5啘+T2?ÀpA㻊2[үuՖu>Aqm8y^O[PyHaqQz6XM](=cXtL{?+P#6K/2<1'{-J	0ncp6t]2`.M'Uv);]	P<
+KTqm{OS34
+D0mt@V6b]pr	y3E5ofLAǔ#ݧMxryiЖk.5\[[^sy*7`3[MpBnLwAJ&Vh3q&}Ķº
+ōMsWKCyLj#JS.Qr^QTx5+mZ9GSpM(/o4Ck'XTSUٳ9φ;z0jh7ejaʎU~Ǌ!b&1hr~Nw6@^#!:+s/:yTܞ2)7ywF3NQC4`	)f0J=6 C,3Xe_!J?SI~;a< 2(EuD%ì	w!$nl-RtN$z9
+H9=cAz$&Зr,U09Hpv_@0$Ղ }0٣X/NXDQg`\g;}PWGxzo_J*_d~ၣƸ Pz@XASd (=@9IO@gT(gBbEUv
+)6lfi:b*TE`[+UE2Z+>Qg)3K<Cмc(&ZފRMiFgsɍ	F9!RJSV $[A#
+~bkZl5qtceѼ48M.a!1r,J|k)܅GàhvTW 4]|Xe$,J|246ނt|}f3n[KZRD܀&-AeTS{)>LyZ]p\"ٰ)ؓQv,%ԍ7z$ch5yᄘ|N͠0ЫS0½,.4^~hčZnK0,=ݩk0.D-*\.f~6nrE)W1(sZi,t]0^bԖkl6C<BUHYx|Vn_0-}/w0mI⌖JXZ̍dƈe>+p1tR}"Sevl3H``3:K[/Ϡm9	mTx͹IV
+,ѣ%U8MRv8~D42ӈAdRy[30J%0ـirPQ\oAO:WBie{vp|mzii['"47}N3brk#rG_(躩-XEGUZB3c\2}&NLvgstS[oիjժk>Ńǻ
+-I{\KqHֿ<,MR8h
+^Z͊tX-0K+g.͞B"T(<oxg_Z,fH~͸Hwz}O[
+FeRf᢮:Y(~] (?;bԷвD	MLi/0x| M J}=>?MC9V8VR7_i)DMm1^-a*mfpǸOVK<b`Φ5snźA h/Rk5]'!B{Oz-#v~BY
+Le'
+;#vduEM-7\gUxqY/z+Myt\CBs'vDexv8̌MY!M4y=NnKaU87V]f>_]KM~)R'Vs^a/yi"*t$)	ppj‪j_OMӏ`rp̳T?zrx_a1'tpGVrm܌qm4?-q;'V;ٔYneNr57f87LܜI`dJ$oȌAg}dk;u*C}#aH\JZVoɍ>-¨jCE,:رO`OWOP1P/lͳn	[,)2N[qۨܔ? 15+Ub4+bǑSxsq%PM27CEV`1P}wbg|Lpq_APD;};wg>w[Wŋs +<G^>й~n/b;\wcKKB0ӑޔm&o@+/``2SF_f* `!b _Ș6F=-Q4,'I]djs-Eg+!+j*kڬWthf`{k":,]b'p*KԅPΜ{Z٩`	12e-MAc S,·i"jF6}-:j	aJ^x=cKlF"<8ʅT*81/2.?wYAOږgP[3Vb>3g>v4E`6>o3򕆢%#v7ÞF{N*+Cf*~`7#/LwxEb<3rue$J7TЗ?)aA˱[?%l{Qnǋq1Sf,ʸ۠WQ}#W(:GЛ`ur+H/E`7o;?v
+,&
+%gJA:O/r!:3EPkl"JjTjȩL2nzsSt5juNe+	oIg?li
+eF&oc{K/Xck+|2> W4P	*[gbGo T=Q]W@R'6[<nq3NE蔛aݭe)&rVp_Ezr0f[yF-W.ʪ,8kV@ACs5 CxRk'ddM5R(iO1>F3 d_oף}&sssoӧ>|K,VZ޽uc/z
+qalNيBBū?Pxg!ǉ/kR-ӡ#(LdehFF[zB}ɲi]Ԝ19,-QV{qʳPU+^
+ore4MHrBi=)E"4	ȂqG7;N7nyP(|6m##7NS'^xtJ 6h]o
+Cŏy  EaGcc`ڻ¢B5gU@.<?Z?qڤ1֮hmާxgZy xpc=*b8yVlVp&e㵈m/+ڗ;U`#.Ww6ü[.ڐH
+b2qZ iR(ctTs	, UÀS'>%ho++`Є7qWR8PrcHK3xA4y=[Ncg?AY[Nv3pdFDʋql؅?܇FSU>1^9.퉳Ɲ;Hh*`4*;5J3KKnd؈F܋14h6Ղl
+%ff=Esrzo3P41±5~ekES:$'--K9R4ucq@!PF^rvc8öUIlEa>gU+^Y~7,' h>pQǠ✚k"kA~b#lEy*ngc8 /7(|EiZeo&:ΙVTi޼ysʕ+\sMlls:Y=%fnaFjTzu<2 qB͙*FqPkYd=[PɞQ35i{E
+8dڄldAlg=SKYA"tE)l{'Jmqڛtcۑۜgm1<栵ztkcz Y]J(:Yzr3gT8SjRǁh(4G`XHhk>`s{-&^<j?<];Sc-vPlVcob)X&,c/7}h>9L#76PZ@'@}:la`-8˯i.}%J, n@k<ؕ'}1Xp޼dbA`Dw`!<HcC"tv,k1t-m6DƯ>6Ã3~;QkIW9Z{3xScݫėqE~Gw	z$RU[Rp\nٵ6M]Be21m5ai'Q*w|X v#Cʾ?]xjY8NxF-OWHa6g)={65Ykk%ɃR}ҧeȉˌ T)]A+/gF˲Ј`8i|RKw(6	1po+t5AGv~/	yȳn
+ZH),Fj,ܵ0GK5i8;DP{p||12>*mUN1B/TuÏVr}յnF5ƿG+5G7W]]<믿YsMԮ]ݻT.%סV;[oWR7,'O)ՖV[hGGVkmJGNxv=	fYI[*ǹf[W$=TSo'9 2Y[	'ExX7j:eH qr	M9ȣDl/FBx15{m[gd1mΟ|aM8*V\N[bUxMoCNW
+5Th+كԎ)Ыf_]޵(Z7|P]>E`kG-p,mle0<WV+1[[`Os 7幭.8.C	ze;:y>ſ>Prp68!ujet/55%Z@:& 0`/Y^} =y'ʏh`l-E%j^@W
+ixխ>ue  .64?Yv*'ՙ^TKbyF S.KUq_1NF$Vj@̨}
+|2
+]DS{!'k^jIXi1bw[U^F
+>JS[tʙ}M#0;}v㹆#St'#IF (i93j}N~np7R刧TDNnЀ3`!m4K(/*eQ1/{b?*gt~WiDpt^r:
+Wέxԡ%CHTLUΟB&:IΙ>W_}ipr=px?Wjj)NǏx[o\,C)#NڀjlA|hUX\őfS$	Ep=-jhK3)W6;	1ྕ%ڏ .]4kx|.TP :M('woZ*7e?⦊۹%Effs0jhX<>f<-OXţ߂\EAǇh`4Y*Qu>y^<>>#HrQ.t)<ʜkU~2mMIH x)o`=OYpi(`%QȞZ,`?`9fLGzj:c~UkKntۭ5n	 ~ZJV:5Sfr;&ʻZ+*8O3526z"1f}c]:S!ˋq6I=A:>RE+gLYR
+_NyfXo)g7˵ra X`1UyM=up0`,YqVmCNQl+@C3h,=WxTL~^e[n*mwZGR얆F#51F*ՠ7=x|5tߌTd]4SylǨ;oyeOs"MܭŗYWFuT+BBD?j-ž}2HE`19vA;VI4rΚt)9LŠP95+C:;)DwQƩ`ŋ׬YsϞ=*UԺu}'Y|zhie 26$rWb2Ǭmi1U<YlH2/ڟa>	!rg9iq^fokѲmj1o9sGRM*o3)b2K"?(㿲oBqe/=l2SGR$r=CpCS<Lk
+/87jZfth (:$柣)_of
+M?Hz9wSߘ?~qsG4w&xX&̶B
+Fqh^:^njИոlsK
+`:(̵8g`	`w`-/Z634OMYoI>Vھr,ܫahAg>52Om{Ŏʒxz}!^,*REjF4kTqyvr? hb~tI,+)eRU_O+bI}^%r/tԘ
+&::妡e]r(2g=2*,fs[~_& ʸذ\SFnj>#cv$w4	v!gpon!&Vȝ܉DM@FUz蟬P1nlBK{]gmyQ5}^1NRFA^~[Y8W(R:)PT/-P)!4q8"tB=f"Ih|Pz2MxY/sb\_'LƝwٴi\|ʋ9]SPWI(FYw>͂˩LZ4Y.^e﵈
+V}UGm7@N\{uit}"fͺ۷" @zg3}tND̈́Ee7Ԣ%l;xIϗ)nD[	<OOPNZ֊ pa%<
+>;YU]ȢXQX_Wі9~<WwOę}&fNtמ+˹/dx=xuOFS_,LgysΧCyOriBhaƜQĞwK;3Mz2xK7"_tV=ԇDf)<%<'6^Q躦Mz4WE$_k%OJ5>G)7[L`	o,OVJ8O&edbNfiIO$?zE%'5"鹜ry|:`AЀVV>8[[jS=Dȩ>Q(e&,M3V*	gia;SSEd	3gbOՍIga11/CzeyT#^+ay5:ג CAOwk>0T].5\OUi= KdI[0XFeZZUje]eruSǾNjKG-Xy04HRkY57*L,]b`56#q]6}ɨAgD4aw¥g>w{ѳrקO6ۄ׵sdp8/n:I>RUM,&6W6Ge0(V$E/MpaNl=ƴqgџPGϼ a!9McBmwt짢aCg{Gu܉-A{lj.'GhRK}V\Oʡa,&r3 BF$t<OFM(2ߗ-bt;U뤥÷ZYS?6Lu=[NZc^6	W|/Ҽ<[A/^V>_3L [9	,.m`j`KJaPTk`+:	_~O5luÉK~z9Xa
+y*)P62lT7Snyp;^]Z@UvFJ6AR˔JB(RUD)Uͩwy.
+zDj1l4:{h`%^/ÁEN:-8@_'ֵ߄IO:#Fv7:~I~w	  59wy}cF8"[D':E*"cV+8xዹM55tHp<{ x`,wM̌^/ lh|wrl㐂ms8\Smicuŏ:{ϙ/ڮak[Iʗ¼%c/
+ܛ0fF{R^CmPW3buk
+>"J.UTERu`Y~/"t7ۗ r
+#8o v/Ν;رuɒ%5zÇ/_o߾yѳXsLGz&HYbXD=Yf+fEI<Z#Chi*)O=c^	]˯sZOnӒj51~(Ԭ._TɃ.FGjDIj:Enk)WAQ#|y@4H$s{=L^]yUlR!(p>6	ØPJpi>ges p.)<Hks[2مt|Uڇ,y3Z/XTh$rZB0V<7LX/X[+a\Nql;ǿo:iyp|19L!}ơfJzKRRgpz`vLm~S]l>5X0 'A~uZ}H^X]ERˊ jZj0WJ21>gE]xMrJ!8X1Yn)L7iF%1.ehc<sUAY=* |y9M0 &ƪ3$c  vGkǳTQDqnϯ
+yiBg\F54x]Tփ _ w.}<_ovcgZ@ν\fǞQ%悤?<#hPk0Tb')31QoMtZvlpF8iksZflqb{M"|* 'Fi®[g>whѢի_x7|sZnݱc5j\veeʔywuWaaٳs:=/z"0-7!@f*~2Nz@IkI-x^1aY˗ 4d$+oh7qW.gO2+&Bq<ܚyTHh]?xfЁ(͆LX
+xO$3R'j-nТ/H&zE\pBl]"hNwku7}<3N`>YnxKͥ^6Kr<i (;Lh,{ \^&o,J,-&IgPT6{싰kvH_ezE[/@YbmX}_L#-JsxwV<GP>z
+D
+k@I~40mx!i#=0>WecO9W'&58c`Ֆ}Z)4?;Nz󏩐h)wq?rJ7І{xm	suj}sSɗl<JC`TȒjˈVjiȝΘy!'1b'/b)>T,kD1şY՞(_$=C;Ι.4l*nsb`+>,𺪎ơZ^0;WյBN,wq-0Y^^4ʂUfo'zX80I~o/ hXD6 89'fG&J)cdЋ,+PmZa_#ɿP kƍO<q7\qrKݺuRTTtN{UPP#5q§w8J)=RINrTBjY!ž
+Eh3|L}9<BxvJ,CLbSHw{e'w;ZMO~R*nzߴ"* &(1"y̳p§Sɼ"Gv\G_+5cgH~'@s~,V 10ZEkC9ϭX2z+h|Ǉ6nr4"os{Zq0N'īlhI,̨|6`
+kK9N0W7hL((bHZ(&<{:܈fsLQ:sY鹞U-WhiS;Q\ʛ`UYs({DRM&dSU-ߢJ-9e
+NtG@!9Zcq~#˰kVԩEj9Q^г*UqDd$?>]IcT6:9-I+%ԧ5hKtlep2 ~$©=	Z MО3ت" S\Nc )Oa!oS19-H//bpfG6T\ic38lV|¶i/~413#-mB>4/@0OB?kvvy/E^CnUlR|j2y6ƁKVO<c!`յ&鏭eD%V?V K|݇'ַSLe%O_2ZuŀQ"jky3Q;	Nu&p)]z饟'7r/z}FVwoyoSnQ(*_ Tr1&9m%Zz[ƴ4H@(=f3q!TTr|-W}+(`>zKQrc
+rZ<*:8
+ȹ> (ζUM?8,	+)܈yj~1JZ/fXJ_Tf>t*>M[O9R/27"Po&ҧi`ӓa8l=÷.y\
+G,vQͺ	tookǻʨ0,}i:eCF(
+3I*/f8k4|ߘ t0G+ώ,Å7sKtaB2`Z^Mr#<<KpZZ%@mQT=hخVf:FREe^c\>x4V<zS!9߅>RF2xpǰ%e#Gy-Ni1VeϤ GOhΛ+5kvoϧ.CCܹSqzCUQܘh:F#Pmh[9E^/^Wשpp>93Z[pB^4guq`76bͭBk^	m {˞1D)*܃enUf,b/ `yiivNz
+;d,`NTL@-(Aq%4RV1,тkbrQDNR &ֶjRMp#Dصٺv.J߿y؍`?NN2P>W:rm[d[Fk53I|u`XBxV
+_<KQ(7Pw.^	(dl/2%Ch&!7*?>qb#) HvљJ/*NT5:J@7b*&ktA<7:⾆`-jMƝ'UYks}[:8pT@LORE>--Z+f圲OA|TYT
+p;[# ^p`aRf49RpXl9`s=_ͯ[fNĢ֗+˦)<-(7-(L&%iysF/.ZSꆶ|ILv *F<K,w?6.X}Sȥ}	lw@[[<O9#6r}NzkSƶ.jupϨ骞Ȉڼ1H!^U#6ߐS1Nty4	RU3Py(ڊ;ES T9Ǵ XBZXT!ZTtٛPIi͊{#BW_Eqd@ůz(ǃ{鼻p
+oZ]?5OɍZЦm]+;qiw7>/~.niksX9Zj{0ywm',waVIL獤hsX|q{gk!y<ݶ4Pɪb"Ñ]K)8Un]S:,;:';YA0Z#N?{^ժUwq^Y
+@&)jErbJN+-]JE1\QeyW YǼmD#<<X,<FϦ06}F35*VgR1#Hã)/z=c*Gp,ڝ*Ձ>"D
+[@$xe]!QLxU;Y-QMtv55=x7BH_ZL#zC}|y@z~N(=޼)	ǖu#lru~'y>Thӡ|~gk3ZlL}&|❟YҮ!t,sOoxr_!0iP\#J ȻRwii5=wwq*sS+^h_T&tsގ~LRNU 'Z{ɍYBR <#cTƫ)<>Νb|}#U3з"~E0%47
+ӊ@El[vG$9f}`38J"cSc[1u'2~&y
+[Ǟ)Eh礫2ngtN,o؂w_/vP9]}~xt*aw\hCB&vc>,;v0xShM}CXpymC}B;v:t|/96m 1#斀{gOyo"Thҝ2bYUMaO<S1}|e%JWg^QSsS~ODRrrѵ*'i®M>ov5kVlW_}SN]~W?H&S	[/r'"([WUShZurSg(jc^4-gzԏ:ky!8XڈW+ژ;])Y7?يw=eH%>jgLDNTN~íEcnk~;荈_kKA}ֲX<{n|Q"C<z$F^z*
+.T<KĨ/Q^#QZEL+<L7jŔxT;'!f|6< [?QLS+뜕Gp=ekSDEbr].%1%*Ū1x
+.clcbtpRb@]ύ϶n^F5BWq%М^{>U>zjby*㡃=J5'"$@73Arô}#O	Tj>cؒ*g9]/hG,_iIw#vE~
+ArR+`N"}[{WitQs➃X,vŘ&]27BUR̹Y[q<W1[|x[Y;k@g~*.>t(tpIx&~eGnln wSs9.3~dmyFCa_~E hxM8cѕԋ^~q.55'+?K	DXS}GY9W8P±E07c0ݳy~S((/r*(K>M:˽
+L$ U7$(P
+BՀ(dԳ_|/J/t28BU
+5M"8*EsoOLפӣ!3׾f!N@͵,Tf~WHC%4T+!#4:sK; U`M`^67TqZPD^͙)+(=WqczDUDkIzX
+Gdsx^Y	lxS^틕ΟZ?,v'Ӭj߾WH`P˿jZ"݆;V8tdV^%ɍ<Z-!~`Oz&5>NY%L8Q̺2{	=^x:kjs+`O龽_{'jvtJ Uv*ZU=a<WdC3\p>+o iG,gCy^aw'=aa-`iAV"r#ʦ枡
+kyrQcxf #a8Q7{]:z^ei=/ib5+WLk\p,_L;˧ d-?*\%ff+Y×w	%E׬~$&"w^*b+ Wwќ/;>ZՖv_|[|^70 R
+LQ.[u
+ӝXhG/^iSS&Rq骋@2h%".B}a3o=zY9N\ZS#F^D9&쎭x%;s'|_K˜NY<* =`bFS*ghgT~,fDRMmdVՌU:CqLxd??"NД+C6"'lVAX?Z4;캆&چwC;zV``[ОоflNhX38CWsZT/ "}
+9zJc@[Եgh`elp0r-*~zsBH OS^
+C)N*$f"tg;ZFm
+AD|1KjNh\b`!hs0izLݍ.QKyGRUY[
+,=Gɧ^L'1:gpG(z\,Xx
+l^=k.יK28ѳ<7ӟhTTؖ072pC>49{xM+VSK0#'62ݼī$1O9qE[}_󼍱9Ur'*ZJSudD]h43J?<9սDcp/(ٸɨ}nOX^MoqєkD^1W迿J
+::M;E9wM}#t%-*|EĦ]kPQdț{D/k9Nˮfn<a*P{dil|Z{T6h06]31n^R'bMҴ{`P>FyMKhzJ/0b4.ßS_M-wqge0h7$.(] ޒFF4ab54nxȐ!l?~믿yN|WW/«Ė=h4-0\j'CAfU \ 8nZZVmy[Iʦ	92'Hhc۔ zc>uX`WϨO4WStB$4uZfwQ]OPLx:ݮ v=փ~=>ͧbspJyQ@J:VD$1ҾJKcM6E<֚wX@'Nn`~.gx>$rQdlp* )y9CȌ͢
+v1.dЉJڅG_GҒVp-y[bѧ5z+MIz^	ǭ+v~xB[_yE\]CNTC/BƤ[8~;7;DiK5iVi.a'̡RkB_!Ů0rj	N+?)TK/F斩\줿w+-V'SUA伢x+/Bfdx*PYmv\Vzǩ3TdjܻxH%8X	7bKx*?W0QzyE!-3	W=Ԍ"]\
+pM*Mk|fh1ÖWֲ+2Tn'b81bvB~'IvϣGz7=B9Q[1IŵgN;:/P+GӰXV@0"? +jb>otN2Tuӆ3|SmӦM+W>n-22^Zx񹻨ڵk7n87_'GO""
+;H.zUVap*&֪=7}@l7[h{<%noC{/E+-\VpI*;J-moR69۳^W_Pѷ3r=?߇v6b ⌗\Ḹ~ 1KztqS*h(IjBxEQNqDR^Hz:Ob "k'{=#Y&:޳xL=!7 (,8E,o}9X8u_1g }$,>YP>A͏68>Ka$k1rqH`W-j(d	y+f>mf3l7!thii#leymY|!e?ьԚw˲iŋM[.>KT$,
+Ģy|f{!.Vyt@p6بέy"9LE3+xVNbjc<0;O(>%q2Y<U7+jˆO۵(.`dciػ8 W!Z{²1B1,o.(εYkRz_4@k˻kpTXTM2'7B
+JC]`]'z
+CR7e'?T*d #B,W4֑(ş^9 )r͐Pth#aS=n8zvRz&b^ڶmz뭛7o>w;裏||8/Х Z.ۣS2~'UW
+Py؊5瘱(?=C؊!;1AdN"Hb@arK9YRS-Z=0B%c\oa-^0O_	ցe`W|sR[n*bPRKZk?QE?x5i c˒wp͈S5un48z;+(sXÈ,	J>L d|1oUc3l;{@E.~n7b''ARz! dᯥ0p'Zy@"J|jkjC٬3g
+#
+v]]\#ͯ9 ^4tU4Nֆwh}uU8pAybZx{#OrGP>,'msN{3U3@6-'5gwNѶB666c`)7'G *ne]3Zwt5*qd|&X+2`tRI|r	Eʾ΄Gv<φwVcbwtޱfZjSʘ)zAXvLҝ{'4)<`:bun	xr=F9ܽƦN?BM**MT^+K=mZv&PSnNzR<[sEAs?MxG9CW^x.J6yU/BXq2[ι I=E3H=:#ݣwTFq<\wx_ZFű@DgfŖt@!Dc]P	  2k{g^kBhc;NK:ygNru/u%_fhQ/ޑXNe"DQEѨ^>	
+p*wFʐU*"!/ 4~8W	M̫̪| ؄mEs~f0炉,P-!N"n8
+^.e%
+wHi;*8"/w#1.ByU/5/WMV4YMY222Gn'C#?Zҿ+4K<cNIc:iB*8?"^pt+Jq<Yd#hllOXG8~sҏxZ0V>+u#~9/w|Y̢qi|2,,8;e&fX6ϣM̞Q!eTBp@ 	u1x	\U	8"Y[ϭkɳSMr	)wkY\`3\_/XQFCŷU)	ֳBƕ-tylS4-KȷȨa6Rv߰W[E͈d;/Cf>A]oS"e.5ԹFb(f2-4a9:9]N|r.Vy[>۝	΂]t0-ԽbT+_j`9OrE1E]/X98"^xI~x6	W
+Luz77z qhafxomgۺ^oBo?!L&~f-'OI:[Zlh't+f4(be\R	+qaw2cQڀ&1x-ry+KE8YaZxwTdXJUb(̮nވ؃1<7 f1BxҴVow:Ic#^MI/DQha	I90[S)8qҕN&]Fm.yBa\%mmbN8n0E~}Z]yhY8j{{"gDR-\T)|WN)r^"PՁwiG?{>edHϨ٢Y@
++(6jrPKUm0şR6gT8:/YI󦖥TaOŠ[|	b%>َ|b#遁dUobO"v&z%t"m6R3nZPSc'/cmlw9c͏,1}#@ZTb%+2 fE4bl^ꕨX) xǐVV1D{߫Tuu^ݙ=C~3j&F@*Rj͈#Zq"V*-Hc?
+^_Ȁr8MKvy䑚zV^^JUxq }ŝ#ˌFՄjDRc20͜mp=U)rpyY*m¨FTh.CGU166
+y=&$cp=by<hF@X .im%l:vgpDK\~i+SXx	jgxKJΒs"`.>&І
+UA"/=l_<V6!S}љ=?}*
+U.P&",AR~!׵f0~#Z' y@/l@j/: {IV񦣽=}skם; F'.C.3adsR)z}5*:SGW'ow]bÔzOpOS9`ɡ8_86W_Шe(j
+Q;Y'^} mS|8)(m8V;oVXDU]J^9Aѣ1<gW5LyYA%v76"V*L~f_ǁ'8]q{-( NE)xsm-.B@uM^-wkY^?Du|hOA|3Nʿd=l3rbjHߓε1W4+'Z)kBXE+:(׉I`YANbDQ^d#8#FK7"]7finng>[?|{M7M>Ǐ_dIjz}~~_z!#VM-9#݇ڌqr21F$=NP5/Aqm,7tO{̓g\s77ܪ6_Ԡ6M3W7m׾f6Zk6C{-~#Ln2슘jGeyQz獈_-v6UW"w+w.`aOm*0*<"F2Д5 H6F2+m">rr\] `Nǀ)D涹_{U<r?=ӡCT8`ᐝM50KcڔEqb+Mazy(_WZq`WkN.M)A/bqx}خ_9;̏n3A)fZf>n^_ǯ,kd[iƢb[BE߫u@B6:ZD8qCA[lWCJXe\_wlű*FdFF];ޝMih/ESð{\.: 4\}:YN_]k!jWb-}2D,}d&RȲ٤_X#Sl8hlͲPw3bWF5&O}ֳ|fQ«h).qHf;PKZ~1CF4|Ue~Ey%e	٧ovfXw鹟܈	t)8o.RJV\_u?nX	CiUfwCGltBX.3ѴY7"*ރe>_fc*g#ļʋ	"$=QiVLov6qc'B[Њ}4t:]lx{OO[ӍCDp(FEDW~*4+29@ĸ}=bW;3ugV>.P`FfV^W]ls
+fy?>߈ .vm`_:WhsJm<zʩbVj){ŵsF>qΧG$?F2>YAz	z	>6x%}kj;Z(TlW|itF'Z`
+~:y]8D`i?6Ýܡ{qѽ<SI&+d)ũ#1c%f,.jS~@U)QD☙*֠U
+Ugх1XKoxuTvgz">A'9	DPWze%iuw^9=m9AM>4s{1 _DM$m`!pۺ"tt7É{sum}ex}wnahofXhKW<+3Ned9F`0%4ġ^<BNl`{(?r鯬. fϱEKq-obܤKɵjWԊwo3@3'Zd04ՙ탈잭Wddܹs/-5J`XB#<\Ƿ`fom-U$N ( gs1!'j÷sЍO<on
+ӽ"JOF?o$~d77B;zͷ=R!UM0O=-><qX++lG?b9, 7NVDD폞ā.m,prt&˿Nq?U:Ь6C +`zs+lS|[Wur\Nk_dKx/(yWwZ˖r
+ k}~;"_O#[kxK9+d]'EYTHgщ-SVk-0eV"oigv;[|S[; 1|״a[#_UUO΁ni0cØ#cBT@$bDEA`@9t@ 
+"	:0'}wuS{SUOt;|	)I3.]!.&61u\7}ۭF"(p[C@ߗ>J+нqUnsTR[w_8vH dm轝A;ewm|oA[(-bd-wh}Iq1CAAiӯD+/h,1Lk2hL:BUiPa.L?W;}}`2<6P =>F+TX6ԑL|;HNZmwSm3WQ*`iU'4Ƌ `Ls	E]>1$Ls{A~Q_/fk	kQϺscٶPxq1ޏ+VUZ{w!_hmVZ"t3kӻRN;	oKfdboG5qNpJ:VLe#=U]g?ϽZI.J鱾\4'9U}hcw|5qϵ҅C&~Z7RB	M06Wʸ .O\;~2j39,j]3
+Cj'z0ljB][;ブFϛzʖ%pHDԏ֪~@^X'e=
+{!/hzWt @ĕ;l/>
+/aY_bt`eX聱LV0(ndqB
+<9o cZn%A=_J4RP]"(I͐uO^02p/A+hoߋ\67a.AK{Js5ZL;]RDp\zBj!v۾Klx㸋@z;lw0v6lV[;dt9iuzF|7B+c~5vr&˜[ .70-d@XϞi%Qm-
+M~9<cFg7spb6 O6ܽ`:*5|n" RAp2(l-q[uF4l\L`8а8G*}.^9G챆M9'G	cWmn5kք0yڵkI:餓֭uXsۯF';I=pD۹i+-&:<ǳMXaRcR^rSbq[tR4(KK):Ar9p26ɛ4~شiqڰ5ɕ^SZZR	u9#H x w>Gqj]Bh<?a*[	`ڢyQ#d[&C۞(eQ;a#=IƔ8Rj5b27vyK#$X-@Lg֌-Kz<p@8dx7.O`qkd//sdH|q	;ыG%u@MXqPTFNj}S__84"J1oUu$<RBBo0ZXUzo8\:ߓOcDx	ڵ?bZXz<8ZN1LǠ˛)mRN]@ADPJV1WNG=t8?}$5=ˬ
+0,1z.S^6 CnaWi9X/dL֖haA^IDG(VԨ:J;Ŧ)!:kxz}. +!#}_	AeXW}r(4Kkd˭<f"v.8k<kSo03ִUk,*OKޮQPF,`ZT)ZZyJ^Uu<ۈ>Nnܪ֘{1Z3<qY/G'b*/06]
+w^ı&o^%NH'ryϞ==z(_:bĈ{}Wo߾e˖yv	qRR2`T,ȸhlrӪ-t~8[ƳenTLԕi0V;Gh!x?4AJXP1 _ն}yx!?W	SSEa!=-w3|惾G1q9~ڰy7_,ZjĀq΃Ck]x{2?ƍn]O<Ɓ?J~LFq5TӇ9(<}(;@Ro05Vzs`u?`]6
+,-{YY}gқ2t7Yjdp4?2~Bs=`EכCD Fρ̎KmwWhpݔ/wn{X].i-ޱ&Ėj8.|Klk~dǜpb:]W{#rWyXD.<T11\ǽ1e-i+ZP3QRE5.ox }I;yڋ/m\-uս׏<kl	/v!ih>ѺwUSYfaH$P;SK9"p7-nLsrݒZt:;lF}}aDM7S,4ܿy\pfOG6ײ.q@[zL{W07s0Ww7״1K-1ef@vʋh .w0Vcɯrү  {MrȤĮ}|{0oM1-%+o73kb%q{[Ll)&r0`@Ed߾}'C{q&s!74>w`;lLL[|ŕe03ǋ+R~VY0W=bqeN&^mb~<Gu"a|k1h[^Z~z$2JYH/OIDsCOeqP]eRW*xVCN0#sC^\餱e܉75]j|6z4XB)o{*ێT/󍂥%}=͵:./gB\öns>L^mo['xnWxwAs%8mO5F$ _'L'7#ЎKmGY8[)c"\[╢9>r>̿I{mR"\R:ɋY8SbS༭HGFTe_X5cG@i>'`\aMϿrJX)cZ(wz~[!_¾~O'.fQ,]*(~go9nMzCfϛMNEkIh=%S.}-숗p&!n7mjOgΗS8ABA$vvJh]qh|s6:c2	yUDZJz0Ƽ%=z@}Gͯ=ߑ4sN %q?ȫoh-ݕ@X7ec	3үcNŹ1_:qdȤi@l"`+٫&kCcms0jFfLW~1!޳tw3O>dW&M%X8p bBu!Go>}	KVR%&&&!!o>oF
+J.}-|GgeVf&F4ƌ~|x>4~үw{y^\P٭'IYI* m\ul?}KĆyp?2<9W7 ܛ<-AAvPaA0HkkalH~J8!ǎ+Vf2UTC*&D|2js`+q WXzBw#
+lJq<9ڟ*55=#)ؖ׹4%0_x.Oa;[:vFf>_8
+)Z(0txÝUP EKE(Ty(hսƠh'ݓ Y0^Q޵V\x2q+%r}7Q;?t7;QCOaAsPAFਤ|G 
+r=8=SGi"ϑI=ZiUeN򤍁Ik9b\ߦv]#ӫ@e*[^vM%\)ϖǇ'z$F7:qb
+gT8Wbg[AaYfI-b=yWں2֊G\Mn2®"E qQ'HxU5a/(~D nMv-Td'N|[<5+O?WLcJvJ_[2rr'V%6ROǤ<?0ቃ jjbo2Tuv}Eu#AwWsmX^q;>c=&Yh^sgk;w<o-[ׯ6}?N:ӦM{KQTQF-X ,@4/Ûm_+;)-ȸ4^@XqdS=nyg,+&1#|jXauUyK&TW z˿puVh/	c"o-iTx`2_,0gFxܷ&Dm|tב5^-U
+NgEԭVV芗~$XɴMyuw[[3R`d%2f9ve;+_mEzvᷛx	μiªvY5pܨٶVaþcnf%Ż,W/	%q㰄#zCl`C.rjࠈﻉ%f{,L*^xP1U17֜}HaAN+	|W=/@Ĭ8yi#
+Cl$3A4[D{ww/,_gt;HeG?#f,}v\Rwj]ţ>"6zqgGnk٤Ec;,UOy5 c/S꽴Ә#GA3R̇IYOfౡ	3.yJ~y҅/c,2`<v`+3ň{t^DޞU,JTCP
+i{wnɿ&~gH0BAghHz!k<x	 _\i\tP_{W8: *Є/	ބiTkmepыrd	zFT_vs8nZqco66wh֬? xxbK3Wᮙ3
+2hdRuC'ep&AzMy.Co-IÜb^ⱸjoṼi	q߿V]r`O
+6?4B`[2߀CmsDu?8PemOJɸCE/!1YLm <ڈ8"|/ǆ"+8ZLF7>1Er~w)f(4
+ω0]]mA)3ڷw[҇#	oeV.lqD8WEC*SNc0.qQV"Ÿ`yQN+fr`)f-oL̄M7^P
+ ΂kpR uP/#<MK:Qۦh[K4%jB|p715wKϯNi5YU<kb.PXv6Τ˹vB_匁CĶqȖ(֪q׃D;˲ļ#kst+.KZɛכóF.(ʊU
+䖻HY)D`eκ@뫌gz~EDB,Jn G\J肁wWhnD0ٟ,ӗQ) D_nor9"@SL(_R.7J9am;L_D,3V5+]b?L:nP/cl1$>Sn#3ڙnjc=ǃYYY>QfoP:rʽ_}jj5\3{_,DyyyGN;;vώ7RV{azAQҮR\餜:A+8ǚZy»h \f1Ӳ׼wkMdA%]֐oiH* >L1Bqr/0贽|_<W=M^)Cͪ4$/Mʔ}4/Td>KҴL~mH|>YƤ#dm|l,l,o<<vD|,k>> I=mzd6_$`Kax)3 _uYLvȧG35'*T{Ri/C⼥ q8?'ȤO5=(n$N(W܎M9-X{xuA01n D)p.pߵV:I=#	K1Ўd-yZ޷Z^p>ѻiX;0=76/̵8!rL慙fUFe/R<9Ǳ5װIf&ū6My	Vh
+eT^fm!Ķۼ*Z#zKii`2Ϩ'4"p7(+^ms+궩Y "R4PtflkFh\ŴfM\#5O3+yj}'K8t|pVm10[Uni3&򞦸Z吂IײU%K4"[85)Lq	He=m+vc[v褽c߃r~ЖY^1syNb%x~;~q}GÆ̬RѼmv[`qݻws1˔)ӣG><_j?șxve27bG/W䜛Vc|{ |TQϸ]/ו<-axBwaZ
+UK圪|^S/<<'%'H?ewČ`gg.q|!Zpu#MQH1_|:w%Z#ZABl0IԘ P0qeê8:{MV
+t׍̫eD%޿wyH;Sj^)	%Kk(҄5]^}m  GP'ǖ}H5TSL?:eQ+V)ƾy/ƚ\-T<9Pk+ŴA_;6]Z(BjSb-K
+{*:젟'n8Oil+n.ׄO3+eNnl\(v'[sZϓ*ޫG`Ҵ9	T^+v"#]Jmm{/JKòF4zu^zØԨ.S$w벂SԶ_q3.#jcDAGo)& 2vYf͆޺D.4וw1[Zd{ǣZ(6biu3ױ1Kn0S!T1S՟$"ol%kè{sZjkV	3ڍ|SܫiJ&Ie@y޳fh9?8nQ?_f͚ū-[r݀ ۍ'^{usN.}<xSO};,aԄQ'VLNnyЧOYg8omBk^Rv Y(Ӕ!=%/Ȏ<4֚t</}CNg& 8P	_6E%'^^tI"Xpp5(q(L<R[q[1	o]HQJ쪑wGyG .$`a<	p|"GpA[P{V._"^g]By洏ڰ_̂9^ ^K6ON^!!1)ύN~ 3y7"ʒ@8¤^LuLkM+x8o#&|Y˭;/Dܡ Ӭ;k;6RK\)%1\ A!s&VëZ倚O8W-,Ո1E5aQ7LFhĽynv`8o|k,PZrX/vg:&LS͎ޚۼbũT,
+fX܅tL{Z$4y'e?Qg?3t	ti2[AI&m,L$ FjR[38VF
+ZPv2ǎ9DBCd*0W{q4a|1FϚhhi<ēOdwz]o c`)(e®͎	\Kvfbnd三mw*'sߘVxw%-vw&=nw}UW]7<ϪUϊkժՑ?oFa:y*̤ĉ3m:&5ٗԇ0͙J>u%V"{* ?T@cEb9?-UB\ ˟^n)c/^n-2%lj2io;](ބSC"Ͷ&Dm=FaꜴ`&FocSsQ{@;"1-U~mN0xoKp켼*vZ#@3ʎ6rw5HEn|u!_P 
+z+GݹN``;x E#cr8֏!*X0*B
+|yR\
++̯
+b$adw7+_UcKQͭӮmípHjSr2F×{r%Olq]n
+g+-  7>	vlj]R(cq1񣁄204jUPyGaV	|
+ƂAc,Lc<;zg{GgYS&\rBʲSZK
+2+؉9U܉+g%1P"R;_7v|m\KFM;>4ޚJ̲ۿ敖?bX*ݾTПysc0A0c$|v8P;Kt]
+.?e%fu3v1زOdyKh4(nڈľ `v8wp֋ˈxs9Kͦ~G
+alǏgoۍ^pᯏqjw-<СCvl\J^7ONi913P"^	Λk! 3#^!(~ݲo'+:Yb+p񨜶EycNJcF~xM10:&eN%)ST5]2\Չ+ZV8	+QC
+p۪pXO|hEAL8,N~0fFp0?N'p>eJw[`9'تg~ne<D^z>W0ΥhO'w!ST@Ԃ_17AMFL\yv*żW~xuC
+<?br18ꆲc{*"*}RF?17jCVl`5".PxRz6@vC,HcXfؗ# #-WGoL{q>@͂s<gȘxZ]g77+ޡm|י_>9L_(>cG[3(n*)Y"(a.oݰWq|r-<7Wq#EDgh.t1\cFF[D)Z5mgwZg>ho֙	Eiiʞ 0QQ"9Ϡ*.ez|`Rhǿ1.A<qXB69L\X0Cl7ls92<akI,#x.I֘Ɲ7`1ޏvիG><33o?Wo%&&z!&%%z뭷N:,]gW^BѣG7|y?oW>hANVʖ:u SV֤~URW+iN~t?["ē!s{W0s	W$.W=+\.Jῼ8J_%͗0K;-0=	?,IW86aU`"8L3d&1l	}0RT;x'WkDW:ri0 Ҟ?!&AwwBI$xF |+K]\i*:)Ơ#';zw%PA^8EorNCT~ŕN`Yq'ŕ2gDahWqq<°f\=}{U#셇U
+[QS}	#xUKKK{DX0	fgVl*N(_Ez/I]3媍/w{?5V0X-q%bSjz>*pvle3h\ro+v~1ӟ6ڎf6?NJ	5If3+Ǥ<pg\E߫CNkW3oҮn+xB%j~4R
+v/Ҝ>S. G|44
+s}oصH+!}6mAκ;?S%Jx|k}A[8FCW뙓VKs:ݻbsU=hvG^V	~4{+%k1)/(aF%K<Szꩣd洵k0jܸ>8vأy֠AO?@fiӦy晍5:N7lذSO=?#;wd_bRLd_(N(+./*ja\\d0	K"k [nUc>yNəh yD+2"Gց`qX #MKgՂk_41ڐF3q"T3{3Z4Lܴ^k5|Nj=\K~<w:Y3;t) Xii
+q$3vPc7_v}#%4v&Ix}o~'z)@GW7|!&_KU	סW@z֗PXfiĪEC8|.qqp*ֈPW-Ude5X|0̭> #Pʋy1єks=z3 ܩV?ZHf+sށ!G8u~ku߀?UCy@!䡶Y f[%(,l,:11_s=&Rj%73m]klݻcK㧻Q%wyk^貾rMqoh-msLcMɴ:V)G~\`VӽSo᭺J-.s|jfܧU\VzyPFwY	x'YA-']-;W{SwS*ROD.W4HU?7qrP+
+]m.'9[;\C݄70<zE`0HF&`K/ 5ϵf-L("+ȱCr{4s2bT0o?_~=Ͼ :t_߶oްaCHI&-cn씗 Y2sRǖ{	'܄8[dB4T9x-9ssͼ3[|xĮxi|)!
+Oh*AfҢҬr|>u ;$yT|Wh3bk^Y5PxGh`\({|lk68dk_=HgXb/ݽ+ҍӪFⷫGo|^#RhbcqcOgRw_j,k}ovJ]B#~q`GLw^b\j|i50~{XiXzBQ˅P^}^1[u f?צղO\mrD+[x*'}]cuA[Ț	 r2|Lsy%m7[)]0}=	V:	-$|@Gc߳5ݓODm^4Rܪ:{] ,n},/$=CDK8H*w)_9we^ݑf\a^eV=Pr
+Dz7F&u#SI>e\\a9LJ^72wi!L4?|AťT&P#;?VU污tɁķǠ{oYO5]'ZngKW(HE$1#Mm-qreMs.p~^5'/wwa/جo"hwH|SQ[}J& ARuMO8(aXv&Oxs9g<o۶E]t>ov߰U/W5'RIh/②ˠ%dkztPbS2o
+㖙~19S=4}o-LOgY^~Z	PfZ$.;'DJ=ܑע+<+ҊlO*hr80ZYYk۷থ@fETB~9qeH>8F.a8ǋnFxDԏV@.	y>Ck;QCL[0<qH{%wBxB,b_khQV<,r1)Yd}ǱP+V(TjdR/햻.gϱU;3.Z8JVD&[dՇkR`ueS-f֟G"schq>OveD1N8Y+'-1fri_̚~u~SxMA'<L0և-wQ4U5"yXnՂm4,+F'̭llKKKTkڀ1v0~dƖ}aFGe/<͚%y}qẲ@D:Wh$34zi?MPW皂-Qޫ
+MQu{o˴#kwY.!Xqk|!~/!]jOyb=%4Ӭ'OR	~.?vY#~8K*pks'e%ۼh4\[pG$!FAqos_L7c#^ɣ`JZW8*Ujɒ%omT<,a$;媖3Bu#sܴZ_v4`Kwg;b%x	m^I4q L#`(P F>^wº`;}/CCq~L7|fw?iKF㗘t|m5O &_3M ibfEXЄ̻!%KHH:,Sq\ Jw߅1
+GFM8sZex8%*8jb==\;.:8'e.ҚeVq0;j"->p>'zIvJkM>*3b>--5)T
+$0K_}xe*c,.4!/Sz.Kc.Yy?Gb.AY9[hW	|7W[5zZOc/!zsGb<!}
+ibEqH	2>I
+QPpA-8>XK݂;ps,aNʳK^l[F/ݳ6VjP
+&Z f^|rۼ QB
+y.ίebj
+eU2mߪu{ĕpE4u5uU?J4ݵ -ց1[>S|t)3zJ4ِݛHȻT>Q~@O0 ·h\(hdrq8zQg-$V)zlff^)LvJ+<ӡ_<	o.?#H Rf yOoq bTB??ZMzvӧM5DHLLΝ{`2Z~Eb'2!U'q	ЩɅa+1UX/emPuC!<bQ4(s ܫBKc+(.眉ƙ85mg`0)jR 0zv}wX2Ԥ*g\2MZb<? þ1_|_zG{?"#kF&#kF&U#A[͟`1C`.5	V2CFV :~7j`F(of.3qLv'@\ЄO_ԫJkp\:<D^Vq
+3OI3{#\(Hy:8pwڝml}Aa\ X
+CЮX%KR>EQ"1Ǿ0aG?_3j9'{"4k0:~S% M0bH|!^FpKohF e}%<_ZW^
+\C	-ioƶcWNߣCqm-0N+	9V2z?f.!Svʋ 7u%|2%Wi&?c$D@^]ԉ-T;5k<ʯwP{
+VaXJ!a	ZP:ﶿܭEa(p_Eoz87ݿyX6eN;FQ~30E~/ }^7u_oF+JR3$*/lL=8x`OjNbGSP_̂60V:o$=J%:q:u\|3fhѢ{n?>x㤊Y{\oX3.K{3.c|Xhai5&e%jBEpd p<J^(J0+OOhչ3P`> 9&K0ȥt2\SakH> J@v-G{8gܘqSG$$OJG+T%k'}.j0BT%ɿ'HOtOoW#Ɓs~^Z}M!Bf9C@^~+#\%|{һ00]8RJz;bgKȶIYR=-28_omeֺ4췫Q[4ZdP56jH0:8-"呷bsx	ٚpbMa/rJoLR-(_폤_91).B,ݠ
+elk&Cݚ:},jƭ],^
+z!'6~K{Vz-Mtf&MuDA-L:Coʬ .}TRgB1)-wX<o^::=a;K5{=V L+l"o5ںVRWu&ԶĐBJZJ'A7H|->Cw	G <׆{@lz<1bS$FRfMwU:h1`<7"- ^FIWZp/?W:mRI=2f/Ǩ0HnGc {
+{ϥ	üе&/mg=چ	zvG&u;qݵk^q|Dll	e%D(+Am+L>Yw34'R:Ƽ~aI5sclL_Z:FbxTd	9g.C#ՕQpd0;Yn;II
+7]rqG|+~rD)qlǇ%b@GI]qKܦ/%n{c0-_ͽfD:Au#
+hqJ U!uM$xw?jpKR;y#|mi~uZ|88&.d\D0<aڧ_VL*	onSO`ٗ?xtyF(R\YIa<ԭ/к%+~\+^ߨł\*먮+r u൯Uk$9U#LL2hX[roK0O<y+l4.~K;G'JoXQ;U7"-,?L|avh;3A*7Ϝi)q1R%E0
+xVR'!.ޱM%0`]X@dXiMޡL\s8RpD$0 Y/b`)RQ|-sW #Nۻ>MEo`tVΏ1%1FB)xd-%]\qۃ;,{j܏WPw|	8D|:iy@C̿m'sP''<OFwuZ8ߵ~HGpAAӆNcQ2VB5ŃF/!c{w?lMXrmJ7m,㱣][>q]m޼36mtȺzR_\5LJKʶ͗q	._lǦ6P/{Ki2!!('2Mxd3ٽ(v:<䪚)qw,c"!y+`x_]ЛCbXZ1 `\_2 hy8b7
+ <n,Eyfd}rB[}{-B ,G@Ux۶HF=|n%VKq ̀&}inڃC'fY'-@nZ8Dtm4^F.,
+){n\U6	0{U:oB]<[Ƹ|/x>V1KF防G'w"樤P~|㠸OSr>`Um|[/˓lL4XVF[@$jjU1($|p\1'jK7MOd'ULQ}
+3Og\lH
+x.t3)+ybLe0D+ķ&#\ahں	8ŰWMާu:
+;u#>jz@pwvŢa!k˻o֛*pW[Dl7sAL|Ğ&=P]GCX^ZniΨ`-Գ^)-5PK:M+VNk;2;W%Lrd0&`8aOY\eE>#wo'nݰnJT>G=*V2K(xDw*=Y8Z=9Q[L׊Dy.
+?4U_+ 4q/[*B=0.BO[Z=aK{:Wy&O>HǕa[RA%~k*8ޯ1;Z!A^)	@睑_.X?XXCHNH.,f ڢj{Ag+HQET<6Ps{wԥԶn7n	F}c[m{Yɛƥ2f{G/v!x{HЄLNj=/A#.;\Uѐǥ/Ƅ0 3L{y4cCyV˛anA`hoQ]|zM7)dL	pUi}Q@m{(*ƉoD;7TYJŚ-tr?DV9'NΕǠ\Rە[hqb$l@5zVbL	Ė`	ޓYxc<> ̷۫L?OjRVY3]ivʋ9i喫;kEY2t߷VńۥqL
+SanePXPZ"[vN?
+TspRR ނ̘bR7ˇ5GJQ^"Ȃ:JovЖz.BrJ]kFU;etHC$Yw<.׭RIF'yh'cRc	P ǉǗ6 v<L'Ӎ)LtJo(fO9Jew]Xν&Zk%vz=-blac\mV<BVJğ~M밆WZMx]6	u6.O]x/9K?wk%Sȷȡ-N>ʍ	* EYebd¼[kV5EɶNnHz'tj|0`C4 jҞAkA".~0ws6j+^u(yO"ۭ1貗_"<z0o;4aUE~⦚R$S\X+xPҎ2y,FMLץy9[__=q@3y;vd'XU_\Lu.wX[e5e5{)UakR۵^-aK,qf>A[0tK(OľOd?\s놰ڷ L+	V/y/t /nx/f]ʠ|üx)'> ˉF%uMI008n
+[> u|jx#eRY?%gm??C}m_@2j$Y',bG \.⒐\ D9(	))	J@[B-Jbe{Wj>Gg+vy	0Y/N5V'@[Y&~yݛa߱MM~-@!7gz`=<mKgL^n窀[\^NOj=ܴZ"&ԸF{H|d	e'Sכv: a9vo}o%`elyvaw1Gn~Ɵef+arG
+3O~M,RN(j1V#7ckJMy?' 2  ZL5mm< eo-ih_CyN .	ஊj:?*!Z3F㐥x<S3Պ,|SL3=쓒c:[	?Kٳw}cԹϗZQ=Т;F^;|odpl}u'"Zk3s*q^V=n7Z6zYc^{Z7s9'`kM}nCd+=Ǘě
+C4:cai(irDAү«cGT~Y0
+8\m\fh]EZ[FDIa%|mXſ9^Y@	;]ɻU]U/+ċ_ڴ[xKdP'=S_;,h,ۂK&%\ Ƃ: o0m]`#Fbt>n"(Z^+p֊1op|);eQV"XlM0G,씗Sc˕20C:F$?"]bo|3i9Mwb2MT^}PqYP9\9*̵g~'w
+
+Nf;:cJtȽT)}^NIJNұ'0_k]rB"Gxm%o@Cl^ Kh:t?a}Tk}4oStADVџYQWIuW:YI[38ULB4;.!ЄoZ/!50vΡ^ϙEG	ⳏI&[>oXjRŴ)|?plNseoYW:5/
+7#3α ~y'(Mw޶
+s_*,xxD$$Gw 	G]XCK	E.,F'w0 `3Oܗ̬҅:<vYGdHgֈGF>;d
+;ɓy6j''X'o%T~^ɐ[؞oݶSXa8(¦"pB[M۞e֌Jꬲc!-'vNê-WIJVr&%PCezk.WTzչ&NgjƉ+Zǫd,׊sy.'Z'l+wv rѮ3	o*BxIYVaׂkJm屩_U.k%W{)]@7AM1(SHQS`	&hM/&V#Z׃75́i1@a&5g),Cd'NX`;v3d])ΔLJAy$XR3j|0,
+D5+}'Ԍ6_KVZI^49N-yAUh«䏔%-m_-5s
+kUsmgh5ߢ7z|y C)Ozd`+]V9fxOPX.M =*ysDl뙟q9(s :47(Qa`ڲ/f<%=}G6eʔs=}~K)cޠ(+Wc>eN=j\R߱D-2Ą偭Ha̅{%vrWU||UWGp*3>l[lb.*"X\a󪖣h+Ҿٛ}ޜ'LSwI#p\ŕNk{Wg\jW3\cx.jQ{LynVI%ܶikF
+o-.a0#
+Al_9YruKU~NV1/?ի(arZx tt.{<`㦂DU~fD⠑I=
+2._lW]ZNx!`zHW.LypW^3^@\
+'WeaW(+o{揟^<"smߩw&2  NiSX,"+iOP#r5Q
+*źvyMt1x|:j!9<L 1/o9zWl_y>[+#zõ2xEDp3v0!}k$GsPqU]YV)3ɱ>׷
+5
+xy\Xa %J1+\^g W\-/+j5f{Pޕ_>qaPZʞmS2Cbne${sL9k-#@ ~♳kf	T1i/"XbeƖ}rH0mna?u+Yʕ+}dŊKo}|RLgH+ٺ)k@qqu{$73䎗3Gt&3BJVd!&@=&'(
+ +'
+R2^W
+9z?2Hx(\̨w/o_e`Wقe)qP d>?کNK3n-;k	z^yTRNL:SZȒP~$Q+8n,:Uy> ?&&	5}:aS}G+
+@ƾ!k!2̨wW?,!{h|~O /"hOx|g\ϸ? &\k[@O;Q9*;4oIy16b}Ebm}]J^7PjB)%1:2|!rqMkZ[-5W88Nn' <W	ID'b@O"j|>|mY@`j`cO:X;=<y8
+i}9FB0u`iVXa&jAE0Q.R<r(51wSC(bkxƍq<*piR@VKzG{ȷ	븷8%"`qBSowy=k׼0V-PC`Po-y-O`^nov)@f.'|7}+xN7+M:A=8{	0<J2wW8ieNnKe9Ey^y:GmNZmQI,b{CsF'wz2`1Lzt.Sջs&Ixn
+
+
+
+~}$???##}~`)j]|K0\O:ׄ	)YI<&xe[9Ipn^*jUD"anY/j[_ɚam$pyIS#θZƥ6$0Pg5&+48T>ʈvv+H1.|9yS"G_?.]߯Sm<FM,s;J:ijO@Ǡ< PcRZ =0"qh-L=2g^7QP6 wpꍕWgѺۧ\LV\9ߟyl}cHEݡ-ݛ2IO?dW{fA[;GOo3lS OPf+nGKmu(/QɯCR,H!)'2;آ}{}ìOlky-] X5"BGo	~x785o
+{(ڂ-h'ˏ@-b"=Fn?/*NJI@hxFE	RKd`T)lрjUy;0WJJ&yHp&Ⱥn9zP)瀿wJ97C{״>/,ӭs|[:gz*#z!ʳ*B{AXhb!{r26d }uKa.7^"G}ƛR.O&cK]!˲I]_եj¤ 6c0e%p;RQ<g	@(N@[C`V^L1epVHYUi8U_b%2V^xy؍'oX*/ɯ+z|%v|ZQIYIS2ŹГ:X"FiB^nwׅxNY={+gƗV>/lM* (8՚y/[Tl}3;m=,e(ۧ>!gF%u>`b߷ޚsp<:Z6r`x`bLP#z 3f'~~˫aDDԏ.-hZ=%a		^RP(ڷz;[X>׃RJzه:AoLu+3J~XKG$!zWEu M,(U8".Ły7HNWyUseϫBp  az]6evc^++U^MKL֟Ǘ71d+pcRpl^!A^k_11֗u )9D-Ls͔'y"oy4Zf{UNxZ-_['>"RL⺡	9-$>|`)jXS]G@,a)\9B/	<p!t
+U$ҕb꽡8K<l/ڶ)Z]Bp	~AH
+WEn"8VI)Aɿ|%dZfaTH޿VZ4B]֍\CM+GﶶHZvZ[g#3_VOʙxK/BgV[q{r/sV7,ȸ0/}(#tBʸidRW	gr;{G`nVr39iXQe}{ݷo_K,D<yFe2_#R/;ĺfs,bk액,cLTk	Vsp2]8T8~^[S:WwZ@S%O1뻉n--V/ 8/SrLqaa|h;MvN֘#/t	~gj᷻4 COWx={#Y'x`z`V`EȐZT,$H&2pPzć#WjKGI]8W̅`^8y87ÿ7s[M8)F؇%d(W1)/GRq9<qcr8jy0O>,r9nQ]+HnAo;v%5!D^X0.8)3m_̓4|krk{LN/J$db&(ڧb|(Ko[1.2Wދ_̧<x}@i?>]M.6}(HSR]v:YǣrEﻗ^
+F6&6H׽:>K0`Q+J H;.M[׹0ToWTaBۭzF=UO,\-߫2~xC6o%*}}L؂zV8݈f ٭"vҰGD
+
+5U9aKpSk=)bke<]6ll4zY-S'|	hAE]J"g^ Iþ.Wő~lRˆrf-,[b\r3bܱ+ǥ6G%i-E4`V;'xn2^[!y=mƓw7,嫅u->ԨOxeaj&9aFkU W̹wUTpt?v
+Ŷ29}N\YU^oۅW*|.0ULO'oמMWOX^զEY瘔!A8jN=}<PK_<2 ٘=sR;q/F s$%U"`-Jm,>m|p0YYs{%#0؇at!""* RERB B5)"TT"0]{f]ge=99yι˾u{_A\È]T$_[X闡H?J:@Xx&ՒsǤ[͚w>k3J;Mʿ䞉Ay2Nx2DS@oqױB=k;qNM˃\!Awg_2Μ~zfׂaj戇<y=#բ,ܖ}P^Rax۵'XgMh "^vUnJ+9) %iwD-©paLnx#8S.o'TWR[:[|zG> Yz{5xǊ6ni<)x/#١FDCý$`׵R' uC<wKsqO:e-l-YISh%ԣ2y'@XK.z3sY[jƐ8ɤ˃[NB$5J/JE}	?&
+Gs$YmE߬ѪWsŠbF!E ]=x	B@E뮤r𷵷=t!<cřE!$^nSBG ,?iEa =kcqWL{n|^70^	vwCOɢgxQ%9g"͵^4cnv})S
+v=/>bpד}?u++٨FuѨp&w	^IPE:XkU¾yh}^(d{x-亵<*;Y#n[v~*Ã/O3c'=q	ŉf
+Iyu<3"Z~`7R`ۻQXrJ7bZN@fg![1sGL9Њ'HYVtm+S`ʟ+
+bKN5̖5
+KtJ۩6)?YOX7\.S4!5T17\4۷TwvUant<9Ӻ+OZhBӽ,jAB+M{)lVU6K)wG}C/t^+ nH#l]Q_cK.J?IJGȌF>2iFlB#G75g_ۅ7a៴8:OҤ5[98^vI}jX[la)rqj)s8[R`/ 'uK}Dg˩>+"&&9Yq +k~:\(G^Z~:"9CE\ăo?IK[
+^&onA6g jhfn|CmUpM̎,I0o6񼳅?^EC=ilEbKۃ͜80mA`+7_1Fu+M<c=`RJ}?^a' 8hXPIqVLg`;f傓iu En v O[<i	6e`oq>RM'aԳh|mΟe[xk54j]S,cg碬2^QP2=a	Kep(ңd¤x7^B[xM ]edF`t^jY&Hqv#ˮL; {=
+|
+kE XxN ]ay_[_I1OTJ)W :H;JOДܶ⊛O>e&`CUXL03Je%iwJa,.͸E٣ʒdU| 
+tLۅ5|tV4y_[*6VY۔#.$edP7AȜGAۊhޘ)C8#7\u1S6w+;4mw!OCrBB8H )Ė>`7ty/P^0[_+F{ wZB_Z{lUgnt˭UέӜ.M|,˼V{<wO	/5jYi[(\g]+,L#˪Z+,Ns}lN@OG
+a]'>(^Mޅӽ>aKW+M8,hԡ/a
+Nz-	>)&T?WV~W_᝺%ǀ@^	Q@s_SŻ%Vh1x^ݛjM6Z+#?Ӳcһ/=ӬbSR;/ͭiw /
+MVǮrcM v=wCO1s]c'
+aAC\nƪi0VԈ/V]pfwzvE3}Nߍ}0>\TͯC_4L*bn=̗b=a˫K\jsZ|xRadnBR񒚞B;w0*}qR!Fyp탍@'l}KglBY8v-`bY<):TVrȂ4?%
+ހ^ j13pU:ojjfef%_ؒ[0/,;v=VF%<|V{N^AOIזR".$.Izׄ>H}Lx8+NmĿp3ęp([+*#NW*'o-X{^oC^~eaJ *^P퍙xDt>`wejK;z㢬M*<,[+S]̥,ϾV&y-_aYAa^&FۮU;@雼*xC©CEx%le_L~dѮY!%Y-[LK/.wo~1EqVr	VY;}uYYfA
+ aZ-]WDr& .%F0x\d~QV_Ո 
+zX+$ڜy=ȫI4baETR0ˬcuvU~l[X-WAG9,ͭòc}cqjfe^Gxyf5yyI_
+}]:_Է}1^CӘza|+ͽʲ|%j\-/cM(jƷ3/bii_}	3e~ZosmAzIJ3ʎrMOXꁯPSi"=.ved:on
+Y6Xnm5_h 4P˛+#w3*=w [3e JG%_^[#ZZ6˨wIYtSb!MɌE(+ cv0}|fl8%MTϻ8Ox\n"G=38.I+>d5"]'Y~aj$tSvrU#U?OVqPC"BIK}|Wh%<0-H\뮱Łopli}1npӊ~ɛA@B`i|^FCXK7:eHpž7Zl>vm;:qFB`i@oì<,N&M~)f,+ϺdZd9/تrzi+!{Ӱ2VSaR,65ivV
+gӏ# AN?&C?'XP+P<M`
+~HyKj
+G,"H+z(-ߏ5h[wh~Kj-but\[Zf#	'xi%Ykf*f')CKz,96'N[W)ҙ
+!B2OOXdPnÌit}\coEqjMXg)1u`f}c(U>cEn2xmhV2j:4G;mMpvp:E.3kL|[0mK|٪Z:N̍bY?XXʳ:9kf`zش5Ccb> ^ 	,liUy.c1ԽE_)`[p\hr^35-#VvC닳q?18"5l~ڽ #rsT!a[v708pUgfbɂ=๒HgipB$wヹbت^E̞v],?˨AD7ӷn_)|yJ~߳>9/Eoq&몂#QQPyAZw8/]}gٙN{ʌr>{ P!BVICܰ?ڮtg	uyv>/HxНQ_pE|3VƇR>)Ix+n8+i~ÛbNt"R}(2X$)ހ{Ca15>kCJ$yHh`ʴ1b4\IL uȰ\Gz0ѕ+{[j^7߬fWYIZIr,D=*L<`*54$A%Uq8^KiYW{D&k{a`2U<
+*Ko\Ci焕O#xʤlaAOfSU$U8NL)qO'`իu.~/ Sk+
+*QSW`y9WzۃG\$8_VҤXs!a'$Y/T0:kq^f9]e4'ysI:Le^-!r0pCxD*hm挄)L~Y=j |0 +^s|.$xsm[mj^-x0}mIE]ߍgKuٶtUNNiGFb[`ρ`Psڼ>+ S(mIZO?-hфEp||WZ['\bá3Z/ϧl}!6ǳq+
+NrIz?_ĠdYJU40W.ϭ(U})+S TGm}0[WDoPiQP"gG|zl`J(,*{=P|LޭgB )MmPrѿ{$ ]\h= >Rs|ToqKJZV\ս-Xד%ǀ',͸	0F˧Fge^ V8Q.^0V7͖}iXTVM	xE7j-jX-X%ACSp]{w\R dԎhz^ΟTnTZCm.Bn	,SޥKq\@1ujGr.pH>Aiia7"`fHh+L/Qܟ\I
+zO XĔaƕAW'Mc-˫kMX	uB7<}awB7ݞ={V\~{~)SV0QTɀ?yt.L}.|ITn۲g>K8-Ú&g<7\i#y|}WO ŎA'd~}02e&Ž	na=H^41^Ka;>`o6ھ$CgL=Pbc\>ovwH@K]oBd:>gasS$?dIe%tPVRv1ƿf'?Aݱ֊`!Vj@|W05~ÜT%*hoK"1m7z10ENzǵZ}%u^EO^A=:WW6-.1z.(l8t'uB7jE@l0&CST&T{]s,N5%n#,OHjTo>3jNW{i*}M߯;>
+ϨE s#`ּ)2
+l5>;3q7!VE}5Tn+gafkh<,c{^Q#=iٓ,vW;5&\]M%5	[Mu
+Ճl%"6HV*dZBHs=lR{\Q%_WPPUqWuO
+u]^[4	
+zPȫ⡡ 4x
+aZv^ǙǗ1YQ}~Zq2>iZa£hWTlCAe]h?MyXeD2@\e°0>gdw&T{mFBs7 	M~}Zjծ]{˖-=4Ld]hZ8dd\):>Ų,i/<:?e=CK2_m > PHi&0/L"I11q4UW|ЗFVL:*_d{b KDܼ@(	0
+
+@0g%M]`C@r_R Y]ڮ[7F_F"sn	6cռ8w_cr]m#+\,.`ۻ?BlIJm0mPhZ7yvN6;Omfb	x$FVd5&
+Y`X(*TWC
+fISۊܝ0Mz_%#=s'oNӐ\ax A|)dqn̽;ރ&sCizGଖj
+*_W'?hXw|cy¨r[׈.G:/ͷΠj`]Q83j_Hdvu3:&M}A;,P7v0.\Erzs{0bsSzȢBNvt_fe*};2&Ic!{3刊#4џʝ=G+I`[n(q^ȣ)Z4">$1PfEI@fKl aP?˒sgJʳzW~ -\]^3Djeւf->\ˊGp1B0]KC=pUm g=ޯ=/[-hk{Oe(N84aKH3ڕY4=	 =Fy{.?GtI]te{Zg,u0C6U5-%ui
+8{zP~.A{I׸cֻ֊ˆXrA_yhXhwMU>_sĀږܚm*/6-a93qGW0c!M-=Ȃ^4|d!I%^W+Kwdb,'G2;/Ø:z,`=He=Q',.2J1q?}xnS|7 eŒp>Vu3@ɡxx@ DH[IZ#ysS){fIMdCozфhL۾azҲ̧|	᮶@Yj[^YAS!Bi\#CWXMa,Wf8pAz7hcqb1
+LWlct5-@<<+[?4Ȗ2hu.1xn879`Gb:t%ѭ6.i+]C2Y:]tr[zZҌ[SGyzv 5]ƣD3xV9B#3eU}MF]@8`yGV毊iZ=5	þRCvvXP`W/~}
+,
+~{wd`N^!Ȇ,.nn %	6yE..܃v"0qQd\3<{bBqf]4ܔa.]qm(r("+kj9#񦘡6Ǵ}ʏ{qU?׿=۷Eqqq;w~~8-DDYya1¾&i*+4Oa$ri-39=)6;Ap"gmxf_)sA]Ѓ|<_ˈhN@}UBչm\VvMKX1=a)G&V
+J lB3QTVnky1UwljY5Ց###vSȤ'-#|@p[b!	U)&v$2CZh_8,Ĝ߱U?)hC2B:+i*w1$Y$d4K-"^Bܜot-(JiX~w&5Oђ3w}z۸Iq0a
+ڠtqQ-\%jXjR`,?׵g7S2}Y7ng ?JR'^^
+!)Dʇ+DՏwx,@تE  mw_?mKt	ޠ_S?q@O{5(8)O>o3:5j	o*ܔW0O/h3GyL6sVx4}Y~>#>Y}y_>m0)-ps51*]ʠBa£{iM
+Bc'|.Zʋ#ַ`
+rW>9nP;JW9Jk}^E>_C~^#Bw;)Y:!_*gKwS_֠toOgc|r%Qu,Y+
+wjgƞ]2ګ?vh7[vvu0N
+OYVt̑؜|{nqqqrr_k׮^beUbl^r^m2!z+MU#.Q;TlHˢhbF§h^{v*xaȲoK@'o6v̥V8ozz~XhyI^ hLbjIL ?]e`*aFk {{!](~]nm|}dr2HJc13
+q9hrG0\<fw)XuNrp^n5*g$Yzkv8 dlfhxYRZP-k^NB,%*y^jߕre5s* UgYbj^ev3 ~͑jlY˫19O`zb]%;fiFi؅+x?(F'пEaQi{k]`q_ \^Qn=,Nڜ	>E}*VE|zr UJhsm*ܔ!Za9<84Xrs-><K[Cj \agx0x=^S^[
+IuԂ{aokT̈́5n\!Hƀ0op5.L8+![9h{oy`_`~7w;*=ݠg@am+A\Ћ%j\\TqmhSnj\uW{;[dB{㢬˘k|Q[X4wٮKmv4i8uF~z9[c	k
+iS@K~Ɣ!͢e@)A]E&~r2q4+BUp5җyB*{^Xs*aZDwZEkâ8Ϧjy~I~&ZQ;99%+~4%nJ	^rzVc0݂<d%@WY`%~Oavyp!7c:0ЄMac{"+6OՂ@rL\I*6`LG-%)`Jb%pyFΟv/&6O}/IvXSv .m_Ԍѿ4iLZQ=\('{W><NT>?ߕUe{s"lLԷ8_'S 5O[L.V~1 Y'^yYjL=t2hJڟƏ«iF-L{G
++  -)wet-5y-ݑg/p30+i]N2lf@g4ô
+EYMvpz8C+/IWPziDn=?p"LX̿hI0bZ:~@@|݅:{cpc0V"0]ᢽ4ەԨpi
+
+4^):3XAazlyͼul=#B&E%;.R\EMg_K|ZK>?qJeYW8#1$<=UwxMX<däj/Of{oETԈe\YxJzPaTyT'$jq^UlMd4n>;$z4DS'fL_W
+tŌðzO
++j;ao
+YIRz*X<)l2na. #=6Ţ%oBoDu3.XeU;/_zlbZo<=Ȳ} MO&L/Ev#<Ut/h!)bS➚8 XUU'`w|5nAz7?g.ͭ	 sh$\C>@CAimp5*4fh1Vm@{Mg릂mILJza0w0km[/Mf"ҷe^'vtUf$,TAB`bJrWo^.yt烬/pΥnvYCϨ}xSv>	}kb=ٻa痹Ѵ1bwCa8ui&2ഞ:KW="\29r`<͵"/.AV/?땩w-B4 c%k)TQ{a4:[,o ɻg;/o>BFgzSݬZjjcLj<]mrd; 6[3粰hYJ A^&a^0Vr'cZ<\M{R/wvn-^;s{5KƯ|ZJ+ܝixL|=0Fi#¾S+`$sXSw~ʑ%uZ"_^Đv&5O%8a^Zzn<Xշ*DYm<"q6s:̠	=/znPYU┸̀/v#U~Zfkur^Q_A`#)X ,cG$rerA<"0`@?L9?|S4 {`/u8
+[|ܙg]`4Y<˙
+1$Uoh +
+Ҟf n@q̖WOY^=[=8Nd<؞l6?#4ɼ?`LMjJ	 "j	:J%2X|OF/n/ހ-%%M<
+Gqv
+X|:#lbɋѶoxWOVfPwpU:nޣp~|~)"_Џ|ިÃZYmC(jS6n -?'CX9=A+38v1Ręa֑y8?=%yvxM2²8` 7F7A:@z{
+,G`ǀoוUbAd/"QN?VWPz sU`ec8` =r{vp!ܧkڲ3n-2(,yhK΍r=gY-An'"#pӛ
+MīǈX49YWj&Oqt1.F8_'`_5(O_bkq\=-_\-AA7*xIЍuC
+5"uc {ث-;3 =f*#u^_{\8roO+˼;'1P]Dcb8bYiq[̊L~?dμ5xCl`MV"\/f]m%xKlBM*R\r=ʖD[h`8{zz2?aT~q@XlwIZw#0Gy0e%N[@N'!VwAF\}+ց'okR-#UGf13S*Jy_Jk|i|3pVy\v,wW-)H0u39ZvV]wsx)4Ik<dY?>l[OMo Q_y=X7+-\>G*A3qpnec\8[O^3\Fr<_lf3bdEA̼8yM SϬÐgEE3Mwj߳EzuRhe{]\xB%$t@dq^BgcT>zl~@9e>,AyWK쟭juY`ݣ}r.%kܹ)fu|/V,t">/ZQ#j^y_աfa[rj^1(1CknY2wVDSky?( wd0Ŷ%5U+U杺DEfTI<KUzܫMГJ֪*'
+u>%kO-Y_GMp&%i V/pZ^>*΄1 
+UwMv+OOXU}hUٳ?+76gija;qF1x[m42{	f\2vpD:],]h{/}_w`
+ r[A輴ͤp-ůd @"&]њIS:mܔ"oYيF.MR4#\rR㨀0|98y_>K^M)oRQQPQŉe]IbFgɹ>` PfIy '7O3pS9)ù18gYISis> 15~=iU v1V`tJ=#	\R5([7]7=AL3Z$q&>ɣxgu阪wO':cRZPXl/,6Bt)P4',(S*bqZ.XMNs-!tA; U9p_	D؅aKCcUBQE>X+*U |% \򂨺r2XzsA'ھ=LysL/OL--Irа;|pK}!,'ո\y[]U /Bi at(hj
+E8U$i^_ 3ʳ{ӲV0/yf%M GqG?	WTw,7b /9l{yFub{r)R1$2}PY*ڕvXF0@	Ɔ?sNXrei:#lUdu.<2|߀Rj+LHLԒ<JҌ?v"wj!,|xVPgC@oXqeBmǻs Pce+r`XBER}¿\+ɪ)J>`wu.0^4/(eWp99D<(j*xʟ3;
+@Jd*MZf'OwfGA3`ŶxqRe<~Kk饷XFү)zJVDhKh#O7Sg"d`m(w-ʋ(1ncm,ImHr>gZ(URפA[7'݃txOԡ[8-	^7}A[}#^hRЕ . #
+/jp4,[d&syƩkMMO3I1W,.pjҨiGN0zZK&o5Alnm$`$$L,`R|h,TTQE:?]j)k$<!bǼzd_m{/d}]-Y3@!ZRwD]dAxj%$R+4^
+y7^jʏ%qvWe@I|?rgN_[J0zs{fZe6b:'~=Db|c_Z %MAWU3PМ'DnQW^ަ3M'R?-Ddexs97v FU3:暏AKr`l1<,A霳mFUxi	yh&0>evppB43M<uadWNnYv
+^1(g!`ǻۯu?.;N1῜5_꼘rWp(g 6Tz{\qﹷ rͬ	Vaܔ!m"	>mnK? >8yqWye0MZd3qf$&k4@ẁH1ޞ3$4khFB)T
+s]^=7	B!1>t%]Ⳓ&.h%Qd<qhLV~3xqkM9Jܤs4񑗑 nI4}i!jcMbg%Mо8E1όaEYqNiV5%鵧=Z9t4׸\{kaXp+@LjPT}M`"lzVHhr~
+?k=,hPz	$*h/p\¶̝_>D~:ܲ-k;WP|{XlUKVY`Ew7
+(	4_Q\9a5wשGJ<.XVP_[5%n*L4 \~, $1.8_'`_凞w}tb0X?7DZTwa?ڔo3 1=jc=13SgF&+{K1޾ ӡUѕA{: LVIZ_ñ*
+=ʾvU4p4tUaSM0-MՓf̎y)lOp+Y4Q\qhD{AmWo,A&>"ۂ^ rlY,2`gr>%xk/y`}qsMD]#}Ƙ{aED}#6
+t)#P3/߅aтXo݃ZiY~6i9 
+8ئUϦ80%n,N`k$ˬd`kvUffApη]kqÊ8FWI9#7?ACsbMOXCNߖyLӃ*+@/JP(	b<h	Wo޹#3+R~k.
+R+G< }zrn;Bq`ܹm?94pÐq?Le>83p^so:@W`[~&DMf
+ϳ_$]mQڑ<- HOWR޹a4GaqƋ櫌Z} I.I.;D+A刈Zsu\X@mkvqrpk[rx.~@"X-Ӌ4yqc9$t%nhyTzGsu@}ڔl,8z9RXLgMVp&le=ˎv9	iݺ5[RR둑#G4n><Td2cFٮ[%ufS|1s<=׫Ifל.0	ZZv>MVtMaW%#S++D.eQa2,9L4IC5+ӳR4o=8&t|ۏFjk SU;yTp{{,|Qe)BMMdQME&#o]	|5`L=dK
+cT+ ;Zrh3\(ϓ㞝<)HVվ~R)KI歬Ж?0w_7}dDx#-c+-.ъwKJ`vhg,iX5gp{WmfK;)2];+iM*,qv,.)ETc|:s,l5h`}oaIdb& v:b_`Q_ۥCJ0B8LV~	44?>5ZrTWᅙ-Ml5.G@.L,@&fPt-9}I4x&lG5\%P몉;ZpX\/@6"8x8㎘_@i:A铄Ta.RiV.Εy.p7.o|܋)ᷧ\_\R(+=SdjhRZW+.IYXf<&heg@$wS}4/u hAfVƯs9xk):/_aw֬Y9gΜW^y/?3~򇞂-b1zZSlTk}YX4,vmp#V,b
+Vi{"
+5f<һf1_Q#v~g)As eax1^%aYp{!_XGZ`+k m1Xx6`/X>pː<c.ݣ	Q[cE&a篍 ==@u?sVs	݂Kqm,༘.`1H'@	f	=`'~Xy
+>s>ȣ}vc9_Ya+@O.K;t4[dV9J}iIV9H	e4;?s@^|n+etH_߫Q	Xh&eD`zgk	+\sܔA.YQ=lUj/yU50>a݃Z?ҳA5ZrtgxQ'M%xiuvjvt^;1x4>D}0ʟsn@/o@VhPk)ܰf㴌}e}Ι;(g_0%~-{gΉpIWߣax5(_aޗB3 lEI.KLN}&F	JlCk~blU0b.	uݛv`vu[+/(a+biYZ-)t.5	2J?>ş;Ix8O]Ef4ӂ"˯*Bȝ\GՍR=߫MBQ5'9=,Uո<2-ny,4Q LwPƿ#Tawd?{v=ܞ={zB֭?/)ūcsR&d,YMvx\6fbs
+F:Tn*(jx;SK3-ɭcZ
+uonSQ^%Ie:ƊafZw/C(Lhn,͸iZ|Ř{C[.lՋ*6'~qY%V`C:_Ȳk#n@n
+.Cl{G>2`L~0͆ԾVF [}(䦟l
+<`bw&ᓘ୰Q1-qPɪ>D:yHKpZ,q['TԈ*NEz4
+-/o^,M;`XQA첼fq@?[0v7[-[t%/_b^j?THXBUuxwqTV27rm~s#h%|#D״T<C't:.ScnhZtDzxwxgXţࠄ2kh)+hؙi3[1YxZ<Fe5LPkz\Z32NФ|~D`ձ>_^89paP "t
+[0
+\\cZt[|$q.u.m3}wDr{Psף[wkȻq@v(˗{EZ֭ pno5v]r;{)4p|s1<ec,9_!9g(Z8/&ɐ32eY8e 	W_7n<a
+}]J=vCw76DUGCal?`ON;̈O^IIZ Q5*)iʣXPo䜥yxW|<t\0&{daH^i}aF;=^S兩lo,N0@3Yr\Lfa`khx.25x[~lykHQͻb9S_.o[_TCΒAXUK#OP7=lqniJ3_PQf8Вsb>83Ēyb_?mA-/jeˌ(C7h 6#>,`Y=JҺs.IG#+@4|X)H4'y$wȝ,N'T{2)uJfG*`%iܦg{G}KxVlǜ@_xnu`n|sp=*3Jyf<brhnL̇=LccAƭNa',^zMX	Й6R^A4LM:Jd:ȠɯE9aV	U z+8rޯK9hB"0vAcecE:ZmBm-W ].5ڱ;TAVEkGڠ_0}g JK	 "M' !8_ot0UaEyI.7&eUAg8MS~3G`.|9]%vfjzv^@QV!X-ԛ >FQ|gܸq5|Ow^yͿ׿;wd1䑾sdA=X#*Z[2Ң\3Y#RlZL8q&D-ARFxi-d;B`OaUjdۈ#g*@Ǌ*3J91L "F%ۂx_v`ޞ88ifQ_UwcLo+8Ɩ7NiDm"Q_v4p"XdAaBEx9b/wG}sMq@|=Q.^hწjVt?x@X0,ӆV	?t'V1<fjr_NWDCų%8tS(
+okyQ4<%n㌄9J;,; =}:nAzWƇH nn__xM\unָ%#L_ceZ@l;M4´<ت;#B. las'`%%EWr~ߝlk	D<`&M=*ⅢzF8ۻ\2 l5U\Pĭ2ꇐws}iS֛%PbE0\7	tz1+{f^]on2g欤i,Y\YP&+%++|؟=;8KB^AVRt/넛,B_)DrAx
+uGszku,EGrb
+TKeYWYvF#2=3ي! A3ʘMС|gΝYYY/4U~'{V?&][1z%u-"srnۊJTCe^xy{ʭKpHWɡ	L%u7Ԉda{=qKK?,̸歷*Nnw`>	w#g%fH>c0JZB[H:(w>QqRq ,3A^8m-xh^nskqYjgȔ 82.lg%Mq.{Xa<jx1,'8ZS|~5o<{Y^uX*fDZ<fԠ'ip\FYJC1Y%'K xk^oy~Nhzf<^oRm)=cXr]S`Q5ˊzejLA;Su/ ;i1.-F'߇̽GtGgt./'y}hqnm!BzǾ2t*Gчc.|lՏKtc(1J˳&x)ɣLd<I̟kC\[Ma鯎 YuCC_ahT1/הHuɛK;¨8*nZ_eP$@KG\mRɹ]*~ڱm)
+6o9hy`<2H*Jgj[NR0a}\%Gs&RC=d-\NVPYA456_L^ekU|sun&s[גd^'lXy6**qƿ"z3(r H33g_]NEWb=BT&HTmj#s\ܴm 2h_ub#δ*WҺ/ 3krڗeBi93q>+"dLi\EIVdv2$ILŋb0'U{ђa_V,d/)7_o]n[;z{nv忭#e;YdaH<22Ю wEaL3kQzf:b 4f*y	JtzZeR@{ ,B]8OƯ8KNe>sRhI,PLक़,Q/V{ *K \&u찆WsFbeL}{[26a }4@ [t]ϭ/PƱ0=vL'^I.bߤyoB_J76!2|NXJR2_I`}aE+lu&ӤpL̗q[s=3Zah͐|;#Zg@iWJNT;FRkFq#7A/D':k*JJ}a.~+9s۶b.rOa<Ԏ[`±Ɵ	aT]&KARU`.v<Ɗ;?
+^LܞF}qYPSZ[QҸU4}TJ֚幄;3qּԾ#zOa?V?O?UT9rV!UKWJ -('Y5A`ӎ^=xY]1vrsη\+
+bx
+琑Xy[Mf+U$\jN?u/lmgM)Z^=oa
+M6;y4חc^uz;>Mc9YeYWٶ|`J\x`1z,G:wjjB[y142JnYomӍ>Rl_li2At	^ǘ獑L
+;ȶZ0gPU̍V0n3`I+{0׶dqb1@[Ţxwܡ\7,#TY@;zaFBmm7,X 9	LhL3h^!:n~6/e~ˊ7Me6@N~{.;71#Tf' Љv9;˲H>?ny^'V
+=9
+Tڊj;C .jUkP^j3OE/;7O610B@&[V}`za{ji[j%L1lr/#B%Ksk\EefA9G|g%9'dm}4{.%4s9R,_W\(,!8
+\
+HEZi66b3XvgwW#nMVMmi#.ýq~ҡjb9Pza>M媇XٸNrnf]p-:Y.63zo>`., F8cEGNˈk0<Y uvsܹsmv׭[򇞂b!AOS-n7uz;A~>u\q-9uCi̲	a5*9rY^A@3F,HzҌqҼS,4$ܔ,q:sHXȿiVR˶MW)#c~dZ[1Ԙq|g׫C{J=#rz}de=u>Y:R
+^k_`a"{su
+?*>XIq8E[g_%[i⾀
+Qr3êsbܣa;(	aAazJ/466F&Wj$.zq,hoi	y,<4ק"is~<_&Z^=6M"Mbs3T}5TQRrYel 1K$זZQWAdx7Z:@'X11ZRGAdжsZ`'xJhL+MZ4~oؽ=#⸥~~svbW9bK>9>ꇼx-y|[0o2=K#>mXeZ0-洣рi	+e5L=q[E_\TQ#DT<E)vIɧMƫ*J$*8kAV|P8>c
+sg۩o -Z	7́?DCi/>%כֿ(J
+0bW|=WtAl.`ʿu K 5_{QYo|U>ҸWw\P0cc]nOVD{(
+YD"1hbzR>dcaU~>	_ggĈ999^Y;)iU fpnPKE^ G-gclK3n¯_@c$E`sJ ٌ[e n?h[Qp_zVTOpH-'[@+L=Qyb7=`qS7tl(ڇO_
+؊A,xbjӷ
+YdF W02}q.udQ+"bl̅<*2%r]<k6|i<!/`,. {U nQU5ؠG1<| <7<2N2Ot2z3m9kMaP:m
+,J,=8?]f%a!cQ\A2>(5t%lPv'n) >܃X/P=W&wR]
+8%=W`zo[nu~5xp_-z7v#hݨClxOJh7x|5IgǫcܨOT=rӧ +SVi f}Dh '18z8/j^o%T$z|$4aRDr6om;VD bN0RDTsoP?!2hM~SȫVH%vCZy"*@ıspW蹜;+zZ:v7@j?V[U
+bm/b
+`UjU4i\.9yTu̜9FصzzjJS	-b<͍m\'	YSP43Z/c!j!:1 2s1Wm^`3X˩%7up7evX2NVw	-lI볓ƁXH
+ȎA?a|Ж^*IŶ,¬^-t+IuHE`hYxud8{sZߖw c.UL>R[_KjU@n0Vy#~OaۗJݎ%haVT,9O2 Y<>Yl<:Et+7%)RL-t;,j@.L$zHʰҹ)Ckʳ/w2nAS]O[X 뻎^p@|nF^6JƸqVb^5O{Ui"[0{7E:Y\kDwkzإ #szK?Qu/2TЪfx~7]CFܑчl65uOz
+\dKI3+;Фt3_MA.hmӪDY>S WWc^J)LQY+Rwʬo\'\h,G%uV_|<`f6	6S~pK@"~΢[{-1	]E{(C-2s+a䗯Ig*>0
+n!c)4+d-M[: 5)<[Rߢ\埼&\;J@4>'W2
+`"0/Z>'`0EIYuy`P\'Zcb>eBVTO<N%c
+N|u7s&hcltt3YxsR/Zu
+Tԍ05(΁tf|	&yOKY˻RHX+\Ƕdyl({a7c򏛂'A:.{@Xb;onBrK"]r0mu ; WüCxao
+ւ:;ι"z\硟#=-yXlZ|y@3="9I& ԃЀFzI %^WZ9bv6^SLOX.Xc4иFMIjCYIS/;f	Zv8 _J(<lvHx\^83'T{$y"ӤYl'+fI$`+#}cdI
+/p:z{ G	Zv]W{UmʉPڭ69gEsIEE9UAEF	 TTĄzo{7QFw>}Κk\VzhwEp?Ngܟ;9|gñq 20¹[i9䪢JB%nP
+r>H.x]OvBÿ&Z67.NRaul*(oi-t\<3z8xHFёһ*nlgh'BpVf/֥q$:#ȅY#
+,4ZsNzC|ுK9x扑<[5]uଫ{SJ3q8LuUKurA\(Ԥ; !;]ww?#{st4[)t0Kt zqDgƶ8{؄Bed[5)::"۱'rJ84EOÝM~^%-ަēQ+iܤ0=
+?)X<aY]2/)joԛ?b!XI:kcCba`N-SI&C\UR_-"v;+)Co!Mޔ%زd`7*˿pX30 2wOGs lCMSXo,4u;
+UbNDRFSz8΄rb7̗x1}{OÀLYÓ,7yTeРF:'6<gݰN8Q)!ۙS~yiszhc-UJwlzz_a_z?U s_kpa*TV婹Npx0eZ0}nD&>5m>'!|JdcdO-ORJ:L!CR)O֌/9QcyYx+'<W{-,RT,{HS"bE
+sh ,@
+mJ͓F(-R;,ܒӼ8x"DEu\F37,ƕi縆C㯵%]osLsz>CtUq'!eϡZe4̽PF_>0]:#cl7'UMjWuivUaKt5M͸CsuiO5XcvΟq)PsOjg,ʧ^b<N`pv[ڌ!;:i )/PO*c3QO2^:&!zZ?sx#媢N<$bۅ{F 1< 8ppI
+vpWtmt2?mErv
+"ja`K-	vEJ)z>'Й\zdTmh^ZYjzܮAC_=Qn8
+4` #ŷc
+nCz߂n`HJE܇zznwÀ<Q{fy3+L><94%Gb:ef3@k8Kq<[ lƋϜ;`:Woa~T1'Bɏj))sn)Z"甆ge,,v[M'
+Bpq\:5F{`2	UYyroTLGTriYq۠J܌Z?+3O.r7.+'DEļN<mM~Mȅwz`8j[ 5hlQs (
+k+T-004t[Ō|j4Ȟoքіt03u\ ʁv/|cʢS.pjZ<B-eǿge:ҼofDD,(cCx_;=Ğ.7[gC)+<u0${@xG7G"f3 z?ʏ #Qᡠ$OΓ;f͌ـ&oDڸ c_^	חc"h
+i.iO__OP:Y:]7?,<Kajܜy|T%A	t~w`"< X-YelrY{͂PlİcyVa֘X fnֆ6Y^lZeJCTk	9Ur4VE2%$<Wi+>f-< "H|r=\$nwȭOx*ů[ga;ABHUh^nYk ~xzx,[tĿ37
+@	CNn܄Wt;4hTppyfD,l`/v`I9mt$YN
+s/7Q*E攢4U5,6s"A#T^3ܘ:+=
+KS/0.t5#$(gp;kmW֙dPw}(.AwuXm "4!=5<5%.SPI9qS^Y3M3j|2PD(avSJXiJYBY  7U_'MZcUt\ԁI쥩P8] MfC nsilql#XԡQxZ:͖kA5ŸRjƶUlnY#jIxnq?6m[Mt'+hL*?	q"vwsf̍BMDs)^l-7FTLՂ`p09Gc
+*l	vE	zgC[?XOͱN>41ʠ7Jg<4+kmN>s])<7$cxX@ۈ)oXuiWhb۫<CDޮ!%' :oH0
+m ppZ_`pC&6ۊ_
+`2Uޮ`k@KknyB-ZUyk,4ͷR."/8TRT
+6Jந&$eu<p[Tw<$'4C`#c[@=;\EU=	MHc  /c6)N)ī|ë㑌N7d>ܼJ˸_uQwVX\XFm^^ǷiT]65_@kRK#RkZX(<-4O[<z%x=IKFRi:mū,T$*#T۞*MUO=^apu漀,
+Rw/R>|,9Uu%j X$t8iIO&j꽴n,4.] "WiL/r@?g_~HkdJFIfє/aI>RkЇNf'	[6/>oǇ`k,^MٮPb\ vXEx&c#iAuv(?{%Kb/Rn݅NBÀ)t԰Q<Nh찜 SqLuXjz଑?:VRͬ*H͓uK0M<R15g:cD,,is@	9MCB=g~`EzA=YWc秴<F4VKغ-G9p
+w7>oPq8K'ŋ1%#O";?VM&c5	RP,*vMHqxsB!L>]0:da=Q6MTjaCi#7yf 8PwcigO,2|F>+l;`<BbBF(9q@-_Iv&23^b\Oek'I\k=!7>f#DCHKj1k,[_HQ"1JD\t$|]vkU挴,7)*&{ʺ0؁UG2 Pk.1g`\O&Qnw1q86x#w5pE/-?M#&-Q`R?|7ZyadrvEɑUorFW57=V;o\F=	]b
+g:L]pePQkOE!Jbۮh+.C#yVY&X3D8*ꞓV^(@h~3tƙQ񄘗-#N)CSU,fy#!+Gw-<>,0CCG.긬M[ƪiׇq+w;~)_JQqgE{PY=:}o1P@vTXYC*afVtYLVBT**fJ]0Hˀ;V]?JwK|xV)O>x3m3u?4| XC2ʣ6N<s؛R]Z0'JԜɀvj6{i5|>=H*I[$,qÍ0;w>+i%̑1я *[x|f/0T+oxh`fVT)#=`SQn>CXlNc _':=np(nk_[ JY%mp3C(inO&X2JUMWg!]"c1^]64Q.RJD␜ ty"568]-sZUv%n1I~M:ˀJAz5\v$YopT<14.}t-25xLiUݤ p\`ǔz6\VTR%
+;+F ~BcҴ4JfjX]="q5tI"&ύ5\C09*Ipp1tp@gܸ,Nw\Z<9ONrQh q. 
+jz~k~ٍN9KӍ{Q[jŮSI?l{L'I4l]`Q\m\)ySC;?ڳj	UqF[7U)x3b!/KlPe#r+
+[c6wƥ 1[S;xxm3L	ZUؒ˘8̳0&*i\\[$)bXA4mD`x<*>UA={ZsX?]6\By@=̯H0RMbӛR	FCl]8߶H 
+Mu^(Y1[hVE܆fUklh b_XC,F\4(}]Z sԐxy7)u d8!tlA	ID~*h{BXNbOG\[LwbxT}N;sXNߗ]m1g>:49 F8y,4AhIPXɈW^1%NCeʢ-C^*76_Zଖ_Ij ]^zx%5v_qrٸRQZݢd$rzrsDT9	w0R<Dp6-Uӎ3#xt->JЇ5MkӔ|,0΂j
+Vr[tzPBѱpЀgdB ܨ&/1d8,[hxV{}E86_,7|AA1-9)
+{Qǚ,'E[Qp9$gNqڡS.0Gv8/;m )eu&5ڗfOU=h NK~+MlxppcNtkJ$[؆9}Qpn]w ԃw;~)9m{>XN6=J἟W筲r***0.cH!TrȰ^ṏ~{ɑ"OV>2=ñ$X̲$taBz\>˟AXK+`Db9Bj`ϱoc_JPFǈ}SЫ/	])>Ƶ΁˶WKꂌ[O<B*'W>8[}86cTdhffipg>sՏ!\Cî_ժeQ`6~Bzxt E$#30vˮ!7Ucy 8ca7®b̲^{ߌQFpT yҧ#m~R0prSGb{G,PePc(U}΂	z3|H\g!)XhT^q c	>5Mv>1|ּv7וּٵ*绖 ȂT|Onv75Su׶WW;.C:բ]!tAC%|֫J-sSe}vgt)?7Tr17}[ݤPJĻIK3ҵWUQ7񜪲\jvfI,U&h#8V,&ivA:0$uo3RKfUL
+zCiEcJ0yb g	8̑]>d=N.֑!",]>Oo9ʸ,jGc.?ǉԺcWS@eKh2,>X3Ec͠-cI?!X)eGVΟ#5 ?Yz]A4 7]BAZy%y`ULn`Q8LS&C	G{TEc9fY>c7p9O#ۭ32#VŢUx=Q<NS] Kc|,3y{J*ZMA1w/ $\i7-BiU\"50#x.Z,0FEru*rE;iLШN2
+b2/M049Qffzz^ [&!ηyQ
+GϞay7sV22]rn(Q4LR0Kv |WL5tǰ4)iCR+u?;h]#e8|:檵. Fa\<lF]$,~=^E?/+#,.O͕&UDsj/»Ch-Kd{5d!Up;<r\'wTV5Wh@.aĢ
+UyvPu6~jK1X!ܤ1
+hRy*Xpk\I#"lL#~,rJi)/MU"^]Ϳ/<M*hMYmT=)Ȃ Q;^rwHXuEXZ=!f=v>+CIO XFhS"T'+Og:UQ385Z{6'e'q"V7),Pͽ<nSjeϺmhsFOhxaBiןrjaw;~: 2nԮ[̹E.;vʂ+xynyU-hS< 2[UcKL%Ǘe<,v5@901ۡϪ@L9ʢL(`g˴5^-+EUN#҄/A:b]`0gX
+~
+QTI͕ +&eeAbapIvP೒
+OK^3r6I`RdaSmL6.;J#&ve08/J|erMzAs{Yg\FgL['5=
+t,0*~!]EZ=ScN0<UgCrj\-wls&]o.%̰vRnl htMj`kmd:le;4]鏮2xPJǶMRK= 'P[8FEC^e-Z.W9*@ݫܸQ=2:xL'tGbX]u ʪ|T<Ɗp{3Qw¼n Ӏ3g/9^)wI Kw1"ۚKq6tfF6{>%tJ {BSBѐj?:>s$"&ڡip6N+]JO2Ap3HG\s\-dR57*~M@`5|fD^4+K~g8elwe.16BUvv+ߝGa>j
+r/%e	=Ս2j74Mc/J;,71jOXWehvPϿS˯/Ō/Vp;Bv~sPW,=^A_e<SwbDaT-7W*dWu$Md`^5U+ۥa5,!!jLeـxQDU YQU+L[XK1pv*s.2HmS-^hL*=a◤<y@T̨֬;k.ƤZ"ST+߸F!Z%=]NǑ8r@'J )z@'6MS9tcUAX LWMTTf.}yk#^Zp@&?)ܡi>6}>,$a"~YjϼEKKZpoohF(5/#zWң[	.%ұj`%j\SucDL2t)TN-MvФ0*#/VV} QwByǗ [4M<KE
+:IUgF|p SyJU({B:(+ĲJh4IyGNw?JR*nzp4,73O[3V4v.3iߞsӫ1ާՑ#:M)m0Ἆa'yqxeA[Fjaiw$凑02gi!4	\Vb*/톰_ZHT>_g8	*phvo/o4Vblѹ8;߇Xux+yoW*B-&Hx`Ť754IBb2+tf9v_	{B>VlׂPWQWax̴EbVDD޻ET"';Ŋ'^z[S(O57:΃dáf\YCy=yR4.ao2U@t"4>+;تeݶe`',=%YzFB +Lg>ȼ|T&#X;qly+sgYC$Tj@mSlP(Z>.$تP/=LW?W	=C2F\n\q83[\Ʉ5Cndvde]ZI
+}SpRl,#K+~t\gz t7j}%3u?'>t:FQ?t-~_a	֔K1<	gi%w(^MX/sB/9&2[CtVO
+@ 7Uv3GTM-\Z0:.d`9e SKŷoV U+ŷV	iҺNMgG5%!Jn1r=
+-2ICxv]HQ>?OIz`Ǥ{Nhx%j|:|BC~%w=23Sh~;C(?Rj	}en<5!g04wdaX6ۨ'c
+0ȩTHBU\=T޽T[E (+/SJ`]-
+|L޾:?y׼ܗF֙fe|cv
+Iʊ@e)HO+PVs[Zt:)m2+]bb2䲋av,[~*.?As0}Ye,u#UL-^rmj_yd$@cG$io_*6{rܚuU(:á%:1#B$#R'2j0VIUVSux8
+Z.O9qsFB6蹩@RR^.TE I`ݵgh{ؘ(!]y/7 +(W<7&-ˌ9^mLu	ju:y5L'5gY_o|VVϞ%(-i4Y+<En]~53zѤC@p_Hv\#+ ,B$3GțNol0mbDw혂kL'6: U]Y;Y:؅n)nTȞ2 P:Qe$nibO8l;Pܲ)>av\|j );s=l/04w)"/ݚZ[HGRmq_2
+6Sǥ^OGLlxg)]]6b"S3:fWi+-mTcOVA?F
+o<N`ָSqYiw|95r3k߹*o SŸղJNa{1O1wd$Ey1˓	qh4뀕Vڅc`ߪ2AnQ4$2*T^J6m|lr'*];R\1@v2",{XT _>c.L(g-|Q2zBZ1јe!+eFZ%kR+L2b[$cOL,>>Rn4ubgΈN4A~"nqE|+MRaz4C؟Wt4Q杮};jyDc7[pde98qz00h@.< sEJ݀	j<@@Ity>K#'8i7-E`']!:)k+ pyIOHmR3(J.(ㄫa/98咻३F&&C[r@Dk>J~(iW,vb4k<UcaX8|G$Ŋ?<(rT]U MthPk[i UQ w@cIQ~fCHcTF=zN*U_QʹI<`%Fը8vkSɃqŧQK.z;3	'ܸEqNiȼU?8/9I `tbbw\ƎdaF?s:~2(	E[b1WgTc
+ؑQ^.pX3t=T|@AMHPw,v]oMW*z[=ga15ϿҪ?(kkMk5$r@KW(`Bl杢ҡCYKAsWylX]uacӚ%<ڂXuDFepR}xa[ߏ$Ob$ +yyɜ-XZ*Hf^b;I`u$-IW "°#鸻1-͈h^RJ"xxőBf3KI{jBczƞCs~/`.RL"ț$ŽJ˸ݫxing­yT,UQ!.
+m'ā(>xZkCd,Z,b#W 6O5KKl%(Oepo>(k:Й\ Ycox<6s1π0X i{X"+/9IM`U1W\ggx;prK\Y=64c\lxq3 lwB͆EPp@՜D`H%J!8_ qp3ӪlwJi3uutBVG٠Cτ/$ٱE[/.G05^Yx9{X,K.c>2 PآsF%EMοuJY}eZWǗ AؽSHQw˘7๋xV ={[%MT%ۙc\X`a}Ա3q{׏B:cWڟX0 <B=CgFXlgC[GQJݧ|O)\R_X1wOuOH(QȀ.H)'2W	i@NPS5tuRa?+:W?҂-Ep1Zc;_͹ 7AX\svMQ\p )M̅i[b1Yi
+Zt
+l5LПU'-vR f?yXKJ2U]t^VѲ)HkGDCBJh%O;4ԆOŻp<cA.gZLO"h=pJq:eꖈd(lz%he2QaoK.c8@XzUOaﵩw#29nT蜔otufN8tD6ӎj[@8;/XztiJ-3Ho0
+>5Nz`	wpXSOlWM$,y44nKƪV@fL>03JҰ
+](tuۙ 3]ϼfl6ʿs^ptlIoN@^xB&}J.E]>i.{q1NU|d6Ai`:NLvLlUo%QV`STi,:,^Ͽw'Q~)ܳ1W`(o+eR}LxA;)JGOj,6|7ZX0!]`pt#s;j0N)E3l\.[^Ta<۵fXE lgλ.|'J+1">($vPn@%Zړ[nJkT7O}@CMK
+a+ÒMzpI:=iϿ_EHlg1pޖRKp"`PIU)I{wK9#F*Ʈ _eUuK;HXf2Q|:C,U!  s8\
+!a4P}3j	qzXE(Mb1NN@+f3ӎ8ɢ3uךs\N*i3)||Ժ,eJHqU`KapA讳p $ӷ5]ʳa1N/L&cWF0_Y
+?)+.~ B{#[Ɏe6=~<La-"oRӏ׃Z~@]^׷!wC\% A$ېw//2W|*?s:P\]7:xY,};5e+
+Ç*w?U]
+:#>ֵ/|sieODsLpn.;G542 P5<g;'u
+Ig&Mf\07@2=6'5ދ[9/E5i6<q)qtMWU98k.	FZ
+/,lU78DrLءٽGݏ\5	j}ʻw\l0O0YO̗6vޡ'(^5Ccg5WwهSHq{bdE]q6.cj豿bҋ&գ	5>83Z'Tx[,<3)?=y |qRyF[IUr!y2@`9QdVER%u.8xyUQϴR
+,t1oLu_l7oV.0kChKq6-`ab1^qПyԫaăr\1:RW[g#kne
+p4P!\0ϱJ(ڋI'D3FH'</yt-6 ҾX,yJ-\W*ϓL-ǶL&(Fn"8{F}mdrd"㮅Ww)ь2	_sh.ɕpy1GY?ӂ%<WV%yVWj(6Ro.F.UZ=jXNOephU52%W]8_>2aN5h^|Dp"%ҕj*0P(	*?<N)t4bPZ'=MZ[t>'nkUDY/vWJS"<:5{J1=M[`g|9LpnRc5s'5sN7Ll栬1<(Lu*vwˏCpϔGS1g뭄ȬN`o+*U@bVZ׆dͬ)	htv095R	V
+?ƌ?(*qBc]!I0]w\SA9cYu°KS/|풩NdoMPJː#?aDꞛ<_%i-Jdv&ai"˰פV:V"c*V3uh.6Yًˎj;0{騩`l~I,N`u:VW_4ٓԤ.Cڤ=δ7[ڋQ-5~FQ3O2NjM[krj^}&ֺDڽ#	+]NMU%׼T9Ο3Lg.K3xVR!g'tR0̳GG$sR?&-+ 3IwEWVp'
+m0;:VQq@vtvgidmSoct ;j_ѺOa0(fMwLJ?+e FZfUeS\k\j"c
+-JSb_0JU-ctŧd'4ɬ!r*f>
+Ч:*2p0'*~ǵ(a),jHzƸlPr>$-2Ic
+tvU&N˄G ّ7TrĄyfHQwMnRVvvv(?/&̋_YvT_"u\~j#=%^V;ޕ_°Wv#*(@R"h#*}/`=5{4/vX뾒-2JW>B7i|ۢ@%jiZ߾<
+^z,vEצJА&{N$y2%hcR6*6d%n7XoNF .AڿƼ7SqLBC'4֕:kMP{#Jd]#|!ƺ͵[к[ĿLoEe WJrm'%XPs|	=i*鰭?ET9(t,sp&.L̹Ss5:­0W`kbLr3\3' KG5Ol?3]mZjǼ?:(Ք"wnaT%ӍN7b22!"j
+8P*֋"O~*~jw{]CQ*N= >bWϊ"nd$ׄv[IϷį2q\orYG|K;ڑz5q tD(Ćofv^pl, 4]mV{8L:iexLnR/Dpw
+Fe@6&%<:\$wK]텦QyBr*T7dw8x~N0R*Op&=`*j+1-a1$k6VR{~:<qa9=0=ݗHRXN%Qrn4~Uoe D?<PG"Wq㽋a}+ޭǚb%~KhG"F9S5bDs속
+EԂMXc/rvɠ'&5\pT+N(~ia^Uغ.FcnM; V?ؼ82";/=$(=^"F>[ӸKhD+p.	Tz= Kl;cy7:Ę|<ts>N9RU}f,,`J*Uڇt0~[ &׀[÷8?^tOE'}1xvII4<g3REfgHhy!ҠcQr-%GqRFUA#~l\!(:A口#/ JpGWwUj%u>u<쭊fZvk%k3q	n-kf才 ^'7n: 1@s"hsui.+>9p4M pƹi¦cEuPU7]舀0HI1eylURTILrLdW5ٙc-z߸*v5}M4&s)=TݤH1f7i*p]wߋ:5AY+/Y35eF	SCVU[Uؚ_H~N0Rxz.8rbotm*l74aKy992,Fa%ٻ~p[H͸Ⳁc/,rҦ{+_,eE
+<c,NoG&oZ[ޥN9\k}*5ƶLa%"6e2m5Plf&ѥiٷCJ9*Mv
+I@l|Hbv5wa{BtQ!\匞Nb4KۄpbmǶäd7Pl!J+^	tb/IMRdU[ȫ7YbUewӎA(7-ק8@uy"?w[3u׺[ָCz{'LQ4D+W_l_sx$AlٟRu| (u\9'y= ŉGxq@'#XR..{;S7zɕcg4I7rG}/˻lҁg<4~G#s;Y7L+P@~sނ#*saxCFu5@<*nSiN.laX
+զk
+[	nRJTqSE r;/RTG^\ g'6U	btbQ'j|<9xOьcf`AXה»
+K-9M!V7X)2\tÅocfw7t'lwB*2;;a#qȧx`XkʻKˇA*6} ٨l[ϘD3V89&t?)1FP]2k,Ro="8)bg\(F:aM.|ZJ:gO`r 6e\ 贂؁	fH+;F/sB *XsG^inȅeOCO̾ejfGMZi{nWR0mr2/rrkL0e?b7(mJ=ϼw[8<!`e3CXUI;q&WwURG-pf\0b{ea {Jm-O:D5u4tgVQ`9>/
+Pu
+pH.)lx=462)XψsUs-]ڣ;BOZs]'˰pwJڢ؇WUsw*a,?G*~fpEgFcy(ue~/9E!+và9N5xiY;"tf?;Gv_3o&F4TX؄oiu<BP<_i{6O7Yִs	$:
+΢/x[OL0q|eUZ*8`S~g(i!r1]j.آb2YS8<}^a	dmŧ݀&]!˸GBl\L5eOjWC1O
+W]==IiK	;Gy%vĈ>tY=<a o"؊m̎#g/D9Uo0'<]W
+;`mx4k KwfẀ@P͝+qIKY&"R_}ë|Pq9O߻+VTd,Z.JFdW.KnAXrX?.By纲
+~d6gr2gx)Nx	WN 4iyXv/|v=oƼYh+?9XB".;0wǰFI7hoy րiݻ0.6[۞ylԪ\5\mΎΠUgch8KRmJ廥g]ڀf.JF@A[qeNM>3rA2*wL+4e~Mq𲵡M*" {4="Qry8?I:yF04EmW|GFKNʠs;ҩf"i}Lr(װc6L1簙7H8Sͭ8;vPCU8Jhf< [Qui.HI./0\3ME
+f)y'tNj_V	 ARPEu½`:4+1Cf_: Nǿ܃%obdT*PvMӴpآs-dVYژsq's6Q]&|-]\Ϸ?tVrƽDk{Kj	FjPV%N5lBou1OGIٰ' K3[t+ο#|uK2
+ZNX$ݕ4Q!/R+{Dm-,!gWѼ\GPfExVR?.5
+m\6b1{v(dɃC2VNw֕FgTRggW˘Sٛf oL샓4»}a'B\)Nhxh함q/Y=a+/h|`jGȜ
+F{Ƙ0nٽH%%r;6CNJ.:oub.I=8\Z</)jWN`eGJ;4SpujH-ݒmR3[&WKdՖ]--Xc!~}ㆧ|@W{#6<գSpQx&8v2QxkrR|T!J</)u-Xɍ}17j0I*l`!<Jν:tp3ϵo#Z[[L<Oxf7\i݇#ǻyr>=xtf-09t٢-+sMv}`LA-j':Wީp
+VNnp/+ji
+^u3no9kƪ3Ig*iB0qbDGDqwĖ)
+>tJYXm}rե9?UMٮYeA;\.zN/?88,_"g͋sd9H\7jz6Gl[R1UJF9|KX5v 9>+E^\ o*b#EbKaZ=btJ&r_HF/M8/9·
+:Gm,W^Ť.%ZbfR}@I`	UocEZz[_x6yUS^q'Ք_7[l82D!m!o(B fp 8N9ο9PF+E {/6bRbɻU)ĜhӪ;Ң8=oaOVK$k}qK=xyndhQ^:DBmS)}$iJd@d2^.AR1.Ҳ7C	X"+<^Zi@9[|v}9xOe~V{aR_f\% //ȼe,FKsՉi=sWKA%B&1kJY(R ° QQѾT<$xP`PeD|?8ȿ5qt)K@17-oBea[lt2''F	/lJikq1{6Cgv	`k=&s9K]Do:/9ߘ[s:DA }B2βO>UzXMZtGiG؞WchcRd}W^7DFi&-N)U"a7N/]4X+զyvv-{~w凑tެ%|*,%1_+#tۣΧ^TGWa(@ _,1`=`}WuxUI@%/^U3BE
+QbUw
+-Ҽn=?V߮N"KǠbS*!IEpʰn0e KU@x5gbᏻ¨$V0W`B{`c.܎-EN)xF׎HvJ].;U$o{EڎakcRm<3cVEV5OEv g%+*߽<Wx-'@vKR*WKyKND?8
+]&&>sFb8s6@'*jz-U缤78͓- ~!3Nݘ0y"wXӫTgϼp"Z:`'yy{_YكFa*)C,`>ՙbs,8weӇ']b{u%ݛl#ᦩhgT*tR0악h-s.+/ Uw܎㹍)R7*Jqq)eH\UQiktRB %GuxT7|yLUN-zlᆎq4iJ*"*pI:xDE3/F.<!uHH t5\l2@G8Q` qzgևF*@t2qHpk1̾svzR?q/<2(;w凑ꓱ c|",}c@y22kλn05kU%-lP`~sp3;CEE a4#PrM7<ࢊ.9/C.98f/JF@%ps\BHc5pVi#%ʹ,_@~j2}@a'؂~SS!osGkoDX<AϺy:63uiJcUZ)ü(KF0p[&<\6/'KX˒fwe}zx`.'%.Ŏ5Z3Yփ\OZǞ!GO}[zYJG9`W;m3kp54ĨY։/LBTARsSkAR+"}a2Q@i9`(ۇD$kL^vmOsvp|pywH~sGݫ˪
+[!}c`\*9.n3wlPyF$lL0]ygW=|$"5CŽZӓwA܆1gcC~o<*C{BM`ɬݾ<F͢@*U]k x>K̔$/wb2qDD=	3LۃP(-6J8-FX:Vx[),0yi!\5݅򇪲̈́ ]聦Tu[x#k,
+\9k8/]L;c'F
+42^>KmW*~o,Y7,Gݵ}3^U(®xa3_|<QND3wS,x>sW k)Wltpo#
+8 JW6Mj&di_.	e<KT	n3PR}ۓNhnV.=}R+\Sӳj넌/9#ɿ%ǡJScLyr]>~0Ys[$LK~(/A'a(zg;9(p]][ܵwGd;,bؕa^iAU!oBKJbVN߄AB(t]`nmL '4"' V!ǌ%iS^Zq~*7iWѐCz2[Y+VEƱk*"lclA:^>R-@%ĳmg{1xv$@c>/'F=ُH>;FuuaHdcUӚr(?{4/8 hNhxwUkxNN6+Q.Tpk<W{|Iz?py&6kBFO @cα c0"K o*Eu{0xOC'0ϒdlR8DsPPk[_4)kj;81_A< H#(-}]N
+[9a.C1	T{ cE:
+>o[j;Ⲡ'<!9uJiF5rR}];aH޼xz#s;;	^u &8q9Mu(*o}Ykov1n
+ }D]';£Y>Bn\k=Z]s%-*cAM 8X`h>?9幪C]"XwJrwC@1,]l-)ᕧ%d,`τc" dPjC Y]2yM0#HhYAoy>ivicQU*ʌ;(l.
+ZKgF)to8HrdvAL3TN }IyecQ
+s=lR\g7j%_IRNaAvj['SqUzng{$}gZo F;:AY&9,1l0ĿT`Uy])O,,>UCyuΥɻm~R>ڎ5}9 )~:8˛g'фHp<W.8()}WG6)b&~}7;8k-->O7!`GQyʿi,lkGqTpa9OΆJ;gq@`7
+Mե914R}&4<ĵx![qGkv[tr`.!=Qt`	}
+74[ kpp1 _r,/̕p\9// qN3c1'53P^UtaU*eB8gcfߡٽ9}蔸ȥk=yN?muQo$Lz@.xTs=Uָ
+&dVF)yW=w7,gz+qŝ`"m,s-nv؏A:vXD0汧TrlKk/?]>Zdʷ-Ԝ`۶Fxhֵq+<IkmB@_@]Qvd75ELlYw5vU/$%\Ҝ)W=҅aP]3#~Y^?h;b5/4 _$U?I3;'`4-W\EvT4N.Ҿb]g-(݉TY0x'Ľ
+{βùaLQ@a/.;sm=ڥ_Kz'x .JRk-ܮkOS9 :"# YxUSi4$pۑySCJpOP3]~qUy˄]:|XOۘF^!vf8TʷύuPɵinAQ뽺+-YoTdh+.6_clQEp}=YQ #JC/nmY9OL)]`FA*|kF;6Y-:ۼP:0+c+ ]c8Fvi*ᬃ #bkf\Aa>HC?:nKebϜ1񟦔f2>0Jx@[^^tAؽ.jN0R~pYgi;%<-֏J,һ2-e[*+Y<[Ya?1<;MEZ`һ~ޮh('zTHІE1ai8i9RUe'K})D8(lAnzC /H52}EJ	̢ntpMr7{InyrRVĄW|Zd+^YǦ@[/zsIJ<BnK_N~ݒQݟ?I~*YsK瀼SJ`I$9κRiY>)[.pZENMH#i<@Wz۴	3ZFDKK\G[&Zlw.'X_ZER*vKS3$Q-e\dwT,Z.W!.Te, ȥy0<.+ϖȜ@H/2}1_Qhn`R8.=?V][%{2 i'>m<X9ytSȒ<#La^aw(jD\sJw2^=ede᥀lec
+5,(0tf&Ɠ,y9$\m,95mM\P=F	G.j =>b)mwտfVd3,`WUp&5"B 铛4g	
+[pSx:,~fָ_fɱfiN=*]";پ4Vp0<)fEvvM;a#/ʻo+G}3+&Vh3ճj8A#D{|iC,+.(]+Y?*$XӸBR, p"FD	ׅqI%4JoTmcXxs\wي檸)WQW
+\8K'pP!ك<37YvC Rl}r&RۻEE18ü'$oq ]ZvQL~#fjE&R?;օaI}et-:Y򰣏=:JU_8׾nĿu2s_:Ö4.o,CNrZ/;ʪ2rrmіV1b$PQ̠QAIXEA""HRP DD\k{ޠG38u>{5ZyM IaouMNs0ڂz[Vk7n<u K;[m˽ puV/$XJE\(eN԰E&>J[-a6Bp"m&בEW.BhZ[[R_?.Pony!10zp`qphmpcGGI3~tv+Sσ}yqo;rTBהZr Y,]gs&_a/i{ Bյ:OO qf)YηhaZm4
+YiWLb"YYTrUU-9_yp
+'gV0Kmʳr:	+Z^ Ug-fI"Zx|xԌ(t9] N0w8؋r7-_JF.I]W
+]S7iux3~y/{Wj֬պu;wG999_~?S#*qQ ee21-|ԟ^htB	oR KIq`ܺף`J剆~9L
+JO'P>O)A|6jW)jAKLAێp4,3Ơ@Aȗ.-ɐkuj>Rhʳy7(f%/<C+N[x8	wed)Un*h&=>*CfBryFﶗ}o8cy>,U?Al 8~х	JŎ	Uq6EYU(?
+EZ.^K5_\ⱨ.oL`
+gZ}Uب
+)qi@_j`me$aϫ,|WJTϹ#v)7JAY,<@Z8l@)ƭ(n:^pVo!K%`^RcETocrtϽiz* {*&jdWvqu\),M.ӛG_+
+׶s?{@7ϳ9utUʋ Ћ-ֽe9@ݍ5~7d.Pgv*J=KmIz%ɚLӽLiu `T8RStg`J?R|W .ij.VV, ?"ApiW{0t'JQx ;*Σ]cĨ\xerOcC&wȨXZvV.>}SNZ*H7RJK.W_~xeB?vx܂Q	30;Pf
+:X&Ҹ5]> Smnntg=`ȽAG[(vRl@|lmɶjӠ
+YdX. 3{Xi'U|͂". j 1BHl_	xV4o. !cL9,\̚ŕYjI'&BkwjW[)u;GMw%!(c5{&X-
+;REY_Ŭ3BZ"?oky	<i#fFT~t}'y>;jfʵ |SxE=2d"jQRh<㜶ou)vAK=6swxB	P4orރf҉&`K|K/y$ZUρW<+'=>c&G~ݪnHMd=X ,wtnϽO%!cFUr0Pz(;McrہoLDg ,	7 Ԍ%t}IaʋS3n 2#UdU$&f&.+n|&L9e2q$TRAՙUORyR٥4J=K_Yp2Ǹ,}vdzJ$/ühx1Ƿ}}Mi$::1߶kVzܱ+l5ͫ-,
+!9u'`7eʔlD~4;&q<?6 lҨi:2L߂At(-[f\G·{6=yK|m1^4|4jFkYD`oZڏ꠪ 4/ZFBĬ([# ^pNp;Xe+U6H܇لԧ7-c2!If4[2ADk9oT¤NLCՃE3݂b|_VK??{v?}Xhah0v*JWN?Z>	PES{1YudYh(*9V]o"zC*"(Li%/Ll9/  y0nK7Y>)pmp l	nu~FB9;s|B~[C@UhZƬ_Z+Gƿ	yn
+@QJL<VS掑J'u^pa3j1_=7*\̅
+]~\CҏT/M-qQ}y#jۀ?e+^եJ8|OS 1`4tuD1Cb?3_53r%#x[~ګ0J7gi+Bz|9[z3
+ФsM06I+Oh, 9WV7GkGݤ4ޚ&yUrΞnx9	FT9&#i*U'?d-)Ua?Ǘ&%#?Q7]x*E/F+ rm_}շOqv%&&>|СC'tRiiя:=zww'f}*Ǎb{%\ܢ
+6,P1*YOƌc_[9 Mގ:!^~wK@gbHpI^rsoT`r[F晼ꛂGfck,+=3q^X?Q	7˰Ր̵'?^a,޲0y!fBL[l&GX-&
+~y/yLzh偹Ϗ= b̏JÈv0RW
+pQK,9gH Po(y6AFIXj:Oip@].	 KӒxkPJa"&-)ͥ${-Xl+ثm66AAVE߀5(s1畲)HKFd.8*ζMV5rUeXt܄g7\&nt%`dǖbWkn9
+vy\Uj+ZjCC{+W۞a2YlڛX{x~Jv*Kkʼ'GSex2wъYo{:X<1A1_L7?fOL{Z/>	BḬN >aOKCVGj붺II#4Ks%{:ҬK>,NBؕe5UVWw-p%v%?şӸ=x?q4[-ͺ~VVJ}R@>)ja3Ɗc# h1|Vڳ>[.<e]֮]R S;@Vxh.]151b:8ɘ536k^ss$uH/փ<b!)=-8/fc;ypG}* V$\K؜wGdG5{ ɭ38GCQjEk7g[0;fmbZ[`1e9)L~8$ls/002ڍ:_\f".1&x`vC{Ho_>6`/6vye!K}_HJ</Hh}*|YN˴Kpha~nyYSt,[-v+#|
+4,QGSɰ%합_dZMbs@6ܖ˶D>+MQu]):wg2
+j/ˍ^Y5ĉ.M`<^p:рˢ]vܠV~7͝%Dm{I[?R3j`/v_VhI'qmw:̝M8|eL%._$qxI,X)]Ԍ-Uyi U(c"	>NJ`t	̞<Eitkr,پ3RDյ]nWWt4J|DwיV0SKԃd^;ʭgjYsM|JF3_)s߱K(njGu;ʝ<!IՀ8[DKS\2]./^r37.?󼠆Й3.9	AcիWNRjb7hؤQ2g @h$'r`-wkB	o^[X|\_Cn٪V9c<mk__Z,Qj_Ou[Ez!4-0#ڵ\ZZqY󢅳z2樓KeptXB~oc@
+ɏN<&qbE~56i$<)A/f[|cVz%s]Dsy#Q殲c/nfa޸cpotyѢO7hYZ^7vޮ';Isz;IMV-	i=xj%<&yYp[à;Ӄ&a ($,dUS-#oFy*v:AmLVɾ{u!nAs<xASqLJ?Vyovp@etVz#650DZ k5~jѲs=argЃXQmx*n!<H"E;?l
+kz]庸g0*60gE^n+Ã6#d^0mOG]2ebVv&.c ͦeלm2k&gM֔.O~ś{1 xLr"gSi7,3d)^0Qr	)*lg؅rUI&6fH3ɫ귧rN߲"G|4.	E*{ҥ|POZ*Sv|ܚ;L[&/ɳ&oy)kپ]9Fؽ+Xts: GW-2KLu | ;'l	50> =4v	~=UEu°Ņ)/r$x`ҨRx+vUǀi/Sb{;[ 3}(`H_mnez?<-)i}7`ž7qcϽļO+ag<J?7z m鍟i/c<i9&L(j9X Ic|iQp2E_Ap3-d1XrҁW-\iAvݪfSJiymHjeVNtdqIɴ3
+>fU<tfi12LX2?jm#R<'.u}jI=j-#s`1ߥ79]t4 [(*\Ie[ng0f0bU%+%z#gٶԩ7@Lx|rfK
+Þ6:z,	ZP&ן52yqj1!j1Z%;C+B8{ 9nZ=vAm:+e]~ġer}w1%m/^a@IΧvblvg:$׫(IlhVh ~n[^$-;fXNIa^]J.ZsHv0@z^ʹK$Yp҉iq~ 3s*&_f]UU|&Ҭl/*U
+RDx4&YhBcշ
+g{XAY,Jmyp9}i~ǽzX4|6BQ +
+G*88v9s
+{5<]lJ=I11_&H@٫z/ b1 z,1_TIo·qIy36d>0&vۈ q	A1>iYOFMO}aW]|kZI~ߍ( ?S;0f&VIs֒d%
+{iY$E{)gm"Rlgk^o$	=]ߗ){hh.mCܖ1p`WD6Z$l)Z%X0)e}>d5\%MBV;^?EN{j>|$(-ٶסۀ'mn|,VtKWytXǡǭ"-<}D=ÿE4i}E)&lR@f<<ܽql/sc{?bi0_v1_?w yMxJTq8/>W/n/VzhPA٢#Y</[v'eV'(W_ypZ)]*}i}D<8`qJW^I,TB	EbWEA4n˘/ɼl M3+,[OXU
+<]c|xzΙ^VAXڢ_y^2sYZG|L˺1[w'á]`rPt^].j1K.{eО*x:u.=L[-_#T]TFF[XE:Q+	qqc;8Ç7j(++kufO***ZlYz9L ?zjTB5LI#`{Mʐ{+@2!cb)["!3]+J֟=* W=2_Z&*s7K.p({"˰^7.&R:WzW	ᵖLRu`e5r@0'Ys%lJg21Qe[й%X Cfg.d2jafmL'uMA=SQUbԿmdaI_g2׻'.:Tk{+d|O+Xl/YKfxSYU{aZjOU}q,*x!}ql~0J뵋i*橨鵊P/|x^7[	M͂	^nڏiS\K [J.s-VxWdkXw^x&ZGɝko\ N`/]c>E4ЁAF϶Rz;	˟7eؑlY*2EzyFaUb0<cp^[{yם?zt"x
+C-Ck*ɗ7Õ>~^cͺțxQ8>y KV
+J1}݉MQ0&q*#$84:<>X*L)w^YyZ1R=˚.ͺ0oEAq*HQOX	`s3>Ji3XgM7{3\ziV2ޯ϶ZB\{|y#㒆ٖPxh"ǵzz Ծ_SD n~C+VruY}{x-+7nb汳ݖ|O?ߺuӗ_~9;;^Q{̽Tн*
+}Z@vɯ;xR@셊0qod.aXuL/`\I@p`(nqS˰ӕ17}ŷ㠽6Q߂c]eVGuKArsJxV(MӊS;
+pBzpSb|f4e`*yYNמ-Khr-2=<)>Ӟ2UkY-2?ͣu~7{'y|-TB0(!htj.LjxX,MovAai^]jgq-=杭U2L(=J+>!	~,-5uێJ=[ +H_)O$z.'v2E/@[u/lS|.G3^I7M7SI+s + ^1?WP:ϝ)N}0%v(;lFq}y^հ:VmɾHkNZ>z	[F7	X.u}!'j}wŉmAZCvUG7y\^@ԁu~zy}{ÐxnխJu]x(q|@ar]w7Q	Ә43P}dY!S2J4eҒ|##YYWZ2ypUһ+1)~[Rn<=Ӟ(ɬ7*aWJ ֞kH :ZxzFn5#*!jBʉtwΒJC2w>I_qDVOr'#%&(g 4aK]}j/1ɀɴf1R<;vQ)5ZqhqA+1gSb^`5~g/nu{)3f̅6̙iuVvdVEp"+0EPa6rm"a[E	+j't:9Pƙt]fW)ᘕؖtB"&/x4Lʴ`먄R	ҦPƿ/AP$oh|8QH3m^~݂QO	ndt;7yw3X9)`Cv+ÛZH1 y3\@
+(W4pvbA/7c#`H(ҪM"˂RE0󺠓=Vieo`RGS\аA)XLAO(-@/bZ+mw/Da:"w}Igpѻ]6 dvWwb ó35yڂ"Z8㴬Z^tz4&]RV\>kdi@zԓttgPZSl")#lLl
+3AnЪbێRZ%2u=}
+C)ڍeFݡce,.2|cvzzFmG.L~̧50kgdL&껤$NY9+f{gZЙJrJªO+̶+YT2(_e9Li?ѿTU`+#3Ieq@	#P^XB[Lɏj[ӅwLsN[fE{soF09Z>8?+s!
+Vy3	qa^ap/v.yGL&WfĖxKvXl^+Q^SQ|}7bwäڙ2_4	߃^w2K=474?6ii vaFX$~ua}J(}S7,vQJWm`)kGwޱRsw2Zp_r2%nS 8.$D0XKø=SġL1R<D_tg/Ьtfw`˂TvLrdpll)&׫Ji;o̾;aӠm=וo*מlo:WVbCiq k[_-^[#_E/MٜwDf?yc\gL(WFm-:Wc#gP/&=nO'eZ
+WD`FJ8>Lt,BKk`sl7;<cU9}.R5^@WBZyО/>I"~Z]`K˅z/JE26W*Կ	y^fkr)EAR41	-$PQXSM'RWǏNwTiQmD8rs4rfJhsv̸|PrP)-˚]Sb5$+ͺ^8*meDZ77a͠z@Mͩfk/wqWBxկhL .gUJWhX'S>!yyJPqT79ʱe,Eb1-;@ Oo[jc ,?|AI
+eqaΖd{V߆t5^!C-
+dhVWr	b_-vH3#e %ԩ29.gPy3+0;V02#b	yTIfҬKI	T<8XiVmѥ<Uh-=Y$Y1](pBMT"j0ݛVdcCe.`_L.ǭDy^mE[Um;Op[1NN=2ta#Q߂p[P"V+T磶ӧwE>m/`ywd	
+~H_pfE=:Q]d[@X+P+Xe2Pyk۝Rȭ::a!_ K:d^++})h@ֳ8߭JiS/꣏Kd0˻kisZ%!0_h' 0[?~٪=mm/V7𦖗:z!Fp'
+`W%Ɓ\|?Lتf?`0%c88K*KJާ*
+bg-ӹ)P-L[ِkMVqE)&=Q>6ibzNu8V,כq=ʬ3⯦d<fܤ?p;B5{z%%<LF`7muè*m74wVg!=rdn-#|Uصeo1l\C
+?k(B[>u"̓|?=e7i%TTpYiv`a܌\\պ^eqU/z$&	UQC/{q.`eG,9p¯^%(].r.Q"'l~'D"^*oXl7?mH'"13T>Fxl;T,Xe`iR}s.l&A.;u0bؙnm,+hx.!b.[
+IqP0Crl-8؅z.1@39R-lqvטΪZ`gh+ɬ7]U{0v+zx)rRM#
+zV`YWv2Yu+]sS0oǂU:#d7^
+ ^\byYщA1AqIC!E)M~m8Fd6Pj@}>MTE`˲wO^X`*	ˌKC'.7y1ZZm~FE}tS1=w:kw6v;Gp|񲠷[{h%dխ|zp̱UHm<`Ƨ?2V/Y&+3s})7qL7E~ʘ~@7ċpA'Wc xf
+WtLIυ慕ۻu-7PC̾Z]h.`Qg\W	mq͓gt[+tǼu110]ך#{\}F58vok	dmãN5,;a.\ZsN;9'=b6^_J*dPys@
+jP*&24
+af=NWZ86W+p*?^߃evf% a}}箖EV`f~]Q˦R/7ݖ9V|DޢW46p 3 ō/ɬcFFO^Pi8[;=}lhugLj9}Ov3"D(ٶz?R3.>5ɯpE6vn#]s 璴/VXqשּׁһ#5$~K0JiwE>,aY<3Jy~X_YirLd'`PlRq:/`ͨsM#vV6 <߽sLz
+x/P㏩UY<zBjk{RBrthYNYdw<ԏ7^~L~}~zqh[Xy!tw%Z1W4Am*p}.38W:
+ִ3C/ybe'u.#߄0jߡ1DTOUp}*8#g3hoVhP(Łd0)@wˡ塥*e@qo eqIC\
+ƫҰo5N]vz2W#kup0ȦjԲtK5yȈ2pT)A톯&24]@HqdqI(5\?LĦJ>Ju"r=4~\Fe.E
+кV{?ŵvqv(]3nJѺdJ^lCO`j[*p/_kNkG$JRG$hlz5^6}acH'MpBAN'`0az#8eR0Y]Onb}f&,lňޅ.ͺެ-{<u!YWry|2./d08%W
+^AI-6|K ,9Al]uPUNvX"sScjhQ"6gCQӞ0Q,sԌq<hl]`T`Ycn Gm8J8T+|OS_H=l=HƏ-8y;xp(ӉE].{mW+EkŋHxVV3h p3,nѨRz`Tz }erpmAvfN-uh+TA@:6Pۂ4X`%NԦ-y}ip~Z}"[kNrfNzrk.ǵh^hP">ʰg)`d̡K@7г夏L(ǹu=s&mphSQSƊmiXw4-k$Nȏ/+(N U4>of)F=4R@,Eqjf_P;YWVpɘ["V],tk %}l]VW,t(%Me]ce*AX)̉09V	J71̜KSq ?7E&Lc.a`q>N3@ގ'fLk|)J(]TTŲ_pY-Ut3kEǴg~R}_{a2x׷nW[}&3`xAp_7z[]\+:MPע[IO7t:GCb?-Lzĉ/s!KG'<>/$:!Ϡob]zh.ɬm~PVTP><rq}~=tEz`Tm+ŀl{IfK WvTzl>7wU
+aCs	y 80=Pۆ&F&8f|kI;r!}o|yI0ǵA;#A-~ ed.kF;,{h%й<wcz8ܻ[(5V=KtqwU46`}wwR;Qc־VyY YH&=MÅLƔ]zM0;L@	x0j6y7<&=EǙ&pApG.3!)=p	Z#IӿW[TѪ2^`Smˌ<_Wq^zIf	4>3Xeʡ2C}ʷ_ȯv0khZ|7{/K3 K-eLɸejR8Vs8y\p0pzLLowe E)=\V`hLX1ǁt6 \&A4CW3<\7I䷾
+9@	ϑh~]kҶiC20}Zݥ]&mϽA:{?SOUeM0~!z{7e1TR"Ͼ;W^:e豇bc(̋B+]TQ"rxm)٘~,3w8'[GvuPW -w/vƩg	&yylg`R=8|7Z2Ykt]K2Yp*1ԓ%vU`gV=ZÍ&`ZuM&)uP`^K&W8s_?,쮽GfTfW>͵u+bFhrcBs{kxpn)'>e@+޳e=|4j-8i̼3cQ{EFVxc<(@bqnQ{Lxm0>?#vݭ<Ajw%8-㇡
+v 8QraSCb? !cFiE~.x0*ťWmT2-,ΦjUZeK}Mw-B+Wꂧ1ʳ1(hH`n3<T|z"Nc\ØfYkd؈ 
+s	e6}:jA2?*XpcRO˾v1q`Tx(
+sf]⺣ў 18ޜsy%^9&;,^A%+
+*gk-)B ƫv,@,L[&R:P8 ,̪bb:y/qrgNE| <@J\s"t6=8?zRiSl
+'&jVgKOqKCKٕ!UUQvx_^<8l;ȧ\3%U[<PpcXy_/ZۻI<hSXpztb%.1S܊?1Lh:=rvbke*ajk5/O'yWrW^
+]I7`TqI0 c F\]3
+:8r;HV, B8@<*{BSܱŀEۄ[D޸%k
+s5-/,èЕ$\b+}5n^#w[.]jtSOJZ̦L |PũC<J2&: z+6"-S-q 4&pppe]J;ƐZin0i+OPϫWS9#Bk)t;/Pzm#?:p0Ld{]K>/\pnj58"~.|[KhN򌉣v3~(p*`.^|0MPrl8&7`&2X4mE)ݸ%Bki<V=VV
+iP\D$[o|X)=f4YkzVkuD]Z7*ۼ2|Fm&-O2eo]ӻ	XtE$	vnGՙU%SǬRk^^[EҎ",k.(Qe.c;	%y8T5թ5K",ȥ,
+@$>vk=wJJoDmx8ၬvWPrbRzӞ-bK_D8fx܂ilɯaIʕ«&p8P.5>e\P0]pqVe+Yrj^V5-dqzPGehZ|HnWY)	{B,py?jBړ!RpjPJT[MϛHEim<8$:]`k[	U7p4SuGl;:#Aw7wq2C>XĴU;飢޼ 1
+'x %irqi֥:NoDRzi>|VUumEx<bԲBhm33+VͲQhd~WY8D&>Kwx]ݞZ jwV
+6gڽ3đE~jp&l[$XqqUt4ւ$bBs`D'!zX:&tN,'f_Fcs@-\qIC<avg&MJށCrKdFض#;-&Ӈݑ8
+zS2n1 Ou-(*
+bs06>!CLfj7AD)Ģ6qztM3Y	Fݨ#]<w{VO	\R5[!xli|y7ŢyK)b~j6~|u88@{M8?z1.͋xW\ZrʮB-C|<J;%^4A˫4L'[ZQoREL{wL}zN1b=p!Y<mG[/`(ٍUĝ|P*\
+W(.[?"?4rl2WY5ju2'`ʜkSQ
+iY{׫VYaT^YLXOF`X9;B+
+obڐ[{5b[) 2Jg2k/WpZ.ŏcFb" eJf]Q-O S2Ym@`FEX]yƣXoY,zt{s0eesRhH?>n1 گ)rkƗΘyuO )oPx'l1XL͸A|'=!ae	5S?KHRx[źS_CEpyPUtW3f?pL;Kj99iVmYu/o|FjT_X:(uEvB[9c)/UGn.õng*;~:!eN()˩8@Gqzf.]ˬL}*SRWY2sGQ$Q/JyKI'dyf5r.'ÔW^}(9~!'[C |3g/U[t)K'*KΰR6 NOlؕ1haeN!L5~5'x\2^oAP%|u`T1A|?=7zpN;iG_kI!@q]f\sViWS0b$V`$2=ș-<n\Bl5ր;(T[U..G0sa('bLaQCY1ay,=aVYNuPiZliULƉiO')Y$Lrqs
+\\. /(fȍg:pL
+].
+ϕս[ J[6]qGw= ,_aj{IG̪[%Xj/4EnD?IZ^ts0{[0S5
+zbwVGg	zQjc%r[ ,cJ3cǬ_m-t ;)՛9gTBL66i?%]j\P+#aabi,hVkpM5޿0\j;bLC ZhVg	Z=c`("@d*QxK>w3sϨsBF+Hs^D}h) 
+Y)^ƭ=}|9ʘc+'f%ʔ˘BiC8yd*aN1i:xf:x;$7bl}ϓtY.H]aZۏ!Qeۿ.~UIiH{ML&>[+q]n3u=rutino^ؚ#gizq(hvc>8?z
+^G@d${w#}^~3(WHo'[^6#p`C{ y0٢Q6aK9!s⑨@v7|-f٠/`:,6[i3<n&_wcFMcиx拼(ͺll(`(fx<x3u4&ڔ*NJȣY2eg`r-cם *U/iJf?Uժlm]is[y;G̓d繜EX#(2sj [(O9ɩŬ*z 8*/DBiF`9̓io[G>ijw vo`u"}:1pě͓LY5,]cVXbJ|T>|NLXD8{i开NL{)ܗ^M#U"FxP49jݴ`p4>}=
+o+ab#,ނװ +L:DyC{UPFBg&LEY߾WgMJo3>i 7gv4[?[Oczz<~M*7;)rIIH3ߍK̠oOɸ^}OY_T\;<UnOdi5fEyҸ1~W.vcfpZExؖ{ƂBG.9}<9VK&lMunU]Pz]X}S̠Zo{5C1:.-:pv\5@{n|?=sIg>}іy*o-~&Au8pdK=;\WToίJRVȳ zF	Os$[XMD;[A>"%g=J
+bX{^ө7
+S^XD	c1c8 Y5SՉǼ#(pUQ/SUھ)D-VI7K&5VJnVpn#+X'$šȫuf߄ƸĴǽz,<MϭV*xn|cvi:joJ!]U佻"@A{#l}: T|FWR9
+Nگ@ugd!IP=0`j
+;LۣR#* 0D_`.}ҪE~Ԍ	iQJUBnELozΟj}F(*"R0Z[+e̗y}&Dx>>wxMhEe v׺mYeR Zh*˩xy@/K^'ʊ_n:s4J+(K_i^땿]6_VYbg[}ʯx84/3k:ǿZi_QJg/Yp򸤁%qzReㅪam{<_.vW/*]	}!w.la\[cࠜKmʃi#Z-5_ziCRn+(-8@=¿\K;GuC}*w>6@_tqGrd鏞h醗IX^^3";.@CRSԓ}*mo^}҃5&Ѩ]*fx^ 39+>ø`>q%am5mW?NׁagF%d)ͬ_1.iԌJ=YXViI2VPX9gbebra%SpBa2uc?3H<LϗZ횭<k]rCTyJǼ]	;*UfzȳJ=˭j晪,e+w3rOa(^^r*6Ѥ3-,ӛL[ۋCj%f+4mA7ךwo\GG61tAp
+xzxU h+؏&A.y&t-N ]&}K.5߂R6ē.qxƮI@8k^Mz[ Ez>O
+qgv!(aQZ^>ȫCmI)w8fܯaTk>-bH	܊eUyEo9-"x=ctdpW[qcqvT/YZe+%}w[ɃR
+/>dLg1xZX/Gδ]?ܧiV#/H"|T:}\XR?,Gi n|Չhm4W7C)W9(0RbAPgZa5w~\/Hg;^t<	SOGz$CzU75䥓jwLUL1׷p^<۲.ہ퉨
+bZAXߍhR/_?g}m\&3װT B\%DK;7!MH{jxܻc@c>,nĴǦd2!Y5-R^&y_{O~S꺜P-g-	zbCNyMTgUUmiۜmJEcÆ〕Vn	+KKT\ls<˵H l\nY5
+
+V.}J}.I0Mdc`A[!awE>h2rL[^+L1گW'@(X~ӈp@^!J(.82>y @e2-,LJ`|rٜ~w"4nEK=	˻ğGy2˛Kk<%U$OkXQJ%Db71I}x^p	^sk-W3N&v
+L3T\Oz^$K
+S^WώJ(~@U<gc$˶ۻ]uSut<TAdц ̪{N릂^/42ڍdt-壛ʹư6^	>3,o+i:qrd-/[x'=:qWʱ,0pHm&N6Q2\;ˬ̾ ێ8^]zv	=	YvVf!/&WS*B],+uZ{ .s9E+DܶJ&*6|ɽH2O=ޝT>5$2qѱ7uE.Porygb#XLHmX$KV>-JvVi=i/ɬkv"?b9lA0YUz+jHG*N2CXLhLmM3vU:ˀ嚿R%QmKr1%D_X1J|
+!P魋Rz+*qB`~tu7/?ZЏGm7Ȼ-
+Kڝ*U̓wE=^fx օ2zxlZ_zʋXq}+n~ѻFVś)mH짣Po|qzΟ-&/,4p`X`cyhkDt+қVk҈eyWXO/r*F[Zz3%=ea8k\Ts2 >gᶽ7c,Jsq:hm_XjE	lܼ­czox<Þm*oP!#gv=2=ޓ[Vw+&|2,wvQJqI'=Q*XR${8[u)bzzxar<{:XKC@)uEXr::<ZGgy--%q9FA\Na!+ѕ$PPJKLWJ_^ktr<7ļ}W6
+óEiIw\'v;Fح<}G0} 0?y
+V	|ԟJXQ^Juaq`rM2+xV+sUH/@4c9sjYz'E,	6P'ʛ7U=ĝ`u@SV&s|rpQJ!KM`=V<mE<&߅^jF'Lj&6YWT`EA0fe'{?nqwhLRXn~wlsߣd]}TuA,36G!7T#m#PhspTh-6¦.f,cf6}1 <Mr?,ƤK2PyxTB٘qt/ZK_t$kO*ݑ%t̷I0`ԭAmAO_|sGbhne*-7Z>xn	OM*x=g6
+TX6k9Am=BMڲpd4Aŝ=fz4g.ƷL 1ZQv7ɗ5wXno
+[qߴS䚟mWVU82pfjns9Բ}^9ھ u~;8,eG#2f4\dJf,Jyfw|Ŭr) %v/;|WZxx)UnSGvI}4LH{OֹIgTujZE腣Qsd([nq>i(ץpLmG!XDX_yX;J2w\_`~ݲ"Qs h?E6x̂S&,T@'pYv~['x8'`GOyXBw=z$[)Fs~o'H2XY*X4#+bxЮt]cWl2k;+䱨T͌bjTE)'LpFka&p9&;<6i$%T Jzsߕ,PvCʲ^{>秙:>n'O_̲t<bmkm# ejbW>XYKo-sBpS,7M,8֩7r{)]gh#ƈ9Dѭ%{GlsI0ЛmM[7}*p̳WZ|`|E[[ F߽,˕}å7)wv}Iy^VaKc˚R9>?ʝa$ϩ97TY0yZ(ҿ#e]vML՝0ӻ e	x>*lXjs+p6|9^0+,~XkZJUm׵Z;b1~fJi9_|S3V'~`;5Cc?*ɬJbV}x}*yCx4&2%fic=ΜMH{ϝ\v.A7)(1ϠivڟYN;.y1ruq;Gm>״/X:U5p2Ef,y}(zJhtm͗)H`>G]+a0zS'3=0x
+ƶas^~n9w<O@>z&I>vթ'i	tZT`W+ukU$qOdERY떜(7HH+4v1˘_2B%`L@OMjYoz`983}TB3R4&^iYKR>?0iY	(=П+\7pa|c=܀󚉹ڐ2=bSiA}%%{ZҐk6Y=S׹&w* zN\䁻g{p$wpNLzՄ@:(иq]TT"zW-3@I'Z7Ay0E~Z.؝֑|.j'xod9`zt\=^ϪP_]˥\LHUEWzlifTRy~и0t4կN7[ӲkKϧe \ES̷Z!9Yv
+/szJRY
+B(-DxB4 6>+cš\A|MP붶Z:[	]a|eZ}vwɸg~e8<u!">gKVs>	.tY֑oNb_to,_M=co+><]WIcXF|ډiOk1*U_̂Spϓ(էyRC4ۅu4T#99gY//zC?3@I: wR\ԣ=,K+k}0_~F-M0t6n1pŷųpQa|?ʟ/2AM]T@kG
+d3%R|:P')8I#KYri) 
+|=DSfOVP#MbeU~ iYWL^ [Vp9aC@3
+yxASLJkq69ksB'?j30+V|)gV;M5 %G3S=ZZdVfK Be͸$,{^j-j	e+0cV&9#c'IwQGj`-ýDQ`(/sMWd*JU/a0s6xS~X<(f qqRd^x2{=@n|@Ѩ<?IӫU3tE{sGk-EhmaG"]qځ5 aW(Bګ!b(}-%I(0qe3k<?`?$.xYuGʌpϊt|-Jm{΃m9?txX<=OtYYyE)/*wx踑ƃ<AE<M5^ϴѼɶ>c{u7k9_-KMr=wI1ŗFZR	Er
+ʲi5*U\|r_J}xlʠq>N叞T2|O޺/VjɦQb~{H$#Q1[AU>u],mg+Y{{<ۗqζ	-H@%aXVkS+k,{ S:u|SJ{.ĴvcRwoJ`&q<A(93>=L$0̪QӲj,^OsER/sQ7kNCZSavŖdDl1ե<}[j|uePi<0LL`d1gk	
+,GưC2("*DE0!""kN(
+f?ȷ:z3OO}ΩꜪ">2dxۍ['B4픂qGf6D32.nhq}E+k.6tŦe|Ŧ_QlZ3O׍jaTf`hO<v/-8ȩ=]NmYn~D?9'8Eް/\v9IU>0ҺJ]>hiCl8ҀZJc2"2*ͫ[\g|q9X(azCV,c_=g׈"%>yjT:F[OOg /w7yc236}k.ŮУh{+ÃRԇ0ϸDGm:CS2L2@Lap{C&:8
+</S
+1v(ԍoH0FJ8]E\cTW>oIh1WgkTؕB5aADNJw:ˋ"0Ej$7R'mNq	8Oހ+/l	Q-I}]1sʩ*ݻ,<Zcp@+oUnHRy^v;ECι^z	Zݝj6yI4}gM|2p terڢ'^<M~sg,xO^ՁW#ڳ'ͬ;z8wPL%N.c#.0WQp;0Tk:QH4-{>R]a0h4:s#Fw5^(CP} JKQt3cw\F/sAXphuʱU]gGj|GNw|O~h!p7x铪ϋ1@htf%r#V=I>sgV˞^t M&UkHPLsl}ѿfZ5T+YJ_s"DGl6;֍v
+f{sx-y655Q"]36޹\Z+6yBT~]_(y9dh 	ʽ'K
+iY&cq.	78eX/U1%bH4Iy灼6qzQ~;LY;.MȂSq|`t(rLtlF#Qed OlT"	U-=z"Gqp(dRzy. |9lթNZ^\Ӯy.Ea{TSr+zWP-pP6F4jJ<_nA˛'5]|T}0UPew瓍,fEgvrx.3T+8R݂b$vgWh6<tHfFCR1Q^#0mz%!^UKpkK0pa78bzQ}yVrBhPD*m	Dd	/:YH6yBhǝRxP8p&Lȹ|J	@lsOt`<.(S|;QIx\YIƟv/ny|X\L)pvm㯠o/k*[M4%V\ҠpoY2cNzcĥߒ4%1*/|p/*=_MwMeVq줡>ZVx596~- jmJ!$	d|[z*x"fO5+fz'ҫ/ *G<US뗝PO䐈ǌqH8P/S̀8^_D?%Fq50!qUny[ D%%WņQ~}wOR&cka7b=֯5hL,3TOեix2ugCgUK{ȫ>iqǨĲ:U^YN=NwHBE	rQj3<VYr"'PB5XPqY+zM(#I<Zz8F60U8L [bĵt%ectMhRSNh)4tZٶ=JdZ>lo'an_:}ccv**pE"b˶?zFμ6Oؿ·̢&xF=ߒ`ڴ[mp{@?c+YIFA/eߌBܢ'坋'F+-$6{\Y_jlsyM-l8)tٺ{xe^T[3bZQ>!D>9n=sɲ16\V$Q&0BU'HQbY@sgT-❠e{8J*poe/т
+ާpicbat	=V#T:9|Rzn: TqdjsݠF S
+j|kiUSNŘ;3:Vt1;U-֤Wͤ!,ՁLޖ\-6`V1X݊Qx9ov0-ʊC5R}Eo^mxaeDu!ŀa41Ͽ"MzKS<rw m*<c[]Egjk
+UFp$?}w8*c(K<wݵj<O%XΖۅ@]<GV$_VHZ32}YOis ] bn`	O)8F%i #އAǹNbI󗏅z:`As%l:yGFJP0+N-ήQm"jaP{|ql/4gU3xVy'IhwMR	wvk6\q#AvMB?hn\RooGo1vGm쩸hZ_CUqU<WD"2)4VwEx?q%Zo*x-|E-M}]Z.S _\nbk,
+ fiҼc2>1Rvi!䘬;u6JMG@N6IbJ?@r6ljn'Gt:r3Zء_*E^@"~s%FariNCYrCRUᅣyr
+zwi@+@Ar-@&YF\_Kjՠe|1UB{zUOuO<<|:عʺg9Kz,16@'><J;
+u2_W"یXG^`ԌߕRĥ-\.rKٻ*BQDɞjEraM5ËmhYaWyQ-킶6Ď(`:|gcNx#dfu#ާzȧAiEK-ݗrFժ Sc` 8\f`Rl`CfK)zC~1[ .'b>cё0zgVͣѝ`Xc2w>҃ip<nbs#Mrܿսu+FHu2P-pcp]_
+0ZBJ8R3[3T MtXFl܃q&qR/|tdjGqz;cMwK۴iʺuvF(ssIW'r"--H>8/şݗ؉fV	_x4·hi׮A}Gr+kq%èD(YXdl`WQy}Pˌ2e־~^[ƚ{ezvAU+ 1>7)B-μgbn-!N)8AUlթNԌV0k)sQ\C)*"[#B92xypTf8FDQ秼t"TK w[AXފ@=l`(؄ǁZÖ\ˮ:ZUU%\'I /Noն=-։=-_@CUebݐ,+ZS2v轴F_ov@5Ӧ*ū; saAҼ?4%BMȹǚr&S&^TBI	N]hJўh	O/P}dOgX>:goUT"	_q5jjX`!xmvjNu
+>41XfWW{WsƬUaY#gWGKc'?ol`/Fg`Y2h.̼>Q6_o5{Fq?mne:$g?w\v'.I^E/ŵl~y ,ǛYf^MÛ|ȜOcz_.\muSbh
+vEMm33Eaj8}؈KFs}4e%IuѠ;	bg`/=녖BIQվX26.n΍VW}x1_E뢟S`0)ZVuk}xgiW<'?̯Ǡ5]6#(^06+$glXgA`@gpÕ[72A=ɍ#BO;⓫VePSEuV?{ͷ,F2{P¦ xvj8rVi-Q7]V)*Z6 #j8F
+abn+[<#Wpz})%b ۼmTu(KJGqy6uam|eƆ_ٱA4eBU|c}.ji;Fg.3,^{oQm/iQxBm?^f˸qؐ'8fX,vb5xL?Vt49T5kӌړ$fsx6A]}oEyxb1ɧUh=K(Xie q\ZZz΃<"X06Op	*Ii"SZ9!36
+.J%(Jٵ"^u!;e:/ZD	bemN[EO_|^ :M6´'\6cWFUn2:X&#i+cֺl3|V9<oZa	Ju3T)LKZH2 k,perDuEC;iAB$;ugaA즥%&&VV]vH]E@[IfCuAϞNyX&4mgRB<ݶn8u|Qo
+S}˯6iUQ_lu|gMW'cNgQ}i|>_d'{Q X8q'X1U1q|y.F.ږqbNk 7&`Ԕ柩9[ a5..Dhw̳8(80P?Y
+SP-	q@ar*6'vRSǝM;z2am>wdI C#GM+@3 JFwEK[g7J@T7_lYl׿x9l(]]~{K]ALCRkJCSlIVoTƠsq]zT[x{d@M+(3Gg^2VD볲7-»]9:ʰ~t$*N*zVQvX몚S"scH69V񌨨ͪ/VݘU~*׈ߪ,^Cuf.ֈi~>+κlM@[+CSLM53ofFq#GYzI0h>6r)ix$mb;n
+_j{bt-Hٛr罦R-66ѩ+,etѿ*4k],IcmߒҀPD/ɛeyz5HkW9=V^+ҪBӨ&bt6 VX|XD,#?y;	?+?+;KKK'Lt#F7mt`$Ȯ	-%:{pExiLX//!K `jv/Ox=88:z~:b38A-N=HW/9
+v^2@{yqpvԯJüސA,Y8VO+EKk<8e=Q8NK0?`Z{Y=AMȹ[gy~M1ea4uAi`['Fc|%x:QmY52{ޢMMgV%%3y
++mق5m\G{ 1d|TPdBNi;$IkZ' #)Ez]ucǄM?763	T/ ˿47hPvw@bnV'\#iA@Pe	`.$/,`
+=G26҄+WiYaQ㾰8NHT]C48)<9#O;Ul,uR@u?lZ#Y5GiJe<dk
+խ_h5shC[^+?0x; +
+x<+T5=2I_:(F"duǌO1x}+}coz2 c=}E6`O(e˛=O?@@Wy?R0N}+S9Vجn<sz*(1ɸ@^Tv l	ۓxyg,]45xLTHȢ'e.R(UsO4U6;ѫepMu'Z^`SHݞGg){'aX&NXa^zo|IN|$Ήvѫ8.`cPZ'GlU|KOtTvuzVSIhk^oA;ħK8Mb3WtmwwϜ ,$ǲUzugp@MJGt8x]h&Wm_> zsBƲ-ۋ`HP(Ũ[S6{ѼWK}2Fx<2>@u	rUs}nI$|f׈+WWaNbyw@<xL0vț)ֿz2tx0^'k&-|5-XW_-d
+\2Ԯ[뚾0[{#ᾤU4fLY(gQ٘}Nӗdf܋="AYrkC^>&UM[U@XӋZޮ<,sjFsZͤI`\]Ks1(Gٞ/Qo{aziccO;;,baJ(Sh(e"T#7r@pʢa
+;9㇦>,h\F
+=0&S<Ϭ_qu&Q@=A? l5yJiP!0- R5,,& @O/郮/qJI$T'MgUKQTc>xdkQ`¡jP'#58+(^-ԉ5y#k#6ͪȫzeE	~kmx֏&S-zkІ^*7oۯ}8	swP
+<5T]V>`zøU|_ixmf
+s8ka.^O&]qO|u~WiG=pzF`c0EvCwv&ilv'xX#Mi޹8hq %0gW"DF#0AA'tcO-8CaO]̪y 8CŪb:#bqT/ՉKJFkQs
+@:Ly'̨U99\-\?6GbE
+Ff-?̝w>ݘ{fvxD/OJا)6ߔQ%w_m/_ۿپ*鱮Ŧ8=߻\}^EJ~gҬHpSS~K
+RNk,+2@8l|\MJINs8;umr*.!~KJEkU{UI>d(HE̊B-p;7[ų#ߥ[&4Ջv~܁
+悪~,8$b%'':I9nSS&矆)3x2}mq0G %P1Pd>o3DάO|ݗhv>\fL1YwO2<m22˧MoBۜc4=ƳRzUD	s}e8j*+MkMH̴x~gQtW1¼Qg<J)xY̧&Ѻ
+a[H&E+\єY!Vgwn؃,֋ϯەos:ߔߐe|^AK ;\|OJqE/FlBjr)pyPJ T{urouz\n('䴓S<8e)Ĺr[uq7NYyo2Zˑ 82c8:||kLcO/ XVX]%Y3L@[K&i/V=Yb{MBO>s4>ZcQ>%G0&3QXvqe̢9U8l!G,En̵SJa%"P'CK(^OX:}9kE|>H
+t⿴?m2oYlT?\<z޷-w:Y
+l*[y603F!UM?yReq><!*nǩ3Kӊ/O#GxY)qA)4.`43l3xKr@LIb94}W4'g*V];?zۊ9f5Y_9_X (v~s3qhx~άbab~_?<;Ř.s9V}ށIYZq
+$/_C/RBjGgL9|~XbZ|Fժ܌IϬKΝRp"94p #U=&ڣa-:±#84+,&7+{W:-ȫ57KQV 
+4,^}m셃040;\;n~vv[n=uԥK9O=	k"NfRsJQkNGdo[ĿUm؊?sJ:IT.Q7=ќd/vsW4
+e8A/raHLq8Gz{8>~F }XL,m\QՓ=6e˗sGg]`:.G<+x|kw9	rPx|yes<4G@i2rUN̫U>KۢaQ,ҋԏEoG(V,vagqkRp	V L/:`JXc;d1!5@A4/|/
+Z4n@5GvH(ؿj_zY|_bmf?ªmjV^c-7$]vgl),m-a~~Ky-OA+GhDe@Ob,q?F<'tU=	t	NFOktdn^5U[^k`bj,->ypT>UTE4&0<ꌨhֱFvmjUrE7/}d(1fHWFeWoE5z<8=t Ƒ\>6]ez9UL1wu
+=$JzY	hSK9w2 7Q}tM91pWQر^YF2tBc0ʉbU"3`˗l#Zf+{tĳ{!`pf],%s5kYG}w˖6V#6bvF(FNre;	bga.*,,X>suׅHXh)i)x	Vh>_y7oeKOΫYArq;suZW4}O,'NF{yTJzݗZ1[;֠zVvOCS繕nYqި"ZHGߟ0ZChc@;x52Ɖ\2`q8Y[LV0=ӰxFq5eS,OZ"ʵC*X)ZΥpag۽յC%V/*+BO/4ɛm%z_^7i/z~=6+7h!)O`4RƟbDk;ٱZShpc}:jZŗ\/2es-R΢Meib"68Ŏi;꾤ewM0&.wuc^A"ZBxjQͮQ)M^y@YM_*r*p3⚲9NTqU9ͱTܕy$Yaj'~- ڊmUR`7ofbr.ZMmhtG?4{3ph1}s[}-p>+@`axrЗVs-ZldXhiZGGC3K0^0}qo] ^.ƚȭ4Q6dK}x}d(&Ҽ3-h:eWc}i@rxeiz>:[Z2/F+j{Dzϵ`",ǋfIhHɬiQɝr=EbVct##!:6SY@ݕ "qlMD)$.JM1a*9g`Zs"OP
+*~Fu7jg:Դen`AyYݹ>n1!m1-2LZf2iGgC280B-ȌӋgdFZ1Z<sVzI\.hXl_XHUn3g{Pj#z+v(KYrsdW++10OzXjW#K.'xCR6xF^g.m"?uhϽ$X\em+~'MwnuV>yBn^)pǽys4U%sUFpϠ*ъ4ĕ)4P=+T'VWBIzig|^?oVsݸEӌXubi'EKh`3[/ ˆpAc̗ϫe`)G MKnJ=t6q*X%Y=K{yG`red s<5 F΃VA@IHyoH@nZM@>sΞ1
+b4*e? MCW\l9b2-G9!!)OE˓r);4:P/Ϩ~ҿ7@2dB2THqV5fFs>+mconY2!\Wc
+[˒gT|s'F9
+!*%"Ό4p %ҷoߢSN9孷#i)<\ eYbSy{"<
+Ub|:J:}geoT{v{N_KdO[`ZVp=eϋ>:8몘͙8c2=phS^X|AXα8:1>!ȌAۤ8]Qk
+d1@`4CGRьy^evEz(HUUNrE]k{Ķ-U-Eђs6~[;~c5qعNR&o`} 3U>qP<ڔ|>)nc]
+@љD]/--,Oō k;U|iw~C|}S/?Lӷ?yE㯵8Vs9zyQ=\=>i[ݿ}+md/4q8|Z#ۿRr.u/Ni/DCs
+^υh[
+hc*6/ۯUZ9ݮp3bu
+[8<w|8gz{lկE5q`=^skEN(ZSy[lU	n`\yaVMz2c*Ou!!Oеfwa9?pnyW%WE6O"yP%mqgM\PȓvWx#9iT1bJ~wD(څG㷸NK+:n=fVy*x@(f7Ϊ^YPF:R;˖rRǼ[bY[3Lʘыlu1(&Pōy#vnբG$6zbTߤJ:*nUoga0 5RJcƌY|y&M:~GR=rUmV.yO&ߕ%v`Yf.9rl`^_]N 3*-}U2 }^q` lیe5~hWS2hqPε~8P(96k*0XpyZ!CYFȌt,(jxLn:(7ƫ366}]-Ũ߅"9VR?|R_<B1%zCQq-⫷qQ/:/Fbr.jʰԇ|g`o4*D+/ӎ>l،sc0\`/uH0_UM7
+vO0!P~.<ڢa;&j5^->7Nxhl3ew #p hjaCL+\؀Lm1}"K:"VcJ4VcU*պUt%h]XۈI3Zw%k;kGeIES|<[3-R=~lHkxj3D46p
+M$3NӦ(`jATP:X/is|ܧF_u9i5sfI=6vCk*P{76Ón<1D5_{,Gʀ M-Sb-9My#fB4GG Sչ>ZIVdx̴L`AzuA_kKOQ6lءCmx|޼y;:R&1Ȉib*1YlgKSa3uu-d}蔏=Nk:"Zx Rlw4H_{[%7I TaXk&YtUm,D!eb -%Ys gGFǢf/ ePGŌQA'3quJ]őV[ȞU=Q˂@Z	rt&Ǹ99=0U
+rJK8uf2#c^L6sfEu@n{F>tM~\^ucԇ@.^ag'ZjJXVMgd?ǠP___^:/ruL6{ւyc5(oZGz7@^Cs+66EիҨhFu2g@5ՓOlգrZvi|r w^WÃӂ**;p4OO<8+ɒ~T)?ige\ΰ 9G`ĴzE^,*T5,p(CS
+VS+즭=3nc\aYr3Gq1&o3WwW342l{÷̫dW#32=JeoOv2zcd3G<ҸptORh5Σe-߶9c[!0M̹vVt-\ПFL5id+Y7))2,GscG*h"lOhWT*dӦM*T2eJٞ:u{GRwU ryת+lF_G"X>4}U JTPTWʶ+.ňVbW#{xN(ߢYVKҟty$qBUA`Ж!pܙx'?NNY8Ex"b/G:)'bcI	,a6n٧g^FV73ho+k+uE㹴Eyʿ#eMv"Y3F.CjSS}"P"OwUhZظ4\.`o[]ĳ򚆣9etљhbPc@g=GNl!n* aYwWa]]Tϴ/j_6m:4׺:{Ms?ҽ?ks[+v_3\^6=`1MOgY6ŧsz4l̡{W*/V	s UӠHV͕B#+S|%#=rXǂ&1cIՃC[<\`aɖ!sO1ɳ"wL!*{EyoyT"Q,:kRc 6$$~8ʵt7H~i_o0|Z^2+Ͽ'~|b3h5׃2֚ǍwzP:f\vGF:0~ s@12Kzc<p4"ĬֳmLG&FnVR)+ui94jZjUR?7mU-|Vx1+árY x!\`gQS4RLN6׺7
+g$VOK֯__paٞc9kr8w]PM4'}xՕhL^chӵF[u_E?(6T,=Y*kj&ZvGۘVLG`3üQbs3J^c;ET[[
+E`"3&\Ɲ#{zIY&ܝ( >GãϕցâӊҭG&P;3.dQ /K"0QO_4Ͻ| zW7|B!p'%U%~S&5x?lH^rm`&aV&:_'4͠S%|Ky|nG'mV! *s4(rd/S>&ʋ*}i!5ujh}8Pd6,R>gjZI+GiIV1hJb߁ľOTfLfLQ2>Z@kA+tB[|b5) J-haBGu8DXt_N$Da~wr>{ȌU=`n(ps&Ste62vDzYPn}j$iK(V-4-1G8$u/O216zԦy3p>=19mĘH#8XMȹ1e
+N&* mfUK</-~-9eLGtcRA2ةf.iM,*ח]k)YVӎ"* YV5/v	$ȿOWP$s A	dwdB	$H #J *))YbE&M<_H 
+$H Aӧv.#H A	$H A	$H A	$H A	$H A	$H A	$H A	$H /}-**JLL<Sa/wa%''\z}Ѷ_읗'c^jUӦMyM4~Ýg]vY~~~RRRÆz~۞9s'AXnݶ_Ə;/^dOA\՘1c/_=蠃*~'KKKkԨAoyzqOو.#;;Es]x[l~O^{;rKovm:CϞ=
+;/tG-i=Z,I&%$$|?UV]v#v6mN;/w^^^ziﾣ̚5<e~
+^t#ηr;HAdϕ=VQIIIzz-[vt牸IlA]6m#yyy:u:rrr=%K'7иq|СYYY~ayP`Wow|_r;Hz{ ʮV}eÆjպ[~񝗟'8p'̸q]ooN*Wܿ+V\}lA.kzvVG-σ {A	SI&'t͛,Cc͚5݃Fƍ;Oe5kիW;̙x㍼.`n{AhSMO?N()Ax<^a0ZN9r~ےΝ;{ꩧm۶9z'wԩe{o<$s=HRШgqFƍ7lذ矿TXo߾J7(Ϸ-A\p޲e˾P|RӧO/Svmr{I!U{ AdėXI&x`
+Gy~h
+kGw^觹	̙8xUVtMIII+w~iիW~ꫯr-mgtcǂse/?y;zʞ5HҧOB%+g;y7=Ѷ#=GQfM ee-Z]Fp.oMgخKXVG;/^xq4H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H A	$H $'':q׷o_z饚5k~w;ʙg9jԨ-	$H0e9:YpaŊWXOqsu9ꨣ]=묳κ{wŋ>V A{nAojժu뭷6?yȯual|G[?g	$HfرcڵܿuٴikܹsJ*p3gdW_}ueedd$%%^~rM~瞛XfiӦ$3t֍e07bĈs}nyǶJ^^nSN\c}~h^/Ƚ+W[.	gva\/(;CZڝ$H A믿9<%K0@:uo9w\Mif[`+p39 #_~e˖-g}hkԨ^{ͥlfee:t(Yv:=z]0+s̚5k8,7%w^Tr}K|)^O?۵kײ#Ϋu=H A
+`{xW  P!v'*@Yq tGtDK>'xBn3ȋtno ݍ7J\C=t	۝.vrWO>@pّ{^Z A	rYg%%%կ_,wĉիqZAr۳@Rvn<;vGtD+e˖q&^ga{٥W>c6O<LM)gddma^Dv[_ׯ?CNyѣ8#-Zķ?]$H Av$x/baawީ6lxu +;` v2ݲS~trrr:w{}KNNŋO>Gٽ{ŏ>+[w̘1k.;re$H A*w8KLL|7~z/L2ϝ;Wj2y;h88ߕ+Wh1ZE2;W۟~)wRRR/M6\rIٿ;5	$H eҼys|=<M{y[l
+֮][RնmZj-ZhЩCM~|͟M2vqƓ+TZv[ni9\s~q@Kxݣmٿ;͚5馛vU	$Hry+Ujժ=^ff!C~z~{-pJݺugϞ{eBguVYЎoxg}6~QOa)SԬY#`TmР={r{]\\=^sjjjYNM˼ A	$N
+N_K 'x~	$H`O5kK;v\lٿ	$H A	$H A	$H A	$H Aʉl			m>en/
+endstream
+endobj
+10 0 obj
+   267236
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000268252 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000268226 00000 n 
+0000268317 00000 n 
+0000268445 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+268498
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-hard-3-rem.png ns-3.21/src/lte/doc/source/figures/lte-fr-hard-3-rem.png
--- ns-3.20/src/lte/doc/source/figures/lte-fr-hard-3-rem.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-hard-3-rem.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1291 @@
+PNG
+
+   IHDR  }     =   zTXtRaw profile type exif  xU	@Dku܁˷,yaÌ:*h4PDBi@<1x0pY_&abS7(igdOj>5;J^,X'#E&  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="637"
+   exif:PixelYDimension="386"
+   tiff:ImageWidth="637"
+   tiff:ImageHeight="386"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>|   sBITO    IDATxgdWyYaΧOsΜ	fQdd r68k50/1`0 ,BI(F#hɡ+<ު.UVYտZKZ>_D4>
+ccccccw!wwllllllݱqwwwllllllݱqwwwlllllllݱqwwwllllllݱ_xj=Dcccc>y)xN{ogy3,`CwDGZxFLV{pv1Z?`[c;7=RꦴV1X[x>JtIt0eb]au@.T"m;3C@btZs:^o8 lp̈́pء)k!taEWc370裨d&l<Bvo{2lZn!ǤMﻹޟ=-.k8rf7ǸS -vcgT^e_ޕKLu*,Weom~࣓K}O+F\]"{C/{c*gB3`1O4-WV/ue8Ԫ{&;k3./_-D=͐𾵕ܦlJM ΣŁ~y7]EbmK7DwSU`	V@IvBv]	s,%$kFU}b pBBsꅬ=+>V%ȌRY[9ʂFJ@#Ҕ/پeSC MFGQ"bӵU=}S͜!75*H_>>Ƞtgu̜!9|;YDGS}dmp ^Sz_WfO?S7ꬬ5 JWtCwMH;G&/:ᬼ<gI5ߴݛ B'S=C5k+/I}s~bd?{TJu(~ί8?.͢Ïog)rw'\H\^NeɗFEcm%fd-a?N¿/~qen#%-'5lXњ,k 0,msSRf*T4京S  jbULeɊIl =ݜq*ll&&gȫLyx?C>o]`WT$g>>'5Se3 8'TNbY6qMo{o5l9W=3)tC"~Q~m ψ-mcZu{,; (NAH 4*2aͮ{<D@	If4):TRTPzu6lAⴆ܁!ևvJ/9`Sjj7u:-EnnA"l:#KM" <gRkԬ{X>0VhD`sy,IL*KުϦnyф{alCY r\9me?zKж!ePf˗R8?꧿Y,mvFVάFZ^Y7Q;Q 啩?ΰwb7>dX
+ pܜl"am5 ajl_YZ'Gl*;0K>д El1(Ore,` "& [mZ> Q5Āi}Y"őh(x)m2 0
+'EPZ)ОЇl@Bll@ظƢ3 # 0Vc3fG0mɆC=rNΒªx25_kx_v`[+`nv/ԹLqSB@O8rcUǙzÏE7Jmg
+3?]ol@zNL*Yyy_)֍W,^z_+ʋˬ$poW+ruOF:c2u^Vc-U?OHV/i;wF
+Dt6ӥt#%R :×FN_Pwo>#ƴRL/N*8?d&`U*̬Ϗef"vaV_GRH:,/å'N&rY m-LMbYR 1bBnXprSC[i PVs+Vd֭-uOOo@+4,V
+ 4C>c {2[HUR5qjr34.CAn{Of$?ewt)S+w)믿9"4NXzN>s`#-  0⬆@@- 8OQ@J `/p<9©]p!'s(̅QB#GK|#yI#-P6xX><2d-`ASsdnQ]!!YN:G6
+ZCL"zl&Ɣ3@p$jCRh-H*PDTUo7o0]$es7PE~n'Oqi!LNG
+s/olUSMc7iV~q_>R>'$}F'>U+ԧYdKQŕ-ՆU
+ֳh62X:w8W?8T&ضR/'=f&v|윶5Kab[-%:UWd&DDXa)=PpYҠB5DA8pSTJXB6[	JJ,h]EQjmL}aM9h`{S9?#i"w`	K,de&K,-8>nӒLK}(O5DpضWTW<̞йh.8q{>WkYc
+VUOX[佃7JEok"νQYi5m{Do f
+ru'/	"1+ewC#F1T-yi\tݜ;?o&p]q6w 8R<G<q>OY@V-|j1,$bi={nU/)ZyKNNq%̐8y>
+tR[XۀǱtPŐ)H.Wsȍx%==(e@(y+L.#&89E4=cs0 B߮{XAj8! A:~h_?x)S*O%;7	m:?Pf27c.0iـp +MS8XӐWpBAfnLlѦ!C> )%!)iY"oޣ +hcuPMTTn~	(lM	{vh	YG-"ՄBhl401Gk}\4qCg%:)1Mx5tRd/*Ouđޱ-6S}`aalː/ϓl%Vf[\ilPur5C_>DR^}N/V>lǴ4;{ɛ;H]6Pi[%&.b&X#u`k>c+%E\WjK3㉃ƶI/_2vBޔ=Mx"1J;*dT\D}64ćzbd*CjZxZeM1(--
+u8S|"EG?[:/)ї(
+J	L$$ GS&!]&Uv	61:aY˩I(!0mG65EʹKg3O` /8Ҥsa
+hl=r~l(šP[w{җurk3{LDdodl4]7xbV9(3h;37qxo&[;B˕]$9['Fs;gv8I.zHƆڟε/0-,pI Op9|6xwo4ԐBtd8:휾Kqk:+pMs vN4Wm'xi8ƶv
+ݣRW>̎🕙q٪'1T|(ZbZVȗw7z,齉imgj߶uL:y&EW
+`Jn/+C=;aiC_$K+X\k8*#E_T<h`!+:+	k-k=  ,hZTLfT
+$wD;@M>K4gt62}ji>aO])v)iPy X;pUe!ۛ:eK,C)/`4<bJ݄V `Bc( Ȃ%%kl[05we6Y'Vu .C::\p=Efe.G83i0xoVFa i!ФyJK.r-W?zxGC5\EEl>O=]: p8 c SbA'n$;*ޏ1'z6vn3y
+c*T]0N_lS& c> ʻ
+u>BuZfx!?xb;[p&̻5{o w7XKR2A+{lEQCH+YP1cXvNET;i`˻i;!XK#gx\*&'*SΩ3Xwb@aKQ!6TaʒnLٜ%QĴB \t+\螦CƗrRfOip㰡l`23~r*ⰡJ(KنP<&qc>}u L/A_sŁHTgX_]wW4kCmg9l*W<ϔ|yX\=]y0𿞤޷8{M-@Q^htdNcmq!ţkO!vUS}v-Rgp~BR&e_9K$[NWTO٫m3D3J_[>ԋ_>m7[_KBgG/dBn+rW
+!:e.tF50dLqF<c!r31gJ˂15nTm8ܗ5m!lH݊xUl@OL8S#-Gf'9:>|~C3;؈I$b=ۯznK9-{~NLU8lPƟ/3Ϭ^Sg(r~WIs]/︭G9
+K!i&^͂=B{젤Xb8fأG,-<@aIkl![̩#`ZM-߰l/%EbHCATQPΊƲ
+Ȯ]=ѷ#1.:egH1ĈuvtJp {: ^  CD;!.l]̀n
+n9^Ib?.'M K<aPޗ}:aCOX/6+/HGƝYG*mC}!^V7[KGRu.%Q^^0˧;|I'[yp]Ak7p~jm-UZj!QO `3ÿvYa[@urOAԒmyLG#LzqWO% *O/[ͼ&7Z-Ρ)v;Y}S @]7hp3|޻_m,	>SI/E/]CD.Ɋ-ŧeƙ,6-d[e[xd+ǆPs?>$WOMՆwYP#z#fVc?0a,l=.>~O$rk?(}ryIwá;&L|iW܏V!Ñ~ӭIw-m|@jg*G<F'Juv޲hTg{eynZ>sz۟p!Ka%@d="qM&)mDY}ښgNR<3Ug9|T攊k{_ygpC.#m}M\OE(:5POn_=<mk}uZӹ%jbj)[GJ;Qwo\N_eC9qnZI/8p9`Dݽ@N -9$FL:KO6  G50 7^aThceaxqN[Ο.ؐo,wv6k|4ܛ2u`f%+eF\AZK!NRP+#DX[?`NbRZYP6m?bhTiY"0J,ج ل ΑuJd"mkF-d ']e`;K"Y>KNtqiwIlN<`&*Ω-KLsIOHbHxW\[*8fD!C|Xo2dJu ô0sR<5r~j)"rF%vb5+/-B	bα3CL9"?.z_gl	YշiuC^7ysj촡(էQ}ζ3}Öq=y_/{uffj~0.͢'1H~4'ȹKf ,N(YNxVqq7U49!#gCqX0`ufkKSs
+MNol"DGQ	 )m;6MN9`U?}k- 'f6VWx!KVt  0d=uq,wkK2U^Vc@IKAyjۻ)է#._5욈kmK]4t~_<[e>./g|y36Ȃ'r0{`_FУP<pog?`?yk3zo^^A ڭ.G5'k:?l9N%ZsĆ'l>} .\VnG<I9W@[VoFA5
+;+0:SSA!X5[wef>GzXDwes_|OSGoch7*; ܆s`鹩$8P$ijB 8s_<{һi=Rj,
+|q[D[XYvx=͵X+#Ӗ}e#18în6ϡ4% qFVhD+ua[,g]驝]m;ww{ia }=/''Awp*ݣ1m5Y QX	2 C5خTPpSX XeJt F ƚ9(a&d.=RILy<Ebyٲ}"?@40b>^%
+[s֏Zb(}ދɥmlG䒲 ɲ<Pa;hdS."PmKG?2B    IDAT<ٳK;Js@-.V8^iN..h+Ν{:	N+,p'	m%@Nq5CCT9ӕٝ}y6 w~\9$u>u;}#QꂚJ(FMW߯khmWQ+N|Ź_+KUsgE@ӑs'5YM;Kٺs rb,#`U>⡿zMڂ 6-РCLVKIsp
+DC }@ C	q2Ī`9L :F9MV+Mfj۷DyGN1-]Ro8?/mAqW!&|XW@fg05+/_Iayd/տ;ك`TwzqVB/	q%x$D-cwW: '/Y|aJ;Αz+?j>߲fRmcȽDLY|-mvs&໷06`p}`k'mDI"kru^54cm;M֕uťKSmw[_I^U9DOTy`s;ò0|hnk',5swVv05.K'q`<O]L\RvF|U=6U+"a3
+xJ
+yh;G4,U-U	!4
+MVE/۫#{$ƅAϐНu4eT^z_i>uU=#Yyyn&~LvlJ!ST,]ɜ(( VX=QI@ @- `mi	wLACk)U\ pD#yS@ E~NNe]:-GvXZN$M}*B-tI$MC QengOKUu}DЮtiށ^yG#SkyG&dK>I(dfϲ[2te'i:; xtO)D!v:bz2z,*;nOwIyQM!\X'{P( 
+@,Y|e(I- 6,-BiNl]yT?Yyru++ICEd牢V _-swvI+3cp~_<+/S(hz>Hl׶KKMv!7=55@Ccg	ĴXp%2/9=րYA5=* Ͳr!ѷ`$s 7 IL (PX04V6HҞ	6-|Gwdή:v<g5\ϟMTwX0+޷%X@5.%7Y{3D:&| Wp8q!5*3x]+hη0va1='ϖ\2D胖*CcR6v.IȊgμ]a:w׹3/@ǹqڇO<Qԙ쎏ܭ(yF7>a:wtFToTfΩV?Sg;PO'dىgj;YtK+q˔:t=JAfr 1߾TUoų>=7#og/7p4)+/.L.B=uB>9lR̜d(
+]Dܜ63VD~bm4[%`MZbm {i!mSf@8Lpmb݀Q7bOmsR9(nI{+*r
+3W& 9(2)DxI"M}~'qw+u~_Ub?UNSEMxkҒ5ؾU] V@RYh4!\kCc=l!
+|du5D3>+H$%	A&8mWMQX$5&7jFjBYŦΒ(C*͂V-6uرOΉ*XڂÜdETUtjO{_) tdIAE>xhWQav7[],]fM>.Y;>R56_Jޔ{W7D}m@tT^RqnsŃK˻Ew?vkD='95[! cDOT/pqF23?.Gs9oՅ:w8P.`oOhmgn5j_,uS"ի.4/Oސh}?;;LV_6AHPU=)j[5$'Hb#;Zm`Z+*$J<&4׷!-+)0 -#b09eԭr5u0Dš8jA[Hw(QZؙ_
+kv0fe}O<˯?TOn/a'CG:/Ղvߗ8`3͗$k7AJx+lqF6:V%٫zKw?^m? ~+g(Aovκ XG񘵓Zl:2 )>Cir*bQsx7|gߠLR<fX[WwE9&4'|N.U$a[ً<ɷL?vJZ^1|A*noUlYs GˑgP+/ѶUsn..hX2+-ۅ[)C}{CJi_\RcXoE<Vvbh3q+%mj "-QFNRScFk /Uv>Tg:|w_Osdu>9w8cfdtIm_~WWW>_=v
+$ rW̃]3ȩSNeM6%tLĒyF Fju#ZX2`AJ+NJroG6c":'0kpFkll5Ѳs\n:v;,67͚0;n%#XJ%W̒awF.
+Uı~ywc+s[չ:-KPO̜Ïm8|[]}{Rc٦Tem6NWvPs oWf!ro8{׼/o%o-bR</
+}jD];uפUxP=n4g1L?./qc9]}J.šйw(#t~2~geэugA~m PfnO^ɗz幒BGflߧ%QKWsJ rcIUROW[U7X4 c*N}b?e@2jIt   kX0Q^g%V䭐[]m U>	(DTlB<\Q qEoэ]2ۅ>OxfչPg۾~ZO<%ɟێƓw{NCQwo*|DN6[SvRdm{e[k&u%[,X
+yå>cւ}o7o?g+׻mc'[- M7^1pLZ޻zkg]\hJ3UWԣvv5Ηys~8He5Uk/Ν순ޗm*{vDsc.K;:zÏ.wn8BPsurL,p-G3o O%תbsC=鋣)ܕ=8miџsDTP K;1`6Dg>fR\CmkB8>=[?nHJLZ9p` %ґUTj3^x
+yww;>s0= z2_t<ٕ-$vfUfHRǞ>BVQd's8Pd[l$;GbS?ĩ*wCd6:^f쬽⢡]SZb #\QETBf\$MIxd>n	oh׷Qk'YaMQX!LfeAS3vIĆrwyLmAC@}#oqrd[(m@m2mVyǺZ⡀o>!=\5,Ys3uq.l:uI6[%[fvX^ɟ8tFU,O>:TfWͽ:ً:k}+@MeQ/5F_ޑQ0/3vߙk(W#ƒ J4(Ϸ26tRmgKlvEsG 0$Kp;>
+mruvk6#9!%	4j~[Mqˆ??aK	^GȺَX0P6eCF'6b?z(-.%
+RЦ%s_L9w%`x-@ͭ	?2ްu걬)S=5@~i&55=q0\~\v! H˫B>9D?7Kھ:%)$̾_U󞼷~~ZCCJnm~)2mޢbk&*w⊓.ԙR<U!
+>S>egxM${e2|k{w{}{=JQk,XJ0$jLh˃h!6b1 
+RDAa(gWYwO^xJ~ֺkU}0+.=`^^bܴlN} _먚ϳv6~3}Ѯsv=
+n8qS alS{'L5^qXnuJllW<㋩mK7	Zyً:/m쉿RVk7#yO~hԀe_3/14L1;S=S[|\pZs-N$<29|@"D?=!60ڰá>kVuΪ3b[b-aBllnչ(\1k?}go8U3>N~7c@ː
+' i4,D k':/$۲[ڂ^;9#iBK 5:=/m؁PD-RZT
+bBv&Fnڜ؞:kȭv|m̈!hNd2mWE,[Ȟ*#XC~ꔏV"w:8R7@(jӢ;9ȻN[Za'kO<Y\/ٚq̜ڡ؟%9Bxn߱Q\n+|Nnڃ_+gv+Bi|Z+۔0gt/V⨱3JJ<q(sL R0_ݹ9~zyAOצ짿//mz7%Mm:kgvGŏчvJvzl0m42;3VFfҺʦ>sݮMZBj'`IfVKL3F!(aА4  [ml[7l&@5Ϝ  C.dOxvӹZbTP1);M^ʒ CE);}ڶg#_/Nd_ zx:gT_&d"Ht?WlRuX^ҮuS (|Sw>S=3k}GݪY|k(/DVt[t{ $}^X/kUkSmd,2fxޡ2}l犲<1vNE9˗wgf޶~uFe9WrSWO'oy?[?e]Q6O;;GR	 7đ|bfDn淶b#l/&we<Z }X_ˋp-Ȟ㺺xIuR`+\XZL6%.X?a('3܉'{7b9 L_zzҁ	;>/v*̏)ʍYmt<+q@IG@JIFd_g.?;q?莮-AC|.m$TΪ0tEȀ@%|DM-zȶR'hͷ>Dfauݢ\	iS8 :CMXMhubrNs"l%1Z]\X@f{z1:kbíK)BI9ߙzm>φcN7&ّGby|Dv"5X&$ny||
+ !ü"$`X%"n)j9SLVsK53}D-Md*cZx=Kʧ'+G$Cpeӆ+6ӫ8`f?:MfO~޺r}yD v]_pֳ|
+oLiaKU@,C?OK֋g0K~9;ҥ-Ҏ|LGQbR ^ΥkbN\* Bbw_[0J>#*tb UrPg]
+C.W&P)*yUVGuލ=8~8QΌ-.Ɂ>DXݙ 0^-X_8^&j9nl|O/Pq%Gqnϵ/~8~ȓ(ckчO_0Lު5Ow+/
+\{[8_'X7]?-^:X1716hTޭ5g lF2L܏8:P5+zoDѭ{?D67^Pn>{nqT]Ytwڜ"?M3A<@$%skjkŋ PǇ;֓"~~P^.P<  +/Oa}zU> k׉dKpgn#b)l+y|S6u=zR5GS>\^/@6M/\^Y:_!ֹ$%yl}kW11Ȫ>S\ܚ=jFDUcd4tw֗E,<oeݍ5#Z;TcQ,ovm2̚9[D_ 1mV5[0MnW	"⭡sc6gW	chf7D1pc fD`VnΦ2JpLKUGĜ>Vr4a96'v=:;=^%uݮn&ncVL|P#sf|wt]w^J \ bYcK||[1߶V<yҿٸ@n]ɟ򾴼W^:_yj򧙭O?9cP$ y~v@9 L_{WXah;#XND]OTS?BLGW7׮g޸:`ff&ok_Ϙy4_%|yw/[1ߪݔ25[%}-/ka._).~=5lo.e/U޶\I,P,n;}f,PK)䚬|䲜
+c#6,ϥ    IDATJ)A@хCڨb NsvqަK'Df|GCo;Ze \˻ex r,%)VϏfwE[/9eǺk[g	}};7[}K?=ŏ7+o^'w 8Oރ7v// )dC!|_ލJ݃HZO[6o7(q+ƣ'~^^YzE'3@HFs(^Ӱ~
+IHq%x>򽛥ZZ_wэ;+ˋٻksI693
+ֵEMUٺiy8R"u{7F<gˌzɟCɛ;
+sN7ϙsʡq˃,\R[2PݨlWK=~ӊd%Ը֊B6Z_O+[+L_Uw7xk{7ΞnqXp-7JWI/|.Xڐ!qpϲ%SXlФM#%Ysl8>Y<G~u1?G
+1'o,wq7-@`29[9Fn#TYϝrd:
+B>/1ICSc3` Ȝ[&p*#vdyQR`L+R	AI[4(5hŚĜ|[(K56	G{^g&JBMN4cl];!+Ym-۔#!l#j`éfIC 3C+ h[ږdR>=ͩ[ݱ@Z7s8[4nr\`:ZH~Ղ/K~|IlsM71S}3gk͎VQ*m猋2;?}|#}SBA ٕ16씥JR\ىn>BNyU&j$_ߩX?w-&<BqTVߒhkANSZٔ] gJ=YCq@RXCbzX/i,vx!J4ւFicL#2OIw1Fu[~IД'ЪCchgP<l !oT<7V?O̮3ލr{v[%J_72֫F0v.ɯ:yd)0͊}YYeD2fƺ<dJ  f񺍕sշ1Yq˽jիfbԒS_X+,?$y60<%!Wd>/K(w|uGb&đ5Tq`ܖFO7>U&8̮9㩟AfO5_ٲ'PÂʧfqxV7}CdkWOw U;'o\ɟ+zm싃n[\S=S`'z7$[K挈/tMJP%2^J^;k6AJM4jj.1C|U76P$uX,۴m0+fA`G͉݋sgAWU	 q5IB(t~̝%YaG7E2PQkF-lϺ7HIn\:Іb2}ˉS2':Z,`mcr[a[cE
+U}* La4U3MaJڤwj)0bւ e{ć0CMaMBU~S
+>g/WM v9wfMY7ߩ\Ӻي#grsH7vjS@@BۭiPӅ=|k\\Qn?٩-	 _L?M۝gŋvkbvԂ/X*OT.y5.|*Jtuxb˒\M;QǺ5KEVP͸ىDfju]DBSev@{Eby`y;(DiBazB"4 i0	e6j<	~	)"7Ǭ%QJAFcɫv#
+0`zdmLΛPfJ]My?~A5y@UE+ח"j ˻dp,sgknAKzrO<
+cY8KÍ7n|&
+V">|K,Z?gU9~{8exᚧ~Hzg!V|KO;1Ώlja'V\8Y|Ws@nvQϐ`T>lJq$/x6"[#r}s}/dqbI=G߻X@MD峴CԞxan]S/Y7~|X%gU^&z7GāG&@6-<ݹĪ ;m`(B4vɑ1*dy[w*cAmj܌0`~m+7},G?GCI֌ԮAi682!%Qצ1.p/d#Crru֐R+`$P!itSFiftb)t bj`ӈuEXQܲ@I@,*82OҦuZ`"c)j`;CV؎%002qόbij }V,hBZ1{lEz5gAbCBeM3]3K
+לWlRo9*ӹ~G?0w<Ά9Ո9W?4v*7^,wTiE׍TD/Vqy9dkFcK?X7ɻ8h]'7{*&qQ %?1,"*3=?*(xwʋ+>uX~_4\+['R'cȍ88jCbF!kJ9
+ДhH9̱Gi$Dn3`m̑٠m:
+51 Ȝ " gIӿP0,Zu5G3"影(l͸X_ߕ!!Np!䟮ދX+q	_.@][ %a?$ŁZ߬keYXXt@ւ/"Bp'WK1(O?9ݜCQ,0-_lBpEտ<5TFMRh`lਞd/+yA(yb9/pa \#a6ЏGЁ}=zVH=i}ɏd`}O%[G F8'oloч vHPR3J0 Є3 H;v{jl8unv  -V՝>_XJ*!rio+|lY
+|AD4	Qf.ۨ;<2pgG5oY!['  \s){д=E[D<~C=y,Y4`*C;X0~D"6s&R;i ;|gjnE2BVx2Gl&hrՒhoQ" >nđe0(^Oa#khG 9tɷ-!zn
+0h`+)m^
+#
+eTrqwN Hm-(F=BE>@TJR>Ÿz_>s{tֻy5<5_;*-rze_<۫{ųJ@=]dCЅ9s~LCSj7Dw@+Lf[ε<~GeZ_|qO\u@9_XD~v(\_ٚ`#}t/ǪۈT$3kMw*,/DԆ$K[' zcUu{jdjOϦNYR?-ySc3}a|m::/V˽xv4:kL񎇵,!
+#`*>Mc/MAY[Ŏ-),,eZM]aItCgIMu;(.šXݡ]KzbqؑW-P$fUȊgfsZwFw>yrz%/ˋpn^<}=wų=ypF6TE	T<&o1*(o_~AEP0@s&˕yYYL'#HjR[wjD`]3AW6)L POҺP' @-v_8ppq?hpScwUQt5[S~rsfҜ>Jԝ/I~aGB_C)zl('m&ʻ/WL_?_ΰtKcysա	jfk{? //*üw(6VR;#zb% Dd
+Z=7M]
+j<?J(]"1[ϼEMg]Үi Qܠ3C *&@f z~ѓ&Z.[FBK@Vd QKݝ4-1B`~"}vIv*|Zԅ5D| '漣ZJyN 4D&ܩtu>2%ډCVNNߝ
+oE|eF!FBgԫtN˶/MvIL NS[3<Z!hOfG,D?>wyth+џ.Ijv|cB5*ލS9M:wg3L[Z}[/,n皣=yo7EYM*^"&˛*0<IV>UÌX|;S͗tlŸJq*\/(=ӹ'\j}@t*pƵ_!&kR}`ˈ	n2T7OWݡ]ǑdN4( ?-vn/mGv S!K,5dD/q=$7+H[/.@ ! E|=Q̓e*Qk09%*	  Ċ#JiSS1^JKG	^q}$ A R>I1__-wQZsfƶc,%/8.&9Ռ*Zvڷ7T⏭l|Q8U}`1/kuQ-W ڹq~g	,{1=!~ `m+ջ<8UwjmX[Gaߏq͎~J)r'S 0$
+ʇ?gam-Qx1;9OZ/[~޼{ez?lY[~d얼l|uay'W<R=wI~ʸ }vҺij?-/iEpT1x#]CVֆ^UM=1_=nq@@<r<Ӕ{|T~~F%d8`RR) zx򛖼: E^-q4*8#xm$7`֍Tc>>mNux C!V!5~!VvU7fґi5n=6w'xkDS/KONil.aI$>{oZJW -bD>,ʊX!kʣTl],vmҁ*_Y2	J>ekJ aKp#DccO -YMŶN߱
+3+lU<))bg%r!xRH7\Ҙڦ6ܨIǶ>{+J
+;Y&[5;=x$$[𾿔!⹋w?T>>/Rb^OTp<C-Icug,9u[/U;w8`S?J(X}׬tsT^78ZJ^x?\k)tnɋ+gfc-X4gwWcI+[|_C*Kk=2*~㑺@zqcwI69>*-\tqbt7,+\GLQnD3 6N/G'u+4+PS^v6& i(RŊ-@V%
+|ݒ27'9pmQL.n# `[@ڵ'MU&q^9n΄_#l1(0	"O9Q|fO< )yOs=9X]2p|PU*x%O	N4_[UFHBqA:8Tkwkٺri,n~GD@{?f,)<dvD SJ<8QX!LYlm!1mO(5zC%n#qY:m4+vRmgbSMޘ=q`5} 9LK)kp"Bivw$v/Gvb<R'VQwi34MNLuFӱ^ډOfb9Eԥ>yHL9KWVC;gWB3R{u
+J-F#W)׶sp_դ9Ҽ'f|hl=5v^c_b$sr:O8B̐'$K 9z$d6n7E1	q7)愷o RN"do*zXgd悻F
+@XC`ɜpD!6IW땄+m>;-	.ɝgM>+]l*c$.;3*ц|.Ж1b1(4XZ<;fO5xC׉>ZvF,[m=~j*~ofT[MzuS :c=~p1_Qg3õ35_T?-l=ߋ/q|<N5߻Y \S#nC /5uH_l]{P\닒j|]]x{lD[Oєs,)xicVJױ Em t NjDnvJIac{6{3-!i~FؘzB>Htߝ":k=TUlx50c
+نۜQbCo8#MC/WIҜ3W	2^:~?bG8]]nTlC𳎂qzⰔ}}ΘBlLi1LyRA^g ϟ>.`<`J|GBhte~9`* F]oSm\4c@H0 =Hd/ue=Mq8r=ʃ'{gB49ph%b|X]$-m2V[JqRKfsvR_]iTƺJd]}'8(qfO]ݮ݄qm#Vp9:V#:%|j/($<s3#nX^8OyhR(6Ķ_ay2}y@5R\	М*+ӧ P/308%ec[op1wהM=    IDATsy3oͮ.l>Z	 HhKr13x$Ydo[
+Dn[[3%".B`JusZ`CLmAY9 &حn }:~*m[;$X>	~Ԑ!N8(- a!VĩQA1=Y2}M xٺ`u~\̷PYCفhWKï;R?flI4sL7+7;`cuSZ뚡?^3z-;:,u_U5+wvjo!;T/3QtkV\if߇ov!;sN_:WE ЪIj5RZ^׽6ߟ?@r;=|%V~~yZR(v^bpX<7"`u ¶wGE dk"Z	->d+/M ̤:A`׌S!CXҰζ+tmoS=;/h 4K.f4t*}GT%ڙ*J~)\S,g'奊q(55 UZt] mQ>_ܟsc筛Ov#W?Y?
+QU3 Z1%$+7%8SB8r2lo&hoT>Hr:϶FC~CPS{)a 	ր"^y
+ 0V@:[U x
+)f(FP;6zkߊ/qtS<y꓌mo7%1ŕ[JG/H2*'J=	~XQv9%K]W^&WM_@L#c
+5wcK",ukzkb!Moڊ<@=āt\jSۜ:-@4=MJ1s=4B TũIv~	F@2[G.)hx_í]Au0zf>z8rzlvvI~<OѩWzK/g/5bH>\].dB!%5AZ1;s}XAeMJ6DZQG^Ir-#}>f<+X?3g2CX[P
+ةtLXx:rsM$[+Q:qpgbQ~f|(1;8 HԖbD*慛&tqtngrs֨|#w8Ԯ^IVݎݽҿ}"+I0\YŏzyvuH65
+sfiP2͵./''o[7)qƏ n} \O<0fSJQ⁢HRrLи>aV>etS;>`4;(T?4!Uugϳ 
+H<RIMDqjvDpLLK}~| 6qaf 	 >	T +<W#VMܚª<Yh*fG\"Q$NY|
+beD=9~ägUCV7Ƿ`rGSJUsr	!'ՁY5g'y0ZnCYw6_3궲<:뚫6H(]lhTBL<*1%XA%FKbAEJ6o]ϧ83rw㌓z~9漯q?wF[> K楀r貒M-p ArkA
+`lY@I2
+nDHL{p, |;]";(ϱJq[|izexݣ$%+"bdz]7GTa<tI~A!.RyˊYQNHkWejDW^&o
+q~MX	^([?Q x-y+E)srOPKڐrW.fY$C٠8 =1Cmd+8:F	6.Št	+z`#2azWI&C-TVo\)a'CVOJ<]6B[6I=;h7KP[C@7Lp|2gj:3n#T'5*jeܟBTn^k"^'8d8/.X1<E)dr|=Z)6c.mubGfqd#0 Սbyl6BNc2Vp [02F!QRߥ#U*ӄ5"}NLgeG5߸d08n1{XN3ܵȁAvCxtO,vC(l6;-N&z{n/X!N(HTJVlg>¼x~g0)g[ףxg)YȋS(Yt][m[uwVr;}q/L/)>5UyC< 8q%y8",0<L.w<Fq(o	%}OEr]!$媉A9dZL셡94 *i mTPG
+pP/p
+q3XjF6(PP,
+DԬjbMx^*Eqb2]`|"XR#qJ2Ń:UTҭύqE)RO'م8]oϳc0B,CY -	@dY-˷	(ePniPd`^,{>`unTESd!(yqT7@ B1X6kkYy>m	5;ƀ1(]uK~./GkT;\myq8?It!79aFm$ya^j98&O#e_Iqm݁Q}RRɺm1kJ.סKA/~RLjH<cTnmcg	$ʥ{9ɝ6T\,7eeTo*ĭAO# N!0[`6cjyf55H,5t ۉZuπ	e'"i.ji3> dlM0A#*pWAGh0{=t	@9t={kK2'YbCt.bp"RPlZ]Ώ&˙	㗈@Ɂh"P;]re*Ht% c⹑˅!k~5S ӥX	@Kޙka<c@t P$:HЧCU0zCr5zŶ̋#H}@lV Y:_P<SbBrb<;Z/L)S>Τ{'t	t-yMw3<
+ŉ6}*ύ8E?SV(sJ0}˱~ؽGRl[yq6MROcWIv~&YZJm'F[UA0f[X\d嵜<cndj.u/{U&V7tCHlp?F":FVG`L]JS8z:#;"e#q
+Xg=q  )(CtG^7pfihY ͑Q{2\SSn5kuޓ Y(ʚJ{$ L}(I$dtRW)5`<vBl/m( vpe\Ѩc?'<3nMW1~/]kIT jh yR@	
+`01)*AN ihmVR]@)T"/Ua ˇ:űEF7 Ҟ?U>cliQ<vff<=$бnk	^͋SFi?[cRqRٹn~XX89\;.7)]t2^?e!;}^c)XnYާ2
+_%lDe$-]6s]Io@a(2]x#%#o$lw79:-ӌ"xh5~bԚ&B|ltFq"?ՙK5O&ED>>^}7~3|wͺgʹuLC8Cԭ;b-4Cf(׻*C[
+SʤtI׵,\P$'u~ߌ}?a#hBFgO6.ḟW6_%:A8";'m`<c"5 h,W%jy'u@x}{9&hzL9#DU5уHqB[r\`d9ErXjxvmT>}}z-;&x~M)`U '˩<3["ᓵ,kLn֦pgC9Irf()NWҺ։BnW9C4hT?Z)_]ӧ2qLBt6Dŕ/ׂ+3ŘC'3b*xg6F⨺9(~Bn鮖C{6d@qBͺ52>fT-3MXA2c- tP	 buh!qnbT)dr2H)H;ґa9H$We<h'7v_0ڗY#!T8RJ&tc\m&(\?si0!Yg*QR@68y+{x0zc&.Z\/b`^! Ź7wm04AtA{q) #yH@)! @8LAKHYzp	 7`.w3 HFIth-=/+c`ԅL@0ڷ,'-8piǔG7g-m~!hDQZEGQr\!ՌPׯYe^nzczUs6}b%{Fl\I/\&Mm]+{7ztΦO2g8MYIg4^\n#AN~ L+O.۟íǵ)QfObh; c!ܕHa#>K#c3棞P%Tϴc\ԿX"LC2پEqfsC'*Hz"{C]⒱K紱"9ᑵu[,NбܨbБ57 2<UCbrx!/tťnVErcU%qctɀHMkCPC $VpEe8N1¸.B
+Gդq!QUDþsHkw%rjґ6uk0RiZL{]Xf^rm>ϏYav6Ǟp/u@:>fY)dũT1qRŹ^QZsd?~^B:ZW,<?ѽxͷY+L.(xdᇵ~g(58Ww}n)7ŹڸX<l@8c^ҽ T,D*NQeLyc)ZCbeH7RXMY8Ti@csFnf, uz
+l(PB4B|lFHMM辏^lqT(q2<Mz8/ ASy6d	Y8QB?JސS'?HK0yUe_S7Nl}QIx$!p$v\/5ea` $ Pv Qm$#(5 CrH  j  ynpxL /0@C8`J ƀW Iϭnö&g;xxP۪/&ɑ`(}mJBnJݥt )l !Tq
+ tϺ38({eA\B~'.ʙ)[R7"qb	JŶX34:8 о2DMxdH	6z5Q4cURFMw=sFTIQ[Qg;z B 1L_[b!E,y	[i'B́rBWnu%_/Bx4zJџt_պc('H0XlF&ǪI_%ty$xX{dTjϔ׆[pi,JImЧ[mtӹq$}#L=Xb$&UQE`Fra/}|HLzǠB
+I>lذe[Q219'*+V#F
+@mShGw zӠOdЊuWMo¿Zq~ԍBMmIPtpuFW3sr݄tFiYg*8 uOmvmHԫ/rgluJeZׅ2;nǺ}a&;饣}e׹FIq0% µ~j+-~_r2%es]Z?ȡaBM!a֬;7פ)v88yӓ2VF*fZk0>6"e @<@U$fXl5rdUq!xXوR%RI8bM8E+cmbm?Ki0ڨ2VqMrQ b"` \l+c/
+c>3]MbڙB`!yOܫ{E,Z0\x~;HnQtUcZZRBǾIIvrb]q0ƎƳ+M"a]\LƐƐ5 !!K6ad!@j[R28e tiו6$	t700R(,>$#(Sʕ8P <j6$` 6jɿqK~afߪߕ'n!#Y呄Fˣ쒴xQ,Xf=F
+B9P6}Q&B"nkwKVFPf/2#MDUS5ZloUo#mrt.C9GU^%j@r0uLccOѪrH,6hpi謄&#=lS;4j@2ڱYM	xDĬ4щNx0r,g/- 4O7jHm㜣j6?+uRtuY6P$(
+c)vɝ9_F$N0@P}6Xdjc$wr,9Jaag)Y*(9>cK`$g(űZYSmBW`,/-G	Bq l Í`5SGr2Փ1Ce;E#uݑ,plA"ֵDM1$cxǺ~18!0iUéx0{iV^baʥkرb}.^;|Bì8-+NWg{+|: F6UjJr~q<;5FK_WAeph庑    IDATQuѵ~e/(EHeũiqQM7KK9daz 8iw-[bqT8&'
+5-FXci
+c+4+ZL$1"3@.I8r\$ب b`! J5	"SЩB3jLn[
+*拱*{]2Ʒ[$PaXtc26@ו5h(=~_,o,;.ٷAJBϹaWbOK_ˋcj[B4(g)  c[Ԩ?m;Im?j# %BG:0Z``@8$C(OAL;5@$GP] ] @,(X6 J[$RpQ! X9|%0ڱP+FPKF}!I!KXAj܋Y"O[.+y|J):DhjJ"$ڒ)ܯzOq3/!@{G	J\)\_"$${J31GAv1ik%'
+`O \~@=A~`$`a]u k!.> +!#hQ/pI{fG5L  4'eMM1,
+Cza*#!@=$&`if{ׯ3"*:=8\ĉ6NkjZoniXwWYt#. %Vex/\mr۹ɡ2Хw)te,[cM5c\
+L Nsi ,u=`tM=aO	&`zbc5RW3vb=Q^Ok@DWZL6qy,A`BK$PT6Y@Yn &3sLch=NvAT6{x,L٫-2coWŵ~ڋ]\cJ~qxm~pT33QMq_g gxn]\rNL-F8fũIUT)|_(}Z׾)ݏD(WȍZ'r({'=0AZ~R&b99TU1~X F)a*X65{D9AUhT#<6At/%:mXpdKP&Ƥ:BYX? XnX`^^.)D
+H	uհ-	|51cx̳owԢURnbdѳ%o%f:kWiԺ؁^IBSR/.4cAĿ.`
+n 	zϭV Rp@] !Cj̡w   ֖6e!x-h	in(+:F=4Y]ʰ<wRu*	 KT8(4}yRl_c0q"ϟ3-jֲ,W~L|;sgöusAws&X78u;6)^\nN󄚲Ea
+JV/äo_ȏ1ʔ߮Y Ey9͗P2+ɶY{+c9](G8(3TAХ9<!iȚZpYc
+ֲ:Y
+|<s=)ד2mtD5)zP뇊렠k>Cց"Mull}ߩ+ܺ p'Y0G"xrXfuS$_~#BP ҧcctUcr?a6Mk8P4ơx!8BJCb֍8),0@t&7KU_dȱZfr}ٺ]6}**	QYX-ll:?줯82
+9H{#q< [8ĐW<j j=2tWپTMʫYw3}:ɍP@6 %Wpr^6{%q~1f w]?7^@<NZٿ:gt&kyr[[8}]4qFYqQo|X=.1u 0O]Axyft0d^*uq*OʓU}b5Q@_4*NZt6bzreT=l  GH`U 85(qe4  826%"G`$_Y``oB#]w/-=ZxM* :H$ &ǡX6_:(Adi^=/uezًZwGMQ~$WXxeGQ|oY +JR"<38{T- szj z!YY.M-!)w!Aye/ U( ᰶ; aH9h)ZAy
+d`i߆-sx,(ꐆU{6kPTqCmr@\DoMLt۾!@ʥ$!w0޽ӕK0ÏyO1Kiq~}C(X28g{6 x	LMP4^K_YLM;\v6NvN(ev0SeuAqsk碷)
+#PBWJcՔA6EP皥u@,mbS$
+^fE+2irW1tR&Y
+ rcpQ'`\🧾_woC#R7L04.N,orp҃/2LJ]<ex?b+Y-S,dr[&<m?bWoeD?f"HŋW
+w<S))]#Zf;!$(^xe_z*Xd4ƶTmU/kVbylh]`i˲`TMQ)U2Ʀ80	JF,tL٢1̦SХ"묧ReBn<kƀ8[l]Lj&wrL9ar4ƥdYK}5	{l%ZP-նQJ+rp a q,ercPJNw;J0 XFxŗ{ηWחR"FNsr9ۓ a_ a∱jSTrI d&pI"*d :Ҡ}\b =wQ95a	Wt"+33ғ6 '+Zr]+v2"L`H LW)rk0FI$7ʐ2;o~jez}(ys,wMWd n/HƸa7oy 0J*yq1~}~?0>&4YZGKOAs=FS!^+ 0fS|Q)h 1VZPDx`$#:1K@mBHBh}Nܧ$(N	 lt\Jۃ$B`Q6Gd6أ5%z6NL^D0_i[w&n?fXaJEQ~M#G龵^٣Q~MD(MDֲ`$lR7(ɾLnɍ>LW$J_3_'#񜾨κwHN⋹;d"cqd&1R4Xʏ18J7 9iù,#
+kaHa4AWjx˸޽k\8OXUVc$>Avqig{pDR˲C#B|X?DwGGygo~_\VBOO}jj/vq=ܹOO||T.3CqMFbc;>]^eO1s\2mO/k9w|WML{ɟւ/9Lx$vlF_l2sџVck8ūk%s{|~emKV;)A>nwslrhDm>E/}s#xo$OJ]HoPNtF+*Mm:p<0-ݫm ѽm~x5o5>ډ_Bm!h\g#qE@w'@11k]`g=sG 3f4zm~i]?o[l:J\;YnhF%JWk4^Fx4վE{"gKݻ]燹8 ]7n#xMJ6ٳmzjzP{~)VյAN# 
+mg  0xuE< 26:э~q|@{5Kv0H?3'cמcǞ#}2|H	F:cYgx`(k7g8U~iڴ2	M6'Gɛ)>{\hK֤s>#dDM}{Q!?КV83Jq)2>`{g*12 0d(@	Os pPw	qFU`pjPD=("`4p~GPP@dPog$!A  *}1ƀ_0|) % @P_||{Yq8w_weiʧ"C
+yT2H.j[G}].{YscOBn
+nWrb$WƏLљn{k>vS.__NP @&@?מ1Lg,'Kd[U"mH]ɴUaPeIVҘ^qFni0DL{MxXt0 8|?wMNPh }xٸXU}U'AtW)<Cw8>?w׾?񏯹;K/}׿~ꫯ1_|RP+T)*mTm0~oQ~!%3>]RNv"҅WaڂPQhPF,U?򮟪]0Uz6KwϻIQ2gܛK֏g\lDSDpϳ~``aKW
+C[J}iEڸ䐽)u6ݷU~T2];x=Q5LG m_r#FŨ8bݾ0yDBv kyr[?Lz8J҇j/ĉo>M:crwE^Bۤn!$V\ 3n!vzsN	kgL^RQ^81+NT4?xsrױ~nѧ֝4BE.0`g {)v)\M@.{:i:
+&&#E)A+0`4 lzObaZe= F{ 3ꉦ'U؁,
+?2O|Ԧs]j .{A(Ю6KV)2]%xzXLnp~Iޘqqr0Rf_'Ýq楥.u2czÌR3AkZ e n`p2V@	)8Uby=X{{a|u0haP<aQaj'(IwAk
+,x q4x 2cp<O]?QoM!0
+߭ (cBYYr,FJ5qrc{Lt6Lُߥu٦"!GbgB͹8NV7)Ӄi8@\~ Uwr+F f'7_tm~hX'Aףl;2ߟ>oQ&&CPG:z #HA&3$fd! 0YztOso&&H\RKPF$(ÈpE4Pc`s+MR'W~-׼Ci=л38K.'?yi
+ \s[.׾k׮;J~^~K5jK}C6οjy;*i_%` iK	Ń:ߗ݁FV(	,RF+EkE 6 }m(_jS|/mzo.}ᥰΖ|ar QeXG[gU~k'Y8,Nٮn~Za8B1|ɭBMU1DY3w~V,(x@,t+U"c]]a#ͯmjL5Ha=ϫȊ3}${jtUU~ˣ{m > x4?B(}~!/NnL%~0O%sax ٙw _8wWI (ܙ$, &o8ZxѬ'܆(y= 6InW=VfK[}~'!\[䄍㾨&l_ZTBŪ* i!ғc=ml>×krFTDUW3GPR1`Q(,0)DprgW^K3vߵYV5jߟ> p'RXǭ4VJd/4Hk&C뜃5w6lgUcSIǜjlun&]>ekֽo;jȡ3=랆TnF$*Wֽcmek<dwZ[@ &MG	{X+X.2a9p#Uh#OrOhuM`eK`CP;F+Í1<Tb	~2]Fc`ypk A(xu%2Ë0Pi,jY(2~gtd[z=.("2K+7ML#gsdh\].}kHY[y6g_5xm=P'x%Y.Wkl=zg';/N9vP<=Y|xxtg=[7j޿<wPSǸb[>_N9Es]0,kX@B匴:20A@1ԎMWgܹ`e&vy@&+tPQK.iJMsf]:L6Ѫ;j_]\EEyCuYOƧnzwl?[͟6ܳ]4|wh=[	{Wl atiB[s#%9E;;F3cTMc\n\ΟEkDsw޿L_soiZ~$`su׵Sz/N`t<bw#G)ܛxץj[lTny+NPwO
+::z{`=R{c?gCHMZlߤ}EiPn('FڳNoRfBהaչ~5T{c7{r.8vSjbWq	w7p>-a52tM&˟ey=Hݿ̱Wr]TJAt]UKSV8JRg?5l{Ik#F3#ݵׇ,?rk	lhr(7sk
+5T:zdn(hӞq#|&z&L    IDATh͚]6!8
+(YOlIIAs2`@_Y#՘DKέ e\ĉ艓Bϧ(N	6[tFG|7	jwڽ/=kqT<8cT3]l6F%9xXtu_5 yg;gڄŞsku|dۖ0gRNE.sZ=lƑt0jk 3x6w<<OA(fo \0ԎB8ʡ2
+Ne0
+F˨ 3"!3Pp܂05a"޻lF,Aa5~_e#I.4~px(zB8/S
+,'-kwo$مJ}v6Yl>pmRCGXgH~mmnw˟?(N:h6ImPNTM<}Pkdi|]hZMcL'?5@vdcƖ8£i[dgFs#%iw=F
+p)芚tLƴ&e֝0ةY՟|gO>xh0tI]tѧ>;3<_~>3ۻV%gɻ+K5~,u#[|-pnRwőx#~uF1m.'Աқ+6;X?:6vٽX|AMV>cb67#jIW#qbh(C9?jgsc׌җA~Mgks"6mbNW,v*7_1޿BOk䡡Tӄ+K.]BM1_HW<ak#{WV[,N~zmRV*_/sғJX6sqb]Sk>ݪѱ(OIpabЛ|NZW^A,V`fZ^=~*QV ߦ}[}ZRM
+=9?JUcG9?_u`2_U%06]hۀb~`600R'[D;4Iui YN$# UkoGlbP%kEgw:vvQj/g2e.[IXev^lŁ8̢kU*6.ЎM[*B$%aB0vcݿڿ_ڿ?\#ˤ`t.+Y?Wuwu/,u]Ir绛P"Aki]Mj!2h%
+5"]`i*xt>
+#` 
+\X1hd-  9l^p#!zjX]8\F(aA	~k!
+WMwi;+iz$rRd#,|; IJ<B8mi\'8+zWݞ{SiNZ+hR2^ع1f5{♝h(dŽA&OؗQQl=$uMйn0䁵}$ٜdeBMiՖ*Vl7>W@-BJDfum:ecgHLUUVH%LVePcA 'J܀+jfJlt_?;*/?yE/K%3zb~轌sqcӞki9TOE۝9]13^aW}=i^[5%}ce|cBmu[uP~Go-IC} F/F<W{tUb{GK97L_:?KgFQp%bFD )gf۵˥+9[$)1cs#-__mȵ#D{ֽ8wwN#Uೌd|Fׄn
+c%5:g#X}mf>d/Td%@sT*$Jl쟿ղWf[) ߶Z7ᆰ1p=ƽn[Q$p컃-RqѠ_aob=RGQp6N?}Rq`Fř6MNF-Si/+C6SBr0aTɘ0bùTRxԌaKcFWv	"疾8j%=W#IzC:wݹ8UjҕTMh0acGJ=S/qC痹89-t;՗Bs[,~R|?yc-m=|,gijf:o[>	KE,?Wih8H@9>J՝JEGsPc s6z]ף`v	v&X1%V!d
+BA-4΀yHQ^0Ya `PF@;O>hiJ`r6ƞߧUPJdCd .[wPd Vz1`-Z6w8ygW/_p:?
+=>oAHn97ѻ(5ؔN,ԡ ]jCqPJ]J^q\K?5z^~ ;'/h'/hS*:(,Km=g ޹о6μ6zieԪTi||b42+ǌC܈	0Bq[jYW_w<_e_o6Z[]]Ϭ6?x"rnH=6̷oXt1tB  E^I_C|QΏֆ|bs32ܳz!	%=@lG϶/5Jo$Dƣ#wͨxֵZ76zemտ3z'/M\^r)Z|僔v):lw
+y%;_]8ճ$(b0tT[/aq6yt!#ZpyweYk5Xdmchwty|[vWiH'
+' Ztq6x0%؞sKljmV+wOaώOp¶y='k;* ᩍm^d fa4*SXځ	CPeP+wt<yABnl\hﻟ5n thyL[}~0]g{*]qE;m[v?XsM%I*00Cu"b iCd3Tmu;_M^%BT_0m(/-7;\ٷ
+Aߜ>2Yɒm	dBO2:ۦ%EIqm|a=Qva\zjRnJ`sD`[)\޼H_AT18YX>FH{`69P?P'FhԂb
+QNcE( cA9tBa0:AficG`hJ`u'E=Jq¶^V)}^kRRglU: m)πΊ3:ѳk
+q0{LaJ&޺4|MRM+`[m#"nk-Nks?'2 ũHjo^˟{k*7Q[TGaᒈf߀TXΉU%n4g-XbX7eNA5Ǻ+L߬yķV@k
+ͺJT`e;;jLPX]R"4?^v}7Snwq.߱c){нasXU<j_(IZ_rB }J8A0owf@O&dlQ%$b8p8P3ρEq'OI:Qړj}Żĳ/'m˞lNiJApLhRҳ"c˥LgYaϺǀ<`:f)W`t)tJ(j~\Y1c8g- `%JY?gK7_h8Pv9@|tX}ARȭrV͊3JK!
+|cF+0ɉ'Ja2X|7H{XY TGЀ"! K8{(C1;,2%7ƥq`tyvTqqT}S!g+S)Q{nߺӣf(NT,dw mM2cSU.``LⰈ"fW٥e}?a
+OT_Zt5\RMGmqsίSyDeeH1dKH+D?*чZ9;7"Ƚf3cZ%Yv2Uk'I^dS49: qeB
+~wK>DЄ_BD{7@O(>!G00Z@lP#OF4Be`*E	^$: ZTP9.q%P/Юd<kA4 (G5il%FwukkoҺvx?e/rlJ[KWs5ӵ	b;RU_T9_85i<Uc6|/پ; ʈY.,X%GSJ`.Z*5)gVt4v+EYeF L-D;-i6 =MT%LP*
+s,bwnw۷ok;`eY/|x/i.-----UUƘ뺗\rƍRo}[=?M)C^r%gOx>tapigiϦKBi/Nh_qe6>Uyt՘]O_=,tP>_&*=ɣH=1^~M^cS[?y^>,eZ.l?k6-8K^͟ғsUv*OKy7˅<'-Vda~>\8w=m[tIqm.2gl^f|pQ|NWoQj;sq,@p!](!8ny7N?;go+:CN[V.8J=a[MM\=i2ʘ,>5=)E`Ln93-PdX[Ppd]Y5X>n!O#DJ`bEʠe7cԟJ(isGH6[lO&6VzRRq蝹<ܢ,T#lpD Iɍ P~W:0$bL!T4sh6PeU	\4kBn9zqӹ_IѺ9|H8gٜm=.,2`_0YyWcJMGUƄmyksKt͵ zVpxm?d/I{2c-`YR
+wy]}VoiU,XdBw-#?Pڂp F:Upz08l!:X1@h ]ҧ7(pV 	m( 0Q-p^AkKgS$ELTj4_TIr6W&ՌßG7W*WѥrF8]E۾oI}B
+TSG3(467CyE}Y
+Cˡɾ|a-ݻ~Ob;F|H+cF@59%r`H{eGPJRSظe5V_T
+M'GTaED+L(zc>3?or<}}y|qq:,WviOn0BͻV[trtu?X?XoOU{M68uj.r	q,|58͟rB=z8	0BDٹevk+5ShT,Rd^w
+9򾛋ZOڿb=^@G '+ZmTq
+ !$$/:녅KoOӍ3J_Ge(=湿׿S/Q8B8ٻRԷj4T6g
+7kPBMwMG`tiSz/<]e8%rf,;w.Ǌ`drEW't!F0a8~8CPLx=u)Q9a"_5F=Dc?TmMT~o\ÇD+B7|<]zK3ao&Rvnb%y~0",&T\!DCزCG K+ {<v#6ٴwzTLy׹l?-O$/i,#kˆrS8K(55.uɷ}TX"0>{ߦd_(nK7ٜ$p>|foZ!`+)ıeqpPl58?~Gގ! P#(P<W`WߋaX=;@{!S$}c*#?V	F0(­Y[ =0cl8e4 )v@d-r5.h-fͩ۸?emkyJ[?d廊ګ8veOXV$?g"vFRixJ7t^o¿&ŉ8Wp"-:z|UI/{+MESĔ[jb]bHu xڨ\BUCGZH@2[d^b!VԞYb<ӹrCtNA)Qjo"]2.#3ΐ-v0H#Fv6g6{j4Ɖ;?GJ<*).LܐWR7錊SedP_K_^ PB:@έJM7Tib1v!,&}[\nd^\d.Q}S	(YLFW]qOd=E~~uC5q|ZBm;F)z{?ϲ,M1d`"jAob0zS)'R溏(	/)Gűp^u~a68Kyhxί\76h|g>ku0 baF܄[Au
+F!N˅_*Qd`n"ApB{͙
+	2!Osw)=NI[	Ϲi6|Yu-_qn?:_XFl(S=((XʘIB+f^;8}0t(sٲ2>{rj8u3cӿ^W}nѵLM|!/Nw{3qkߡuFl]YY~RSFM hXq0qH    IDATR<o|+zPd$!">9ފ'%2* A<- S1ZPU#A,6bd,b89@4d 1 V:EtGt._E@-`1	BAv"ma$+G)3,AIp $ݪ]^6>)0=N+isP
+FBK_28(NtV95}in]s{pOgJl\Zi&tY zpҔ{bEZYck"rUww0S*UM=z%CKK)<bk"fUVhfE{OhCZzFXchSf:vW,h.@&X55 N9zFj2/3JMg5 F,NPg^g=u<=EPJc'+/_jP私=#yG/vV`nRIB0,6/NJ7Uqty
+=m=ZW~p~ZCZxH5)qcѻ<}cS>gřwɆBLzh>$cZ)t.Һe=Dcz~Gh]
+Di)75ޙϔ1|P^x]>\% %>.b	A1as%=Nl뾨Ӧ41Ƌ<8y6FI~A:n")[!OPP2z#*@dPI5@,Ӑ9ꇣq(Fë AJ'Eڝ)5aOYqZ"Netmu{sqr.$>ZQTKm'F (ٿi{>2P(HNO
+_*DCNmMسRZ5N.&tc<b'}.l;8I_hk<z.N[7eSILǹ Iv~!~7I5_\ /W~`sr!
+':A	²4wB	p~;`jc~	~I" %p< C9%J?L lhBQ
+Ér'xb}F;@-G@ΠJwtц=!_P{.q N		 f@]P)pˇ`1 VD 5P^,OZ#K9F=ێgz 8@ZQXڄ6<:xmiw%!]m==~lc\طrsxF6:E[6e9  ɡp~=:rID:].++#ʔJShAux0BYw{hsht('Md;!1+#f:H@	#
+D	aXp923_ջ߯-'ֽX|~{?n})G|_V;yKz^RK_mScAH6Q=P)T뺣k㕃+]ɋSn L?.4ơ_ޓ8|6ßYk]Y???|?%f_KV
+R1JQֻkTK'IN1&t5n޶{2Z{fk1Es;7p(m7v}ZP
+YX-ROkdtcdw{^6TK?
+  !a؂1`[( u 9 JQkPwz  -@aYh/q82@uV`=UtzV3^y9.Wn[ߩ?o]0nOp	-	]Z֔F:Ԛ6|$쐺c3][b+kK#v;<gоM)Brr :헖?EE͎s!y^?^\;wКG;@gDuh*@!!r8>A܃_D sP!2 h m#/H@O߁`E$0'czK-qa5FUG}+(:]Ey^ԆE8	1@o^Efsh rp	!$,GэB2x/
+q1N~I:W⋥BȨ;8,ıMsJDlm|B\nvk}եo2yԕ\_gVD%0@/z|G8K1Σ:r
+]^fd8XcC4,nat	hj* X"Ѧ$fH#:^a(묩bЖ^hpBw9}ja9#C$:okzg?ٗFx;G7_W̻owk&e/غ-kmйAͅl`I]G	'/޿xdyivk}5Jk}cݟeDu`\fć{mZR/\7<BMƸJ7 ZkOԪ˒{c}'HOw<@2sے4׹Kt~^}#HC)79cVv?ݵlGw-(GkKG㶃,yjIKXB<52
+.Ιyq̆OW&ŪI''"unk9kF譲ʸj-x0#X 8%dUX!(<6d`9Pͣ Fei<*^?3^X0{w
+{
+XЦkBWVDŧ`zTbMB{D(mJ%H3N'c=6ؿN3\D<-owM?zviŮwWVkDdHi+ﵝ`ic)X?Zq 7F҅ApcWjGMFxK$pnW7@9V (^TlmPnyvBƐ.Mv	lNFpD'/!ݏӡp6pن}+JO!ZX@F9F`נuGх].ZP9Tp0="*0ZAPK](rrmoAIXJ{]%:J[Y~HԌTSbmF(;G3lv|QCX볣5Gr5AܛOԀ^YkCU<E& i}PCvILYOkX{PUXɍLB@
+Y047ʋTQ%2ms=ڟJkmݩ
+#:Ѡ )dyrI!89@ Q1?57^Gڵ+w]ڵS,^߽̻iGKMsCƸR&o_~)=C:!HtÎu?ǌ8G`lA?ygiGӒzYL߽u>QxeApbowAzxܱalVCI;c 
+H}X+^Vy~beѶfeyok9A5M=H! n2H""DbGTQr(XVATw}v~y8ۛܛq+hnnxkǘ|>[(~`sekSDK+-{nq&RYǥ,/7j]\A:L!n@g\:>!{ZEFl%dr*EG`(C%c-t?7XI"$,ܓ`xm P%b18Ud/@:#t E<'˞oLGL+ϻj#wwι@=ᬷO~((70,qwRʬu/'-KQD΃B> 5ƶ
+}W'?iy4|[]}[R܉߮reK;}o<o"':nYPdDu}͍&!E)vc|I)h2ݦu
+ل}).ltp#T),|H (<3)Vdܡy{(6>Cx=E Pn%?S
+NO%;L!@CF+<t' eT=l1(%ýZ:Dky{c[}Օ;ZlQYVwvo/]ra+skvXND~1NLQ\c])@[͞q~:kk|]Q laj2qgm<Anue+_xB bj&zwm5ו(D[n*]3T8-6S63˰jTډ/";肸o0
+EklWc1ݭ~ӸR~Ƕ?}gac(Nso|75;l^^תcstRV<Q+e;|,_WG0BֺJoOH#]^kEyM^]::T#z<Ok4?6c;Ap$3<>Ey]=`>($Djr^E)ˌ/0_βwzSϬow<kSmRZcVo w)}	ȧ)AL6D3ܤ)l"/1PMFlѴQG8!-	tNm'R	;NP%"]Mك`
+!A(dN˒Vkf흠BT;?*+:bRfck)hic%lb@sTR[!UeB	R|
+ȁVwNW\:R}RRNzEc](?'^qyB%PNIS !~sOU ^Ss%P[Dxm1&֩Ƙ`+	:rH7KMF>$aşibTja+1c!zd3!?Mt:fpTۘ(w(6p{I/uɷ	HWG'#66$QN^dlDk?U|*Y:'H)sx=9h(hڿOӗ<fmwk=/?JJ#sM:ߝ7eS^(M亣q])j0ȹ'	Ov}:Zg4VjXw[w_.~םF sjTjgdV
+4m0QnA]֤)Ouus_|G'&aodm՝#h(=jlFJ_1'M?fq@Q^[o}l6ūR6wRFwVO)<{BKKLK^ȵJjoO~ViqyyQ.<Ohw:otEqIjXuaqGҧUr;I_vh>9U_E%i8LQ[
+0k-1e:>'ӓվx$iM:^g^k2۵HG$UuHH	>Ƥ#:!g
+?1*GJ\"TLCr证DLwnC:,ܼg=n o0w=ҥG
+`2XSaz{Jo5x { й/]XtKGjp0*j(sCeauD˴F_հ>6(Ȫ+&˴ytf{>LJ1/$wG6o6mz^qJ|~kxx1^@X@Ԑ.|8Q7wV#$^o 		*I3 "XR;D:9>,h!q"byK}3
+o	E>6Px1cG2W"];GvwP1z/)ǭmm`:ǔ2oGx!:gHt7 C&~-kJWU<xJ1-mK\瑴٘ml8N	UuP,-߶5K}d3{I}EėM}ڈUzԠ2IuyeDmRC,n+HmC_mYJp	&pv\//JSJ닠BѬh[ol%uFfn_/2gn ښ@h#ڊMtd3fnXt*Zlb'c~nw~wnm'[?`[sfɘy8TJ//._Ŀl	56SvoM8
+>]}qݏv~4I%}Kuޠuۘ><bUZ/-3bUyt){_lmvXw:wCT#OI'כ_#V^ը,R !YZ<Byy-WpӛCRH[Xy ^dM 葍g[l~Z2Ex5x2:G(rzsO{|rB0}2vO\f9CkbJm2,TcT #UTf_ęߥDx!~bg[S(O4<kgw?SsHBȯ[
+?U&z0ݪjpC	4`3xLw;}MaگXVzaZ f={<硴0[3fse滷vUjSuҾHƄ537jw:^h0{yw-K0Y(O>DT)~F!=BPNi_f,[-!}`86N'QlvɃk茲h=U#;Obz/*$rw=33/&;+
+`&fI-I݁
+Pȷ2:cBRNT]-8! ,\c{d]qcq/ppȚeyEV>ݑ[?Jrl|twmxAս[<uׁomX떦z09+ɕi[o PGRX?[~qXYwV6˃ۢ\>|OqoJiiЙK\<>r6i$ڊ}.Qf'N#7޶t^q/[u3bҖG㈵jܔ݋޺8 v"iHl2ooG}ѣߪwAbƬCG]&mxwg]RQ?rԅi=a:;iľNgsSPiުv߶6rP^Yvs\+$fxWtWJ	    IDATվsq/eϽ'O(CJj)f濾لV+!;|rq\ܐlLE=N˂鐨:ZFc5~DQ.U8>3{|@s.eDeƸ~b@c]<6_JIwT)˰nZ.VS_$hS̝@y\im8P(oRS_ؤN>ƍw>ŘxaOW!KLILW&ɍ/rs񿙤Ο	d6O"@]VSX]T5nZ&zdLsDQ%3BK}`mΫ'׿R|oW=/D-Y>ʡi̒LUa|L=Fԥ8U"D3d;s{MN9$iO0tB>	C [Ѽ|!).bf_A|1lECė0}iG(6bGq>Vx@t2B6XDO!{twc[tnŝer?elu)NSܘ|D: [D%qX#9?Wrs4|yߒ7DgIehFys6(ku!ZdrgkA)vjX>_>^<u+jau 
+sj3{vV\? +Jʴ</qeˡABf=@eb~yGU"[veCMθŴTc?]	v( z;o0-hYl=7(O+[l%vjΗ;O]Ӑl1zٳ3ChC>8x}fݑk=kkFSW^13Rŭ/y=Eym63y~w@&oTEyxFGut|,?k񠚝<To6$hFQtJ9~Peְi-R1P~Ϗ!&aFIUZ61G\!/1O5/?m!ldMLEkZ:YY lV6*gF9uÍ&,khmnb.Gh'>tupDs]e5j=G:L/#=%7P7B8(P? =C֕k8>Q "1SVG*!{ޗBEl%Թܴv2S[@i*-O4|i]QMJe w?iIOhW6SD_&v:k♎ZW.8cJs3EWz)O&T%B4h-萍9t#Ra53G\)#Ր.+6)FuMOסsh
+(vc
+)GW~&)6y%#,Ⓞǘ^BEԞCXyO;ow؛?Op5ôxcYT4&ÝEE
+pgqb	BaJgpk!d^`x|Hx1qYǣ,jU%+o+s26aG]u:˧Yj3V+J΃v?7j37Jsi`7<y173,ܣWrQdIOhd('e6r﵈DUYaJHB)fMcU(zlSžm'M03V]_4R	}HUnMVXLE\ܪ$;-jWS-KTKyB
+#뮻C}geoh*͟	VW[3_*}sf/-|8O~woG,f~!-om1-y,˾MRey~}zɛnJgSn5;|>YB͕g+_%az#":V~7>͠C9J7lp1qkd}f'f!fNAWF]GQy!QUߤLxbxw('(x$eX[Βg5d:=+<bazn XmSn_D3[I|B5fS%1^e*Y}t]/sݷ羚[n*_M(IiD:jwX4@Ϗ_~\ұZlS#i9xr*Ez}|vuSiGGgfs~"vEU٭ǳ0gw	.GciK\6u.bI6Y?[zק T6FA;D(vf09EW}%[bFpdg@t5t'i~ORn^q)C(]Ko&.i⛞腭6?dLvOd@SmP6H	{$(]0"liGL7mb4yJ@
+wܛ}${i~8/n\X|ŕx=iq1/IO꼱MmsWzxsJ]dTƆѦ]^[&	URr>SƪkRԄ'UbXHAusbҮ30hx(]8D"Wꁹ`1=u-vٌiǜn+ڣ>]WԦ|]=D<+=_/wǦ'Ȟۡ'jOwWd'ggϞ}衇^}zGjҗtaaG곟p
+w?f,8փ?Ïxީ/6_NGG Yx<"Ŵ˵B@Q<uz~@=KRn5[\\?7	a7Iُ]}YB1:{=G}<(dUUKE@hrh_'/MڶcDq	[!U=ZI9a_TcN@1F0|K:'9mAé,4<Dr98sTLDEE9q@8M&F0FeH$FƛGLx<ym!&HF4gƃR;Uos{53'ef}@4?8yK6_H_<6N &3`Vg:buu.bl͘bUEqCY]j'KOUG鵃v?Y#ɐd2MQgƤ*q\ /&RHT-_T)<ՄAx8eH7y&Yvjx=Twr{(roa>:?A\}ے@Ŕ팿LEp85&SucEC	U"%%sI[]ʜٓRm{a}¾Ϫ~FOix_QrōsB:X0V=)4GUy2W?'JrbQSo-yCۻs+FMm],vkNȣ]g]ṿ @C88TV֝+Ēٵj%<!%#jcx[KNMm>I|zy,ގ^sDP<e=`7M?׾_n[n嵯}߾W;r%pǕ~d[Ut3ɏPO*K}j?GWYuM~6kV# j=)+nn5]J_6M_5?&ɫu}b2"OGZ,=[>Rr>^RO?ݭc3NxYBs]R$zT'C&tQlnx"iS1s52%4(S!隆̐vhäd`	 #CT> =C3L&=AդGTC}T2dD'{ CD7`swx._@j2+73Rn2| *6:s5G$ƣeYI[A4Z}u0i߹w7yS'1))N_+LoXI %AUV0U#5Emk+>,ؽ3"TsBۣwZoI~k-(ylw{OKmmۻ*(2,.Z1X'n"UAԦLp½NDK?'1~I)LGzTS7SnS Yړ)71XL-Q-TjgQ-(x	Iz>TnTLB(tF
+#$^,Ř29dL+Xc
+V6?k}_\(:/pMQaԋsW;_;\Z^ێcm.WDגZ`@X܇3NyR-3:)G"K~s.)'|O	As8K֪+fqڲ5EΖO)Ʌږ
+bb/vщhɥĎ;>Y]ugbb/Ē#<_x}.QM9迍Xn_8~pFu%|)(g!)?Gݟ>
+=ϟ^hg+:S}OeioO\uupлyO7X<(m50^5~+ZJ߻cQy>yюTA5pUj<'X-︴ȟ';\8ukiף6ùG^:6;^H:F ܈ltA\]G>`SQL5UpI#ݠv_i5IpB~[a=>6:q=a|?g`&<Ƌz/ 0S1M3GpT=ƖcYg8uuIg+cJtFqqj"M_E6h-ַQ/V"VZʬ򄭬eSXlHYT(LӗF-6.+vӗ]1x^]騋z$+o؟ı̦l<(.sӎRd{Ja6r,DmsI$J/Lp#bd+4.*4
+r!0%~9uT?w~$Zxw6:3g)7@a2m9_al}`rXQM{T(| Vq[ssUKSD)8GٵCi"ꄫ/+#`=VǥH+ӭ{ޗ&?髋zzqbѿsV9rMmqlTORnם)bA27n(]-2;v2~bGM:ZNVtIf6DXPN̺&DD]̞?漲o6'ܬfd.Z3_xu߂7+& ,dAWnMQ'f_ş/<7m~KciU{Ӵ|Sƴj_Q󴞗rk濨E`-x~,nsG//Zbu{_)+W](3{^G,]TA[:wMwO2v;+g>K`ϧo"I\DdS&jm8!Act/ Ax`A]4.gs ᵨq;1)ͧⶩ&R[.%nZ*	B8=ս3=>:s.A^A5ԟDBZpT#CǗV%ZtIETGJ_Trکz[BYI|,#PJHd1֪'T$ǥ)LÓDZ#5-O7h3Ufc[sWM＼HIOo5ߗ$7u.9J}"/2<aGm$haJF7&hC||5)~%6btBWPԞgrދ3TYSEcTL8TGH/ϳ{C{REdʡHml=q6'[𼻦hk)&a@Q])h4V	1m~}<(&ZwHgջ[VIuS"ɴqgé_nng/q ը<S-X+%&V3JfNQv~ժ;g
+;(gMkPVY20dlLk#0o8BMZ߬n5T&f3al'ol3ɱX,m
+$KYwh.C8}·[_4~/k~4{am"t&I {WQ\j5/6I,O&wGoř!*BR滷OOovG$}e^^?+咥04{&_)sHN{bܙ
+(2GR*YFa(&"6Ok?NH1%`0)BmS-5&+>D8"N*E^Kts)v})&Q]jW~,zJ|2`VdNpZG?[LF(Ykv_@!{q&~lѹuOL'X.4$uzt@sjXj*	 "I]M\YϮ*L+vV?TimwՃ$)U='E?I#)VlrHmZKtօ.Œt twZե{U)8k*vUbL:LA| q54C9x]aJG0)@.!?"3pǘrmTLBz2~GWǩ3=נL O"RXt,Hx9JS\c>&NW쵓廣_?Q`SFN+ܙWS%VKvĮ+˦JTGe]mM9վmt} 3f٭rg#
+dUBi:UW혇XS'&+"l#ٜWK&!K)feY'wE8>4`C1fP$Ni'q9?*==Y>".Wbx_+kb6j۞_%ʲ;lF{kB/o7,{ZoxRUG⸏j=4w哴Yx´x[AxF*}`I!I͵hn;	6wiQpc$Aox[ٓmtemHw[\>S_jzO!Yi##m]l}Nբvr&9K5!؇-Eqq.vM`B;O|32Ǚ?mL8/y:%@:ԗq#	b?铍p6(+Ϭ|>˟'En'ĴvUe7YaPR?ざugM|U=s0-TǺGR,Lq    IDATb+}yyC3we卮+,q<=G~&,/0"0 tp#q|FȇN	:TƧTK*Ĕ C7j>Ø-D'O0&㴿qy@vUM[R<WRM1DQd@18UF4GGɀ1ZQ?
+>~t͋ 7(?
+>)0ˎ7H1Qr4+$DZ۾6׳/Wff&XoLBf|j.vF䜍TPN5T"CcBG*ZpDvOERiPR-u5ܧL=s`6C/w1U3殆Q"m{v]es'thɖe06L0*RACQv.
+`0`e#aKMܓyi~vB1k|ߧlg#VckPxml%ټ!ͱٙݚM4oP̵ũt+q3ov4 ~w8{wZq>.DZO5.o&kۍ_ǴCƸuʳ-g?σ8eUIr?{_K)`NyM.Ri	(E1XnH4i'7Iz$c*M
+^ۧ{	<XN#a:QYbp	&[("&xi*[$'[`8,Nwѣ UH,P}5N9xbr)o&gK/0ަ2`S% ݃J_8Ҥ8T?'D6Ow(5 mm֙HPKӽꚵOOW$띉[jϻ('*;]~sH*~$}E#$=*GQ+;d#z*% '{q6i|52 ;j &M_LJ3/P	CG='19:ÔrbX*I6ݧc:eNo`DHEYJ)c`2jL{v`ԕܮ7ҙvROYj(-$*>6sNYB篵	v&oXĺe0n~t\\ZŉI*d(5fTSi0noزs.>ZO_JNKDb4@fϦ[SCӭEf"I쑹 O+!4lb0CrrC٢R%]qW+-/S5-py]gг4}DCq'Kg_['RE~du7nWZG_/k?zﵭiaJ==xӈ2InwЦ"%lk\r$?t%e	^]gsiр,OPr0!llR6eq0nb́e:B:XFs˱\ʔH蟥vx"F9i)*GjtoeȻDc
+0H+y<ŀ],XSjaR@P]Ir7Gy=BL3$=k±Iˣ|#]Kr0F
+#$BOw[K#ڳdn3W~Q+OR~PL8yS\y[Wr}\jy~*oB	E`윥6M։{l>Ar
+
+;HB72a&8))"EK4B'
+B^[))v|kiￌ?CYHQu]%"L1u+.+Pt,4EBe"4=³Gqjma<jWwK/n~ʲjASLW7j9Ԧu}~0޻=n_%m)35a[@Saod♸iNR.Tn/G{=G3ey:K(t\]aNZk=>fG?3늺lȓSj4>_͎>p$:4бN1?4UV1M7D )^bLMr<Uh͒2m:
+ |KC~:o"Qr'd0Q)(jzJF{E^+#;v)S֙K'{ZK#Rma:65QO(el(Wa)LP%3B$ZGC/ 8hMEQHŰv}h,YcYDwNO4"w	ۥyhiQ\~`wr(*LvA6%eʘFpk()z0uŐ3.r("eaשJ|PF!>XSeAa`J #;!_D#':GIjs_>=43̩Wi~ڳW6?ߖz+X4nU{E=TEv
+]QqyԓBS[w?7_,?U_8f:ν	TNZ3NFG%.[#RfT1e$Weu֍=1K_K	Q)cבw\O|r]@Xm!E =w|fM5OXmc?LIz]TdU%s
+>@9XqF>yh1$oH;]c﯆7L5(Yj?i%P =i~fcW]%
+ R7VR\e&Ţz5^~ъuz]bMVz}2H0FeXݸlCCF.M5iFt*l+N92$^tsuq,v@Ĳ*7ȬԪr~A6Rd͘8@̥f(M4k?}}u.p?dkSKjeũ_Ҧ4OޒfƓMM&K煤Vyۡ/3]az.cLI*et%NIvmgCYls%ZWRC)U'Z0GHM~na$K: \˶]dsXNr(R4"GgEM''!D4N3|
+JPT12`Wi+$A-B"ݢ+m	##|:#rtPtMs}ѯuF
+"%PmSa{{BŕQ%yܙ|
+]_%ˌ JdژH\/[gr]W"g~ּ%o"䷯_Ƿȸ|Ryzo<o$~]4i-E6Fp`\V`Jc)S/CLk#$w$pfp($k){8_{{bUAvs<jPª-39dHhM*oNq٬C*5eq*5OZ]^]\=\jۃO:սGA7l{rwoֽ?sqqL~x?K8eW:g|u6oˆ#~t/z2ۏ2gKJd|6X]ONV3b-jyB),	LKQ\:_>_n6=4iC̪+GlY/:4"c'<
+GmZˡmrG)#OlX̸&$RB<j+%njƙ}n>/^LQqWΣYvԿOiv3;{m]zwY+5Ġw,WovZ{ݲ\8E[6A%{k'Jޘ^8|_4O:)/&sNGJ*ۋfeMPí,vWKu"CcX.~M1IuC<b*אofH˧usxHQ^&Vw}GHv~3!9qwh|%M
+]Cz!< |ѓCըªlBQkj=uatۋ64-La0*V+J)
+]dJݽʷXRkQB=wxc=%(vގAsܻ0F< hzOrѽH0GEHp$-PNѳ$[^ѣ^P!1f;>dRt - Agw+H{('}נSyK3Zo#$q}qXHEќz4UGtoN{j٭$0nO9U}W&˯ϋු_QIqmRk7?Dܖ8a}SXMEEyn'_7(Ag&eToFYKX"F&KL7%:DӦF͔<J_:8*q6UcYu)bRӚSW2rEӠ81Ǧ&Д3ꜱK8%VMVSz}Ȭ͖M!gp?ߤsg~	guOwIzOx3|kY~c=5dbQwݿTj3z~;w-&bY{IzXIUuʜUovmIqcjm҈֧EXEJa4#kD=fy+DSb:TECY):.NQ>U+d#ꁪQcUwsL֙}=qs]Y- n"]S,c PMs 6;SHǩd xhgG؎gf7eqm2jɽ{lWTU> }p%IVl?WmlX:6sEY.Gg,{7N6(Oq<ŲT}lB9.d/}{>DxSPPF4^A)LLRdxאoR"i  U5zH$Dmw?t
+m,+Lvۥ2װ=cށ>q'/zl~f}PFDD/fmRՎuіkIrR,:r~ggvҗ-W~#/;]qQrZ/ONO[٠l[i=(Vbahb:BY[Jcn.;C1̨&ES	#UY_/?WGl[\]W4ri
+_Le-4+I,iSVd{䎨&zj:XG)91c(gr_XŗpOIMɍpow;<|G3e9(p8E.E*r{jyϽ߹!Ex*,4a2M2vbrVZٯ:hh5>]BR %{SV9/wE6&4;@*#MMũ{.eʌ`0hªѸ<;[ݏ;sx
+:Ȼ$]T4CX]J9'~v8(\p智ӷlaaw~~eZT܏rze?_pD$IkJUuW:#+wG髚޻5^g@ݪNEyљSyq1ּ*Gߑgu\Sgl2qIUNW]aJkQf(K.Ɇ@E*&Ygף<:4y2XwaMS(Ocr4,buѽR-p19B15ad@Hd{!%COB|/e)FOu^y[Qj_]Q[$iv:2wjRruq~G]:)K]䰟a;D{Iq	B\*BVZ ֜򋆲M_kʽR8UqU%
+%f_;VMN9"LLo<1Дv8ނIK	B krAv#1.Glf"P/w՜I(Bg<׻}igxR7r9>$HкOeApoYVݞ{(r"I,#C`9(u :{8J{.[[eF4B8pF1ADH	n[a炜=!8>C9|>/aL1ʘx<&hS;,v@aW)"iLC&afL}0ĵjHa!ݤj&O`5HVqC)iI^B){K)?)OHOпx@_)LNNOvSH1$4%zv?cͲ¤\i8N篳∭<<וzm_ֺYsBfy~RrQ!6q*7yB0q
+ +Ī3.~-bP't|.* IѧdFzT]L-zSv}xOϒS.~i-$F@mQ0!kr>6G(+%x|%w]TkYqʘ +gmyifo_Ѵ{/uX/}UzF(I+eW{r$D͛JU_1ƑHLL"ݙf|9<XZK׻
+D}_?;)϶Gޓ(_$r[?ZNIf0Ղ &+ܒ$aϡi_4$rbhr_ Yu]7j$@LvE,uSk|ݵBO/x(Uj5~ƱLir:fzf}"Mo]p;er9KFL>KTTj	AQ\'9:͙>vojd1C R쬿>p[3:-tI(Y̤G<$QH8̕H)kNl̥fIX> !fORԯsOswRI7HwviM&OjjC9CT_3O]Kj
+3?/zrÿ{~-Fd^1őB/Iu9[{2M-,!7b+h[fC~m^c<[mO0\jU~mqJ[v->Teau,j$ |Bhאg"¢q3eL3FHrB8s8sx+8x+D/`܈ɰx(X{'/M^4Er'0W` p(!)31R1\Bɘt(r}2?Wz_C{o.AZ;\q>wd	m|%FإnIW]Guԍ෢n\MCxI9Ƞ&e36'D[U^URFz{JIL7bl6+cS`5Kc+CV>jLlFb$)0BM    IDAT jKL$A~nb6XFMLQK\GFd+b$X
+נxU/^W^]|)y$8#~]Q.?dQn\,QH^^h3h6`MY04@T?:U.<&:$#_`P/{ڳyHI8)6!s.B:F#P$a3):zaI:SL.,5ň2f('!)"Oc
+Td29\DUCzt`/?AO){a `/~ѓ&y+KSL^@(c'nwg=iד:6EJ	10~U/~\z(˳幵-u>>؞c'j+Koia9tz?n|P8ZP~~`veS7RT'@s/;D&dLpǩ>Xst>%q@ETnGXȀ2ƝC(	ل&0`L:Tl]8j1֘^i;̳W5(+9JkPR\I\^Tr{Q~Q_omP3jQGkcn;vw?^n"I[-[<Ɨ:qSdcӵ	&ݢVТ3glᯨ5~h]QVc/-{b\QO̺Įi),_b!Nxf2^QMnNףa
+_#l,kc3Kp xk,Y~}u#eGqt'3j;M_lo<:eOM;Ch|>t2|Y$QiF66$F
+<,iatB<bjtaDVHI'mTلؾ"FҦZLviĪlLwiH"lӼld+r-ƁR47Tn);'I#C[{ DQrBcOQ=y	RgjcZ Gߪ@	Zx߳1V˽o_cZݏ5EM?zo
+?Oݵ
+*`(
+fj9`B*v~YLOvO	C?X:*4*HJ'`W!.a~jk	&9bކHϳ.K|&$ڧ'ꂡ2E3w)Kњ3;v|}秿v#xmYqR&+=,5%_U}fWqչ8C9OG97ޜ[.@]z!:x"* D4Xh<!=9d+ZML%Eu7C13mɴ&ZngXWl[9ݲ#IrV <:RƘ9_K72uz#[]BKMZ]1WTm@kuqlrw36H[c[V\MsW=~%TG'oi,ϯ_kJl[j`p.m֍j3NdbAwrԞ['Lٜ@kƃ\ugA*3$&2dTpOFH:ɀOm1+vΉvi\Ea4NEDv>)*rgH6#&'pH7\Ojaϱ_g.b4:z(nxp"v{<C1NS U!Ac4;KREsoh;׬Ќ|IPD]m+Χ]׺%;Jm㧉,:}3D=vԸ`酳^]8©R;Ja4:eV@ޡ2ʔ&*Į"}* Yg *{Dn!+/:0,%=S>ABN׃fVTWd	liWCX5SOy7)r}mQʲ·KWŤN0˅{Џ~0-[~jTvP&=UggS>?NZKrn:׍@T;l0ƘN$:2rmR|1;gU 8Bʠ!.;I[fSwݶlgfXI&?@̶M]df06*)yy]j2',|v91giO.K$R3)IfQCiK8KuęԪc=L'fg?ٗ
+L@7=R"${Z"IZW>wM-Se#%ݫry4#ƃyE5.$A̎UPia\V-bJ,td1cc@r^}DʔϑtQ, bNWJ&FvvꯢqEC>i?J|bwtǱ<`]`|;]6@,!9n2u
+(r_\{+A:#QUѼ{nuu'\v&~M/o Χ{4}xmE~"L_2S[]]0c5!-* H!ixuV{w!/иldnC?{tq1*<7a˲zbbc͡B*ב7ɆAY@ؠX_@kgh\v.Tw'rNNүVd<l%$/hucKZ\-_Nrv&o֦6ٸ<\	ٹQThjASpPN/滱V 7-XsV=g\Ψ!̍r87F.cvˑ/B̘T.s#M^BE*pJZoȹ/-½r57Y+]ANauKa#N53eu'D4䂃W^h}t5yΰ9qSR3?sᆬ8]+Mʯ\NrFԘ /L$ZlNozTxU 1=:7+C^o|[%]H#9@*ɐ46G5<$#q6bC{Rfҡ:Oo,tEK&}>Փ">0uYѸc'C:ī =OHZTiH=1N!~0!,PNo.LlP{70mKd>檵;㟪^H2#+2Nei܅/70^M!ũ{Ѿe!9C7ߣuk}_ae-c=ҹHstHu"9TIJP$HE;xJ&:C'Ho UCG;Q~ԿbhHM^O'z)HV.@OETXE4A];M<(+y~6&G?dW$cw+92.58I0LJƸu!n3IqB\-nR)!$K:MuX6m;E@"ӟ*RHcNm3*C2NUNG+s3OL4@Yxt$S؅I`tCnj
+}'f3;*mc@sbFkSjP)z_f'f;I~>8B3xj셹]LYʢ,WO(U_m)&Jusc퇁"gwG
+A{he~{sC'~C܀5,a2GYEER(@n)0){OsUFL'V,݆[k2SLg hQDEQ?	Q.V!A$Mx,ӯq%)=gwcXsck^:= ~o۩
+)*{ pV>v{G)_q=k|S&juD{q9.gr,L3>X{ovxY~vQKzZO 3zs}I=m}*5tN'Waٿ	Vw
+&GǸLc
+ۨ\N	+鿗D^&;Y^ZvS/X{ iaR)ܴt3'i,RexV&aoMhFkӍhSk|ؾiAV~3Kz<Tq?(Ej\bRgDOIlnֹhayhPJ;s
+AiW3Vll-3V\kyYaMKlz^V@WTjU9.'0fC Kұ&jʙlr*>PNM*@Eiĕ%YAp35u+lOj
+Č6&V9k!#ZA:֑DD5.T;KW/y	g~1Es 3/|y993Ώx/h?U-Ϯ{`˲Ϲ|9̪yRRI*	i&	B)hiѭ 2BcK	$JS*k̗o~;yn%ML?nܳƽq笳ӺLSA=M;WZtasotk	tm 8`p$C,2eN< @2H[NI%ex^ENZVy: @1xa鐬`iUF!$.I.a6i
+gt្cE[Hďsvi
+ƿ6/~X*&fҡrj &	f!Y-ht.u3?T{ª;ZsZ~LB<Œ9RR.7YVܑ7rg<T,b!{{LB>8ahayl48va.ym	$EeS&k"*Ğr9m&ܣf!fM$f¦b4쳋 2+_l»b4q"cz5eNQfTUFU4d2;ҿN+Vwdׇ/I$)N9g݌n͸<)DjʭR7lyJzKL$esV8-<7gʩ;ܭIiFRBKe^(DRaو"=D1U[v[XhLԦ/ŌISX%J
+HƏ}0gB^4EP%#.X˥&U1yNnWe%}<|?kyk^I<ֲ;+5om?hg&|iv&z:z/Z104VHl}=jm_d1k3dCRi
+4*	f(3&u1K=%m~s,v
+e1F@>Ee>V#r꧐*'>2Y`z:!
+GI/0y_=cRӸbs
+5t
+WgWjd.h~+i1@VJΑz/ScC=7k`Iƭ}:'Bk[1^kɝ{晼ZL7)jx=e]E՚Eў*'cj}`yۥu]J]:T9eY1Vi,QX4)&*E>^L'׉ý]_	];FNOE,ΉyS:)ǨL|T[q{.nwd˰1m"CJjmjҴ]ٲ<]!|2+nkyM;G0|R0Egcwp?xrjˁ-!R!T;S3gZ8dzq QipC5뭶-uYD+VvC΅zJ9g*u% ZuhXҡTV]6*PztDD] #>/uPLWq	2;9ؒ$sƱ3řhW?QH"m'D6zA-*㊻vО'qEQxk~?7	6)c0|1ѼH=y!"2·٠|=5ܫ$Du)Z!$~4BH=&EJ8ɘ,"cpi2٤>G?Og!N@ dN&+ P%n{H@$["AԎ͒/nH>0>Cpr#$UJ|ob=C)=j} {	>P+w#\UИ8@:ƞ!9CDO_$$`bt<E)g&k4(g_TXfqvnIXY/	L*Ǹ3;wN>`Z'۹˥#غt	R]M:$nR_Rdt<B:[SLdpnQqfh`vc2QH><Lt#닣&;p(iy*3Y#A,ޣ*)
+fti[qzD;6ZRa_h;)բc>GPE6t;~F&\yW){.ޤ8ꌫ3ª2,UkZM&뉚1#¹\^QI TMb=b+C+12D\Y$qǆpkbб)Us2S)ʑZ-9_=J.|UQ$_lD+ת#NfvwNw嵉.!r=1&/Kq?d@w\UZyüp5fJ;xz_>w/vz
+j5'WNV'߃@vVp}-'=:Q^Va"0XCLkG{	CGm=N9B1H& - oUڷvjl~ 3[bt_q=4o?D⋘'i|Ɲۨ| m{ag|è0{W;<"}ɣ_Tq>70;G/񖩝vҢy-<CL7f9J8ffӽe7g8ky-ӽҙwHd^~۩	C4_N4oI{(~4v2%Ν[=dp'o æ{t/c7`85,*g/zocd/etHb||i%W] ;5{"\9 pWdwVs7=Sun']AzH8">"К"ëQdk\:3Br3IJ9Dgy0f~|rR5a`Y2>lW֞*FRyt
+*hHc*8x	Dz4QBԥ]RxUkc5nC4UKPX3iK\WGLv;    IDAT]tEÜZ/utv{ؼDS.Nx<ߨ΅z-#ȩؔKj%`O]"-?R5iڢ^Lj≾#ZB~B(/׉_׵m! _x7aee[p&XVߥM{=J{-{:`=ˢdJ<K"jm$?>[]	ebq"DXW竒h%Oi ۥ	XҚ!͒!.+5mъh"@vdc4^*#Z,a)#@bdd[6O%bHPr1I5le8&lSՈ10Pc >;$߸`}w~5f)_CԮ!>KM;GEp]wxpf q
+rWrRy0F5+J!ZSzŖ,yH:6B4<
+ʂ4ȨɦY4jNUKA x= 8Dsxj3Orwb0Hоr&30;H@Yn}ߧٗs
+@Ep0|34n`nioP]62iL~41,\l@ks/<y0!)0E^ͭe'5)wL9R/l\W^u>᭘bUAWڕ'va-ܗA!Jd:.j<VZ Hdv?eUΛLE&Y^0NnLSx5ѭI_S9)e?Q&
+d\jyeƾXCLNm:ђKRXu93%lU1	rıq7Fz\y"p_xݰyɾnE|+~?#_oy[{O4Uk$=B$'_e`R2BUHal\%nLc	Exp'VCM,YD<vPyiHF CY%h01}lB]uOs,q;WAǨ	& !1*BPNGuG&
+ ]OEzMNewy=7Lz	{
+Flc쳸&}!QRR{jӧQ:~ &*Am!}MF)"FPeX5%F{w#wkTDg׽U}w-:RtPbZ3Ziu[eu(+n[,P8nRo>oZW܀xڬJ	N"ǱbGKc.`5q:$ߡ}UB1dyT4q/\.Q	X3veTHqᐝ!>_Qg[^DlbG>0è&@P%X5ꇱ<vUQDtRҤqIcQm׾hqT[6O^)77v3'Z+ݳ[F)Y↮)'j8[gSk'_ysNM6MagLM,c7Ō CȜˆ<0s(*!1slW##X%vp[	3ܞ\R:[\3f	JUHK&Uh`v"u2Z=s3i*[&nLFYzKzDu}}{#//=y;q뭷~>}}]v	QG8.Yߥt2ؘ?ftHU-	y/MR8n5)KNo	u(r,#&Y\$ψ6y
+qjM:&`XLӍ'HdST2~ǟp-PDM2:GpOPۨç4&%̀¤JBW8]	-T9Dbh0VF½@~2 ?G
+Հqz5hFw cTc爾Lzn??G>4U!ʐjJb)c*r(s9c?w?~GB55rh_ȕ[RBdyyM`j>Z_2Eaıl&1yaqd1UF9?diHPDXMtN9?I|`amJ6&FG $Y%b UC_(fɷF!):-o@"z{f4u<LeWoj֣܊;q}GVjQq̒*
+CcuTr,zƂo^gvSK--( 1#EzSmjMyk @$zk4yݑ{j&59VnmW;ե츢)j3`HPEqԸ+JW]9+XW+"-ک>wؚu$M9NT制/Xxn_w<|eO<q^=\\\<qC=O8;3m"io#^5aIPQϊp;*&îixta9ʜ !њ5FZl<49|}EF"e⢀|Z!Z9E	ZPd#FL*י2]qey5<,,#-2Ań ڧu#eDQL;(&hE9%|Y@O3}I>I> К`x&eqK[WMtI;pQMnL	`vI%;
+Wcfjj[qjMy!ϰ[TSoҼ|bacxL'PS&0:e{۝2_G"Ջ?uޑI
+5I͓sZ?/ssqIA^^7ߛA1CkSfTez4q}(p[X>و{h_KeBx~k?w`i2K1tI0yrZ#}.Doa APfI^47~IŚ'zwz}|2F6'qz8FIͳ42{iƀRh$}Nýoija~{)Z3j)mGX\BH<	s^5ct19ZsKth*PMREP%ƵF&;2H7̖:SQTcASJ&M_t/ϙ8bKˠ)c]=ߕ3R+_#?dT-aԮE."U6ʴc#5u|~itRFF(Yٮv|7:t jKNu9WKE_UUo5~"Rh>(,9ω7Ӷm6rٲ8$wjvfI&TiWr?Z:5\{p|ɽFXF8Mxd	YY/E)ɄhӦ5LS5!Mƪ5X/a1]F/ ̀2Ʈ<+jtn%ݦW.^K1DHG崿lt7qzx̾0V0}1$ƞC(;ԯVxR-㔻/"}[ȞMUսjHP:0PS̹dqt{S7	?H-Dgbٻ%c&#h>|覽KsR{όҷ߷TM[K)nq(Ua4<&E.D$E$ߵT〪\}n}W4n<GN; f1)H6'䓯ã`w1<ڷB$t$ z=
+GAJ?1@eyixjgZpCeF!u0>դJq{#-UXȋC[5iB7J?e)CaC]-멼Z@aq~+ò)@|kݞiz27T='gĆ[UDk~IjTVn5jÉYKR_RjDjm_cbnEVl"(ԲysN$\.HW/}[%녈eОh挛/R06ԓ
+o=yb#5DOb$jIe-c:zЗqB)f{B?T_co_OtzjOV<avx,f2 2<ȗn*,(I")A$f,F	.n~fs~hAM8Ydl
+y,~B_pZdCi &#$N v?KEy:w1~|c_fgU0HeeF_FX,à1:#y{gyXpogJ50 krd)s$>?K~{]`xH֩n"m&h&9O6!KnPom1ֵJN8$$_7/B Qͳ
+1o,U-/EYyΙ&JV3Ѵ*K;H")S[bXu]0\CT1]IKaӺI<$@4A唻8p"ae(61Za4((w;/RPcEz	llAZ3 ݣ4It֮YU8hUtfO:Öq6."Kݳ6M[|sgPhkRz֖#{FZqĺ ShZ#ۊ"SYԥiY(ӶD5-HFzYE!XD[QtjCQkb1HM:\q |йY2v(%̩(V5V5\2SG5UO-P<U+=y]ĨJ3K⋻n0|\ef_iZh;'?b ^lX"goN)Nߌl4
+AW3IYy҈SFs:,2[kX8-A41mFD{HhJl,DT%UAQ[ )S{h#i<y:cUf0g:V|s@_td2DŬ  g'iFVƽ?;1jT!X= .GL> Pd(7H^&H8"Xû0p쏂$|.Kx$Mtg}]tI2!IȈC^x/r'ji(HG7k|#*t]!gl&?jߪlֽxٽ,s!^NK"KyHMpG!Aڨbå~=fQMN"$ҧvtD0.*&[o#"*½90H:g_)wese}],y.8#6& ˧~G鐠iw]N-Oqsyu?Kk;:r0)NÁ1\ܘ\J{]hz
+SÒ(]uN'BȵJb5DY-CX%I+:pC#סBdzВsr6[
+P"vDo4qzkcZ94BhkO;+2LKS2pd6ct"=g9_|KDqqoQkkkgΜy^rNt(z]^?<+_w<tl'߳:nl|*s>~9Z /IYN,M4"hR!CH)4pn1ձ}K5Lt̵v1l,<oQD3Ld!hEtI6~$\{
+0-e8vda.f@MlBXoli%]tLo!}HQô^5/1%b0h|J:ex72T(PŻzv՘C^5	c2~p5ײ$N'3{3kOY.AZfwVJ7kB7WƿH2ʮ=H:)<L'Iߔd#H6ՙj}-ѐ%;&ѐuH*h]KbwIVH :G5NcSM^@L9w=:7<wl9< 3\#;?/"@2g_VE_)oCdDrңu3GZ'qc`p	o;x~T{8OF񻀍U7WaqoKo82iyISkj]^̍1,zwM5UUI7ׅ%q 5-UؔK$hYy!HuܓR+Nr3	,<P4Ռq&zm#FВDb&enQuZjخhN`<P"UcNcidyƌ霴%ztr;՚FX˙O*#ѣwE_0hϾo?=33\>>뮻766x	0Qx']$#//^'phOo~ea)˅$^b,yF{%-enژeVH/6E.=̍ʜ,9dzUwIG)UA9/'EBm2!b\<A._h\:N!^?c1|1ZnӹlOːѹ|kjhT#,H=E,Z6-;P*M䗈nOJ0I] dk_]@FX4(-Q+eqz#mCfA -hbK6y$J͕բҞVڍ+Tn`neWY0гg>osVߞ2g 0}BdK1%ڠ}-.nPGH.'q輁Q1E:w#'0{Xd"EmDEW҇
+jp0ZqSDFo'O`_VTC0[ EH6(&H]!m!p[	p7)sַ?k;E!'(y{`?~k`R;mdʯmbX-K5*.:FJWԳuq&5:hQٙ{5+¶՜iP\jC4EIѾh%USʵrSSY" FMBC,zˎ`	;Ց'jy_x4Z7BG*ua
+K]agΧpҪج.!ri
+k2U[x
+fk.}QPt:ci}z9ݏ}c=w߫_j?`W7~7>|ߨo]/E4Ĺ'|EN}a&||Y"%^@3+RVoe2M)y˅Z1B), U,Z"%aؤ^NY ,h@?N$Zb41I>Ek8    IDAT&U;C1EWhҤ}h^.)#5 w2&XP%t!L-7E5 ߈pP	p>^AꯀjLkpK죔ObZIOMt?'~K*Xߗ1L>D<T16'[L8At0-+	#PeD{?-DVV|J5alٷfIЫJ0D%V!d]&O{SE8:Z?ia2#?*"MTE3s21]BH,$&_ `5ɇX9 LgV||'8HDI{7:)Q!f$Br*ytN}gL?Cu˸*E>V..UNcԏu?< @3&3m{y\MFf];??:wl^YҾFiyԕ#Ѓoa	=L=ј7ϦrXt%Dx()Б-Nq	mSSc=*tؓj)m!'jZu[PU0B03]f:($fSEÓƨ
+]TTbinWqϨMTecVh[XFmTMB%J8KaeBخf$}Ӫ/x|뉻Ͻ?w#\ї	(b6jRݙ+5Z5O+TqweT%Y`o#iaFirsDUueJ>4n	fmQ8^*^."ξv2nfoZ,>K6tI1)ńMk*h D2#$)#6p+[Np2y֝Lc>BpbLpo
+Q09muֽjw*$	KXsSn@)fr2`SxG('h|>e#}.&EDm	oӸ]1L/Od9M1UA4ǌ&?jYV&P37rawn&w6t\
+mosq]7[ZXlq/?ydY{FFfVe^$T $LlB@ Lfz4lY`izh1լBIHJJ=k-"c;dc`gGawsz͟վbV7.Uн3WCmdpuqd}|rHt>qI밻1MTWa5/`ϣ]ӠHB8sgEktrhYlWÞwTgnk	HCͷP\BOfj;C4o@e$d2MHu~/{)*dvc5XHJjۢU8SʸȚu!u^pqb5({fWӔ¨r$yk-7eM3])l[!%R&Ă+\ 6^|.[rAcic=#@ʫW*ղ]5vjf{vnf]s̆٦8%CQs00Ī:`aMGUM
+1{hX
+J_V:kX.|{t>)<h]p<F(yJXc2k{Qx@Yb;M1^t	ʔ,CPG}jmIt ܈|BSǉ_v@t	Hvrl` N>kK1cT1@2 Z$c{tB{pP)kT}0ǘ%X!ET][P#|-)*^shFX;	bJ_G~jBt'(w19i$!T9BE~CO@5d	ET="##X#>@m(]F^HΘo}(%?ͫnoĸ_-BoSQ)AATGNӖH_K{BӾi֏=YW5;r'alcI1u/ ltԮ׬MEt-9etαjN|+z(w8+XuX]uk/s4 ^)ϣ4	=uh_CAvgbRMogb*{OЊd@U9B@YPhYYFGo-;WYϹmiug]*Ԫ%$j8}52֦4łwJp(TjơhEkf∢YMO&ػRTGչH,ZFs3{kff8TjΞileX{̷8-WșN#(cc}.WznPNjhZ00ݳǃe1)[8pv38'cVF9cmLGڈ
+q;ָWrP +w1Aߣ,2wEх٤72\>CIh;v_Td6Lj b6DFx!_FkUP&#>.k?`aGgi`uP[Fe$ۨ
+o>	tE>Be#my/0;K|] =N
+$X!%A8
+wmO.fRI^@88sMFgqtFv_ ~wɧ	n&9CO%~2"N	vjE!/'bEd
+:'"09GJK#Ia9`tqIZ&_>Pm3PʤfoNn,KTm{W
+Ӱk2-jzw:֕~$}ѵ#?YY9u1]
+6{Lwq,@*fr*ƛ~#vjх`iMEo]Q]P-&5<tiObr//Bg8G}-yy5H+JC}CPfP%ɬf4n@zdǿ{-,I-yQ_=dD<bqd9wؖP&ӡ
+(B&_څz^ȥٲBO&-xmjy4i cNFרbjYu[8snG9r<F~Vt_/;QzI6
+o8Z57V^eH悸H!G_=<U+g[󶴱y/)kRu/{=?(]&(i?hҼqtsxp,~VO7VҢ*u!'UV灪$[e*~HU1B+[]!t`ZKGc,I/$J΢EC[C^nJ0.A5Q9%peL6M;v|pdx=_@Ԏ#\[jFkiF55P:giT!g)!6E^MB6":F"=i,]Budgi}.>N)}!yORw4v+&V M1%o3x*Z6eQd=K8~6W"A<B7tG:v:Sbڗq<r5׏R˾u!)jzCӻc.}a7Mx¦b*~"ϐm#1`4v*HKҋ/`yyefVƜP(au]nBZKV,O]O0Ïf%a"iD811,`qrf;Hxuc;ʌZ3Jdkh#B7.64ala|TGdhhŞUFl7Q䃪11i+{A#{!&.Hb2_XkJAn
+Ϧk)Yu̠ edaTaVm#բ%a͙i#v}6v˹06+#fÉ+\aOT'd$OpzޠGzͅf'mWr)sI!Q)İZ̴2rhs-E<P_y?? 5Ɇ?EnV	Tk!YBwdD6/hp4zT9Rnـ=zx1w3gcTu(xJH."l7'tNS1lS4V2MNMz3|S'k}hTS~%"ͻ7)C73>דH5~+F1<"N![ #8]:;+DD7Sg9QW2&?Hۘ=JO.]E&hdTc%0|obC$;1UN<Bҧs~W'Q뒎|WEoG?uط.	Q9|~;{mi/262ruO~!pg\öIW=R+&cAx}p#>Z1wF3BZtoe1kH&n1,QM߁|9T
+-#l&_ <IxOQFq	5V3Gps \pq]X=j5ƻǔX&U'S/PjYTJhq sHNR;JާʨYLkEVwfc|~`t?]?u~Av_K׏{qJ,s9'̥K{˕8KtR4K^*mkY(rٕkJnʯTqMt$i'3K=X Ta,_;Uڵ+remubs:BmitaLȚlNC-gW.睮),eeo8r?fNN`/x2-xZ2GfvwdR8BIM4z/w*;[Jxgo%^.I0B`ۙeHswCp^ޝozs5A`Y~b<z`4YeE/cߞ}T]/qmWS:i!-|͑VG^Dw(&l&X.ZMAC6baM1cnttqAF[(Uʄtߡs~O@UX>H^Axs˨?D:̞2eSbJLDHa*㘂to-[u}3{?KlCdN&?G5CT>>
+{݈*[;N`7JF pPg:Nm:9')T%J7#h_S-m9?)^Z/*.m޽[EyWo󄢼%ɦxAHN~@=Ԣ{uT)t@LT"\LIxyQMni(vvY8G;7arcX #t.˽ޫkrEd)5Gv9:"=%80{Bௐ]Ʃ!,G0 h(TlU?S^He3w<[U8ӣ{FǺT~;޺ֽ7.Ts?;Gn_di3)uӓQ7Fʄc=/T+Ci${j@$5In;ײr VQ\|W)[ux5hJAפ	ݔS1C+kHs$5Ww4Ht/Ӣk-rW˙2NR%Ro~%&:D)Ba-Zל.JR_NWE[#:g6{=" Ϙ»GWy,%y~։]ZHRio-F+|HrʹKy&/B@1wD-ŎG	(a"JBHZ]H]*K;ϓq$[L7m61bD:z. *(5!TԎ.ɮ?16y?1:"1<8TX55M])GKpX'
+5e/h>jH6e<qT)ňpoc4eFUJ,Z4nf4}n'S+GFT]u2Gf6@Ĉ{qRD!ڊcQx c\ۺ`Y;ǳY!BN$Tz9I(2.>*y"UF>AX/]j+HIKXWעꄧא5fO!]+T)3tN}EH=>	%_^R>dH'y" a?o0zmoSN݈v GHc$}s*Z݅3h^90*~ږIU{Mq녞&X?q[pʩ?:{A%]+jyW*U7$SG<}`*c]p/WtmٵT{'SFjNcg^K)S]Ck\nڻRjJ[p/ʘ\)utj16j>UjmOAk+5Ҹqv(׮#X-xWL8N>oMc+n^Q	h@<~sGje8)&j$ݢ!버<%Mպ+$ペV>`E[IQx1D]zwg)%Rݶz>C4G:HYSʘl6TS#m1g)fC/+&XB6!b;2Sz|	c,Uo~UA!&1%utnCX1%eǊ(EQ1
+jJvjHr Yc e"}c$|j*&
+F\Ae}V߁呏	^G>!rUlLbwN	I<9+;;=x:qZVn0lUהY෵qkKwkPBG7@xB+0j-F!$ٌ%& lDGWI[EL@XsN"#x	7c/`<vh>h޿d:?}@/Tc߀Q8@Mh}5HjiR%ėo~=.8u&eR\|Fb'c9d1ٽs'k)*ձ0V+5kѠw{GޗޡʄL]9s(QkAxBɍ͎'4e{괤< WR<6{UɾD͏=jrQkP6"V&U`)g6\h˓:v.LL"fţƁWomVJQq+ʍ)ϕV~ʁD-D;X,13zEW|o+|vM&vI>WsO_golY$cBdEy>Vo'0ڞMo[~HcFCsWŋH'Z3KK꼸YezeF+.ntHFH f{MݓT	c@8`xiQᝥ2&UbT1?aX.>e$:Qė7܉J)ഐ>VDDMI^uʱkXƫ<DjH7Ox=:gi5S.v6%.sI9r;@H!ɇ4a_ U    IDAT2C#C1o[y.OkuǱJy И$:?߱Uۂ([Ue2e!D!EfA34׷ϴ?UV7E}Ӷb(Vl{"	0hcu1r&٥xsx`&w!bWᮒ>)ɷ[7]?Lx,uӇkj3d_cUB|yeBPSd=0CyOEt7
+?CL9FcEL_'_[ !CH<0G$* a!}Ud\S:dh&{F(Jj5.<wN}~}LE,-۲0^dUgS@2sЕGh*G''cUtl9U23i
+:k\+"*=UEז3yAq Z{M@j@uk2j=g0zsz2_b?މZhڛq^Gbaq:җ#Ɵjձ%ʭtH1=6,Nh:S2ե_;[JO}2僯wTYՉ߆*psZw&rZg?oaSMoqg.+O	jQ
+#w:d1UqI:#MAW+S!
+]'LGO)3S^hu^2zMhIF8K80zb0B OpTʄx'ds}^(;0}
+M|jBko\!cpTė|r12=K3GA_#+oۨ'0%/1yrHkO4omcy1:G1'M:٘<F)g:^/4&>|wZ/<Bc{LL
++AaF6?9x?">I;C~JFWU,vGo7ϭ!5aPxCIwpjA9[maɷ6i$	Qq9V 8Cxx'8=_fck{InQ^r-^+) ӿ~ +_1p^rphg,<oR^]~'Fs]M!=Kv
+g2D>sUNflia,7Hy<I폖>?藤ȌJO{m9EN.Kd=#/"د,̨ޞ68oD$Gj=sZgD
+Qdzy*2R1\ަE9PP6;c-*VѲw;uIھPji\_\$'k_aF$jMcr#z-Q"nFt+cFu56ƬBd
+
+兔	^"Jw?'Ds~pJ8FO'̦"cӻbl4yh?QFSkyU^C@u}<_%cH9#[Ar@1I9tl
+yeWh/RP9Fӽ_h"M9;wuóH2{<ʘ>K'X~'(F8UsՔ#Si+];ۦs9LE5az!x=#=Ooy?dp?*f(ѵL`L_ ?@%>S'=@H7\kx!vfBg,kU?=wߧ7Jfs'L﻾b>/cNgoK;YyrX緟	$}gXqvݿ?.՝1ǥeO8!*eAZX1e|olbLI@Huypz'ExvjJtd;XÄ<~(*71UǨ3>7}yY+φvś3:Cq=EμD#ɞF]Jx3Vj(w0vMQ%:itAǈ|W6gp#Dk,˦,H,d)pԮJ񬍢1BIy<ϥ՚j;>Bêǻ΁/3|]JESU5.,aJP5ko<W-QDF]L{@nrsDu9Btɝ_bec,=gFhidn2ٲ*Kd%>x[MkRj_k/ֳL-"Qƫ9ohlhk[I\iZBu^X}^Wp\í5Dqyr{_9ԙPV( |50hp]0zBχul&;8OPv)h1D";(-Ziﯾh1x4]:qLc{5ҡq-F+&=B9&bUF>mbqN6tAf=9Ey£сi3}iȶFzasi\n`wO3)brMxa}5*ҡ
+6:eLIzM,2	ڴN(nq\ő)KKO'|V˖;ֻb+u)&Z1FG֬iXڈ;Qvj(aXsh`nJ:̾N}S,H[ǃ0rMO"ar{:'.";`t
+{i܂?)=pz)%DE62Oa5}"Acw3u;jB7Qc*s/cmq饖/U":yٔjL_aoT }PQ\¿a1 :cG72<zF5#}j5#;/RI^ LrX RM'
+)dձ:ׂ!p=fs?kǴnNTg+EqǔߓW7Mm't )_c˾Awnf_eĳ.UsPv}i$bq-ԤXtegPQdg5];ιl(S])]|\l,;S}~Z޶_9L	<9`RF2NGk|϶Fyq춽mB^IsZ-Trroi윳[씁2~h_w7~V-JOS0Uy_){V<^ݿWƣ]S!RU9_ ,zZx%Jm3},q<tiLMUauV6/.` APx>CYMԢU_g|gɦ>ꐯ@X.,3נaK${5!F`>"6!3s"y(:'Gf/"m|4<t=E!]F1ś(tq;Lf=MxՄ9Te<#,E>UBE6^GPGkPI>f;oԉomƟԃ.Vz.>O1|-ǩ/ݲH 7~rΪ1آk_?N%0Yy~yzaHZVfd>M1l_xA>Et)FԎP?FGAHfOR1~(]z;9:i@ؤSEXCVL=)n%~?DDM졭U՘j=Pc*2|7oAP_	w/kI ^f՘<N!<!Sa7ièj]?	i=dLIۦt*sOP9HUa;.!%+t>/65Ent$F~&륈;dNZXpv3u3%t$jp`hTiL乎ffWٕDa75UTy`Jg7Kuw=o<煮k`J#kZ+?nW5g'ڄU}3A5'ArBi:[cuQ`tۥ:yg
+X|?͌b^bDaokVu]UQU}דb4`zS! x\CY6۝OpXvx5}"O~6oE<TgJN<~Wwmъtҡ1#j1ۣ9jm)Sk霢Qx-nКéc4H,dIv	T)U4Eؔc#$Ԏh	!qd{X5	&Fgsd!q?INv?.֘y3FSp
+Σ+l2F8!~xˣⷘn7AڧHp|쭇?l[/j6~kgҟg/R(κi{n82IU R-:xP5l!1R5zitNU+Ukr?sl86NeqxVR↌EX3Eҍl2!Jll6d3Pflƭ$i)Zw`5	.vpO0N>HrtjjߢPnଢƨqvgeU8/,/)쬼,FWWKd=3@yg=#yg%c[w!{IYD["!8tɷtIbzaSp"3t'#!-t?(y]<YxF>//7ߍߚ?lYiFP9̿<~'c@`B17ŉʅpz+˃ڎ6Ҁ-ne20ZX9{["LuI/7*Mu{}X&^EY>Wh?imWUcsrvOsNBR" b
+bOz+"rmODQ 
+2!뜓S}v]zY}8+^lhkF_[|"SR
+U)OK
+eąb{FtØl'ѰpQDJE5D¨lm,'սbGX2qQ?||^//^]U_W߿4M˲JUW]wg!UuO	I@$ω©ngG(E^v˄r4v<~l|pxQ$f4맦\Z/j7xnVq\4!k{i)ѐ:Kǯ Kq;hD>c;	:fHC-{1]ڧBqU4H!EF2H	ϰQ2	)L_n?>.:Eu^Yw1\Ĩ{h6 F>"nKmUN(k_#\F1#h*^HFE2zfI/=A {NbVc	-zk<ͰfbԂ,s;LVßnN~n0ؿWuߙ-l~xvOF|d-열=YJ .HU-w:W8R|FrY>_v/v:oUp9>G`,?_F!{Ja1˔W[f
+p-1n)FD1Jl*ax?Y0ZV>s궠U&۷)hINup=9I">j5&yc;Ip$*ǘI_"x頕#zt<@?ju0j KUxM3Gpfcqt]"Y9
+潖C8`"
+y1g
+U	KUuͻOn,8WVm=x0yY5VU&q8QrtmiMaΚ[8KU2*NW5ʇ"ȂZKX5YɕbUm?*{#֓SF
+[{25\IIvb^QDE:{gW++@n8lMCMN+J^nto2MH<s6kHHډ;ynE?߯8\ԧ>uy,y{/s=g7.--]wu/yK}f)MIcj;}?AQT좉J_lwm틒%eSXӭ7Z.55{sǴh6|}}נzcF)F:,i[olN=Bo8s*iSd%}0$1L쥻0'a{:Y Q9q@}7$B`#=Ff2a(?N KGCgzG(5m	$bMw'BbHz	;(#$@}{QAy:IZ-IK^,Įb"J8Mks[鵄%$uW/O~~;/K]P1c^ӫjjZ(PiF%i"1l0,_(wzl}˒yBUj{no^l֘C<>xۤB%B&EB3:KYF+86a3:p bziSB(_JI0
+%tl"ƽd[>I="eǐBHW<=Kr;܇6*=EK޾l
+ogmYy{aѻ1<3h%"Tf
+6N
+y)		
+EF>ABƔKjˠwA1\.24< ~y\oTS߷ 	glmFZ݈6_ӃKAhBKГ#-@%*ҭ|),
+2A"Y]bRtqPJ2s罸hNFE)SV竉C%-oh*W-URYxoE-̛iaXMddk+|B92_\jQޘq+Pz+Y(#UMe0+Xwq-|ӟkqr-7|_Ct,$NR$n0Y>?V$>糅I]?X]R?(
+o';ͮwzпpb,=xA_z{}R[F=ښJu"M?JaHE&A"Kq]Ʃ0R&ꡙq+miJ]uLYAR%lw<ppp	V|TNХl`puM4)2*B4,M0vU9H<lDFaV0*LGIoPW(%XEsgJ1]DkHQ4pm61<h46A0"5,)4Pn$7Ebc3ה;_7#WM饹e-
++*lS`a!*4_փ"tn%+,8p\FoƑjt蟎}mnB>8__β}['la8=	EGvوYE
+!.z̓$T.a4*cthKrЪHt	YL3sdBû^P{:Ztͫ    IDATؾYTB4%Yr̽ύ!n햰>IDr`_ct7iuTPE(bYe4#8JXKp{ƟO0<!á4CܥF2")
+,`ŶU,kql3YOR?wT%JƣPGo,[_E.ɍL96e~>ZX)t0Yl	MBLhP~NFTz/7jZj~d"GyՕrhuflhg=1󁤘I
+%0H1A*4b¼-seu]~d?֔(?ϕq>(PҒ."o{_җXuM7}!;Am7sW%$N.(И|P^cg4]E׹5];rR)YBUtjH1G&qM,+*
+#mMj$^Fm~@ߠO9ӥ:xIB@3PYLx*;0<&.Mi˥<%.6)q'&졷(HYI.Vm[7z"#9*0
+MtӤrO6`Q	kx;(|t1=i0:Q&\(06HI;$=<eS6nå4Nu7q@vKAuJ"~j<{1m7'FH\lP^\fEuܺc-:wrPL[YEYYB_5ܼt?5_	CnBQW?;Q~)Ω(`zB`[v ŨGk4F1KOu23yD[(0*LQ*n42ma: `pGǶ	btdm 	 nVAFȉۭl\z!*Fb̢R3#徭#*$,`"#K %]A8#Lq&'}$%ME@R!5MI`t{zx~6@lPn`GJ2)X>:f"?J1*~SgkއMmO^j0U̔ߧ#Ѻ.ԓ.4WEDDlQ
+;Q)t&FJ
+ӢV@׆
+2]0䆫um3<U
+9&seL'i"7EflmяkrkҺNIKƭLq2)&||SS[4FYJUg҅չ2-{C:'I̾c{S(cfξ`CޥRl&EN6un@(
+q,zc0h:! {԰(U65)
+yJ2blh
+GٹO[k{:6L)&EF,EA4Ī$q
+YB4BH4G-JhEj{j1E:'}>t.!5*y1 %;U&n}'hm|+#X6WD+]Q'd1k`*G_Fe!*ۉʉ{􏓅ϐmFk fP9Rgl$0#h}8/_`s]Sz~2Vz
+fwgX=ϐk|R!zd\{÷F*B@S5[{C=oFy{D4;$e_OJ~/K҂n`*Em,#uz a96_$HC'-c7_Nc(RHz#x!10{tLxibLaγQӄO dXc_DCQ&"$76VGaLbF)AE|tr1E%:nÜb.y$I^^ŞDT.F+!'(b3yBignE3IBu"A=R"K*GCM\M[kz!EX3p͇=]{״5S;M.˕Kn"|QGٸBd./w1e<T*'caE*RR/H?T)BdcrX5R6vg䪢ߒ[i1ޏte2d^VS(ۥUɲ~RDɼ֟|>DȔaIk"2d+.5J!z?.SUG[Q>ߋ_q0EjZK_^z.X^^>9s7.,,`/zы:tc-ODtϲmHya$>zgNMM|{a3B9Y?hε4Aw
+exe'v.1j{*I\:pϕRvQ,je1{G->11{\*>huL;F3bט$p$K#O/diF$>d1V)mSrF\FBe/ݤ$SbOмn&ę(+Q)F<yփnzڅO2v9f>Jd!3qcJy7Ys+p/%|Gӣ.Fl=?K5J&f=_9dM[Fѵ \bGß[=OV5c)'ϕ#tA&b\B'f"؈~=uOtoZiݥ4;ZF$~^1=ahH|mw[lxX5	QO̱0h.* h%icx{i	s^	cLG}sODb9w`"Yi§)}A* ]%k'~0*apZ .!Z"Arfp!2z	݄GItQGX۪dl@Ep30Qv1VGa#EY&JL:kPj1,+=3n0~i<S?M?ye<eDnsmݫ\!BO?;[mG?%SRQہJ=aڢd<T٨p҅a}seTHK@Fϑi*(&NU	!Qs1$TP!W|ټW)f}uO]"Sxq̺GeEu+9h+K]~6bn}7q$Yպm	TJt=AwƔϫR[_Sz|SJկ߆7{655%w5(58~oW)eMNge=GLaE/1cqar@~9/sp,A?K&Ħo~PTigI[ӷ,?KVOLYzw)CtB(EاQJ!$i<8nC}t&cm&0ZG4uPI8BL!AvM*(TFI=mq&PEanbWh\B94!VMyb*#@H*TW,cx0z!:AtI#:KB#:4wdgcሳW-_~r&K'{(}J
+SQ <IC[̋jVK1dȕjkУ+Z&Lʚ^^4]}eG2G[vʶ?S}UuoTӾcQaz:7Sw<E:͋)r."a->B 5E8 1Rh[ߢb&4yYh_@ o"xYd񷒷HW(BNpjOb kc^Ĝ,z91 0K_O%sL
+DH%j"ݍ^mǩ_}:kD>*(}mz;vAfG8D3X&/oϝpo!+-u{'ʻ|6J j>ZS҇b,)Ət?`X3rCSF~{ZHF5gLO鳅J<e*&"q^/mƗ֍^:ojF2IR%m/f͒|E?U2W
+vՎCͧG#yQ tsϋe<mG&/eDU(h[KKYҏ)eeM<A(۫ٴ
+_$?X~c{vM7'Η?@yW^y{Yq0l$	HCLip꩟kaT^"vݧ_dҗ\xee$!~<E/7QZ2W!5:7y͈TP5ӻ8B!,4$6^nե7uGU3:K0B7q!yBu$h#%2@Q3ZGjmDfP#i0Zc8n 4qof{BwJRAGTΣ$\`oU`	VQ9AEwxdHN,f 4&y3CwboYIX
+z8%TAPF	:1^<Ei8jvV
+gߒf0Af4u͇۷jʾ!۽04!4DI.DLǭF%a^!Daɡ(wE#
+0rU3~ԶԴƶo+B9$°0,18UĪnӥaS'X,nPB3'c@'#t(RyApI 5Y0"OSKnW@U mdtaU(6A$xk$~T{*^=cQEǽIcT#п  s!:YdMIEsIeIIG.ga4{Y:\@)PuFk]dU8rte}7_;z0!\&W7ʿl%׆م5G-mq3zq)v` .N똖0c\ B5rDi`߼l.f*Y~V3A!YrZFli[l#ۦ"-ƆLX$lp%d޳l̦u{ZLF!{_:V}ofkeSL5EG?ٍ_`k-S[QN(YIfʞ =~w}ɿ2>W\477wNy7l3<xnz{Tg>p@W2IUaRC
+Y͍nA)0{r$&t7`$(!I/|}Y,	߿<	5FoL+ִ@a8>G!6
+!0ZKFQ^yNh^bKbK]*Ok̶'IG]N}z;ILԡp&Q
+åu,s!Qf"/tIF8c!SxsX5a*y@pۇݠĨvLJsd1fǉY!ܠ:G/@{W6$j3$,Ma;]zY͠:icd1Ya,Hb^jMv#'sz7khmwGχN|}WT[mm1HV:!PB"\)[&d"yn4&3}|POɋ~΍z7.;iKi>ϲ	x$_lgtnPf;FtW.oYLDd1yJ&up&!Hh"řnbTQ
+S`q7t*H)_>Fcp7huH0L!Ⱥ$	Kvo:؇KPutc"ft/'|a_',2EM488@ɻdd9IÜB=F$mN6b+h=9Ji?FbHE8yBvI-SIB"'2h㸘dZdaJMv-8f9֝Jgl֣RT)SBVfZw(i	!
+TX9A/Ԣ+YcO~ǵF'ǍQۅPvR.l!W |1'+WrMkAz8o>5S~f-ȃ ~'ั8&<t[Beg>ЖK"vzc+c%άk_v;f?wV[oĉߵ~Rnt0L4C)ѥRnXBU۾-aKhԲ,;8_qtVwoIٙyaR}4/~]JU]bF{ƨT 1\4CGHۥȉͥ1㢿N(7;7Ap!%1:pd)MUJcH|B{S4/b.z	6(rJk5Z1X$-tEwi?+H"$uĬ{k$F,a	:mcs>:IFxl}~Aoo,Rc94H"pKm=SI<%e;L_z-V	疸&Kp%9yF?(JFwƂ@Pz̐[m(|Zazq?~\^(ZQ|pWJZ:^y09uƶ"W:jyT&(WO,<qp:Vh@a*q<!$XH&pfY8}g'EG{*A Qr,^Ü' Z :
+:t:d=Ps?{)ƾl0k[M") Hd]g&e< ^!N$iӽ}k
+!Y;I2ˈGl݁3IatkHj1K#*s|'5+Hve? !VwqvLk?۸^bSUG\Oߴe_anM_幧F'-<tWiE#DeGj8g&ЦtoT⌹hdxp WB洹ki1aNƚBޟFe}jݰl5-J?}ltk"lJaˍޙdiʹM[}oRL4>LW?jCn͖ޯ
+f*Oirc-|'set?[ߟNB=_ׯgβlkku{wa<aJQd%5ECPlf׎7-67~I)Lv]']r>H1*
+L	 ˲'R׭0Sf鍳7\R/쩎'NFmG ߿V7)2<bEX<0L<Sߢ:Nu~ط8Be
+۠uEh (MRa:!vyM0$#]yLedMBl>Je'	1P#t*@cU;)TA3M1ajRYzTA&dr(g_S+r[bcytc}Y${Wue>!CeU=,kl)%E7k+ɼ-J+Ca.F8Jڭѫ}    IDAT&Pr(<zoG$Џ]c%m ϖS.Ec)A),Lj-zI6EJ2H)2O3:K}g^6"f`P}JB )]	0pd!0H[dCMwR~!{Be80kY.޵풲1wҥsuF]b83|=LIEDPr	ۃ
+Lxg ) oi6VQ1UL֡.E?09izꇗ&GK~+H^R$c2kId<$EV[U=Xn,IkʹqjBW(7"5jR(=#t)#'hTՆqXKv	5{35JZպVG2XPN/сaSBUT#2uiQ/E3S-$Stv&L
+~K՞~3F?5]㡒~v5EC[_1[^2_qT+}{q4-܆d~$TIh44M;[[[?Xqo~E]Oonnn}aO0jf	14M]?U~d8zW%/`|>ƤɤT_ap0/C[$DuEcj $YZo5LblvǧBnRktKl,]Y}buW!4Nj$btrM {k94DHif)SdhEnR`]ev0wFz1KXGEp<Bh6lr
+TQȑYc? tOl "RdXUF-X	!~}
+gG|naɰ:ˡZw߻aq鿗K/6;(T(
+?VR?zC^ڏ4NYw)COdPs*Nh~QkjxcjE9c=y}_Mma\3Wd}-)vJnuhY][6 طtJw~!wvwF#*3(UZ'>i@4]fh&aɫ#t"#`A`NQڇ?7W M5ǈ׈WGz-E*h
+$Z`穾0zA$S IW܌аv߇w	nZ7,]tN3:*iTAیrkQ9y@ϑtJH0XM4lꗱg0*TvaT蟢},r`Ao鴖{DJ>*E^/Mw[-H.
+mAaVJM%˖9вCnEɋ]Vդ){KSm
+v;qTtSOL!4R庢>(|)\9*W%ISvYCN'q;ck<tb@K;cM0hj3_{*~z9/(P'mQz-"&/&7nDփQW3?yU=<Yɽ꽛fd]6#3UqQ|Gg\G"lttW^U?rιt͍7KwF➨Ȉ|2̪:j9h'?g}OO'նm?G}@WuQHc1O<-?U̲mn(pkw1{s޶oERe}_c;[,0<W*km{睭&[vv֍ݞ f3ʷ2@Rq @p6aZl)uX. q{ٮ{[z>QB@ӡ0V	 @(B`V,>"``/.)CT`6Qۆ̇Q#m[0H}` sPQw5r2Yt(ۅkCjZ*|oc}`@{vvw1TΞůmEsv@}Io9[pX)t1_~87WuYN0&5cQ4\o0cRȂuw$kG46O׭aۀ2G{(f"%(bX)	ȉ`8eU0 	k a-H1R5
+^ρWN!l`ǰ=hEi70j Y ._8 : @sѹD3am@xvpO_	 ){c:&P9ymσAC+by'(_ŝMk͠|"/Bf_Fæ a!qn監T*7@)dEA˸@Nz:]	z{8{v5~rh1TQ7w6]U
+@K1	h "@wͧvRFE{}Q~:[31LHώ-h.%;L%,$'eJXr,Cn/HZ{i+hR9vu.1ҳ\o|3%wycW%Br1||\*kERbѠ?ˊF"qF[CHKRsm[3E>/]U۝zgo}pppӦMBo|[o|#q~/޹scT0v2DBah#?>4T}|fg {, !<߲vM5mUFm̶r(yIہo&mַHЅnbi)E3Hj  F頳܁> ߿4  qtDi q0'P(픐MpP_" J EC1	D,>	G8<# X:\_?zEg|P$ (D؃̱>wQK{Vۈap TAJ>BY
+vVnsNuCoyh4oH9]tI϶=QW`5UKAvA1|?J:iVڌ(	((|]+z}_dRe'BrԈŢ~G%$bmҏ_Y%{S%s#KKo^%ee.1SS8&ҝDB3 RPf
+7QUB ]tzD'0cVVyG0̄"xC	0c&@-Gpp5|9 4|1D0x*gh!Q{@DIhx@xwPI`Jfk써4%fBL Z0ֳ`&Sx@(2Y)E`P|-ΟM<<uvn>rt`JiBR[Ҝw}?y <R\hvJP<UEeĉT@wQ(Ĭg I;fdvrno1ݣ*4%~noHe=ɷLmmS/T!+a!뙪1;liۓ|K׃͝arRk8Tz[&l&u;Z}NRNa~FJim2VpN&o՝Ojmݶ}+\}Þ7z ~_g?ݱcǇ>|c^{\=\`d)fq6~g(VwHߵ%|L
+T~o!oe	CR=_]<!ސg3u!R臧\z۹( U!(W>'2ugZd1(CqTi><~<)Mhځ4V\f_ a8CpV82:(XY(&pUC9H|0n!n®@$(L7ECy"ZAр#f4P0{D>	JoL,EMHɠRʵ;n_Xm˃K 4sSMyϭ<IU*Sf(pmBLJ4 	1h"e"A,ҳ(	Ý~~A[jmZ6W{`x\?2T|>4)Uh́R}(,.m	0A,Qf!-Aw~J8YB ]
+P=aC`1 O!뮎%h=Њ>{zHf2hW{ C0&Fo1
+!~
+sd{ K ,{ЇC8	\ bd](a֐z$ᓰ%- O$l@wI Mp2%$ʒ>izt[̳mlFq['H]ɉ#Ok`x@Q[#YW$. pWRA-+0WT2K:B) F*ը?+K|pF3Onpn
+B%WBUd@*(Ժ"/ώ9Ԟ-whl~M$;w?ũͺw9?-)h
+,ɱ¿B99.K_0;bHcR>9)a=/1;?|'FD8P
+)a8(7f`f:,L8ˎm:-Đ6o2[Ǉ*N~| ;jڞl |mq7hSHεf{ۚ_Y=4ʌ[W?  7B'Erݣm=w`96l&Jgo bٝB~0ǃR;űmƁU]t2Dᶁy< nB`:4AnUa+p0.!:<Vl80\#1	a83W%zM!@a`=6
+8{
+G"""GLiԑǾ~lNϻdt?NGp6MHQ۸KI{1kg/=?)j\(K!8xk<`{ֿ5hysH8_lKj*s6g^*eՋ^\{4GWp]v$!:ܵC)hfq$8x/:0ED졾"" $4a[ET̐A5]
+!il Q9Gb0sUdD)#P.. b@P2YUE9#@&&/B AC	X`n}iCeD(̃`B&`&@?jǀrDn(|z{>^JAJ*+Wl>8ӬvKM;E׿F)+NX0ⷃwF4OKD9W:#B($PEiI%*EfLLjTV"Km5zI &m+0OB|w/=6U6eJ0߬TF׸Mמx?~u7i2`PB?}o8-.(.)AvDֆE):;5-  2HOV lmQkChgGl\K30Ϝpw=*"K@)kDL~r8:BȚ$9X~w:.9|_4'[CG56cQfхm⸢i$9Rr|S'jq`$07Vvyw.Q.~qt v<a4i#
+Pmo(2:  E>>no@g eJXFn"K`vR"OapНQ 5aP^sHcnA~GBu.B؆;4L2͝RVYt)MB0&pRD>Emve[}i=>~]R9uJڔ|e{=Fzw6t	3E^TR1Jƽg|4W5t<>fr%f%B\V]/}Iى;չXG̛|c@)4!j(6n4A,Fcb1w[6	 Ridg q^[m(C*܃4{Fi4Gbn6ApFA)Z	}u i* j@ЇU"xY0ykBrGB0 "mr<1/!$+Ы`6D@$P	e *Gaa=X|fVMoȴIbkZeeJ>K#J6Ü?fI9d)gq~4WtOvsG܏Lv`n(*Emz:XO}z9] 4g%Z@ #C!_1iX"*
+A~H?bb1uY29de+>bWs?ޞt6g'U7l@b\Al\kLV4,[;H(5SDlZ_S|	lݰy_.^Q9_iF?)X7q~g^rVٺ9L_Sw<Oͽ9]FoIz(ns.BdV0xJ1ڽ(e;o&驄$axkݨi?W6Q8ʥ
+U?}aͿ*_$90H#÷|iC?"ӹN(|$MO	}1n<RTb4N2,XX$N wi}4zH#fh/[4<,w|1qMt2!*\(BўAq<fE>DoQyn j
+Bs2eX> $n#`2puRb\:[HGF^oqzƺu׭4<U3N,ΏKO|S57+N s
+o*Q@V4#D 
+j9%Q:m.%ǌ#2c6YKI$T|J#^rHIv,c˽eqrޒ)k}׶~`)!Hnn. !wziŔbnꁑC4NmթlmYw`&*26 D
+ h=	)= 7!sԀUh.:X#Aւy/^1(P?1,<xOѺ&B
+
+JK`&%chqd>:B/CwџEo.	BЛG4v"r@Pn)(X7'/JַllXu_l]#nXA;#y?q/g+ lA0%(҂L=NJ'F<HCJz٦qcU
+\\[Jvlnk7B[|?=M=JΏ(	@d7=`sKeM4Z	{?;B\B    IDATɸ+S͒u`]+8fM߳_b',Tm0mV?fr9Ji\K{]lʙow7mw/So|ciiP譀TF[R1
+*ɧPm0q4'Q=CIQq|2\ǵ[Ȳc2*uGy\{\YyOM3QG'Hr+I7bwem)ES8(:4#4RF6-%Lݹ~~G[KGV0LN^\ ,Xq`:QCdR"K,A
+<5Мzta pᯬ!U9EЇtwVňCTG^a"K$\GY6􄒘FFo,`Ts1Lgcpm|}g7H#]?O/w7gsnX'H-j84|9T0of
+HT^b¢mF=$bm"hqvk}'JF=Ek}#+|?Ei d3o]SQ=aLCZzڻ`e3v`>6B	h@B`&>_@}΃ac/a
+B+"^̠W`M@B
+"{$-hP
+dAuDSCx"/QvzCA4Daԡ@DP>TCBiZ]B+ #!P9t[`:S0TϤ#Mn"J.X3 B);_KH$/$珺h^S4~.ŵCA|I")Jit'J(bX~;)EI'/HRHE8:3}T<@	EUx72_n>PrbMYC*lԵf;b1>~pſn;ڤPv5CvZk6 (g'߄	~km]9
+(x
+b3YhaˣEXoi%bbzѡN[{6U˙LrmRx¾7tn>3?_p	;v,<x\ZZkW?ȹ(m(bլ`~2I @:3&zS5m0-C,7X)]guQr>!wZA%[T0ՕײTS-;<0H}_~JtƋat-ti55,H'G߿ru5E KFgPM<8}Tۺp/"A)Uo\JWup~qBVa8/Ca8ӧmܹ2S]U!sHcP0("A!2%L>C#Zgk-F n[]n		)$1 C:M\cn~Lg_-7!$ju@Z,6ל g3YQ0ް޺_˹MЈh͚.F)@D\idԏl}@# uniOKgzBW &		]Iz2csdPMS[2{|C8I5̡49C("Ƞۈ0 N(=Jj`3̇݌xq/!S(kTLyqh	s ʑeD0A02,tw:^(O#^ Ԫk1 kن'`ǰ	 낗wro2x>Y\ꭦw1-W/ pq$Fu~^@ւȑ[8oߦ	q$?j%rmTS&IF"p3JĢ2QL(Y`L@XDH2lvpFU(!R^>IiN:3*E<@OL;i)(WUK^0V129d׮8ޒqwoX.c^rF~%) uIzr&'\A$Z0~/T~xu,[Lr4,!q7lMq~TUwhw~ܹСCATգ:ϾKmSVw nݦOe	"2NrG8;XLon =5eٱqڌ#r _Q)~@(ж~Wk7QٹPѽ Rޝ\xj<_GiGcmk{4=ղ~eLa"_c<϶5#,%a*寋qrmT_p`|?)<qLeyVbZRzWpC7FRƤ Ob
+ OK5)"vy@0g>6.l]e -Z(T!3$MV~s5ؠI[)y8Jvso+&C^xm´F&S{ΟbOd~?Qvcܡks	 t k$g $@e4 R 
+,/~%Ex1C$dG6SV,tH-umn.pmRȺzajF ̱~d=)e6N^j>L7@MPQ "bVqB%'(o? ጀ.!î,zϡZxa"GQ:f9aO n@/C+B ա&ܣσ
+{y8V?ch{:-Y #i }PC 2G0822YGڃ9HaUa"Z(,k NAiU!D[$=EAWPʔV^^[L[0}JxT˟6}aN-Q,S+YӼQPZPJiI&j&[EI
+ F}a;4^6b*7b,*d1e	Dl}F-%oۇ[[Kj=5sa~N	I'/l>JJ7(r@*g׽o\S7|[oxANP$H
+1`":'[?X_7hݖwgb[O]wO{̺%au- i%aWXx02寺7HB\LBRͥى}vvN-=fԞ7{˼K*¹A{!xo?E ·(|1X$eqns3MOregwcsIqze)t~86^%-˼Ͱ2#amaZ4~xsA>03p81w*l>|ȝ& a$"Y
+*bnu]ב&8%$]Fg 𻨎"OmMbfﱣ-C:y4(@°DPBڶNݼv5++o1Zz$9q\i}k8RYvLhѼ)͏'MOۻ|Պr,vTMΗsҏd͢@IⲜ UFT鱄AXU-iڊ-'gu?Yr8ʏ$P4g)EHDq?g|cy6 M)MRw[!{ou_uXY:ZWӑ3X.DGi+H<D6#j(GPlH_ `	VL?FhDKh+PJD tYPوP<Ax YjS9@
+-fPXpZhLj z4=
+	(YW"]~2GK/ZĶnbHAye_X7Ww׬ov]\t;Њ/)
+0Ώ"$DoĠzJQH0@O$cz7W/{:5ts2jο4 $+?ӗx٦!{mɊMt.kRY+355Ww?Pj?މ[מis]*_~Cc(>5߾Ug3~x7,oA-7	JLbL):R$!1%~&ֵ7ru#gEv|y,jǮh}y?:_v򖷌8s'zOe]pT?t?\ȃ AqC,!TPUAg֌>(dKLe2Bb	b/kOg$^7R~і/KSE~UM3LCo`Yn{_e!, (/qфD\EvH绒8`
+ J;B<a.U@30j}fݼ2>d(\Cu tLȑYeí#!ETP !HH2zMĶ'c!Hn PacezU+xBNi(֌ưpBg'ZY
+7_ܿDׄ)5?m8!NtN*CcQvL	Yh?O(ʱ
+ FCiD2\
+R#gS%\DtғtjHedP+TKOc3&Y}|nKQrQyGh)L;Y97$e-7b<[dB0aV܀RH|d>Vae<H70> % 3D+|1d{DgDf2#1>x g"m j4&tB4ڞ}"Y/!Aiu͈0|)sDCIYIU$]0V S6D(GcFBi"vb`Jx $JnKY@_'~WXFCο:_gwli PeQL"Rr%g"3T#3$Jd[;$cA,@$(uUC%d%㎢v~$DRΗ\7DIeIE\/o)9M䢥:A3Cw((	-bsXQk+ʵ<FFӶԁWq!?qriz׻w>s_WNOO?^;wTJ/B\`4F!B!R
+˕B{)H[/S`^xeqea̻|m !im◁(ǺR;G([w7v!.  H[hjlʵn9,.}p[EyK{-@lϿ̶o^fkf6<ߘD-wT@)]*t [ߒAe^^)4NIra2$^u(uuREZ%>CGЁR)D"CS%A!uMNPEW6غ7!D1VcTrkJ?Et{oS3	nD[ 8ʎz˧ߪ?$_EdY\S&@-fRE#Bp
+DmZ*}[;ZiLO7AtRv.S54gSX7s6[.~	56[Z		+1kE>øGJ\P(zHb7OMxLGoy4@BUg*A|zuLD^7El셻H[H{_/!n 
+d=GA/Cw7x!hr'@9a<3߅u6!!n mF Z#iC.EyTYY߀o0ʭ׀aܖg9(Ӱ2LߨdTyP?_/ǯ!$Gww$爐CHTlϫ6+˜B	EzRZ4P Sxb46=,Ѯ`xм߹zԠ\t~(V\4`j`,K[=-
+Y 6_w{\6g'qRp=Ei0~Hb}dcԹ!.Uqz)ʆJ*uC\ge~TnW
+΂~;g3k
+_lGYB׿ꪫl٢aBOz`ݵkוW^yYgmٲDe?;nᆧ~0]CkeNqMGC k`_ 
+BaP?{˪*m{|non$I@(A,0 "QP"Ir7s|pߛO>gW?FfVݺujSgש^k=yL58E)脐bmDh[_I/3дut 䀐3#<f,PX],|JCXS\m>dEI񅆾T[w C)8>(IS6[YR|$=8z}f^!*_پC3+
+̲Rte $OAY;b#'BiGg܍vsI#,!H#mD=XRa,T|aC@	$R@7	a;]3w?ujτ0xVptY/<Q][K<oE>k`oL]Ћ>DIwryB5뗽(?=DȚFEymIv/BzBR%LQ$N̪6iI$vEQI.6GZ:FC\>gߤ$	Ueazl3<Pt^~JcSOU)Jf诚sbPpMJ>~[n]/V_Rk°"	{hN	)x)@&@cD
+=%La80
+`d%x UEmvU62$itց{$G1(g^%aT̄L&w)E" 9YADUNx@!U RAIW@m.(nB`ta`	ӆeW.O)//9?PJ!ߍ8l?[:,g>f
+1D²6AAsd(,QT*TWP4MWl¿jO%-,|/Hû x̗lݠ{җҘwWu!ixq>fgbt}0=c$CU~v Azp=cPo7. K,7pY%@gk-tod5WXdjkt}u&Fֵ~ar%-!eg!_Y^rdO99ZAg~.|>W<O?w}gvaG}ߖ3~=|))mV*<$IVZuGgddd/kچ+VAI vES1ߣf;֯`RJzѩ|vM[\"dRV;xynS컰Pڠ`LVa'<0>IߊC4֏OޤehO6e    IDAT7|N`[{ؤܫ-ǅu T/M*'2ƛzD?*	x>}al,% Iv⠋B%*W!D!ШV
+"SDunB̨̀*(C!@LSưn n1d[FR-j5Y/!tKYJYBKbyFwmУyJ
+z.Ovz뾉޵QƩmF=<Wف{:9~6&RYiB&WҦ4ͫMJTɇRH73GAzp^_%UO)϶>xdS\̨:7R۷ketAsΏ5mG'h,uItmvơ t<}3](Tn<'@a#9l' 
+Cr6,N2EECTGU5m#؃`WmF~)X=]((4wB@d@2Dۑy).A##k&[v}2)PY %av2R VY B!%V1He&TLCY(w	D%U/8NkB|T6ƨ o<_;t**y`C9Jz|h4ELTlNEӶ֌W F=,K_E$d-Kr^tnIŰc<}Qm<+R9<tRf"Z+Ar5Q1Ɯj[i?=N˿`6Jď\x\PЅɉ$Gdbv=4YȊm~CȚG*?t^/~Ww37}&4SڱCJNӟtÆ7pÊ+;C=NΩs9{^4[o~s֬Yi^ve>`___B鶾z-D,A2 R8UNК\;C(:W26y_wkl[;t\bhom/-箬N7.|>Ƅ~Rseڮ9׹Zlξs-ʆπT	$Hty}0ImstڛqTGsוl/JAjlBZ "4ӽחshw\Cx(ZJӇS4Fu0!9Q4ؖBi92x-xʿoFC@)B뇛{=r/o7bwh_AzHS[pLl{!8at\N:P,}Sʲ׵{%Q}Ď$!J|.l4;Q,>SsopGeީ~o7OIҍe1.Kdf|DȄE	6F2?mϨEdeQbflژLeKs_*h[)x yN.'h(=߭_n+MC[oj%MF<&w~ns!c=ډF41~RzMzp(J?3olOC<P
+ћ	zS`:Dv6R<5p#P _[xqiyi11DCo3"D];3H! 4q  C? C([tf7P^	@uuUܕ]X9IϨ͂SBq|SQ' R|a@#KuFnrT{}J4s%vYk)@\#2H$F:EIdYTd2m\T=XR\^HJt.\W53MVlBP[t	'c+)mǼg]siώl/W1vGlRf|(Z
+n7}ߩEIluq1em>B9#|wFڍ}m:1R<6҃]FU/<p_M<3暿;^;㇆VZ/?^z_?O+;s٧zyg}ss8΅Sblûg~Nn lgv;HC(	̀R;FҎ55N ã Ot:w{umU _m4W2[&-bTE@#J;?)86~?Kws?	SY*ި$lnCbH)Fk	-O=b|Ƽse7jfvJH	!fDq-2vkO36s(w4_<Eb @d`: P
+AsrqڰyhQbLwL.X00J!+1Y(G7VfٞNA)vrt(cʑʩ7˹Axw>҉wg >YFy}M|`9eq\,Mke{l24fR$RBL@ΰQdqKhB	Z_O1(3ߠtx`*fbj߭kc$$V`mIy\hr󒓋֝dB^״͵Pzbn򽝄ۡ?'J7tcdс 
+ˁ}@ii#
+Wj?0pAe2ȐF0s0g"n1ۏzf! l@3a1{(	=F(	P]ʹHhmCq.dK+Bwaè"m# A
+et6,azF.$GBIXeDmh~>^a>,A1P,B!K'ilcr%MZʒkz{ǳ*'xJ٦U[[yJ˱fק})QPĠiW0D	R!jwIἶM)F$2Kks6vEg	/snS])C_	Erx~*!h=^z9(;ю U~`;l}kﶍ+0!^|Y]K){sQ2ArTٹO[RV@MNT>$'K9 {%!$#	muDKIAC296Hv'l}3?6R,__ghΜ9dY򿠿|Sʕ+9Ӟ|ɿl뮻O8ᄽ[VPO~RVc_vz1+K0]#98r^YRujLGOc]aK 0ݺVcKZi:f{IY55ET8=4KFK3/\ga?7zQre=fvK6.FeͻtmC'X(>t(=$1Z'"z(9:͖zGO_AIGg{rF^wa׻ӻ$M21CսZwk똶YSg3Vf8דd_MCjqTC]/]ӍQiARԅIr@x8u@+MYZ!wYA{O6HbOߝf{g^n$I!0>QϿxzlG[n{k}?9mݛ苲u~MHH"O&LYEcPT`cvo(Hv*K͐0D+ja-B@y1Ud]?;`"f$[1SJ7lA}azdќJ|d[c1d2zJzBփh}`V.}7UF(=ڵ}-qB$1Z~?WX)Y#'wL	J[/5O+@3Շ;M9[2
+#hxHywςH0?48iLU:Ǒa	)x -oԀYBnm@u$-3L䇐4uMDq>x f$L
+	!néBID-(3.	Aaۘ13A4%W5iT^}bxࠔTO썝BY&L*5L6ˤ+hL%\T(jH(u@tTNd|F-Gv̮ku:aJY#lϯ97,c PѾKO07lo!ę:d?=\yYRU4CJx1JOt~u.$H*Jm2wuwjtjXq1Wh7x|h/䋹rșƳow*eDz1baz K?|߿袋?K/4I|#c=GffqW^٩_'/RJQJHJi{'Ԏ;֮]{9_X"0K+<[ӋJ?ax\1e+`kk3[%ռc,F$$* p~<>hctmc>Pf_+m<k	 ;?"$?yӍJYR&rW([_EGgΨ`s_k{_9Z.fF֏rtVARqrt5)e(mʗ@t=Ȳ˅/Ӵj/W?~A,V/0,5K{2Ʀ>!ŀBZzziƔM折Ķbs;cȲk
+Jgg
+Vz.>+z4N650F}Tv&	IuWu:aqv*ǂY]Myu@2_ӷ)P)Vwx2WK!6y%JCm#0#v$t"\m}3m{Εdgbt[8^zL'ۻ5&cG宩whgܿ"oӈOY	/\;^/7lA6\Toi/KkYI|Q/2L8#nRķ'&-8FF愭wksgLk7̀@q LīpXY "F棵4.:F@[hoP01vX]6:- QgAs o
+7
+ i&݁`qiFX9d&נ7­#jNBPئ[}u \}lyЛf IB%OYRHeq4ۋ?>ˡ*
+XbēDAM-1>`=д\5,`ЉacڝlN^0PoiMmn/j^+//@-xJg-ۘ9FcK-ТK͡򻛽ohپ`-:7QӵJiy뮂{Ys~dMRs4{iEƌ/<NǄ2:e-QvP׿V4o<-35U~/m.f8en|?OuY\ٺh"[k/k=|O:7|GyøKnP???<<7_4c=O>f͚/|Æ'xΜ?~+Ws9K,	s?g/J}4m}ȅvOcjP,=m]ivkyqj,ɖғw5%> B_ъ(>oώߑVr_xWT
+z7|a=.K{H*umu-e0ZT)uIՏQ$s_:ч;ޗz{(9|\T].X-\,d?JrJbXnkު+l]s6NO,8j*qܽaxdJ4_ضYvYub)#sseʠl0|t|&@h4;[|Vu{o5IJx9z7￷c߳iBJw/t[s%뗩:VK1
+C[EBY9鷛tǖ)T!PN^{BV6Bt
+Sc~rC(,Ol*WzEүm:4ߡ@5ݑL2ن4 f-삶#sъF5}/2)[L퍒,[?JX`nKHM-7zni^*}_?F"|$6u7v{}NP)` d) .
+qYjk
+?gF"OZ3)AԁY=)`E8 7nͭHz( 7K. 
+40<FLOPBʃRpd$@%09~Y,b/P(Q~?o;\lb}#CEA"$ђu?̔afgҦB6_#ȺB-Jxxf{v#rWYkG+*ͩSpnLCAvݒ M/9ix֟/J&qzT,Q!f0)_h[#$[ӽ)_/?-,/~l/L!L>C{AId$ǘFx}q_aOh>kS oDl襇6O.C:3Y[ww|nC=_}{qo|㩧/+VKz- V?E]я~?Ow}C?|.[g}W^zt7c/Apvrm}3͖:B0v;wrN(9(AzևLkU?|\*׶X0HQxB\28/~`=S^-- A^tN7z	?M 쀂2޵Uv|J*kLb-|a,OF97d5ehObl1/Z}Hn Crq,ΘnneQ>Y,]h1TCltnTn7]4&<AHfa>vK&o"$|.m(>h_kϲ^w-i~eB~疌/=!U$ǏO#ƃjDq1+H$pDn2Y䟫˲\b9,$skl\jƆLXu"92Hۺ"dS-2S46m2ҞC Kfhоdtwho2xǚm Ta^}fyT̑)*pe|EK{#KR1GP%%_<Og .䀔e!}xT}U7g'n	 7crt؅[Da<Y6#
+$@o;=Bf(%œ]C!7
+ YDp(-5ݻ!zZp*.2Avi"?Ӆ]E=;'y
+>DrkȕQ܅Ѵ1?(gxݢT!t-!J︬SM^|F* 6DشQ9h$Δ!<lGz|QϽF{>_T6)+Kc:ZtWmco?eBa|2fTCbrD(f 9_lo>EgYS-_˿ LٿpGs	O[^tӜY    IDATfwU][_d{-~~!KRp]~s}n+}GЈ=mcvNsJ1_d/9[T1:$j155pB su}tttƌSSSc\K_u]1 M>O]{9?hٹ~7:w }ٵ%$ Xio+IΑċ:'qv`Ԍϯwv_#Y㶉.
+S		ѹיe&~Hoɱ׀fs3N
+MmNǂly;]o=yCGɱ3dߣY}{K#'I+LhGI~EeR^rdzP\,8?bFX!LCsW;22ݾ}vV	9T}Jw0:?ob&ccb!q1坛)񹘕fKRV6K$cBJvkRD89\uĽT9C{}5L2͔6ъTGbhJS9hXėt2sIYUB['9'7~-	kز=QJ)(ZRX[Hb-a͵Y++(hSeaPk$ biN婴bEnRQ,L̙Nefp1%Ga$tk|&\n|z%*X?Y6*YMkkue*0tyi'DR{*
+Po2S[Gs(..50Y%`W,SCox\=d	JûbC{Eq	P
+B104Պ.  vI>!^wYmUˁnU/Tm )}Nxf`{S2~DS	Cw,0Gm\/A+W'a&ƔpGc1Ǉ(k=~zg;?h\vnR*Gi׋N؄՜Pg T.ΏlY-t ~1356?Qp`* # ~	@,	9ħ2ڔ6W䝦RʂT9!R1'g&LS27˅/O*ehl['Z XQ+\܆.%'~>F}X)3{b9F;5'nGwUBV^h" eZj5k/^7_Wj6Vzg_.v_R>m~rBe;83N׵uBτyApB6\lh
+-x_px}!ߩ$4:UDi϶~Va̗$>	_`89JlTSc[ 7Pp&fLGTxY*|!L%;O+e1ֽU\޾@޺z)_Szt"THG*'g<*d\	.iYdb޴Em(p1B{h]-8(6:?$uc+S\rP3/<7KgrB;  cLvǾ?͖I?+Io/-89Z;ӣiBʵÏktBζ%@J֯(I~t:HL&M#5cF[|0_^d`6ۼICb MMbFX,2R",:6'DW(Q,Mr~Sjy'[BHhVumS/J39m&DjQL䘲sK"5:nP/Syk!߳F)=s1L
+Emk	_y4}tseLL4K;BPCi΀n]g!l!a@@wNP]D=%(BVawQJwvѡ;U=XCv"Cm]xdAi)hO) g0q @J\:!$:M L_A_0=>q!bxkRYƳx*G2>Oʒm>bdb`B夲z|P7KQ&ReJB)LBm-d_TI_O	w:ٜ~7\o>oio'~Q<OJٔK*WV+(%T+vxGgxG{C{}9n ~C9&^(9a{î[SIr&)U۷Reb?S҃jbe{j%Ƕ:Y9\.m^tfR4:ъO4鸟7]z'L^L_bŊ+VdY/H>88899=Vkw?-_h3S\mOјzgonO|,|WMGi
+/-U%BT_z y 9 1RÌM_h^iMBVs/R4K7-%P,-kO8oXke{lkɹqc̼Z*0N8*J|B2?9\&r`H-K29X~%eVfr"PZ<R1c<?W[}f.d-:hlr 9i['r)mU^8ۯ`3}!o4P~{m<"7n_	vtɶ2$ %dEJ*=gfmmN'S$Em|JD&M*^VfS+JP~G Y L##9V"FLe:1r 7LSI,B	׳Lku/ۭj>Yvo_~;;gBHsÂTZ}!9mݢaB45^rX|Fb#9b`j=>nx~޺wp։OxW*1-lu3P9c*i{ !,Ej*|X$Gi"mH =0'
+ZpKտu5-p̃0.5bx @ћ*	f1vB"D)FX.tiBmUC;^~p|9H<wao*i0-n}V2@cDRHC!),d٦ƶ1 Zi5 9jzۓ]ajDtG'sqasdwxEA:(Fq7y'#k eAc<9RIrD,oEmtcr1TnHbc`(>}J4PJi0LHeb0ba諄bv.Ĩ[QjK+wxfK[_qP)muħbߺ.\؋>ifOH}99mv(eQjl>?ݯdF)SҹMĒf~[|~_;gg|||ܹ;OJ7bF'mL0yrMm \뗌N+^ɘI *k' mX?]K/wj_,O46ŌDe9a׾kk1u.OiD)\4ֽl>eQ_*bb<<T|^AEӓѻ&m/,юT]m}{[*ĮY(W1-7޽bL# =Y):77+Qv@5u#S+NpqM!l!F(䝛EgTl{ѹ){3Cbٲe)S)#NqtKI5SsߢDgTzE.!kBS E XԌtnX}m+&UH̑ȔJ:dO
+EnW|k45-!*,$&JA!(q['~_,|2ШǥKIJ	d!Sfm*OHf 9Dlss7p紵>_Hj6X&:پ3ƈ=oQz(!	%A`im=;KG)@kKB'GƳBIY=0-$1tЃa°0/JȢ]3caKhnEwDdqh̭f<nvqV: :}w_ܽi%U3;[3UT̈84"-ضآ(ҏڊM 2TQEUQu֝q|:x##WW;K~Ykܾ'P
+r%P0B3LCCPNrB	 @(Ԗn0  aPɄo4/%dR9
+wҷvA;P+OZNp='6ҷQZٟ h<hZhcB}Yl2F7n_WҺ0wy$k}~opq>GP<\pwGڗj7x[h~:|0~&ˎOwo7ƶs)?	d)L32!2#c~r!/n3zhCmkswZJ.EXRѻy)Ψw0߿rE(;ѿ8LHP Ŧ;?p&S\7ܵma%\갧GFQ`ƿ9:_ո.҃>/=> Vn$ә<^C峕.};C8|Ƶs)岒wMH=l%{"s"҉.#deφOgt{*֓wYd~Y(mGgb.Dϵe!\qp&1H꒩?
+vNg+)}9o=.BWEZI. Idj`*: Erŀ|;݃PuŞP]dg?JvtK/={f{sU)}b/s&Lfs{Os+Wᄿ^b`7,2tMuyc[{F^I	Qv~zËՌm%ϙ88p(gJ3`mNĦ0{Cͭ/MyQ,܎k4<_XK&H&AH8+f#.uj¶0Rءzؖt)}9 JJ-ui|L*#9  ]qDfl2ɽܾVRsw
+bUad:r\Doden
+mXYnƔc!?Q,uu5!6{\뱙/Vk]yey!פJ}$}siQtF(	œ( !;gE!@I;=}<oAgBQs  @! zup
+ D40mF]-
+AR@n\wq!ZڔJ?}{]&`˳?RZwLz-ֿ<8t#FJ'_AV|^Cz*Ϟtdv)}#PkLO
+H HV}0<SF)FzڈdcZ}pշ&0+&G$y@KD)ntiU(܇0zV+7:=gb5Yvesc"% *n UVۿPPwqJQa8{m4ūܛ;/vKrNl_?;V=!'Q2uв}o	R˹'bAmk{ZX@{c
+cjRTOUexn)=k53 OwqiY?O/wopܟ4 ҂sE_>^.~`ݟ'i8ʢ;pXj%W ug7T_xϥjEѹw8nvz9L[?[	^ӳ	?n>h9BTC6N.y,LI3ahmkՠº-s,d	@~M~pzžTvHa#<TwwGKL\[twL>{b~2AT\}*'"2eKısZY
+,;їZػn^B\u(9/~X}Ӧ(:,{.~A4vɔC_j4U+SU[Y>o}Kݍ}>减u~0ShũDІ!${Rf3s|F 4@3[nE	 dj)R^ƙ3/0#j<\VS|$Y@Ztr:;H49Jš=qPy9ݼ\dv_P$h
+Jy>}f&=z~I
+jz*1J)%SmVݟro=1^Y%/7F_rkg]W}6{ޱ]ZB뮑[jo6^O! *Oxޜ1-KB-jkՃ{ȕA	 (CB:TF!j!' >xE}z<h4HA]eǏ,UΨPUZGW<-c;tIFzs_'{O(=ݙؔUsb\~BW"5n_V	Il';OO%7	?Ear6n@E7.[C\nrܡu񼗺mo[
+{t~<7ϰk) Pjpl3Or*ۙDp*0}[c?g8zTJf]NmMo2`wrؘsoBQס=D.ǎ/'5XZ|FJ,S,2c-!nKTv.sny:}oz_\.,ˤ!R
+!y^:\ӟ B?)]PQo;佮L+{? =gwVV^OX+5fgv1.G.fjcۅ+uX}irڸ8>78F|Izĳ%G{{bCչ7c~2y"u_);r2^2d-4X#2nS\:OPc/tq>דۓ8w.}#q\1({7)5$eXt[&D 	nI=$uϏe9Q9>'|kE08F7Rt׉/qV&(}^dtBEqv:BEϾ?'5 2%F]79lWvhoJjr٥haS,H8{6WRY@X_1`؀qQn-.QMi ,2hI-Pbv-F;g @ (,ܬlo_NPOV5@22.Wz96!>> }YSHc?[` +sȮHnŜkZQَ.q	 &@HT
+[joQoBuǉ(:Ʊ ~
+0 h	B c`5_pndiTkd1xrL A1)IihE{vWͬ0HcELؐ/l8Rf/9.,,|u;ؐ}3W,|k`B9v9V    IDATjUILaR~C @pz?} qY) tҷdd nc|XHiyd2+z؉Zgmѝaz`\\tγٳ=	B#7Ն+AS
+~^О$0ڤDuAqG@:pWMƴ.vOɲVk6یQ?ZU3KX}M*2y1V(\58>Gܲ房};Zgr_]OϜ1'{#{]S\W?V՟mwy5\裏n߾+</?B{GL_/m<(T2~
+ xdwɻPʳ=R5,34TʳmBWS]!HE@9[:O	]#YtwOke'&skf}}bq,6ErU_y:uE0C XĚ8k%'@=lSdhDC 0tna$&\i7zrY.$j`7V$rulϱ @Ol4@
+YLH5L>	
+׵)x/Zcī2y]n|J/j -<8E)lit&b9V26?#Ub/`2yyGxК0B8`u6O#VSJʤFUl: cZ/MT9E\\R
+̴hyϣ4(ri R0@[mc魶;x}5XӱV''&6EKw:*zw'rUmh苃!pG!1iOdYEEiX	H4¸%|ߞ1Ⱥ0J=N/1ʔ'`K\LlҺ*׿Tӽ$}v@I qf11Fw qB+DI,y,MW=1LӓqI%20,+v"2/7E(tZ9p5Pkr\jjс7lC|/ٿeoLQ'R+ܲ/rMo)6n
+/9_\/UJsm1*s: Hcc*ʿO6:Q+}b`	{/Dcl{5m`(VXvoc-kga;0a\~zk%t?-dgd\ˁAP?+]u'0Y|#οeC'Lνvt+#aV=kke)S)}÷33u ŋ+ی؋.etO&2u Mpu  ݟtɥ7xuwʕ?Ϗ8ICݹs矣(I/|rHT/Qzcy`*WjcH)DU3_G-eG(+[auRqtrmɒ6VO VmCl2 NLj#!"S؊?ǷFT]7`.JAA6XJc\*CEcV khǀ c55enQ	eC]\bRqpSXE\cƠW6{Q`*
+.T,j,ؿĸsޟ'oMefϗs_@&lGJ |2>DD.r"m|s:Ǩf!$lСq*A&wgr5֭KD%E(Pa-Ȧi1@
+(Hy|+Y4 0TYvC/m) q/mkk+-m)w0RUun4Nvb,23/bzT|;
+Śr#ƮK(s=C+bmH}7{Zq]`[XnWVm/ejPxnɘfFLltG«Rql-|0y' ?0:?E'eqoc}(~B0#jAC@HC d&_:GձQ74B0<Pl^*&m	@?b%nu;>4z$;ŵŋ?l74/3zx>?:b^prB~fG.2<tso5
+<zdwrUyȌ1"* #wuI,9tk(7Lߢtg0z7$`guMf)eur+Z..en鑖n̃B5N-HÙi21|1~oC>fR#TNtE4;L%J|뱲~]m k/ëB~,uf.ݬu1g?8ݿ:J2r|6nO1Ga5Hog\o[[J Cp|௉i7ƼF|3^~?s9硇zo}3ۿۿ8$Nks5HEȱƐ&?I[`ȿ~OseRJL(62I,fAeEty7tJ+R# fȽ׸0{*_e):dg=}[.G?5wCUP^2!Dqq/AqDÆt}LAƘ!+UQ I6Q>F%)-04nf'@-cMζŸKbcG0J=6Nvj~D{K/}w`߮M!R+^"G27'r@qvzB{9q\fdV_P.Y=~G'35VrnOB<|';%)SN/ڿj"SxWBMhrOw71gs6`=/X"jZ4׻ 
+D&kd
+3si&D*	bhAa@%6;frc3U<8^"NWEl,法U&ga(dV xo!;F VBD}bD(0F	xXw480,BE=l+ӗ2tc .]Ԋ>n=S+W2ql,
+z;Kwb~Z4=)?Ѷ~/G8Ƶz TF~N\n *kA?X!{`vcb|inqÌ䝾wKT~>5? (ݖ{žsO*J{)?]׺h-WqtӽXͿ}cYn6.gIQԗcȀs|rp+%E`@ cFhnE&Ӑ#Ɲ @CTRPt@W2߹+zUCw4:V/CfC1Cry啀G`d1<|2:p|wlJ6A+`9jQ2mʲ~mw,Hb߲"!H.8J@RKL-uRj s\vٳ?ja|1^LL6H/؏02M0${=;Z_i/71j2?לw=]vpst۶m}߿{mxo}[SO'>qr-0e(^ȾHuՆ%r5FI@'k*[U?\S68I X@e8\lV)R4-1hja`[d'kH+I=}e.?<`9wGdt>& 0ĕBmX'ԒtVAE4T` i Hsr Að5<a&Bŉ2lQ0s[GϺ췀LBqBbpqhzf/>/uy wu3{߹'J/8(W+j4?*g=НJq∫aelVK;oXd҅TnUE1G.p",?R ҃+lgQd=5aHPlZ9+١jpl1 |at5Hi	0)=TԠ2cǂ|@6\R3,e:vXU;;CUCmg&䚒 *M 0 F划F9H1S02P0m	B?9*8ItjO>CU0=_Rzv*6RQz:Brx! U$$jB xy^j²^Oa |nʵ-I\)>A亿zz:KQ䃛Uj\7VA1fJ7)= c/js_
+\>Bgۿr7#?VU6{qrzչvWtL, H؏Tת.ۚg;)>xzF6Acc1!W,EH2mPKQ-Z	҃C`bk XOw={v90Yp
+󇉛<OA+( a@l(-=0  (e`9 `{@m*;VPG04=#*Ip#rMc<F"Jw/a6deO"ĵWr:Mαuҷq.7H	? "qL*Zwc,gߥLwo?Ns]ײM6|&}֭+V(J;v8޽>wlƿg6 FW}s]ˑXAk1V *HŚH;	p(ШEjTɒ L*c]iek&=23`ĦS]qpl![SH $ etD
+LE2TY']Pl4UjEPpk1J5W450qs0EA\'()9w@	^LFerDٙRW<T/{o0G⠕4XY=nHuȼ6c;sLF(2e|2@K=~K'C#`:bvW":3:ta'ڔiܐNWxEVY@mTYU)QfZ<Mzi&}8CyX]oKz+\	H4(aYDld] jC%Z+fx0B,RȀq CdFc@
+4"f&Ȗr[b2"]d{f xY>6bg
+`8Zjߣ.{i6zrC*z tÔL1vΌ3-8^0%R@'z~5ãZB|fw\m[p1NIƜsǫcR0jG4_*y^/俴Q1(B:P`0y2EQSLhcrvqGIA\l%6˪l_G,+[ _kedprl|af~z\ѡK,[库ZC$< p`4К:X2@SX~>B}L,UVLa~'0īYq,j]委 MԺfۏ)5j۳յU[+5lضv\#?(ŨWÞ'9ogB~`
+	*hcیqZ˞zݍTW|E?wɼԿtv W.0or_=O9;+?OMNNW,Wڋ"?j2ԓʠ""ZH;mf'hC5 eԬ> 5fJW	K4*dZl(䰋	OGFM.N6 `x:'<Gek=l #B
+tW+:a t7و
+tO(W/T̤.rB.M)b$%  HF} E6dy0;SK_add!DYmAC~`لdѝؔC(j׉\GqcwF϶$?5+rpհC.'tEf'2pW0^_"ҭ~
+CoB!RCdA"k3s98ŧ]TQeM훽aqJ? y3O_2 (asg1*h(NZȥ\lzJ08&!&ƈؐMV +Àb2OZ"/@Ќ 㬧XdEzvK:9rUc2h?>H*,}F aKThy.Ocat;gώ_j}n*6@1wm9.L6T=ۻ̀M_@(dJ<RFBŸ||pýλw朻F~G"~r`)J"JfZglKN, L?KNH=C=2Qu>u kl'1"Ycye$͌ٮ0|Ei
+ݲ7>B*ޏy0;X#s&WWs_;1zOmZAy:1 R
+' iC``m@l1<,lDAgP4 !(ft. 7U uw'Bwp~dM(`tWVtclv
+q֣E^acl XOl7OEHStsF(NS:|7|1d$u5g=*h
+G.ctj2Jw??}Ukn\.wE]{+%Xb ٌLXo`o|JO1lʹe6Mh!XTB}T%eqfƀ 77!JR1.v
+$(?[chЙt^AF&扝tHg ;\-Avr4C%B 4t
+qc"s ekrE<peYѡ\K<՞89mm#$,2ۉ/jP\岼{Ky@/T?MPI-Ϲ"S]ZgtĿqhƅX&>7~F=:j:.!H7cc]  apO/(Y+f AU|(]fA9&(H,(,YʠL܃1-YК%U=lZCв)x7^6 x(G/!""UiMjn2ޖ:`Jĭ؀*$0˼;c˽_S$r-F:V%#68bFEY  eQ(#Sl}Z\Jы>\,4@n iu>5]ON._S2/XȤ1끒Z7i]z$
+/h]%dպpyo|S94'DYIzFs2~ls>c[G5	?)^_jy^3y7!37R "~f70T誅sxy}M'#ί5
+zD|iڱ@a	)ky\J5P hE/ւ)KԄ~$Vށ#޿%!g$F煭    IDATvHB-~pr!lBa9h2}C X
+A{@P\}PXW-`x| 4g!N mOnA!W,Fv1i.6 -|Sf u<Q~C~ry;sn?н]P
+0j3s]Xt_C!6ZWP^^n7h4ǻ۶m?~Y8{/J"s!b G}y.4<wd JӒEH)}e$CViҐC 6HЙIȆ5TiBj,@1pR$TTfb0VFs#(6"@AhԖ2kwd90>YO:{&nl||;ZHѽ
+qUEQ'Ӗaa60[]G5e6'-,ejb]tWtn؋j3U8wx6uNӈ [r|&=(`j.蘽Qwdi/G %n˲48 M1T]-fmەTHq>)o^N1ˡr[﯒πQmV?P@`"r9>mnU	1N& j'?C?@cYpWZ( `[2Hjx_h(2<S0LOǮjwU}~EHm`yIF%zwO1mdv!;t޲ "iXMz"po%∢sk#h?`7?QS+|tEYZ)}cC9|(>=L{7Gۊ@q_Hp+O1
+8_Rr#Nqf 2]i9ٶUUK5jF}v|RzsC/кCfR5^k5DeyAZ(G0RE녹Dmb@Bo:Hw &۷Iƣ/v^4`#]jVT2q ӳq	n>Qoi]m=Y֧s'R:iYH
+FO 15pD`!m @@EA0ZUtK*h Է|4_B)ZK85x wcsE@d2: ݉.y0[4b/dԛy?n}l赋ctk0Wcѡ==)#3ݛ W,;#cyW޿OMgNVe˖?#6n8::n۝|ꩧ>_yr50nݺ_UIhvS[H*`ƒL[a 0lA<
+#m	#FJmxB}c(ѹDᾎm0	2ڠL@fjgtJbe0d͞heDR #hCuL@-(R
+pOcv[輅)[O;tWk35n6?6϶rKv/zɾo{&!NsaH%D [ȩnJFvtz7	:9#azV/k.u"c^zOwZd2be~B{Kv
+;ݹO3̙h4((Be1$.&H`L0Q\0" $JH(k49s+?Uu¸>VkWu^znvԎ֔aCJ;5hd^5g$VsE؈}/KܺX([#@@wXIJrVRYV9RXF~j$@`ccrD)kTq5V9,6V,
+M*l@XTcXʞ,rXȲYѫ!TϧEUL#η/0R
+r֗_3xu5ű2^t3;:&ԢIMѕ2V
+n|`zoxih@,^_酶F=KO*u8ڶ>h=xܮ5,?qxK;=W4/rBJf3yww|.K5"|k}K6g3azqK{uO1btvaE.*X7Z|Ưj|)TyYħXJInR6bj@NK#5d U>k/./s\_
+L+F)BW,v@i3ߺ~}md;uz`pLW;ׇtޒxCR@JTGg	Qxu(w";) 2`-e(MbATBZtuP@c<A4 4<y8:ѲH9yY~ zz<ؼPnY.׵׌_p	3
+o]~.re<O/ddҕ{vHk']0;UdrP?sU?v[o߿Jc93/2u;wo+RQV8GݏiW20}RI85ؐH͞Rk
+D*TU7z
+fecBFAY,ԨGP7森y#~%E`EdJ|M;ڟu8j-J2X,W1:l-Q*:?l/vM%$?ݸˑv~ϖbT
+8cm:2S4C8i
+<WxlIaABN|հ_Q4'Zt9.[艉^~r4F:SxҶ\gh+ܵ5H/=Gjo ɔ&lq9ˌ>MdDE
+muxҨv|ZuN@Gz=6Q_@ݠգV >RKdmODW) "UБ^bk3k
+CCH%&EVӠK|cLԌ1>+l¡Yxj)쳮sUl,WPV=̔O}a~A۱\Q~iCoxyo|}3cK{ߜ'$^U'mah
+J63UKۡR$DH*.<q EsqzN+yE9A6T}b+Bƣ =]ϺVHzO-vaîu'm+;_p2B畜o9i$EHV>%W14?ގ_h`b
+J!Vh\UuE&M:0h[ DS
+Zx+l%ʴhn -Q(t䊅tF5g*uiv:!N!h΍s͟33w(<b#S-h-	n"A(1/0
+#QXf!8yB4T밆a(nbiYZ]!3DˠGl$=a2_Gi+5@;)/}y;LKj@e<m	2J/Pd{uQzi?={ &9Ɋ42eQ{/lpd~?_=w׮]wկ~5!{x|kN@W$
+Al|KzP.m,{gU&R&o[[gR"䂚}{7{.HTQi.AK@$oBq@(ILڠ$tEzžy/M@潃srÜvvlp퍍և+ N5kw6sF@#\
+URkswzs>v6OlH- cݘ2kRmvȒ<}8rf>^3F<NTP6vHr3Rj?G m}\r~٤Fvt5)3Uw3KiRVZ=1WΓp
+!1ԝ+9<\MuD'tq rнIvqCQ[UɩF^j~@VbK?^$ؤãlcuveO; ++, @K8&]\NFJ!e$Ne],rN;;v^*y}{^/|1.W\ --q_<|P+jM$|JF۝#Ot6T9k|-.ͺY1S$SΣB\1můE;g&/(tޠscޛ-AB^Fx6Z|Go߿4OV:$Vl8=wdݭ-nØkw+dŽoJSvyE:7IJ|*6\7\.,&h}d/&%2lg0r>Pe$UK닕
+$Q$EBbϺlRvx~-6	Wo5MWK_QEoZr8{Զ,W "ZFwhpݽ0\X%XUt;w%.E7"ECFP=6o*J0<Zn :B6wZIvf?}VY"_ϷnړٜWk :LԊS@+](㗆ٹ.[[{7Hdg+|fc',|ݟO׏H,--	@w}h2H^10e*e/8!aR-)M*LOX{Gw'bțcִ=J_ bYV 2hdYoN$=(%oޓc3997GR9CLbsJF
+o]UJG-i~EVg{·Jm$a Cq3Hy6mO
+4Gה0#>))rMb5=Jdz74ҍJ촂MNܕZY3w~[a?Ed'_ca5cJ'փ -1@כS6%nd:/6mϨLu7kɸBײs<P *t!v㗥X.Ejկ0{[Fmh#1O8EXF?A;A2U6hc4֬oѠuͺMF]jo_MyׯaJ_,5o<|K|-tvJoy(=1sZkosӳEs-{*Y5ZM!}p+Pk6k5ň֤ٞO[JοpP>UeJBwWW99;t`nabFǊ?%
+U_Xbrwc'xعMiK򞅙8|ZwpxjlKU/?ກf9e貹tf5s@Yc6*'״lnk'Q(Q6ɾ,PwT$VerҶvf׽Gk;(!Vת_JRP(=OYF	5#Vp S	H0f"	kJ 9dZA8>apQ	;)
+R`=XJ¨0zeiak9	X[߽70QBx|vg6/0{n&mARrdeɕs	{I&߱*%@l̄T_޽K38~xkNIT5L`sF_v\_ZHԌFT+[yӵSv,o%(O2#Ȅ.r|ȻPc^\-E3dw.x<Nct4k+xm?$:w׫="0`XlEcۿ(tkq66%Kػ&S|kǺ~v*	BjN?\"%m<23xwLQ%:$VjE(hLzɉ@ɲARI43h+F쇖SP˂MsU6
+#q#2jtZh櫄ֺ֩u-B=I&u6u	I
+iM:k
+D3SjV#uV峥})~̌سq!N j&~O,6Ky$l!6߶i;a~g<D.W;[SDIq~H
+8%\Oق+k#OƇWPFS]rܲH-mT
+9Tٲݹ4O6sFrdl_J7ؿYNO4ɵ4c@sig)=v̾g1=cľkGxryQd@rTCJ h|;!g'Leܯ6WN_o3+Gs>ɷK*έ۟j~͹yw_b˟$͞P?=b35D mN+=WZh;nꊕ&
+bUXp3WVrdEIzViQ~n>]іR~NI\(e a«@u
+NԦ፠^AyG9<y=D;Q{)9ds%30jH(Ct1hP1 	8	'p0+Xf   (FcJѝCy
+IqӘi2i;D<;>L/՚6vl{^+]{yP8=ǵ2Ӿ7v_	"O0\wŷzIvV*6陪|O&G}\bBUb@|LPWx6ݟLu7x^iso~c?3a4I"h6POSRi
+,& 
+nvzVٺӳnr!-^'Yl_"frϷo|d3BU}N|Ɩ,8}g;:潦4],Ͽ ~GÓh
+<DeG-Dm6bMm2rv O֚kX.pH-2B.3-BY}M*<Mϋj+n#֓XeFOL/x`|фs#(?ӞA25!Q (J6;ˏnI:lmܢT"5eOX{;ZJdOR0#п8gP$'$R@"=/r6ccLa*e{FNtF366	$*3}1(U6#@tA$֕
+97OR9nn(1(ԱANiPj,GmBCu50l2GYRAn 
+OOe,?1ˏ33o	5eaҥ ~Hl4Ql[je׼_i4j͋֯|І֏ⴝCuQz^5	b3UUl`{2qkޕ /r%Ej]e9ҕ
+_LTe"o56ZR=3 $&)D( $(u~_2|?Ӿ(?1vǸϱd|&ϏMcR_Wʱ}t:3@f!낻 DlGy-G!9"9tOZl?xA݆qèKNEj#9-s jr    IDATAh!!O(B5``aϰܴm9):hL`_+R^|C.p~0N!!E 0bZPG=0{rF"%=E3x4=^"V.y!Y+_͛7o~G{s`)[) %"DKM%ʬ3%_rrh]++8#q4E<C;~vɹzXi?O.PÎqT#&FhT`J9^(z
+0m8 ,;ȺcP4;pT
+0vW~l
+rF)I9Mi$NtoL@L$z@*[M"XOeVr2 I2m[4볾Vx/mR pmg'U{,gy,lc\pH
+*ِq]EZIJZbCB##*ѡ۸ L /Gu(r@Vu/ѱTǉQbA:4wObBыb0a@HW@ucd@/=br5\trMٹIkg.feM?z|>P<@i:_B4!Fa ԏrDz.Ps0 EvnGľ#ū	ZlvFJm ¦wU@#t]3ZU>{(6RU@Hv]0HĚH
+Lv Odd0^(N$7n"tGٹy }cliЊgo'9|(?@Z;~eU?u_';5Qn|:WN>A_\b$&T Z6EaGI6l1Ax4(g촚&WLoң_y-mEDiva<8={lSa*d"FtP :{>uȖ`$Q8|on?g{@wE6BeoV#@I p̠
+P[hA&H3)Z}g7|v(	m4?|0N$O.v<Tkw߶zv?zm&Sw-]fɝk@dru,V3xhDqҽKB/?杙l{JL/:swpONȍX`$T`fOl*{[]ۏi~6^8ȞqU\nƯu7xPBg(7km~tz,Wss+)m%ۭٙs<N)9aITy6ʫ0꫑p*1GCgQo[^5
+&nA٠ hb&K0ǒL͵·>?|Q. t1\ 31
+FT@EOn䥀IYl΁X[Y%'"oUU9UFؿ?WW&\6EcduqJ'iWbgGX9TXȾҙ3=crLW/03j@Ah
+2 SR%:B	1^:!z,ND|m)eݾuG*.9n\NQ+"$\|`3%cZBt[0=,
+Æ;jp4%hBP9>X+ֿrh >IcZ;WϷok<" JsNC̦E6
+/a9 RV-C<2ho>tK劅ldhoG؁NvfnZvTUwd	Ńs!!4S39^qg'/v7r3t1Jx_׭2/rI'=c!#Xf4V!c[aQHN=d4bm'O©AI]6yݯJUUiU}BbnB!Kk;kGFoA=v[sc~itPuP#@9G(!@7x19s );Eh|F24a0C+pw$i,AP7<]4/*W~"%d&Ǻ%m<02z"Oq{v	I{_k$yw[æb;X{7Tϛ.xѫޗgғL*je?_p+_%[yM6/WJ|͟ԧ3<SHNӔ+r9ϓڜSxN*6̈́D*#ձ~Hgg5:gOb=! }юΧSq̤wXe;[Ī	L	}<8QCq^Z:
+2plLT
+l'PK] :6*)]r<+rULI=JPL:))Һ'ELreبK4I ĥuҳuɹ=Q@Jw'z)[/5T uNfv´r =IigISMĪ2MP( 1Mxf],sbvN<Es*'+z^`,dM[?6ɏVȧ؉H_)]#.5	x&%|Iv#eEb]3o_ic)zCJ5Y?1?*_i %^$={~m<84os\GD0y*ୀ7 5[P8-(\Pb	j\s] ]{w}Zࣹ{[lhN>whϦ5hR3:4MBIVc*Mm1UI8d1-!'(9߂6j4ս[6nN|E{kο^ve<k1R{gr@&Wf]j	vKB1L:?Te9_c4SCsщrBYZZL*rMl4EDV.p6A*xƓwpwyM4\^ϻcxFJ0vZ>moaGa P=*CaO4$a= E<
+@Dބ!X5tv@&p '$Bp Ru  ܀("%f濯Q~Z	Z桙/ \60rqTooGoۗj$fti9A:$n?˞+UŤ3B_
+9oZ>~I"!fݝʩgX{~O|/~W׾7o޶m9t;믿~ƍ$	yqעS&wu>lW'ƶ0XL@IԊ_1[\N]TtUsS`}?L/|^x_u6(͵mQCY*!d=D-#ExI4kPz!aMp! ;n?G{(v0f:,#$ sbyIIMHfr[.ec ldx#KKz~~l\Pͮ
+<O0)2tUMMql잊Mh-uLfgE*ЬIW 
+p	J8.]c^&`TF\v]y#&h51)RW(#bML*̲4lց'q//$/v*k`t^+hm)Bo.<`dfP wV0GaNAŠ ɊoB!d]0;ن!{&0ΦP(9<G^YcͧJaW?NW1~zk2([Ǝ?iBUKWT%U5WUJ 5x/hi?yn,:_3Eּ/V>]U4L6rv1klz4'XZin:ғ+RKp6&q&L6;hks|5xG%}={χ>n(FLm I^`O>
+ր96"@!b)5Q<J
+F^8{1φ{ x]tL`ߎCPitB	8e[_s
+5pQ24Rzv-s.)L/$$A&6fr`3&	ߚ$R~rK/|sͻ#ٖuǶYպWu?䥩\?L鑬37}E>7=lRJkKOpҗxmv?9ٻw]3<wyۻ?:UZ*qfء-ާrUS-;&fCūwUS:IT7˺kVk2WK:]/I"nb7̃AodՖp	J@(!n*t4E܁=ِ	(ds x4سpX]QށFvjf1L[m(td_ N}:.6Q
+#	3ꈡHU5H4cVzegXtn.=mtD&kvBU9;.	"լ9G떆rH$FBMUn:́>T&}w8X*6=Pl bgi@hLfLD!IY6y|O+;!VUsO]|JkS7R-;_MfrYx9;ϼ{VZqXbU}l MxC1|6UA%X!493g5o;0OR,GsUcb I\˂zREM*4ewA"LyMIk\( :޸]!Fbv/|s`2L:ձX(m|]vŤf*%gz$ܟ[a#7D	tMKã*Ռ͡r͎X/S s~B/'jcoڷo|߼RT.K͎a"`y596=Q@8߽YuxkAtC4k
+a*{<Pڈhb fw:,<(>(ߊRA亏Y6nxgI\J$9WI|ضR[l[QB(blm8aíJ5
+d!2]5^|RCS7q{1Vw*vK_}峩3hb.Yՙ-z7m$0M'wsɩePР򄦣]J;6FBA~ß:ZxZb.6jm*y͛I|FIIϴ'J0jD=d1Fe-*a`΢v
+I>@8M`e1V?TE4{љe1\}7#Ea$MH vF:c`Mz }Nt V)S.ktمuĐA@рIBYdD%8T.˸ܖ=:tLdpzk@VHMB~B=
+JAZ`jg BoYѣl  %̤9#%Z2$4B/_/Q2ijmJUgZS;ߞ[
+z0mG!sh­r8hBq5"
+1$3'vb`.t
+@?lV
+!#:$Qɨ* Ќd=Dkn>)T'M	i|āӸ`<Ξ|_]zÍF)k$*]=iE鋢I]HU/*
+ĺDU 2(B%=RCXɘѠVr@L*"6L3MOvWήp#9o]ԥލUi~r֗='?hò
+5})ћ".[wckCڂ#8F'_k
+ѹ&8mEuB/q;S`i0,iBZqh(ZO5͇Cg26{wzfês׊^Q̴vk(ޱڢ=Sn;ML=`%,֤$Poq&[(;_]qN8l|x{{??mIp+~߆KghEٱcpηnݺq?j9*CQ>"ӪYwj7r.Z?n^h|UP56-T44?iŊD%)RGDmt˅w9dSz" 0]8A/rzO.AEhPgSc0GA) %1c:ktHQ8|z'ÉBUnv$tP@֙0Ꙗe,H#U)DPF>Rb*SD=j4Jrvb34(R iVt]O8V'cvJt(H5KsaVSCݷu-cȡnLHHtf<NÅ<RUr٢glk=s7,$ZW&oܛZ{D bM.sg6_((((7
+Al'j8s(ƨ䞨(ŊQCQA(SEQEu_fk6G{4;x}\k{>}w>~Uz0,0l.0j ZBeT4.@2t
+
+@HO 1lH02|4r|uemI8*IAmjs(GVPR\U)Pڻ^ĐzA~nx*Se9t^*S9ȑ1$iV~`Cu.[IcY]``ocOBi Fl4􈱸Z`eRBiVbPR@檴?|E'eKf\|ucbC/	rJ{V#N/)帐+;k~rXK'vA PTV#Z
+3gy?"9@q'1xW=Pi5^~9G0|&5̜"Z@#nPtaBc?J9DiZ'*J:J\S+AIHf(kjy/z#wkm,a<pn|-AgQu7L+cއf½5ʏЎޞW쌺s{+"Jg\E g6#R@)u7r}s/ ^~9MS!!R*$oeaP5N:VZ.KVrc<ءXlU}~~9+> !J5:;߉4
+g6M?pV#u@î(ß!Rh*0+!C!Z0Fl+7`U!6LORb2|o'|k\;
+ MH%:YdJz{9!V:ay,P"@˳QWr;*QPwsUɥ%>UC"&JT暴&rJ0Wp3zI6ktn=E]cUKrIKrWn[ y&[Հ"VPwey`1V6RZ)5䆐.}9Y&\+̷1X>uk*B<^J£^r %p9a,ӡvo    IDAT<fBt0v6*[Q90.X	 X	1. `34ك$c}{_~'SК2B
+4H.q) 40UU0ᔘdW$=So=|{֠UcO+|dY+,gE&6ٙ\%qڸQ2$V>TABUXn` j2,m嫊lXdM&[g'4f篮1p$|GA-ڨw HSc!W0X] ([U!
+3;
+^F2l]d(s
+K^ه)п=d- RuNôaНR}k'1zpJۺye>A| _)+ћ|l&W"ʽ䊩IUo??1G<e>8e*^7v7c_K<5v1:Hw}^qZ^x#_T;馛>رs{}x+:Ӆo'jW70F[7<( Ow;=qtҞi<U/uqzaEG~^7=_ TV?)Yi!
+˕ў[E5f!ct0*G:̅Q:+(/8~+ &H>oͧ5s/hv>3$Bs}2%B@zjqD;2a0 @r+|Hg'-aHMSEj@Lh
+Ք!ŉ1P3ȲH]cē:5ID}5(ТңdIlRb0:zwR GK8$8JKO"qINt|k MPf<?Y3iB[JUb}a.!f{|kT	V(U)8~ye˒ IˆV q4aوHz0=hfP\B`px5VE1;|h !:O ۉ~f/1Tv#}	#Id2ױMp>j4ydhe|6P0h0u
+
+!Q4uW̟nr%Զ z mC( d:@BMsCmh(7ҥ TilƇ*aJX?thpJUT%@쯥JOL3	@
+A~M,Fy
+J a(hXUGa% 4t	i͠;	D!/ҔֈBGC4,8"ltu}t'7p7odÆ	#O49_ɲ%ޗ=^FI~H\!Wj	5jebSL?|gno!0f1xw&秶Ɲo9BMfb-Go.]7h'}19~Cr3[>l4)wΝ;?vxы/w$bCBՔ;ɥVx(jz*H8߿ĊGUR0.y%Cd٩kDn:'b=4!C$@Є]F6HH[pׁXШ
+y*ڠ<=ez(	-] ,i`88WESdQNd&G$udz5i2cEJ΋ތXC͟ϣebWhBbBJP`>w%1t2-HglgŽ)Sԏΰm)Ui¨On'3t~N8a3|:esNY)M.LaֈꕹwZD(4[	eZ=@RYחY RV}=l0	!3Q؂I^9wj!#y^.T4aq^qj7Hc'taMs&H)d(V4MTf=I ,XNS(B̤:UU
+mF$`ASV1-0iZfʐ3ЅlңJj(}II5:(X?ȴu2U0;CiWkR4Tla43~}鰿4_+dlYBGЂPLދᡣmz925ΡA%S]d  eI27#Q4,E//6\3J;rnr3SFzm8Qԥ8?1A~i~gBNb=ѵ]َTl>0|g/;jik6:*ueժ8'''oa{Nry0{wHŶQr bv~Ni0w|u?L-,% dɅңy<i0h	2c&>aqxc)1/,#iv)Q؂d#W
+gCF pN9B}G ͈B:l>z{ 2\"Κo0I6F$*y
+>fVq^Hr ]5w=UF@u%r𩯴.sYNV?Ynq6U>4FVOr,CD6$`	):4%\jD$$9g.0@aM(mM*o^ExTj3Az$Y׼%!hmT∶aHi20,pӇYB *fFA>  ^@4v$d~♐]pO t"YBFP1HF`<?WC1*ڲk3ҠC	0bf'f
+P)úSeU->:$Q6!ڥ@	0f?N$=-Hu^a/鄹g\eu>D_V*5TO8!cMzLL
+~0?|>kWnz!VԷqZL8yEMM普 (:0ժapYzF(]AT;j]h$(n	t{!zyQ21~9 #Hu!%ȟDtmun.ƣKKf0%mWՀβS],z}]'!\d;윉d,jB[W;F]J3-ּXHi滖W~opĻ_<7tUp5\/ܽ_xK.k$IO<UW]uy6,J- *Ywr/<qz!gEKJ#P,UH2:rCwk[ `٠hԧ"O!GqqR Gp* P[ְ*
+!i̠r
+2@9Q:ѽԁNkP!5Hwr/b5iT15 ~o)F;H/5HlJݗdV	uÏ,*
++CftX>L}6g&~NK]K&{$hťZA"U=NNZP%qdU\CO{d2]!-8Vcufn.~:PG"H6I^-3񃑜Rtn(&K<  cíGJ;&;egUSڝ9GrjR0(QcGŊ0D=玢o҃L"y#`.Cx
+{P0GA (*  : 
+gap@|$ː	
+1\@Єör|͢q$yV36`RecQ4J|hf @E~ȢXYMUFҵqUKs"9R--r\)~ìgLbPHn>#GZT^nwE3P u43|[#Yq>L&(1%!ikWͳs9W8I
+#K*4N.>Q:@
+FNPH;( {%Q#`H8 ׎R /8fD|Y#gGa-IT'=z8Li+sٍCZB.WdIg098X8T `>Z ry;|5#lf(VW;x$Y'D`=bUh;U{7U>%ˎy?'i.55t:_e;\$g>m۶㘦}|3kqv(O7uhС֖֮ֆ@ixTof ,?u|8L~n	*\F Q^BPY 0G:w 5P.Z ?8G\ :C$܏ot(tfQ,}y	Sr4s"2]S&:tV0/CJL"[4^M/)n,Tj!2M,ӽֻ;j&*L.{8l4r )D:1aWQPZfzf$IG^,yhk=-K4P vƞUR4%R> HU#$+8_S9m䪵7eii!=)"EgBaWsp"N|T^*Ώ' (w@@&~h@N 
+xF*aH;ȇ(N@+!#=.$*I\Yl
+,C9fЖ^e2-mj#1BW-te&rme}I Suz:b$3`*k8le*Vf>[^<pxWImOLT)w"+Wsvap^Wle=Xߑټ`"Ū-w60Er
+کh݃țX
+6y av T8M\w0gr+G9hAI('W9b)7 UMǯ-C|V~-7g>w }y\ͣ+A3jEK\o3!JMF[4^a#Pp^QH҆THl
+|9߽b><LXq7^jr֭[MNN~1x,nwB}Xn/Uv̷ߞ-.*x`&錶[-a{߿T}0xl/1T
+P]*!ANiG)#*pm=ZHEMfFAʧZ%Z!H1VAl	Q	e1:XF6{TΜgGtY%a8/cq[A2)RU'تJ]k`l̦eC5pI!Q>gU&% 5nXz0_ȋdF H)aG?U$B=G@MR4t
+9Dk=Ր:t-k3|lzNO(Rʉh?DX>uӊ?QI$nUlU9	HH0Q~S?|cOHB @L)+]RZ)"Tj\tA"Ly.Q@#nv26<w=bPAǐ}̇}@?"KC2@r0d
+ʑљCa&(Ńw6ɕ\)i@$>Pa#tԜ3:Pp"8Ike]0'9Q0KtvE7RU
+$|y!̴(1M46H1 !2S#X.ZtǼBU"Ѥiq7S9W3	lk/-hְx#  ԷyPѰ9DQ:y:{gP8jt/
+ߊH^IF'@0'h	^<<Bd,݇<0lC))l[.J5vD2~6L^g]BfgUƯ/Zw3&*1k;eJm,q m8Ɠ\)oIBW8j4J$ lhCA~ı_7٫"U	!>~p7^{oWĻi~Cr]\.o߾}{8HEKs棥-Ivee/b(o3H[5n"ˣfyX#V@6A6:i O#¨"mC]xk=$Zс;!݇>*E, `{J g]$VcGC]rM%xP/&eoYq0&O 00u[)&1fdY=H""I)a&iYEacuLZ
+2ݷHI!)=~zYMYͧ8D"NRՖKg<XNz\߾|eV$QD+rI'폘<T"D}n	BTikpơx]dsE
+hO#~X+!; хS E$~ν`g3íAIx5%pGH?Lv=D}8w|Z' cȔ&6o	eDۄ9TlAp"|~8QGVDcOR3ԤBQ 6b!Ъd_I*5Ӡ
+:ŹtՄA@
+(?YisvJ295މKƪW&9 =|(H_ađ}hcY8X.>5@$h? l Fx' b0
+c珂D1U!~Cg >w]~\ީh#k gU/)JmeZ$=ѶN?8 (ᰃw]m<N:TERrU;Sq?KLڦD&rrto<m/ctn۸q韾=ٻw_B>{Eݻ/2^LG?iq.袃nWZ.A(Jfh36'#irF]\<R7Hie6=Cbeʐ("ۨS݃z.+,(-Yp a1y;Ԃ"(?@eCy 9 	k#wAK0Fѹ*h@Dh4;\8
+6CN'YJc&n
+:NȂ|ؕ!tI	BeZZ-%`M(:Ph96;Welqb:deT*da@,4Ǻ3+-	ch*-4dǅ)*s|iv77·lu,'|{ñbm_5P0zU}m>`!ĪbDq$O:Biv"`r/Ct 'a w%0W? PoURТZ0BB[#9^Dx<QJ${YrPexV3+OK-]i2hgP`Y,uUoԡl$t2i#[k*ADh6W<<    IDAT$ZS-CY]쁒e dk5P@&1z|_x6SJ!Yg7k06K9c+n!LT,0UwNr^iXeKmpNt}:PȽ_C
+n!M0<8U~Z9p@MuL\g
+E|7SQ&&d X)]^h3& x8k1r	q4J0^ΫǦ}Ë!$t{-9qz^sZ7zg9?I\l0|8pM>i;3E^wY |?<b};Scye)I@jf%\]7ݫ^zcoXdΝ믿׻eY֋][nyի^yf۶y{?;;m۶.y?vJmvӟ޲e{ޥ{1gߤ	~.yKnO[^08
+m8GZY5KJAWbۃSFI̡gP)Ța(l@i0:$pVB%0FbP"JbRK< EG(ws3fគdd~ kG ]@0ܢUD+l'WDZeh	.jeN}8C%NlT*t5c?%E!u+-% X"&D` tIb($'ϧsjǡaSX3!4+I+)zɕP*3䧎ޫCifJH2RhXYO#3Á_P/
+a8UVbxa!`6Y5-@*Dbs6!| 4Q$=Ăl#|}Qtw3<	ì(dsp,B	Z]NKNa71"e铱}h(sLQaQdizT[t(,t.lLyե*l}UKPUbĢy6c̥l j\|^,(c DCqz^:VFCǼGѽ/)PR( @)%hpːA	u®p cPQ<apOα%)|h"CP	=f#]Fo1w,VyƑh,gۼWI?	5)TD64bX[rbwUrݻ9-ط7[\4(?]wj<)^|0+,v(WtsGasjPYQ#f37Ս3pV_یmW_}uP~Sz1p{enn߿駟O~w}_[K_}y~BsWm>~fr%m@#I26O _Z=sY"Ig1`DόN+h2XEEP%`L@FKf.E1ߍ l=]!Z(I8[F2C\9	H:x*@Ff*BjSwa4	f(Ց%ǯoh&NTY5s|"lAc4mO;ײWԞYK֐Uw(VjlkWu<RNtTeXKbXQZ|ڋr7/4։C@zr^`Z՞n||1%z|Fb_̸thFͦrj9;!rTp5Tk}/<g'7z"/l'xqǝkRӌ͕(M@q"A:U a	)
+2Q5Xc(`Aث`A!ڐƪ !9 d-H"=  / k.Cq 
+}&Ke l({YG䤹x8eQAs/Ur~Op'D1"(do-fq3ȕ&N%Xs4H%f2	ϵ4h:#JhפF¤ @-GkF^Si)|-?e;6nzLx`r~5L)sqWFPBq;  r>sGN"C	85OBI V"ԵX{x0 FBŐ2u/"o> ;`~  dM̐H72be>~`PiX&{6rJU32tnsXϫ,6HX*nD!D۴ʩ\Gow-ƯTxMO>G";S뫛{뭷fY6::zC:/ەW^/ܽ;^}1m||o~?Oo޼gy;wꪫ<y7y{~_7߄$*pc/7g\߿U)3ƯoS&=E\eSX.kOyŽيaW7fyC+00ʐ1Ț]0=`qX3PX	y'1.,(@({#aF$ǃA:
+v(BvwTLxDXH2ў)mw霁Mj,ѽ$pQpvMЭU6iq@ޱ]KMDZ$k9X5cNzzrkٹ+؉}5􂉂ĤREs~![Q烦(J:2i$Jp(6HVs (yt}oo$ԊhUJr	](=^8wȐEH">i HC(*Pimx<y0y\PXE bp
+Y^~aN [B|F	F*E|YF	y(Dt G2aq]N@w76Si&:0?RʥxBYCDH7יH<m*R=b=QV CNU*l(*_"2-R-]J:eg=rf˱ڲid3^Svʩ@	{G/ٹv+nn.{7ɫ˅eV^Ư)o0mQNmX%dCEdV	ZOpg,$T@QCz1?sA=~Ht)pOO qTΑBŗ@-6p$s Ex D 	o!DoJcK[}狃?7rD-&zV7
+|fS9=+J]؁T'gX~4avzQ Q7w-|0qo~~o4o=W*\r>''[n_|Ϟ= 6mt'OdyyM7t7zݻÐR~^7v+Wo%9WvzXi2f0WG!WEw1D='&1c'!Q51~2Tj "n {<Vt~fL :da¬= S7!6{-t>T^Se$B1d<. 2F(AO4޶,1fj9]EUeQPJkBƋ D	E$a$FŨZ &UTIUTw~59F>^$7?5k}}<?gٳC߾߬qV[^,6[p<IΠOŁwɑ.?#-bjh]+:34E.wf9,JpBivs-Nê%-L
+Nղ%{\Dͮ*Zo6ysyP[[dQ4,ٙw,ڝdTSc8K:؏O).9V=*Hޓ@>½xmL$:"_'ݠy3XmRѣUG+71a0>UEpWP6YqQŅMww杳R$U)#1[́٘jp<!F5EVrFTO	c'1YM4cm<l&Tf#HL1k'òUi/+@<tN1)Ps?ùn}uv:(1Ejen}3ewz^ލ3wUInH:2%QمפLPiaW	KJ:B
+.&բ?OVU>K;{^ңUNM/$} Q{O^l~BL9A$xm&WI#V	4"q\jznmդs6o_"k'Uky#[mmG7לˋ0q~#ʖs/d3087^ZzvsJ87-ן9joϔWquݻo>vʫ_kvvX__馛>я=ˏ~Z/}K]v'?߾۞CMU#agi:{|ho/S\8YNby!Yp.$[X.5L1\dl,ĩS;8~޽V>;1D#x{0"8.8s	.иOrBa7at]i0YmPfSRny!#mq~E`?7ndssvw#oȡ&QK+e1'4gGמ-.VBfG\!Cf(pf-`gım[lFڝpŜl["XO+1N:{,ݰ5fJ)'QvH^Ғ˥zo;>< D,DXOX2'ۭNo#OX.E[I(atB>&Hw\1cGHA73밚H1^GA(tBPL(SyQT`k	nHԂ_-ur~lSRDمUk]?AIY&6azM
+%VXbPl!U5M[Rya
+vrcl!
+TnAja0{6jggqr望KU ɯvf]3Wu9|p:͙{(]oOF@2%9%`g,!49Ɣ+T.dLS'0Oaz-TPN(AAIe=e ^FGaL"(ev@8Ou!-k`R,]= 'R?3CFwy\`?Pu~z6&)wF:<=>,*|5d/)e3)_f~Y( zPsSf!%-+^oi5w|'o&?}v>[WWWWWW?^[gZ>}iK)<x٩)ܜFUHRSX։ٚ(9q<+F)dvQi&e]^!mVq<qTfAbrKmru/**pZX5tFAAE=exªo-b;Ghh[?yv`G(*{z.LIe&d^
+.:+Dٮ$/J@lbGƠ*\$ufxHXhx9zizنobKr_LuZ<	U01>e	>=6\O{S5,^^	ƑHۖ̠+:fj$X+3pGG魣{<ҳgc~&ͮm4d+y>7^iΎx[Xv@:!p1YD6hZ
+,19d|O|Ő2 9MJ(kIO"91&OHbD')-FI"eEq@ķ.MXnwڰ88AS.S+bk˃;fUĬ&Fzư9,=O
+0)ma2ț(
+ʱ;i(fҘ)?>=^AiUGemR΄ֹt_r=Z#;i~E_~;n.jV\P?_ySY1RSx:BY7zS}^x'z2Ph\|`
+GM+)V|bq>( vg1/&P3ɽ	JK*5]$[d}n9,iB)l<wUO-Y~#izjsQvzB77Wlzw4QվwIO^Qâa1n;šBOO@$ecR. U=?x{yB޽{=4M~wu׾}οݷo//xߊ_رqou//|Gk7{[Ʉo-hO\|WVM3xэFv;Glg<"و
+YpyS s1UE2!Ynp~2z^2'ʧ)
+Dh\{r =mzex
+x$mCtȨxm[LݑEoиz.mMəN&P9Ȍx<96O+CӦZW9h&wZtBclriW|bʭRМ>UsS@LKb_Tԅr԰M#SHQ$߱g'tE<=%i+{g/iLյ爯$*Hѫe4oLhY:4IFH,&=f$LI,BP8U]L_Dv{ Q^Ə`2{?
+۸s Q֭nU1""OH;HSpaZ;)Ab_Rr1vQʴel-6\i*. CCW4<6ܣxJ+Ŧ#¦
+SMLa%4@*-LmLew
+ ׭9W7ɯD~bmn:~)Noů+w\{r)ReQt )b&/4@&YIIz]%܉#t`dDɺ(6֑%$'`1:)ddcd	v}ccEj'xΐ.ȀJ||HR?!%f2$,"FxpcvT"QpҰ!L9Lo	H?{ޤ
+HeJor_9g|I#QL<jJeU=Ivm/=w/~7_YgN]qx<vo?o___﫫끷mo~󛯻/|E]?Cqc*Qk+J# :U)]Gc_)H^    IDAT#f9k/6 BI@<1ҥ2K!ڃ;M٤<M0G.N
+q܃189h`f|gJ9FU$<D||ΰ+C&dH:)K3c;8"t?]ލA(1&nϺܕʔȌ`R$.91.S#sƦ:1@S\جؿ^eX502k-D(핢'P.[wCWxAT:ވ_h5ȮsVܹh߯u3)8ROZj`^.ֽ$}iAGN5:j 8jGͧ)p7A2#bwl}aR1YƟ17PIt>Ƨi=td=%hyp"!-GRʂ,OʃV?RnJ(4XrO!WTRes+ř@9@A ZJČ[ZFۂ$	!
+CU'J[׬JOO-/e:J_ɞc,ld*wL7Kz^~*/ԃ*Nls`s+ZBs~#c{HES4n9Fۧi{^tAFc
+9ʘaT].Þ#zQn$~}/	>#l =ܖkG` m0p1PAbv9/ -OXӄm	&y	~RL>Q	Ϯo;%;{uW\j?2/eG2WZMnpD9nZM/롟eS]J+.&J'^ Jcm53M||8~[tvW=y3`EO>Ϗ㗿23򕯼>Op|MoznE/_W]u՝w|f׮]_}??~wqy7T(C*x}Au4|^u8>P;1P e3QvZ0%tֱCn&bLmp광6NHt)dICx9",t`8#8Sդv!&{މ"+_It.[4;eN0K2hRUɲ+~)7r޳ٚb=³w+j=1&dbVlLrdR:'ͯțrz)6|fSz"ECsePxW<b.g29QPFgjr&UGf5H*̬jW,{PiҸQ٬zImI~I\q9M0nƵYߒ5멹{ΝQ~}&MoJTѦ%X6N19@gdCm_C N>*,:NI&c7(#M
+MREoPqgpgɇw
+EL(ڧVO\^/
+<9F:T"Vb&1גMʇNϨ=ĩffXEcBaFz2#[Hd1,Q:"ZpLXd-ѥQR$UQN6f?|RCs؁Oټ]瞰vڲOJ-{}|T(.}FKePxM&^̰$ĝŔb{přǿ|)&*_k-74[cn7y>@p8t){{.3		:kNL=?E&&Bv cϱ컫/Z\-\&5~[-Yjhm-Ov*2JL/uVܩ]Q+u7HGEe9kԔWF4MO<s?sDDtu^__/}i}}}oo<߮#o7(
+7 U!n{I_O>,hl,l3t1n(2:gz^{eִ;Gk/NG]`pdW#PiGx	nHeSP)3|bBB(]CYV?C"ʔx:esXZ7пtȇ8vL~!v5$i\W{RoLWIf*K+j̈r)gRG/N$f5S#MqĜ׬O7ĕglN,ĦȜ=QzMv:n1[=1YZTӖɤgm穤Ouh,~yl#x}()wԔw{_^ 74<u2*UJ=5J^sBD홏϶q&G$f8z{s@m",,/S;v1EDY $Odn^!Ic4O3|`ni:.19tiN3:NEDt2%ڤHi$#:xQ*d	ZKk?d[Ƕd׮e-+XQb6rEu
+1=1khgfR>]K2qE'00ѵs(n4SkI9PϏʧr!mG
+R~8).]Gv<1G3XDQq8}q$N^4<CYGW҈~^/Y	^e#򈩋9E)3 ioXUjPNj8ӤV^I!ToƚGhS-fxg!eXegp^EѧyjWbO!]!3IjM.LA>&B(a۞KBL&K_h|"MKn&?Vݶ2Q:\=ȥ(*ާ:e;t#Ձ#cdaցϟPa"יLtDi8:ݻ%/y	3?3#X;x}`u_g ~ [;	|SRLr;];jle<	FSԧqBB:;J#&vm[$?[hYL.atAt$k(H%Ĕp?&]C4nDzŪ1xKJ7O(eS&=%fvN8>R1QmEEo*|޼\dgoQIf
+&tG-
+V41+C󤡨*b!2k#.Ho9;+5PPGo@43 !*WIfTceut&k5/t}iqwozћo?i!(~eG*WjM}<wHAg[s׵kSyڹk<<eF}'>Bڧy[6Cs$;oR݃).nt2:۠L_$ʧ#nNYʥO k_$e@ e'X^:Be9R[AGdR6ӫ$D:ILbMO!OkGtI9udA	J"d&]"TNiDUs6׳#j}<ʯף7["^8a3yi=ñť?ܷpIN~Xpu[PCd)yj[v^oN_RiOtrzYI	RLjC9FO05&0%["&VrSFǔ]Hcߞg˲I(X/Hpȗf()ҳXMk1/3NOu/ e\:+x@wcvvS≭Mu}q_ZK-gA:>~NK	yUZ̈Eiw9PyY/GdzLOԢSh2<袋%\s>?0|;G=z'GR2;RDRmlYbۏt^T8r=lISX3"M I!8ucQb"M0LV7Q*@yۦuQD &awrW(b:*#tDN}tN0@m1Z|'@Yt7[ԚXVG-:kR$Yۀ@+nDQIV<04uq"B%id*^=cTع3aaOL	qEel}e Z;ŕ(P#:OyTUdb)ݣD해lOW~)).:P{/*R{
+ݔ('/ΊUSO	1΋CuveM+g},%ϞSocګ2,콷>M6uAʜh.QdHxHDg Ķ]^KΒVֽH2aZ4ar2z"GZ7tH0ykLʡT[eϾ'7_7.iZk-˪UeYL;e$͆~Atzc藙%d]9i'$&jʽo\F%eKtHh=DxCqq\嗦'r1N-KvS[_[5CIzQw󲍵۔"nyNbJF];]m^8YNQL7A_$;."&E:+d(LI=m\"w{<&0ܲ0)ɣ_UDELv=$zrLt)H]G8*&9E
+Nc8N.Nd)nV-c=M#;8x}iBuBg/_+2yh|olT$dhQfut_Ú3^;[Vkyy({ysUTFݛnꫯ~;w㪫Q⮢{t㍞Y!]JjY_yMO7[I5]`HdKTZX.ɘlBB%CHE8!n	"W%^brbD%<HEu
+ʧD蔤K@~tNsIq,7DHFjy!Axw4UIҫ䅍/eByqPۃᩥ&kѰLfjC.w^՟3ڤz澚h	&Џ&ll?okhr]̉By"e)LEzx~r.r#DUm:Vo~5nG/^"&hW~ͱޟ,1$Vm(~e<	*%c\dB_"ay	g.m5G.TA~!NE`Qv+*&v}$KT!-eNYz1>P$Dk#$CAmSYqd4!֦?<y:J^d7cmI~' Ս~iN[^oly$WmP,
+dd]
+$N[-r:e]Tc3YtOlrn5).h9VqqB]X&̓ֆ0PoM`Eǳl6+eu}R/Ɛgrj'ENkR"ΑI{۵vJ3up:swR9L匟bW	/R/ĪG'ߢPbF +Eٿ\ˮ\k1W (:ElrDv&uipIWIρc(ƴ.$<@%\$Acս-EF9Gs',9#ETjH-82gƸ3{V_Cy3-.P[spini^~lB'6z+L۩)3a۷&n֟?M7t~_귢f!FKlq8e5^7@YV5fp}6^GeQZkd	giUY?)!ڠvpH`Dx8ҦeBi`JE.09.tN$Q~ !!byX"O]TaY<Tn޴Tq*(WH'mkl٧^aᗦ<^81ӷECQ1Y̖DŜ6u͍ˏf&rWU-ۡLL_!#Mdb+7aK}`|<(}̑+6h?GxG\q{ɭ˖%:'W?/"/Go˲k+fX}ȈGX6nօ^ۥJqNhڻ":R*,ⶩLa{4RL(FOP͖v#O2FGq)SHdcƫHr(2fANH3?Y]΂E4a|m箼\Ljb骍ǩ+W-QT<]M8eiiĬ%>Ff4qMUf4r5]G^K]=7o=|8-wmEo/LCO~lyqX
+?"AFS	M⠲L^S|rI:/ >ؿ:0]?O0%}c	¢8{<t܋;폩}Ottɗލ3s1_lK}MLIE`-ǔ].BR4>׸U+$=Js88 ~
+1ߧ0lzn&<H1b$eJ'L+O׶tAئ,P6uaxg`Գx?T*{Z&L~4-fJ=yE\.
+`*GXkyx6,^v#GQ4A>HnRiq^/>^oRu]ys>CxM\􏢾{ǮeYѺVm`ܯK9]e7"GY),x.kD)YK8!v"B9D]tIssH?rd92<M9H(ـ<kt@L0NJe'vb -
+eFui
+0Yǟb)v v51!z仓*zb~O6^'ҸlRB	ȍC?Ĝ*Gqh)_zrS%nEmöpzLʢ|t-ܜ+Y$(͵"Zm,0S]Mȸ[Za|Gn[-9NvaCW]b[?ћ$gZDQqpZ4'L
+eޅ1nOoHs"^rcgtDYBcS'٠vg>FRC>}y29eF!͋XC=Oie&pO?TcKy3YBBT"Ys;r833q|eǮ3TdE&Z *ɍX7)<9.PѿVg2z3um55nQuVE~0zֵ\\Xgo]b?zG|W
+N.h_O:SUVį`U:iLAbx;]C1밦P!GgAt'",zLw!Ξ..*APt>>dA򵯹b
+E@8>QNp$VHC,'Fi%Kv_q	ͳ^mb-Rnna    IDATz=izRL:ßsGҙkNOcJ+tVUxthc
+IQc*Ouֲ%ElYYSޝgRN?o@׫VE0uO@]`864&OG ͮj`fwʜɀ%,!4
+ia{,-,]b; u:@HISc24NKkUi]L EmqHnI69!,6mXw1\ƭiS$Lp&Fcʒ`zkrmB)&]BPJEP^WB(܎y-S3#o 1/{Nr3YۢY^uSUJȉS,X{sc̓%i[TPSdvf얪'*taB["9PSA:*@ƛr0X;ßmnB۵OiSIuU$(G<ӕʧ'*u^oTߗ/+
+X'3Gh+ [(s2Y.&B$[ޛwuyctHB AePі شzmv+Эt
+ 0`$!3I3g>yu_eKVwzZuN} tB6i`U#FO5Ç	7P2CM'Cl A3]#PY&O(sn&MI"q3D{CnIZ\>ɞZrX2OZ$sa-nJؕ8D*φz] =Ht6VrW *R+[{%:_)#E~)sΣ$/5S:8RYFًr(&ױQq/f?iB8i	9nVHqO~L!Mvٿ!1hg*G`E[ƪbq輘O}Z@EcϧEX{F7铘sMX7	.@bͣAԔɷ<i0(& ȇIv0}t3ݦH(B"~ëVvƫg1QdtXk)e
+XDS:%en>"/gERRW9Iլ-';JH]a7d*VO's&R|=f]n׽us;gwo]z׳߽
+ƃS~a+,Vy_w&yicowAU0F1p"ɀZgTG,<*^&"*ĽKz>&eD'Q?M~)2'11ӝd'0G̜ft	I^p@~rGi"QYYwr/8
+w)L-W<Q骧XSq-^۴=+ Ɓ~D
+bEb5q#%ST '/'Rdݶ:nljj_/j!zrѬ(Pq[WQ7ZSm;W+|֤	/mw>>x;gh-aXIg4i"%T:8S$L4bt&4qH&V2&P=ר.3<O2ClC Ad#O#DDCl!(R&O7&hL<em?z=qw^c'o[íon=hieNsTp^ tU6RjHUE'UYfʖڙ*"0+Tk#=Y3r\wi=~05X(9pKSRy7@9iLE&:B~%G^Bkjqf1F-0\.*!bíPb-Pȶ	6QYx{9J>*;AI9 zkPc!<& 9w9:ǚe/Xz%yG>iO	1*Ů#m]	"={TǤeLT>$WKe\sO۩֏&s]+g	][F!)\U}nSyiqEj#'aJ.hfvֿSO~[n/y^/}KoַKcwo҄f>ϴi4Cy:+Jfo㲅kЊì>i}6-Ф!<._n_Dϐ1]fnqiSY"~In&yRe =v!e|qO)I:s>
+7 6ҠsZ4LjG|flTVEyhg'
+Ff.#V oNJ"#q!6u~̈́˼ThX?ef[0gB:4k<~,VyqvrYCFFz,ky9*:UOT[rl^ڋ^ۍ_S9mqqBMcwwGzW\E2MR5fv\]g@:l2$1,Tڌ0=sD>x­4R݇<Su%ZaU)c)لv0N1>v9F!XY=,{U4ۏSnX^Ch|QgG_d[D:4DO'*b.NA6՛&H?iӈ#j5q	OJB2J3QFLh[@bHTnąjw?;\lOWOIm(\/"D@_y`g:i(CvltcYvN$Y\iɄO3h!QYDte|xd%Im a>3REK!¡I>$l#$eHrXKPD]Mݔ}`<}R
+Iz5:GDR24¦H].ji]G1$<k]AKeB&gIw05ThdOF,!3J1v9f,Q2gJig/^
+L\c$Վ5N7oM%P6(S.YE'zmw{V*wn?L3oh;vV[q$_N:`ڣ62xK_c<Eq쩯a><0h3Y'aZ%߇hy5v]
+-&YV	cV#A\nN a"vi*3Lwfem&ٔ
+Dʒ(lR2%MFߊ[5<:jnGzO@y*##VؕnO͈
+pOџz%rR`gR鑪h6ĩ \algej;@|ތR;k,9rQQ:)ªٴ8׺SrvݭyGm"{dtڲ83n5/.^@}hͭve#%>шd4]!A:Dk8Ma#t}3s%Gmêf=(S&7Sx4W)<0i=(n!ﱭo
+Tw^ޒS=鬦v@E5bsW3k2f*N4Obz[.EYeSHqT'<9([M)ej4J-rѷ9b{_(qVyq}ȵ\ocYX9ݾ<n7ϡ^Ǵ<1NuS)cK [TYM+0+:WQ0'E]X3HN"Q	BXsއF	(vq h!CM70j_HwpOa&F{a0*$գw$1v`rbW|&*.<I~}I{J1Yy(0?7QqbZ.8_IeGȦ1͍AטYe`^hȖ-o6Twq;,>ϔeҗY3|eִvG_4RJŵgӸprdv>*Pii0ڦ`C0x &;tN0m&42[C$*C.j?I2^~f"-e&)2MO0ﰭGyy|TC-CĥzJ܍ʶ-պWG"%XXIO7/?W~"MWD{W=zļzED|(m0a)93uK-Ֆj81+tՖ]8[vX
+s37u'oՌl@RbA02~T3aZWla)]yR=W$j[$$IMF:,ljKLK>ɀ"y:GK?.#İ, &'x6B56YDx5h$P4y8sD?G:_!0iTBSe[	XjuZƠ.Nn+X^=}%Zmy"eDWo&"YYӖUm&E\)5_cɽVI*ڪzWU˸'a3ΧL<a8IlL6!2'h
+"k`UcTma8 e0$2:*ŝz5F1'az@ Q	TQEW17?t
+2*eaˈ`/?Y8`BEroEktJYB>*c0;@4hT,M6!OI#܀E"Gε^)DTG<E@k4VR䭦ܫzDuV)L͂JʙX9Mks/[.+mXvp?wxǾq__Ro+o|qƮi2&*aIuU
+͙4,)ʂ<3v9V,
+` &u(R318GtIXBr	z(ST*}"`0\GH,v!	73	.C;HhdM.+,rÐ;MJW
+PBWjWM1dϒqi>AYvMJ̞,[3K⟦͈[jhdFj"WoMqJ:~cF%XU6c_8RU+J;Rdr5v%hŁ~v3HC]|А#<q({c>"ETճ4_SWf0ϯ*{}L0|SY"J5"Q(47)=4;*'mweN M=9x@6Lqt<F;1ZSe$L&G<dR9xߋ4n#I9@
+jL;&'	hO7knQ[h̵9QQAHNy֢)]"(oļIE ͈fmu;g_PZz	-G.&Wb4/9w9ƹ<4MoMU+FJU&2fMe=13f)Zt\vfs0"ˮi&$^22t`oG$%y&Ҧrңq>	18L*@gE9cT/	iGH1g[$`-0!$~ $ŽPa&xWS$ϣmT^@1wꮜ@K!qz_ :wk\"a	~5@:1`	i8aKjWmhBs	К4{^{5u]TRkCLWW+{^IQWj2^7S}FL	?qI1~ܕb'MkP"ϟ'NxVuw_n.W>BPm^ڦ,<0,,dghnP;hڗJ2ED{X>~S'0]P98!<Sxs!^<$V@>$e]T!	e&Ȧh[HB<BW6Ki7,¯NnQϹ+ɟgOb|\F߰ &-sޟk؏K!a:*H%rW=U+mqӖs0ǶRȫH1wҼfZX 4kHwȖOf]1YMQrX3&˕[~̒nzK!ƶq&^8SwRdq`[EroӸ\6d9LsKldq]܀_
+{xjf\ogtHipk7(3yt)Rb@0=/~aXǰ]o}`AE'Mh,J<?u-Y8zrj0U>T:X?ZQ]c'0Wcүkq몆<G$VvdS}&frqÊye3>n~D
+`}m93륮O6ҕBn7b:ݐܝn]aSa;
+ךVzWAUVtP[jxC읧2di0|OÇ0l(U EE0)DSX-GxU}E8)G5O$;&^{O1T!$ybHvQAP
+	ǿr;LkVALh\	j _+>Dk~THŲanuֲ nWfZyNc&l%wrw0U8pj޲qp/q<;wTXmkQ97*o7"Qk;\uwffoyV,c<a2g.yBwK^J7A+ʌ"#OT5p*xU.݃arLӦ2KǛoNB-M˴xIҧ29G60{a7񗰂}tlD6oR;Y!gH<p43a:xuC!_U2UCTh,a3s-QfɏL׎isG\c-06ǒ4FlG;ˎ@_?a5E)P?=֏wM81Waz 0r-Ε
+d{{b|ZSĦЮL@ g4,g )fݻ-	k֑{x?4J(YӆՃyyL_w{Yqj48AKn)UMhmǾk*_[fgC##eSmOQ"})MLN39(d2g4(3fN~tDuy|#Y,k]"oQDkjKv#z{&^%OƻgJG^7,[\#lc-ʯ]*-ͺ(z٩R{[D0yc	8dЎz&AOcm*
+Ͷe/#5d1QŅ(ObRq~    IDATQq^zfrʟmOj2\غ?L^9ʮ4w?2¥8GZ@Ĵ:^a@SL/6=iF Ccj
+ L&&Zcڥ~%v?['ЊtUW2It0e h/c9}?A5AQ au*/ZĚ!wb4qO0[*!=Cp=B}U  .ӇA^5CԮnƬS=a	='ڸ[	Fu&S5s~)Im?2IUF6)~yw;\˝ʿ7P4uX3?WsYvok;7KQ9"v.;\MuG	~ѣI|3_şɟ|ы^ޛW&ӟ๟@<3F+΁pMq8L`w$h.2x̨0dbc)~8"EVF
+Z"y.1T4i]HHG^F1ӝ}w$&8 aIG%YU2pܑ izeAk|ng&EƤܥu%+E]dXRZVGQ~DkxASCpE(e[kX	;^U,)X\5#<O
+_g`Ub"%ǓTy1,qA~XbyQ2KM&?$Cayqe^HumQVeahCnha%JOAGd	.axe\0&]Liv1ԗdI<G>BA3w#A
+g&u)YD!2ppq0c٠ tIoG*h,9s-aũI׬ٵTz\sUk{Z,H[wσ+F:q/Mx=Uql)DYރI)MIqZ6vкw'ō6o-˃B?Y,\򫫕OV,m'*dA|Td.9i	ɐ6\R
+&#SA6aTN4NS&#eE:d=*M9lnPaQH3w@(T@jK%$6
+&{D9$=B-K8̾NŬR
+!vȻ$@cxwQPN{hE$ !'lDY[ǩczPP~|YJhiv|galk/~ ^ Y}K^\f?%<~9/5[yVqqnی7?hd}<o3L-oy_}w4fyw}[lܡ쿪U^*ᭀ$Siw	ǽ]oYʢn0]lߡBcxѓLКAr?=aobT<vH9BZ^S?M4S4O!qIc"Ë}Jmt2%hm9cum.4p?,DQ|Z\~qRus7-:ל9l-Dݲ3vܚnyn7Em+%f]妸boۢ讅_Px"X^3(MȓӋ63.RKԬU_''eP]u^XX)|8ʯb2ήmWԌ)la(yEb}RLWjlК<q|]MgnK`c"c2+"Q%Bσ$2E. 00-A'МxF<%&z8M}g8e[KbCvwHyxz7;+lWKQrWrQ{Ⓒ͓Q@IWthtRRBR:_-sc&[E8i`n[2"|YZ.O;NX|4Ο'H[oi4}Y95-izRGAx6Oזp|Lě!S]!wq{ ЊNĝ)ɺ>fG>.ZX\D8Dv*Gf6?'J`1dgqVEѝCfl>0س5Vc_$=DCp|Bt	%>D+&p*UA@)YS}in/u{Zik']a[٪_fr%lGt ?W\571`woKUK];\|g0Ϝ9?~R<;ҵ6zҤ,^sVl-l,1URdd)MkdBuntśxNof9f!&|>g4NlL (sG]
+ȧ}M2 b40:]%Gtdaz[~k>R05Yv!dJz{k$^]+IzaSZM+y0}΍_;Nz_ByK{Yn}u-|眸}ĲM+g4'ޢ9ŸрL]<V,+Xce9BeZ;&B{Qqi=Yu>ۋ_b4-Ϟzl{}|Z_HӆWZRm߿ظ#/N_h]q/:}BՍd!Io|jQo7b8H1<x]t6		[%OHsd!=lwkh?Φ9%ʌd-T;85xp'p7 	1-L!,.aqфwl)Eiy7mI<^ӥjjD<^V3Bέ'mI쫝ų#Ms34+zCM/ZT/OVE%j5*F4}6N[{-&/e1j^kZu/ɝoV2π.CRuT0~Ց?7k-D88ᒇ֘2!ܡ&341<PECa7Q~qJҏ0~5aлDp܈$b?Bzu	¢Y tAZt?JFUr٤RN=,aYY!@.ezCp%2 @==U##G @.ŔǨu;)â,B&9k8o!3{Ӷjb$KH(<Jpg{qڦq)+._~RTXR8P>]u*u|;|wW<>SO=ugC3NOgʮi1^h3
+|M계=m)y[!9D<@X]lMNp UZKN-IԧR}I`Net?.aD.h"I85ERX.v}t_̉Bj-jv'DmFWVuooK즼<'m^F/j1DQBYˉnsϡ涺)-qsrjrqV͢?gt"EOKp'&zlyؖsPNʪ)t\k$ڲmB7q~c@ZiqLc]jxƯ:Xƙ$-Jo-L||pϣOG^]9WJ{_4	(/v̑z",)seADxjhdxHg̓L	WG6v@0m,ɴKR!Vn!Hc*eNGmiMPc[*[ehZ;I~il6joO~io+	r!Jz ίg!Xf7LJwyre+nؽ2Tc}.:ز-}KyE&Awk*IUԫF-DR%EF˥6[ö6npMۆɦL_!8u`{_pFYq' !h/&tlVRߛNJ=G'3(E}Iv´Aj34 A6@+1+1v <OcwE65Beԯ'_bgcD	P	]^$|wPIb@ [9iL|g
+*=LDe{D<-*¤tig?6W/`4&>T4QZN!z[m=:~n]_34jLҗwk^QS%1,UmOv_GJ5M;uԳ~Q}]i2{t^۶MY"%A8$Z
+Vt1D4AH\gG]WhP$D}13{5KdS!G".0hfkUB`85kd	E6Kwc1IVx:GO[,1lc+nZɯ&5P8zZ~|!ROm%7% KC#֑a)juSޞ/71;^Y06W+\OWTYgʻn5!S.a2Y/Ff˕\h9,QNK30TC~~lѽk=%ﳹږ"8ۙ||еGZWJթxBWڷǿk9zaFhU8(6pheeQ<:_į1ܳ]?+sC{=hƭLjh`2'Kq#*R'>E[e҅,B)	:-rj-!6锍*tߑf+>d A`vc1 mmi#cc0`J (PJG(}+c􏳻ｮURuWYϬZFժ1}Pڭ?9!|)bwR5~ J/OsR5i:R@6U]WTܽ]2V#@3YLo|슰Q֙?IڌȚH|D̣~ayTGDP|2T?S/8zAXk
+vda<hx%@})&mhmJ72`|J(Oy%^n	f Pk A ncr=QpwrD$o*MCt$s ̝0w"ZڃᝀsQ`,w3t1壮{  W`@`e3ÜDxkDy I⪦@v
+srpkS9ږR\ Z0>O{L^|"^kwVl96M`Y댌&c~uuɚ([Rr"{w×/(b4gB,gsٕ)ѩn\r,LqJrA)Yf
+D!tu@<¡Q9°A9Gw	JQ^D4=fn]HB;(͡2a!
+e4#`88LB0~7G>XKk?ha^ɟ`ǎUS._ҚIS%J\ʢba2֙KfB31y禾&RȞirY@A/M߹΄k|22EANR-7vXsT4"I(C5a-IKv(J&bş$?jȷnXꄿa
+~Ҟ7H5IȘcZ[Qv\h^,դ=)S3+-PaBg}:Y @Κ<fFwEhBmje8A`\}I,SH#4vo%O3wTK(,
+BtL~vj12ݿ+	(|_7=IqF"W[_15h2);q|buZh/$ 9tdHcB	nQ"ϲ<w("rj0S<yaze;~̀)kw>
+ .>z_Xf?>xO'Bo@@u.q< [zA}7	h?;4?nCG5!Wx'Ax00f*'`0&r2QGb0b|ݛ'"t
+U:7! +ZU@#݀{.1c"UYȚ`@ԡ%d
+rD+_Fx}Xw`Tй(BpEY"fVn @H-{(Um|r@i˲fG~a3͇Q&?`?PsyɎ<N=m㚷Js^:@٨(9m$>0wZ}IQ-@p<0A:$wo 6M̝$F5<
+@:G 2	? -##؀U7	B!3pkGtp"up@)&w;ABlg-%%rϺ[]B?yҾ+ģaeJaQKlYZ/IԙY '=>+onb3jP^'՟GжjVfsDG _MM"[i5q4V/(Wڝ5VbwԮa~9ݰCQvTIV}u(JQ(U)g4k]lߪݳe WSڥZd	ƣ*.!sE}kWnp6GA 9x`5	 PJ@8zZۦB;r	_y:G7ѻr5SRN:;ډa_V?{yN|RБunN
+RuxgLR#Sw!A lygUZtJY1.+3Z	d^^{uɸj޺X et(TV58X][$~8y}JB-Z,ʏ@uX:DY@Ck]
+3lY QB*C܆@!$mdm@CT!=jÚh݁	?0}GMS9woրBF	^B9BtzEtZ׶29*$ȺP	Jgށ`M][0o !aTм{zp-!#@& nG"O>1fo<@/w\q>}BF;J9or5oZiG ?bA"wr7g+x9
+yk_Jym6Fhma`8Q& ACIxuftm hG-\d! PL8!-P @eq® c
+Ӄn:DAp& LmM,B`tc~X2L4cy(rdtx+%ӓMHѶe$oGLS饌%'&b(!M¥Hc}@9ze^U'Su)z^كsCDNOFnrNN7&CQ7VrR@Y    IDATCDKdkAHBDM
+|7oM匆aÜava&\?:]KPϺ~Pk+{OZv1oFo3R~|^kmIqGFhˁ0ј}>2)ۜir^\m;˰}hOb
+F4ְK0}$v	 `yd_P
+^+b"KիI
+W@{w⤙/O9;㞲yKݺP3rN +-<d򃁬Gҭf_@29.t
+Tz)bƜBkҗ,TQ<<SS-՚ q"/lKƵn(v? Lck8]:'&wJǹ%Qhqˁ[ᣲUjp	fތ杰-0~C1F\Ft܃J`*50~#i¨t`P	cP`e0Q`*
+k>bpv":ADx*=v, sP>ptj  w!$b-Hn"Om185U ,)zKRm%ﳶ0ШA8a[	zs5Qnӱ]%njjB5/>_{^xᅳ'^O;'Cv13&x:OLWrXmp$K	$؊%c8v9/MPg9F؁SE9a:`{(b!FY.O'8a!Be':U u	(Cjo43Sm^5BJ˴^('q$p_UJIjeAz酹ϴ@[\M;TdꦁJeh >!d6ՙD6I..}Zt&iFaM=˚Ie'!$T5jַ3{IIdx]q2VQȝuC!g'4@Lލ5
+1T?-yq28?E@rw"dK=sW'u&Pd[Bcb!2L0aؑM!s#uVw԰ƋIlˢxKJ1P
+Dn88^ޘfr.5p[`Ï	/ē]T`Q+Jq$,f)ZS
+)Zr:+vdDiL'#T	h݂mn3$(?QQu?뚷7K^$6]O- }-*Nۮ=r0~KFDagj:{nG؇?A4nX5=p@6Ѡ́=!%DK]XӀc[. p&_j":g7C0WQ!8;%Zsa.bt?6DvT`-@g1އ|5@g%xBt@aN s*F܁p1<P9(`ՀUP
+n`V:MkdnE8_x;f\Vd|p|GDr~h&?g&&8F'%Fd/;7~ w_'~}{w=W~_\s5?7~
+'(	M^DZ<5l$.=lP
+lg!8sԦ]4v`܄֘:HT!\yxJՐm)1M-	QyC43T
+@؃R:wډ0nF+lBۺ%8ĳ>VR.hwJnd ˥iu
+֋Y 7@Cn~0=%9=Kdgէ_H-/RXwKt396kyC  s4ʔ'HHLH*rX)2
+Smӑڂ6]N甶jrj}(}oNHѨ]}x㙽'I(UBp{qpav}K Z25y
+ʠ5*	t}Шaܟh-3hRiypjqbnCsz? c-J;sD_q͍?0 @Mt]@Hig5o+|;ϊZ2T)ۺ˪#\&G2ÀSkEp)It2깴6Tk%JxK=`֣#RCxSۤ!\L (fL2XijXRc߼!^gRIJ\sڱ;[EQ>Ti.Gmƿl_1L42(CPd[-zGnEP *	 qdBa0>j@܄,A!DZ0P@P1-
+c(`.i4Th:} $c|p؋YCUcԄ9 <`
+d#0E5>1nSP
+e($7ŐV3BP[.dQ)Zuf!5`Zli`~cU}<_\g>n8)~Qt\&?5]T~qɕƐ$g.43*fPa[pexhP1ZE	C8eh4S`P`\;gHBh-[ưKPCm; !T5P
+4_+3JvtǼ\Sq0;
+~Pf*g׮v,E|j80o=bӢMjmُ5	~a:umE赦@?ڳS>NfWk7ҝFY3"/zl7&-ȠT9D|na[T[t8oDfaBU"H	IjEu3gܲyW\~˾qgrD퓧ne%F=j4Lҋƿ?Uy)dՎuRJQBTve}?)ð(Ǡ󎻯4"̓ #k3E4,`XEB'/
+㘘x|<9cpk#Ӹ;+,]:v?qӓzj=z&J{6-/ՌMId+bf&1nv38iRm#bd%LecUpS^fzLK"` TݼGd 3:g/2-SBDn?u;WG@Qq|m~uoV7\"Cr%ηH< E Ar$}5e H`UUxFiEx'`!nׂC`ي˻!=co9i@cD+H'{a/H`6t`/BUZq0&aM$Pа wLB+hdd?"[.O@R&LhA ˁa<~+!ȳy5`ypm8_$.3*fQq~vZ*?WMj9yR#J#'>񉗾?ݛc5ϦJf!QҿV?7nV	)IapB@<B0Q0,$!3h]BiD7 -h. %_JnCk	\@k6F}hMmGY>˞i0aAxcst6m%A&nBMI+?eNԬ73U]7.'Ga e"X(am{MLuGFNݧx<;)XL+q4I'؈@ƩmkћO<䧕{GRh{0y3q~A3_+Ԕkܵ<uk/+Ԥɟ*lbd (
+ݱMiӿnw	k\F{<Mʦ=S<;9/NnLgXiX>Hc-Ty*Z;z!
+˵il f]nuitb08 Hci y8wVjGQ"Me<Wj~:/Nor[@݅?We5V]h\aD<B*WhCnWd>0E
+9~!4;yz O#
+|#ǂ;.v%phan PDe~FB&JJs39%?R>dWzH5#ؑJ/۫:<F8~%rk"/Lp Ӂn^$64dd"Ce;k69c83,mE(9(ȺHBMu%`>
+C lQ#8;QY9`6ܝ:0|25P^DBktA	g2݈V]Bk88#n`tyÅaf#{'Q:F-8e!q#q;\V)u<~!>`]Q4?[cAzy"|wwr:7w36;z1oyf#,kYܡ3ƛEaIDcLVg\(2K) D#*[q$!RoCІUAaI̜$ax)01yۉY,^nyPha	.`0,b,A&_47=Ra)&(iX)]R4J_Z7THB[&MK'E '5X4a#=N֌D~UV1ucmXi'5@?^	gdh]>ّ#=f3
+(fObƭUiF7דPRRâ(Wִ ߛ0zW;LS]L'yַ2SEӶo++6ׯju$/ QaxnaBv[?7T(:_p8
+'!L4;+RuPp.e	Li(h:G]ZeJ!@+tZ#/)	sJB0xq8>3;v0.J.T\MpEq:~ <ץ~Jt@
+\jM;rSu+HɎ:mmdTOdfJNiV 
+U{3ƣ+y2o	8<48|Ez|j<(?x^FIX>nM׼)L(zmɻ}uEȊ;
+:_qH(PrR,"ApH"d!ZO>a\ ~*𷁻Vٛ slsـJ@Ex;`ԑu!7=XHzhk#:
+(0iN\$pw{CF$c`m?k
+*CnGևY"npHh>k!n̀]UUBiQDinyjCN͟wH))[r.8(}=8)]mX7ռ?7ئgX7yѺ20f\3X\^Hx>_\\YacQbmhS3۾=ꠐ3nQX-#"O;BV	J${K[
+,bz/(xqbi(
+Lp !X}fqf)QBPNZ%{(r}ߴ8v{(ø!KÞT7bOg(?oaL.c1HRUSu&3IRh<~Ul3$hzͺg؋ayi9Hӷ+<CHK5M^S-"?%G	h,ԛlV2D,Q MHcY5#D[hXwa"Ji[뤯gm }dy?Gm]bo^d`ֿEҮ!ۼ
+(>$s\> |}a"maiBl)W,rl.W< <C_*CivM1ˁ?&V Ir6\)_iu?_?˅Q9!L}3I_!UñSudre=SFɫ'a1)H\67sFEc]>Q#I7ԃ6f1RN(P-NJ*0mL͊W4t/|IڣqOUq(Y%A?E sf<n';gf}Y $
+Eؾe'QD`Kni'kPj 0Kd
+BW`M"܄paOY`6[AMP܀@p2EpVߎoۋx@g;x. pf`6`/ mnVyI@#Z gAMXHWAs!mFa5aXG,8s%[^f$@-ӠJ"jn	78IK*> yƇ=ns#T$ɄW^j+ycI29[-lҎ|m{#Q.FI+/3_qWWԧ*>򑏼apdEش JJi,(vl5@) ҘxYlyQmtO hA<lAFS	F:	[a4Ė7.	l I¸kʵæ``ChP`m{LW_Y:78(vPEapDyi_`6e`O2PN*>+(W
+~HmEt^^l?G1zخ	$
+"UzjšUBqLiJ)n??BKP nLMZ=YKT(%qѤ	ɤMa*r#jdA˼Qx$FP(=AIt ujƣɥh|rw4~P{}R(
+,;aDCEڬ*4[zG f(DyVRaM%k])&jER6%%?a?g$KksQBWL֋d] Dx-=9VMHElI	{cݷt@u3E u'3IXrx`(&J&:_D/琺R٥[$JqO@.ORry[]F7Mg,v/ 86fzcit4dwл<Rzv`WAа*`&d
+U`	9.2|GI@FLg6$-h	E*Gp:G6] CG`-¹w?tg[{pv YCEt{2Fx*5U(l>o
+i z0}0B`WaHpGym΋ኒX{%}Jb<<'+5L`kiw    IDATIJJaz#`%6/{v|sᙯ~k_yD~|Yw
+7keQQ]rSZG0l)AH52*{ yJ>>EY@+ePYa8a<EeAg(rL,4:gpʨ*Y47%RJz^r5_HPĞςҚ.T#3x$*tuyfvZ/;#(sm9ȴgїS ezV K
+,}Q|sm}Ec'M/TmeuC{ʌPi]41 P$Խ=*OxGjl<"m0",zz&*bmGC;<6c_7rɗrv8)t̭ׯ5ӣ7x(^꺷?̲QˊFl5}]>aL2@ٸ86?엓p4op|)j0͕ଵsGF}mq4ezZ?/f\Bn-!G/pI+I-\Q.FZJ,g*t]3;)@&Ü(ǲ
+)ΑB	HlGj)řbJWG9$/	i)/h!%ZtɝTJT.⧄uk&b$ddK,/uL!?/tޯTҼ^OΜ8$Zmw[^,X}ޥ<X>aa0*HG.O@&=QL_xJ"by]0@8оF*TUR"@^vmk2(h`
+Z"
+#pvA̽S"ìaVY002FK``zOCf ŭdՐc0@ro]A(6[qGu f6H
+9owZGmiq&rg35d{jWϹesr-?F),:G./b1'\Hub}؋O@剜Upy<7ƷizzBIc$!Zui
+D&.LY}]FЃ!.8Γ	pBb&J"/Ja<~}IW+Iaxb+J_ɓ饜t?r/539ˊIdM<m I7	*7Q%^Xq0"Fkj(	rFLb/i̻X@ P慖 &x1RXSS}®hflg*-|(?'Od8ln>.'>xkI]5JF{MQzY.WGۣizQkykz3olZ!L08ӱY._^ųB<^Ä!+r8F]8bPZ4ph$:޸{m4F4m<z7((PHհ퇒btH\)?_,r9_J4T5KIr߼+ٵno=VaviQcǟ9lhnY3˔*ZɴKG5tY{vN
+;rӢM*.,4h	T4,.RUr9[3>\g+MaL߯;~-.cc0q|0}C%ۺo%CÛf9s&'Fr$$"
+!`ƀ&gY P P@hM9s{޸scvq/ϥ^kڵgIxRe(e)2q.cp{0lj  \f,E8IPZ
+k"рVF4aIYx<5ņ< d=XPx(EFq#p7C:V9VCEl	"	8#< gԽ/B/#P
+BNÛ Ad:~IUH `Uao#c*rc=>yQtYSy5fȕ^vJ.[l1^@H?WtyW?rOλT+Mv2yDoi*pk鯏*8u!oLRh*gTY
+`:^[`í ``
+ j- yh$fVj1V*O)tL> wI7_Ogqź?etIe4t.$a~j+j  +v
+T%Zl	$.Y!$D$rHkڔS#v/ZUPՈJO!4VS[WI~]54# %$)mpQEI^'Z0Vփ߮
+߭\RS}@e|%?B"G4(!ieˌ͋9_J+R߻|f=0楨ġWHTekKXugpi(
+B4;)p4M
+fY~B B_O]C~7%c~OՔRJCWHi1^HZ!s1TcFY}֦Cq=
+M<RiRc&3ܖ;s6*Ta2Rٮ:wPJdT%6l4JoQ+ʢ˷&'TvW)_YF}vMIC?E3O7gV*;;w^k|_]L!*ShMV?8@b.TF	Qf	=8i8+T4 4x
+BQZ0)1!EtB4@FၙPKЇ1؎h0b+?[!RćA5(mFpx
+kEvTDw}sZ	]DKh@i)A6>).`9XUªC[XZx~ci15*됮v~kv;g)arGډmW_p1.}.LďAtM'(;ktDs>;ע($Fa]-(MO"(c{fie)GR
+ն} !%*CWu%n1,p*Q:+ʵ)P+g)Hdls$@05"$Jutf<4;T~\
+H	mj{ARk)+4Ev H3"(֦.)\ZfP"%IlnRDr`R$}/-3d}Q9I/X3BOщ8G`2,Gj{I<R @SI@%E!Xf>'YXҘtPWXߟ_nV&ʌ$A1_7) ?bDSt*u׎'OY)v_Z\5e ~л[KOHjh"v!@)旾;x$7QX	2!mE9Hi<^21Ң'7;^oBBW} /ozHET(k)ʬ: _u?Fi'^We~ zGΗ>O/.w0ډ$!-v
+Qew$: JC{$Y! Lj沠ēm	A@P
+Y"{M6YbRaDOQ7$B]
+cf)[ܸ/] i'/Sifv(,6;?}=Z1%%ObDer>	Ȓ/jw:eMڑOWM\%(
+"D9N{y 	d	2">yQg
+.tx
+)jca&EG? Q9@q!`:>eLO݄`7 h5</B+!2(e
+Fgj'BdPlCTEd{*x!%4I x̈́@gPMx`, 㚖&pkzS0E$L	 ]^Ӄ7+{Ki0' ˽2v|]ꓶG_;ѿ?r2oxΏKyseVPm}pQ8z_Q[,ChL+iZHB9Irׁ[
+}=1LXTvA`ؘB;(ȃߟ $3rK?zK,?)pRd)k?G˽=qz>H0}IV5~hLEWd|Q%|L!Ncud䌐^ `S.eKB6H83Tž|h(|.!rb&6ȝLC.$щA!
+YSHE%Ez
+!rB5=+L,΄/Ml7k*;M6Uz'}=2?k,U0N'$'|}hʳ)X%U6UvϋUR#7Tne	=+
+6|Pu!C_>^CJΝMʐ&7x;Up8ϳP݊87hTGLs_m{NR ΞWxZ՞\'DE7P6o*՜/؟ft!˶eRjyIWvd|neKPR[3,Dc1=b%ϻt&Va (&=9;2P
+pq
+˼	 uDre"P)g2hB9n M5^fY~Y'  /T:˜taHh]ECaiK/vVkQK":U%sÔ7;yg[HƱ^bih6ZQ(6(t$-1(@W:J0FQZ ;,Hq2!?`ZACB4Ci5Y8=<b!E: ЫP]h%Qo'ӷ#Y@r(TanЉP=<^Ϡ#TwN ӑ`P.LL&*,B5p:5%JicoRէݪʊAj.jp>2έTS|DHх$0+qs9ns>;,H)ulqRoo:+ʢ[Ewi-O吪S><;z]irF\|&.#Hc(*y9<Q(rG>Mi$FԱo\ګ`0!dղoXv)N^j[e'%Í6M2M`l6OJ3>.i\4(P+}pv>67]oy^Wɖᚒ
++K}OdKnɝܻrA>TT.U	]hl'+=9]"JU76$!A̺IE9j(bCޖqRH-,UHP? q3a??i~.?*M9w߲'5e^hk٩\:P(~u^3(<|b 6d86fkNE9&/U~WVʟk*M.Y%ϾZ:爢kSLY«[C,Zq>9,F '2UyFUcqBJ;v\Z_[u>>Y%SuV3	2˄d2t&H^O/!ɃB_Q/&%}DGr&*8]tϤOFbFXu';㪵T(u&Y)($(I!5h{/c$͋Ռ]ۦ{?\=#~żLeџ<MHFɠCgqjK*g~~A8-4S`i
+@ Sa51TAeH(h6Fm%>	G 
+$>VH{PL!
+	 a48(BTsw`L,=8Ъ#@-*]C
+Hp?iTE`:VbPf6,<21*B!9ڳCЛGy-ZsRoAQY
+A"F@
+]o+*EJa984u+~\/J]}܋ޚ[giqT7lw?}i9LŔ
+UAp^PB)M<"Cch"ƑYj]]̚aEE.Pm>43La1?pӠ2Jӏ!H(*(EYfH(>}<<mZ˸(#So-vSF-^$c3 3GZ_!L/wU*?U<J/*t@f|Fqri׭/f|y	!ȥlT;,WnxrIMQ0
+L̈&cb. ByhjF9'ؒҠ*H9#|GK쪩
+rgW2tp9a>:6fODT3$ Clm+#/k'Wl2Q$>Qq?Ѕ\'|\c5=WSڳ_6.i~\gǸUJWUs7YIznZl!Y~A|ujK h_۟D%|BUjF[vnz!AeaxQ^	>'vJ$;g(KI>.j2;2r( $+T'`GƬZX Ee$w%/i ܓ'`2JduW>I/1L@6wT(g<nDfx'=+MiO:~	u*bdH `=̢C9`?ϊMArc(͋Y~eޗ'/8I^gg*;ëVOxQA5*4!CН^0D{?JM.2<UEB!Hڌ,D!^`1v& DA]p gΠ4144l"ρ0GF!@)!y
+I1}; 
+xfDW@1Cs-j	NFa6G[6X4Z4iVnqj"(#
+:Elԍ88Ov.3,0B0Y݋į-79JS;-".ƣOr95yͭz-59\;9|erruWKӢ$^/vkկqDky.J.ӔF'nk/+U
+EetrݗȃfR$Zܧ(
+䩪(9e`*xqln9H#r /jǗ3#+vvjne(0։RB'0<;N7eeLQqBԢ윪8yqiw|'źɪo:uͲRJG)()ba{tmKQ`ZdhNHlHXYcK6_HZC
+2Cz%%uJNĀ
+QxWb4"(PJRfxTyǬDMLČ*L'[VYw\2>*2QSa	D]@i&|DE~    IDAT8;Sؔ\O +֭>o~ͶIJ^nFۄz/.(Bh/_Mi7^`ih[#9,Y_Ԃ*SG[-%c$yA.ڳz]뛐+		KHs!z̹zbiYE/f!!^vTm<.M4s(<F"xBJ(-I>&u:xQ#GʮNj>ejrR.)1$"aU.~W-WH	~5oDq[}$㓅ڝl|R(y |tz׎\ޫ*{mgB@Hr"î hۏ@ 	)94VaI<E®Aё 1c{NY 
+Cz.9HA `c=(Ak; 2Hń1hI2EZǡ}/ 8k̃ @U֢<F*(c'͕;P_s@1"n C48+zREA@J$(Eit40,a8_-|Y{3/\ΗÂ7Ưto9-.*N|*_B:Iq#~.j\:uLצsr-M7}{^z)~.ϻVUٝ#Y9KQXըMĴEE,&x~h͝#%|2E Gyｙs?IG8%~!K_rE޸9Sv=7'^%y^k% !4+Te^nMy&+ֵÿ⢖'⸊A.%Y[sBW܏NKL*J+􈳥BD|Y,;r6UlW`ۗOf4StKkF`{%A3q21/.ȇu8
+!8R죄 tSmâTҊBJGL>|4Ƹz%CMDBٖs1 S$ (	Qk#p]w>q]He3;Q8Tfv}i~RJHGolX.}ҾJk|KW.C5B<Qǹp	j?؂f	t1!GjOK.Qrq'kHH@#ؔ 9-*VlشzY}\%VVL=GQyԍy`y] d7{CB8ԗ]RU%Rϥ<={f=!\HL@EI\Sgm阯7iZɹ	/3 ^HHɢt/?x>UĆ[jfn3U R bT~t0K9!R1[j ^kg<@B[DЁ,ÿBյ9Y@iT.*+ 2LX|2H @(wZFց<Dk9F_
+OhxAE:H{k,.b0f`qG_7)/?E_:֎T`7'8e @cVtY)iEf)oP4T~$QrW]yq\d/$লl}y`#s|9fggO?ƍ7ݓN:O>wl368;=,MwpɲӁ<N/-j0<?+?b /EVmhQu7Ws>({mg^1?F׹*%Q^BBM}4w&XƏ-kW{wσ`%$ft\uRI|BҜR肮=h.?	дج)]&,mz4(eR^L.*$dP2!W"C
+\J4v>{%NܯApKdiΌ1my$ϗ;"~VBDD#t}. t!bD$ԠA͖$F$\Z#faU{`&wW\Yf@8ᔏGZ墢ÝծB4l^)\^]}<L.Ov? ˸CWSw_Q輣ܶoln,D˪kn8~~MHjjF%]wJ oy[ňm,p\iS~p)^Qgw	T)w5v6~>);\ޭ﷣6/dNWakEBڎvoZl]GtYq[N(i+u0[ɐM-SCFc# &@PIY%EBĉl(1gak3;b︲AqF%"nP2J~ްnXDQʞ b*%GX'Iڊ=Zs!JI~J ̱QarY.B4yaK P́+Jex@`U`VBse*$@P (Wg|8c i5Q́ Y "b!\Qр>c\p(qIYaxQ^H{H;pbWp\`
+;aTaWױTE
+oé"Ky-Hc 0QJ i
+HJC8\t2R4٦K|Ȱ0;wA(.\'Yv>*D5O:_kW!|LϜ[H)~+Ww0M۷{G//_~Gy?++ʥ$.Ii,Y_׿V= ZSqO,,?rh-ҞCU6'ajØg`Z|E5F;ZcRU!qrg?Kϫa?4\LB:_$hAr>;,|Un.:_U__j7WhP,g甔#M:MdȤ2,FC)3˔ L+w+M<CLd^`!Cw OWSQ2&(1nd
+0&6ʼAΥveeIHCQ! $f^EXV%|#
+E|6էT¦|E^l_9_ǗO5+ohX<]ߊs	ҡkO|؁0<MVma|nEOm>UR廬J3O4?9r̛b-A^pҟS8?Ksi}~#*x8;C	o˃|d$,d|Wy֤1#tfЀ7څfKXf#lU
+n=W'*9DIՓV E	Z&iLFK|̊Ieّ\!oM\4Wgړ	W56)F@D	,u(KϩU72ۺ%)؞zB^yf$?%1nC ,e@
+(4
+  @3`7G85(7PPWQ.d>E0*Dgj	~xAB1!
+-PgI<(oAd8	UH}h*!rGP^Gk;  1% 0G]xUU(xB;p ϰTע:DgUAmEřSYJEABP{0MS4;sCQV)%8>2X/ :9zPGWoY*>IK9\y ym *~_B-o_N9o64Vmss^^loGK#g kq̛0~et)wgo4Cd	tѫZQC(:6P,ͼ)ȲSz"SSX߈6gg͊mkC{ 
+7fE9O-͟G?%C|ETRB1v[va~j^g|Vg"tIbDAUHL22_sx8'5А*\͗*devxKs$S¤2b)ѪM3TKJWa!(C^ַw=ⵙ[6B:]jSRv'|=B6dgR#k/ 
+]R4$^6~$.kKFick !ejcqzߦ)Ok){d~dM|aFĄ0z=cH3|+{Z}iq\TSvvLgRS}TvQ~J"Cؼ5.#%=>X-ԴGĐqd]%vdRXZ#tb(BL "/*dV'$RH] z,J&W
+QZ	3@~v>E_W&kWBVAv`)iV;Aj^l(zVI)#ڰJx1w<"`
+T(:G5+"D-@"Gօ֓`<yfRB1
+"$FA;CO{
+RRyC8 %=+PmtQ VRi QD04nۅVTZ` 4G3AGBڼ0M߳4u#^?҉RZ/t.]%Ru$ Oλx.Ł>pyZ|Z(:ҶL[揋bu?Ty}Uת6Z7-C{fc,YQ@(lfn'ƎNl8kٮ0{ZV+7cC/϶fgS|ۼ1(G&~(FXQQ,_Y9_'5_bvr/}U+*gewl>.N3W;	:UuFM8RHJ+YǤ!P"ۀ<d␵	
+]{HOQOeMnWk<yp}]OfJ*J$b?[HewIWʲƯk]LOP	gY|EB3ٸ%i;|O\آNrGu&*Uu6*R$جCvt
+N0'/
+]Sq[|ڡs	 Q~A-trT_h/\4f)&9_'#}d sۖwv,!I^|B%c}sYGϦ^nbfs>Qsvalo	xͼ@JMe־b^P<kumdTRRZs lҗo֩JHؙM2$j2PJQ!m	X0F@&5畚Gҏ-XVUb#E>F*,ilOi؟U6o05Jq:N*Dڃ!\46?xU'KW֮47mP@R䠴C)T5u2LAЇ@ev8feա;0kՆS(4":< aEa֑y P$0 FπwB܂`HvA5ersk=(b(6r2P0V$:ϑbaLA92	ahDy[5ֱ_]稌 a8~&LV	yJдN 8T62_*?mmB[ǱPtosQՔM1yWZus~UWx㍷vclii\ZZ!_oT}4*3̳~GsCA&"o̤ |6cB9_FiEa]7d1
+n*@7Ojyrx54ܳ/\Hग़ך9-= </
+1?+r1i
+K۬盹h}lKŭ͌log~ѽ^[u>tViKQv-DokOZBx"qy!R"2,gAeŗyEw}Qw)}qKyH|gW2*Ӊ"P$^rZWXh3I*!C̊ʥ5ȶBҪ
+31P2Y&MuW?;WMI1JUP?[L"ʟFoQH"yr^[55Q#sK!/|[Yw I3d	+E_;To?zk'4nuCoŘkJ]!5EẶ/ˋLqnYljH5QvvFnZRObC.*'Anz*HF;XU]D0t]j"^.C+Cjx2[tGؚhsDGK	eBhZ$:XY!-rVW)BI!S1	6f=6
+{׮~Na`u)c$5	N(-ERDa{s.O֯gg{uF <S Ɲ2}~q	0Jq=2-/fR:SjᇗzԽqfZXO9_w_q87s+˟7]K{bXt@iNrckVV qe%1yG0~TH(RX6O>cl'NCև\a `p" ({n"9v,o0ȖPrcۀ7C`.,0Bt@m ` R8!LyJb,| QG>{l6/_cqdcyhƀЧzEDd	ϹM"B(5f?*Nsy%˟WɤܼIkn.4'2Aw>;lG>r78siu]&ڳg#BBHrkK/mw:K-nzJOx&o?%[UoкY8#Rv&zFϹw,Ϣ$J̓鮫>^Tgi]J熕g4*꬜8Gƹv]ڄ+Kώ7HٴzBOw;N!J JyEC;B\n>JP,OY|,CG{l?"pZ[1P5e\SV(;*m(!i4qqDx0ڱy22{|%Mdkhs\`L~,|-xY?^>j=PҐTtP%յ9o/'Yc`8?R^\q-խًMH^A[aʞ_?<6'oZ]
+0(S!6^H+To	;h=Ğw?$fێ>d`)5YqaO˪zcux?hykZ>?P?umf8Sz-    IDATICU>Idh^.FFigBnkskMdV};7с?\֞tͽeZj7414u$])O1;R!FPb7ɉur29cI.fd/5+ ٧:_~%:nc	Y6Puͫ-jx_ttڨ#BؔyyA0zaQF$yҌv^bG`6{ /Ureba.!N4p  #>xR @`,2ɓ
+ w=X.]E1`:<jPap A+Ԃ!9p-Em$K)cx [^P9&wWaWB	53u
+T7]EIX>zGv+( 94B6@܆(`qKzm'B	5,<p|dCh'@A	0`|}јDm
+AY^)M6;btŲG1	eQz6svȶvw֙Z1gc[ODswozn7޸m۶wKKK;v`_'+g#8{mqsq/w<=~10RG2cTJycy7xWABaz^RhW}/%<'Ц:8w&W$+]594$!J^)+mw~Tm<C8IdM8cJ=)teK.E-kp.+S틵-Ewʚpi$'Kc0c^֢ Gmhv)ЛWI>3>T!SSP!)g$.E khBBLY,מ81]:Wbv6~$ΪXFr=e@(F"F\wsmvPS&݉8~'*Cʄ\ÔƓzյvze
+ɛH).J6(|w]ެ];(6BR̭ʺ\AHuݢRO8.kKPƂ8n|Te3f`T^}3+Ձuc6TW4/ЅI\&qI@[If?GBfr)|2GZ-QX'58Įm3;*_徲?z0礫Ovi#š+MMas	@ͽʳ: êg56;dC^jr!ڕ-oi޵vK_vGo;lXh(Nv&@u2L!tPنxյSA6wQ$`(G(ȧ1/o(s͈@rwE}SD8.S`I8O=.,ٰk(pHQpp[Wy*@e#pBD!:G`(sL)%9{e[n>(Qp{`u};Jִn([<ww2ѱgF*fDA[Ns=-_aosV<unۤU>3 @ivyج5I>^=_W/q,pBnպ^G)Q|Jﻞs'v3~'j_޷I'$vaZ${eר|xy'~( JޘӃB  Bʋ(JIF;83Z;C~$g2!S{lfԩkva*]88K/m{)#K-4JNɉe%}ߓ+!O")iK7-mHG0ڡ1'El*ѴVrmfRHחg1}|zr,ܝaB-uC tn#D)ݴҨx1<RYPπW{3['y
+mJҸ|vZxolEBl7z_7R~6IV1فaN%8ARkSc$/rT>˓Ǟ/g~4-EUQ~{Go_rEcUGUkuW2"b9g3RLZoJrOY~fMN4Ct,954-8U: J$z#'A[سlRi3sc	do3NXMWشSHĦ8-[b;G\6tݢ=JDOޢM_r̀k5^Xq:wf4¿˧O۹,%1d;'y,J.vẉ1}SzV1-9U֠QiY`(#9(HV!88U]ׄ*!3"0<2,UEԏC0X3!d
+Xp<Cm	0؏	UXD>$<qKe	fP9VQd `٨7R8&@s}pW
+{gVKЂ()R>v4j=(Sgׂ
+>VWWطێߝ3{!𶷽maa!nJo:g.YgUOh5QFHްsrmXd%%!E"~61L5wXh)O}%qeAp7+!7V־΍EҾѡJI737}=p~JG:^[^oLl'(6fz_Ԍoߵa>G fD,oX{>eK dq
+،He)YgbbySv YC`Mz@iybNeX}H|W>Ji
+^`IiL2e#Bink# lB;%XVnRc|*Q	g2]]t<yP@?Sz9{ԭFj' bPWם%?+.ℚjo(	굾CCshr	^5 _}\:}TnƫAi	))bqR]9ަRqо+W||_kv@t(M Km׬G{W,9I]"MG#Uf@\i" ]_@nWrt#9ܮ81G@̪5R_4((!d81SͶXGiOTUL6g1n*t -kxxvf;k;8]?z,vxq(~6(b(.p*RAIsİwV(KO+[(c%xcL{(2"$8՝(cD+hI$
+n1Z©cbnT
+">w:Xa$*0؅|o
+GW#D0D>DB8VA+ @Րtr
+qT}Ny	A)F(rh	MruݘTAp1@UZA;/Y[}K~;J %J%/j__j]o1߾>u]_xy}{l[3xtwth=fITMS|oѣJO-q/m&洞eL-nqџQTQ2J"tkD'ZlSy*DpzCI4E)=ըOGox_OJQV};zhz"zs>WVJgRQ*k3G<f]'ru۰-)XdnX:N<2 4Jzea	9wVp$}ZHK2G'(<hmϵqI4OMB*22aaPU
+ǢMsmD3}eŎƹ ӹh'<-ScLcI_ 9uM_M	k!b$V-O!I6LHYsmJ'[*5/6z[*8g^wSh5(˳^{ oӶÖrN!Ն|4.edI
+u\͹Q"_dhW83:4ȩ?\0~,ǧQ2S7ѫ+%Ygi{(:hrt[t%܌
+ۙ9~#Aryju#@mKEaI]eD79q`l%jfL}TX5eUz,לt?vQg~q6J-sgΘ(^;ϽKho	#DWOP,i KiN4ϟ/Kf{T2r؁ iOf%C҃_SA҆,QSQF*u ]c\d iFb4b``xB0,4EW`$dr& ĠL B0
+0YF#nF`<Bm, A1'Yt5CFuIZC(S4y!__
+@I6Jj[i45[6j3sIW0}#4=P{e-Gn}uX{go3/VyX\kߗjp/Z_lR&@k+v}<Eo6lb6%IP9e'+GE=^	#ro.-űHhfKyjn(}ca|fz/y[/	4Lv yX]Oũ̳U޿4|,n+fz<2(BT=1{Ϣw-8sI
+bSCȬ6Ĭdfh(1k+IkʂGIѤt
+hkQߥLb,7CMila$'^J=U:":nXtpHT2,[Vj[pX L ÈM0bh`=T)7ixuKGk+aFC3qv7ix'f.h13]^\zΦ|gx_QzQչ(ݤ$gX(HlDzB\mZP?3?!;FM=WQNGˢU.xmGT-TܛZZWXT\jUǆԄ4H_k,I
+ՑQ+pڠ'Į]3OY6	Jt"}W=F7feZc0!NP۹*LY}FTd8m/ƈnZV>Ɂ_uB*g'OdWMz_wJUicRMYF{\MIkJϸey^^PC&sd$O3 Ay緦j/dlnۃȍ
+En؄ecؘrE9d=}		,"EFm
+wU]8k"]4(*؊;̅KDTf1q"!hlE0HB2Q!
+, ȺƐ,S &`8P".(c `UQ u;ǐGİ7[ouvuEu<1Zsrʻ&I(KbCV^\*u{_μI-Doo»ӿ-7J_Hx_Tnnsϵ	+_Pz5~BDEyzX If=<"8<UJs/)=_n~':x,;K^/\ys,q$5&8z'!YZ^Wi{8Sۿdt0߾clzP\ztL~HLqirn/Xںej.ij3
+ݤS=zH9F$[FzꘇB2u~5	uQjԊ~x^(=!Zgj-{4sI8ЇKl!`1-VqQYUƔʆkKsR _0,Ϙ\7Fʪ#fHjoePQ%(¥@l6X<Mn:Q߾ Bmw:?FmvԳdW-<}X^zLWwW+͎gy.feWW]0GTwxJ5isjX{	6;v<wZ?ʭmfߗiF⌦OpP㋉q62 -B@qJzvGƫ4PImݮ!zzdaz:G5 'F_gi{#3M#alFؑf^)4R_C+RWU~p3{ŋ^oFbN艚sÎִo8]̡]KJU'nfY\!NaS,P0N+7w)YBig4z(Qk4ǐ̭@kսh/ėZHH:,cx2F>(StA,^GFs *`WL#kC$oޛԎqgq9⨒.>1y 	.Frqn#`l姤IP5p+L Cdh`ݗ #¼"'l(%0nRq[tgreTrn>ÓGQQ:UdrxMοd} MRτ8yEqg>W6boWtQ3IJJI,>kC/F(,,ڰyqa)NZ7v^?Js<)DQ܏h_[?4saPMJ({%cG)Ww>w !߳yr]ryCxd5\^v6^jW?[ay?\xfEj&fա*lR#n8!9;,Z3̴m466YR`u<]G*%XrH&mhe}U H-ʕE=PBZLx#E묤tAm:S2Z*^mvq2NF<:^NI{vvU,&R_u|3|;./$z2'V.(SњC)BAJ+U֪Ccvzu&7F?).W<[^vG<9..X=JW|<(f4H6VX6|!UΣ U418"=lK!eR3c/aԈ~l^=2+6 Yṽq-kvh#tKd[٫ݒlZbɪ+Wn8lާCLW\)Rm fm`H2͕%VycXlh=6Lw,jk+ev7z(yR52^XǶq352q^)Nq1
+p{iK8/| ɈG].AUhR	jAXpe8)"Y`p šKpXJ}U>eXUxHVrLnh8[ G6LQ[`͈îr@(,q.&    IDATZ{}PۃHX; e>*{P%f6u`4 .Z9P5;6
+
+ʠyR;~XF_D}Qǹ7N_+_x(zvwUwYG,v;n3kSwݣE16P׾Q)NϲD߽%͟d8JbG)Z~c4^k!NJ˧\í=Bnϴ.Y$p~d[;GT	Q'7؎s]:R2p{Bw !#}vY>gXx6]nyʺS?iOv-q^|T۔!ȁR5SMxH+̧~u^ TK3ta}2B]㮝DN"'ụ.&jtM,y$jlNc=FfX%ͮ>Zg@ p"J9U(@9"w7q:ukBP &?8(:uh9^V#9Thg}͞uDcObqj1$-F	)g6TYywJ5	Lr&5ϥEg-Pu)=x3KBnr'm	ca\ټҍ\nth&_0_?/aX,N@״Z w5ɦ1;gy(j5`BFCꜸ.&`ٹNr3P((lR"jqP/dl`    (ȴ=(a&KhC4dֹWS<Zl[`D9a<JrFLm"P[`n&t%WkXJܢ}ǔT쟺OKqJ&;cI{{;f(ϥOɀA!Ξ620,לaRN 
+<%6XWCH-'ڈhk!^AY BalZ!>
+!2XB99eAƱP觊I#7 ZS-!, `֟hFu̓Z9,d`D	c JXHQ,UwY@ 	)b;#-h KQvƹzr@S:7nn)ΰqv%m?"o#m:I~#O'hqR=w{ɭYVN z65Ɩ8i")7[lQAF/β-i(#BҽGʋ<8ܒO'$+iK;OI~]9p.OJ&yAk;j_SHܬ\'jz8./Lsc8ڛʹ:?Pmhj\Roų[\Tƚ#iORhMB[rV0W%k+S9J@+d FNꝱƲqܳbt18H5TE=ActBYJ=	LGb8#F@os& 4sif$83^i-!-J]j ۰VVk	ѥ/u#UaWOazL161κ&cxyV7(/.)Fų
+5;*R(Sr0y#29T횀36TR.*+|m=FIbck8BMO;Pq^yS4iNy<%j N*uXPb
+HQb/VX))kCbӐ bHM}F+#9P$35J6G|J8sI@{P[t}@*V23)iTP@ڕ}ݝ\t8]֭ߠĔ.ap:m|s{Q"7229wc#9%uˢK ZH?(qFZ]no \I̼@HVE_AmQRT,]qr(a{뾖9@"jCM#112	a֜y:>BƐ%&)$`I
+>vWQ$H-C䨮Zbx^Ac9#9C[H{*HV`9$ֲWG8	BQc
+B Ca45qV$gfs[>!YZq- jK|Z5gu入WP2y^zC~ǻxʋBJŋ ^n"$5͌H5+ɵŅkp\o[Fkɛ;XMɛJqjCӻ;(#6eųw	-Tsl>b{#|wջɱ+_{O79;4[\<LbUa~Tjk&w"YZִwa$Pf&|.JTkyQΊ:4;;jTuwh.G7OdBb0QO-T'Ԭ8hd>uSl:b]>0Q}2նW,[ҔѫsS3(L2ft"rՏ(dF*T\mڎ4ݛ7	0c"5ORϩ#ECo(f}kЁ0Հ?A05ak%~["7	"JLm06z$:kLXIl' bhQz,*/t(Iv2ƃOtwx8;< "I*˳|֍	KXw/470"~1O "8thS,! k^\@!inQ:/MVG̊DR($ҒÊM!#CS iWNy5J&UNjZ	!wKH'}+-zNveƜG)ɴ0&@*N:S98;e+\T\:?/ptsg4g>2muTj,-/v@i?K[7,R٠/
+7k.;C(#uT'ZK46"Y@1Bg?xq}҄eC&0ʐx*ǭ#mc|TU"`{U&Jjkv0\߂Q
+F>BC>cYcY?D:w@ʩyGը+Ʊ{gs&'}vaynɲKw-vTqm;gw9g\qynQS8A!$3
+AVضvRh!7^!O/3(66;>.8{Xmz&gо3p7HmkW)OIWLm$mwxZ7!%IօmD<T-/fϛMHYM.{\氼`R!OZΟYFr]ٔ[Z$g\:4JT#SPDUV*"sx@\2&M5R,zꚟo`:,w6j&Ei@짰OO&	IPFDfт!jt>.]h5dyA
+3ә<}dut|$$sYLV1TMP}T.ZkYзgr2N=
+iB1w,'L	؁ϥ+AɹqRmt)Q.+|{_dW&jCh=XֻӱHs+itmLmp
+%yqv`)y3tjrni<-]Taoy_gieLnr!"Bޑe8&]ݡ$f`q7lJPb<:kѶemf!}hBOZD
+KEKJS-T@K*"Dzt	I }9'n~}!cdXgOs1ӼF*(D i~9y ʫc3p>DK_u5w$?V>2/EO_|ndE_.jU'tfm?meƭ$Ԭc₶sOw
+K'|R^sjs<O  ӝ]W>+*U>8~aQ^[޵y6Ӏ2X]d `2~Ua!qU ] 0e/ç\bxU003b|y7
+t!L	$}TqA^dZa<ܷe
+S"$ X@P%f.PBEEȟZHTQfpW!$F=W蝻w&Q5/9Ml_`و&v-~ݣm*LޜWv~!KeųN7ެ(}k[t̿-~X~Z2h1w,V;g$s&﮹f@Vdɛ$q8{*%w^i.lx,ԅDNZRȲk1miq#ٌ~wQ3U+Eag/cLU2kV_5dcl?-:lȱzr&MiyZ]Dj'kWOhr*sn4@{{C4ʂ9۴N̦46V\c`BZ.1r1gkx_idηؚ>S]22NqpHbuzX!bq=bo˺zfDMcH7%7$X))vSVǰMLgMNn+bGZ.:%/JOI͍b稈-a[u_s?Սj瓛{<QʆqvgIQq"k1Фx@*y/QEdE(L'Tuy֑gN*n$wF;@>ʠscↆ}ϸ[o;wN)nAbټQy+6LK2C:-X^KYsWbf4*0j*|aV_7U6b`$I+'Wxi#ŵv0fۉٙi53=ԝ(YI\|ɣ:8,P[nO(4w3bK&?kɓQ"zP`bӓܼ6nӺ'%m[TDlA%ϽGk(Q(!	Ɛ`W0\W* "c&p9T.%lAe<d#4h5Fp+ xSaJWG<Q?Hpj9>T	[H m0H'`  ӻln
+f8GJP:ݥ:_VQSRFC~Ƶ0p5-}y'_W>yo$Iq}|}Ejxໟpr5X^q?8w)3Jؘg۪M+So+9K]}B3Z/0<^^u?=Lm=ԏ!mVˁyK
+79^{ l_l2Ͷ鬼,R{[_O߷TiG&OPER{零u TԦFMnYW(#Tz±-LK_/0i	u`Wٌۡ1ĄV-sA[0ڬb@W<FH-Rh\Yv24<1*Lj1,jNz\}ghS%9|i.feyihp~:3 7֌ƷxaS 	f;7gs֨&/̟k.?*wψQGSza .:5yG<ɝuonF>65񾴖B1DϦzzKv&04Z̊nq}aaΣQ76p,c.c-.PNbSTg%p`Iq?tF*{]R^Rh`ΔZ+bv[T1zb~y[siGe<V#$4]v^ǳ>,vshPsycMr३dT]KI.Ɣ[&${\[?;\;,-y:VK͗wHF?+x<^O5ksUWB^\c8hR!OT9ZN!mT:ieU`C{S!$ F6a:2F!m,>+w?h:J
+.B Ƞ2Lh̠s!F< ֨y2pRp2!Se
+~vwgԤ֜KȠ̑$WeQV3_PϊgFɿ#
+_SWaiL]{vv2O
+ _acz(ߺ(*sݦ#QFT֮1SdFN·WQj=_;Su<Q,y7/ f)W5?Ix0ݺ.*bŵ2ͪaf"+Sg*XD+N+$W7JtnD@nS!B$ɆW5X:W	 RV=.n3sUxbtKd(5́Nx u\nmŜ=,5b)c]7͟ep:G;\S#
+W\L0eoWw72gڸ4U2LYf=M\@fun9uMܗLOdJDknqlj?)RT*ŷJ==̯JgddɢH4㔪 ,޵* 'p78͊Ԙ)X̀TGhw2S9D_.W,JY^f6OSYhdՇ݁K;'SbNF2?-mLhʀEIq]LdH``6z1QmWt gvU1%]̉#3iJI|3I%dl̔)r &l{[q6g&{s|U6.,yKvy|X\Yc#`ʹ#,dcREո~uAM~Ma0M׺ikd%&ڇV3A"(=!O9&4Π>tӨMc)A3pd`JF3!=c0
+N'?ԩ\ڎPB}|2,<9fQ0
+ j36Y&9t	4Fky]D<=5wC Zӧz{kwލB,u/#CɠBYwֽDi2^OӍm\'2tbjxAԽUX/_|ζ_,0UV k;VVG:[@"//*] \ȖGJS8/+jg_,[G
+u`uQ[o},+Ԧ-//WfTfj-aߕ $UO9wbSS}PRCŅiDoOBU+bƃLulbV~qF"6e[qsS=>VRvN;ek)0Z|gh 6*)Pnuz^`a_ףy    IDATc'p.AEnO{7zs}Luh-('fŪ.`hK99[am58uEl<T`ClXZ}3"z[<d`w]X|Akr2*wJ>q:Ο?njw)ʦu.;sW}}Wsr݊}zzfOll/N~źlT)dýPSnv$hVdv2͊A5x)Y}y}_hFJ&8&}s9B8᳹Y>H9t__ ()N+HO=Veodewc،8}b]k<'ϞۑقKH2X7yZ/f4*"`{5yݲ1R3YyȓɆiyMaqLow8ϝk?///?xCQ^Sg8kS󕲘AmSZu4EkHq&`_3Dckh<<B4CڨϠFc|6:;a,R"1<&xQOݕv ]1 D]"Ƹ颈PG{F] `
+L=xU!+`Ad0B4.!-	t囒	67s2jn1<p)i#lљ?	yXn4&ѯ[|}2?X\#ɿfgR]4m
+s$
+uȏ	\;s~0*^ &/՞4Œwm#,IWU#cꜥqA˽+3ǐ[4eyQB^B0DZ^t?aqy6IqKy&+p3:ESm	,,/D^b:gY9(.MM^Ra|_$XoKnqlĤU.ϗyt5xJE}@A,(`54g͠QۑaAîhňC:n 4Ȝ	3PUPgO'f!ܹa*)x<{,cKrf	M8guֶ쀎S9%9M71w*dd+Oe1I OK6
+8l&&;ugo:ߒ<i-G,Gł%XOY|RPrV-/W&7J>;_WV+ v*z/F5H/U+O9dEL!W|1̯Huj=#OOtb:7PC6/VB.I,ŴVa;}Vq.
+]v1a5nC)ֺ= lrJ{♂XZ9ea1hپ²'5yFn+!IƦ<վN{l4
+rx"Y@qRIʶjW>#Y~yl&Qs}LtT\`+<{7dQ^>@G64ck;,[BH=7<i;51z/raם Y L,/vB},?("FQ* 	*,\ =	Umx!,A!X" 1B<@X8.u$c(RMX>"Ta4Η,ZcpI,ݞ1cy&Rb2}<I]ey`,+y¶)gⲙ		q~Χ)~D
+%SzZ6,^nՊq2=zIRj\CyZ/yyy/}mվ9,> mf8wjwUsfɳYyefդxUsIl!-渼3˳^L^z;7*q64,LEf0uO겔,L}SD3RnJ&[%dGXJG%*l)0sOz>Ag/-0XM09F)Iw$ڨlDْ"fmҽ!NlN{lfL/QAьxFHJJLȼ83ڬVq$Jj|^3qS3b_AED}5 으*mc5%ٙrflYAة ֭L\/j\S}m&/R1բ-G5X+K+Uub{&oxf*MB/mϬ%5m*jDn>_%_LBp9o^:Yεea3VG`*ܜ)":ڶ\T4t/%~"*w1cd`~ho
+&cHVy@aԴ%Sa؄N3֞d"eikt쀿Qcs 6s>AF&ԬyX$5]XUqjGd]!͊FuJf|;)# .)xHzU'-Izε?'O 1JokW%	 @ Xryt,^Zk3m6C<->Q mLAS"BC҇)@p}P.GCe<[iAu1DcOj\PP,.7 B8~1Q2Q0Z~Fk|;&=0<L:%m0ϫRη{ڗ9[-0|mMJpD$~ȑr埢OG3~uw;wZ/yy{8?wOr3oB?ϒ6l,uR,L\^PiS{{6	>n3Dņ|Rg%aSu}Qov*)2&iyCVw?unz?+/&j7@*G'bˌŇM.M4T+
+ӊվay޴uÐR8ad, 5Ey,O2*cJ[tNyYI!1=)uD4qIJ+=ʘaF0D4_aKugW9F&'t
+}r6x:y+︬SRggϒ +з  p8
+eNINCGA65>wZDZ"
+XuܣQlGF.`ڟy=Լ&
+Ql\nbJhb|MLB!E]Xr OgWzC9ܔW\͞vθ_߫I/˾8rݗVvc<)L,M0Cvjnt&>,^pEm0u/^EY۬kl׺9̯ONY3ߠC:XQL06Mv5ĸͮhaMGwзŴ6#̛/d*l&uxP8S|'ZIz,6FbDaM؁5c@G&	DXgVJebr
+ΥW
+iaÓ&jJ05o)ёM.O
+
+LiS;=x[uIB] ZbLUzZ`\',}Ǉ \C', O`H):,+|eU@ @)5LV2x5oN8pcO`O-7!p!T!ўGr#B8Ћ*:L$fXR-ƒG~ȧ3q|*
+PjN7򊢼Rmtߧt0}7Hh/O&?wc~ֻ~iA#ԯFmqІ{V,z#x(~t	5$+n0;F3䭞u7ySX/)L],x_&gQeff=Β'kg&Kr`V*xʑ5ۆkf
+f }`=ϭK3Vf,O
+SI.'pLddWyArƚ)@CMZOJ7ѕ9**d` ;ڠlk;#pZ:S1κKcAs<bjV.ibq΀" ;B:^e\n]XX=0îWz^ uvAfS3.}ÞzW'fJc-vh@iGS׋M lq!ߘddԔ,KcǆPKf.M[<@GF]KuGrw(}Kwx:P~SfD'♱^ȌմɍR1k2^Q;ҍ}qW^ÎhƸLd9q\yz@-),>5_z.k7̊{?LȌhD'ˆhBgstث:æAaW'mM8cn#Xu|Pv-Uƴ鱩eϛo7D3EsLLK?46E&^CҔ9ay̷hĆ``.tO)]X)
+G$f6K TS?ڴŚT1[lFop>ʋw=~hZ/'OE
+o1 oW?Q5&8!КGG4ZIŠ,D4gwFof?9j9:QHp RCX.VHh, BO_G@8{Kg? 4NgZD! 7-]<e!K\9,*Օ8j6;ógSJm6A$y1·i_{]<[Z~vu'+_'OfURαԫֿt?d2~dhV]u?kLM\,ko[߬8_g5x fǤzy7|#TL74?+l1cޣ\8baGiU۵zg\cPp7{	$jy6$r?ÊutX\Ѳ%XgSK[}"Me}5[Dr*f'8P*IY(hY#b!`*<vq0 3MCÞbES^b`c*F:. 9	=Qg4鯛3 B@_^P̙QU*ЦyXR`Tb8îIDр*hPa{<6ҙ&;X"Ih¶Y3lڨ<dV]3甖a[,_.*2>Gl)x/RcD(u|Xkk
+Ir˓M[WJS3jgMrݪmWӾ}fi@0&*U:BQْlCs)Qp^UdRpX[tfBC&S* 	؁+g91=bNQit?3{ٻ4}+S-vY-qXB[^ȩ$)Ϩh
+><PU]u},(x[xlrY&f&qwdkUy.D0Sj0眊REuTwz,\yoj3ը!wvp-kLWo|5//w/.ͲtfE
+U"
+[ ]Pp8Uc Fvs B2_Pdh.<5:)L m$Cp<FЂaUm"!(DgQ0CJ)Z8/[kSbF#_bYyzBPd0L@+8F]$s3`<RDKKXɊ<zl?4dzagM53xz-~h?g?&\y [KcXg(QҴoU'[0/^tk1践Joʋ*D+Np6)6@V~ Rp+555W7]}U]M^Qړ{3dʾ#HQ$-뱩iǌ`9bӓLJ(	VМ$UV:Py=ֻ>}w`NyliB8"{WC:Va\PcJYvS|7,Ȥ<><qbұ{WgsV*lb}sJн:.i٨xؘk5~Ŕpm-v@zf&)c'z3/2fuo	ʚ5PW5J*BkQ]FM80="ɛ5ܕ4SLzg+6Fjm6m9Uekyfe2И;2|ns=22k]z@A+Ή5+֢BJJzMLj3QhKVͷ}:;0єL.ۤ(DFRbXa=,XѲF<۠	LkjAeuvS
+*1iN"Q\`˜ңEvS4Q	 Ŝ#39)4V5D>RͲRhD/]f7{z_?<ޤ*3 SfTJa(HO)ӞEmځY~cY '^5]Yz4laA)9	1xYZPsfd2upz5<4U   8G!&yU=!m(HY C`OUy
+ўyVfE%06e?7_kB{lV`ڱ[ѻJ QMV\gȟb|%)|iaC^?R|;e#qfY2贼ޖ cwze?]+֣@!x/_L﷭GN>;ST\pzԳg[go
+m/1`;'-82fߙ} qL7yRU!@#Geq$end!F|D_;%SBڳRJ9, 30vpB5*;P"̚ئi1h]e` +0³C1uP9i~}Hg2ѭmv8Qmlo?1Ek{SV]a	L&;4YY'1Sb14 (i96c(A4	q.Pʦ> c5/뛞j'SxNFڙeVPʆziڻ}5m4d)U) ͓4eQHhY
+m4
+HgPrFAGk(TTX.*S# 'q^߿׺(|b0ogG_m7ѲD]en`ӳ۽b_2S qz]EaYzt4{QCz 0
+I]T`į)'M0k-6(4[oqUsi';VP2/uUL7sҚ-)~9 _(ERL	0K2U)H&TTA==izvWº}ϰ~G9k_ߩz	7kG)[	7yKuصI#@+k_r1,`4圏<os,Bv0n+;ӟCB؅WE"&,iԂA ~͝Mlyp3Swf?SAGCHMUlN}@¤ZonObi    IDAT8jUj -p15㿘i.!OPvŶoiRep_֪*'izF4Uۉ(J}TmE^өwg?d2#w]ɕDN9w0ռݘߓV<eMB;1@gFβ\/|8~2SjΗH%CިxT]
+(^jS/UE<~.*,:'2P_Qya(7˦}<3֓-eu2gQܷ6̪~pXRXL3f/P۹j2n]v}t]F_c7XNl]	4p (d)V+AYa{JLr lׄ6Іzx]Z-l}5X#iMeC:"p9zU3z	W2e||^/3raRjeFt~iPay]+|SP
+rViUcbK*b35m_lFj"^QINjuڕgu4,؃XOg$<JƭZ2Q{F[vUg\kXVT%R@	DTl8<i7nnnc	&$PKB(gURܓ{~~~1s{Xcoo}J;&Ws:KzL@LyP|㓉3rH]e#u&ABӢJG?`cj8pI35(<nb%>\׷腛n@D1;Ll
+րe0z޺J:0%CX4_Y` p 9b2}YmGj͡ZDꌈqX i(Y#>_+-ƿdi2cD*RϒNP4K<񍣉dug8x&gq|Oӛ<BM뷇o8۴YqN|uQȲ+|^=3J1t6P٫ @e 1&Lv	܀[np%9
+, (,A	+`A9IΊ]'g?*h?%a6>; 9z֎iv r"1,x]SeKAeT`g|:@+H4N_T2fW26ѕ 8AJtW3aQn-]Ǻ~{Y3V/pw?=j5Ke矤j_a4!(c3`qeʟrl]:߬ǣAva1/ٚԮWbd5Lo/jzm8_R:%71r#eOK`;}Ŭ6XLѹ]kM6Wd1+f4q;}9YPh@uА
+RmHtᆺ'ĉ*]j@?bמTu-=}gnGtɲ]i%RUe3E@d Ht./SSBuՑu0`H655֞\źm 0sV]tuWf:WLjHf5eHԸ\+SlSi/H˜\rܞ:jS#9tt퓺ۙ4V"kCe曲PUE{$C*)s=BA:D' S`D#a3Vei@l)MΈ 7g~5uJPj%Z]d@:ALpr]?G)h`L6͇hD`o J۷Wfz4\ȦJsm\i^PC-L,Fۣi^(SG*gP5DP@6&{ٲ4L(m?Kg:+Xo)= 1`/5I)PE"69ezƿ_˜BmuBMrUCi~%rm>P:*6&0-iw!jGn6?glkzE.``YZA0Lp<i!Xͅtr8q5<V <W{Ja#d)*4fג1F~Yh.`z esFmS'7πs0ŞwWF?PdHB6ƃ&4VvFcce9{2IMDt~SVQ2M`$~LsXwշM</?wßw_D,5@*a?6/H6\Hn j
+ֱ%q?hQ*uWc K/rTKP Lvs՘+ }jTUEIf䚊qN k;_3nMO8Bk>!#ITPC	#7:TkFX1l]Z ↺DtAG"ڽno<yY!Rt*8`٘aϟDiL{DA\`3tOs[9_r FDgjI]LWP%Z[EAWmNYUe_悡=qH҆Ib-x[VO1R)jQs$!Nv2#^kPEPPjF@ZL7d
+]fwQjBV4I:*@Vl6δ镾)o&
+V.KvRk]-^ŧ5T!:TC"}@~'9WSV->DẾ´[sl?JY`\"lҥ>Ok+{O5ش=Pk(Jg'bMM7B2+x+qe&
+6KɳV}6d>[+ƃ?lN*|q'l΂nUtB0.:2bf>$r0fg\`MD\h$jǺ-Ia4&aiwxdT;!P)}< TI	Xj'ם]nԀ,r!# VaX&]xeuxeD}XZoccDSjBdr%cF-AIׇa	9>%U`S8>&C+uʵN|;OYÛd4U+.QN.}>۠˷_a8xΗvJLCroo$ Si~Ju3~{Vt,4rCUߔ2	x2|~T?܋CD+\n5rb_QV|?Wޑ&KW}ꚱo&mJ0ٍa1-yb>tkXX7QS5^P6؉'u`q8-5\MǓb[T;!;VT]9.{C,ѽCAhshCsC}P"CSiVC%z͢)Հv2154Ӯ@AIW?ؠ3SJM0%rmU	8M^8Zyf(18t[B3cL(kpL'-gNYl-FewLJvR]eڪwV/[fFxVɒ*wG&z]!eV qQ u32lvY;'Q^_}<cDRO O4L<11?QYy&MG)5S6KB+1$xW9Wea|-g&"ٝQz\fB	48aTMg,`<EDMݠ4U>T+wti.tNWעK&tD[8c ǣy1-hoY9~u*PeHTsEaq 6yfsj"tqXR3NۅS7 s_8Z`)NzÇuS%^"]h+$p9m=mM#2O&86c&%j,;-?V2۸.K_w!J_/&q|;I|i~,˺fJə3U.}1N&hb^evqa[w/]s4v@El\ !@z$H#&ǹ Oհ](\kLFaD`۱ac3@ 0,zI(%r{0M7gIniݒnopjqY[VMRۼ4gw07Y&{Te'?9PjJ|D8y7݌+}Y0hg|VBUq65H^[w?L0TYv1rs](e[bAmm^p}Liǫ.Euk˦SԖYj^ܴ-6T0L֍|jzE*RhbN(&3`)Vk'7H=*\"U>^<UM+{a7G8a	RT骾~,R^m6OUc#IC3
+ifϺغ4}ΈV"8<ʔikiW@ME5QُxaP4H%2(.ls-԰ؚ*Leߧjg
+{ǇŁ8KM
+%39yBtҋtGnƺҴYgljќ>Af򕽶ӹhS,a
+M	2K
+)dVEz@XOe6-"NYLf}1*5(Rn3Grg	ׇ8m"MPKVQߌ<M7>a+HW"}ҧst~;-xB9CWgC:eZ(񔡔6:1,,7(^i7f62i	cKL> @jf}#fBR
+j2/JFvPZbqW5L^K-0]Ϻ5/g4 hu޹CF I-c\C+-K4LJAA2v4.|6J]/Ϗm_+F2nәӪ%_m#lNoADS(t"JU+`bR f4!MPB{y(vU}	,K|otGk Ϡ$0` 0ZB2R'jn	>Զds};EŃUS-6ylBjOt^^ ҰMQqhrKP:ny8q#I~Q=p<,2^-;77϶ڿygg/luUڞI]IM﯒b^R(')6Rźcw:ƃθ
+6(p嶼ؕdW术FŹ_Fp7y6'):QѲo+X9PiNEU|]1#DYoK=6eveFK\6Ry	=uʶQIͳk8c$]9Y~@%ԧ\Z1iۉDa7ز_мD6C7ͳ(-ψX+bY0S桺;wV38mqx`PVַvW>}MxN)ΚV/*vsʈ
+KogkV1Y5|sNf
+Ud;6d7ECl@sZ{6LY%I/X/ZP2\6,4Y,uJv
+UEv'+Z;x6M |ϚecVpR4u$1
+gԽ[rBC!Ous3֛y3첀z3O*tN[Q?S	kI}զ٤{~&gM1E괟MS>Vg.|lc{o&Ty|;LRUuڮ/Z8r8G b[j/^z򫗝WRyN;;onXDطT'IfFcxp5-1Oj8前B 'aRh(}f$?NR:vT0eCn~mx]]sH3S]8jOARQ)MRMRQ4oXZwN'KF0͵= !*Fk1z(M!(])ա5 E !εŤQh:>5"Cpj+1L?tWn5w_4@6h^ (wdEW|ou_^auW0;Q:Ϗ{0mF*o;Z?bOl?Sag_<-E8েbTd y+ej.T0ao>ʥӣoo.o?Zݤd>cvl4)+M
+<Q 0cy|*/l&S(+YCy48uNėn9Ѥ6'<"Gc}Aq*sy$D63Gj3(GߣeڻkSҁ~<đ+ğLT`Q?.~dQlqm裻Z3I{{m5憒Wxn8eCYc뾓g",O&rkmy\v/3ٖoEkjne<^:w7f/r.mkqFB^	d瑙7)Msέv^3:Ѩ9L"ЀPrk~&{4U^
+ƥB̮θhNT:eăq&~Afぬx,/4w(TgfK#PSLzEIA+PmTu ?`ژ"9>wx|:
++m>6EEqPcfQ3E@O;4AA3e:D'v5RD{*2ŨLSk:WƆܬVEt	XNWclWs&tq3o?5)V'[vj'[M?Y~(*-L2t2G\{2xh"Vϻ?=z]^i4J9qQ:Ƒ*J+'M,pa;g>s\itSU1 ~oAoDްaiqm<gw&?fK]޽問L(
+h4a  JB_sn1FÛ+կ6Gu*ߙmί2c[HFBcx2F8|˦b(2xUCG`8xCZ 2~qj쯠{msk2,8
+iI"`[|]q|mߞe!r~WuGNk'L_ z2;&4hg,׍_3''}Qzc"6Q_egDo^?6^ߟd7rz~-w'[|M>8,kUImuFr"No"6gS3\/[O}q|d$92|Dm΃XLs &*PnEzi]a8LYze͞6֠n|G=bO=<Ů}l !دPꇵ9[sĥkWb+ݛnWr̆t*'aQh[@iRUDcbAQɼKiWg@i0ֶ&οN[{my4JAbԆ0Tuq,\n9    IDAT%$_jƱn7^i4ePeYb\ RZFz3`Sծّ$g`<ŷfZuryFV9JHP"+Z$zѕF-DOk˾M%*p~k  'X>s]Նǚ#+lgx`r= Rlhrrs=pL( Àb<nDW4}[RLeUvqD's]0IЃb,Bо85/t7%u\nwfiÕҟƿާbYl3Z! !Q0lXehy4q\dُƿh_=ݞS/w&0h
+2,RTP,i`.?=.v	Jl6Z@YFٵRSR5EZ-} N^8?S!Xɲ]	DSm0~!8,{<_oO9nD27 ^v?}&8%u^9,	R6\oi44a 
+a9.2'9S}Mca[V,Z!aHcƍB׻RȲZیƮ4$N_Ys2O֏?%7݃%nM}!i(O{)g,h?`W,lg,~3܄TAZJƙ*Yq2t-e*T
+5(gI~kÿYN.ȵ7}kZQGPR$*TՈUV<N&gC$-~f \II%Xiڜ"ęcϙIJ10l tQ9b [tEn舓hlZm(uc8K'.:]Ri^^<ŮqA7-C=.C$DDsT4Ƒs/RoI嶆ZMgJq<{e*7jhN})ɮ4ʿۂ:Cclڋס~31} K{.!Վug&킵-6apٰPJ.s:U(j&u}O0T@u RXrV=}RYNÜ
+U\fLcho3TO\
+>Tz멥*U(bGww&aQ9TPzQSM1bBmHq&b0ҫCz6*J5k]P  }&b2
+$&e^Drb)+q,ƐG58DHmm~L){z#JS7/eޯM'ÖÄ[3`ˍ%м=po7=ش`OhA!Ɠ7*l)s_e/>٦Ps<N*\H$TW2bjeZ%	KN>˭&Xi2qqhB7Ƶ~\kSJ7.ӗfEL&x(v]Z<iaAb2Q5li&`8 _晭fjY{Y)f)&3yTa.<n·# S۔_pIoS a-;sWU;}ϊY*U\^\*}_UC$+ο
+qj}˥.0'~$q}O^ˋݜv{"b)PO=Ϭ~`.&_UILK.?=wbf|;ueuӗ,s-jCIQ:)vs.H\TQ6*%㔤j0U&J
+ePR+"3`Uf͖/۝rf2G$`&[-gMF}\L^nOT2ui\iz^OP
+JS삮:aò07a:Ռ G&Bz,_u!Ss#RR8,u9ne4d#r./|-/$B	éA F&pCeDb}΅ Ų1Z[SպfEWJj*V(0v0Ѭ
+eښ`dʠN8[ N-[zEA Yq 
+(a(KC	22&*J1)S3c\' R=쐧Z"5r$x4+`T2|]%y D=ǨsB,kH"gԭ.-;ƺBol:4 N=}fzɒ*ʜYӷn93CnWrֱͻ?o]ۼ۶8B~P1D8	jPޏ{!1| 5xA/CzHއ/Y3vư֛:l-+rƨ8'a¨*%WZrCyEόE67ָ~2ή/x;=N_Di?.+Դ`oLO}py۳Bnu[%iv~G4%יLv[;q\e)Vs+~_T8_@z4a2@PA8WBs0ּ q"C8Bs%0Ss	}KErvV
+9y0ǳsŦfAB/x!pd+(?Û[3_oPk];{nq$eY׵fW9"7LGVV?~3g~D]m԰Ŋy(3|ԥqf]tu*zi&g6Wqʆ-?#gr~Zu(S\EPĲȺ!^>/yip5PR:kw,-g!g`'LkLM m})1+ &zILVFxv3J4cƀ`Yh	ҙ&u`iwvo0;VŢER\ٽbA>cX;0jAŸ9WU䪙ZIt;l'v<gkJ
+灙*/C퍘#? n:=W6fUV@G<|oa9eKn(5j-^.4ڦJML	FDTx`&.ˎgC%69&DOmJPc}@
+D̘j 6n0}֚{:Bl5ۣCdQ~J>azXhҵDC6-bOO-yLT2X@J˱
+Mה
+FEUP28TzpX>Kucqv]_Y/N_4Syo+U2,8>ln!
+2JZ[1@;8#@0k0g0_½ } p8!
+6o>Ւ064&Je̘o\r%rXf><;qQ>ۉo[ۢu1V\}tbC8b}jo?/$q~4)Yq;nq\iz\{EscEk曝gkdPۼ4`}C~9*Do0!\'0Bl_UaPI΁[4I/o~qۦ%q	G_M6.сI,!%Bh"֫-AxGP!)	x'oo9/2=TqSJL^+d?cGB3gyמ=;JU^'5:Y:f
+].Td4x wX b83Q~|pyMNEm_>4`U&3"Fe֊S.WOڼXs-tje O_X浦<Ց97yG(`S6fMT9]]0Grvy~`Lys87PM:rj,9>Ox$r+"<4lzTK=AC4M[9:mkZϯ5﷬Cͭp!sdES.&ce.]{^
+cx߿eH4 x)W;r}YgTg%
+rjJ;ћkFHej@:`tS-̟H#`3PObCͲ#13|[g'²G:DC]h2]`ϰKblTRH	L	ӣC2Qr=ivO:T_SwrM`<?b{l
+UfNxd<͐ԌCx,'Y0+γ'887]{B`Yd0N܂7gP	o7cA5v:WY{~ n:5o$u[0x=XBﭿlT6*Zh(0AL~v	lUk<InVlQlNz-?/_.h4}^)?!M`ZȲjf<:`VWY+^kP
+hGp߿Ĳv}*Id4AǏ~/E~=R5VNg,LY
+ۃTQF=pSjV:_dj֛,͵s?*1
+8vnAߪ?Vd_طI]I !{g?Eow}Hhׅx?\@#Bc޻U_:J_8,6Ю]81)vd$XeKi~>'HiPE+b'$WVD|q){ef)[zrP@ '"DC5(z'Tt8's bTMߪҁ9u(S@Sx[0=Eeg`
+ HL 4Ej?l|NUn8_81~oXqqϸw?!;k)k^Y:LSKc50A8 wMdcL]0:d먾_Cp)/}(6@i8usU08XH<@d	~ȦEZGs
+GU ,f*r$!0)(RA=4`[dy\*t}ꇦ5ިO+l[V8Shh@:i+ͤR>ևm}WaM;j~:GeI6e-0@0Stp!Y7dhN)M4`&3ϓ<Kґttc5~{{0^w%gOOժZg?Չn;d$HDlA1H)̗W)mOJ LsLn+9#G- tVpxu;K	))(!ȇF́YGQ܅d ^EW?1I~Ro`BbHۗ#%&I5	pLwҾAKeSg2U^WArv·m0^(c,/wL+7^_Sb8TF| sK_qiU87:]%9-n΃jYʡN	˧_h;XRlXJ,3lX]>{ب%01z\ᵵ?+oGƿ/s1fY։,-E2($];l뛖WyG(C@J|{WokaA;OE7MDi HC\ĉ|;9'g7_yM\UptNB%G&n6%-DR?`P
+PZ73+#ZtkQ0s>><_PDyUhÄ`i%Z վAC=_̔ z1P	jL$TW1a}9 4qz\GsL%hWɶ)r#	`ȦE//Qi2g8hWeO$,f/\%/j6oQ^i_8_q(	
+C:QU釱-0+B܈|΅ȗal-ژiHUŉ0i6#%nAhyWt^gURdbr"uևfs|OtZed%=ZA8ܛ&mLlE̩oxds	MB=7I_nW|$EL[藺jdOv)}AW&=/өDf{Q gD*h,l~^R6󍁜\s{R5fe4~x=FW>Do6bJtB6!
+`6:Uh{C+![Fxh<r	P	W1<sFosg>[&jMQlb8ɶR,j@ޢ$ku8JA~pC/~Ŏ	>g	R݊n{x1o;սi}~F|C<NHK巵0š(}Ab,C_Ck?u]0AF9l~00hnO}2Z#5lg*dh(
+5̟P,2V-ItvrH-f^&SM%0A2C @Raz?z?P2t'e |e~ߟ(?]t?gY񃷗=}!s0lpjve
+y5𵋏,;ٟs2Fs"xT yYվQl8yyZgvZ7p G
+|^jl(j76HtKhA)]JN%.55=>eL&'"95gqvՙgUV&PKq
++iA5
+CiBaf:83 He3I]"r#c&QbIiSAĸ9J錘>)A&G29]0\Cź 58YoCi~~o4țRۼ#N]xwcl۩  
+~Pڅʥpw0oX6^aI]#09:j+62#yd&~l]E Jdc:|V~bJǤXS-CCVl$Vz:FBx[?1F_ю~b[BgXXĘR.|}DGhEH␱} <UydA< dڪَX4d<PZzA!u=6+og=:+7C;,na,3K"K~6
+" r9H[P!T#[d obhUHGH!9_jFf3RkJOf.CtcՄ9ǥ)X8Tv>o^z.0_v?	uo|sTJ5Y_!r]]J~JÉG)4秵Jah1Lt3YJdx2w.җJ$kNBmU 0v+<#Z#Mf{YR!"	g}ڌ0V    IDATUV/+V:Kҏh²hM%EenB~[ܯha9JIz)TJ廹J4Ei?&DX<FЁaê`$D	gD!99oݨݏ}c^xy_m/}KO:SrC&%䚂Trr}VO1үsܾGAҾ꞉w(m+m+;Lw:RXɠiYi4Q`%&XlFCiDdcV-򞞭rrH106i!3MԒ:T"[(KFY6y["Nn;2*PrɆQ~0GRI#)hg{j.i[%(0Ox4%ʮs:h	N*?yI͸?v匶L~|]HWI۸`X.ˍmlgGs冟H#	;@@)\o>JR0*1x  > A?}J% 7#,/4X-0"4J^aYCQ:'VjUu&OIߣI/i+dK_%2SRerN[?4P\3̓HlwGu@x2v
+`V`hd=}h^>|T}@uF.]JN_0E 3*z	 Q3tc]T	Q&9I5O_jaKeԮcPnt1L/ix@领n]so
+YW (0QA|iN 3a6@Bp U8{an}?zXZCᎣ]ۼS(슇ly,%s(Qf!zƆXt5+tfü]ZTjw7U[I+H_t)H$TX2΋3Y Qůͻ(,0|ky 	#;J^~GпtztwFiRXB4F^tW%^?k;QJ!
+
+u Â
+1d1!d8DlМ?<}::UFWk E4?/vuk((Mre2YVx<KQtAp*T~0Y, )ːcW:9/~vM7owO|;/?|k_WI)YYiӦEi OƢ}#%I9Wݱܒ늠6uF+y~Lk9ʪM#_r1i$}ALtgrWE;Ӓ@# fUt%u<"aye}EdEr9K.&	#<יK&LRPoYo{$G}M
+@u:LBBiWۉrOrE2]0N_H5ҾiyߔtR "u0lA9g $cU}Ar
+Ԅ<-<)T//0ţһK☟^Q#F	/zl$2ҤdfQ,#@qU=;ԫ 2a瘨ȤC
+왬!{]ɏdjZ1e1E߀3N/2HeӀ0pt[?@ Ut`narF~ɦ*t^Ϭʅ& T.)vnML\r{4Qx5cy[.@8?%	kxr2Lc3|xՅ2%6>*U_(OsnfP)@"8ˠ$o@ޅj5ow?91gtw#وrbo6418ji6ih	YH6?%cT?\f٢TޱGKPNDEf-RX噜k}e\f{FF?[C<+@J۸āk(ƃAjBsY-_|T)hQ
+OʕE}68U,?h[|ǋ֫pm?ݚA.!u: 5'ܩ7&|Koku?$r5kCI±9Nkݏѯ:WZ+Ws
+92A	 vsJ"0X}oig+F~~k_ڵ^;m޳g޽{?OXXXۮqyyeGm8rl;j36ߛۊgto(Cf#A$ǆ641ioh v*2i˴W"˔s\w%YTmb:\szZQjJ[?Q 9|ٚoc"ƊBbQ$3 V.l,:6a/ȚiyZfFbҠT7|+!y0x`5ϖs9mǥJ9XYZ@f ;p(M"j?k섻l$^ +-A!< c> md~X>ڧWR}~VAo)jɣRgm}0CĈY 6f#`3JaȏWxdbYՠ7Xy6RU"[kU9uyINq4VԽc~D}z\ƶ~D8ufq
+c1j/fN늤RJD)&j&8kVk*Yg{rS1ja;͜v΢xh5L`eou>h^y0E(B Id-XUd>6?f? @x?cĀ	p/j ZO5~"[cx G@!A9չ fyݦq,_-84%R1˫ѯiТ8J(k-w9]m-]˸7g]Q
+Ӌ/}KYKҽ}?Mb2$$֠7G t{_Mʃ~kogl4s;/gl	@]`?+hh:d8km֐xe,_)3/!,Mڡ~{kot4[N$(@DՔt4,j7/R xޑ4Xhmrc7C!1X^sTEHCf܂0<>qS?S]ϩ~iZ(,J''&&nݺ	[TMWqNR6XJ:վ W4HѸԬ6;5MU:a)ad!˖' Pm 	$jՑs>0#|VtVSU%#5mRY'z5E;~^v<&#ٕl		z]ss*,L[L儐gZ\NX|v{nϚ4T\N^u?iGFe-?,fIrR*ZnB) |ԧQ݈ԇU4s@0Cx
+)u2T ^Dt
+W@@MɉDWz|yyvفa|a4ael{judĄ0-P*ԣQͥKF[TKA
+%OL_eU<R~:fh7kYgGɕx蓔@/EzDF.
+ȗw9elꐺҩK*{kwwr.sw<g=d8W3 ƌժyg'iFk[d$ZH,HUml%W	)ߘ,|OXFzFbΉ{(ۉ,[	`yO$[蝂L-Tw]^wi2V5d{'QyXs&]S߅CH[F7òܜnp>S4` j Z֭Kut-ʧ'|tw]dR;:!DoU
+70jݍ_WY^N\0ߪd#jJ?r8-{mCkRJWqp8)7S6i PcPk˥ŞwPkDCH%Q,k $Ez:(~q̞J;yKB<Dra9rfd3UկDѹje_[WPބAFíw^ꯀD=P>K0p0査2?`ٳ絯}>ŉ{K/={t߾}v?}g}}$SusRF:.FFOW[D=n$']~2SZ3BL1ddJvE}dC
+}2ƚ}[yB`j!_-qLQf4]=5hV'ޞ0HB	@ӹlyO@"F% 0L
+Ԯ9?	{^u mEF{q,%Xla<2hdޥZ8;a9GSʙ͉gn2`fi  wI͠&%0Ԅ +"k2
+wQ15!@X ?p/FY I)d!!(E{|8'/XmoAMR~f\OLX:}zjIn`/:@ZY(Xm"=}icPUu@]G_}Z}m~M?N&B)^+*Ws)ez8f2jL'$dq̕Zi2PQ'mYʩjާD&egwy{BABGI\Ivkcm!`:( A$d
+g4h
+Z!]hjX=s Aއt	Zu
+rC hWg᫚a~(E} G8hV Qnݼo![
+ǼMr]w S.7drY~+~m0Rk~iz! |G\nGjl8lǥۃ`_pOn,e@°0还b8Wq p<*T*_Rx-WZƽJK(AN1*Uq@@40Zq_lTy<=ʆw&> bŵ2ߦ# XB< |G@)z(ԑ  (>LI=XeK+{~3ƻEw$^n,6FBJ%
+]*2m/3U9EfA0IQ#&kiMS[	Y/K*o{Pz'V.lRLpY<*!Y;у2 HFRU:{,bJ8
+cb4ls_,
+d&X&عJ 0w5\3oնhRI3(q's9R2e$"R{-pڳ̻."xO	~2@,^o~Ok0k`LN;TVA	hhp gf"@DꂗP?C0b:Cvl ǐ1>0!j p8 HRfl֧M*|tbJsc=lն:qB4TK^#vJP/Pȗ%T=}Yh+:OmPw m@&,Gcg8aYCƺk B7_Ou<DǌSN8'<iB*0%qhɑ\{A5EIol5J|Ζ0!;tܶS@v[uRBF@蟁[?=q@CK <t	S>:_$_υ:lgE7y &yD^%e.*g`a/&rDxh$k#)}X
+TA)j$v솿eqvm<T囂u#|k.Ǉu8hX}MAO1Z>Zp?nl{{òPjJcG?bHc]3y(	˼5K!3DaO{8?7$tG+
+?t?J.'\o)7z/gWq?Li<;A&,<;Dc]ugoZ`p*J߅<Q!azp U$>j3D}W/	$.G~YW׼5q6@VcZ9j5	o7f47?OxFjeK1Bq].gVo\	3㉺yg'yOl-8]6:ǲu
+l?ǥ:VFKw<\Z0<[y +ԾM*U.Ӛ
+d:*Wur}ZԡYy3!nнb~zO7nA Ϊ~$#n6BEv3mdʚ4X1N,~)BLpҫX_~rKO>5ߺ5t)SJO9/_V>K8×n(2L!3uCe(o}Nt	C9d7 : sN!]{1 |p9)GBl&O_C}8IUY_<~CH6{m	 W&zpz|~ ^~[=#-сZwl^!V$5}O;3#AkIa:8GP4J/wHE"$`%PL_?HNvk-P;tJig9(~G&unV.) @{|{bӢL(]O^m|k.Zu'(sܵ$V(Mu%:u0YF25c BH z?l*F($B>s#V{!CGaVଃQ3Tr?٬|Ѥ}-RL^j._5]Grj5~	M$HE[DxyQ!Ywl.L^7ɕJׂU]Q~"_vJ5aZ×h8+Ӝ?Kd@+6y^J{AkNIp@N<(vZ߅RN{D=OЈ+<nsv$MJqi8`:S	$>SDDx  0*Ga9vop r85VILeԿu4M_׮?,
+EU}9H_C]X;'Jx]hǸ-|'$r\(":|mg|Eld>=AIU:?~(*)JWJdKNtҲ̥|@.;
+A.-r9r1ŉ`GD{)+.2]emIKǚ
+A@eƗ5'O:F@y歖g %&=mJ;?H?zs(o 
+,J°"@Pw=%s`T@]3D@!_E(Dr&AU .E=	ʑEH0=J{2_t!ϙL2ҝ!NFz%'7    IDATL2rF}N.ba"P/Oͱ+Y7I*R}֐C}%,NX%Wvc#E^PHJ	V)LE}K<@D6HH6TYd nFLH~@Lx@r0:ٖ^*0큢)Alx7~+u3!eܻ}!ff[o$$i=sG`1kpjo
+3#6#5^Ft$3(=:[P 1	XSXC}Cr
+¡b$An8Ivq@Xz}PTk!Įx"vr7٬EG0T7ID(m+[5)oDҷ[kQ-o9ynSIY50`۠1DV!fhm.!ߐrlftWG5qg-bmbxPImUYB$ip1h1lv0QQy>v2c~.6/	]pUAQeԷc~? cZ*( \P9(G{ x$NgUwJ%\Kn/ƴ֯yk|3Q-/////WUƘeY7p륔z׻lG>B)q7pb ~zyA+z]|@rC {y&	r\FZl;W'K&_ @xС)3d zNqb:lqW(@/8dB")C9r0I@	C<&ٗ 'lblG͞9h>TB@\0c&,.IUaoe'fƂQ7|i-G[o!	4
+f	DnrXu*(10<-A4T@^|:C:Q#9
+BW
+HfA-G*Tb@爖=WHTX>*A{a>% "J^^E$G%XLRʴ:%#E&ȹVL/E-?/sbm@8e	Rt]2㐉~HnD%C#bJ\zY
+DjeR5b,U9%:WTSnAL<c,7j*H52x4~B`𧕪Y}y^<Υٜ8D5,pi 	9T̇ o
+">Di.Ȼjj {uU/![ %dHNAas[|Av{I|$7_3|vhHk#9t93bO%r`T^N^P4xh~6J_v>SRp?hϵ29CIORNߢ{$˥;>6#Ȃ`k+#$b+**=?
+BIlپ^׽+Un窂?u_n݌\e9Iz\,۬aݒNs_mć;, 倆a!f!,0 ꂛ#hf	>*؇SA<Dm#D.s?7<fė~0r-KKK]vٮ9 oy[>޽{|;a$uӾ(Vp%ٹD$RWTޔa>Ȫ\blQ.Go
+r@<ج r IG
+˂LPٌL"-oxL)H'ՍEChtH-R>"D6b Lo,1| ,IffdWPyPx|!R[{~>ip5S'Jt?4_3Z.I.qY)'
+@@R1qT|47#2U4vX=, 3,@j@bχф9 iXBaNc8@mG!J@GP	Q/X{"ؙV檾'V'\R[.`^hRG@ N[?kj3cY=6jfLed<PD7Ⱦx^=#U!;
+C=gO@tM66B/`06o%CB;3.z)NAnI@dqϸ5i`~f#g'+Wѯ;GJa|G6yRwXchLvWG<Eyq Bazϣ	7ӟs6}CI B ~(-l϶DOEK)D"$4	$7ͽIns=9o~~~0=xz֚s	c*ۅ׆DpԆY./= "'(w>hn~0) `$9>0&D 
+yNVGІѰ<UQ+Zo A᳡X	xĒL'Ń[#y#ؕR7y:M~_XhpUʓ9R'[<DP{[g_v{HʢoR*F\' R0{~+>zxYpޮreg[8nUK\{Ksv!Dk瞠Vw9Ky>(iF܊jGETfaT Zs!@K(sԖPƘ!,u0PHH&w1DP0-b
+CbA}3s#ފ\~aOzb.1`rh[2ؖ/Bl5Ugb M` mJҋFyOlۥKR2tH=6
+q|.&_rɒ&#6ROCIM𨏃V9~R;+;U%p.Xv 'j>_(s5OUgQU1F41+%+t$)[q?ht5_Y_ $MՃߟ[xyvD< D"eAVL |۰}C9AF U <@9h$,96ᬠ#?r]H	@E(w"#u*,L7QcCZw3azN÷6
+j['P; Oy.8c~{?Ȝkm||05a@k;^C;$>9e>vrANfD(SXUrdGJNRyFN(SĸP;| S[= c%ƱjR:t` (stXo\.8۟oN屺	c8 8 _ZWh~"=CI~ (Gmq{̆a7 #]G4T QF00ryG1S OzbFB]tk@4U0EP@|2x^ OT+$/ɊۤۧaX4C4,3j>?(N84c$Y?-oJ˫:o!Piyg/rŃ$K=oyڷ?Uíƻ6v|Wgl7˟X_"cW,sʢ[YH$yܭԂ紮])ٜ__,'$;瞧7&
+~nf=9`6^6PPᣘB<C-!mBP~=.>61X[`UA>A0xw7r
+ soi|L]̙3쿚2)xg:lkTiq>]cZf~Ƒ\аj"-υ	er˭aq<1qjAUfsxx32&p7\YJ W(*daj>e["p!3uږrg-Xd֧d
+BjF $X5$TaԬ3:hUz[ȡl͸ɦ!!%/Ì}id<ިc_	g{28z )m! L60{m/iCT1~а۰(ȷ@41tVK.L|^
+A{gPtƠɵﱬ_jS9/ps@CUQ2{I}i۱yhiMjr|hK&N͐@Z%T<j'+E<N`Y5\jfQ=\%+}l]+0ťe~u'ɦ:+LbA0Vh:{	F'ζOkuu`e\_G:xu;(~~J!\xu0˅H'ϣ8TGиAH.vDCEHd.Q0½Fא$_@AuG!txdNm^hT~5LĢQZf]I£v_V	acJYtPabNӴ|TGR/+=}gZwܪÿZ_LxO$M㟢tg=lm*9ۂS
+hǍJ2MaGw
+溟fl(7Z={2"kU!(lǽ`OP9*@x0
+=P"E>Ar,U~{Ԡs 3g`א!\0+*[*P.l H E
+!O{ҜjL5Պ=(
+	uQ馁e5.ns?1ʿg3}mz3/$ט@1d*W(5Ԧ(=+PtP<R4-ډt(0iLMvgJ	x>sA!?iik6=*$5#vpfH-=MN4r\.nMbTuGr}{鲉2^aƪ`R0`-8vݼVr89Y\}zG(3D=܁*
+pF6]A '  P=
+"9pvFCNbCD0jw@E0d!zS>1t+@:EuejotZ_-aeՄ4Dc쇧WF-Ay`~^~&]m&f"Mb*MQ{nl3Pj
+áY$Þ-@3ef{tbV=F(pxiAh0JL@]]-Z6[s=Jr
+wF"zIQfҁ;$jeV 0F[" +"5l7AmTCBT}u>=DBEPC`B6`z_LQ9Gals4)Lmdy~V	) ՔYgP h ˞Oɳ9)Ǣ֊^&;l-_P{mq03Wn%+ݜhc*w'iRJx+˫83!V돢jZ#/ndm1Liaa7̴ޢ7p>_W(3-nt4B D&֨gQLYT9TllWa,."4!d.
+,#OPi1݁VA d<FaEs?vץ8lSDnH#lipSV筽U"YDzHM`~a"-xl,c{jKC9QFgGzBҔq\J#]jP$rtX50$&`u&ͧҵ(!k&:6۳K'3%~ܡ T#`A{]wآEۖjaR|O.ߌ	~>ȋ8 {|cyqcﵛ0|j]2E8!X w(cK0
+6ڷ | QNA8D93uC1`(*'`9WbxGPPG*@"`$>e1E&w	p|d	Ņ@w6ʪGS+rՖM:9.{gs{k.:^3+8X3;y
+In"`x:!4FPx^:R 6[%Ȭ-v ?/u?4wb5דy;FF MAGK5./Sy?t|O;2F%1Ӽ,9t\{UkEY^>!8DBذ<ڈn~2;C8~rs	:oG}p@>JFt`:	>CwPns5ϿQz{/}EGSӟFq:b=SgD_Q(v-v$9c+þud-Q%j]UzѾާfwS2GV<i7/nQz>pߟӺ9lg荍? h`=sW>zA^ܢuV(
+uѡ	J?+t~anQ.## <$Mu*uqnM4W`ydX5d0Hm#cjP\Lk1fN "7 \$C85U &v.9Vo~Ksda^k&ȴ!b$-uۀ.bFv^qjFj)rmK 7%FO̕ba:ӅԶ ^iR4Jd>&gsԤ(23H!To=p9mb.β./]2S%mTqFPmu|K\JԼv&rcR{qys(#Tlv9j?Q2l+^ZoT{(n+U*^}іO{ec&WM),TQFK24N@>FނdWaϠr5&4x: @PS$W=P!]BpNe`Wѻcu37_q{iz4}WPiB	tajci #s%yrɲ<zM}0[95rG|.׌াEnT&/iikSA*ڔ'f~ԥ4dvd6kt%1#!69Si\-MneTwi8Q&&DicǪU囡\^;(^ʫ;&+mc;;˳>巻-qbW>BHkOI.@ @G0dVP	PFb^.ΡXHCáz(rgw6)&?# "`0<ex-D A:Aեo^[LŴ|6@2u@'-)QfX@tz(S+vN#=;ً!HGk.'`bMHL Kuj9	޵?d}wuyk4p8e$K;vGk?zoS%ƃƶ)eRsC+w E@dB:]&!XFfaFQ_DCa:P9*V :FXAq.!mZ,    IDAT&9hw"-01l;|Kuෙ??Wڈxd:M8<_/X4VXgXI¨Ť@9őTXdZҥaX&|8%"f,wΫHC3뀩R@h0N)SXQFDqpMzpG\2",JȺzɷљ\J1|FS\WJci(֭}q:VmlNGiS%[	g?Q%{((զ7a a@c ܂̐K1
+d@91U00 "|A*g`u< 
+a}("Xd=w=XuSPF6tD'L(ڕ_6F~qVr>ˉN;i-H̪WpX!QOg'X%߻B~86eԌؕHg/.KfuMlhC6-HxL:Ug]gTrަ-dP2DrnW˱͟$ɍƺm1lCkg )AY4hv.2h	-<p 8j!a`dbڳh!D Gكΐ]|}ɓ6C}2D0
+&߀Zwq+`^ e C"y~nȋgڭJ+u>8+dTg.J\IoK:;G{&ŭ.G?I㿌Y!V鏦ŝq,AE<Tw>EoOsϵR: $Lփ߳[sܽ0N7o>pMQ^?|mi4Ĩw2Ii.Wn7p]Ø!:
+w@ؾbC}	`)(`A$}L:ƨ/bp|y))1)ZY1`6Pb  \d3HlȦhaoB?kX]8J?Sm{Z4N>TPER}i:F]*5xG?S#yvbH_buU46EnF{j3 Ll12W鬵V=eA+4Q40KOMԬ2c=	'[=Re)t׾o/{ՑBlSНQsN+ɻ3yrvY˭S$eYˆVH_Pe2 ]XUTAe)ZvƏ~=s E9PE*0}ȷ9 j/HL/ ݆.ѸӋPFo06hC̻ͭ=;got#-pcrHWkXorW
+]=+!KPPX9V)f&Y`=}K.R.iH\̌xDT`5(m[I]hZen[1Q8g@BTsuȀkS1F0G 3yhlgSSk0:΋;{? 0׽WZ
+mo-D=P
+J!hv KHPZ_0ZzſPOf {^=2ka
+ADCP1D9јKH6QYZ.ZP9! ngC+hptc4z4y[R2W}C%-qyĢIcJ&UJjn?UuO$0}Ñ:_Dek(
+y5HO^Ctt	 ~iwPX>}-VPmp'8U)k1݂ػ".-®#Pfȧ`eX>t	}8BE0
+SG0_
+n#aU`WQt^T`"@2Ny"Akeז`
+ P%g>Gw;S9Wg%jRT-ҰB0j<*4-
+;6	*lSE<Fhj	njM
+-	\cNN̓3 b4Č%̌=撆 D@NndU
+f@4G%'rl7/m+ssS?W:9FZ./z4~W<bjKy*p>FwHYDi?TTDAuD6c֗o*QD`e2%)0]]PNvQ`Jd{!1}6tCEgjףE	 (v2F1*("	6diyq͞RHM,ƕ(		zo?^=.W!t.8[*t\
+͓Urtiǁٱyl>&50ڝyvXIL)z6c9PّyCSS=>P_%Td8ԽzRQ+U.i=WkyNXz2(d|cmA2F89@ ATs#+E>U 	#z.ZP	dgF3pWP>	=o*J\Dt	A)-!E><:ςU}$^)rLF4:Itբ8Qʓݺ8yO:9Jc)A §b4̤fc``vi<ojXط>7k9[WV-6l54{GR=qYqs^ZwJeͅq603;p]  0QynA8}),Iv9L֑Ǡl1pHFؽHK&``NF!#QCLQdyJa&``+8^mO_kw?;VnѸnf#y]_ΛRXUO;r{lܝ㋂4li(heddv\a)sD-S>i%fD
+F*Yhrz|'Jev]_vYw=i;DFڄ(Xd,:UݢӚ}8٠lx-kjޡPu|UT4a<Q'`3_o'[
+P0c3bOdy͍
+k/GQ>.A[r;' 1C050! `(@=YT# Kj!F6wAtxZA{'?1|V(a eyT[+KyB7KduC:XCFQ}<&77 D|ꑙ-}7'0!i}B8/PrhW/ZDt|s4v!!\525iW'6{ryf?OV4!Fǹ<BIT)ս?(Ynv+Rz,Qdp}a}8꡶d  Ph_dE1]$B簻H7t,"`#]"|oCFM$WиS^ AdѣE
+*B"Ja!308=a٫Go/7dYDR>RG]itn:ڎ4;_S6媽PB׺Y%JRG|#ZIgsy=@qT+䉙fKR^(˫jz1`E
+Q`46 i	emʐm-1,Sy%}FLw>hZoY(hJ!oCT%@1 UBCx,D8vAmt_'2WH/`ߪѫo3XsXrF!JX,JiƖF@K#2smRs(q7RfRB)95)L 6AMjeo" 0H̘I["08)rcFϵI3ݼH>ɴòc<Y>/M Z_
+ؠ/czӮuhchqv g$x8Osi$,P,{ޗ7@8),YPrQ_pPD 0eXP!	(*@1^_Q1>m: f!݄`d2]0:d
+P=*A(\	djO1(OieS6~  MuPZۖ]zBth
+OͣUr4iiWcjn` 
+Lm2umJTB\
+YYr93U\+7-hFٖ,bQ4XUc'+-brFGfkpģ<:-9I
+AHm{Fsur0x&Q`nB50|\hW ׆p{G0tFyD hN,*WAϣv)A40~o/b"KQv3@ExAm$[_@-нh <4ZxNx*⟭:#(*,ZQu~iپ:oe
+,RQ&J
+JIB?Lc9*n.IֽoxȵVX_7iS}b0e}ѹ#{5Q_ֈ0^[OHȦJ"`!e4 qc qdJYf!A-X>h ,ehd~uHB0-1݅,@9(]A<D@!H K.!cf!+L16܂ڇmww_tq!9'䦈f#Kt`%e)0X9#jyAˬJZW=>vYgWn+d12[%A=E@It&b1բ¡ܒa-bTﴷ:o:/<o8_ɍc\@
+iyc u0_HD.|| <8wj񺢼\u<K<:yόht.#H!(+)]Zq0 wչ0#B]@8E]pV #Ef܍!裌͂
+h?	f#و{ A0ej~-ћ(R:Eq/?{&'*Ujd 
+B_)0L1OZ7!/G}r(2yK^T`!7O@4JN<ѠH-4Ț<ߤ<=q 4&tG剆``]c(SlKwgq"ĄGG4=a;O$iZ_Va{ݺt+[m{h@kT8>.T"qa Au	 V }Fk1Ezdv
+cMc`p:߁nCe9l܃w?k* \d (}txABXA٨㜹?լw/ylf4PJ"E "zFt>9_wtOX/WfB$$/\ihW^Nckh`yAa[w HFhE,ܗ ]f`p|1Bc0ڱfInT&; wpE2@8+ (g lAE-Q[s;1f&]pw``gP,F2DFqRx~;&|0~~Tn-4͋cN>.ge]ǆ:=}!NwJv':VA<fȭ>W& OfT.dFjr8S+=қE f PFi#6*ca~#'!°󥱤!2뫄 6<.NϺ<\{Žnz ؞xȵ?=Ϳϳ|}kmeRաhq6۟7+O J>Sm/
+񨰑ľ_`Rƨ8hy<!06*`WQ;dn@>&"\L]0D *`ՑObrT2CuVuߦ;=	c0#be-Fñi?̲s}d޴</ 5lkd[qHKo!/S\qB!3C
+1i#沁"`pJkLP@VɲCĺ<+{emX4Xo'ϸ*u׵?ZtՎu=;J{k ?ȱ?8t'AY!!I%x`j۽+!j-pAZmH-:
+*FUiuC%!U&DѼ̃:00
+N2]?	@k#܅!h`h>ȵ]~rc6[MI^і]g7\s'թSIJɖ%88Mcp\	i0t7n0\/Ƅ撣18b[dKB9u{5}8۷_Ac}5zq?Ψ3?¿=IEU>0m1bUtM0\2ʾuv(M\2/o<߿={6Gu$=8@|Id
+P$`etM *):&`D%
+fabhG15A) g%B1QNQ`~!H1xk
+k`6%XlF#=@5A8+gQY(tA-)"@+wsw͗=ϫrUK~.'9U#"NymL3jc*abHX}{xM^n՘vG`"nn!fRCz4\ҩ6z
+܂35[+Y")(X3=T<
+C٨h[2<A(!'Wg\E	m+_D_[)oiυ)%9WzYyu%_H~M웄)>7PgRN` jx-C7&0lOg av "d1	T	(/GbD@0J0qgp$ =h'=njsd^/D+go
+pH-Mp/dY'dywLc Jrjnb{dp"9 %ݘ9>4OZ$rȡ&B+7SպmAB/	X'2qw|T/H=w'()e} ]]B=G[idGR2Jjbߗ58";2hGЅшV!r>htDPZy.q6 K	(j  B	` &%ҫ(`ͅ>[e}?Z]8-39̞@ "%(<;BtZڶufWky^qҹ;v"7ĳZCUr	R\պ^F-L75?Ptnh8l&IYj4~E@mOl!Hܞu1-f9!t趗#lAV9!    IDATe,=dH='@B F$FPb!,C4WPL60YkΐiL%}(b|B+`9x<ZJKpPNz'dd/w0¶QLωWu^%|]~2"u<E~1!M-ћ|k_/gwT+7+S0])І_!qgO	?ՃUv;'C-t;7ÈS,Gj~aC<UXa%>ޫĔp7婙8l:ʄ8ˮ}Ŷ϶!	O(n;gOKݿ6~.\~!kZEKPG,x$ʒX
+-4Ju	Q.]sPW4Wt1{"iN*/9ނC$[H!fOPUp]yT3x1킻p)Rp{YkRc8;,W_UXLeQHT@ 悅pjpF"-r%
+o0x&9otI쒞ncqGZ	2Bvn ִ	jaDQ;~tgخc=B~o0-wS=q>cY>cwT%,wQlx!擛	%v^Ecv ߃߇H,r u N#@?jc#X>Cq#ѿ  s!M4b94akX>Å;Jb|EUu>؟q7,v5^S|~i*2J8۶k6&fUlׂ''NWKgk{曹uQ*nrft77bZ5wYE>C>(R.Km09(p.B`z7@r0o.Pq>4p袑S
+j
+:	)D{p"xNru	Q28_,\GKy+<	Y#hAX=~)	յjmݗŊB{6UBh]~hteɩSR3b<&ꃀvJikgïi#zl+wl5h.}R`]Ĝ~鵭4Uc՝ .r* Cg³.llz`Rs8L~(=#TI-Ll;u'BNF/iJ]cF-rR;.F;V'	 8TUxm- ^FCVpB먧)(,:ѣ6l!3@0܅D90."ZP@P`U"vJya]%V)6~$TiaGi=2OfCCѓ仯w7q.\r[&ȑpޡ'S3c(,Ea*BoWNC!#1Eg<Hm`ylzuTF?Yf5r> u߶:"Lҟ)^BM\Wyz#llj9}R$SDM%,Lvܫ٘lwf
+Nƀ(p"]d܎jUG ̞7@9MxKF`,D+ʑ"c=;,aP5-Aªp6:;vu6@]%1$y{}gv7SRp:McuaDC=6IT|zqsQE\B5i:x7z<[;?ڟt<I埕rgVJ'Z7ͧB~X0R`>`4K0ƠBK"pc.qYpBmdC
+Uo0h!#^a ZBV anG`41~ l^娅l Q	ᵑPȣrZΑp %dV^SXn|>O}swlNm`82NZ4VR PP. 1k6uzO8
+fJ2#NMfqxGM753]]yv$* .iRbҨ}TFtAn[n?TB0`@
+SȉfD"6ޙ)B#O+ܶ.Ubn=S/'lv`$Br/<$޺*KE2+7H5	.(j0zFt<D9@9G=czԆC#\ 3djj>Dqxa;p){_uǧz:OnSN#kf`>r#%edjrWi-D.VJ;i<M`c3#ev_VLɖ,4g|v(bzL@4.`Vx}q1SROg	$o~ױh&ZtRV+xA=uc#o-k~*<&-@ǪEB4ᷠ$ı5Fr ʱ"(ѹ#:ˇL KWy6Y}[0
+*GCf-DAu9k\  p:8:KCg`y`6FވsU@-2V0e|CQZRC\(tx:=
+ckV'⼁uT,?ǲJ7v7'.Pqbh?m[t'^n6ås+ΓHI%b#Z asN0d*A9*"	F>lQ# ^uP'6,TF/|.DlA4djr%qU)sx-<|E
+:p[Un
+4(3X.`C
+o'xιM[ʴM;4b&ƊZ`!SXaIAeecepŊH"_Nj)B6	k1HY&PzAW(еɛ4;VwDƩ`$EVzH/^u.)~dBYq8={XѦD
+yc zh6y	q[Zc[,):i^xUqjA-̇PY+A*]wX[S_ L.u2Cӻj˃IX.~̷,H-zr7ta@UaG*ʯJ[R6m!b*
+:[]m-PV!)a4	#ApnR)lg#%z~K3vIA`LuFj"^5 Pb('yZ\l@մ&jWЭG_YtjR	P͵{Owp_[;~gFejn]_lh涏|^Rrc-a'đNrPgC<V@r:	*ZB*KH.y+=NFNdAeL :!/7ucP(s[VU1xd6Jf-Blv(t{9z )f
+PFSC mHauGD.Q>Ztf9#?t۶.I
+":{ku"t>G?_U/n@)WEGƃS+a
+1ftJ kT;̆ {0F/|ǰ,62D`z`	 P%sx&-8xjk,~Up	"Dўk%/a1rQepr*ǫzN}/2 ~y˧S0-)(J4(M͔&U:lYeafyS")t5(۠ॶ)r,ؗ{66,Flݦբ
+@MN;8MV%LYH;;eY0 ˆj4"J\3qz"WVkжSqjKB=o:^F_ؑj#~[Yu4{땝wXuەjq$)BوRxVO=4dIx@B6Adm8*BU{ u!\0e`.j
+jc|\0n\@7FD	U#ATYYmJ8DHΑ5d{6>R:u7/Qm;mvެ'U֝ӧ4fztƺH a\53\YkP؉hALiۡ\NGMą
+BeڱhJBNe'?A]I
+Nbc:)$Q8/[·U!B* ctY~#s>j[OT9%-o:C+d~؄]'bBw0ۅڨ *Z81dBa7B)`2 <lTs&ǠJ8K=Uڐ%TM`Ud׆`(
+JA[۲#_Go+u;?{Gk75fyy}6$UA%14WR-jC6%i%obt6elom=}z=%*-^,}!X?FQJI;\ȌOl
+): :rT!wU'\sn:M eUK(gv?Q:p;\P>E9֐TUrQ́CLwFE9P&_G9RԶ߀[p۰\ L UCֈzV(~ݕDd WCoGp6hǥ+azty54U`b0┦XQAeFs3	钄<TWfvE|rEuIpWsv-<%Re*"eJk86ݍ
+CKxîooF?y-z/EclB'iSR6ݿ? V?`mJA]A9|ZP[H;';.C=a(CQUHUj"+	@+Hǘ\1E8<JhU J1<NJ&!/u3~ yM9llTGǜP#C53W6 CHakT3<鐮M]
+ajJB57O4$jNCE]KO8GOODJnKf=^볜mæp=!9Bt;G"w	sy}]5`]|7&X|b<ㅒ0X`s(Jxu.!0R@Fґ|:a0D(npS0xriKȷ Na<A+htVEB^35WuY؄"+W*8; %o˫nG}X;o`hie-kʈomPHL.)עֆV򳙼eBܥt*[a0gw?")pt~GS#nKsH'ώI-mN  ,(" FH6;u
+B2k"CmbtϐNϬ*VpCbC!,SdC$#' `U,C8NUtՄP(4(37?9Ǹd% m4#F>Q%w뒰25yrlfP'4IGT2UT>csN&='TW5afF5TPcB XM#	q{ҝ:O~Rm:^>(L:74J%^뻕sÌA^OU*]Ko/1P*h4U5veۣ"wtFk5u@ ![0f3m1a($W>' JP1|
+~F  f $d^ 7>?w$yC;ZjC[.dҷ*ݵng-FY<:0pҬ1W-c%<6&=rOL4?feщ\HI&;7mW7d&f"B6ʿU~?xWoLTR"'	yò@=R"5	PdϬLw31
+2@!r%ZB!; 8|< mAd6S(&Hw _  j[WHQMPdHP`O?WA+d`^G]٨gX] `R l|OVxQ3qerTIzs)φI1넠'<.?(5ɵ#R.wZGJwHI
+PL%o?oj7ޚLwH-K0e2?<iJ'e%A'/B4lk6P(fh!bᚏPf(`r/e8,YB	0YY cbtnuP!k^ 8uDphYˇX:l
+A6B|%/X8U	ڋ)K~9w]Ja-ZۄDKC;+2'C0"#rOZtimuzWfMھ^!L)QŴ;T|%Q|nVtUFayANik?]0{]Fԩ r&:YekRT6wD?Q;}~PkߵtpYdR}u;U)O2:?)Woo4y}t:KHn뎇h`"ëh-CI3Nabz	^eYm/hFO.`j#ZC1A'0|
+"{C8WrpU	A]1Se$a]?S5@G^}D?d&`ۡYuo(L>K'Ԍ~&=k#}}fS"]&I`i`PHNs(Jeǯ)JXS/?qi\MEm<]Pɛ[;+qkaUzY[:uA=ٶlOی=lPU+^6G$Fh`qh7  ;D q#xb)!t-a~ZSp N+9 S5d-v"Vhl aGo#>:YACwP-MWj9{dul->5ڝ^дTR;.\6JrYi}G2iTzCX>!otx!O?L7o&nF?[_7SG"d#B:[j']* qh?,x 0ނczqQ%bL,x9нF1Vh_膛P0-6i.!a	v ^uh	<@1(p,L^Q$q/~9w_/j    IDAT={ew_i 呎GV(l4Fi.O=P%uH' a*fHHa*]M4 sUfc.DfY#j_׷ڳy]DհT]FK2 #k{*̿&AVGXNvmEKy2нXQeQ>$]]d?,-+z\{yj:h]cZ!OQHK'6p7D],Gut"0C)C8!$ԂVSDkH95$RtN2/`٨	D	c&ٜ;8469Γ`t;+5!&p,-ֺYț+K;Ka}C~f155+ pEl;Y<U23brk}AfPuI?"B/Dum+f"l_'Sf$3)1F
+i?Uo8?˫WkӘׯrpq(8\SA!@M+p&>e{GYCX,jB~c!eqGhC5Q46D
+2G C
+@W"!`P UE5
+-]̂ׄ>A1C9ddJ D֠EYYҝy]w>÷xwOe9bx0r$$HX 4 ]qIZO%jXJs ޟd7qTekݯەZ-믰']5H,%=Hӗ{')CE>wM@)AkA+	(C],?:2[DK/0t ƑHgp\PbB5QdS!cnlJQ(s,D>EPH5]ϩދo/U}ٜ6W!Oޒ4 NT%~xA>65mc]N@1q0=O:ꊁ
+H5it̒&]ۣiL<vcوA7L:+YޝMlѡCǺ<)DR7|oZߛA\ȳ^cJUd'9zu>H)jq(Ms6}]Xa>m=v e.#P?^p_egJTl
+N( ^߅ Gg8 <8,#;#տ%`ؽrlyF[%<iK'*q~X(mm	Z=8<z\	p/kľOiS&W8d${Vf`їdLnfLnIɎ&F`ROKֺ/WSqk=Uo]#Dl%%T˥
+m6wX~?Mؕs˾mU}u)~IYD؂!F	QQ*@B+>-!Kt@+,BP51C03(8D;塚v2H#CJFAר&P{AUXy7BCV!=a|e*k0f Ƒ)({?RT?j0j0V:)ٞ}Iݵ/Fd 6QXMLV	Ͷ%7JLÑje}NoQT?pfW 6 kk?t׶{ÿ긘8(S
+ :8|QBTAuT9b w<_B]`v`M?e%9' @ ?DC Ac0p
+0z
+gA 7xpj/F:]3G^H_<4c}MOs0s'V䶜hTB:O؈7R]d:́D
+kZ4uo1V+IDD'8)Tjg*ެtCuU/D	fӭRXcʸjSMw^}ƌ7gѴ	%L ̷&tCii:MNo5߼?RL|dn<yG-ґ8cۇ?9cpB/pzc)  v%.!g1	(:C|*ad:  >~]0?;b2GF!BKǿ{f}GrmoTFV~c%o$_㠼_i5`3Q9Mu15&sd#0S8E|I<{J/Y@m(G12N&A膵9j B-)8lӱY
+
+B]+xhcB_ɨ^׌2>zǥlIy[Op;60?4_dp|tO#_J2h9d)	,	L/N:U#XA1 t'(g0BˁGxfH
+"Qd-
+dcO@`qL. !^*6`¡P)$W)myv\?Z
+6|yjRuwjݦZ8Y a&P-{ ,kC-bLuQ/_f
+y*v>JI&Aٟ)ŝ;!%?&ŲR˖u9b̆T'7,hl" 5ZȆQFt ~WuztTc9P%b	A*zUA1UˆDs@8B}M@kpN-3G`~Tz,ί|9ͻ/śA)mS ڰ]P.3b	3͘Y'54,1m\I|VYn&#[,&]( jjxot\u(#rZ)*6_9oq&n$i;X/ؤڙc?;y7%Ƽ:ZxV}ΫXQ޿yQ:&L{y'M<<xSeͣ$ss{ƜsVVT`4XLBb@xb1el661 0 f@Tsfsĝ=#ou^nz^Vqs|+'G[g7֪	[6F+xϟư=U% P <-vME4@p5D۠4-P-0HBx3Ovh&$4Mu7fk/賈(dO:_oI[	\3c 2@t96Gu-bh=<!S>	XNW
+*E [Rb,i
+X+uYc %aI`N f*=FlTTێ7T\nq<['ʟqTn5Koҵ\,nbyд\v]՝_]7 b!tт-pQ-5lB&{ed!	؋ÓUK'W,z1܀zp"q:A.% #`x}?ÞB3L#٭L_2q[JUvxg59˯7Zn>1ɯ`}RgÎv<I$6)P(V3%ƱBQf"sgN!KBV4:HZMQqgяm҆~\p'0%lkYQΗcs"D3۾XIZ'&t0N nv@";-D=h!DwP5Q 62Gwe)D>gaLG%-"OT6Q*!4B!@3 
+x>",1@<=<?'U"CR@JzG4|%*`e*)zq!YĪU]y&
+2ˈ !c9\җ &6**nP(bM*W#:ˁFa'_"Ip\jU;Ǖ[2ZhߟfEAISbj*<K:'ŁM%m$!( -L_}{0z9w?XOr{w;狞V
+o`;ǆ+~@5*D#IK@) 
+U#e1)lF}@0, 0]Pd;1=(C<@RWǹ?GpR5^W9l)]i:[r^sBd,uKq([+x[/qe<Y&2CchjOU\0CtIIPXDq
+%;"X6LV|Z#RP"7K#Nc|Fbٳv9_ئA[4Კ&2'e=+.dfO4C~{v]AL^/R[4zP0Zf@	 9<EA7PQPBtif MJ F($@6$f.E6 Px2ĺ߅" tJB30ˀDCu0%I ӂ(r0zG	 ;@ZIB@܏J7z"0%玲X*G|ecfPh#^/@ DeXQ1.RQujϞkص?/.]?ے7GkMA_OHO-7vz'vaNEƐރ蜆p07WOt 4@؆iCA&L[8GcD]cP0aS9ۅncԿ4^}B(/B	!2Ǹʐ1nC)cq"c/~Z}_v7|7_FMKǒD*DI"%BU?Z$<Uq$^,@UΈfP0JubD/:Z+BC1jڗ+UCE|ZD:!6RUFeBV$Ze\L>tkxMF\6wnћb~di'(IJ;;oͯ'S]JY 
+r\(T3jc~m~aoʕoH<EZGh]GN:>Ny"q6l.:?<Fsj 0u i ($Cg0DǠ$weYa4|uWz8[%Kv	i~%!)1uO`T_܋_jیRj" D-iVk46fEgFL>cY&ϐ}p-Vm4lJ*arBMR$qY?Z"u H?ؚPZ/Hzj-A3lΗwTOe![:GZK@"9ۭ׎_g[_y杄@*9R)k,Do9i
+*(2̀飈3TA
+-ˠ@:Dԃ3Ùȝ!@/AIDޣveXԖ3tMI<B2D}D0B`"q^qR&%P&D׻?eMDPv>wwrn#1_ijkk"OMB5UcbVm{$[/_)KI"lə_e=d{G?ño67ߩ`1^)~;)ĒmL}tVD!6ҴJH-i2_SEt8eyR>D}x
+9
+ɡp*pH^`(OJQ`,Yn8u$pt'RИ9\d謢HĈPV֐tS{[(?nN1_V/XXX'[l0gG|BHmP2@TCH,L(<#`((4@<Cc
+Ca5rp*ɐAq̇tR'jD2Bkj˙L"pئPFzeBD bBVDLŞyW/O~_/Hҟž')ԫJi~Wܿ1^H4X\uSuZ/W@[ @h~meح&Efi@z'`BBL]14Cm( x}*J<GQ8s>A((:%06jo\fwӳiAt3[ZJ
+ѰM\6:( Q@|J"eSmyWQ6\1 U=Fr	)P0L[N3f>uKv"f|mv)-O3Y{9GMqq8BY>N_OFoߝ'$uRiR_b$ ukSq<$sn^`f# @7-7VABH1wt9Q S.Oj4:	vQ 30<(bNa
+GIdC[Fm1 GQC4BU?,7
+&,{b\m?>L~ٷ>;6J֒gbo.f8)+sTH!XYTvѨP,^UE$/w?9,K֗
+1;ڱ4>Wzg}ҎIچVvi2ui>he|]~#KF$F-Ty=L-,aӠi0(/P3m6US":ӃU ­ڏ!h6S(݂c>DE5o̈́RJ=8$Ta0KU}_m{ii~FOO:iRl`D\jUE*]Nzi-VA77!& M`",PR"}RߥWjl {ܣng%Ĵ67k}DrH脌P:$5w,1SU~̟P1$g?/Ʒ6kjHvumR8Sޟ
+lWvlGŭYeC+Wۇ?xPEBZ<u4{zpۯ1}~vL92;r	Fu*1LHe͞Cm?L62/Z?mmd!tiRkCiuLx3lfA Dl3]"fN*rVCquY`_{rs5)"Z47(ehۏ޲c/2Y\G;^ JD)&lO2s@nvH6Pa-9b@O2CurMEM:ڨJu@kŠ%VZ<32>vP\TOzro;_Jn^[;֌nm:į&DΗ_+9W^kI,
+!uJ?Q}u^hQrLЃ4S帍=(QJYPf@)oÞBFڇp#D-8M(@"lC	=>h6/0s LGAIxUuT'>'vOL+K *{0zAYJQqN7
+Y?/d,4^v?ek{|"|Ѻ˦WLBDUph (djR=M[?hX?Aůf?z_)]F[&;39G3=n%k[1֒B ŲE;@*    IDATL`ΫbeRҁC7{ dǰob<{/2\#tV&t)C4B"iRFԇS[	H͂a!##  aZ0ɐxES?p"A7$(C]Ǹꪫ>;߹[/}O?i=k:tB)I	Ӡ*V+"U!b@Z:<$UF\89O%{\}OpUwNG
++RpeRD$id͐H0BY.ێŔ|ߒ5^S7UʔS0׌l45/4)ٟY=$?0ax-}M;̱d)唼V0)aj7&/0-h>Ub13}(<"Qj,iQ~,3@(LA7֫S
+>ؓ|4b?⽫7Ugg4vS~ik.v_Ē&|,f:5mh	@'y'5vG .rŷ&d$t!UAuxux\ܶC)~ٞ%/Ű*zܩ0nҾ6,p;%Fr[;=a'a<rL=!sR6^-aҁR̶ڬvgqBqA||qOzzb9讃.:_>A<ƝPd
+xgaH4qT`y)`@gA(&it`U=n l$]PVI"4<DidR0<PS~m$KJ·uc-AJ_9C͕1kY_wxxMM;3^50z#!8ٺOqq常f~3.+Ӊ-(2sEh]9F 4>gh\Xkm'F.k21[?W|..\3Q9_WRT?/vV
+YvAcH"MǰkEr1H>Fh^hYGvM}$ɾYpAd^ zk0,	NvtM0nl4@30L~aqT=Bw$2Y4(`Ä[@q/Ɠ~dm+#G뮧?'NطoOݟ\x,:!V,br{$bի'DS %FIU(I*M6O@3T.(吩:*:-Rڔθ-Z2% `!W0[:j;R鲡*5JBenJ2WƃeEn̘ߪӭ՜;m^Ůz<˸Yz+3IvM۸s ˮ JIY5{ye&߈m]7sXսU.OuJՙ|G@AI)Lo\/4Tј;kzwEC-(߻<ׇnBJfΚrMo~^~m/hV~Ŕ3~Fz熟H8ahd4?9Hn#qX-:cQ-3ݠh]1>`~U| 69▼_9y,;8v*Ⱦ@u#)6YR"gRHJ-f~&W[1hտ/u:gϰG%Q5Y5Atg}6_9N_ł(Ƥiyqte5,.iڹV)J4+I]D8uvV;LEo	(X%CC҇[GЅ?@	g)j˨c3$"1N̀0Q"U`̆(PDplP'0&@!͡>oB,i]B_GxiWQB!Kǻͺ%v=f~#,-kYtHif^1H/nq?/TC]1ߗTV4頟bR,̞៖? |o%qic<ͯlo>/K"GT:b9E,?	b}gn`܅[QIJ50t4Umh:,N6u7Q$P
+nNEAJhE)>q
+p+ḍMC 9A7PE`,F<~yX,X^^߽zXYYiw_K[J&1h l,TiDIERŇr&\kt׆o>)SAb2R
+5OMJ>	X8PP$+|6G|Q#<PL`bT))fۊ^C,tGX0۽b|nnB'z6#RyG_s$(453)>&/Z_e5iܫK1U}RRsEuӕ_o+{ﴬ-PCaiF״';ny
+B`9O1\#NR!'[^-^Uӳt<`5ztJ$ƃnY:SMYvT^/E$2ů􇤬ƝX,ww֊ILJ_O*|OH6ѹR-(@3]nDũlE}KZ`bcQov97Gʄ_'4JSs({gܗ]O-v34NoT0Bxc>S_o,D?Wq@$~<:S2K͙;akc9&PO~e$B 
+z6|5!-57Q30Zp*;fb(uՋL0*!v[0-D(e3p8qK	Ikύ-h_o>}%6Ryvok𯔄qv4_F%2.XRPG*FF
+vDD:}=q~5EyւT7}~7(fqSrpyc5.w[,n];+;Hm)Uiai?Kq<[rK@؇(B7A0T]o V3kE!Aw1`'E:bLY h),N@E KXBԃac0q9tsݗTCp0\3`yHC߽?V;ɓ'~'&|6t;<˥#ֶ8v[']uH))TU@&`3 y2YNzObl(-q pY'{$bJ'E,uJF4@`~1g Ѕ=LĜ}G;%!	/b2OkǿFIDH^TvޠQ\];FHjs1k's?^ȋ'IYQK_%$iT^k[J)R7 M ^ݳ@@0:*'<F83R`v?\	E؎[E4x!08hPE4v1URwj<N^̴0yU	2Je;Ho`l=	ewLk3&vضF\ul!]T[ݷ"i`m{C>`C#u-ύqrpj`7)z4 UXq_Xm;T8Ȕȕ_(~?H[(Ǥ}32nK/u7F[I~U(%Q!i~?vXYi?W)3Yqm2R]MC;B)G_VЍ; *hӺq{<WR ELC<}E:*().Fǡ0lNV}ha(` u5!E\9XAPcAcy$2 {LN:>a/L]+t?i]#=H5B΅u5
+f/	_+},yD${3% Wb7B@*S*=|`[4c )ݰ;m0z }3;8f\)BsϤٳ.%qqzCO<G`siqJ­HQLn	f`ٝEp=T
+HqpZY@4awL!)ë@rQ|xMtÎW$*6O1DMzy#1~{｟'o>.'33hu
+%vPS5IU)IVN$ EMT:Hu oAO-@RDiBTEMܣHGjPƢD2:ʤgX1ҭ+eJ~(5:Jbwn쬡19ߟqz-v:{=xF7	9ew5ɋK oеӞ{/(PcH1h~ᔐsX񌦷Iy(/qw;ya#ðs&x
+ J@p0F]:ny
+D0IZC$/.+W3镌l2ڦl;^k'I;5b!).崫 {v*KdJߎEy,\btdK#b`&jC"Ȝz U5F*Je CdP
+ӦPʥj<:.鳜)3,7/|7eÚ9S;WrJ)Ԏk\Ҏ(eklK*ǳnSRxb@RPq/5v.L^^tkW[wLr
+ügz;(ICiX`: B'e)c*R8_a((O#$tQ<?|l<FA34$cRH';^h:1PQprV(	6_4jtiw$}~R\9ί$#FQq@(D	edRsYɔIXTz4+Zbl;&,֖Jg$$\ŁH*9ѪR\,^];R&!9=Ί@i~ I(
+EXwZ8#MJ#C^@JDS%oy<BADBavQȐLpFSĄ&x4-h«< v8qǭ|'pqV__wvoᆷrzhēT@琊׀.*ّ$*1 d&82KUx2_sH*,#2Ц56)VTéhsE[uLC'E,ˌ6ۘrD`&i$bv!~T*ƕ{bAFҊqKQU쏧œ{6k
+9ёg߶;"ǯt2e_ԾMˋ|Y.C@Wӷ
+MΗϞ}l{-y^n?Ypx1jӭ!(X.F2NqAZJ1Js؁#)"ŔiyȰufH"Oߐ`k[<ql&Q|=JB˸+|_F<v:הhPg²*XjԙeK+gͰ>X0PK9Mq0d}jKaW8RG#m\Va*@kژ/ߵ)BIELefY[SR?е;HR.vEAv5qCг1J_פ׻Sv $Hk={9-UڟL6Q@'v7@)4~RBp1^%QE 
+i4Bw
+ӑ,ߍRm0<(VߏH	 M~"nC'>I8:ݭg1Ƽl?b&JQtC0 J7JȦF79	0K5닡m._MKL2F"@phRb+V?EǝbfJ$J,! kI\޿T{,*T\ojl5/.1]cB6~aϟ(|a L^WzmonQiIrvUQќq|kevuxE8 !B 84%8q$Br}/ îj U$!TZ<f]ccۓBC3Y 9tO~s?鍍,Μ9?Z}5bЉW\D:Y-r
+,Rc>YN`I>^٫]N  AP]R"\%8)TV׌Xj6:WTBgVJm1^H6Jd@4Itv%y52.!At5:/ĴNۄlZT!g4:Z23F;S՗owk_y0Փ֬-ت%I<iYd۾%.m3΋MH4B4m4l~Z`W)4^-[(nӦYcTuAIŠiECJ(I/3ym1wkDg7leٳrUiyg+C~@(],]BjD@BfzTAX5&Glij:.ijDUPgltSegJ*4m#Q;r=^깄I+:eMKT^U0Mv|?fSjtѮe7#'4AHJɸES?Ey9uv2jZu>y$  E4[Fð@-ʩ'8[;;NGH|Ǳ|tW[߀j} V	a4P<|_ SA8/t/ƃ/,9g/TNo׃׶_{Fɯl=*.ӀTs1S2Qq:h:EMAQ .[ݙDSoŲ	e[|Ve盭矹lFŞ~6fO{ƝAvFKOjbJCH6N^^<
+_gjG^'+?RQÔ:m
+ljWzS^;="CT;#%P@pJ\`PNYi@M@%A#(Ocx,M!BId	DpMG<.C)Q>~w7fdm_wuB58rhQ
+"5qHX:Ds-a30XWqBdhcUܡl{0H]UhP/d$WlՊ_fA
+D*]_4/a$"Dgv#~A7}SwKƷgЎ2ګ_`,\쟫0ͯەu# (2h@oL"oo%9/Ml@JAITAFif:iD+ee'8v<ePE,xtUL&Qr]K`Bs[
+"I^`Sٲwk>1r"YļQÉ@#YtJ3ԥb$|ʲHh'ˁ:=KGDE0Pp!c5dNù    IDAT@ƀUPz^$jL*NC3۞U"KB4)QBg/O<vtvS@,qݥ?3oyUř0瞻A#4 KQL/QqO5dĘĉ3j"DM n۷~gK@Θ?)})ޮZ̴sE;!3|5xq}OH2}ݽ@jV&ʂef2mK(Y\(׆Y ׂlzqcB. h`	t?YϢ%88i%aP2 ꁙ *PS}+ăykD/h<ʛ]yq) cL=/=/Gd1{6B_];*=,0Ť
+l`ѦF>2`Aө!lJ.cr{J/oBȊhElBt;L#)ʻp0g]XIn tHaƀ`L)^3uD0r&Uy |~& +#`fcVU A:(8=|\QFA@@yǂ&0L@%о"d@2 @i-(~(ׁl7dAʜ|?gӄ˻/wn޼1o|rdd79Z#OnrhiPeKHP K &-"~KX1Q| `SQ9EbʤByP6s}<2A[*ca9eؚj):2YV@v.+aҟpUbyy\p~cmo,eEaEKHc*7˾@0i/@gˢxPw<Qpy-'sʍ{Z6msst,G($esiPu 0#P/߳~{XI)6|`5+zg"o$IW\o1QFqQ8ZtiK;J=U?nN-`mԅHPp alEhaj2"s!cH[o.|Ehd! 
+ CsAwԴYJE c^N*ΘďL*wz}"X]R3921;sK*ӧ1Vi7r*]72?ɧ(x_2#eNI52T>!ஜ9̱ _,}%@-d[	T{@VdP>AqB_
+Fx h,+񠴯'KA<,)x.K$ DZ
+0Ԁ3rP6 @QQJj-kDqz.Td,zÆӾHjB$c=%j^)o"y-P#4U]8hdl_:FD+"d4C|!91"jBE(S	1z^3!1=(WԵ7(.i^k9QBaǣ"#\R]ӚW XvUկpE,IULzmo>(͞?X'` AȦ tm==@.
+ă5?C1ď(L8YHG c fتpU]wݕW^9nܸg}?nll<}cV>G=
+2<*hb!?C$<jbPRaLAE.C)e)TJ$HLnLAJj	fP2v*bP:1%J[Dv*'QH8#	m=n?~)Ҭ3HUڭOup*T*bSO|ŒpHI@PѾx19m}q,튥dL((M/#h[ţo TU&/$ŢG(pZ@2a\WK:Lh x`Yڠi;m"mz2q^*1VV!ʶ\WsqЪ,Ihu;ʴ/UFmyR`LM3敄YgPSgz#!i$A;FCNxijz`0PǬTcx&_-B+}AJ *ƕY%L(tI~3Hc	^!}f[D@/v(B.t@̞Q|$Dʾ8()D:RC,JCϯaZ$_NO1l:319v $i NR@?xO+*d3r}%p䨠RA&A}gF1J!X
+	J0ʡu$ II;\Q,B& (P5AV0sA?kPVxo0ɁL&:XP\Pɮc$ᘪ4V|_w*Үpzim,QlBKMMop`x=ožP*jԺZőbE6 C 
+"<FlbDkc9R$ie)K+9}ːc!MR.벴7a Lϒ
+(XQ	R9bƴpٮڀVTڎEHdH' ho70sl\R۞")[	R(Rj <(XDT,5}ձ8/`-tꔀQf!k id[u  QY Nm
+sU'@Ϭ#m|իW_veÇ_y?Ov^%R$`81
+Rj	aL\c%ʅZ,Kb&JKR1Xe4A@E\9C @` Km1>M*PΫKH_շ	-zDd
+(cB+$5Lh*x}|?dcFfy֗O䜙J 1gOG~/)*$k~_S߰	-/
+,e$Gee6"̱VUԼCsY ,
+"V(Jά8F _i˓QY3SKhy0}}GTT2!0͉d4`ZBXۭgPeyG$_[eZs LϹ<+{.m?灁e=T=⌡KdaO@ ͰRIe$t 5Hx=*(8 Lb_WuÀ0Tab)U^Wv1.p$, #0&*B{LR:i;aA%%-=>FY ڳ) MԱ要U=O*Ǣl9SC?qj #b'QA/ LUoM
+h5x[s EIDT%2" kA*L 29@ @@AGZZc9& +h9Gh>F101AA!=WJC>xG%Kt_s<K&ɘ"Ir'kW--ƿyocgɍAߊ=֠؞%"c|1w0H-A(\xq0 L*8Bĥ:A@^Fwgo;P+B{9 r]~\ܼA=M72I8R2Y۞i9STys<s[u%eo8" Lv+]J] D	UW.Dpl TD34`fkj;0򗂝!W9HY˘%2Iw p΄mb .D@=UC&
+?cDQBHYYYoIYYYww)6I?!$!?	HҐ2afZ&0&2I.s)T9aLm`Z,@Y$(`*Ҏ8!<R,ffe#P,hfY6ͩyD)]@H# 
+G  C5U#.6'o.Ve-N۳	=Ӥ;!iIXz_nTmF箒="ke}4KQtK2"Uܷ}ǖ7.:j3Y]GHHr`CB8DTSDDeόD~% /VuwNfLBieۭG]4y$q#?	i֙%}! _Ogn؂ic#1;=dNg 1H:ڕ]DEv2f$iL>X"(Hԣ6ss,})8)׋'`[g{.$uT," OR\W.*MxZ0b{Av\Y, Dd8X..^˛TQZܝu"J1 EtURP鈽P3]EY[:ڡjƘD<yg3=]Udq$YA&3AjfT H PPt" _-!XT  *[0HHӐbsT {M%}!TGQ9Aߣy5s)|PZ>jU+K0!d&o#͘M䮖?)S!dY:m:m_fH&8Eh@wJ+\櫒;|{.xTňB/E䦉  Q/hb
+bC"NR]Ra>.+X((.tiߔ3	X2w{zӚoHB{OfO/}3k}CW^߱cSc CDYs҄h#N;(/Y]`fb=(A4 ZdH&.t7]ǯN7A T7LY`g pm0BPZ-+vdvcm ठhpg|fƍSN͗L6mر+V8Y;8s:/nII H$qٚlΰ̊3B'/8;#yxgyG?Qgg]A%qW3.;3N6mݺu<rq|qq'aq.qqqϻq.qq<rqϻy>}hvE>| Û0aa^{mOOߌZ|!/Aa8p`Μ9aB/RZ'TUU|ǿ֭5kVQQBtc4d =E^?(+WܱcǬYFy^AEX__裏J/SG^P-~7cEQVZu}ђoذaӦM/!W_=xw};PÅUx˗c`,&,'_gsޭmmmz`]z54SD^8-jkk۷okkC^`ٳOW)Geu1֭+䰷mwj§#?#__gqf۶w5sjMM9眳uւq߯"/1Ʈ%K0ovxA}֭;v_^^>}?gD]tk)=\(8qm()J4%uwwft:YӢ_nt:p¶,+?sݰaѣ/#G~?p~*++EYxkVVVVa}0/wA!L/}ӟnݺ]_%Ts̹[ `ѯʕ+|Żvjhh|/;v7H|VRR"B$-D"8͛gYɲ|E۶mEQE۶_tE6 9>C_iUȑ;c=g3f#<9ϔ&A{ZE3fLccc~iĉ8_~y,{u]?uҢ/xϞ=Be˖=SvޤIˌU϶KT FY|ы/G͚5kȑue<K.jllm"lѧoQ(DQ|ꩧ~ȑ|#Fhll<pŋAرcGawK/vܙN?C_|j?HOg zjEQf͚uС-}ϠSG^h-:qHa?u}ĉ6m:#"ϯu}رk֬)ذWZ]7F^~ҳ=qq.qq<rqϻqqq<rqϻqqq<rq.qqq<rq.qqqϻw0w3f<#_GݻwРA&^z/5yNycƌYpao￯(Ν;͞={ȑm)S<VsϢEDQ<M/^|}Bq<riEgyꩧ6o e-Xo;v"͞=뇶~V'O7|H.ǝE]{e'?{'}}UUnݺu f,XPTT͛ё|}s>h2+4M4hڵk{?Ǐ͛А/ƍ{mY W^y͛oVPeee>0ӧ޽M0nܸO~o[#Fرc&L0cܹTw9s^E01MsȐ!]v,˛7o>Y;Ｓz͚5ܰaCCCcl~>ɓ'O:5_d@`t:}W}۷o0a(ӧ?ý{gy80~߬_uƍF'Ocdɒ	&lܸﯨH&hW\qM7ח>{+6mڴ-[4{vȐ!|σ]h͚5 p7B:eW_=0HO"o~|Jkx\wy'qF yo/SJ>ڵkG鼛fUU{k3_K.=qꫯ/ٳ ^yC=4mڴޚ6l$?yܗ?֭[{/]zMMM͎̘1ĭZZZ<W_8p`EEESSÇ?qI&W'N<8*))m۶}k_+..F͝;رcްٲ#GصkסC>Q-jvbѣ'F"j{I~> ?/0`ǩڻ꽄XE UJ8s̙4i={뭷\L \/^Պ%$FUJiod2dY{q%r-K.=s| ~eyȐ!,o=q*-[򫭭pxذa'+,cNH$dɒJANZJSWW?}VWWw{---uuu|/8w9t-Zh7t ̝;K.cfƢEn馵k:t7\~}01ƍ	  IDAT~pM6ܹsSL7n?;C%Kr9˲뮓g]	u+Voڴ#x㍷zUZ[[lrf^3fغug轭[N>E.ǝW^y駟=O޽駟tϿ~뭷˗/:u꥗^:eʔҗ_~9_d埰b
+EQG5g]O3r߿rG}Y`oG0 ?]|,Y2lذo}[ݽ;wngg}޳m7޸ꪫq_ǝBO_|g}yqrYdIWW|={,[w.q.qq<rqϻq SIq?+C@    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-soft-1-rem.pdf ns-3.21/src/lte/doc/source/figures/lte-fr-soft-1-rem.pdf
--- ns-3.20/src/lte/doc/source/figures/lte-fr-soft-1-rem.pdf	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-soft-1-rem.pdf	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,531 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x+*O4PH/VЯ0Up
+B @@
+endstream
+endobj
+4 0 obj
+   28
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x5 5 0 R >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 626 381 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /I true
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+5 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Form
+   /BBox [ 0 0 626 381 ]
+   /Resources 7 0 R
+>>
+stream
+x+*232S0 BcC0˥h^_a 4
+endstream
+endobj
+8 0 obj
+   42
+endobj
+7 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /XObject << /x9 9 0 R >>
+>>
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+   /Type /XObject
+   /Subtype /Image
+   /Width 626
+   /Height 381
+   /ColorSpace /DeviceRGB
+   /Interpolate true
+   /BitsPerComponent 8
+>>
+stream
+x]TEmE$JNtuM	pŜXÚ3b	HCVAT*̊QQQ[ޭ{w}շ;3ts9{d%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVd%+YJVdKg|ʭUn=rێnlV0R1SJ]TzxLGFWzttFW1b{}FU|bT'GV?0xD#*Qa#FtQOtO?&/7EM}Vnְ}vX熖3C˾0CR!e.2.2]XzKP{7`A>Oɓ{-rJ}֯OR_=Q뾥V-oo\ӧ䷏?^rm?.c?*W{g=JlQb}͏=>j?oMnŷ0]a삻jN;=v/]mPMf~z0}}Nm+V?6~S'WR{	~ߒ?__=[jzfS~Wj><g{z~sp7yM.KjsE,7r3񕝆/'>]~<PgNPuZ̨T'GUǩ/+uzIS':C|'^|#ڗN'FVu>-8<̧t53xD/␲/_px>p~sPEx8(N&cOřϤ{ ӞMnӸOoH3ЁgEy8(oaJݷ{}oƽ7>ꑸMߤدaӷmk[]lo?" j;xchw
+B,QuoUR/F`VX;"&Fo\-_!OㆻW5߲0K66UKj+T]T7c&&Qα*߾v8ږQU3!n8Aog&H]~Y[3~!sgO=dRO_G<]x:Ojx)"<U4_buWH8#52 NèО:ң.hwmngжFV0WA:>U^'7g-lŻZN 4d)y&W@v?@>3{,is85ITE`Q@UMXU]`C>2ukTK.DՖ2* 6]՞LWtb65Z Nye.w-0kHFUPUĽITRJW 4Qu!f	A0*>>ː.b7u)L>x^<SEN	OGci!!H0a(c<uu[A#a`sh͹nJV,
+Wr'9SV}>	XWj91u֨xL:@ն|8X7ܓ0Qm6ZP5[`-ؔNP,Dջ:0 _hׁ<O_qCWG3]ը:ޣt5*
+. ߲p]Q+U"T}7߽7p'UY%HU{~#~b՗ T[LQ/3
+bOb(>t x"'%B(PN⽮ŶLb!<MUwB:meE}94t34]y'DQcʤAZ[*9\ϏE)\\JR0x,LpFumD<Ù)kUBՍ!Tr.@ՍUBTU3VnkX:0):PfVS[{ߦ<k/W]7.F`]tՠ*JQPpP|jԺM@	RWTo쥚o_,FTO<?RTJx@SuyCS0U( !x-%Nj`+chBOVpo{ՙ蝸w3{bd9jmbo}HqZHGwh^<WA8x\MA'ڬt>Bu,.Ll.dKT+_Xe8K%mw5Mx{GWPUNP,D;kV"jdKݼ:p}ۯU5]|졪#"0MWkRT,U75)[AUHjo6,;쥮Bi"K)
+-TTOEwz55jr:XiMK#0}k퐄f1.F'o͸o7cnߦnsA©ƻ"W*Pe0&<.1o*XM]ER/L.oщku∶DW"p|uW哮fYkNE=?T-"QQȖ>*li`HL:v[UU,5KU#%ZՂ~aAoӠj|j+TGըQDմSvF"!yf_UD,m(`F]TQz/QT5T}˼ݹU{"0[=o~>Mډ^jWM\W	ܠ	;d+<t]Ex;(gj3H$:.S-[l*FVg/^R:ÙwM}@?K%,e%RQ'-DRi6Xցl]u0/D~kg8jZ-f
+-X8^*ӁATݘ/T48TMQ5FKTM;Ո~<	J/i}*V	RQ:MP1#w("<#"
+Oc׀iK*R<`:FLI^1iq_6iîҌ?{nz;0lLF-VfѕO8(jwEkh0HȤs܎nX`JLTT_$;-e}9t%pFն٠j]	Xl۾u'ZDz!=ު=]<|weKVw5h	DT-WmҫBcV(]m×!ߵ
+{CUjjUn/Rv*~5_TRoF	R%ZKxڇ)"5^P6P/V^2œ\4ʅ/\U}.o1W] /|7=@EJMT(+'[G]c7~+ap<DZN++YI0,K+aZ)!	6YȖ_.fIVUbSt4K٢	E@E11Va_9(=lV8(EtYqt,&|jzTݔOToƨ}C,J~mN%DR~G@tr#5BPԙyj f%RױZqv2!:PNzMTהgNdJS6ʫzF^q)UP7=hb{U\(6KʽV^e+^d%g['Ha/6#"c뫢ͺXYpR0Ҡ$X7XA1Y
+WKꦰ5K͟ȸ%:םjYl]G1~ْ
+ሁ,6fIfI|+X2oVAUlR6eSU,:iDJNlھTS 4H5RAQ'pu8I|8ӮLN*rz'wKo.u1=rs6blW피j'U;)ډSsj`W?qxyO¯:i0KǗa8,aoetԇ}T<H:GL"68_2jJU0Vn5jTb(8Zjj
+ٸ٢\wEd!-mB0Rd.%?_ӗliW\΍Z-6Ct|Turl<10U{2T*˿Uˠ*DJ:v"U'_jTX*R_F< H%*B*OIK3m/)	narz`
+LCNzSFO|T@YՏZՏViՏVkn8<਩/06"+Tu+Ee`+.o;d *&LqLxN6B`Zb'6}#IZ:F-:p8mYdSgDՌEկs	zSH$y`}k˖|Y6ᱡp$ZWm;C?yNXZ7dQ5`,0>20VI_IT_nJtԃ'Uqy8cT}l M 	z<r)v<3mE]IO
+Tр O`ZC8dzMqYqxzԗƀ{Yf"2{U"n^Zc:ɧˤ&pĝQXƱ,W8&u@b 'B4XEؗ-Ij_՝2g)Fzj4K8߳G_?u'ZD} -~j
+ȅ#[Q&EU[bcq..5֪IX*~@ՀMUjH3#7'z5}KNE'Q;_PI HF*BV8<3O4"g!3=9";(b(Ak7f5ΨYgF3j֚QKޮGů od]A62Y' R1R+u]FQ	EL+ 0|}XH'|k~yXf$BihF_GhceKew5bg\,Ij5K(*J=T-B/rLpz`dhiK2au]2Yl^1i <THV`-=)ȆBEp˦jMR2SiHk9jbm"h_$y~i܌&OaT/){^6J3LN鱺H7DR#2F>VάZ̬ڕqW7}pox<ͨUѶ6k4!zI>|Z~IU.V??ׄI0|6im36H}i*Kd%`]K*!uV|`1&^8j|Dz΂(bDYn]NP,D밑dXFFCF5X%i_b`7jɟbsaYr=W措ߎ߯)|BQ%ZiX	MT)#h"KeHEy~9aTA/S(L"L :<
+OAދPͫ1IbNz0QP :+Ϊ]~VrꔞUڳ딘]guϮŬ]~8>Ĭ:%gv}* VQ08[G3c0DX^0\&LK&4iKT7tDǺ,g.EFgjUkՠjX`?lV8lQ\wEdb	ln=VVWL2]3V_<!^,c=j:T$/ZM7{+gTGտ<%IT j-	%D9'<f^UŐF*h}q@*RҠwQ)^r4XvK[@䤵**jb	Hͮzz6?rjw]V+HiLuaD|8և8׆h:bMZ)MnmVRQ
+6>VfxzE51D90ĒK,P5볥9A"Mn{Q;A"U/^2T̥4~+jWe='zt4l˝:S$B&<*};jucnzUN|OUU_]WLT?۩4z//cmRo&u<|0Π* ^j'"?HNNh5,")=m }~%gawG>[/k(Rv`&b	rŚo%z[QŤVj`rnJ<^Ƅ+Fn6k{ϽbR1ZFKRojP	KkuWk
+%ny7םjYW1^9c+	7li\1鮚X`px_܉&,YFUq:(UaSՆ{(T2d/JNKTbKow=AI]TphI\muz8rZE!ڬH{{sgSl"-k5;Ez4^
+-W4$*JMR1?
+ k)qc|
+>V*,&-Vyt۠-=n`XvWELE`ߵYIP5Y9.D+$v5vQ8(["_1ba(Mt
+		9=cB2@N]})_5"%IkNe/SaS:=iOsCZY*~:%i$b$1E6HA<)M+bô@f4bLA[	!xM)}@]Z
+[QV'^z3+]8۠'E`vi/Z*U]q~̕8ْlMRQus&TM_EQ5`U7/u'ZDz!0
+!7cJ-c2hW,eKNP_l浰qQ%͎.kqjTX-ձAu&=Nv*=
+ԱQb_t>!mwKSTS(2Sp@f-$%uAR"~AzKÞ/obD\5N mz[ɏCZSʤF|ޣ3Att)Ruqi
+IRhQEXMc\U+dP&[T]NP,DĀ4`_쌁v2ɐi6OB!/ p'Vq
+m] 8F#
+o&[6~mpě%v갲shR*Π,u0ʓzb/	FԌ!q^|z ɀ*xZgbOꃩQb}I6%xz`jQt | ?KUpzp;$]s)xC>5c5``Ilr![Zi'z$[lq5HWwf,Em6\ k(םjY4?
+o۽ٔfL24s}؊Z?lYY5Qk5U^UP՚"}&$)}ɵߏ0p)7I
+њ
+GT8CCg4KMݸ0ߘGDzTˠZ:ŉJra/"ixr[a˵<ʙ*:H+zpz<֛hkpjmaU
+F`qTx'[X1	Yl `u .T!s8KT\wEde`r2v3\K2o_βݨ%ay%d\՚%7d;lSk"]eϰMU--e6j{j:PjWG`'Z~AD7>OD`R
+CQۗIꐇ܈T`S0hj]P-#<ݟ˼H@=-~4`:
+ri~5cQ|:ʃF	ӥL).%>:6Y4XhK6N3}5hIsbGUkJKP'W[f%q)Mp=7%֨8+PB8,!΋Z6!K9ҵ*e20;]enGj65<9w"m0UP"x>TU5Tp50Tً
+-)Oe)Uw%$o0f1jFW&,
+¥(D#48Y|K/GJ _2atC>ϡFۍluwUY69`aRAK"Ø,Qu+UR/܌KWjҾ%'Ip;{?dȖY62p4/X#l˼_֓qȭ	UF=_PĆM$};Ơ2yfUSU:۩M4Y*ɓ.80\I${#-KM0l`.>n=L@d^Vʤu7.}gԬŉLG~	|7QD`dmQg=1vi Tփgpw\2UP}'$7gbcEօYɀ'Z`Rz&/xIe3V7s	`6V>-[2b`
+0-6K] @Dobv+d1}UB?d/)}FUHTJSGg޴Sn7auZPY=8f}f֪xZ[d
+$3U09)PEʣ`r4cR},oA/d5dXx岰1VLd~e9ĐCVz.XL⥻A_/eKPB0Qo+PW_%].eLѹ
+1Fd;طZ Ur^R5UT-"Q&8_ılx֤Q_ǤCؙKps?PmWlIf:4sb!|vȒ.\xc
+>ܕՠjMʿZ5Q]JlPǵ)@VߝEz-~U;]'6 2:%	3\?Ԩk𔙩椆Ѡkjq~8Hֆר>lci90j:Nqe%Luts(N:ns)F5X b
+<ȣ=U!fWZL
+U(tTC]-U7NP,Dsi 3K`
+CHIO`?Pl	bb,6c˩lAk5BU X?HMbB5UM>锌>IJs{p0Ny4dy*S۩9W{(,@&URuPT!xhc#U8?͟zgºzDԁMX6R1iOcQ:kȌՔ4fWQPD4Xp]Ѳ,bE-6V\QKYj'U ?U-u暂UjP5uY<є}嵑$\
+m:X4X-9T~Ŷؼp_=,}3f FQ~W*rR4L)}̆*.dsUQ/Lյ_hޅ7`o3L#l,ꠤz^WRC#<]x1c-$5qj,6~Di@VX^]l%j˙`lem0FV
+u@Uc17,8`\-[jy\~12j&}ak,T/g)
+&OT-"K;alT	{3Qq&f=%
+MuW&W?q fIF:1~t"TC-T=5U*tJ	C*R$߱hPșK|Q	f͙4I5ϨYO'z,ըLd>?5xqF0
+y
+N#&kU[jjF`f\
+d8Q>st*ԁb
+=*ʲhB1>i̹*;_32jUT-j"p/C|p\E:`;6R\K2t6iKfBs,X[lWKB~J[[7|>P
+*dOOT]cѦ)˿QGu&>D9gR;PS+z:!y47襂<
+0SRj}qFPT$zS*
+$%U(ajiE>w#؋nlFz뇝_u|9AYFX	8[Fk%Xs\V@Akwu-iKCʼE`3!]>]ADW@јr8)zfݻUgI1KT-"QLьU#^>`:#	l3VӖ&۲%9!.(~3dqTSr֛BJeTҲEQ<5oԿ`SFK՞Djի^zul4R\,rMQMJ%_F8"*{KGK>RK>?$ZYazت[Gj?, +Q\k)Ɗ>#p6
+Xs`zx|jo<F<`@[l[8R\` `$Ǘ瘱߮	D_fT̙35jTB\|GsLҥUvׯ]V~F%KlҤ_|BTmfvfUL+HG8&sM\)[քX;}9ΏUE٢oH%(\9HbA!E_GU8<T(CGSc&qs
+ҡ62E橩jriгRK}6sR{mlS|<,!lRx+PWVCZXF!	2"ƀj"RTkp˖t>W@P]-?>aX־d\5qJ,9j\*$%u'wܹw}ѽzz'O\n]#G(Qbы/nܸa}4.D3P؄S
+`*tHI0ˡ6F'ZLW4q&-eỡX`	U9&"{TUc)#@Tɦ:OGCuT)$)Ao[Q"li8ډN%>iRMᗍQWORLL	(97y=?/Lw!/lj]1[5oŚpDZJ*۬s%c-൩Jt$m.ClCR<B.
+,6pmW_cLUR l녋wG/e?Ou'-Z䠪\&M}7o;m-Vm͛-ुqRc!!8d.Il=P>ɖL(_ʨ%i ƸO؊s{nƢVU1WO H)4)PSM1h_HIJwAuRW,L=u*HUDU!IdJ$H=RC*N_xzjP5`z#B.JwqKp_)xd5x=+çsMyݐVb`f=HXI$1.~`=61eK1x@؋Y6yBȸj%b|l[en(Ҡ	&Z+=3|;wܺukb̧>]}<CTmWw@)"XA&~_6Xh$C΅tuTȾ:Cԁ9Bmj?c+cDO);
+f LUU,UҞDE yJڦyJlc"㠷tH~RsP2T
+UxDm92'D-T?m{LG$Y>,帯+O#!=kS#BtH+YR)8JaP$q$k--0c򪝌sm˦-݌wNb3N8$@QuYA.A첕ҠU/@ռ\wq+_~<իW-\|O;>!S#6k)qs~& ^[mM:-	~f0LI1yeCu`K< Gr6\_kr13b=LW;򏪛I:T@UYJ7R,P#;p>Z[8N)¼ڕaMHKQRWABSE<)0&t  -B/W>'>ǯSW_P qX6pè LJ/;XR)WeFzjuܘ$*-"p,fdx*V8aG,2b暂j}0lZ+ ,Qu\wq+U	mܸg믿^Ȩzx)I:ίJr)ؤC`{MJ.i}L8$FvW}㪫,YnywߣH걪¨*THJ+7@T: &Uzl,{k75wL$┷u2!~f?Rr_&Q?*I|3?=Ś~`R%@MOվ[S+nOվFk^\>ko5ᓴƴYR03pmaJ0Uȅ8OwFa@%GUU5f0Tz]־.DIUVUuY
+7md>RX`7EXOwH4YMR*Kqmd:DN #"{_8X9pi<}5-Å1b`$-6_"p(d)ZudiP}APd~ϩJ_1~_ J੡h'Y=Qj6X[h>qk1IEp18f?B"%N$#O&Y*fR@Q/Jӫ*g-Rݑw>o)]Ϫh KV}7["Yt6qv)}&VUBKՏ|U4d`Yꍃl)6I5,&P5
+6Z;[hU;ƣjzU]?u'|TU>֯_/YXj%EF^}"`3UL9߻H0^30HP`}o
+xv:/[Zb7i8X`۸C "
+Yrީb Q5UE
+D>QUѩAsqHT6Z=0G*zz)'ܨ
+:3kW]lATutaK=hy˰&HQjY/QT^eko*<U`z7[R_߇&7 u%l"l`E)eDT֓hCS/B>]ſ s1\`ؑ[q^8/"]UUcATmFfլP5)	&y[nҥcǎUOܹsoذaΝsNjϟA3f̘%K4nܸAY<U<a
+	DdJy~)X8nXe/tlb&"xȅF	"pm_5%
+&3n讲&2KJ$=ʼ;SsD!Uɩ޺I_NUsԝmW"Q==GOq،[΄ZV`jǲ㒈*bs R)OoTa%hR_?ZvNb>V!,+P 
+DZJ"M#
+%dxxmKWjeߴ ubs!\[{sW)quY72B-H_p79qEUm>YT(.^FѹU5~nٲ%O?{իWWS=}_@!S,J`q3"xq*.u{0cˌud8J,`[AfP}o?'׸* E`㯉ς΁H*U]A:PIة:F"P>ŋt.OTkz8r(pBLX_S)۩/6RAtW橢
+$Z 0tUnoM}=GjMԚb3MxzتȶFXI+.j0ʃM)0Vck-ag6H9Kd\mtZ8fgDx
+26}/iKs\wEd{@GK`uH_j*fǍ39Nc%.k`th#	ÌuXkd\ȖP)^apvؾ1n斧o41Xh5B$PmT}i*Q{S
+[quDjO )UET|N]xNOz]ӹ{6^URqMNOz(aJI}D~؃S> c:%lU |#ڃmVL0`X9|ڨC$[IR(K&B0gVhD!µ7CdJYͬC`r[YMՍ6QuFT-"Q8#h$i'kO丱₥*X3I$&sid;ih[/Ȗd(D$~0c3Wk,KTm/P;	vQKT}Fh@A8~ɫ\ߪg0!kDvuw7n-R:Ӣ_ETR<
+R/*_Rz pP
+/ڡO~AǤ~qէ d@l+n`jU(nnS!(2]=n4ԁy]%J>cɤƪAl8Yj#lz"G՗UEU_T# ?
+UcgiPux;A" Uk>IjRqKUu*/gymm:X&ڌ6ӸͲ!M(Hv%Wqh^kGUnОK٣W5`UjTQm5S.TT8,}mSewT7)ݩTPߥ$O 
+Έ*S0G-T}P	
+O&MK<3
+yߟaC;քj`J$a"Z1,ztU]E`ZUW8H8
+bுQrph &cEA!T}EՌqcE@DRP֘TR)1ZXAEU.g[
++텨`ZXz,_r7θՙrCt`kWXk?1u&G:pՁɾɖP)QK_;~S6aς,5;&(#VNbQ_CI0P?T}U
+^J+RfPUq7oDJoIX%Mr,~~'V} cOpq4麩ϥֿRjWyڸ >>x
+[4i
+>f%m05]uJ614KڸZ|f
+XǿS_sV0izʲE W4P54f8TMT!,Q5.p^jӦM&6./Y!80 Xf`uJX)1qx4tF82~i>%$|az:L5,	q&XF-Ib#-+M=UQQuFUP^^buBO3j"p4԰:Pe+)a}l-:ꇁ]*H~pjp(3Z?s͋SajG||p۩6̇/Y7ixQl8xt^?/]:0F/j'ǽqB$6bCW-%pPYGk@wWizD1Pu9k>?b9 ؑ*y_sn
+jVR"TlQup;_`©P+,$^ꉝ^ Gؚl36qc9n(.8nc+F۴c`}HH`sf{F-[B!E_QKߋ:7:,@F/ZjFUp?2`1	6~U_*iJ-pꕓW*q,IMu딢|ctGJZ"8hnA=t LZ8|B~:g߾Nm[Sjέޱ9cCjmߥ~qԦ74u h2²֯c).XbI:6N)T*k#]fPXi_]S1dc~eA ޮ8Ckꨕb"[)0ϧQ;pf*9N QngĶ8TmUsGrʕ,Yv͛7("TyXhְfq`G${,`#	~
+9by1%gik ÀfSpchxqh.ZƭU
+U7zܷv0꒐GջUET=NT aj=N5O%Mtf>0J [o+,>}? 3R_T@۪Ԏ_R;t{&֯nz-Մ];TLkz~!qP߅)L7i~6EWzcwf"0O1QKq[0K̬]GƃUIT&Uds5~3% 'U#oUjUQu&Lx7~5k6mڴ ,d G
+lC{0!`m&₯q<V9張]
+fM8S$8rʥq"02aoEàY61[~Ԓ	0\o[s;`iAS0f0	s+R _5#^zjݙAPab_ji/K%Z_)uUg&.*|*[`4;[Wn^ڰ ?6k?mAޮZt3*2QKzhZ4jMʂQTuR@`3FNFUs8cQ5ީD5\HU- nC8 ~爪r˗/&,ԡb?	Xh-ӍqZLUfDR0X|#2(^6=j$C}j6]#[:-箮! @UU[2<JJUYc*)T:3kUET=BU18\TOIPKo´yje˳AS;~N-kH5u3_?Mm^W}C򲢫
+X (=KLhGSkU*ZG
+
+Uq~MzTf$uU2MV=8,UAUjP[?ĕ)pjZRCU]U7nܨ>gej/I끢jGZmV+&!=7}Ǎ[
+fjJwz%]!pUHylk/g|lUGc^m5jdf=k~߷7dTgPaXhȯj4j*UK	
+ /OtJTXBQ 7ݡv(@nx	h֏S7FH.0ũ/F`e&ֶ([tUYP !K/~̖8T`&gW5Jդr+1}ݞ&$+R|"R蔂13FfնoPoй	KVzU.;5"6d̸(.X[f( GZK`$~u4Ӗ>sW&DD-m,MGB!KMWf*Cne0*z2VobS˗$1]rǎ(?R{C
+UYCUO+fBU*AJ>wCve 8SS^+RRi+O@P~ AbV0JUEaMS-X"%AWEUY*.DTegMW}S PbrY#B~5vp~foI_m٦@Y(悪M,Qu,Q58>~uM:71bD͚5:\寺UϨUoׄ uZ#mhKjf77Xꖂ90JL$xXk̅@`ʖeK6w_Vb#޵` 0w,,>4`t}uOPN-<);d+^04'J^_5T]JjRk ƎSl.sEUά7q,xv(M(L%m~Bgs!jiΙQi)`)ĉ^Iן@*UҬ%ue}TFUT
+_[FT-|EU{庳:竏_veիWs=իײeD\फ़ҙZKN4 4&v5شYq&|&݊cZj|0{6$Xυ6:B[%oBL^g6zXw8]hNnJlb:5ؚw~[_$8YӇ[ab!e+])LwtTUΈUQx*}q/0tJQ*Զ3+~6̇o.Pm;ZlAJ`8|Wp%'gMWV2(]_d1<|&aB;ֿ1 ΤS?MUS<TuԿuJ,T)4-u]UYk_jc:jI7I`νR0cmŌUΌ{XXf˓E5gԤS8l)0{E7Сi5K;dH8vn]Q>ʀWxȲ~MuPπ`mZ>'T	ލc&Z5}jV\CnGT} Կ
+UyL	sA_C0V^ [`TmT4W)`
+e+5t}Yӕ'Q>Cʾ+*(PzYeX\0{j8͸8j&MKT}Usl:T\wEd֮<Ufj`I:CYÆVOL'z	oK1cm牗$>uf`2fIh;ؕ-y{7\ؤ8VpKZU?-&,4`\kU(PS*Ip4Ru16D)@TvjUuUUws@U'y=&Y@JKiiՏ?0]_+&׆XfC ګ>"JNՀfW<RTM;&D5ZRUq!VHp }XVY9&"rp)/UpIg6Ŵ8)	*@Htu>':FKW	qU~+wW]1pgFAȐN[ZRfA`u\>ll,Cj;uAͬ9K\*6[U18 Z*sRW^\u3s՗Ue_U1~U'B$A9of$8h^N8^ij:ݰ<c2S{B*ȩR%scUW:,ݠ{gTM:  u"r	^Y˩ EAFa;PndLĤzEqsX[/y<0!FP?&.P6Xm%wB^JH\vw5cD(pOURABUZUtu$
+ip6_=dQ/z)ի<H̪]VkT=V:^U_8k߮n5!>Bzj2 Xju ޼I4@4搳FUXhrzfMeu)CpjCZ~>gV}HTA wB*Ts!Ա7cjrKU=ԛ0NɶjBxOM?ZP\wEd)=vXuAL"i5Lff6e|5tc:JfMT
+!s撑Sy`e"/:uK;mIW]aZ@1Վ
+YtW+@kp;kȵ:NXzHXPԜ4%sDI]qvݞt}9[R >KU+Yws1RDU}Fa pWjdҀz5@4)_FXQHח3kx^0VMT	  ­PׅSupjUSYnA냑JvfoV)zQ]5Us	*,S5Ad/j)nZ6i
+&PvZMXL_YF/5猈hйW
+)tO\ң$%v>v,9\
+E\}p6f]qUR	V"K*VVZ\.?gTݝL:ţfVifNק3rH,*e+)U[:bXIC~/d~]T%ҙ?τ)6ks
+Dg^s?f+5V/L0gDt}1ƙM-].5kJXiJJ$U<mInjO7U_juT
+?D5*f7֧%i"PQ5<z(םjYꅘ]Ĭ:%H댰1n6،g=]=ozqs$3VV;RkT%cQ!ցGrɑ?'kB1hWyH
+#
+O1e\c\}-6FdM080a	8)>ר,ZըZ`EO-BE^;4f,k?(!VajkhnePocwumJ
+R7-()ڬ;B+uS
+ωf((-Uz>Duv=fatHU:GS\܄S*pT-	TN
+Sn9tBwRP&F{_(SJBՌJ	&'X{(غ׬:DZ	Xi%ypu:3&;0vYeLę_:p8`X
+)D:4Xb\2IKlL>yg͎ləfBb`7θ%/BkDE>~wJѥJ`uQn ( \;a	[z@W#L\jjYQ*^	ނo0&[0Ui9~7,o 9]T3k.B;xzTT'<5T]wTɪِU6T`nԿTK2 TNt
+)HϵN
+S7Q55NO~pvQC8jᢪYUTXؚVφh1vD4~6KQX%c5m((XC}7sI6XId6|`#[pVoi!1pcZDC̡UY2q:dfbt.zըB:yNQ5zfJT+/5K5K
+ cӀ߿Dk|UꮶozQ9L^SG+m&0	j [C?W	3锨M-?q)-8BuSտioqHUU5:x/VGc{7WokNd锜16ոcSͪV&?g*uJ[<RA
+?@s	^(^˶W{
+ZyktT0=X&:)L>i=Mkj65X7#+kǎ
+mu4k#$R$ZV˖bm1$瘇k4~UJ/D%XEs4u?Qq7'
+Y7=hM 0uW!5KQwUշĔU
+ypl!Vql ÷!w7_F.>|ԭAW98|<f]*j&R+dtJ귣&no-<&R::1'?PGuQul˄~!5RtTPy~eבƉBt&uTmNP,BUV*d#lf+⭾W	:?DZOLzf`ae39Ψ.x:J\zƓSU0Vlg0`Y6B!,ْpV,c#l>L`gꮲqqqUXl7
+[q+0֯+*a$TyL1^ h54L߾r1uQ.`ƪ :tr;z5 NA/yMTITj=QEjQlwjQ61Dʎc6hNߡD5KD5G3!"_u'ZDj=HkqVCZI!T16RAp#r6/۬<NfD@XJc⥧<C/Ba}vZ:j91-l8X%Im_}i6f0htWגbm4F4yNT/g֪9K¸
+9KFLU#[ߠZZB*B۾8nimP3=7.Hm/Dn^
+CaW(+|?PC.P"t=S@)GUU#}Ե_P4ԔRWM@yJ84v!aSs7UH~߾kFUPE+'4+\o&Hݙv:yH)WC)* 5Adj [}Z&dTLj|7J)LRܐp^ r)x_*߈L/䵙h{m1/rH 't%dv6Xm݈7i&P^~b!l:giaS#Bbi5̨YK^Hb`j10ɖt"LWhs;JXa꣠_Rv(`+p9^nELxRiRq%bbtiTXSUh0%k<r8/?uiZlz7HT
+'#
+0U?H?	s/QֹUR/j
+pHŤN"L¡Ln{qspP)(Uaf`G4<J l
++߰RMW3ɖ4s7jd{4~I؍6b`2a,%VlXhɖu`
+q&7XB.X΀>akq,It*dD	c+knߖ 
+7Z,mjCZT?0yTH~H
+SR/hj_kX)x꜈Bu&;-87>!H~-=Yf=<CTmNP,@[cj,*Yi;@CV/]m'6qܴA44}Rtaα_c`}6X?GyI%Tҥ%;BVB!"j]^QK/ꨥbh6E-UlN\/J}+EkI0ρn(^*$7B5"	eD@Vp75=!	On ~tz>i	/`
+NHIV>!T۠Lyƙ
+'pS;}TaJrdDuSDn..dʟH)7KDT
+'$%kIDD5M\PSP\wEdEV+k
+ᰊI@?؎7a6ؐ"jD6m(CWeR%rtcEUL^M)Kf`܋byf^,Gŭ{A%I6ڄgeKldKn(-a(]pO!o˖.C`m4q4tUՇdz1VN[z8ʩgx| VMZ\/u0«➐X=QLWf?sȑ
+I^C#jMQwPf|xJfAA55ΞpUUR,SpR[_d濆"#RCwA9VutwBͮ:拮f_ޓNP,B("{	pdZXmߍ	0nm!gڬqLDqchr\'CYc%:%@;ePyTih*][ΙkMz-iZTJ˖H̲(8tz\= Uɫvc:ð>`ª5X\#EqMCD^Τ< J~:j*ݧ3!7V(*
+K{>PTPb';sTTX.;C4NPGT/{>©e/h<M@L'Q<-&0} z1LiWj#Y+OP5Y9.@=ilAyc:RzYXǍ]
+%>֡XGیu:Gyn:5Ƒy7ifWvg<dׁ̈́`UQøi7i
+ <Cu`1ˆK:(`j6ֈ^*LU"kU<4W`V?;5O-z6R`H=Iȓʼ߈zp>x1I۩AuѠ	N'˵(0f*_yuGگQMSZ0j59wv?~2םjYfiacR1Yr9=8hkwg%KM)"h:SE:Zp;oD7oqsҖf&WbRVJ[\JbbB8De^\\ǳ"+%HR0XOCDK~Zi "ao@vs޷!2*K`
+^+t!<\dSTl.j((PɄT84\ &ݎt^0IT7&gӤNяDJAHf%;GU:T-"EpfT1H+`+ku1դN8	餈S~)Y/lf5&qܴ`98Xh
+
+&Cw4XWteNv6Ak~f,l%1l>4?$XxmL)ã 'ha5Ȉh'tsB
+dX&zkak$<^K84<=SSTGHN*`fɄu	N=FS;FMVͦyMC"%ݬMUJꇕߕ]CJsoo99vTskzߢwT-"Kt^ׄCQ
+aW$
+5G[cl5n*II1vble%鸡~c
+.KN)ؙo.##	3U~\ʦj4XeqyǱ0	W:fm\K50ǪI+Gb"Nf1bed/Fl3 M^0
+1Q5bh"PɗCyЛH{nP/\O<`2ު U;ƽ~J,~y,Lye*
+eRf>'e}QSʞ]T.Fn;A",T=@1Q+Nb%갈<=Tʤufh;&&K6_z\,8X10E"vɏǔ`2ڤ[0Vz6X;V?+
+UtR4D)	VOL
+`) ^^>VrPVp AYvjx=QMu99):*_1bAN]ԣ0Q4Rl=3譜'CM*KvPF7|Eҝg$i~457P;5K=&Au[JT_TM	&K;D&J0oꨘd}C멞6\LnVss_rڬ&|=uFmp%
+cŀɒ
+[
+"Bzmh9L69C+	'ri"pףĦ޽)B
+<'g/G%h(5+zm.b1c6{ϮSBg9 BavV&[_?.⭺,!umWGDXMlKjʐR甲$mg璯&FQf?V?K=YRە@/8Ң_J&|fޖGz򒫝Cb[6Cɭ>EN2a(C	*N~3:RB#٠j|[s	k̙5P/XR~G5j(Yd&M_8uw V_ŴH6	G)LAmfmz_ڬT
+6R {)h-o.9mƺZ"p<lFEK%~o/k9XLmF!c}Q,Ð|w"nj{ךKsZWB&	u%x%Ƿd"uw#3-S'()QԗD#Su΃p[=S.T'!KQr*3\~P]Lޝ*3~N;KT&-)A?~|Ν{ȑ#K(1zŋ7n۾}{>\U5柷8[MA#ULf71_`J'4Leq_]/Z_KQ:D?f2DtJCָvՒXߤ`K	AU0*uTtK7A.GK1v6P
+K_ݴY6,l=Ү	KxEBXJ8kCacT)ӓ#<=S%Z_r0V-Tk^3p,'X0ITD,3ex#*ǧB;~HݜnƉ~uY(勨Rs(͹U֢ET=[hAjժvm޼yxpHJ筎HֽZ# ,;[z<AZt#/KmyMN5%H{+F+"^F!$^v)xC=t|ጊӥ`cuKHЪ`u>cmn)mKWhSBR}g֮  _L&J#H'+G"pP, maSl~qI,s$eFIQuO]TNj P?g"^xzfލ=V}{pR0)aH{_}%2⭩;{r$)FԂSXi
+PQ-&T;-ޔNP5n9ubŊ|]v9BUsִr7ZFvZ)Lΰ iM7oKNnf+qPFXNAdKkl!<IRpRN1u("Jሗ ~_1V:Q+<A0ߜF2i=9͸#
+"C4{a氰хbYZk?l%2$S5tzNvÒ/F8a')b44b~b6"R_P24ikWù~sESs)eMTw)A"T]z.48~<T=H#`[|~IZzS]j_	2	C6*N4UeRv39߉4/'/XWJƚQr+uDRXY~0d+}
+M`T0L=98#.
+_Tg$AAȃ!)ԄΑ؊:aW^HHQI59=TScx*ZJ*EQÒ1mpHt/8Tpt[j}&P$N
+z,5gMtdU?D5ZE,QuUUml͆FuߠItZΝ㧚& F"7Xj):ގm֖m*۬CU`Y
+yst<k@$9إzYsm66KBzmxI0x/Q7h">Kc}N֦ͪU=K踁j0nyqnNZxj*&(WE<_a
+_:48o3oH!)3q8K8,k~=Bbrn0:!R͈M$Ih̩qmI{0,5ԟ2<R<K=3KͅfWMP
+0wVl Ft5KN&FV3,Cm֛by_?×¥`f"ma1c<HJNƈOv֟e)"L)FgX)Kelfm1Wìs gU;ULG`n*Z)΀w#QeFX8x(CҾP$tևGqO<y |Q,}}0{,$meg;S.e_N~UXKJPg;;*OP5+NP5njy8lF˔m(S L*2IZa\]o"#`6+68I~ɸYF7k+챒!BǍW
+Kq>V3{m֝,!:0Vyk30~J2"bFMSj;."iǝ7łcp6k}xA!="pUW	1~G't`JKal3jՀ3V>6b<mz]00Y:3hR*h	$$Q0Q!qH-K<=2
+ FkPP5K`Uu'u-]tرv;W~g̘1c,YҸqHM.optpQ״"aa)>^k!:a괚SŤ`CZfjplm֑q3[Q )fk 	H\ci}-/mXl`4DҪ۬deت~5t>y
+\kSϞBT1A
+CǪ!{aՊj5gNќ3vw@QWOD%C\G3$)7q2 8|灦EIf
+r[FM(לm{h2)~3&/5kyRvB/fY*Lm'ǧ5|TݫWRLu5{lwMSjlV[ojԏ"tAXws#*`%H,r7H"_:K<Vlj4<	X;<&D`?fՎCZ7+W1S1ې
+q~\wT1u'Sc-	~S,㘎x7_nP QNݬpln)m흦O}|,#|̴܁7j`HUXxF7u*bpt9E!UEnk4K?6?Q7D3m3Ad&ʓNW7k'@ՏNP,UsLuO1#P b|7fBEkMq7Yy~63nLT4~P5W{XBX_hf\TMaWfG1X\sG1( tA-S=qk'{9bB#i+pqJ݁Xo_Ԭ#]/fGB,}B(Vi[iެJf(.w^O/-&Dg7L h2!ٓe	!RT*II,JY$*Iڔy>s>2}?׽3=~_W1w<nNEڇ۔զ ;H?M&0Y5Q{>{RK-P-Ԫ랂A^5VgId0#Z"7zut1A,?I8T{7N	S|IdDaV!Z3o"</qjיN\?C{"+Uƍ +^Iznx9i{7h {՛m$*%XzjbgSoyny$dsx/I]ɯR[_6_	K[aWzm/-	,gA$>\ޣ!RΔK}TT!iS(O|]MZx
+B6R#IJyJQ;%S5TGkTՕaiRp6[U0'Z!ހi7%ci¡^hm!
+=9ָoDۈaV׿doܐ`N[i󴂗[_UڿcVVop_	T7X؃:F֑ruh"dC1p("=e},FJs	PIL[ Kʴ"~'Hw]xh'?mדUq1 LOUN6)Nrԧ7I[x{&;=S0a+Is=rQ{8`mƯ}$K{&TjTٲZG5T%[	)^3k@F8I=aT0	o(tv1	:Dvhmehz=e+1OpU}fDT{L3-f:[8U;{7cCx.&9l#_u8=9rC" ;B	_.	{q͗Gr?ٓ!lsS;RV8\:(ߣďă6yZF^GoPa ?kv/NSh :Iq'2[jrF}SKTPjj$U:!O06\4uK<֪f:qL[Fq.?4KRݜxSzSTX(Yma_0f}H{9 u𘕻qz]ʴ!M\<Xo֞^E9O6xDwwv+{o	SEX0Dqo7CoU	#qvXjR=I$Z?IR>Wo>&Nѹ7M^54>]ߥdII%#5JV U`:!*٦fVNvO#DC4t1fC8M8`mah)`R]A 0+Y7tl|)Ǭٗ؍lxViCh:S2]jAr
+xQ?(#&	tLTF_( +l+ѫ nKTcVxPgjBa; MI_
+HA'~C=%ФKTq7)Mr" Z4UK"WQIG^^ݺsN8#:LE+	Oިn0LZ*
+B?%X[$>opH`i V'%8 B-sZ]N\pslh޸I$ņhMgCr$[Iul>D;ig" L$d/f$aoKH'Fڜe],"1w=Ym:+mf2͠>1Dջ31^_ʄ<\m<,BLZ H,T+>RbkUאGl^ȊenM!ݚѪh,&b:@C}nD`}ƈn8:Z:m6^e@/_M[0``5ZO'wZ	sIz`+NK>X[XN]^۠̑*&ߩ +b%n(,n+Y:TX-Hz܎ ^=|5߈"OkDnIT#A˗Cz}ùI]9-є1*H8ZG5T5VW2`n[.&K)Vo`%'ӃUX18S8z-`ֿGUo۬Oށ`Fs3eP[\_] ._ƍidi.\?G	htO8okKbŵyFuqaRZP+8=$mwȺ=Cj#(8 nvt3=g]T5<^_w=>m{OI'[먺<BWeb/᭄ᶨ[]֓q&imluEkGh퇢i"Z[զh5gsO:w^c+Z.Pv\	f1h[)^ڙ$k4
+!l?-=.cBH
+##.nuGh>AX=+^J8 Cu.(9gc$
+IS2c{ZVg<es^_/O-zZHR` Xl Uu1l̓PgĉbkI4S#6|~j&u1 u8iak,o+Z_tZiEDϊL!\OZ]b"VuKNR#Tԡ#W${jG)(	8R!Mqv<}ھ}T1Mqn 'OaCSOx|ڣӋ0}o'L'm+NMqj{uVJ.ߕ>}ޝ0&Y먋̖o5G TN(uT_{Uɑ^Z [_ԭ9z#[xD+u1a^ֳ֓Ͱ+汛{<+ 7]3ǝYY]0Dn󬄭CV:o]AgV=rHW !IR-cJw7<NKbvbaHHt>V#E.PW KAHі f7FM _pkhZ|%zw5m)G4Г:Z^_[#qFUHN;ZG5I~oIu:BMLp,[IC8ΈV5l.&'o :'I^hQڼM4zLV0阈OiLDl3kKU]}}5y+F|٬\(]?x='%TUW$_B=;R4ق;u(_#8,cpT6
+&b`L|ͧw9䊟6#-0?wd,i׸Fu5+)WZ>+Q}ޤ<*uj`]Gռ+K(T+'^Y_S)'ebp%$[)2u'SEfnA" <B+4_v	9?ey1C'zIن}cעzb
+4IX/Ex{%]E[XO]:bdB2VjX!F8ySdU%J+nUj4Jeɐ$Do2q0EqJb:R-Tl7<EmW:5[>VGjU+T=Z{믿Zjܸq5:um۶}*-k/,kZ8^=k8!ݺ}5ȤS#$wX9l%崋IE0awҪ[)L+Mr]߰s[]-{psʮ8u6	jKW
+˭q
+د$dE<[XvY?=3Ud'K99IPڟ<sXdwZ~#UX$M&'sٛ	SߛGgjmJ*LfRZ U+TzlRo߾;CF.޽{571bD.]Zlq&L/3Ǔ VxPj`:PQ[wE L]Li,;7=*BAa<
+W9tnuSV*)s	{sݝVŤ)[oؙRl:jJ!PُggBXVW0WLi@' :|B5<ZcSL̽4",bAp:FH~<rGj*"~;qewVT#s5|MyA;Sa{Mۚu4@fCؙZa2i5"$X }ցxalT5tV
+XA{XJ!LJD3rv&XñW=N`9,g}&|@"ҭ?)HQT+?+Lک;2ʌ{S>Ηf%i-<-D-VF
+ k$U4/R>!]+t䚹*fk9lm@DkC"Zw!D.3X:&4k]h}E`Nn&i*_-N.kaS![Y;tu:K0RsXYTs hnh)\YhL-.Hً21SŗEei8Z RmfOH#}Jלh55	2i[)Z!h5nm~"ĘNZr\Btk`-Z͆6	ӈ~:oՙf[vS"a[EאE1Q;OʯB)rQˢ֤00Un^90])YQo,O97Η^[<-JR5E$T|TIÇmРAs̡SNlMZ:>0,Zo>Cwu]S_FOJUZa#+"©IƎhmɛ)gJ2nn0=byCY6؍Ψ51Ɍx̑+WP&aA.@'VwPxP}xMS#!SjIb,O8E}j7{f[|.p˷*j5X6+":po﷨ڷo__~&Mj֬ٞ{믿	'иq;>S_CI;v/?d
++29LTJ:CpS1juOpQ!p1yR7fC&a5iV&Љwy9?LۮU[ugrB6TJS
+\TPhRnB	zu>F/$TMuƈS?E%H͒Q`-[43ao֭jժ/r^Ԯ]wީXGPϲ+
+lڙ"z`^D&L}8:b`zC3\L\L!&avzC*^xM5EXjVOh[a'lw@t.!NHikW`JW1Ssx6{a~i~Rl7hF jIzsATxdUU-[VZ~ZC&Mڷo(<ϋ/XLOJUZ^=e6^naΔ˔k>ZLh6ǐSI7 .&rH<a}9xj.ln5]z&LS81lsW05i.W{mГJQF LiҠ{4է4W78<UR%akUΝ+Aƌp!i&/PyL|G"<wr2	[^pXa>jp-<-}MyE_I^b꺘r1n ~'{cybog;e!l[3|r%]oīMX+2/E0Tښԁ~ef5a[V4OKE8V([#>j%%5Tmj+5:J¾yHC;667qhݚjѪVo-Z\L2G_1iձŤ҃iŔ:;e323a<BX ,a]j%;mNV9 5bfF7ঌ74Lc&aqcF\	E5/z駿{}ȯ$O4q\Ұxk ӔMI/0&aܾ9V[OV(gA7ԝ`sL~pn-[y+-bWj_Yeh+uGqu;&K[pQKؔb`Z<fk=KÊݭL>"?cA3+.1ac,7{x}-3#]u}Vqp+(>s[a+I}<4]L4ꫠǘsE7^zKnp2Y+M󰗰VV/߇X jc!ihL2cSLI--L#ۼY0iY"k.FRCH.\pʔ)HԨQۋ/7k?yf͚Ysꩧ>$ط2 	qxIׂ`kU4	o@ζJ#bNZM'b8?A?wPzQ<YL(Z!lV <\ӛs36uogrALMhlMX}wpkb
+ovjbѤ/xC0Ѥ`i6L+uMѣ_uq뭷NؚPmB:tlZju<e UiAҰ9lvM]bɆ6	V1l*pܾ9Vh=jVp{Dk֊T$rfgݍI޹kVm񖲣s̿Kj#	80z=ASͫ:LJKҜ=ޒRtczH6{賯+#zY.d35lx͔}&,쟷rmF&dfԡn7ȈxQnV3Z]CXUkkM0U_D~^HVRg
+dop.GZaKIJaj14HZ&oF4L+HspSw$?e!lX򄍛9tj[r6	oiְOBYL7oĊV亘E)rapq'DUO.376+3d."ڷǯ7qըeIJj0j4AZa4I(BVr"
+Sk)UW\YYs<X*~Fiجp/[8-[S&aV&a$Ld[_dD#LzZedmd{l5p0p*]nnxН#_MȺ'F$R@9L-2<:ssM֡k>@Kڜ$,R6jԨ[n3f\y-[௪Gw޶ aY65l6k)]s[kL [}QzUnn
+7[/ֶr.ʆpWV`+l}㘬÷D&=ol[]d^r	D«[>:@\~]Ujk"ZиZpDgX{fzPVhE6NƮj6mZ-j֬y\z:tܹzYg5nܸ^z\s+bVds6`sb65 [=aV$l?MdF7hB[bmɌcd0]yk4PQXv&}rtI9o9k,nmaJhT:u4@Ku,ajbk-*<sI`zꩧM49/,Y܏XpUՐptuk^<-JLFjllMi>sa}cl8֔fAL2S׬~ځDRE`,/
+ tV=+YkWE64Z{ztCx;r	[V'?k^ZalC7bQtU?kɔ\mo\YIX6!YWF7wErY$TݿZGgwޖ[nYvD?_NǟtT=\a\y Aؠzhe{/;;oBo{fJJD&025Md%rtLdl]V>a=QtC2Vb<aO9kW3vݜ퀑Q7ʞl@:]*~YYW`?[I˗W*s9N~x׮oN[b'cxuNyaml[$a;iyZr)Ԋ_.JL&ϑ{{VxgJW'L6qmtHgԡpu܊«s,CX_H𐱬z\k
+0SUA"/BV7n\FsթSgo۶{W[gw;+Wz=o0\!UcCGs6LXKND@ӭedDpR&a02F&vxFCOnꟚDyez#$Gp`	Iok8D:ih*];Ji7Y;L	WeJъn$U#9|TM;ШQ.wޣFz7GѥK-[nGqĄ	\uUM6oVZճgύ7{GPR9A6Rf5Og8y~pvV1	˙Oŉh>/0	3oUU(uf8P֙$$	W-=.XJWS5ld CP%EXܾFkm%´P7n&ׯߵ^['ZhѓO>y]w?Θ1o-e'駟|ǪW&?7ټgGY/dhkՓ 6	@/HOJC$lF\L؊&a:]Lelaֺ[?S8zG\#7qRzju]Lز9yϡj-kQ Ll,U)vԩSbK\qZ*J~yG9eʔz-+SխxZCV>uew*	dk5xp;#?=-wMgI'I!p䒄5[xN2oRnaus,L©t%asje5Y\s6%oeU	 [fRKr64`~ן~իKzmo.رc~R~/_HԡC?IۡCv'52vMԕ0jy1K9YWog83e歵y+P]iOX[[=y%2L7o
+Ai0d21P]WΤMHhx{&Ë;]F kXYWӖ wu֒ܘ+mUs˅5/%*/gWvmR݌S'|j5k,ɋ(9l0'PTn%AU_rlPɲ26
+y«^u9GSkpZL켕yaNO8e^[o
+#8}t}D3;hɇSIv]Q]0"sjXWڐbjMQ[cu[n<[ˉԢWܜ*Se矿[\z饻G>KFkN;|
+?ЪӼyw}ѳfj׮]I&?ݞ{O>*Iᬥd#[zk`.؛8ۙ"[7F2]nr#8I
+;8*OZn}u8|8hj%^08bgtb 8ZGFwoZkآUrKhΞ=;D	R&-ɧ?Ϙ1#yoM7K&rR {on?.zSGyP6iXVfM`:AjMnDٙٺMȼuydVu]|9
+ɥwͩ+8j^]Z&^}֘zzΆ$m$p+e%l<XK5s6z*+UV5jԘ9s&QϻrjՂr۴ik#ڜKL9l!më%]ænVۛlݮz4L*:ܪOR[[ֶ&[u(SgaV;oA# 0!0)#v#j
+ؚ.d]1@m>ږel	Z(Uiӳ`RubTM^|֬YvK,:uرc,XP'L9S͍ xfr6YEIذzxGS@SVa^N=dGd9:3(=smVk8w!^t%8#5u4&^qUWr3]Ja=~C֞Ú,Er,pc[-g!WiY1kU'x|[o=vF>I?~˕D6ayzƯ)^W3Ƴ=yk-d+[B2٪[Ô"Pd'lduVJWVr*Σc!EWp4%JիJ#^]SMXSZ]lۘ~r-%j<RKEϼN!n$UQL-OI>ϝ;7%y|3Xbi d35)`3n*DzkNU(yN'L*p=f&[OWl\W[ev<apzv&qUo~'&ctDWr4^t:+86@X]1[2*9eiZmT-Y>ߙ<{o"or?Ǒ[Vl #`ī#]lۿig"Cld:A[apV9ofDd
+#W^cf4>$v&|#Yt}qt}ȐI[ҫJNMz9a	^mKX+ [X8
+ZUcќ+[謧?H>y򗿜{z=ȴegTP;5 d5n+]3q	gu&[Dc$/[7e[%[az7o=eO\&r4r=4>T%atu՜r-bkam{eldg0RN5B\T}ub|TCի'jժժU7?,g93K:`,p,'cl4^+fku0rL`(>[PMle[aJL0o%=a|W	ԭOsv&&+]qU;-~28}FհFqX"d94l6^Ԓt"*#UuS઀3<Ӵi1c,_|ժU3f8{Yϻv=:AW䍧-+fY%ٸpzaєjxGFWk8>0z<Э,[0qWyHG
+9,qSW3LMML$3C4Ǚz4l%b艂9`aM\lEx	Ӽ,% y#rb;L8ҥKwy璼/r뭷4$/^\PK*a ",|U3l:28Z[sn>\0Ga!4>JWjgJ{ٰ7N]@GVLMcM0	k3]gJ׏nrX;k-R\85RƃPf21UkժeQMP@$/~'H6lnrN6lؽ{xE>?Ţ6٨8l-ykFg?ٙh[ *plmj'|V
+[i!\HUlu֝aSOGIujk^i8,`cn>ExUM­<ž?{$UTPNc=FHԕ+WN:y槜rJI^|m9VJޘ>}ATGPdNʨycP0aƫ5~5;^r57[==WXg'OXߘk74[wVlUGp4[ <a/կ:PD3]lpiN%=aCUZtD#J	D:r1xlN>v|'^z#Ā5?U7)QK.KC,aDuYڧTzs9,ɋ׮]{oZGPXn>Ț268^ig5ֽV~k~v6U6S>	[lVVk
+pc[xfC[xٕNΰZC~!lrS5J)Q
+hDV.\p|7J{רQ7?o<x;XOQ1Oqj:Ũ(Mf?p}*xȂ%'Jw}^0#
+Ȓhl1GnIoYVay(
+0UtnaB@S
+8t9:`ju9xfJa*`aU-kD'L`m:v#^x=l1TAj4Oi..U۸
+د$v*GՕ+W}O޽{ꕼooN^5T=îm!70^&PN`ו.Xg+{cwcNhdI)-]/akjgJG]pJ]l4G땜g[9zu3{5M~}a>?1f_*18xi.FB5֭3f\y-[,g\|Y~f=صP-f2ӰFQQa6aj:EWUxw[wV'9~L.zG^"Uص3uT#W""_HXQajkRWڄa֢Mfj\-j54/No`azˊPFU>N6E5k<.:t[o=묳7n\^kfŋ[>3)e+T{qjId]~'E5qM|guVggθ4Gwpls~1Uo<awTdك6lq\['|'rMqtz?554+`Vڤ/dt=5<{u2l@FYjf7?O}H-͛EhJ^|͂̙3'驧6idɒs=נAu|J$?gR[)Ya}9+9 X1;Ǳ5ߺ>{U45[V`~+QlqW [7Τz-đqVh]1\yGtJ=þҵ+1u%6>pD8Zǩ$jq'z<F\
+"uFR7]vG]zue!>-KWfYc\avSWnykAlMe2SP*I3o=C!pe歲'ܙt&-,E;dh	ú-O
+uW}B}:h⧮sةkg_[ő<k`R41H#N9:$-:(RubkmjH.Y
+.K0j=ř-b|aΰ/в3̸ykm	ֆ?b'L:>B_ùJ&+Jkg3'ק]W3\us:٤3ػ9wsXDkVO株ٍ*pS7=U pQ59x*J$om)g!vr}=޸mtgZ[7y{U	6D+lj\&tv&+D~͑@lޞ{3]ƑSWWrdD&fS7#¶hK>0'Wj@QlY!r	WGm$UaLSLT7d֭[w+ >8d5V<veliiTfoQҕ51Lٙ#/0ǼeƜb)~b뇶u&[UXۙv&C)gy}EWS2·0cؙz[9TP!ՠJfS`ť*1]G}=Oe]Aճ:'Ύ+yp6>	XՋWmawinfڙxVպ[OBi߸s֍ok8U{;ӓhgM	?o	fJGh{ڃZUyj@Z O}0d(ʟHz!I,*cǎ=+ɏD䇭JPPآmg]%k^O9xv8-lF ں5`;8NC*Ksini([ze+f
+4;oE;S[x~NG ~oIyS|+=֊Of 58B5"Yps-Mmv۫VJg}OzᇗuO=\UDfU&9zˡYjXELl.a^a^LteGpļ5nyo53ռUeOjfIGqŵ#V86ma|oⰛ8x-<`^NwLFcVVVjT@9Na e8`eժbiMEVYz=TZuwQw}תU/>}zܩS#GS/Bѿ+CGG[g$,(+5vs$I@|Dg02=jϩ
+IOx~ks[mȼU6s2Qt&r'Ҟ0a+vIg7kuED`Z]W0ZF.U3jJKԢx),IPC6÷ݲ*+Uwi;&OtA͝;$|au]T#z~^چ9*YcL	k
+BjI׀g8[M|lvp
+fC5\.4VwvuIphߙ:=ֺs:p]MA,Lv+xmlClUh5AS>uaѤQRԢrT<j-1j͚5NLODcL>ՅjecҖa-{!lFIWDq\ı}l#HvyRxJٚ&ak˭zG5O~&V'|2筽1{6_T85-zc$	KԼXng@Tt(T@*r<Tc*(FR5RUVYjժ謧T{Ty9냬%c]^ɔS}։,[V_.S18h}^oUab:$[/@p;![ɆpwS8نׯcN:u1`}<`ec>0-E5=TnFS#DO9e i@Hkaѥ^*mFRu6rSO<G>VmѢ9)됧zp]FODR],wD_>Q6v}͂,OX_f5R:ma/[&oj%5[Eޮ.ަ	63M§&ldxh5`fE>j	4\kU`eǬٸZEwsQ5rR%jON/SG 1qJ@ȪH>#GUejSO34mt̘1˗/_jՌ3?={+I~
+/ɪKE}^e,sèp֒Äﱄ%[90uרM7>b?ϼ	e#8;;Fu*Ut5lC:uӡ"L;<8чV(ӍN(;{BV<$akgYVljWCfTVxꃩERC9z([@ٯO6CbEڞ;L8ҥKwyz
+~U<[\ˢ6^F
+t^ΰj=ru/	[`=vո'\G:7˭7w9$l7E[3`[`FVVÜpzย!l|u*VcF%cU3V,G*򥖤8`#P?:ZtK	OZ&L@_~iРAe}=?eݦQ9A&WSS&^+anUozp\&j_E''̈Vid:Z^ED?*/\`֫);1zcEV2fuk
+s%ǶdBFUڿ1T?ROyqJGI]L.o%6LX"T{)ɧ8餓cѣG'uʕSNm޼)RGP5+̊(>fqQaZ«f:îtuMMIo5hq7uhZJD +ֿWѯDD&!ZYz"2.l^E`flhW0=v\bC4sYUCCB3K pF.I1d܏@p6EUYzl2,8묳OzsΏ?X'ܼ_WVt
+?pyaK9k*LZ-b^3JW>gk`ʰ25cLEr"a#*pO"ZI!JWIʺ+qo17[V>jn`dXi!j8/%8O)sHTk >$0 Bg!d_?mmI~,*lٲ]n;c߾}˗wa. _RAUI1wWquuV]S`}xlbקjb6 YE<ѝa7gū-][s0hp(5:Q:iscuaŴҭ!|yq16!,Dk[qھ!ZI?-Lw LǬ1tO+X/`:`%kPS7 gx4~sԣOqjGYDj3 pfkmL:7[[dUUW\٣Gm哼bŊRrݺuWZUW'Adre+>j^lVR+
+p3LM>j39M¶	p
+ݺ!q15t\Lx\L>Y ȈedD=ik2CbR}њzU`ۿDNX~
+Fkj.*?1]eҖlRVcU|JVfqHeKIPK{Z ث1E_%/\/d4^~UsEE_Mdi"NDF~`s1ǼK}3sc=N:naf4;u6ԪU먣}U} uyS׉a^gJհ^/4Î+]\
+fdykDOx\0INjf##h5WolCLZ7Z+r'lhCGopt3Stfi^KzՒilfS)EU.$)tz]Yt^5 4v;yjEPB67?ȊjB)̙3'ԤIM6^dİ}np׿~j_~}٣F;v< TM~mX7iҤ{gD'A0uiC/aAd9-xe4	dO0֊oj/zL7r*5 2BUDFlNZUdĞs'y 1+7 X|.X	cAXЮ`kڵ֢M:]%f`fEr_$G3LW#ק&L,eIjch :eOSH0Ϣ*gyf4ү0i	.垼>yo޼95nꫯV/}U} $i}IBHjZ\
+ a-	^Yʘd"]5GlMP&h}:dhuVo[U4i.$z$Yꍺ("."cVzpHϠ>JꍛD^1Xuؖff`J E՟2jWeۿP5{thZ^xjҟ&)'E]frVxl,U7;ȊjDnv\rIɶ*b-/m١:nܸߤZjO?~DoO~C9tzy YWېM	k	Xw6+g1inl=)Vs`ʔb
+VZf>1tL0
+zZE7XǬǚcKlA Nn06/I6u9`}otm[Jm\YsqU,T5Uﲩi:U֤:,Z]_N-_Sͫajtw}¨\1¯CYT}*~'z޽{7lc
+{&N8@>&M*ӧXT7`]N<.KΝ1c{r!mڴUsCS)OR`.Z/d/i?ZΰW
+`ak
+&a_(=lR#4¹]L$ll3)[ez0U0]HZ&LcV;c"VΈ6Ǫ+X6mKt^ @7krGRYj4x=rp5J]7ڕIFR} e|yٲ>xx%ZI8͛WOd0fzVqR5tLWlݞW6.d]=V7)^Q~rijpb+6ڒN`0	{Y7ჭ4)E9-Zآu3VNkkws-6n*kj^Kb=V:`M+1Ӗhsq5i~hJToR%=B5#xYa)U>2ЪN7O1?< IU?ࢪ 8='ӢE:O?LHN*ɋ[OznFG}\P0Ũ!B= jWA-+iYZVezΰڙ
+#8>Sӈp̤uQF/	7X`u_JUD`0/='0.xژV\Ej[>eV%r}U;iR,UqU+7CJJej?j2 ]cS&1ꥧ˛KQ^ir%l4U/+
+֪q{V\vړ'Oc.uQ~:zF%Zҹ98N:ZKvm&g)dYZ]b*`}굵JWej"F[-:=1еVk59ogKj
+nH+8nenPŪ-W07t)gJmIf`Yr ֪Ka_gq_וim=
+Tk F-xKq~MիH{C}뭷Ӱac9&*iР&OmQ9>ȑ#WޣG3g^s5	пp	Л5k{GP4P=-ewUմe9@!,_dⵍc6Ѷ`N|/0$Z٢u7 &\Xbz2)b} ݌`%37ؾ~BJM`C
+otj	F2LmK4mItq5/UY	Uw;[M4~)R4LRB筅VulXFRMYT=3z5kW\qE8yZc/c><9viw3jԨw.([O޽wqǄM6;v;&ߟ	=iڃ'A0 tc=:)yV)>_[E_~Ry5pu9Ӱ?,2v	^]jl#~1	5ܤն0eV>[h}>@&El<|M1`نsg^J]!XI>pj[$CaWlQWM;V%`/G*Q.$Z$4ƨPl5c4$ M0
+o7lҤɑGYj{$b~"!yqE)q*4Q:V9}6p)gEU$-R4ѰRLg8,]4w$|cF&\6[a')dHoj/a74c7dP43$=ʶt*VzQ#Kmii/C!T>Տ8~j'aOT}Jٍ_cj}N5e*`eL}YU]
+yQMX5gQUVnv?<ݩSvmʕ۷r>SOY lZub*R\J^'Z{Eᕗtv/rΤ\Պc"a6)9t.ʍ1؄Cja^hZeR^TZXV=V
+%8w	-t.+V.5w&1ZTRMUjho@FR/9x
+Hvf7$K}$RCf*Y3f̀9Iׯ_OT~U}$a(ͮfucfeM榴59YlHòa9MNte2U	[p҆0'Z]L1rn78t+oVt6nXg`bծ`X+4TIV{̥G dHC5	<Q]K 	t 06U4! T3JHv]᛽lׂ)K C}l֪B+}(!ac=EVYV[57ߠAx;yyRQU$?IC ԇzв^%E[.d'58+#]Kրhn09-bJǬa1+Yaɽ[`ظnwtCcu$Xϐ}Kzz
+>0¢Mȅ`tuؼWgGC"0 :TڿNuVSƯUHE.)̀iFYtׯY`@6H"T=wW^yKtR^z*"UƐԒdЩ9]wP9p\9_Y]J d)aYQvgؔjG`C85	-C`3,"r:Dd/ංi65AW\q0`=MX7k%Xߨ7XEyMor0]}^Ջ2S~@ed,dLTMf5~ANri3ST4P2XG	Y6EUY_pɧ[!C'Hy*r_O]20JQVr)UCtWDY"_JD&l(XusjJzMzZ&ajC0+Z-Zi78_c"18q@?A@P#.oXOC\Bu\ڶbc-Tх>3*.hP}J>*qr$MHLej F9Zw%Uj[wGpA j2h늪RII??CVjYAUiRRz QRNk|}5m5g-DƂ߉jDMD+t!/]U80с=tgu"wQ1k_z8znu\0D=V6XuV_~`VGmJWx$&rRsBEE$UIaݿ-85u(*xtGRf$(S?L֮&)CkL\ΕPi[.s-κ61~_T-S{+Kv85iPY}-"s	jj%jX*`K-BLz=xզ&1u[#[-0ijĩp`:>ט5|<67Q`n3$/́`z>m3`dxmz?6!ji8V_*^I-~LIU*- `S#XB5lR2tH]bDiPZsRTj)3ԄRZUUK;e1FYWU"*gENӾ*S$w.IY2|\_PWWKQK!K ^IsؕjN]5kn12hX{0&cV671XMm^C5	:,f[@^MK6X@z
+%d(1XtU&BYK8د)T/8U*-V3)#N3`5Q&K;<PvY:e!$Yk;U}^&U$u1PH=ւ~x&sjR:MGxa5{+]뗖nuL!lsMJu,cVo!d`W{8i'X6$*â΅ж%=].dWl ~QUJj٦jE*Sʚ2HTke,*sS^V3SAZSRыM`)-H[C!jlFRwENÇ9I#FGPA~5P=Mh*>5)R,jHVwN><})OM5P+lR:U6zu)^M;:?=a̈́bjDbj675ʏYKb}-μd+V<w.j(ֆF:صVfɢ-]c&p4jI}LCpkՠtn*𭩦ѽ_::I/j@i5X#2*Mj`TPMO751ǅJ_D2C)6m 62ΫZ۩ڤI/WS B0$jajPP1j3v(EΦ򶿩gDU5[!']&εV	_l<agʸ̵|U{`>0pIw×Ve^j(s	o+X%Xaz-7XO҅A!	.&TN`Ru	H͠7hU/jҡG0cz
+sfj
+4zxƦ,Y)P%?)FKhxX?ȦdBXCx:F>5k֜={6O>VZSG*MJ{.F-IJaXϒ«i
+Sں};LºxealIW3N])[iF2}vMh֘I)dJ8'oB+qZ`_+<w$/AU[V\Ethާq} +BX+6 C
+qOK:\х*X1Ϡ*&eU*Sj1TmԄЖ/DSjHz.ѤHRE}ַeHq>,a,WtYk;UfgyСCzz
+~eajuw)I]5j1Bs S/pe~~M}t?è^^w<llv&Vkj6K9;i=әMVqi&?Ǭ
+vbus{8<Bu}	VkYGm@ےC-I30NW[6zFyH,0AABt!,׼":OF,a%FWoPO~Eq*S5	F<R_CuW~e{EX_ūUk;U۵k04B$o$ae]AU_qhRFYR\$Fŕ|gu(y5mM*bxIشEamszttkXlu®h/rTp ]gs17V+3/1/W8ĺ.dfdhZ 껫!Ogu \ɠL,7kt>&+Uibo{lړԭiMLQstT0(ӟY"IU|L~n֜i Y-fcs>%#`za^R"km+5kfMF۶mЉIxeizIh/aL^Uc)p5j-ʦCl6BL+L]I>gڞp5[ҵV}ݻ1Z1	6
+Dʘ(buK#%8QZ]PBUeC%WX,5/*MUZYJPmrɄ޴'!=1JT{vz9BwWpJQQPEO>Jfvx:_MQK7x)ccK>ҕWDRgW,^x|7*k)TxY.U.=5:).%EVehױPsRcJH"zW3Wy.&bYMXXKk/3kW"]UX[1PnPL0.&j5V>Q;feb"GϹ%J뫬b
+alK{\U1f`+6wvMoI׈U*6kTJ/pUEk:}SZH妨*էAje*Hz&i;\PJ	(?M]NcY/SYяa.B<Tߥ)X
+ZB"V,y>`U$?)n4US%B8S }(XcƑ,4s5j)g_6	;볈סE$G?dF=aqy#ifCocVƍVg%_:īN:.lex;BB_g^qmx~W'lT}4vj?AKj|BˌSjIT2EjR}
+.)S59EeG`=R^a:OQ,	z~Y;zPXgVs,KX/^]_$?H=PZjfͪ쯢GP10}]WRj_e	[ޖYXR¦bRU^n%lMs$7ʚo"L!LsӼ`SƍXKV0s.X$M>n"B-Gc(ĩҳWlRϒܯIV\O.bȒx &3YoT4U?`%T])SZAj,/YPWiR*Ʃ
+יHuD5ڌd9KڼjTj4)4rg#IF	CGnN^=YdM}HԔ]||D %`@!r>gaSoHW3ek,U+Quy/NӛNK`jh= J9/P&/>'W37x}>ū8=U^Sgf
+w©hbYL\h`zKΌH'q=ViH]sZ}V'ɐؖ*7PH?Tn[6bV$o4XV"5*+TūU!Uզ}T)х~/DMRo3|~)LAi<hb)ISNCtN5I~''>\gֻfɻ&iNӜEa;(Y '.YWCl^5FS"kUאGPuS-Nݙ)x-YJojTaTP	%LtȚZe)4JKiϥPK!U6t5iSS*lzXu1]c_IzJ"mVFB+	_2nɛ>F;`X̥]`mi[RNWP''`Ũ%Xg6iNNadXTU$T;5755>rMڛt}֌ǕD%nj~oS;L!!tԡQ߄u~[=D5kƑ/E5p )&dSkFbk\9)^XA~bU<)TL_u`jR)F5C5=ez_ԲfFNQK!Κ<^_4;Èt}V
+ÊjSj:~̪K`,<iSŪXJ#':Xc.Fi>pqmGQKb9KgKdUҰt=,u[C.5OeQuIՏV3tbIoiDܛj}ڐ@BL?"0A@5C#"GD!3_9P[x7djWUzv2!ttnouOƑwL먚8qbe%{D#;It0JuF,YTYD-Rz||৘؝hkV+ٷQ5l¾dW3I=HO;V=lI4,BY/tn1}+	7nэVo[`-c[_ŴMmi
+'	`=/ɜ-NdqRh;mtlJxNo;;5?B4엚~ڃԔ7sST䩲S0*gt"0Ee*RB})QhNDN@ ʞ^Yeyv{)Yg ~_%إ@%hO#Vaǯ_+OgIՀ#+^nݺFڵ+}/20}L@C90TCsDS>\ԧ4j5dAj¢x]B:_U^edV\{8b6o#Xjiu#܍3۬tƪ2"VQ
+ʼC]p:uuO."X'fB0c(NWn} 6DWOlCnхjkbrEUu{w@|*ݧF*2jT/P5)S]3
+|@*O)OjST	OgBWjI
+uF)	FGR }Aت'ܣ?ZYyto<̳b0gEUgw$Re(Zj=|P|eɏ{Ucc.M4?~|e->OG>u)6VrtCRsd}%kI}Us;ըEm!,hX	DE[{yEYLia;Yݍk`+x
+m[!z׆3`-LRC!jb#. ÿ&)0ZN`YQRV-Tk8a_BUlH%@|JIPZ$w-_K.`xU9TLa`:Ԥ/M7 4>X!azR|7۬T=)KXzzJ~k~@-B!2c	샎to0[ljZ<K.Mj;#S_WGPRMOeƑ`٥09ICka04E*+ﰾwW'kB[
+YPJBXU'm1>IT>FD+q1ViV`mݤn^Yi+X*b=PDK03`d.Y}|`\99]M`1]}Fؐ CX\k'Ѫr_,C0؀uDg*sUIAHU'!U1W ݩYܱ&ujNTi*F2[x=Eui'ܫy俱BWJ2Mx:VF*a:J	R!E)Fe [?{þ}Dm֊e@D`b,*YMXx(av 
+s!_BRꞰ|\dT7o'\n;"TוI~)O_䇧+8f2ee'؉^.(e(S Y k!֏5_\<_Մ+i8{՝4{/yf+GP>S'+Y܆`)YWɨX[GA%8fՓdhU߲%bWl @r'!KBZ6`+5U{GQu
+R+
+ߡU{NM`}X}J }TÕ ^5E5mWtvz PSQII>![$C|6xozaR>`^EE+QC{	ᓣn'~eJO#_8!IU[.jg6j֬^_KOPQH2N6{S7a:1u)e:ݔ	PڥRt~jQU?UYXUV-KK?WI"dBBjȢ]PBsԫƫt`gEWmF0췦^hYh:~jRc0_V}*c~'(8vI2dO*gu5]MɊ,X`8Ba	kĭ՛1\YW+=(Ua*-5*}V%pH%O}&L* HՃD5[<
+gIhTR0*ڹR
+*ԥD'r3ɯ.HPW&sѽ:y
+}r.ı!a}
+sWԞXaazou3̕egr{T%K͛o={/4KW)S=9՝^*tSjYsRMI*gџ@Sn.z~[RH&EWVA*Մ\S~zR:-5mdVńkhWV&D6n,S!0
+F,DNW30NWL
+Rc)Wu,OouVO!Kp\א@vb>R	UjYXx*.g_qƞ}mR4V׊׃T]Q/doؑ2Srr&La`l>#4v@RQ~ߓ|o|WrkYs;%~^chK8_,D[+YWG7xzUWS:C%Q59*JM[SO2 6o;ңRL,$ZRK_	4+QyKQ$JVjؕ/RᏕI^ۊjU[hJD+4k&;=.نd&`ü:gtg*f.6Xm鍘Cw50MԳg*,|,`ݸܢ
+jf+S5NH܅*5)-G=IR;]_T8#Z$%꜄(:7e䪩rl:
+rTi)K{vnnq%:"CKJޖ|٠/(\v#?N%jr GzX;'ENaZI6٪qM2U#JXk/UgOԌ.SOg<TZvu7)Rѕ(BKHbVv1UHWjNTl(tjօZjO @ZbJ=VlyiHvm@wX%TX_%iKf@\U=6bac1Z%UY:YEnJ61IނU"U6:*TUjSUZpf5.x	URek5~iDEřpSPot\/L)9-}\򴗄WwhV-NQmE~ӫmrW[WȺRdwZM~v* Kp9y[d(⏵I$N8dVXwv&cJD2	GR<^HBf$ˉ8|e0jPIUM{5{Un%lUnNC'ZZ+EQt1)mS궂-\k%wzg	::mEǶn0+6$Wa
+N`8a!Kڼl_,cxM/Up7?d
+9T+*Ws T,}ZPnA{jmE j5k8?}6Lewp=4xRv0]ФEb dcou铛]z,Ҟu,ʺHe6W#k$gGBW|k,Cڳ+]"[_lML2Gm?`.ଣړ SjI2z~K29tۼLK-^z]pIѭ0ol&`}1u$YU,`"`ظB{V\:%}-Ȉ$C iU8c8pP_s4F. U/	Km/aMծx.P8XG*ae	r(K4P*4I?{gcqALT_I<kyB"32en@"%͒R8gk][:Wgߵֽ~;1iIHr%QeZ;Ug/4{GWƦP	tʅqgmj5VkW`N{Q%6.Pt.HoO?~{rksYV;]l"z<@KaQmŜijVmM|Ѫa_I+-gJ|SSB"U֌,NbCTF=ByMniV^^c뇦'ԭߺ@LSl"oxS𫬱[c5YoXbkPlK)fdMUY*AjY:ڣ,ՈUʟvjUHU5OZwjŔop[l1)*}(/CCȡ/^_[==?SN'g,$iezAIۣ%{+WPKY7#5᫞3YXSiɓw>=4}q'
+VOÿ{gj"^+dmYT^yyB ynaY`Za[!Sտ˽bӏҋSrqgZ?/F[	5
+ovp+;#x5YN"DX!1ͽZzRj+'eJa:D%8>`6ؖϙhKVl,f'0p)m͕qQvc?*pWՁNUP^ޯ5&I]uj7hdZ%pIDUD"l<~C>T]a=}n^W@e椷&mbz+*Q{=݃}R)ՎbJm(q	fP[Ud^McW԰QN^y&VcW9ET9[<TS
+<HNNUɋTU-QLX^oF2ܑ!n-4QtU7q=|9\kea}jZ͘UK`\wVs_ovmayXMZ\@2̓m)u+6^X8K
+j-ϣ'axW,+5FUISՙqJ7dOL*UjOckfcTnF*ޤպ1$W>|_b~(ɨ	rj뒘^lԕde=jX2OO>`~M~`xҟ~~/rÍ"Ko>s{!-%F`3;[?@q3ū֬Unūy6~x=zԨQdɒM6Oz~AqQތGWkzx{¬ykTΛ	B9qop4f&_Zu{Oe !Ro.$Emeؖ SWlբHjEa؀!]RUCU竪R`M@UU]V%*>_=b5B7>A{0MD+h&w)A|E\I}y(QǸ {ȸ)y/0%=
+z8szviVcD}{&^Ct	ھ@[:{8VFJQcT8U<<G(*[2׭s`oeAVd7mù<lUr[Y*:9U׸q5jTD	#Gtwы/nҤ~q<"U}=5ؗUͽAU:lfmMoh]NIl%_n0Y
+SVX#R/5/oK>9"o0`Z/``c}0RZ͂li v3'*5[G쟡J4`LܶBU_4󮢧*UU1OLT8%ǩ1z/N*6~?{:HhēN2s /|iGl@Bx%~Mz:F!NU}z]׬Csp~qC;zu{AEr`=أHamy=XTu^D[z[o3p8ih$Cr*<O
+gӒ,UGu<9Uݢʕ+kժ[U=[jvm7w<roD|KԏSzCl~ffoG2oN Muj뛡>'&!n00yc{1cH$"i	ƀ5T-/W_K-B!RCRbc=K(s2d
+t+Zm6BWV[f(`VՁyBUj| S_fZ/TCo Pd7KMk2	4Hu4EH 
+}CyOExJ(HEF%i"T*E֮0v4NYuJ̪SܽHLpzAn4BS>s<DEmuc">	
+{&Ưy%;V>j'/V`h&a3	jѪrZ_7onڴi?{U_+6eg.]dz_TDZ|eYk+[RWRJC{7I~q
+~主ytkP]pDm)r5CB\J8YJVKd)B~hLl-zфHU^RVQiU"ZlUwgi>%ח{m)PǄrڝR	t55)T&ݙy-Oiiק
+z=#WNP*HFhԮ䤐4PbAh6]>9XD lժWmj>px"g<zjG%V	\@:u[^DWTԮ/ɩj}6niZ}.\QGպuL_􋓪Z𠝢9w<E[mCx+كY_2:xtefJlHCٵl@O9>Àe鶥%m)-y301R+61,r5,E	SuzZ'$g[k8|m+TYKA߈U9JkԪA~dUPԸ{XoTb 0H}8S|u-ߞc*ދ(Qېm'4')AL+RTe4Խewǽ--:6E1TX@N'yE3]jYx=GcZu{hamˤE4<g)?KUE{@'Y/_;X+cř5:S4lD7xq11LxZ`"V<]eu2*Zz"k+ 'ǡLk:`mi}`k[}m`}c~%3]9 cx^l?a>Z]XfpC^Z5'+"fU2r;X9 B6oRnjjIx48M KeZ>Clwga:vD,sV-QPjjwb9{ۚ<O="l?Ll]c*mtG^Z0#vwW_a{0(q,,UCfrvӗ-ZiӦ۰lA*K*{RI-'M]B;,&kc0м$qv`h	ƀ3+~0HX 6WO>-ǚmGXj),8KUH.VFBf{UudQ
+TuQ˪nH ^T%x?(T-C)f5@o8FIK5mr|w:쯒zJU2pH>T֪I+PשSQURQ̽āFg< Hawkz-nwjn޷:]¾hme;w`>7Tn,ɩj~m*^x=xYf[	P?S0je%}ER[IabƿVp̼tǙ=V!/ɰksUI̥X`-E6ɨm)m)m&o3p>+64l8?Z[a Ha\AeV JV.TΈXRU_UKGU+_mjwjت|JU׎S{\՛2h>q8~_*uA;23@w-ŕDWO~jTOwG;RqK1'j[1Jj4ԽlBs߼̹{G-lmiu.P;jckj[Wdkw>3fA+.lf-LNU+Y3f̘_I&ճ5ɯHU=skKԟs%jIc嚄_pa<K~Uuh]*0b1al&-Y>p2&()w5b[\9cU)T*,+^iJۋL:6Ua󘨣DUu)
+OLXoc=R)jl7fR|?NU&K]*R?_'}WNqup׷v}Ђ>mO\ޝ3M]F=yai[g~=1ɩ%!!y1[NVO:sޛK\G7n0- ]LsT{o*ɩֽWݫW2}=rodX/vg
+Q٬õ}v><[X'++xI(8&ElHlKgƚB!d[y.g)LCЙΒ
+GO&Tb
+oˤJXRerXoSb_SaׯpݔI %R dkw0Kb`V^ BJocB!Uh=ݕ&&,^FE7P R[?sOBik@~FW
+3f .c֡6n(4,U~*W7iRs3DX'Pd7nˌUj^ui8#;NA\>EۤXy&jss¶l[UH[PKy{|x8H߯U-&VQd^U䧪TyeXXNͽA_!)%Uo|'=IH %d}~T$4~,Ծ M3Jѝ.,l4|zWֹG*QkWFw{V'>e=SCUC)/U9(h=qihQRrL 7O(ޛ5/=Fq1RT"UUjk0
+3eˌ՘ֽ(+(yif3(86`rݗXaQ8 +Ҩ1(DrǊъMjxT[FWm!,^UZ|\~OvЫ&YU) Bc95^UC&IJfA>HiVi~_DSI4DO9ٓ0fWD`^U{5tJ0Z,C-ߢމ\7Q у?9$ԏXTc[qACKi=SuY_apUZbu\y)KU{#*5I6<V+UX?֘6/X%jlUhd-ؖL T~24R	|lZ<\,TDbN̂RdM9Kiy.S0OU'BUyXWU"˪*^V5pOf?p'kT-1J|e>:~;TaX8Nqi&8)QRP(SuwOR?w8o*tUx?1
+|KX?L\j^ʩE3ߪ3ߜnQnV09?N:_j`FX	ч*/{޶]3A!Z@!3Ub^n{٧%,ÔLu8R+
+w`ߩ}yNUA{J8\X;rU#V%Sozz>]P72)/+a>8u|
+Iqm	U.aF1\GA]B=SLIMz0Uz8O|kʑr1eDw&-zg`;yZKmi%x%$c߸p5KU傜D7y#@}+X?*6OsI`6X" ͽm"}+6r5Z\=<*C|3cX0\r`ejRm0EUQ A6`y-UAAVe 'P}S5D*!5P&D4_I1>DSfxB[/ؓڡ{-4GtxRgW`J=ERQG=bZ߈)U@_m(vw1vߜlFF9:oΦ!Ek9`_Ctx%M_K4\*֜^}s?l&ңS@
+3`?`mњoIm)mlK}kfےB!$F3#3p,!$]9^ ?'p&~>Zd<EzZUc:{υ^BUWFQ5>Ͷ h0o|BCїU~IK_X#_D8~<>h/D{°zGjtrUՏPD5SӃQ+))/âc՘tr>/?)]Y[d.;{|GXjs7?q#95h!z/bnzj`θq0Yj'ݮSB"U54sKfц>f4lKNXmQr5-ݑn^8[1R{Q2}ݞ_qx?YTWz sӫ|Tu1*
+j Wi߻UrS՘>CR&%+>/@whF:BtWv^
+1ġ6E
+G{}wPIRZ!*ũ{1bsגwIDs|%4fpE5hm#.<.G
+'茕	H;6/dawm\U5 k+^
+ݴ>'MVk	~Omhc޶EYV[vLBDf`4_=j)b`$>	_O3d?DlFZ\&er;U=:VUwzU
+N8U;ӱVX?dUeSUpjU=o~OT߀$٩%2!o,2fCR;{Pƫ=r+Uj~w)h/;DO:. Jm?U{0_d4߆vj[!l=(hZqs楋tt֞ HG¦[{m˽$q_qi<5 &*	j[>-1GU69qpzk
+j)]+6`!bcw'[i:;
+Ze5(:!/U흦gP	UM*ŐJ~QUS/S0C/U"R$MgP5߇GWd\qK=={~z]`O~p]J:ȔăDz6/wwILN%E@OkCٌv9K goWnţP1-ºqUnbKWJWpC,&/p"g8"KUP?<Y!msxjJԜ'si9Kʔ`h㓡mQ=m)eC-+6 C<K芍Ol?$h5]j)A-*3?0x:d[s!fOQUgUǪzCe/٪j,WaJKX@#\*DԇFW>]HvkjIUϜIT8P>hZה:BP8ub^I`uq."tvH4ď5F)kW`VH[cE+LV0	nb+P^9\k/!ȹTTuKWrxzCnW<#֯͢2E/AZˡm'Uو+bexͧWlhEjfnfquq&8hUЅ	KŔ[XQVVjUIBUԊvBU7vBUW3¨ŬJ6Rx<M	1QpBJXU.Tu8>|t[- JWMr>L~V;3oИA*y}8ʽe=VW3rMSA@/F4ҥ	!S\fYF<+ڱ:ôp3ViIBź?*VFI7,zJ!]_RUS_L??ЖF^[ra8/<\EUD͖ds-a&i:]5Y6t6SxNKA$E&|$24`QUl
+U=:O.5z[Z&TRKCU]c> .p}3>%Y!0]`¤d`\5=]P<	PViBԣpLY}@QdLr|6%j>e=uĴ%))(Fu::] ;WKӔPh=2rFXmp+.RZZw&Csz	XDo7|I@?9U-$/R\>T'ۘ}ڒef !]? %bkL8fn0XsGq󀙳OL|ЀLIU4>R~PTur1TQv)ю*/ԬoI	qqṪִJSI;'\JQ=}ß*4E=>-#׹D=l\^bzhcFWf1mw*hw\?Do+7FCU[bk]5/6:/9Be{N+t(L-@"TU4trB"UͭGkIXɶRmK:MW <%J7&ĭ!ڦaX`x׆>¦q`Rh~Z8ɂJUYLf쓪b_$(WWk`6=:U:R8VTUV%m\S^|Sޥү*Y@Y~Ш
+&k'TpbճiaSkQ;
+8z4TiBR{,=;Jzԧ潌K$m莹Ooó\;(6݁p$tw^'|+'ǬWK1/%X(R
+Li5I~0iJWhbs%Z_RUTs+o!8f\]%^_}Cl,uߚ'jbcQK`(<]meʄ+ұ	8XM.ŭf
+1Ȃ#:@c'*^OƼU}pTOVq@Ux \BU57BP!&ߘR=Hyk㄀RSP=rjL7;NؓKz,r էѣSwmHL[эrl͉{sOtĦ#n&/z$N^
+wQh0-mⵕwhŕވk@.$5 
+TAW6>ThtzB6Uݢ k+^F$0(W1miB!DC*W1]nRZ	qYjXj&U3g,_OQ5OXUE"2pWRU6l8q캥Ji50G0&Pո)9Uefͦ;(|ԈCܟ&+h?U\Zn.pғhFېkQcٚ]w1-]r7i9t.f @=V
+=ym	]	yW]BVn}jX}_(\6Xk*ۖ .rUWٌmzewUNsxȝBq$ܜ_f%$NA-	WUYJ.hWm6ܥpg瘿m
+f?MUpMeq$HNxTUlTu`\UmRɲ%P<%ZSMkBBR.SP3|dGtNͱz/~h_6=7~rIz&`
+I5]$O5[Ս$i%)@r}3*tW¾>pl}氻R^%V~#ZAZG`2"
+sۖt ?sc OUD8*Θx^rZFؖ~0tuXy%e&J+A6۷jn'OSaW\MFXU=לV.Lz	I?A|rުlbTb<IU.UՇZU{婪]ڧjhwOf 5]54QIGzk՘Q{H{KU>٠ib%,ITjA]3t	ILGn"yLu؄0.yxρ+JS&V0=.7ȃ8Lv5Z	lK%|ݱuǘ	|6j֪[ONU+l&7	DbLhƣUpIؾM\E؜9U5(sȼX5p{&WV}rMeL0
+X!9@U}q|TuhHϤ&UARյ
+VJ)T_Q(A.Ěꬡ§Ȩ
+}Lݸʷ %(GswF*	&&%^/4ԓe}-膐E<Bu7UBz:RwWݥu,hAbo繆W	k:-]Cm7Z=|\m(Ƕg̥=tfW	LW3I$'=]ҍX|nY6ݳT[ZSBʩj:	lT=Koa5,=.N5&ņUVU^\O:8'p
+ds!bㄥ4Ug{yR:VUJ9T2CJoIATueo+gU> X
+MFީaܿ_3T<WP>ҿj<VPwlFi&{/]J{Msؓ.{B.[ᮖcf8驓HwQݍ]<=ݭްZ1Аyc8hgtGڑ+NLi:`=^Uso=b%6W^=Ɍ(%0үشɳSտ+Hخx,*pUN#'<Z b6EXUÝqk	~o^QUMaham@r 7Fi@CU}5y$+U}8?U7UhUGu@T!5;
++_?ENzr}0Q&J{Գd]y==}ٓFmw-]鮫˼[ ص+N/o{,=4EwI[/N͖{3S=Q8x-EֶUl(1}un]'cj)egY-ETrZNǁy~rWON	8j04-diY`RVjD7Ll	!,e\Z-~TU,z.TPU;bV@U].vIQUf:Ue԰U	QOBu؎"7U]*)$´QkgJ$` dBpL4Q0TrR:$ר]Ϳfq)%xIXb1.3Uݴ	+MG6hD}`o[sbf`bÌڕ+AE$Oh4oO"D֪sONU+Z1L'İ	L$x{Z05_ST5qhHX:P	KGՔr'VUfds3qz22:.;U4ޗP5k*MUjRF9,֝A)~OIܿ<TZci5Q]
+Li/rЛDTPr𤋮ҜetImYq;5z( ]JOJo߂M?/O?`mhn&;Ƕ%*W./ӺjWl,XlRZwKzv
+xrZH^9U-tGtjo8Sձ&qu6$Tkхd@bzAz7,Ez|fXDjZrRLN؆zjǸƣj2AUuWUTEF9H%ީwwĪg
+}ܝrɁ(>%^!~`Gb(NŠ/"_I]v۵f ]?f+_C_!<\&w)ρ˯t4#3+6Fy!*2ܥf޴ݏ<9U-$cqǰ},Ldk&~ݯA0xЅVE8b~afxٷ5GGGrnWU@8'%vu4U}&AȧzW`?j*:acPN!5fLgQ4y]hy'*INx)שJMP?/Xäyɿ4 ;ܬ˴	|N4]ڱgъVd󹱄8BR'0 >V`BuQW4͜^9U-	Ȓ~8Pk]ˠøURUzs@`yF',ڀ󍄳ºJ;oUR2%v)OqoUIUwt:ՕZ}nQ5tc?Z{]0ChSQ6 ݕK*݊'U=ݩ ˕]3e{#xAo\:(n"CWoR=RO(WGPt]9elcE'jFg29lX@M35~7h*Ed'SBxjUե +Ъw]8T"܃֪ VKmdk5PTUO F^<Tէ֪4ӵa}uAޛ5[Q \@U2C;v6UTx贚{ S{J4TݿNhz*HJOhiݣ<q7,8uFO}tvD[6a}Mʊ2jɓ٫LU;Um6]xZͩSBx$Ơ%]E&0ۀSVGPUC[bX2eWf쟧U5IXJ0STuPUC"zWRVhtVUtv>Y˥hv<ͪ::6MU_vMWսEU9f1U4Jv?p:8ipTM*ԸwxJVUO"kTSN|Lu}
+Uwu_븧х&X!eJK$;yφ%퇪j|V.UEv)KUW<9U-$}"PIU'1B~RUl6#E[xX-LWziWW.j#U]kwUQRĪSGYU>AU-[SoUU} \RUGTU0Z_U^U5fQn y49O;Jnqb?8Kx>C+:-w@USUKe5,E%͆6OmE,U BVmmf'SBx63UY+tYsOa
+5tknM脪w^	w	KIna>L9KNU8^f	H3gadVؐ}bP٧YU~-5	._
+ĶQ V5UtHUy=Ubmvu 4D~J8G@U̩j{T0f߫	UÒWdxMUDjy&UMUuj4Z ]Y=HAVUMY5.O/jrv&x?}G[UjWRUmKUmj ?f?D#wu_߿&^.|+dVͻ[m'Sx5-T+[~_MWVۄpWH&VO25ie5I
+<:cx67oUQ,?hDPHU.|PKU&eV|J3Nӭ46[}TпJr+zV:ϸVz;M;9UyT0MUGYUenUձ!X#DUg7fVU[yė/IƗ[JN3,HU)ܪ^\#5𢰾 ߦ'U2LU~އ~pzjt-w+} ߗZ5g)%51٬qGYӏn̣[a]شXIifo,5l7kB~­4ͭ$w){UfxrZH^9U-'Z5U`TuXW'TFU&U'WUB {MUmeV*<<#PѮ:HTUBU?JWH*i_^i-R<6kb_6k2֬5NdWe
+{kHHCwUܝy]讜?>Nhۺ@6fE̦'FZH4e*[I@#U36kZ͚lUTrZ֩j2<BUzgO[橪lC	VVECUɘm~B[s}:UuXɡ>͠QOKj}Ռ1# [s=5v=H	'N1U|=X/$*2W$ZVբt$'RBm}ku*MTǌc*jZ 5|?ݵɤ7N̂t@wŘ"{H*=@qK)WoaONUѣ~KVe]_QFɒ%6m'+lNo@TUJJ>.KUm$MU2U}&U#;50iڜ>%&cvS@(VUWbeu
+UU/5G~+Z"PծȤc+j6@,'tĪgM)Վ x˓q+\G-/+DwUVDN(Ou_Z\ݸ~N
+Dqw*]쯇R\WrehL)8x9s`u!Q&|RU,NONU|>>;iҤ]v	%}ȑ%J=zŋ4i~mܸ1rZOΣPկ^jr'55I<8*
+8*u;&}4apH䨑U7}V*VnR,Q+z9T+6`WW! o]gLr#)g̚(NN/$fO~Rܾb(	8rtShǒ#	;VlbBj+~du_~ʕL[Y/M٩=Ipq%t-NO&ɫ7k\Qf:S3k[ʋ+=VO"jRùit;TzM8hѢׯԶUV+Wnvs멯@Y#xvsTU˨6BUm\Z7U-"HUVSDUPEѸVF$0tW	.;gPgIU˼*DhJ/P/z?T^UΪⴽVʬIKaJP^\vF:2
+ͪSUwK*FD"&Z~	JM-<t!ΡaH6_A^F[xW6(_%F'uZj9'+ MOۿ|NUfJ3&TŖ?)}t~IpOȒnk̘1;͛bŊM2>ӥKL_TlI
+"kS7kU=+R7uڕ0ݫ*ah^dé-PUE:hĄj^U"Uc2j'Qn7H-_H}zp٧:܄凍
+{\W~B6C6ҳv)ʣUi}y$bΐUwRzk:н4c%ayA	oᆏhA{%3/	1_#"/1|~7~iFIVu7DUUA\}j֏B^Ջ:CU
+,jHjWjM޹ɤͧ߄|V<9U݊ڵkk;UpG:֭[gz_3lPdzC׷jVKUnSU<U};KUmT Uʊ<Uuֈ!M8apCUoSUȰDap%LXTf!T%U>{~Ϫ=PՍ]ʣU^Ij׸~^%a񾥖/mߏ9wOWYܟk*:rk>ٰ4ky*W}$UAptܽ"KC,f$Wau^D7=".9ܐt"G%\LfIROq2Qm;)qdwS/U]YY0k w?g31 ӳٕlnQZU_-ɩꖾ\ڤI;nÆɩIO['(ԹjLU[e寧SՃ_֪*  aؚ`!Uճʸz3RlMNHKP%JU]YUye7 @UτnTURoh
+Dobeu󆖛1ЛKrT;Vgif2=,G}?]]f`-GE2`nNj+'H\&'?L#[C®xRwJTå!`dJ5X"?hXrjjҿo_ީ@Zx`Uz<oWt;w-KU<9Uݢf͚9}WrK-Cd\*]?XT}-u+塪d2jdUf A(\.R(e5RUP,8Um5ٺ		UapdXؚQ[ck`Xz	%
+a d2
+?(^+ݛae}1U&*-t/3	E>f);V8vdAa	,#Ĥg:U[Skuߜ+~,y.Ydn")@-
+.+b^Zd^Hw	"ik?r͹(N=u3:cq7Àfcf*UƩQ7w?oQMV?z#%YhSUJn.@˩j!|N:֮]ks+ohTdw}ڿkjQj&_5-&JUTUm[gO5u"v6g>|&7gBM؀	=G2
+UBc2/+
+]b
+%+aj⢪]TU;U*vkak/]-i}K}Gʼ3cc1;NvY p)`z!+P*V\TFo:/[A3kڸإ;7]/G[CwN.
+U	9^>xK%*~/ro*Rꭿff^r
+#<!jx`&;54G#KUmYd~ONU|m޼OV苛A3f̘_I&ճ5ɯrZ؎!bYKsBuGdm"/ЈJs+6_&elmUMFURUʹTFU-C5U=6`޴woG"T#HU{U,TA*SUUApr+0UʪM`^Bn  p,%˼H3a&6;]=RG4CTWjdIp坂tu|bk
+m-NļԂKʤխDoyݔDvh,ZrFa<b5ZK$\<u'*nF=H1oPD#XU$+7/?=(tONU|/Ee˖v޽zNCzZC'_9U-lgo'V/ȪDH^yVֿU}|4:Y<AjyzV%:/Uؚuܧ IUjTMvuUpbJ(`
+^i>T%Uw)@_0BTϜMFgFVU{칅NT,5`A|ַԲJU<=`cF8|T&R@ΚNUg)abfNDV,V{YX9cb^v|܆Vwhڞ#QXR'~|ޥm[z2Q&!R+gFReApz$؇dzB Ja5]Sz	;
+BW,U"s
+xrZH^9U-\gn`XMY/\,&SEUP~tfU}"`bPUIU/^UYU╜hJS#eT@IUieUkHUz%^YSw%* (Z*הѪz8纲Z Yѐ_CM`|cӊMZ3kUxfa]^?Z_Eƹ7TBX[cV.ZE[Ҟpko
+SKuAkY}u TE53C*baJ!PyJ%PLJPSndZkW|J <^PdvONU+lMB[ސu/貪QUAΣC;?ڇ6|ФU3gK,,!.kUDbFUkcQ0,5W#CYU{,OUule)PշXnzF1ةdU%pCovJ&`5Ti',1#׻jbX9_j30a#^Mf20s+V`E+KMv8YQ{0-hwy$|]'wmGp뒩|LecWM`0N=ЌSckxyQP/剨O&;WNU$ߍ߃;5Ī`fP`%RU΋5j7pI筃I-OM˒J쫌tURĬl!&ޅ0&vZ$J:J+_2AJ)-`Y@4e
+	Uk@X`kzg?PҋXyJWGWl@pjkM\>3V5sO#'L`&60zbd"e:-Ediz9\HF[Fit}=yUo|TKߛh8h-K*TPukTYj"xrZH^9U-<G@PueZ#Tk5u? UwdaU]YUJ.,)&ckRT,6U=Q~MPU )&,Q[5sBU7,U~M${R&<[tVl(nBwDظrO$9ܷhFJFm{K+}| fp˘~vGڊ]wCX^I"/^Բҥ½"%ulcn-_'E%jv9p-KXU>S=Pzhe~cnNO4:Tʩj9RI+C꿈Bـ`Z㵚PH꽪wUMTZ%LBˆ6rfpґSV0ypv5>ik^Qե}vXnTu 2©aAa)5' 0y
+gq﹪OW}q(?)}|"qLؖ	k3jWV;B8ha1a0!qeʫ7N[yJ
+s18sJYJJ7*
+=1\[̌RS0Ss}xgk?1늤Wc{yl`zN<9U-$	U?Pa"R:lPj ej `	M7SU^U>jI,TOHXC*C\y:f; eV\IOX0lor:OJX ;#~_[ROW76#}ݟ9\Yժg|8Wpu;XuuX
+a=HK̈ m6+iqBaZrI^Q9
+3IؔgRz4*Quy3!멄̇bU-AirHdRޯOSeD!k`YEFTrZ(I|JOI6 YNt*=`U=BU$~YVn7Txѱaȼarx&eteOxЩ*sP	K+z\իW ,q|O6D$\	'Ybҏ^#DOS3@irA F-E_g{楨x*E[pY[*dj:By2],=^*KI|ŸU>7J;xKOI{M遗(KLJ0P}rSտۋވMTS._?OJo_ 7[7U+تYYUo ̪  *T5%j	I9IB.71^k/yp95*}ZYu*)a郐 L|/vk5^!=K]ȒzjS0LW݇<USz.E	1,(`'4+2(XƬkzqh+\3
+KWL`Oh{9'45ͱ;Y6@MJC_84=S&Fh3óT3,ɩj!y1'$M?O=?,B@ߩV>NJ~SU jDUҵ=jֿV/̙Īyf)D //F^fIYG]酺Y!nTS[ү)a˃_cG\&хRpf*+6T>Rl}`
+1bdX_JrWjIZIUOu34cZfPb^2cV.Z)\N|*GR]kǊ㞐	eWRsoے)՞1WCT%̇hz#i8/R`Ƴ*!srow=U_!*CwFDPԪ)TU0mUWT5=<kUs?*VP
+ǩU9}v9\~NNKHНfd99Pk@Rn!,x"	Z5K]1PUjg,Fϐc.}`^ort}aiE)zʹ\k6WͬSrڢ5jjkhʃWPfm(y,,yYL{^4KBc:4&Z%V}KF-T%)Uy޶Csclzz><9U-$/R r/9]5BrNM`ܿ2Tp~Sn
+J]UZBUU̪QjQ4)@Z5#I*Q4NU* l[e[1taG3Z8X*WtUVlzQʰpb[rM !WnĂU}=`ݦ]3"h7䶰/]m*
+@JNV4m!.i{Bd%/	ZWi:Ai<+k9YSB"U@JjNX|I]i1k!vjSAϪjcUIU٪䇪dز¦	IZ^Ue>Jw!T*af{^Y54`ZQn"s_j,&آ#'=N]\VU%B
+x=`}u#`ͻi\xWj^:\5k.ʫQъsj՗zeR?Oy\s7^pRhVocwќq-1#0|h$рqMRUO)`ONUɋT\>bRbҷ}c-Dk
+q<0eJUxg*!X@UJUD,LQVs{؀J]]"FQv4~\J؀$,_ÒZcM K	 |0=U!JY!OPB9F#$X;|ʭQ^t=o8YA+x "jϨUb4fUOiBC?o_Qz@Y%O}Y8,JЏt))*!D0t,g*J8.8p?e:h++89'\SBroĦUXs}?SR7}X%;eDJ:E4"pbUN[P3dlڿ+D3ÅiUmOg[l?#@L;gsnU-6E`A(k pIPIc8N3O\aI3%-03
+a:BoĚ߅ ӥ:):Qm3N0I[r[x^]J5/ce\ݕc~}+2dwaZŵ}QUJHOey,\^9Y^q-lu'rJ*74&1-:Zr8<NU^P$UvT?P~P5~Mu?xqC;+UNV*C=WUPU92ɔKW&FUoʺPOt=JP3LJU\*y3s/G-}Z@	)Wp6t5-m[UN{\ZI'%X{Wy	;]2ʅ";V.6ͪ󏘶R麗\u_y.q:vk)PI14>?׬0()jE䧬  gD1pGi:߇W$3T/ɩj!y%aݼ	gSF/QZ;$txMۿP0VgYޖ  
+32jsQ\IUU8Tu4Dgg>B/._+lLܮҰ_>%Z-ˑp^ٯc_b8Ρg՘؇lKVW~X9|ސ)'D
+~*֊Vj=k]6:)w>=`y!
+bt[H,,OkJmzJ+ӹFLSt7SloKTm/PxNeI%[8IꕺzR#{Kp(r+(s/rGONUɋTGϴ!}܀<dՌSՏPolfF8QN	]?DCUF@XUTUO
+2UvX`Υ7+3glQЪ5K~VkޯaRbNd]3vlKlK~}uA9#+V] z+0U?=uT[w ¡[uRF-ةkNKR6SG^y*řFODGx Բ8
+x:MI- RYṀѠJcT_=6-rkONU˽'m9I*gեƤ8)קzD]SO)*EH \;ʪ:%U
+U8/CUQBUyPc繞қ[;
+z	K/5Hd B\݃,s.WM؊OWpsgwlK?jOZ_,ߏK^DV5u
+WrCneaհ9p'E~sm*A@jק|l3hRIbEH2zdL:Z)s8kDRiȎT/m1ÞDZ\7U*o4RU+rCONUɋT;Z܀;bT^Y	I5&%T%԰wYѐwjBeS/rjDD?/UbZIҔj	D$P31t=A	'[';D	Djc+t%0Xm+[wgv.qt6`a툍'׺*i.c$ymujEa7n-,*]MV&ɳEW҄rq~${ˣ_Xݍ)jC-QOB, ؛Ē4.IUD[E<7yQŚ۵#$u=?~4	٤~;UUej>%_SsGS+ 2  G]NUզFUIWTTu^r"9S"	ZOW\'ev&,-bAH8^3K1xr-|BVs~,ݗX(Wa>h~D[ZΥ5X`޵V\x:	KFE
+7ԭǏIUMS[#׺9t!:g.?y|xxv~n')*XOt#{֧`=mU!dLB׷:HgIcлQT~s` -Tc\YSBroxV?%8
+ކ7~/9V+W*I/r:3Z-Ԙ7^SM?vMUe<YUe7OT?YUHj1Fsv9>fۧ x/V]Fqx0`䠲(U׈CzdKmǃLslfqԒM3WRW-Y?Z8$C?jiX9]8c+oQ^5ahJU[Fz(BZδ52yQbvM:	bd
+Rz)"j>>TGE^$yH(2Uo{MC+=	)2)n0KUmTWVXHk焵$YWj$Xhr9jRb~d5h&?
+Przag5$UUnVrt5NB3UU&4˻q	>KykUG-PqA.'QKrWՀOjVX]ź`CߟGN+t{	qAtZg=LPؙw"I+Pˣ-:[Ơ En	hHwlĴ.Sٓg#D*ri*S1Hv1*rJX+'^*XaǱaRU.Ҳ'E%>,AXb]/rjz{WCIȄUWrA7NOF-VJ)>%ީig7'׆OUjpEUTU=5+jUmEe,+5WKA(cd/,Slxc_@]N}b{յ!lw;]ZjXQҀUI{vmPV<Wda:Mmq5T*w*Zѝam@z`'2z2se#u	jΪ 	x*'T嬊(EIS#gjGDAIVߛf=Q	Ugx#rdTn\<GOYe^RU(rnONUɋTWFX%VXs;U*ۓ6%o}Ha7iRzTixXIYS>0FjUOVeUUWgRU5-GQ󹒪jnrlt&Ǘ>)_3\muCG` CZiֶ;u66~X%￮ /=	c4?f7x =Q+߬zG3	vM׆iG.`".b:5I.SFA2
+)~#S_7OҷkS=OM{n\iݺNC3F*INHm.˜^ J5Ƽ{TuKt#i{lO5~!B&|M%ՏS5&Ť4.F	5}ÉjpM.hR~Sի\U(TV÷^U毪B1uN9TwGW環Z+̾OѪ:!a,*`I,p0Ln(DzZ,6A%{y-!V_NBs6VAukŻ6F\ԊNa]=H79܌DVr~$aQQLliMg=hub-]zQ6%yOy,s)wi}ʋ3=]}	~wܤry`)QeMxྱYEN.^U۴iSļHHU?Vu71kNX4%#ޘIȴ}3RiƎSB49&aWjd"CU]vMߋBR%ުǩjQUT3}rs_a*aeAV1UF>N`fǞ%iŦxaR<!.hc /VJKVH~VJ.CCxc<op1r:<lz6ZL"="{FG]8Į%4bWGP$ԡGӿ+2`3()s<#UD;a5tOyO|+Q:E^_6&nJT@h
+
+(FzXxHUO<%&#W"Ub]M]JǬ9R6^J'I]iTn2CiI@&TCq%)7oRGLuƆԤ"o{yZTMRUψCUK4B;-aeOzr/^v+`X-F~VcEaW쥰[3p\V-0
+&7z.|el2&	'Zn"(L:h38&*]+_z1 M
+3QH:=p4P6&8,'=	o)J"k8e3ק=ݙSm>UR_foeiZEzL:r/FP	3
+faƴיUV0V{6䁻MPRW(C=/W/GdB~DRJ蛵Ǝ*OT%ܯvPRlUpS5Q )OjqdLz%'TG&Cs,+\LC/*pnZےvH&-=m|+K!d`JE+'@bX[n8@v8^z-ˀh)-b9Ξs:T449Mt3l:rOA{~gT`Z	q	\GRìvЖl ח%%}c&eiXEZ\%K֮]
+&#W"U>uUTʘpƏYsB=u}yJ*˴J}WZƩ~Ƈz5))5B=j251C4RLU[UmYUôVE(MU-Tudkfs,aIi m4V=f !K kW%|b/ռlKm5Rc$C3`ea*Vm)HCvE4`*Z4	1ENO'`Qv J--+Td/f\B8s`Ҿ(P*H/ 1W%A*@L;j"*OɻkFz:<%ZWclLRI}C	W&MzG_zÇ׬YO,^Tu>b[D>7H*{}1He΃H0}Mq_Fj:HC	LD5P
+p
+*,KjdJoMTWGڈ'Nz[FAXU@1ALA	3GY7ճWW&W&GbCªf`.Wc̅%8ڬ<Cni!EcVk7xֹ(Zgih0eO_wad|+
+؛Pö2u*(_>e˵J5G+_^ny-@mC1fJz<O%-N4-_?EJTޝ{Ѫ2w9d!KUݿA<C&L(> >KKn9ɽrO_
+a]_m^5Wn@}[~&zГd/6~j"ߣV!E?TIߞoBM{3#2@ak^yUyns!Vu'>A@x'4|>%,]/ywUo
+mK>&6`VXIa^'B[shL{7RC[i:F	OՕu#)
+:{BCr7Cر$cV.iUs:t۴eIc(XlCzX+GtYfx&1%)SBO>A%KUݯA<Ck׮}__6luܿ8gΜm '^cc)֏Ҋ/ӼkŴٸ. &^٠:EZ+%ޞ9R83RNH_1ޤ)mʚj4Q/PUOUWUTգ_<̨[h!T2u@fk2xɪfD±aV.y`X@	1%WxOZc"~3g-bmKoG{ /!	khŤnGC4E[i:D\Ox<#JGT^&հ=HKwَ߉s;=mǙl'[0"/edXyUR/86w"qwif~j/H}g~vr!*CT_T}[u\.[l++E
+*%[~V':o$]!=^%uu%IH%=b/I$(Y~|A_}x D5PD*oMU;T	U4U݅U,㕐\*)Od"İmv6@	!挃`G,R//b4]2	kͱKp
+UKǺ%^`Ce}Ə*r_еyeؙ&#mG&ayG|_-`!,XltC1eg\>w_uhWn5i/z+	L*>lS83'TO_1$?E/Je𧹇OTսY^z饏=K/4bĈ5k6k֬`2{/FИ]*UX?m֕!zË2m)ou5~)%uq RC/Ijl_'az6&oUmey\UqLAH8-SV11#O4rdJW2G!zkS*r	p"1EQ>}w-k?^6{~޷n55T%
+X' לfJRazlj{A`6qxa%RB5oA>KXzT_b504&kqbCڒ(_X	Z}w{1ؐ0]f,Vfb鍲تjkؒk<Բ
+JhYU܁_UEyؔ&6[e5t&rR5|W(5ert#oM;$J^^Ou.*voUIUrVyU}[nSv;b4iU[ߒVWOgBu+"7]ԋ\RB[=/uKU36JI4
+坔tIJtrc/渠fZ*ٿQ!`cSU:?Yjzxc?KVoNxp8F[Lh)*A`V*M\=/504'U6wgqw8\-<V5<77,#_69>ʵAna_&5LX|XQlVWJ$g1hB&/Rtw1wEQCqꤶp͔yb*"I.z7UOIrW,Ka%U	7*nԱ&(|;VJ܅I[y`j]*2\ƕXS{o𪙫RVEO]TFk`HOBIhDu*Jip6)IIS/゚sce1i3_yQǪbTsjjklZU0?^CmÙʖVօbj6ihBquo`ᮉVKZڒeX?D(TqcNk.k-_,&E^05CeG`:Fwةre^Pg
+U(2ATK؉Ǭ\#^[ͽQ1+ F5I*M*<ӥjWzSjVN	spP9sZh9`
+z	1.'ZCmѻRCQޫ=e|j1_9-5메f%gz*jg]Ty!u/o"xW$r
+Dj4S5~jfREBC_zʪjPU^I׌-f5X~R/p$ka<{v5,a}CbZbzCt%ǅ6rR\Vy/Ǫ5_;yB5風Vފk:kq31v+n-v&딟%ήŷM!k3`QS6 I%1UgjHFJ^*O/c5FZ}Zcթ:u*)):XQTBsD UXOpaŕ3,&áߊTa5P">\*ż%9ŒljNOu.	)7UHպm~-Z}FI,bޯI	د1~5֗Ujja岪Ū|^9"5<8EUY7jqMW1~<a#Q_eʛ,-AJsdU*-iݖ/b,w	c-1/[R
+S洪/^LzIXrM&y$YvSn᪷;?-o-6q7;Oʕ4cC$"+a78O.\OVl%U1UHU.];o_|VZ			V+zmilK;zUKLz믒ryRFm*Ud7ՀI1{gpNsS]Wz3.|n;6JWxr*uR!5ҷHRrPP#9+~F'k55Q5^Q/ÑNj;KUݮWUBϋko_'6׌-d?tK`<g	'UQbNZ-cnM}]}ظO	uX7(MN!z{3yUp6g[Q^ypᮥª>$ЙR.-nm[T?TuEQCx-4Y/×M9^Q2sA=ESD5PURUuFZMթS'66Vi׮ӭ͟5Ӫc"j\~ul:UWTXȖVP!}RTBbUhɽz}\T TVAmZ65%5{Jb9[G4lu4GUNnhQh(ԥP^T[*F8j_ jIU[8US}7y,{A(	KX{hy%\ɂ]U p2/ISlx%rS۳Y68tS)b.%*yIJ./ݝEeWZ^ڊr:056k p"O܅Rj5&P	jґ*"1^f=S.LL{yt>TIUSTr
+bOϞ=Ǎgu"hyUb&B[뭲'蒚P^eu(\g1b.˖H+.%CrU}RT[<e.*TJfLXA}'JQJ˩:I4NJ˺)O<PjWAUMRի'6`*lB^ml]K[Ze |B}%6gZRJiKV}%mcbVZ,57X|5k+dUWM^U5Ǉ0ǣĉ2j[񶓩'
+pEpM|jBIK,jf/wNErXB]SeTչU% ]c/DF	    JKK~ꩧ*! bfϞ
+Zq              
+o@ v7bĈlO-[nnnk׮{ovFFFHH>>>[hsssGټys//.]l۶ퟚ޲eK}}}q%OΚZç`e/
+p/R¶85 ߐ_}՞={bbbx	0~+muFk֬ӧ#.X}&M6,>>>99yŨ6|၁9.l0L:u޼y/ygMSو+^qׯ]vAAA9#xVZeff5jmnyǎMݻf)S)-ElH	rm|||ʬ,o₵@f&OܷoߦMk߾}`'|ҽ{_<e˖5nv6%﬩*VU^f]"%lX,AAA&M*>gxe[.]7,_>#}[b:d0nݺM4ٿp×>S@U|vы3.9/ݻwm?w\B;w0R0m4[qqqG0aW5SU_]"%쌫4Η_~>/9JgZpb]ln6ҰaÈq^=z-qpQ7l Θ1f?d`_]"%W^޽{~~yyy%̙yv6/!C6m`-oM6=m۶o<ۚ0e+Ej0ۥ/R|9|4oG8_܆gdNڷqqq-Y$##cĉ^^^%ر#|NN:5i$T{h۷nݺSkZnq9vo3Ξ=ng$_`ʕ+@OHNNlk׆] :w,Gf6|iУ3OH+x.wAAAAAAAAAAAAAAAAAAAAAAAAAAAA57Nݻ9sj;p޽?dРAV> D駟;vؓ@:s̸{^xa>*44믿v!ɭ[.))q Ç׫Wn}g5w5ZCU/]%}-P۷;( !&<<m۶ ~iv튊mDDD˖-=<<ڷoey#GzyykW\w$$$A3f{7===6n0/Iy'|Rʕ+;w&?쇝Yfhɓ{ꕞn>5P=z`ׯߡCڵ+<7oGW' 2
+
+
+@xguh.hӆΟ?QFݻ7--Ğ={VA@wQZZz֭Çl:t[nuuM4*++[|yƍAaey233;u__$9wR+"6fq^G<v	~i<xM68rŊNA<VsZ 
+<MA 
+j[V-GLFsss]v]>_Vpr8`0oӦM x[V;w#|	q3<Ω|oU111xw٠HuQ^=7 cչsgnݺ:ӧO	:(?
+vʮ_ͣ3ra䶜-:Tz7o7ׯ_F0Ȫfb̙oTvo͛_9sڷo/LJJ	 ?,ແxQYfSPQU-Z;AUAF;TUr2IM6zjIIIBB7 jrr2XS;O2Eܕ_1;;!++^m۶ȭ[% 7n<cXTjyYaD.FzSSS4d8q*lVUz8Xs
+u۷/ۿXU0jԨ{Oܭݭ[ ~"ӧOYYHVEJG
+
+JJJ2d%Y7H$hYHHHAAAaa᫯j6*^^^yVZ	U0]qƁWfL07.X+V^U:qJA=<<222ĞW6jhҥ惋'MС֭[˙+*hBCCE~D/aK,1*܈hѢs=)TDg+kJJJN
+W^˖-Aǯ]f85y6l(*EEE>>>& sN=_~dAA.999CupxxxJJJDAAAAAas	2
+endstream
+endobj
+10 0 obj
+   103273
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+11 0 obj
+<< /Creator (cairo 1.13.1 (http://cairographics.org))
+   /Producer (cairo 1.13.1 (http://cairographics.org))
+>>
+endobj
+12 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000104289 00000 n 
+0000000141 00000 n 
+0000000015 00000 n 
+0000000120 00000 n 
+0000000455 00000 n 
+0000000241 00000 n 
+0000000676 00000 n 
+0000000655 00000 n 
+0000000776 00000 n 
+0000104263 00000 n 
+0000104354 00000 n 
+0000104482 00000 n 
+trailer
+<< /Size 13
+   /Root 12 0 R
+   /Info 11 0 R
+>>
+startxref
+104535
+%%EOF
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-fr-soft-1-rem.png ns-3.21/src/lte/doc/source/figures/lte-fr-soft-1-rem.png
--- ns-3.20/src/lte/doc/source/figures/lte-fr-soft-1-rem.png	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/doc/source/figures/lte-fr-soft-1-rem.png	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,357 @@
+PNG
+
+   IHDR  r  }      zTXtRaw profile type exif  x]	@Dku܁˷,}A3<ƫ@!\C		zqh 	nj\tFd=ʓNtl=jF#?E,WH  
+iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <rdf:Description rdf:about=""
+    xmlns:exif="http://ns.adobe.com/exif/1.0/"
+    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
+   exif:PixelXDimension="626"
+   exif:PixelYDimension="381"
+   tiff:ImageWidth="626"
+   tiff:ImageHeight="381"
+   tiff:Orientation="1"/>
+ </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>B   sBITO    IDATxO-Y=:Ƭ>{_$H 	& !`Ѐ$<
+JiE^5䥡^6L+@&_r9{UsƜߜߜUι[fZkU5jo|$˺˺˺m,ae]e]e]VX]uYuYuYau]e]e]euYuYuYuYau]e]e]euYuYuYVe]e]e]VX]uYuYuYVe]e]e]VX]uYuYuYau]e]e]e]VX]uYuYuYau]e]e]l^uYuyrhu~[?@@]}7He7OC(`?n;RJB}:_L??wa/R~ GHn}1it峍A B ٣ȼ!" 2ɴv@$F[mtDzec4J({X?^>خ俔}`v
+`h7<neݡwpjj{G#h'GcilڅYBm;DVyr?fu~dq6lJ$3^JVr/g^>4LEn%c}~7wK.F[ә?tcw^7B^5`
+ϟ*O#3eCY8:|Yc$G-TDZ?h;7FC} r1):$0dFAҁ|CAq)Ӌb/cHP
+̇ +mc~_3v"ӝ<U76tڳK99ӧQT'%x'KrUE4brW;n{d䳵i/7;;γWຌWoxdYȫ
+)4C!b	#[,u;g{V:Ց]^ʧc	+T̍HsHI-Zv` P\c J`W)BFČ	~rC Q 
+磻W-zDzYK2>8] ^9X\<x>	N­W,W}
+wVDv'z:j>lTʵTSn*'itf:v!U}nl>DhV+_iiuJoұբN_y/^X=6/
+Jp;dQhP сB-\ e	S;镁0 xm  5D	%lNA,~HI/RlBGl~xL\ؓY-Z`y~XxC-oXF"ARA-ΕqØ/X:CHi{}e^YTHqZnC^8up"KȿVR{_rG`rt{ĝXWyVVuo*dHP0TO)l5+ $,k5!]9i` Dߓ]hBsJ(MF2E}pht#[c#c#
+´-Q݁i	Zk@j8~r'9zjmUlfeDr|+Fg[c3ѱ .G
+ZYiRh]
+46"0FCUR}azݣVZjrh0[>*SݴXEࡈb0fu7?heD`cx(m%Ah@~}4˒oՄ*L-s5º!C7'`8ú#V7f87td:pW:eYaª	-KS9\4R虢bG1?O{T2ZRSW<߾]aOU'[P
+Ų8-H&:4eeܷDwH \)Wmũ8Jmub_kAjآ7W_zD@	PPDb@ӁJ*!$$5:ib,3UBZV5nlMŴȚKSz;<m=z뱿S!z{Pz}x]VX}lՕszږH;\r'yY0z񩪯< VU|nI%Rk-Airr;-ֽbz\<Ph;s*[:qqh'w?V	Q2QDOA$1@<0kxR	Ê	Dk1+1:M3aql2ʖ&d^4JY|Us-w+1hw:v^)/}3<.Zz/TG0C7;v-Z?7&fim3"R{[uޥyvATM\ikWlLIS&M'@m췸kEO._\Qei
+6`NY={iZrTB8P@E!A3h&hu#+(8k4Bs$U/~[7>x%6сbKt@T^TҲƫeg¸]Y"KDP2_ԖD/S0+&j`S^':^ˎ=u#;t6YzpªjatNgQkAJ
+\-^॑Q[ܙ#ܺ-Ś)R(a@mv/@`6] AZB0x}[vQ-:K#!Z%dܤXGCև
+X:m)QQt`x3$OPM8^;z;z]kwO&%αUҩkxjTX'7Zwסˬ/\\']N \`dfTRo`m콸oEE&Ye9ܙ\TZswafNrFvX.Wh!@G)`r0Ii "3
+Br1ܤ	1z$TCs`f:MW>Z55]-wA4lĔb#sNT[vƥF.RLb0)Έ݅/	3MNL&fm{5S>FAAl`[]IuRL~HB3P/^F`W6{c렮t.ӱU3Xm)dg* #15p!( 1ɿ0pR4"/2o鐕`NV֫69H\Ͳt3c.xC]Y׾ջp5;~:;߇Z;tnʵQIܮvM4͔ŞBDI#!&5t	5hޣyj[;DRwJpj7n8%>&W.5	een@g7DR	YE4pb 6rm596ZoLFӶs6O4M=N/AElHG֎6ơ3ZZ㣇N[?5Қt`U&j%I
+^C}p,-\GgνFI#>|/9NruYDȿj5}б
+rY4BF&33k[fΊê!zemrP.РiQUX`hձԓGTeHv.j,hYnT
+	]ls[X!t<ftxWoZ8u]ހ
+]sVt3ޥ444r%vۿڛfIKVFUv鍭.iT힀w[]mI=e~*ۊ=+v;rDH[X6$x-E,[?%cɂDpc^Ԯ:c2flTXӡ\s,I"̚ҟ,<$(Yˍ,!&κ']c4Ov IG4W]cM)=4F7%
+.dv/6{Z-L5:h5e5߲7f3\8@%Byt+	鷰ҌeKpՑ$v;bC٬-+e8%	l,|0,-5 A
+ jV`H^r#m l2+HIK.xrmYuVd-%Z*%"B9F9q}ŃWg2n*jY[t5};8Bs~{rZj9.e,Hܘv.tD:ZZP;O/ãl&Ъ%cqHrCK %K%^%nP&jC)lu lVUdE@" B&IriD\jiq6'n4`S`TaWҗ&*Sq4qlQe=t-Vyp<M]VX}Vc("DduCZdɊ :{=Bb5pS0=1}'ntj3P»jS^15׉9ZRL(KbwDZ1XmXlbnyK;? b6-n+ViJ̪OQ>Uj75ԁy\i12ZU8yy(!o~T;qՇvT˅'OL~dͦ{B˫W}t򻬖o"!9:%]^qb:ܴ$A8T[MZù!,ZnntչKTO5S&lt^/q#yI\6Ⰱ鮁Rs\Snʮx= ,B{p4>hYGh!9^?2Α44 GEl@SG^A@c/i=6v++UESY9R?e┑pyKDllmM!FŒi6'Y}b_1*Whg5k:xs6@ی$54N-ZxjsZ/̭&bꥩ#xW`+$/VGդXM!C<p18R `詰'`jiEi[F0د2H i"e)SJ*͎3[fQX.jaAS~Nap?\OBa?'vh+ޡN]q[k\GK(zggSwU%|E=_C'aŭ:λ9GoyBcE>55Nݷ;fguاE^93
+&B)FL+L+Z)= q m: 3`0ROf$2зMb /qFC+8]rVaݚ*3w$cK͐hɛ
+2[uYp.jO𩺓@l#b	nUk>"%`&&&iTatZ*Ov%љ<Z
+Ę;j,H{;4u+e`i@=v#Y$IissXh<u!)7}nCq*%j=b~9H^2|`#F'M~%	dqkoՠI?k`7	*|Z[|x-[K'vjpa{O7r,MN}1dX$BJ|Qߥʓf.tihk/}p.FC'gQ&jlw䞹tϏ /=WVJbli}l_N'ժNRccVRUL%s*WQ,o$i5 Ł
+iLz,@8] 
+!u:RG_y@+nx+9Τފ"|׾;Wѵ*: T8l=G@#غ$}9lyFڝJb+yOgcn/aJ4Os0Ě[VH}]IY5XyJYw;3;wa~K]FQ<?CQn&#	ʂm4Κ)3E0)E+k ej0i"<." z=痭V:ED[{%Qnrƙfi!!JWtR\cA'nD\OԏىSOlJQ&g:Mwĥ	V>6X}i.YU|prDˣiKA.X!mdRaC)A=,E;4o1u1ލStQiع6-k݀Rďij㋬hC˵ z4:!5%[ȡsbu*ouln>Xߓ	<L158/ }6c}{H0|}`|D^ CJ+vpہ+&})Wĭd'D j߼&7mHOMYNP&JInM (sh8\氖Uk0Ng1Wꕖ`1S-ͯj2u AuJwB ?Nҗ`Tݨ,4T?W;qyX}jPNs$O<-79qЌEEEM1ؓ'!o=(-.Z 3Cӛ2\"kJ֛DEB{`Pt i6OE4)A)ݹ⹵M,NClFA6<ߩ>嬤js2|,
+Fe鮉ZSף]A૳np4)Ke0Nڎz՜%s6@?![eNF>}ۄ}N`%__s>`#=RmuBO=(t(;Wm	+/jZWThF(W}Wx4!3
+Qq#(dV
+C^ryO#0VYM^&\חcO~晥;Vv)22~(\LZB;W5bҷ o$pޥ(ҳυqz~6]ׁτ~^enJUnK'zf'9!YiRUu KrG^lY|(`$PgLLƐT>rӂ)vIhW&s&mD8ن`sDNZeuhjKd"+gO.%Z/weqaosӧ.(^Ie2957lҡ&j<p0}Ni]huړi](/zZK~G80Km5O&7a$4 ;5?,gmk/J[$UNm%zݟs62룗 ;\C|`H:(h J$5}@jrh;$zJb2O9ym.Jwtk7,ڝũղtP53rf#IYU&bZckYuXNa2.Mh6mb$_}hp)TOP^MG{@l[vjYVhYrT2e)Ë́gGS\d_azb~YD[3g 	R!8P GadL9$D֚f暄ᤚrJڞk3 ZWWVLѝl'Zy)8m[-~4^B/haqn%yRP8CTlw<R8]BMcJL%a}H0nuz峮fJam6~Dy9(OWM8S	w)gv6h    IDAT#qI
+8_ϊavV` _)XiBh7ZWMjpz m/T|ɱvU	9aX0\JU-!YԠ6ד)sMv3ͳM?^jqf(Xs6P]OJ]\IZ|Y"kn~p4mIs3ڰR Oc*O 3V)4T!:ᦚUUe˿ZȊ˜Á[gV00QC`RJ4̩F|6I	NEڐi^J/OFⱼSO,$BM4s`Vo_/:%jM78<y饗>-o!~l|W߿/|t[E3G?edOn/Ebb{,Vf[t[ӉهSW.㚻~u3<{;)Id]`8إDZD6唥F5-v_a 0C
+i7q>y0 
+'<tmB̦ݻ_[:Ƶw܉Png9iW;i&ч_;vsVÇ?}g?ٯ|+_җWW/˟/|_O~rªE6`0cMFnd4I6_ef0Bon}#&-:"#eKR4oaSYGsDVq)Xm^TP48Lcm^an1iX2W g9ɰd&9}tJ9ݴnU-,NYUMs0dި8{VMVxfg>fo|ѣGҗ[[kw|k_G?}Hʄ^c&zhJ;B؊)KMD lVƬnLRr#0zna.{&Eaͦm9SFD=`T5Tp0{v{YAhnpޥY]4Ym~䛊I-|UB#8t*}2#mEHg{I֨j/ۂSJNV*?^wŷ|#iw7a ;d4Yu:YC}wg8{_tVLÉW쫶7PkTV&UOk6>1g4-y$ܮx[E
+.Mzy_v[a"ӱS0cZ⬎ZJFb˃XM;AzpIk2O?2 n.ǖ_+[wq_|_|cDP6ՐB9xy"֒19mQz[]#!uj_P c571i{ caҖwJj\+<!MfmGnUfd*;JsWՊtA%8@TR-4zU$Рib!iLXXX*vQ2MǼD f)ƛbUnZp	D6l	h/&)+BN]{xYt.[>]#t,S'	h/|ŧ>wgd2}~~M7മ=}c>FLmY,OZ!Z2h氶^#nfRlb<YuۨW<-u$W}Y7M(7eeE܆C[RmU`DΨiw7:q4>`Chk suwV$F!dslNnLĕ?+oJ4U}SV/..~W~_W O0?>?ַ.m?xGKGi|n2j0}l	2OyM)kᶖ<KDwevedQˮf6M.ZTIuKBY64]t-Zk{ZkpU8Z`Ucnјorh8
+E
+Df'ut ?o쁑
+J#"08(R# }Ofǳy5]R`7pE^7zP>Z[}O}S|i{ޯ}ko??cSs?>];M,OcۖWmƪ}UU_[(Td++d;CWd2U$'^ Y^B識M	[BK3ve31C8G=[檭Cx3m65M)S|Zc)څ;`$Q*Ln&of*+{]א/ W^y׻s}S{󞳳|y{~Siiz*3kM(Y@b}T8\uJ43ZcRpo7ݸO8%MDvTu63qq[<!鵷m!փk4w˘
+N@CCXC{:gJm!_9hw5G`Dd=dBpXy*C Ya,֗쯽~$4N5Pz7O^Mf'fA =OwάgL%$~g?q _>= ww}C/0 UjYJt0!Q)-դRGmFզT#`0|e'/I~J+CZ,?Z eMubk4!ʚڙtHb'SMjXxy$cp=f5n%9o%ZzRtcO7!7v+	Vj;i&IMȪaEh{ "sMR*nT]E"TqX3QH퀽ϥ\[Mi|:7ue|՜˷_pxU:t̾5~7XmcOBh1ϒL3:xs啜0NyOTƞylˠB^^{"H[ev@hM{e{_WKod?ȶl7=iJsjFjg)QMmi2V0t9^cY=];`$/.}EK<||ܑ!yI.fI f-*+s&n,hgNx,!m0kq0u`f$5#gpMqEhg+{DC\%CB*lh1ƘÄeiH1C~=`#6ҹpm3\3`΄4[aFye6aP=9|`S{c9P!Nir9\˝Go#	TYu~z˞[q3LNÓq8|'OomH䦨`cS,>,tr֠Duhu$.˩l	h˼Q͹q0;ȵ &6v6zzpg_r},Z K˒0u)],}crW>9YRkmʫQXpg@@8fXuJUSԸ|^Bhd4fo^'0!1LzG,F1SuY5jp#4x7uJfȃ fzNסfU{FTMӝDp>:@'UfvJvf46M@$򩥴ե-lorwOp._xR'HIhp&ǥiۯOZkЁPi(SGcx0<y/`xÛy36oMބMؤcx9c`nbbqFC_a>:ǌ>TKgjnF̡Óׅb^zhmAPwrY
+?w~wVz#jх6 ]΃ob$ :xF+zĶzs#E~ +,18"[Xiu5P]?Kу6ZJcӇVRkژRqO_ϴpLKPm)aTY8a*7V9 ˏ܀gPkWS#. 7|c~'֖X&赒BRͬ|cP8k7<]0r"/r~Al	~j6)|v'>YRɟ\aưj0kdwLc&ӢW7cs<WP V۰29K*3\;)UkWpȦq:޼ytNlƚ׸%j9ꡊ<WE?дRtQmCgMyp"C&9`,$wG܂$F {PAi(KNAN-&Gjxy0bEa*bZɟX<&U,<5k)'_[ا7u?-v>-oy{ާkqXe nb_ivRkIC%<<Gz+mV*mdV5D2N#Tk.wjp|kHj2]3Φ,\QWIl.jYQ^?^^F󏞒AWTc%հq4fJJͦ"pbx nxp&%!>._ځB;U @{q[E6ѩDFb\Y}IWckh:d{Oc<FOy N59Pu ,y-g ^[__˿7+^WY]!ӾhT娗oDjdP k SٚDF2TSxۦXORU^F)덕w6UZ53hvi
+~%J5q\5<X
+-f{uHjU!$8YVxЕ4
+ @.dRH#D(4 G2=FiN-M"~07ypPUΧ@S9(]"B;on_~?3?//'/+_Yaf"$ڹj.*BfW {8ASt5JWr"0j19O?`i2rH1W~9V4re:k(6L4Pq WNJhohz-oԣ[/3 f,#<@870o C| /"{h ܀{@ ɴ_ez-5iWrpT㱏,ˠI@.>L8,7|C?V>?|ggWXޭeIEMMVO	ΕZY]]ݩgd-%߇Sc2.̀T3(՚+je+P7sW)dd>|[U 	V7rfFN_×Z}ڶf`n3  ܞ|#!Jo/yg<\)i64D<!%p!4Wiک|xՊ-v(˹;38>K6{ +^x\)RL<U	`Zhl-Teh~$Ʀj̟Vw@K=!hgw͞j`un[30rrEcm_yW%	ۀ\LLSk=!&kt}Mh@xnk2_*.ٜ~IuڅG^}?myMUr byTX5A't=R,5$C;U]hB%l sژyFLae
+?$XSk9ylir7k)*xUѱ=0%ChdgV&MdUgZϒK\aPwKVMײ(Tybo+k]\y a!.KD;p UGcM#}{hξOU_yd+]3ĥN]'pq_[7~~>__|׻޵j"j9|J|km
+@V柳mA|.W F*
+ doCs	Nk&Fw)i<&>r
+V\jO;'Ԗ\"1M٭GЙ/E,K4'V=eӱByhkyW-=`DLHo4VT^B15wc2*nwzfՅ]MiZưEI"]$r"t?e6|G~~W^yOOOqkHw\r,0p0i(L.CgMR1p=adE_?XI8tH?n#_nuw)g(!jiKa h!Pm;ZOSr+{Ͳ VRj=C8CԾj5-9u3-(ŉ M-&-ov_a Ժs(1bΔ.+ |gԛطZWooxX&`\t40Fmm+5n4Lm9A*@TU)]j/E	M؆C\Q+Ӽ}*Xn	yZr%'_΍&"N@Дhmɼ`)S
+MWPYl,V=iXZ¼t8h~C!WPT>sU`EWk*hb	Xl]>߄YNRtjw&6Nd-M_*zr᯴0 ~o6ZZ.WGLc[*5J+yD+-$
+U.V{>pfoxDE#lvW{3Rp/#kBfY' yW^+ZmU^Bvn*[Uk+~*KS)Su7.W5Xd;jsZcpZ.F#j:5li#
+VTX[KpV@+Œ@$%o]|AHHٹ@@*nE`Jd5&
+\2fBĠ	30/a]l嬓H)X4lL"^p_̵L-͙\a@8&yTqջDV1Vja[S5S*ecS=sR)`%D52)l*VvZp$mP_՟m¤kfciإ=BڢQ)Yi5BKퟦ\)1ʘ0PQH[06d0R`SIE)WTTe#P9!_@n|.]{Y/#͎C{r'!0؜&([lk˴P, 7w7J@]2%ݿNWmF	kxg
+wWG㎝Lv06LڤU!6
+^"Y BFo%G6lJ/Oj-K5+88ibngUzj@5mSJw!鷅&7#S}U^J& @ 1PVP=@S%oc"êP{Lm(*s1=    IDATFf`5(vC@|eMXNß1ؙjV:Dsl GWwg6ʹ^lN
+vvoѴ:ܤ&ZD)*Eu}"v>ۦ1ekaiՉe>@$*O"Vivw	XMS4%ă6AD{XI6ДL48@6^{hJآ0UИz%MWW!>n8kf|U)"s/{LPHT5}PA	!kc*]RjVnVւ1jj`T>.>#ítD਒S'488+.]<SFp54K`MLtOY{dKNVjAu\ANbFa_s%~k`-r:pai"HbBFC:d:HdbJFā@`#n'I&Uƶ H*txU@ả_E|ENT4a͂#i՟Stk"AjhBzNU.5Sߓ&GB&'8&|unШ㚶,h1+=]aN,#O[v1>ݐb5at`vFմ_iDsRL%VMLlE::d/-瑵4`k<%45%$I5qf'r&YD3&gY
+ JUFPGql\%IjU5(=tcD!>F<W<#>B|"k-V-PBXc#wEֆ
+%6S[)kFa+ֻ&ƥE5	MR.#B0hesIS)XXhkw6wpBVe]',Z\+RkɋT&dԏ40w9Tkȿ}2>l\y,<֙~SUKejCӉ%}@%'a"Cy,6AB1.9.%1Nwi#DaCEa#n(n-֯}̍VGhDGw G`ĸEc U?q,C"^ >6ºvzAXNU', {L_ᯕȪ Pqjbͬ>*\c8/lox3T`7^#ol^zDL#ӤD|蒁sVd&?oRu0O5&	\SE^H([$E$d	M(Nۛ0aFԃl[! +XU-/OSXU&њR\LZ`վj	q>sAkZ7!m'	 m@ # b#mA {aKA؁ Τ3Թp	@d4Mo"%6-( HyhD8v1oɅ(CC#8
+a|&<"[*:{V
+JΤ3:gVB[h#QB_lDI8ٝ\SY SnÜma^PlH{nRfw">йGvS)̧,U"̽Ip'Âs(Jo `>m
+-qn+Jjm-+KvEVF2qPkEL[Xp?3M'Օ[%%?N0tlU4 l@Iܺ(&z&Q|~!4|ƈlPCw!p@L4v%܀sa{Q3>.sUU;flqc㨫-SCVVb#%LeW1>:*ڮyWM^d>.aYxeDF?,}m׹,=]YT]liB7"ׄexX)lY8YZr}h)8Tf)3Cy4#58N,Kѥ
+spE6~9&zw`?*ΕZmj+"YFR*&,qc!%l-)aWtH<cU=;ʿ`uJ[b}#ƷOtsp `J;`D}(#IeFSc#☹/cZNJ[a+F7%&A11Yߪ/crl73vJGߙ8\OQjUO@M^W
+ʠ4L\m,mc/͚f6R84,&ΒF> ku W,Ɋj-Kex12"hshsbix%Ec*Fy\:lxe}ϺFG"%YIhZkRZ!$l![a؊g3HY䄨s..+ѱUL˻O<զҜV/ڃKխ{{`=#^ ^@#chIA[{@h+L$lUH[`I򗋀ȊYl]CScz ȚWv\ՔC!낭;,w2`-Dec7&ѐM膦A[ؒhFYKS2;:_PJe8
+(GuTs,Ÿ%2KpȱA40=byU!iKΨ3%JA9 -*Zmի5& Jn2a@@<C֊)I!Mӌ*i%"zTI:T+$gMpj!wNkWLEN7KO'jUZe 8K|)GYVNׄRwL5IEej^lby0*E@3%F)$wRegb&)9dJ&0oVTGъE=&wA_dGnpK Z!O3_xzI*i]|Ez٫Y&%>SC`.AbN?f"A#F֕Ayf(Mc=FNʹ%I@Tvdǔb{0 $=Cn nVF뢉eqDĝy>qCBL5(l"kBX}L/΄{=a+ݓ¹p&m&+lAZ+ζz06%yRvy(UӝJ޲f<wN~e>rJ\.AB/(H붆zgrnw6IMCNzP驏ĳV5aL5t.ZTu\[M aD摞	W5x4:ZշPYSk	5,p\Iqm5)g	h-)"S!mI[b+Aؑg4RJKJ#xzbѨTB>8T(;B;p wyT*sqs~rguXH8n9Ρ3C[U58d)y6J"Ga5dSIXr*Փg'M^*QU	wCL}s"p\3pEXVKpLj|ih%E8*CMj򝯵92Hy1A-MbTVmKI0..1l,.k-E֒/>vɪE%uPIŮ+rCQm2y@m8n! gM# 3Nځ	V/ ]
+,+Qf@][*xIL&rr6!Tʸ{ "@ԣi{Ҍط6YA[&dEUYNUxYä}Xi*ݫ|VS%+Bm`NL&u$?.]Qf<rtUUk
+Wjaݽh2fPN̯V&ZơvlqB6v»ƛRG!c6YPH E'c/5WZNr',΁}T@kYBp;6VYR )XGl gMmPZ9')@KN˦\U-fǆ!HR]UUX!ѬIrj6Zjj<Vt.ABԨjͩ"Z:p,,eDXߪcMmOlm_d"Gʩ</DOKry^Uo Ҍ$]l&z8	ׂ|ʙxje*eD!9x-g\TbxD$21y
+g-hedO0c0,=aT3_Ve0\m&YUKZ~TJv*  qRv{^8	]ގ Jը
+D<HƤm@@#ǌVΌk:u򭂦Pc;-7~͹r\hj)"WR3mM+l :4bjmf͕:FڳUO[ k61[XմڕN+l,ȿR0;l=^E~/Zkw\oh뤯FECb!`7\&0P-ߢGU?I&P*60a`T&HBǤƚEV,2䘗Nm+<SK\mB	A:*6ʳG`*?
+{0 {`u/큐>t2
+m(D	TM9Cna)̶:Wȫpta8#Vaҙt.;kV:vN|.ĦtfOz`?s*u~`9?̌-E7zNQP?UBXUt=VxZa;;"NO4Rš=gqyYJ7$(4H0&tۡIK(}YgYe`v/;sqcЏce@>:Y'TF-^	 6Y"@S}3 vv;@$/C _c(\TI &Y*>qo],2pΣA+Vj)_Ѯ ۨ砭<龴g	ps\M	l9A&HڤA$fSe J9سTws^!EjZLu֩$( +[:t:k>:/^Cv,xJ klډ2(UZXSY&$jpu2h^%󿎆p'n)rˍ,Zj\L_<5WiծU5+NYJV($8F"'Ҩx6#0DF61Ġǉ&?tOT!Zn,(8*k\02N+0LUuafh/+OݤF[=i*6b#NͦmrcY}pa:j᎚%|ڭ2OU.AޡôWG^.+>1o;\smMcFmR1T[Kt08^V7OI0I%NݢvՄؚ%$&:s*+Jk0beVKXM\.bp)qSs[Lg([	V#4D D#(2D TeoL̀ZHjTN};bNs=EjKLR1~˰sHgHԺT-?J4tmJ%U<8_H*MxKIRqӐB5X.i>uנVso'
+'lSCܫhcy^zc[w/o?_~ +R6ҕGQէbȴnOu{ZHRv?߿oD<"0AۈF"ȴiiN^OU*)Ok0؇褈):^RC:T-,.7>Ld
+m5q$ҽ}QssQG=|GF!ʜ3_5szC^!^bĘVvwhߍ~d,Szv*MuOz =ϵ{Yչpf]IֽbYZ\a%߮e)gnk꤀[4}v9L}&aÇЇ>wۿ/s]'?qó;ɹ-pRXľ$\%YDEȽ-V-GCJѶGfdMlHCֲBY伄hJ9ĭT%θ [dT'\\Y]VRYL<t\M|Y*c_:vhprhww]߿X^T`=n.F<L1k:35xkiJv7]p`	6_53FRTRmir
+rQi/CB.3#T:g]ϦL%S&|oӖ}
+wя~x*:1@	]}4[3OK5ԧɲ>tgv@
+S*d+JZXnJӼ=C){lmgL?Ȳ|%-;phbKT7h4bCrl!g4TP̿d$v; \c%yIɋ`>"{G.!||H^J.00CNNDeC];H:VVa}-vf꙰UoRR/lXIzϬI`u5 akRF
+6HΎ,'P3TL`WLO-<T\{Sqp*&]>A8Ζu]+54r>kAH~n?@Sx[G>mo{ۻo|W~bN>HU\3%hͺ#jVmWVj! ܳ寜(458_3\l+,ֱuI^	WE3,L:yZuDXW/H/DIM8NuFW&:)mgxX;V36u?1oy9#GIwX~ŵSOԠ*&t0e/Ӫmq_|Ų_ǏS;;6{dit\RzLә@QѳJ%1VS6"XCpSQ)CfF7	9%ѷ6%3fj+o:"bu]sPgs2<[kx\r14,Q<Ozvl"$q/΋h؎1q 7=h:5wUЉ<rZސEk7>9#}%Uu>}gd"|B_  	D
+,P*+1 LDI@@@&!0`P{Zsԭݻ{N~z=YϪ+JAK*Rl}jVd0R$6zJ"N') iLET+='YU萼xs|M^eqyGNCV+5>eTpu@-"3% ̨Bm'1n ۅP[eר8(NU3!Y4buFhƴ5?iCVSxc?$eNM/
+%
+EwذkefbSGApL§R_]
+pK ЈXzVe{`"Z(VUEEuK5h觊6[k[I/% 0Is,ʎFVf44Vlt%fB`-H5e@Xj36Z	J6A_Tط
+8Sg>H3P$iLL*Q&ّR-4[`u߾׻98\QMo)NPX<m
+V;e]E9q{k2i lS,^ڂrlOc4%o0ȾFB?j0    IDATl*sduƬD^i;yC.vXvܚzI77`fj[adTPFD-sċ- -mpTƑK%tV5F6_#/>A^QW@uhjSG)J@ǩ[YpeV9)ˡ*[frUe̚j8qSh5(%q*iN2)DSR*mS-vr8[n9<wի Z\LN
+;9k$22ZۨUt]Ѝ` A@+ixʢiifoϢ1+{~W JBDD?sNf:lm!NeV)xԚsm )sY
+T1*"
+VGD}>Wx-NDx T5AS
+td}[EjiJ+JA1Qr-W5JhZr *LS'0<EH޲#R錉-Kx׭[o{6lsg<Cg~V$;ރ:lMdQ\Jc,n\u{m"q(hAJO`QmLBm["j-jn6uQw9;vFDqdݻ'L;t
+mϝm>">iicnLLؖYM"b"DD2i[R6
+uhP0VV #J@#7-2"~JGFD0oZRW~d9	h҂Jg.hjxANٻ?
+l6[UѪГSQ9s6FYASzχN/~x`0,1F)JXc	Uiy huI_WN>d|QG[֬Ysꩧ>g}SO=uGxUUw+Y)!V1=IVۿ,7؈+lGɶ&56ʶ+%"77r1l~-LΙL݆}6)$IR߬5guǇ.aj^k?Bv'itC"ѧ͞K`Ux-*жe"q}WBU}EE!9axXhDX	nA#PCApgdj1rlT\9[tzD6ZYoMٌ6Ш1dR\55d!(r4_w&GĜ7)19LKa:3.6}QJeNYkGH?L!ϋaܹU_v\o6ģNFc[L3/]Zۭ5La;@G\:mzW(ğVzVځ+gmëjG=S(@DVP!r-a,
+*-@׹bm aDz&V[2VF"\ܩBN+WX|̵JSsΕhz&Sk66Ѫ̡ʚ洈,*&,O5IԔtRnJSSiP54vG;V9eڋ+^Nu?*T0뙏\U'UE+:iK&aQ*I)aZ+QVu7lmrB\+axrqtlPK8G#t1&Mra0l4I[c)Ƭ97Ud	`jIBT+Yi}V7c(ĨLTjIuHSE M&n@s!cx0--5648UOCSp;x莧Vɴ֑QΘ	fwgTwUF4LmGʋp'S)7!'Rr\ʈ8uF8?I]8[r"_BtsVtxbpK[1 @ˍsu(kY,*0)Zf4(+ l
+K|v`Թk2`_KN&Y68w)>w43ⶩV76VE/
+&D-nWn9ƈ0G
+D!Z`Z 48juNaU|jCCs![/jVwH
+f}α,T6ZV_vAHQᒩH"ѯer)３~m7uJR1: 7
+<dݒ[@5"!Uvc6L4M}) WJFCSԈtWnqe5,UK:0J/JG[;5FTE5\waLFG7?s&OW=AMZT["Tgd:kH6vVFltXcAh*&E![Dxh,bƽyj~tTְJi3H/&{s]0G]JP'jq1xԑ&FoےϪwhۦAj"#PJD?dT7>hOiCաJ%ndGnj!BQqȦA-뼚6]2wϕ2r0	W:.q+ɺ5M\(?g۱v,;24H[#ӊgDY~4gնvbsaڲy'oAİ$0Z2vQ
+tMYG5jBC-	Z]$Epk&֕,`2jKF6_ntfzGiLrsvq,:wp_c6)a#HR3A,54Q4%bLL%-懫YotWOLaW\rGG̾Q]+;U*&w+}'X.j&J`W 8^AnE<ЗBW;*h(/V\E/U1V`S#L
+6pK-+WDqT-*!kBԌPba2X$nA#3\C!pC`J\l7Ea%&JG8IR/Q!ژUԡZPEY*DGոs*wUј{|	M<U:鷽oRHԘ:VJuc'o1h3ZE*vE0jd}$J7^ ]MN6Y{&6.F}Y#QríKHEBdm(<1RYxp9WYU0ZLwaXHWAǰ
+&Z(vI+X;/V#2ċGGu;}<"1Zk7bfݽ@&byu&.fUlNU^wZ3r͈:jp%Q׼H%$JIp9ԲeL^Z ZPcj8ufi&xAq`D1JMSΕ⨗"ᄥb5  "BeLLت)-FV8j?rt1`6bI&Kצ%є55([ 6d".A&h+BEԲ:x1Z"%#BkPV0nB AaN%)jIVg--֒S⫠JQOʂl&P :߁hl2l-hʁRGuajɉJ]udiR]M6xM#W<39TДK&Ra	GIV6hO[:p,͇BwIkYNyB2$Ϲjj-k,&1H:'aǪkLl]H5duPj>Mi)ۼ@OKk4{*2rxDhz&GS6XZ&<h
+6Av5AqԬ7;nUQ\JCQ["~VF={:Q2d*~הf;.tbd8#H ܉>5"){E[>
+7T"ACnL𤯘Tt(tVH[+IjV{/*pEF \[%pk։e+EkSCHMEq+gH.:d(.f5xvYױq2NV%fB_}6$H`-xD'CEj	nC#Wlӫ@&W>fUՄn(}4i!M#W´W(LjC[T
+>=R'(BUZ Y'9Boyլ/ |MOtzCp*h*HubSCb]"T]PXU1|/%8aXCfu@	QH09(P.
+5JaaQ[]4	[mIMn?J
+Ҁԯ9.ۄ+9,&Z	2m`↴!33ĺW<Rm SE
+_cVõ۰5ȹ*5{쒲ҽ)$k!녾ƄoaN0eIWMS.ݢ]j$MBwIr)t-z3qεHg*.!'ku4ժڐ6pR
+1Yb)vOΚ6?Z>P6Ԭh	dBaϣls/a>V)rCLvEll2u&v7
+L5`21qh	-S{'i5l6ي
+z6g3jޤ86NF8S'pڙ"h6Y_Q*a#*3mCÅn,UShC8țp0.?1vfU$ɲ!FK6JҮc\[&R8li\+V9TΝ?/8R0׉~L-9;C/taq@*)?1 <d>lu_M&٘*Z]EXP7:t
+ClMi0`7w^dކ\])QO32oXYߠ[!~ire&
+RJ0:x2`&-`uaaaŊ:'A\rtw_VjN[aA9EfYwc	+*luʛ:ƻ6*`AV]&z؎QQ9JE~ѿ$'9_t+*p/9aah5LhmklS03K"JU uL W
+ף)-:i \4Fjg>ٚ2Aw8\龍I^jsYXmokou-..n5kN9W˘?Л}% #f%N9#h"VO2X!RmlnF[7̂u݂_KeP@>Հ"vnjvBT. JzPmd{k3(bJxAckkTDb%'hR:M&D-	IjqԮDik#־G[@Eҭ0B	 H0١\DME0HǦ|o/&IþAeig0M14;H(NZJ tg׼𪫮?:c>ΫVzgxo?蠃>|U;(lJ5+Y)`6BP3~H5ChaHIx_/0Tc`)UWU(BsȰf6RpĒfW4MR>NXdt:e=QUdT)͇iDx/-ڜPRI&!Ӂ7$֐֔OʸJ9`.ATaՏ:"GHۣ}9@︬ow2u9@Ɩ+^wuW_}a7??u]{V{$K%|~xp+z[$\&ZodvhYxÂLg`qN4W5g[2Xa.s/ HS|V~$@cN<[i\EΕ-	0АՀn8Zm
+E2MkэZ
+f"5h'QVL? q|4Y3c9Td}!\H|e:,qe~?71oʕrʲ(FkjGM0mqy+	MDaJ"Z[2)p7Q73_Q[TNPme?MQ`#K\A?۫*5ʹPk2]&sg%;4%5YFb)H2oQY+~\$u7j,u
+FCEc1-}M̖u?	Qvj@eJh,M7
+v!2+w]HB.~6]	EE4ێЛ"98đ|}(lHwfy46RrA<jKhŦUԚqd+r-
+ |cfn[˦TAhZZP-+fղjU効jf-uusfy2Z6O-hyecEk=2[A~sY/TڏY`i$6x2Z6J':'Y6}k6Wh(/ٟ%az\_[%6}huǍ7׽n#GyDn袋vu׭ꨣZnFVG?_}mm{w+^if
+V:Hxh{ΡTؐQnE[mZ	¿sh%ls&a/^Ѻ%.hqET-"ᖬL)[Eyeݤ3c2G=\Ilc}EjcSesqt\bi'j[E<ApÆAj7ߛP}RW2^͒:(_Lc#NTv3yK	#8c񫮺λgs9㏿;x{9wio9),ir tf넓&2Cv]huaVCY)F<)kmX`e(4@KمĦ0}ѵaCІ\HA*2dq
+bcDhW0 jDQE&6p(kQ_sUWiha*"Ezʹ0(w	97B ֙]4 Pg8Y?N:$ 7Oӧ~c^q-rGn<X[n~6+$E_a됆<Ԁ)G4MY@ĀŗfAٲWgD5+Ƕ㰲1r`aNjRfV?hy)5^\[z(X_i8\ፅͻs"sPXT.h5#bZa_SƔVˆXhg47Na\0ځCkp:{X?2';1ϩdi~~;Ї>Wweoߨ{?2n*Ք(NdeX=d\Ri
+}$7!-¶Aܯ#5Ir9)S2"qBN6'g+OU P㎣ը)HN	Az3Ϝ-6c"+1R$$P6LbH&3Oo'J"ٛH|9zppx:ً$<E;yI%x<SMndvx'3z嗟y͹˚
+O%Kp-ȡ=	)Y9DQjR!aS7U ᖔ5P<v7(s?ᩲ溱*$}WxF]ie֘ɣ!%}dZX)RW~E޵Xě    IDATBjyn34{|抙4pMpDc3A.DX
+@]<W0=2ee`u4_-oyK!.Ǧyě#`}ıiږ.eKkW||Ⲹ	,t>q-SI]raY1Ś&[*caMNʔ+8BX`cRTb'TZJ"M8agNN5/[̰yrX+<Dxޟ\&iUjFMAM!\
+)rSϖ&{1{C/Xpk8l \F˘1`9;|mW~Z~Y~;QaSO}ի^un%qְ䁩p)K't8zWsx5[E[К&7hנ-AasZkȸ-6lLO@|N"mXWL
++U0mn}Svۭ72EJCZAXRA,P)ɓLw;h9ZkJ8B]t4xڃL-op9V\yr-'x"G}[zFu]{6N6
+ E.8vX,!)Fa^(7VJXuicڨT5.kARhT$VNsZFrdΕB>5HQW[B^B,bbWTyi[儌bDt2$v0Z)4C8٢@w LƯ|׭[o{6lsg<Cg~nTX=coV2_diTZp	a#|"\5p]z5${{uL	o	
+\6r
+`4̡.KgT]_,ɺfԍ;ZXӫES)lՀK\1#<ceMj_SL-@**GaR'J%fSh޹*G)&r]l:t6WD7hى+_':( r˚5kN='x~ꩧ8oqVuq\r%{^*)Yz߽0Csϣ$iJtp#Ѐ
+X7aŨ-9
+s
+3xN/0kQ3Ϲ&Y1j15@lv+=Q=Gw73]EͿGmΔݴe&`B@"HY]89}sjGsZ44`y.-;4}Ρhɑjn_]ṄR2Oklu3e.+N^p-@fSKt Wr@5%QQq=_$P[\w-Ɉ- P24ĚM>)8
+#\R_pEZ%Qnj*ȕQMCWB)ip4<*Ö1gӉ6_=f $0ª@yQR%beބp*Zsp1Z.@I -r]°B!ܰ*T}an+
+)2f_Ra*YhgA"(h5paAN\W*m|̮Ut$Ȕt'<0wf"TQ$|	ҙErᣇōc+%_cl`u4u={ȜMWN\Ti<˹K7!,@3jB9jƜ0+qPZl<g珴C![tX	5"5b	ydh$;cPH1h Z5[x@	W?v44{NF&c94埑*a)G,F;g1{}Yg|/zыyw}__Xnտ?7ͅ~t7dDkJ~c@ނZNd¤2)62l[
+>A-7D-%޿ՉT
+G[Xgz3)+z6surLRYW}b/Jʦ"8ƘM_)V;\Tfe_bqt\[Xx?蠃<]vezg|?|3ˍܝq.BA_	>5gU@' ˬl88Ȯ'dZ3P*/!(nȀZJuvN>ZfOIı8*&] wK3ekucwN A3fMu!$jX*ѭZcRn!K+eh*uX907]DsS扰Gp~Gnp}]f	'jժe~D'mp*@Dܭ@=-.üV$Ym %sBOz `1b^/MVDlo%NF!%bV^mUi4%&fJ{w4PC\Wx,+r}'(+,m,ߩ}+73~@~M%wX]l-IYS3xM5RF
+a1W =|aS\Pr!~v? /*ɁTS~#@RleM,\s`N[l =Awc(KHթۡo	VsO?oo%/z>/nSxM޵:YcoT~9RMx9g9ԽZڄ
+T0A{2"<O(WN+,ۙ6|[1OA<yyEyLzyAѼEED
+EED	
+#L#E#H'5
+BEU`XQ4)DTl"[zE~^=`scIb
+N
+wS>7caaay{k׼5'x6so6f>㛦@U3Oܙi5 Cp@ Y`7	~!"^ZZ Z Z - `Ѽ_5#ffu17مEE¢="ac	"aD4"Z$#Ez3GҠfCZBZՃz*bxfDX*ٳ_W33ئf^!쇮ninN;/+V\6۬^/?x;餓;< hʕq|z襗^
+Gmn#<4^"C\Xb\N^;:͕Лv	57;3Ui.4LmҩVK5Us=SYMՌU 9	CTud[4	Sa5CUoҲu'&MGG _RW]uՇ?a1sΫVzgxo_A}䒔}<EGuڵkO?vsܶnzR3?|&eB)olw-<~eqF-*`\&9s8a3_xc5Q
+k!vu2&Bkw5`'(PF-  P!̖LW^/0-\>B`tMµ?_hFeଁp!9i{	n뮽~n顇:s };R4'>q'Nu]/Xv;ceO)4qh),lb$j9 __PW#d%*TREDM&3Π)enA-UeT6Cuiђd\A¬_zVdM!`sR3K՞	^IJ(5<{Y]Du%8Yy$yPvoƎ+W<S=fV?󨣎zK^rwjX˞~+b9swtM;W_}'~\{dypG15Fg]W'(Ԓ'T5hˌE&x56|;vQkۡkfQo,RkۭhU/(ֻCTvMp,3,WbG	[]EV)~H$8Ƽe1k -70&s-?U~Nv7	)jݝ}{OOq<gygq#o {\rɵ^{G8n+}{_Mu9]{*䕌sǡr譎8'3ssebC$އnչ֖~N~5/ya8gcxIb\,I[M;tW?"+zVXLX*ozb;Uڐ*[mL"YdJ`!0r]t3qg 𘌞x xЍvLӌk^}ImnEϞwywqի?򑏼ꪫ >_җ^җ{[V9N;=cbY)%8[j5s׃{iȊ&KW$e0Nǩ !FVgD6[ϋy'yz󩊘XM
+BxhZ!,D֪E+:`Hl5Ra1ZESk	qK$FXhNcIh#-g};FxY
+K
+yДK,iKx{{5׼\v{]w|bŊ>{6=cF3gV\׽~^NW^y<7AGf6y|,2|NsWRc*و-QŔj6+23GlL1fMU\۔smsmsK&&l&ƴe?[~*,eSk+P<Yf\b6k\QAT(tA3yLEOy6?e8I|uGv??_zh=_Mzl`oL~/}{<̥|'|~;?m>v"iƹk¾4U^	YRbK|KJrHniT
+\+sUٜɮ,2[29T-hrǯ%Z&hZaCL`8Ǌ ̙o#TGA{Mջw+Ot5(4ΣrW
+ڞKud876}O^ v}]wUnO<$IZ4?K.dÆ >3O6N1YQ28/.tճFeia
+1ڱ)M4B9aX%m+Yڞ~:KSbi2+Zd^Z[2@Wڬ1Fh&8WZ|0ӛ&UEC]p䱮w³[xo7M(T?n!u_{崯濗м瞽;S/{ｯx+&xݢO~gg}noGocm/v,'=P`rny[	8QIaи@XoJ&Z>+5'oW1	kZ:K@KEelJ)K\K&\n4ܝ4Z*0\`Nx^ yna͐;?jժ_?g}e=%jj-re.TQ2JGĉkEkHcWjr0ֆ3ncGjW#a<@5tSnslpeg l{9SjYe>A@Gb2SG%hS8%3ua夿ј^fr<i	W>M1ܛ&f~otzDs4a2-`͝ET-ٛ{(,]2!UHk[{]ˢ';4&
+4airW5ppdg-Zק afLjv5[Z*e+\AUz&U`Aס)>%=[WLQHY(ԋ.Sb'-I͔@ȓ8k770O~2Z 4ͭWrY~`p+@;$ZMKT):٢82:} M#Ͱs@V$;6R%l{C&]ShϤXGnS eb(2M+"<U!v@6G|[&꾞Z*q4eb'WnD$x=)ZӚM8{}^f*X +VxK_z,h;HM@
+Gù_\?f:F9^W0jSdR@$&0\Ys
+d
+*UVvpkS@4_KI*gU(˅BMBYrHG#(
+Y%Vy:AMheڄ;-ϏF#"RJ5MCDVzg[o)rWo&=bJP6pG&׭d	Jn94闯sʴ@Pu".i*q+"TG]yιVhasE2G:%ʮV8ɠ	aib\W[Q+U9I74w0(yWƲASt*`tWJԙB/&7Cn/'>z꺮s=㏟e\@D<:enyȀJdڻ3=BO9W6U*mL/\ЁH|l	+gqA9
+^ƕm0ަ%V*ɮP*l{I7(	Y*!-KpQE.@Kcl.<uAj/d}/z{O^w/c뮻|6wTѪ~???b,Z-ԹV9f7IaaW2. +Ɋp./ha 0LVaUsmcM"x2+rqmVZT\;NIl0Y5l0GG|yM"dO&!)b]+=	7WIs4;1ŲŔ}b)%ॊf&H3Tބ3{^!mX=s#	'կ~;ԧ>府.uB"m,{}pZ8N"I)~\ LTrќ& WEmh*͛͹:pu#e2 ؎7ZYsĚI1*2,C)hӰ+6(ʰIy[ĠGb˯[WtL&0%_E)$sE@E`#ډIK*#p;VdV;N&zɡoe oxN;K/C>s^Άu]'iRwu"I~Zb.)eNx<Bo$p'{:L:9aTæn̱ ckT[ZKXVQ;&il햴	=AG֭)9l$,r.R1cس8CP)?=0pd#h{q縁Fi0^W    IDAT!o~o^r?Yg/|Az[O}J[CL[o]wݵov{_b ?`'.ce}.Χ&Տʡɰr6bSާ)ȼVIn5pC~Lt6K58kes5@)L*~"1=f/BCLawW_ju+"w,9vN<}'RæUo%~˦qd@O?< `=vm';H~_~p^ztM+VX$;/iP?kgJT#GYPwǗ;fR8o\)i@k?عۯ	}?Wҵ݂j֢?êrmYk+iZ4ReJܐa
+a&YȐdA1AMo2;rչV^R HpT*Hӿ<0k5Hf*4ar
+u4+74Q|F8|s&ճ:K^xqǫVZ%74|.M=_ &m]@8j4',ڡ$$l.6:N	HݓX()$"=&)=EεMs7DQ9EtU98Mxv:*QFdǃTvC9ttp"|ev>7Ѫn [9c;U/!&AsmBTLCvvP>aS^9Wq&2xڌO8meF gu'(zw_~?H`XXXw.<_*wUlrRW}otSҦ|ȭ*mJ9TFMї_rAq|τWd-)S	f/W
+
+a|ͥZCr3qSDS*|8xپD4$<k>*F&r
+<}8/^Xb	|/LR_utMtЁ.lV<̃>׻u/V}ٻ'lG	'`7즎(:Ju)AleiRډrZpinRn5ޤ8lr׳rNɱs[UbLm#928t±#A,5A5Mns"ӝ{1E<'JvxYǇUcyl@-s2YwqhPkV.wXՏGy믿z/|w5k֜p	Vzvڷmh֭[vfcy_bVV*ԼDNH)
+JI?WVBQ*K}[C)4UɴkZi;CJ-q}PSxQh})NoaC\"עDYCXq4ڍT	
+<XPӯȡI7ڏ/1`9er}{/N;h4NI7EwҤ)2B:$b'$6-c$S2	6^+Rε;ˌ,'n:4/=CÂk<Թ:{xrs4K\IB"kh$SɫD}i4Q0
+"@UVFI *"WamDk-v?u٤<I
+ v~d5qr$f~%h*nJ%-IL_j|d`'L0 5ӯ./`Ni0J{lu()$r	fU4Ѵ8o2?N.-0oOl-͕Bq# N05'&prAje
+6Z`iUm muUn2I`.4f[=&,lEnM$Yg=J_։OEC; PyX 2wsR8ʯʿqG3;[J･r8wwsjg.j_'y
+zlhB޻?T4ã.R?W(\V[);}V+[V`hXHMȰda_֊_f-zu0@[v65Z$Sl; x|WHPFXN Sai-saZ fCb4屠|5̾j<\,/X_O<Os=r~lljԘ5I\$bE1(8mr ˘nI>dMiMJn~\ʀbf&]\k1jG%SbMGL Gقʼ*mkuiMeGl];ŅD
+ɧcAfjWvqg8gdH9fچanS' qjƽڇ<>N"DvD7C[B!bX70=uu"'&2^K	*~LrI֛1"-4&%hJXB3MBhCM YE
+k绔3;e6ƏIh̸,UB'
+ GR*,4Ҽ)˚|眤E1Xt_Hq/K>;:1bZBӁn<uj6	s/jW,u:_tm}ӟD>[ݴJOx4ߴѿ¥/"	1U
+8
+m6&EvjHJBeZ%19l!RI+PPl}!9KGú]+8[ߢFaTH`$)YiVD*y)&=#rr31ߐN4{9*xI%?w (G=>r~yPCޤoaIφ믿jk?c͚5!7`\_Y,:ɔm򚦂Auȑ0FIDUJ)X /n72%)S:'|?4i$J0%KFJ(K\aZC]ELWn$NdQN3ʚ&
+cFkp	^6J`	;A(ȚDAr-; 5\rwP%{II6tK.|9\Jզ9眗e\r?vo|zW^~M]t~wG_tE٩ҴhuZwI}Pe]BG5gj(%%Ab5	G]ak:5Jdh(*YIV	m^r
+a\HCD!2Wt+wAls6D6窜鮎>PijYG12W.gIg9ZK-~u&m2ywP((r}8TzQ	&7A}xj']:4	fR6b^5__|c>v7˿ڵkGGvV&)Er8p+@I #'rc+ر[T"ec!{8W8.?쪔5	E/{ֳFS5s5Rٰu#$fh^kn4-_ϊ}]'-l?nZcj[qH
+#C{dZsrה8%D=8θw9TzUGK,/͕@)ͳw׿ >h"G?:}-Z,Xླ`#w_w#d	p"mbSH'8*Ca(ȭrS9m$ hT3(ꕊbfPcSuzA.9t G&i#4̹	:M̹Zt9W%TL"ZWٷmgqR%SolȩDd'Nq=bK?1@^L%4	`_sY^	6eXXXXr%RccBJd)%Nqƽو5sB.Gd \ R*o/:L}e\5Kc}9B:qa[xæ&Zu$0{NkMCǔԚihY}i\xQWj+|tu+]c9aO@9a{VڸV:fmB\Z"fJJFl%mZwy,<t {sp-\([Y!2ݚWRM)=\ݮm;OvZ>79wqny~~~4RJJ_jճ>|4E0^_ixCC؉fQ6dS)9NUEQ4b*Tľ(S0k15r_fӂTP-#n4g	'@i	yҴ-ؐ:lu'ٯCਙbJhAZSEE@jpĹ^Ձjvwkf^uhakgDc}NY }yӖ,Mob槟~@/ Zuy7\xᅟ'V^]=s[~9hޟL%qbXB㎗dKtaZ*,Л2"4Yh D4B*\YnSY{&6>ޞ;LA{Q[X`Ȱm66jQe%SfQTa,m:~ǁqBՌ7nBh	PKhZ#!%I8EG,Fwڔan1=;蠃Ȇo1"
+\"6x踩e3+G`P(u^HmȚPjcAs_lC9ч5vUAc8B6EG9^Pop8IGMB7Jv(י5H}$X㠍+'p8hM}$`zJQ9<Pk/HԇS^κݚj]n;v)/˻=MB'\oJCѿntʗ(H"Cf).El|MyF/P1.,az@	'LL^a4MhlDzv,2CF	X_#qYq0p4~D:A[xHs$Q%{l8a!h5="$R mHJiD ? 0.a+:.LAQwhB̝Ѫ(JF׭ ΄4IG'@ko8.C9syk_a5g?z(zS\n)C7iA̡v	aPT	43$gM.kƙsAٲih匜zpjN҂U9"&fv56i
+we~?-kҕl\Hrl=~mыQO(έ2Jifq'My1/1#ES.#8U2ZZWN~
+-21
+/3yp4`TʥK	9M*Y6efm'waÆ_~YgyZTU[O}SUw{>Y\5UJ2Ĳ8uِ4ܑ#֧
+>:5J)&a+wS˰§[+Iy]F l RV5P#i`&^4WUlyR,ˈDGIźB*464ͷ,ϑ2&|SYrWUcwR%F0H-l ;F8D9MJ>ƒS%duMglv~]v\?.`w?gOӟ< `=jeP uN$_B$n>	TKمGʑRiR8H4ɣ6R&XLsCfA5VԂA]KZQJL5 ۤLLg`t'
+`ka&l|$|5bmtk
+oRk2a5Q\o܅}9(f)"lP9(A)J)+5⾯8=oYh4˿??v$AgyF)e KX:)*RRv)`|^ЦE
+E%S*)Mf;OXĹh$qBI\\(e
+ʎ^U*Ijfá@IWBdM
+lMz1VUNDBD1n9#يXdA)^J=T
+OYxniR)6P}-qՋ;\cp/,=~C4__O~s=]z6"~??m4{=mfm}_߶.h]wj:u/0^=Sēqg|U)F%41{8Yl
+O;ˍq7S()+ؽ5;'Ƈ;:",A/a$VG~D`6rLk#P4htOChxIj{E4@Kh*Kv-ɬ{[AY9pYEVM-#$	fj7q.@PI@шX ;."RH'{*q	JDZcxխ|?[9;˵^~}{;y`*Jm+^=K>Ï=/~[owީǯ;.g}9?;4>Fnx]0ړಔ)ahS.uڕLr(~-b{9,X@EbHjXl
+(8Ȫ׳0g۵ʡTiyG ֍	օW\,}M*?IV#muӴTȂ""o{d/vuVU[e+WKs6KCYߛ~pw/8*uE+2įor7f)KjWMxN- f.H*{&PHyUn6vmwoo>y~ώ~3	1ۘ~<M7ݔC=K/裏n7|GY/. (K,ؗAK^_dYǖIM,qX#zz\!pu\>&{
+]mj͢Uz^Eakm]&2+qOXuat(qKNj~t%*GU<)"MQ+h~?8M2PJL*ƭw߮q?f:%RH_q;qя~T[v?N8ᄎE<mowykW\pa6??w~Csveo?ó%XVO@CO`](sya$8>g}Y"%a
+zs7ҽ=jsX+Tfw|	B[[ĕ^Grն,DƧP1Lŧm[}2E*u;U*LBͶ[ՖA;~7_Ol͐ԈEULY-I$el8dvgTlϢǫ_C=_nݗ޽fT=ԶJ{xO~^x_|Wys\4;찃;<O=Tv'wL	Nol#N`R}Pv83+{Ȇ>q:iSָsPi/S=u7rRxSk[վac8g񯅾1KKkڠoVbW_naۘkD:֢AxAJbU(:#uSN&a`*"cǨ#$95Vڽ춢ȇ    IDATЕ(	U'+>7C9dw_f{줓N[_x'8kfvkkuұ{g/};1 	TpYii;$"M |$@BՠՅɕ(RnUގSW԰pӆ56XM"~e -"1tIv>l4:51lVeAsGmIF]qR[w/oìjЊ(b:gQ(עqUTvR`TiJ㦝Ƹi&7ߍ;]##g_<䓿?vSg3׭[o;N=8㌶mx=wSO=38[X]jJe/wWU~z7s;ci-<;u04Hn#MVSLkC"5=);#Wa1-ӥns#ɪКqHVHK4lHJHI2c0'9"RA|Nڜ;oZD2)c5v_r^MS5_m0̛3jd&TR$vEvNfrtC9u2*DKw߽wjW[oUc*=K/=×??C~-<Wzʕp-r'xGիWǋV :196B,N9ˈeaj	kS[(ɪAT
+9-VrΕt\a+ 34VAD)&$mjLU+ݪicVsiSMܲ[매PcbV"ڏeMkeZkwD޺cB"FБ#h $DbhH49[Fc1iK{U5xo^f{}Iz\Ukewg<15W2FaT Na+*'$ PЗ[]:m9$0ѴYwp00,ħYԜ6~.AV_׽/3O}o^>Emz'uy~^}׾ 7o|^pwsϋ_걂[TaROƨ,:pǚZǋS[xFG}|e`4&Rh%_TRg2_]dQ35?1I	Ȭl[3HfIy]|cFfe%׋I
+20<`sVF5$l(_eH0cj^@ӝPKN^}@]YTnɮ\Y1xOO~뮻{x>.<W_WWϟ?|9z}u{{ o~r)n/}K|_ ^>o}[}{ͩtAx5;E?=-KR&\*ѮW7kP,L_Ň7%o37{#t􍥚SAan 1G0SlAR%q$8t(,W)})7ZD}V!ģTpCyS)r٧єW?.\"<tJsM37m&2w Otۮ #I|}Ƣ쮋?ۇ?˸׏q	~_e_ewu^x@ϟ|`XVۯ>Y*8Eݗ^:k2F6\OEm_et-Q
+ݗ2yѷv([dR[s{kֵ
+;\ۆװϺJhixBbU4G=OxJ'~M[Erag	v\	5LݫjD]-(Xm1xv_˷L\-	GϢy'=N<X0Gۧo~;d/_Oܼg?ٿ xW;|[;>9jY]OnY[)x,W_YޣWڥgu$wbX+1hAmUjj0MvtE`5x*ڈhdằU+ی%tNBSR5L/lMc<'/A
+NERě}ՒDYi(5Xˁ"{X:MsA
+F0ELԡWZ򭌾3\p4Kuc'n~{{WW+ruDۿ[[%^\@Gߏ˨Yvނpn,AtgR7XXc)V7wOɥ~m5O)o.*svQ|]@_EV)nVV^CNgC52TZ)w7q)4ХnY/M.ٔAt  ֲW1*Kgηήy\u*z.0VͰv
+Mw+ݣ@
+_	G]COsG3J<iO{衇y^Xf}׎6V}g\^Mo]Cei@;LOʀ)*cpn`!I^UQSg5śf0tL^8qV|U"Ii|0=,`fQGH b8$"Fw"RDut%ڞ'Յowd íܣRSlJ=XpJ*|ewQ[_0o{ۦi? {o8OO%d^mcQz9_b9,UFUS; /z#Lyִ,߇}.#q?ՊUprʙ6s(*C2#Xp9NUD:j\T!C~n.T3^v E1me2R[,MEZPBmhYURZր1UV מg+~Hf7꜉\ks'I>/c{׻u}%/;>3;җ[}jU^R߯4^ԧMiթ,XP`3v/TkʵLOd-uc*~_@:^Kp[2G0=Dbr$uBȚ$ItkH)ϑ|zNUX%U.5ٔ}@$YN9 &J3(tq!H`ѴMw QvRZXYl0pk nV}B "]0g<?)OyJ;^˾kV['p,tF1nz4)K݄}{bP*WVU5^.(dABGpbaoD%Def*SX򿫴_D5X3(KbJ0jp|`zoB?eNqz˥dV*+)eTų*-5.3 cQw+@LE&iS"Ie]cX`TvЊ9%VFW_I\6={sl_%_Ryӟ~jײo	g@fPGߤSj}"RЩ+m
+7eo~W4%ф}.tMYj ->K|@UjSN.DfD7+1q+<%8KKBm*U}@}Wojϴ:4l=J3EzJ[+h01r)v߈*L`b{דicA9 "Ǹj?Vohڅ؎Q.ԮDJoJUNID~AmXSo\5pF\T&ՙd n5p֕&c,F5rV>)a.T2T,q¹W UJ}**!k+R.Wm%zQ-aJj+P3bOeM3+N%UrqyfE*E,+2zv!vDU;ri>s5|źjk3ԦttU*^z#IٱV"
+MCARȨةMaIRjM6TaHֲ3c]3IBჀ0S)d06V拾]1zd!+m]bNݾinܷ͠kZ@J!d;M.B#ʿkiM=j(w(kƨ&e|f<>/}7~7#G4w}wݐlrGUv+G{`U`hYRMmAl*@QrňshAiBo .ݽ%8bt:oSy`v{cT.۰eR@D-NMɻ	n*ͩ!uuH@%Ah*lmMo
+W@TZkL!JaU쾎P)c8BVdv4K;uԌ2 Th\ -P\JΨ3lo}[~ͮ5an<O8ܔR8M<ni)d	kjd^mY5T_Jj˺Y\%5zW8woYbS(f/f4%V@F>% ]+oGg8PaU#jufhMWFpXRqJlr1ȲWbуn	SA PTmH'iՠi4$U4LXYhN0T]fz>eҖ]ö'{5_5gnj5VWs?!=hRa+z*ʪT*^"y(1G6Q'?B~
+M>_&80ڎJ`KKE<wxޖu	HPw%>M mEFKOd4(OM!RSx4'W2e]fCqXqY	/zM#|ɌNYBէ@1P6>-&]Yzp[{Lmd?,yO|O{n^ڕ+	uϸ'2r}	ʲ㟐W>8DlVhnU4-VQlYJoєRp\_'$R/c\Ż4ܥ"LLb/R[ܥ>-J ,S!RO;+z~[˔m P)~j%zo2U_QS/E溰Yf]AԢlMb0u.J_%9\[V~'~' |۷}??ɟ0f7	7c5'*O-ۀэ[jHټi	ݚhtiUh7ZnU_vIU3_H;&e>T9@bm7N&*s
+gRD@o3~AQqabȨW3MSC*W,C/E}-|vˬ߼ 90:~7Օ3,ըpVKien(/evUI14IwJ-KlOO<r lk{ax]lcPV;3m(]61T
+շv.#Whjg;[4#jfok61MM'I*g~f2i+Kx!%81ejA|TEUCOi0X1T4X[:yʝ{
+PTI5M(4o@Yo@%sZiD",+aP:$Æk<wӟ4꯾ b2/{8ՁX;MuIx^XVSyիlB=jƫ$'WrCXx{!=xlpZ,]y]mT~>ZѲd]c"* FIJ(ӥ&*ouI6PwSL6m)+doT:*jZhM37j7k^ꀭ.xvf46aUJFEH 	O/CJ!maVvw~ysn\[e-uo0z'g?/b<'n4?1&.¤FkL}BVvDEЬŰ*6})ҊJNa6X
+?dv`[ eg%+
+Y۲Y/`rjR#Ix<HUbR0+hښ$ښhŠQ6]R/$;#hڪ~ZWj1ոL%qbYMIg΂,^լ	{me	hLLJAP3)I(nI+&@^*c>X=O~n2|]؃b0zrVV\¦#yuJn?-#gIymP.\ӣb|bjH.?E`e\Lk铯NViW֣oĆ@S|M̢ <DY4ְ@jXԎ쾄tuDxmKiFTeÄΩn%UP#UU
+bBӌ	VY9LȾ҂keAZ\'nIZSi<[qs'yEg<M8tYpq6:bץZjk3A4CTڪUWOb.ኧVV&g`W|jZBaUR5c5{KFiMq	Uat$UɔD ѷxh+
+CN\,VF*hK	m=]-<6%CR[K8gF'b꓉)#SY+PFgdG&-wBc;_3J짉9ԞY]`&ږ٪ۅ[-溏	gb{kZ:%6]1u8u'k4լZwUpGSÐ_+MX3n.Ho.Um	UTrGZfRHj~*w[ؿ$mRdn2\ilg!/*VV;e\d%D _MRfgj&Y-T+YRgSsΒ"KB#'(Nb(,_"|+fY}Cwu׍.yUgxEg.ssGN?Eh)~mCERg:"YHnkqXCifx~9^5Cx`S5f)YOZCjN+Q$x3FtHgw|h^ρS}_ԑ̘UKR=53^>O 5'nZ4jd+Xᫌ"KRу婉Yp^sA*ٛ*^JYRtܹց?{r}"4&aw?ޮO[G!MghkV*j/yv=oΐxn;buڝ"R7VAʵ*fXV#kρ+#]Xɱ!qpDiG˱(g3ۜ4Q Φic*>Wi3ҩPxUvKǠstԔ h+/-*eU}%񪆪T߈-,8l6[jF?@z:9QJ-CtVRF7ȑi8:%.SU۽[:e{oy;q||3C\tjvhiD~a5lӔT9¤HR9!lHjEQh+Z,S6Π*N    IDATZWb*)n]EckYHsƪȾioy,`iJzƂ Cꮁ~hZQSI4j7(HVpΩiΰL$5bM5%"NV-HhnhtI;|CIvɜB[yO)-{WU~}{߷|˷U2IW?=	tmxa*Q+7{%T^=VQr:b.kܥDehB4:_rw6ZL^[8j{Ku6MIƣe*;ұ,uAIMciI?^-2̨R9+D}BЀ38'i[pE
+KWӽʻ}U;߬'qc<^58x6WX%2ɂpo$▥~{}_ZY[]FM>::)+R&jL}-e_h|Ih*	2m-(sJJAM=`'mz*D!
+S[FYʲd&Tt޽g^ꘚsK!FNt~SI5J,J"0$n	̫2דSU*aK)#+
+PIM3#
+1isMpD]骙#ȫ6Ah̟JRhVq7]ܑiqpK3n9aBacE[>_ܹs}s5ސ"pv[-TatjCڊ\^HaQ/<__f@fpMjp8"*.ÌP-$j[cOTEgWA^a!ptϥxHmeyfv~a9~;J~PdD%P*M3گ"zwsΈ3quft<kg-"+eIƋ\MLU3SK,vJg@uxV2GnU_"5֢E߹*Vo~|}3XگYxCgja<i$%e .ԥɲw)Oˑ.7WQ&ONF9{ò"*WW*oc_P\SF'Lhj޸kȵsD$M_ST'TDT0t[9S)Nl nȢ0GTLu
+jkYi&8VT+
+{WUu`:ỪgAt	\x=qR$n`'ܕ$s|{~/{s1+zt}U8fW.;I)8wii8S7Μ6*lD0v5$MU-P{Ehhe1Fg\{ZlSs5{30̕1gyG)-ʚZ0ʋo&ru15Y|\L5֤L 6t< pʈ+ДWM.Sڙ3%|3osJ')q)|WCT0t0[G#$C͔UboeöVW??mmյU*=ASwh]ދz/\C}cSj>Z|c%u٧I_uŬIdq0>l4Roc|:xn):c\ec]	gwMhSh8ڏ[jJ­EJii-~CZ6RĮOޠ*WwT+z2-T]L~#s|TU;භP؂Xצ62hvi͠U_fk|,N,N]S${KWc4Kl>7ٟ+]8e^Vя`t#;gxf+e!%v.H	Fn%RNUgZb4lr68tȫ6K=Y2y}IN <ɳ<7:d,~zoQKcuYʖj&{TF_n	!Z$nNܦ#BlIK>*;>֬DO"TM˙(˹_3>'p	MWIb~[J%Vjz%R[uRQn0OΚ"¡EPMRlӔf:mU6|˵[:T7ʚ^mU9̉wpT!VgMFn'ን+vFf<ƽcYR,V ƄaBDԨ:.V5X;T!DsBM^4橒ހsQtd~v6I|MuH^!I)iat<z KCLES#'bL\ W$dk?gRG*GTgY܇sn=X55\0١SHOLlXҔkWvJ)!/?k|CIsPT=0NjZ_Uʩ
+kc)VXE`elZ%EBSMU}'F_9T@UzeءZme<FFS.`Bl-aInjsقaɰI$uCxpnp5Y1b1Iك+x4B@ip"5t	pI2AT=xdVc&<8BѴ1ӉR晦VXIjpT7sVCnĮFz+  jC92ZX-7UYބ1KmJCS.lřIÊFWY[XIQmWȼ9N#J8X;%^_tV饩<JPk7EG+{}S]78SLF_ER}&.sG#|ռC0(`.5[Om'pR&#] ^	pXI"\i%DC<Am2ZVmm}p{nd\	&YTL-V`Cv[5N˙9fF=V+hhj(MÌt*4df>k@Sr!\*^{f*hni5JaIUTB@Sax|Ij 2&=qrNɌ]6G-b5-6Y~iH)IAaA^NZ\Nd*Vrx#E ! gʹ   n'{7\Kj*!rmLL34.Uo)V%j(c5s4ݑ}2VpiJ)mA_#m!L`%MR-3+T]R͘J/]ӄeOS`N?7ifJ(59dLHUO;~g()UUCs(	X +		X!P~t7y2"6GӤBC$DL#MGIe˙NķvzիHn><ϼ۾;㳟#pJNTqgԑ;qik\k0_VgxM˔N/?NʛU.^Y]mOͰtv-&R&)5sS^`?HjWxki_ZJҾ3~sQ7TL7/<%NK\$3<N>Ngq<Ow<ca'ӝ]ű\.qWBxbEBz%sS"iKM
+g"xrd/T˻ꙷ?~ooo}??WiV9f&OMwuܹusQX4"gctMۀ@6-Rj|9\eymFee4ޘ6y|&ڰ_cku!{ٿ(kB|`dQ5ux)D\G6hjmBlUԚ9Juo#o_nXH}|g$`N8%NӑYi073JNSW[*ܩ)O)V#Vt*huq:8؜*)EP詋볠	픾	K
+`b'Vz//>|75yzֳ>򑏼%/aX5NV|+m̞& JLÀmm-w=L*SHJZ5	jcC\M}sB5xlDi63y*mj_ʻ$iOwR5׎JFLY-2ov7$KyeuRZSEL	Zu(8x@\dN1,(8tIu&OFX=!	DË7 ),FRp4msDCH+։Gk*tU_ኘDVp"+p-∵Qւ5kb-pgp3m5)"1DMxX!$/]*"{~~9yN>xrr}mo{[z]w}~G?EZɲIToeZv?hb''Ot:*Pǫ⫋?k)uaICWQ&kh+Ǵ5UÌmK5Nx}P6iAhxJ}{3N́TOB[s+`RRM4 <2+!N	yl_&EaS	7) 3+%/_$!D048J6t0+m]2.U_J1
+|*_5D
+[=*
+Mߝ%jukGGG}t;3;?ύ@#IjnE:|ױ=&iZeV;^[M	,%zttyC;3H=҃stJ\yLYdD94DfF&Cj2/!	Ze'2ezf5STj8LCvnSYqN0y)j(j(LniVANl43LPXܦD8ኲpY#	X[QJ݆3ʿO@'HBTd仔 #8x5쾰z`jg>GfڴIuuRlu: j}X;1#͡hr`g!S#-v#CJ~CSsaf.Uc3( h\EFjs;t:0qo Z}	d8hIl5[|O#?/Q
+`bx$HY+|OdmjCs\y@8*Gluzf[|sZi]k %D/)T/Ip)S!+z>_U_WO#[>#__?{|fjH驊<`phUOX]jp&a'<LBeICUP j_8+H*Pb5g8˿4퀤
+#4}hQ~U.EbI7]Z uTnΡEDxQ_mل>i+`,a8!%Հɋ;e3mMJkߥf-uK+zFpJL5d GV;＆)Йc:)4JJ;MzFd{}j{^O|"_o__=yG^Wx衇>O}7nKmu25x;P}q"L%rgRAP;UHx8v#¯ՅE;XV9U'u .W|åJ}(_5<0iu|:^7Eǋ*q0⃗
+iT${))0z,;cq$`KLتTw1z"BLB Q멌vif\Bփaէ>O}S|3_ 7o|^pwsϋ_쪐QMU⬇m3RTdMM|DTl-\o
+YaÄ!fk)>=L(USt:vډr$	0IҔ<b,:WJMAȊU+t((;>`#)TC|tCmhKEM6􆂛Uvdr]aV5b~BJD [V"e%<+eB8om!s(^2G"!?S4*6׾~[裏{>`hNY[1ԬV'{+EO#6O/R=Zꠃz.XR~WѹgҰv[;|1v@axv[Kf^"⨠	gTlS;ߘ__.TQJoH9!I݄`x<(5 : &"T*Fϖ`wV+[Ȗ+`V){8ajOfx#m1	I Dh+D'pjHݗ3[ň-Iԕ1}%DQJ6 l-;js;3ħxH@9"^U;/;x|3QW*yGC	9})WZ{HX0A+cQ9L"$8Lcc`sIp$r8k`>Zd%pUށ8)tUL`B>5XE_k0pmTaޥFфS6KZUtC^ 6	>O/qbC>Nw!l)5°lץ_.-bєCRD$0tW!ǝ#ɤφ0 :}$ qYA\YcߵAHzL7TU_&UduZ\U_><Xlӧ%5Q\GgSo-TNC8	ڪԃ`ZrR;ӦMRUP:9&YzL=/U/RT!yjv*Azj&Dn/GVOSLhJFWr_XIe2<7ϗ)=	Hд)ឤIqBanU'ǯJ^n-%֘`j.^-58YEV8ϩNT 
+y`cեSj<0(v
+3m:sΫmw\+x[L7܂[aj7"_ϥa@	e*%nmyUT` $MA !O>hypx!HB0ڪU5 Q[ZV(jl.GXA (rN"$	BC#i]_?"LXnyS6g&6^i!>j'7ک:T|qwLR6-7 >YrmtIcq9!
+y6Mv(+Fo+rSc/TRmƥ%
++ݺM/:^SyR7yԹa'$'X=uT,[UǻXeD-fA^hh9'oTjem$^pATY3e%F_cV*OP7"ql==xMvWsa`}1&%yeY7lJMשK04=͚HC^ُl֒GvXu=N'MCt4.j.pu
+5fPdH4BE@v0tfL
+VMJqd%"pisRHjbΥ/2IU7,K#ZZKrqs7\fT
+p6s
+gL~HO?.-ND@Gɪo)=ܲ"pLO> ^({?@    IDATMmՎOb"HՎ_4qaŵCXA-p6pX;d-u'{ԑ=TUjdM5lMƑ*p-6`piY38MLX;OJNSUgS;VQ`Vܘlq9,WVOz
+
+8&2zCH#Af3sA'Mc3zBfFݩjdަjlg-7qx>yù3=\OqdR_m"G:VU'SI+:V#{
+ם{>ߧR=Qj(ʩ5QUq'BRCL%N/SJ.kNGJrU~]Y=+=xI5`X_7/ZJl9#-13Gi|ux:@^ߧє<`5\15]
+erbmΣp6;;r峾֙\ MM(:bQ6ZwCMXP-`Bsd@s%iTULϚFt-pxW~x0pt[>9ZVki5|QX;5]2A
+S(b8Nx1ulfՂmyͣ#uz׻/RD^W$ovuAFb	|ܕ؇hS[+#N@lR*f8?ӆQYw	,Ne\;,eκȮkTjedY"ӧڪ'É>t02f"yj
+2guPMԪUv/6'>H:|ҧOO/{ie0N
+Nגq6I(J2S7 /38ku V/kTt-4dY<!!4&+ؤ251LmhRk; .OQҭŲTWɬ#SkUSd(,3QEX[8u3bMIr)9R?Sx4Q5Ә"|OST	yq|ܹǈK`iXNԥp&q*d]/:@Y%CKrU$4+N8r+9*IfƇ%mfsȪx}OGT5^d&gt>\Hq_QՎG%˶jԌ
+D[[s!XIq@[I._&Kvm!]@\VT
+ae,uUM5VV_A
+bfq\ygzn6$F2J.g<+8'[h9klR3%kV:'O+pR;L/NV!N#$:L_]*!2wΝw2u3 -ZTJ:EpopKPArq8*Jp+DlN;jycwj1I_B?TzR5mRNu\5vL]vsٯz)j?Tm5zOV"6AɈhDSWVhRlu֦).,bBZt(@ՋܖL{Mu_<)bhZ**6؊x)r;tǽt_6>)-^x؞4h8jd߹AE73՝6[5dB^~%N04,ь!f#XIgۺ^xڦf5XTF`,!YOly`k,?nR,6qWTdUpX%GZ%ZKv'J
+EdFH?)_lnVHdLI	ЧÀ\}ˢKLtxI9+R,iVQEnڌ|m났GjUeo|Rn{GTNݯwg7"6Ɖ1%]aMnU(|ɤ!aNV3|oUBSq
+M!"4vՐhfVz^lB^ɤY'38%kbYX,T=ȿO[J)K30&V<r5E@kj')ΌT,pc#G}q >VhZQU];5Dj0dEhD#)73,`}+)X?N,GnTKK<ulSQ*ݢ[n.LqVIIn˼&aă[4I_<\X$W\j50S	,4"jBmub%7	AD`Δ`3>:X-KKYR^IQiWvR:C&kxF;VuGk8ʺᐒީjfxZjj">5fbLA)kY	}UoآiuUwLVU\žTjm(a!\@U3rY[JӒT`
+m~m`jQC0[8,\u؜u V/W>lׇє}z,VݎqI'2 Z7!f+t|4OJcZJHR+kN~{5'V5E,笥*:9eMU@:;'#pw櫉T^z7-d!+s(D4=.p!p*q)$;J>v1aP0MUߤЋqC38Է-oy[p?l׆f
+V2W_՝6BvuIjMQ^-T8YTnY`/mc3X{z99oV"с3p
+_g҃s
+	zjqBXp%SuQwNp
+|-:_~z)2ßF.>D3Hi*+BTbzW`l[CR9C	1x"PhY>57vvx۟ZR sQzavФ2aU:2j`Nsqr2Ӯu~a`l(7)JՍi@7Ҁ9pwdpENVՐl [)	dm T&9K1@[!Z/l-10Sp932?}_ezVHi*-1bj)+c00mc`1rQ>.81m5jdq9wQ]7=l`p*g'pɅ@J~jnf7R>$HzөdMZXu5npagwX)XOJ	d\CSԐĀx\.M13eŦT@щ7f8'@8V87$ʯQqz؞d,mENd20eZ\9#,NW*'wjplC7a,:zr7E**Y	*QJI78 ("9j_MbhZi֥:Ý[av5/0w1}ρkzq<!odۢ4
+>},E#H=-$[6l),l\*V&zz끭`=ٜ^WRӮK -UGNyv}c
+iUƻxMXȫl6]!hW$cbR"0ב2`@ӧcbLO߸mpCN0$@[
+ݫj	>̃Ӽ
+WتA}#.RRkLPƈŲ^ ]	a{GbahWP7P½SrefɁxd\ nٮೇb<JN2lQ5ն%)\g-|KnmY5m6ʵ-K(c1=Snt{ρ5 \Knj UuMũe&!@ښb#'W@Ɣ%Krv؞ Js8{+j29EsI]pekQ'"7StY gΫysHfx{615-7u5MPJT|ՇUspp݆)Բ9j#$h 7*.C
+0O5WmKi[	M)6NJi+-u;a"K6`4_u5y&ϰmD#u\Հ3kYxmқiӁš[}
+(;O_Sas%Vs顑WA֌k0G{
+/˨"hb!' p+xI-:~(	)I@O*'jV fT\وՄU/ntk~}"Z~>ORS9 CsXke8ǝr)2	QWlݸ%V#fzazebj|Jǘ
+9`g%V)i?W&ٝ#:L}#yM֞AsvU:E5}Ķ{+whg_u~@Vhgz99MeœnI[L`U|UX?	|H&eSx;y!nC:٣&p&ٟ/Ni?<W3d<.aN+j2LT=%+׶a61rx}}즭`	J#%;-Ix>ss7qKOLjknb٬d+_QNh<ݒiTe`@o^r.|pYX=lbWz]"*z&Q$Buo`kFg_TA]YmH|eWsyv>l2[GBY~G[=Ifs8C6[Z߾jpޟq'V3`<.NΦه,<!,(g|X$#<Jg}k|yl *cb3f~E]/ƦvO20LGm?,WQ?r;Xe>j{N/09sպ"--VpVa{2+jZIwK%*whd8|#*<3rxN1M0Z?aʰ4D*eQv`yKuQx̏1 &]3{c+-rCi9H?JP+Ew:5azUv@wrn[>mWRпt9aU5 .~;uw(j$J.^4hնU>7ҥww9\_`"rBC"\jNJ&Vd_ik-^0>!KCvIFw#jg(JΕv[]m[+(̿RELCLcaPn_E%@?e/_	Yf	ku\!;h+U]Xx ]{!/8yg"3ce#YW46r?cƁW/Iv(lqqQ5hp$p~ON	 cݑϴh8 8"4rւKg&pV㷋qF	|x//_^|mgw?l7$Y}"w?3.߇g~gDrPQ0dQqi,R!kv8vd"CZ%@3{!TK)g-j4A%VʿYUUq>0geb_ESS~ l2R;%[{P}.m/5EP^zww~wٟ٫_pw])"x+y^8~n$\]W>xYz¹㹰CYsGȵɈZ(\
+^go!%M5,eJ:L$E'(;x_o7vK/`h?b9l]lalcq)BlFjP6eA eEYL󲔝Ls&`~#'cKoftww&Wŋvۻ7yk ֳ|%/y፼)kˠ=+׽LՓQ;c/Yl鷱-0>3-9uz%*7enV0WѪo:N@>F
+:ڝ$Eo- ~)in#`1+xT&[K <1#*a<e ;P 
+s5B=,;!INOO򔧜;wc؋_pگڏ~x)uӱ'yU^$?"+[ږ6TkaOhKե3~S溊;+	m6ҹ*EʹlO!'?B$aals>c~cW"	4Q6]f%GgSzP
+vAP4],U:,z@XgW|9ճo=//؏G}t;3;>7:~Vgr9cTՅ]4q_7ҕY@Oa5Ka,p`	ѐ׮5G))8	&J\A`YCVD4T. p:xǉŹ8F&d9W3~*$lO0_J<2'?l٪O
+pbkÚ/:+_Ѫo=9cXp7j{Ճ|Yzp ֞K43to?wd}Zv6,]9~(4SP)%Lg(zoRD&p%`%(
+9!hN4F"0,Iq9fD|2*V2')㒁U:7l+pLjW<5\[>e|X=99K.?4=#6<ȗ~闎Tf;+`,~JT񕦥ȨZ7>ˮP;3D*pml	(0tgF`@SS<'3eN	0+`E5,->㌯z W5Ug*ѝ"[Z1׀Xs*	M)9&&VhZ[dU		_8@G&SkJFv}/|OOnpy{G>W zO}S<:~xoͫIaE_GFZUa`<'؈`J3f`.JU(6v+	ZJ/%%~*E	Pl'p:b`%X"89rN T|`V%p7>۩h8o	nLpaZWK
+jr/7jǗoxmǱmi*@~4TcIdJI2LX>}3	7Mo|_}=J ,-viN'_}0ǿ*3tTlim__Q#9B|jEcɰAJ"O
+k!GVѰՄ'srLMM.tpA!3 i`jPL>*AުXĚaKY\<`* 5P旎    IDAT=M% LX=99? ?O?}k_o}G|p& }?V(}eT
+op=0ԀːٔPut# ~(0h 鯑QH@D dN0Jc;$*G5x#E)ǂVSgB1hſǅ bj\lUGp/6ZdZ 06UUyȀZ5Q)	ME+_,Kj;w񖷼-oyeqTU17xFܚArKW:1i$kV툔才#5,YZʬRRBjUk"kG"A>9&D0`8ks,U<'Mc .%%EgQ75ofͷ&P YKX	VJnADdՃe'fT4)=?pvѻ]GYJlfVþ՜$}ZmMQD&bݑ_;R0(1QJNb4U2pֵ"#ʱ@" ('8k:Bf񷆤zŒx@O'p]Ɓ(\PW}?ڋF pRr(ʈȚδUI TQVFW". A_r3זhjʦ		Q" _XUgBaRWt@R@dat`EZ
+6 E6 t"-1l`'gZiJ8I6'7nb4jlAʪ4%UoJ>Dc_EeDE!+##ZX	$CR
+L-K3.`- g7V{Xn,W}[S FJ=vpp`iL-$WGA՟PͧQ>&ܴe%VE`֠Pւ# csS" CYý	ۧҮ<-Dc'+(eֲsrbUo6mhjT@)`D*uKw,,OQUU)ja;a{2")'{ȿ+-1O\س/Q(]`2UWkaڼ$,&í':*$@L5!͆8AIc1 DX YNH7GÿJ#IR5lg)7!KJzRx9[ӫnmIu]TRm51@OS?
+%2W[f{Cm' S	bMTaT\Sts!bg#RwPjҰ˸uVLT21wB G?pl	"XdNJ0V):pV	c)A9)A6l @$)V`HJ%TNpq	\]V"0LuΨHoRw`%jkHۻ )YX@EP(DD(PBQB% &Wa
+,4hILgh`(D1QE]vq}o?fgy,ܙ힯spaP5'X㟁Q0ip>|VL5^kdI8`"WjR0BO4*q%%'8eTLaisl_k[jMUsm+[U,r\˾vQb442wlX-wh
+MUBӀ!FI$UU2y
+V$鍌F&P1J8d6lj(5mlV-H|t@XeV,&y*{|dAPX]Nxb.%ƛJMVc<ӺTnQ@Y)m>'N˲l5 1IEQ #$A`	!"@QPbELVʁ@6̄ Pjhk etUhnwKMBY]S?]sIpAS4'	wI*VUUb%Gv:V#|a}|~zfW;Ed
+DFCT3,=WUN;+fC&P
+$
+'dDIq1TMBAHQbb1)HҢB	`F1``  sc@$"4@Ti69^Ҭ4vۢT٧J7_PRMgmUU%p܉;11BNu@$NeQ.YvuDXeg#Tؖ:56
+2&E{Ga- {&$L(zf"~:Ӵ(JLRXuUwDy@I\bL@Q6@#FCwwAx VS.J@qklo'5fH0rZ\';gv\J"PT<MIU3׸&d#B9|m&Y'>Z3~9;qCܚ	81$
+{6-\=,PGdTK	r)띜5cq&ޓ4xJLkvUq+t5`u*#
+fҒ%
+ D(1 LN@
+G+P F!D@P9aiJA,X%/c|͹G@SPUXw?:(zZjܟZUբL-67eVVh0_{NݱZſ_ӴGD	)Yk|xf:oMup:8˗
+qMjJXB-L3lL<@( 7! F( gX!
+:ZD pv9MB)#nNj&UENma	a2AF4y*ctʷ i@\0?-][uKS*/('yXmeT\p?NIS31-36(_-x^g7
+*
+	efUbz_wGrqa@@\`syj2D#"
+ʑT,FH~! *Ah;(R8VÕ$*Ħr>"=0	lV?dH:k ./ESuUSUCB l˰%}^Ԟ܅
+n]L#T%XpX{մ`\f!q&2*$.6+ޭD5XfZ)	(C!Rjh*$_"ޑV*Sl/̕!1XMg*߳`bpTWL\JROh
+07*5	$DM"qQgčBjF)ZCt$^6qaMdP8ZfC%UZЊF4XGL,xZ$mo[M67+RֆH&+ "^xθEPb"Y=6Yބ8{::'qjd{A'Xkj:p] 	4URS<uQP%	)Ra$ոV*0@7$hAMqUjKUc<C*!S4E%pQbHy@(BܷKFSf[[`x0\-	l];+@M}v WJs0Up=@na9'\&V٤mB$Z5S&F8lR "ր*0RI`4˳`P@AbpD @@Õ
+Lee[ZD)r0S+%KT)Su?MUj*7_u$5olsnAm[mgI~6=jnsVNQm%pc@-'U Ԭv-jӀx/%J(e;&1FSgN61Faº5]*т!1"$O $.i%*[% )6.
+ʄBCkbS(fz`$Syԕ37حVLj@5)\CR@R :ǋTW+dmjamh=IR#l]ԶP.R'ewwݿv≜`C(%Z-#c9CSIWFd{3LpgOɹE^,RM2Y"+ MPIeͤ˺/
+2*2E+		Tyָgo"'7*RvMTb )t%)@K d5
+e}cո%ȺGyQY%	sjvv;cI\.3[/3:_k	PNM"HeбvHU_DĂIjArV{Vˀ`feZ'pʄ8 *k/2!$.3	E2S8bjTUY㪪ei3\4tsTO(JP\Vç,rvU́NhjzѢVu!>ڟS@ʟe #b#$W"v`8ěZ2Q办M7SLy45ᣛudNA8 >]	f椁1Y`&DN*+H9M[RaP Ic!-% LY6 `! C*RPX*
+
+QH#LTGTG\&D DDhh"BHl"D2ٲ|_'o&X"\JNYPBG$UK|WԴr:ܒڪl%$ḥrlQ&9%Y2p1iۗE1Rj&fo
+$[Rf!UvWl1xHXvK$bD8n.Y&,AUWe}%`
+B Fh֍7TAvFVlT3ڈH!".LeTB̑J8"dYHjM:FؤaDZJfE~
+}mUo}Jk7	l 
+]x˚tFb>5JvW_R)Ļry5)spP3~$Kdjj5ºYpZ6R(5]W32J=_N;55s"+4LJSH0HJ"ȼ(b	%VMĂL\jIܣtޚ])	%JLC:n"IFl !Q*	Lz%pj{Lny.lNHbv&Ƭ:4! 8K5m{mƵ?휰K[9ndS3}X5s93ȡLJc_J檓FkwF'X5pa~}$$ $"AhCS[%,sh	@ePl8	FDW*?Oa*i_@Rdc{aRXjREԕ4FMAYJcRj'2J7vlpWG)/zAR9IR!2ܔ*q<0Qjpș%3vsw{Zh9H((IRd4@
+22L|KI5j⬌˟./h?aݛgr2*(H#Erf(E KD&Me`FD1G*UJ*#&Y5PI|-0*\U_
+h!Y|̀ϘjL4N#~]WD{wh(
+󷙡oȋ:@eGV+L-]@7QJވْ\1W1`(gUʻe3	kyiQ3Y&S& z`ALH2Nt"x(_~	+{"NCLAZDDQ$b"␨@,ihEBD(MQ#q#("n?Aj"@e ".)ai,c"#2kId/ЅLYdl{M"䆕I]r*`X6[%Ր.2kljqinv?o[p$٪[b7cOKT%2gXN/;j27xrപȤy۶C~>ɤIy`eB(QܿjgvުU%fFII&RIb+Z]5 #㠜%:""$dm
+=!GH"#"bp&j),!XEVV&j*it$֒"v$Ndee57:6doZTPx_װho?vϞ==[#U~7ހU[MvRkL5]ҙ,0[Ud9f
+# t2aM3M$x!.g4ۤUSvnPYdH:}Jfr8슸ȪV#v+!`	ADz
+ ҩ`:P˞"t
+`
+p)dBPܯLD`dJ>k&5*0.x)	VI:Ø*%SMrBlAju%Kݻw2dO1*\2ذMĸ+oB8-Fd'oZI묜49<+mq&"hq$$p0fYBPpץ.	$X)jp5l}K8m`e5Pem--(hoDD78ҼPI\7؄ e`*̈HRG&1L)ˎ\dժ%)Y2Ho&~WN5ji&d)~Y-IyZ/\sxiv7VwnWdXoE$0եhgf7YnFUT,Z`>7-^cUJ:9/G}#)$R}ego;.E+Y˱PMjd[wzpJ$@MPfD23K|TXo;ڮXV6]XUPL.梣MY_J''jtP;I\}5jȑz﫯zƍ=ݟvfJXfI?t7l"YWOhsP+TQEmVJI&9?߆w~ȃգ0Ŕ+u>Y
+PU>d9FIaY(&l,wac3w*XjºSg&GJ' T 	$FHC%Փ!*	[S?d^l`5dJH:I<֬4%n%1p!q_e|ZJ,8믿~GN4I>җԯ_1cƬ]vV@DG3Q T6;
+G|P*%Țdpn2r+PǅvYuQg֪SĻb zX0X,x5T2嫔$1AjCfi	?K)-ݨoMdq:29@G@^̂ $@}BQgX"G+4`bݻVׯ3h9`캉K))1r!>SVeqN-S2L%,4$i'bׯ_`ƍV[UdTh+%%K0״P
+BZi&|fb^Lj"-b=ܼS%p^Q2;zo17d]<Fvm,QYu[)q"gWpv?5Fg%Uޘ$*UdeU(YL68Д;$0l7p][Fk;!ӿ@ڞP&#0kL(!3ϧ&ȗb
+s. VInjrVRWP='Z-
+C_Wݺu8p`˙pauwVM^  IDATeB*4nA\7ew<j&|Vl5岔XJ,Z&dڊo<Y
+mS\6ms>GW#kFخѮBbIpuܱR=vLO,ae`Q>ZL&q^W!L'OnvUSYΪڕ@5ްQM>#tJc+j8P[jĔ)SN?>x͚5f?~|=$pn`Xۃ	|OhZhYpOaU3xskܤ)O`in4zLUsfMs*Mտ=m5TP]!Gl'(#e
+ I0?b'KdA.4"~(N98_*HH`9wIj%*?dđL%sg9#WjdMaPmsĂan8&,j:eIֻB>/>ӧϤIfϞd`F/4|K[-_IR4ozp¥vca5 #GН9f]4'WXVAȱg{o4A47XdƙTᦤCJdRLgv,ZHLp# uO-4
+IR&A4bl8$UO4WX3`E s&:&u]ɱ5\.a~5b{}͟?wX,3*ԉ ++.^lA
+nav?SC:G0a Ά~rjB8Og<g@])+he^\Ռ5x@YK4IURI+dIA
+X*WnkrLB˖ʳ<F%-)YXΜEĪT&{"IL	z?L!<1F 
+=SA[P6[MﱕpUO,ܲoo/:gΜn?<餓͛waU2~a,YX2	Ө 8Y,MCo^BMY݉1Hgd36jSds~CN8O\jtǸTvd59
+P̼q¶jĬGܣ"sȁo% .꺍i:KhVDm)ŗbi=iGk2ar, 	=6ʒJ-0pk
+|߅Жkq|dlOf͚uw4hƌ7VXQ(*$9AVU詫ay?pՍpX++r۽"mCzh`I%o126ЦU)rgWMY4f}ONuXLu˫MVH4:YMMe724UTpqU2f"g(z
+Y)q2'_D:}J -Iٙ2s4Ie.&)[%lc[8ʶj+e	~tArr ~	6I`Dav㗿9 dɒO>/UU6CƥV{T>){_i"fh{tSD15G,Im\@?NNYm] S2ȜQZ\*;Y[(YhBH[9& 1*aBwō"V5UϦrMޙת6G1[Uٌ+'f'J:dM*NVPjm'ä$kzJ.;JR!<hرcʕW]u|اO#<rٲe`K%"fhB~c4I._V'w{	MdzvD3kBvjz#)ůC4) WN/94m4mmCU*w)i'?e,QNA866,5ES=
+ ?fGeS).SERmOSZ~X=Ydu@֝dg 5uUp.H@7t4Zj].2Y''5oβPp@,*>npV[~aEpsoԝ.mu.`E#kovC}fU+mc r&IbK/fvpkm|9Eei&%XQ͸&A,.|/	L$FձXu(l݄2pk{v:TNWY-Tȹ#YF?hhhV1ˌgU05a)SgN
+\L.'(/2m<	%'T!>PDVk6zQ(lblٲÇ{-2dɒ%5k֌1>|F֭}஻4hЕW^{\R>|ъj'O޼yW\! .\1Շ>|xÇ>|GÇ>|xXÇ><ÇV}ÇV}Ç>|Ç՚9sr!;w>S7nX>|x׮]{}y}ͮѷm"zвx	&tu;SO>dԩ|p.]p±cvޝ6mTX#o!o5~VEi{uuuǎ;xr\S+:t-3<Cv)Ry5?3nmeov=&OxK׿W~gYf_^WWq\sxwk-䭼/Ҽe݋}DաC^|r{ӦMDSOj,Xg}Va6mԷo6Wl/{ԩƍT}?OvSSS.eKipjR[HM\niϿȇfy.[n:u[y#f2e̙3^Swq_W<ѣGh+?S}͛7!oĈm߹sf/^е՝xb۶m]wݏ~#"[y7B.vаynmĉ/>cO>zW~7z衽z1cƣ>zwܨ͋_>{XuY}kkׯ-[FDms	&\z ={2eJ|ƌ+W\hQ^x3<siH=[hxq_KR;z饗6o|ᇇa;z5l ݺu;#y"Z^ycc㭷_bܸqC3g>sVނH}xXƳ:룏>z+FWZRGT͛W˖1rȵkmf^nʕ"S"B|Nz"m{my^y啱cs15%Bvi|%KVرcG;Jkkyً-
+p޼yW>}z}}[oU+7nGdɒ7xcƌBa嵹?xŊ ,^xŊ۶mۉ[\y_yx۽H}MM7ԻwﺺcǾ5?<}v+wd_mbw}^__?bĈKo޼yɽz?~]%Kvn2W^i^ s>|V}Ç>|ÇU>|ÇU>|ê>|aՇ>|Ç>|Ç>|xXÇ><Ç><ÇV}Ç>|ÇU>|ÇU>dtg0f̘9sK_:#rO9>Wê*!C.{]]݊+ƍw1sGumYW_}i0)3f̘={vEDê ]w5o޼@CCԩSO~qǵ«766V@qƵiӦE};iѳN8 O>?|ÇCN6khhO~5\Gmg͚շoN:4h o>uݻw3xwy6k֬	&t[nٺuI:w|G<#$afϞ}g_-Z$s=|.]9_veDԫW/쫮O>]v=z~k?={Wo}裏^|:|]N8y	,X">	#g}6`3<T*=y]q{~ׯ_xE1ԩSϾ+'p'(?t}'h۶m{AÇpɒ%<zo<G>⮻?Sf~Olذ<x^+?nV3g>[nݵ^{Amݺ5&MtECٳwܱjժI&8NZhы/xG\s5ê?0. m۶J/O>$C̼~z"zKĚ2eaM>| d_,]v}{G۷w^3G2L<}С7psϕ۫VCɇ7tI'd\xqX'}t{-[f,uYfڵcƌnݺr/Y><:5k:(#GGAD߿ =z ^z饯}k?M8wI?qڵsXro8l;w{rCf[l1755U(V}tӟO7o[ǿ_~:udȈo0쫯P(&L9rիSO=Ԕ~⧟~
+?og̘8lߺuX,&
+!a[nҥKTgV}K/nxw̞={ݺu u6PGT0`@TM6_7lذyOs V^-7lذa˖-3gիWPHRAtt6hРħnݺAȇ>|6mZ/" 'N<?|fNֵkiӦ]tE<țoO>K.dҥ+V<yQ?߹~}3gꪼ$p:S__/rշ~;lҥG}Խ{/.?^|ӧ 71f̘e˖ħlٲѣGȇ>| Ez;d__wyg믿~^xQGueIF8wO<O5jTϞ=|AypD~uuu{<x	\yn+C:uם>}oݯ_?#Ν{%̜9s7}Hcbĉ믿ޢOoǎ?="Q9(}Ç_~yEsέ)<wOOχV}̙3xժU7x|lՇ>|lՇ>|Ç>|tH    IENDB`
\ No newline at end of file
diff -Naur ns-3.20/src/lte/doc/source/figures/lte-ue-rrc-states.dot ns-3.21/src/lte/doc/source/figures/lte-ue-rrc-states.dot
--- ns-3.20/src/lte/doc/source/figures/lte-ue-rrc-states.dot	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/figures/lte-ue-rrc-states.dot	2014-09-17 20:03:14.000000000 -0700
@@ -29,7 +29,7 @@
 IDLE_RANDOM_ACCESS -> IDLE_CONNECTING [label="random access\nsuccessful"]
 IDLE_RANDOM_ACCESS -> IDLE_CAMPED_NORMALLY [label="random access\nfailure"]
 IDLE_CONNECTING -> CONNECTED_NORMALLY [label="rx RRC CONN SETUP"]
-IDLE_CONNECTING -> IDLE_CAMPED_NORMALLY [label="rx RRC CONN\nREJECT"]
+IDLE_CONNECTING -> IDLE_CAMPED_NORMALLY [label="T300 expiry or\nrx RRC CONN\nREJECT"]
 
 // Handover
 CONNECTED_NORMALLY -> CONNECTED_HANDOVER [label="rx RRC CONN RECONF\nwith MobilityCtrlInfo"]
diff -Naur ns-3.20/src/lte/doc/source/lte-design.rst ns-3.21/src/lte/doc/source/lte-design.rst
--- ns-3.20/src/lte/doc/source/lte-design.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/lte-design.rst	2014-09-17 20:03:14.000000000 -0700
@@ -503,7 +503,15 @@
 of periodic wideband CQI (i.e., a single value of channel state that is deemed representative of all RBs
 in use) and inband CQIs (i.e., a set of value representing the channel state for each RB).
 
-In downlink, the CQI feedbacks are currently evaluated according to the SINR perceived by control channel (i.e., PDCCH + PCFIC) in order to have an estimation of the interference when all the eNB are transmitting simultaneously. In uplink, two types of CQIs are implemented:
+In downlink, the CQI feedbacks can be generated in two different ways.
+First one is legacy approach and CQI are evaluated according to the SINR perceived by control channel (i.e., PDCCH + PCFIC) in order to have an estimation of the interference when all the eNB are transmitting simultaneously. 
+Second approach was created for better utilization of data channel resources, when using Frequency Reuse algorithms.
+Frequency Reuse algorithms are applied only to PDSCH and they can reduce inter-cell interferences only during PDSCH duration. Since in legacy approach CQI feedback is generated from control channels, it does not allow to use higher MCS for data channels and to achieve any gain in throughput. Generation CQI feedback only from data channels would be the best option. Unfortunately is impossible solution, because PDSCH is be sent only if there is data to be sent, and CQI needs to be generated every TTI. Some mixed approach was implemented. CQI are generated from control channels as signal and data channels (if received) as interference. It there is no transmission in data channel, CQI is generated only from control channels, as in legacy solution. 
+To switch between this two CQI generation approaches, ``LteHelper::UsePdschForCqiGeneration`` needs to be configured: false for first approach and true for second approach (true is default value)::
+
+   Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (true));
+
+In uplink, two types of CQIs are implemented:
 
  - SRS based, periodically sent by the UEs.
  - PUSCH based, calculated from the actual transmitted data.
@@ -542,7 +550,8 @@
 Let :math:`f_c` denote the  LTE Absolute Radio Frequency Channel Number, which
 identifies the carrier frequency on a 100 kHz raster; furthermore, let :math:`B` be
 the Transmission Bandwidth Configuration in number of Resource Blocks. For every
-pair :math:`(f_c,B)` used in the simulation we define a corresponding SpectrumModel using the functionality provided by the :ref:`sec-spetrum-module` .
+pair :math:`(f_c,B)` used in the simulation we define a corresponding SpectrumModel using 
+the functionality provided by the :ref:`sec-spectrum-module` .
 model using the Spectrum framework described
 in [Baldo2009]_.  :math:`f_c` and :math:`B` can be configured for every eNB instantiated
 in the simulation; hence, each eNB can use a different spectrum model. Every UE
@@ -690,7 +699,7 @@
 Integration of the BLER curves in the ns-3 LTE module
 -----------------------------------------------------
 
-The model implemented uses the curves for the LSM of the recently LTE PHY Error Model released in the ns3 community by the Signet Group [PaduaPEM]_ and the new ones generated for different CB sizes. The ``LteSpectrumPhy`` class is in charge of evaluating the TB BLER thanks to the methods provided by the ``LteMiErrorModel`` class, which is in charge of evaluating the TB BLER according to the vector of the perceived SINR per RB, the MCS and the size in order to proper model the segmentation of the TB in CBs. In order to obtain the vector of the perceived SINR two instances of ``LtePemSinrChunkProcessor`` (child of ``LteSinrChunkProcessor`` dedicated to evaluate the SINR for obtaining physical error performance) have been attached to UE downlink and eNB uplink ``LteSpectrumPhy`` modules for evaluating the error model distribution respectively of PDSCH (UE side) and ULSCH (eNB side).
+The model implemented uses the curves for the LSM of the recently LTE PHY Error Model released in the ns3 community by the Signet Group [PaduaPEM]_ and the new ones generated for different CB sizes. The ``LteSpectrumPhy`` class is in charge of evaluating the TB BLER thanks to the methods provided by the ``LteMiErrorModel`` class, which is in charge of evaluating the TB BLER according to the vector of the perceived SINR per RB, the MCS and the size in order to proper model the segmentation of the TB in CBs. In order to obtain the vector of the perceived SINR two instances of ``LtePemSinrChunkProcessor`` (child of ``LteChunkProcessor`` dedicated to evaluate the SINR for obtaining physical error performance) have been attached to UE downlink and eNB uplink ``LteSpectrumPhy`` modules for evaluating the error model distribution respectively of PDSCH (UE side) and ULSCH (eNB side).
 
 The model can be disabled for working with a zero-losses channel by setting the ``PemEnabled`` attribute of the ``LteSpectrumPhy`` class (by default is active). This can be done according to the standard ns3 attribute system procedure, that is::
 
@@ -2755,6 +2764,39 @@
 
    Sequence diagram of the RRC Connection Establishment procedure
 
+There are several timeouts related to this procedure, which are listed in the
+following Table :ref:`tab-rrc-connection_establishment_timer`. If any of these
+timers expired, the RRC connection establishment procedure is terminated in
+failure. In this case, the upper layer (UE NAS) will immediately attempt to
+retry the procedure until it completes successfully.
+
+.. _tab-rrc-connection_establishment_timer:
+
+.. table:: Timers in RRC connection establishment procedure
+
+   +------------+----------+------------+-------------+----------+------------+
+   | Name       | Location | Timer      | Timer       | Default  | When timer |
+   |            |          | starts     | stops       | duration | expired    |
+   +============+==========+============+=============+==========+============+
+   | Connection | eNodeB   | New UE     | Receive RRC | 15 ms    | Remove UE  |
+   | request    | RRC      | context    | CONNECTION  |          | context    |
+   | timeout    |          | added      | REQUEST     |          |            |
+   +------------+----------+------------+-------------+----------+------------+
+   | Connection | UE RRC   | Send RRC   | Receive RRC | 100 ms   | Reset UE   |
+   | timeout    |          | CONNECTION | CONNECTION  |          | MAC        |
+   | (T300      |          | REQUEST    | SETUP or    |          |            |
+   | timer)     |          |            | REJECT      |          |            |
+   +------------+----------+------------+-------------+----------+------------+
+   | Connection | eNodeB   | Send RRC   | Receive RRC | 100 ms   | Remove UE  |
+   | setup      | RRC      | CONNECTION | CONNECTION  |          | context    |
+   | timeout    |          | SETUP      | SETUP       |          |            |
+   |            |          |            | COMPLETE    |          |            |
+   +------------+----------+------------+-------------+----------+------------+
+   | Connection | eNodeB   | Send RRC   | Never       | 30 ms    | Remove UE  |
+   | rejected   | RRC      | CONNECTION |             |          | context    |
+   | timeout    |          | REJECT     |             |          |            |
+   +------------+----------+------------+-------------+----------+------------+
+
 
 
 .. _sec-rrc-connection-reconfiguration:
@@ -3521,6 +3563,541 @@
         \clearpage
 
 
+-------------
+Power Control
+-------------
+This section describes the ns-3 implementation of Downlink and Uplink Power Control.
+
+Downlink Power Control
+++++++++++++++++++++++
+
+Since some of Frequency Reuse Algorithms require Downlink Power Control, 
+this feature was also implemented in ns-3. 
+
+.. _fig-lte-downlik-power-control:
+ 
+.. figure:: figures/lte-dl-power-control.*
+   :align: center
+
+   Sequence diagram of Downlink Power Control
+
+
+Figure :ref:`fig-lte-downlik-power-control` shows the sequence diagram of 
+setting downlink P_A value for UE, highlighting the interactions between 
+the RRC and the other entities. FR algorithm triggers RRC to change P_A values 
+for UE. Then RRC starts RrcConnectionReconfiguration function to inform UE 
+about new configuration. After successful RrcConnectionReconfiguration, RRC 
+can set P_A value for UE by calling function SetPa from CphySap, value is 
+saved in new map m_paMap which contain P_A values for each UE served by eNb.
+
+When LteEnbPhy starts new subframe, DCI control messages are processed to get 
+vector of used RBs. Now also GeneratePowerAllocationMap(uint16_t rnti, int rbId) 
+function is also called. This function check P_A value for UE, generate power 
+for each RB and store it in m_dlPowerAllocationMap. Then this map is used by 
+CreateTxPowerSpectralDensityWithPowerAllocation function to create 
+Ptr<SpectrumValue> txPsd.
+
+PdschConfigDedicated (TS 36.331, 6.3.2 PDSCH-Config) was added in 
+LteRrcSap::PhysicalConfigDedicated struct, which is used in 
+RrcConnectionReconfiguration process.
+
+Uplink Power Control
+++++++++++++++++++++++
+
+Uplink power control controls the transmit power of the different uplink physical 
+channels. This functionality is described in 3GPP TS 36.213 section 5.
+
+Uplink Power Control is enabled by default, and can be disabled by attribute system::
+
+   Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
+
+Two Uplink Power Control mechanisms are implemented:
+
+ * Open Loop Uplink Power Control: the UE transmission power depends on estimation of
+   the downlink path-loss and channel configuration
+ * Closed Loop Uplink Power Control: as in Open Loop, in addition eNB can control the UE
+   transmission power by means of explicit Transmit Power Control TPC commands transmitted 
+   in the downlink. 
+
+To switch between these two mechanism types, one should change parameter::
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+
+By default, Closed Loop Power Control is enabled.
+
+
+Two modes of Closed Loop Uplink Power Control are available: 
+ * Absolute mode: TxPower is computed with absolute TPC values
+ * Accumulative mode: TxPower is computed with accumulated TPC values
+
+To switch between these two modes, one should change parameter::
+
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (true));
+
+By default, Accumulation Mode is enabled and TPC commands in DL-DCI are set by all schedulers to 1, 
+what is mapped to value of 0 in Accumulation Mode. 
+
+
+.. _sec-uplink-power-control-pusch:
+
+Uplink Power Control for PUSCH
+------------------------------
+
+The setting of the UE Transmit power for a Physical Uplink Shared Channel (PUSCH) transmission 
+is defined as follows:
+
+ * If the UE transmits PUSCH without a simultaneous PUCCH for the serving cell :math:`c`, then the 
+   UE transmit power :math:`P_{PUSCH,c}(i)` for PUSCH transmission in subframe :math:`i` for the 
+   serving cell :math:`c` is given by:
+
+   .. math::
+
+      P_{PUSCH,c}(i)=\min\begin{Bmatrix}
+                     P_{CMAX,c}(i)\\ 
+                     10\log_{10}(M_{PUSCH,c}(i))+ P_{O\_PUSCH,c}(j) 
+                     + \alpha_{c} (j) * PL_{c} + \Delta_{TF,c}(i) + f_{c}(i)
+                     \end{Bmatrix} [dBm]
+
+ * If the UE transmits PUSCH simultaneous with PUCCH for the serving cell :math:`c`, then the UE 
+   transmit power :math:`P_{PUSCH,c}(i)` for the PUSCH transmission in subframe :math:`i` for 
+   the serving cell :math:`c` is given by:
+
+   .. math::
+
+      P_{PUSCH,c}(i)=\min\begin{Bmatrix}
+                     10\log_{10}(\hat{P}_{CMAX,c}(i) - \hat{P}_{PUCCH}(i))\\ 
+                     10\log_{10}(M_{PUSCH,c}(i))+ P_{O\_PUSCH,c}(j) 
+                     + \alpha_{c} (j) * PL_{c} + \Delta_{TF,c}(i) + f_{c}(i)
+                     \end{Bmatrix} [dBm]
+
+   Since Uplink Power Control for PUCCH is not implemented, this case is not implemented as well.
+
+ * If the UE is not transmitting PUSCH for the serving cell :math:`c`, for the accumulation of 
+   TPC command received with DCI format 3/3A for PUSCH, the UE shall assume that the UE transmit 
+   power :math:`P_{PUSCH,c}(i)` for the PUSCH transmission in    subframe :math:`i` for the serving 
+   cell :math:`c` is computed by
+
+   .. math::
+
+      P_{PUSCH,c}(i)=\min\begin{Bmatrix}
+                     {P}_{CMAX,c}(i)\\ 
+                     P_{O\_PUSCH,c}(1) + \alpha_{c} (1) * PL_{c} + f_{c}(i)
+                     \end{Bmatrix} [dBm]
+
+where:
+ * :math:`P_{CMAX,c}(i)` is the configured UE transmit power defined in 3GPP 36.101. Table 6.2.2-1
+   in subframe :math:`i` for serving cell :math:`c` and :math:`\hat{P}_{CMAX,c}(i)` is the linear 
+   value of :math:`P_{CMAX,c}(i)`. Default value for :math:`P_{CMAX,c}(i)` is 23 dBm
+
+ * :math:`M_{PUSCH,c}(i)` is the bandwidth of the PUSCH resource assignment expressed in number 
+   of resource blocks valid for subframe :math:`i` and serving cell :math:`c` .
+
+ * :math:`P_{O\_PUSCH,c}(j)` is a parameter composed of the sum of a component :math:`P_{O\_NOMINAL\_PUSCH,c}(j)`
+   provided from higher layers for :math:`j={0,1}` and a component :math:`P_{O\_UE\_PUSCH,c}(j)` provided by higher 
+   layers for :math:`j={0,1}` for serving cell :math:`c`. SIB2 message needs to be extended to carry these two 
+   components, but currently they can be set via attribute system::
+
+      Config::SetDefault ("ns3::LteUePowerControl::PoNominalPusch", IntegerValue (-90));
+      Config::SetDefault ("ns3::LteUePowerControl::PoUePusch", IntegerValue (7));
+
+ * :math:`\alpha_{c} (j)` is a 3-bit parameter provided by higher layers for serving cell :math:`c`. 
+   For :math:`j=0,1`,   :math:`\alpha_c \in \left \{ 0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 \right \}` 
+   For :math:`j=2`,   :math:`\alpha_{c} (j) = 1`. 
+   This parameter is configurable by attribute system::
+
+      Config::SetDefault ("ns3::LteUePowerControl::Alpha", DoubleValue (0.8));
+
+ * :math:`PL_{c}` is the downlink pathloss estimate calculated in the UE for serving cell :math:`c` in dB 
+   and :math:`PL_{c} = referenceSignalPower – higher layer filtered RSRP`, where :math:`referenceSignalPower`
+   is provided by higher layers and RSRP. :math:`referenceSignalPower` is provided in SIB2 message
+
+ * :math:`\Delta_{TF,c}(i) = 10\log_{10}((2^{BPRE\cdot K_s}-1)\cdot\beta_{offset}^{PUSCH} )` for :math:`K_{s} = 1.25`
+   and :math:`\Delta_{TF,c}(i) = 0` for :math:`K_{s} = 0`. Only second case is implemented.
+
+ * :math:`f_{c}(i)` is component of Closed Loop Power Control. It is the current PUSCH power control
+   adjustment state for serving cell :math:`c`. 
+
+   If Accumulation Mode is enabled :math:`f_{c}(i)` is given by:
+
+      .. math::
+
+         f_{c}(i) = f_{c}(i-1) + \delta_{PUSCH,c}(i - K_{PUSCH})
+
+   where: :math:`\delta_{PUSCH,c}` is a correction value, also referred to as a TPC command and is included 
+   in PDCCH with DCI; :math:`\delta_{PUSCH,c}(i - K_{PUSCH})` was signalled on PDCCH/EPDCCH with DCI for
+   serving cell :math:`c` on subframe :math:`(i - K_{PUSCH})`; :math:`K_{PUSCH} = 4` for FDD.
+
+   If UE has reached :math:`P_{CMAX,c}(i)` for serving cell :math:`c`, positive TPC commands for serving cell
+   :math:`c` are not be accumulated. If UE has reached minimum power, negative TPC commands are not be accumulated.
+   Minimum UE power is defined in TS36.101 section 6.2.3.  Default value is -40 dBm.
+
+   If Accumulation Mode is not enabled :math:`f_{c}(i)` is given by:
+      
+      .. math::
+
+         f_{c}(i) = \delta_{PUSCH,c}(i - K_{PUSCH})
+
+   where: :math:`\delta_{PUSCH,c}` is a correction value, also referred to as a TPC command and is included 
+   in PDCCH with DCI; :math:`\delta_{PUSCH,c}(i - K_{PUSCH})` was signalled on PDCCH/EPDCCH with DCI for
+   serving cell :math:`c` on subframe :math:`(i - K_{PUSCH})`; :math:`K_{PUSCH} = 4` for FDD.
+
+   Mapping of TPC Command Field in DCI format 0/3/4 to absolute and accumulated :math:`\delta_{PUSCH,c}`
+   values is defined in TS36.231 section 5.1.1.1 Table 5.1.1.1-2
+
+
+Uplink Power Control for PUCCH
+------------------------------
+
+Since all uplink control messages are an ideal messages and do not consume any radio resources, 
+Uplink Power Control for PUCCH is not needed and it is not implemented.
+
+
+Uplink Power Control for SRS
+------------------------------
+
+The setting of the UE Transmit power :math:`P_{SRS}` for the SRS transmitted on subframe :math:`i` 
+for serving cell :math:`c` is defined by
+
+   .. math::
+
+      P_{PUSCH,c}(i)=\min\begin{Bmatrix}
+                     {P}_{CMAX,c}(i)\\ 
+                     P_{SRS\_OFFSET,c}(m) + 10\log_{10}(M_{SRS,c})+ 
+                     P_{O\_PUSCH,c}(j) + \alpha_{c}(j) * PL_{c} + f_{c}(i)
+                     \end{Bmatrix} [dBm]
+
+
+where:
+ * :math:`P_{CMAX,c}(i)` is the configured UE transmit power defined in 3GPP 36.101. Table 6.2.2-1. 
+   Default value for :math:`P_{CMAX,c}(i)` is 23 dBm
+
+ * :math:`P_{SRS\_OFFSET,c}(m)` is semi-statically configured by higher layers for :math:`m=0,1` for 
+   serving cell :math:`c` . For SRS transmission given trigger type 0 then :math:`m=0,1` and for SRS 
+   transmission given trigger type 1 then :math:`m=1`.
+   For :math:`K_{s} = 0` P_Srs_Offset_Value is computed with equation:
+
+   .. math::
+
+      P_{SRS\_OFFSET,c}(m)value = -10.5 + P_{SRS\_OFFSET,c}(m) * 1.5 [dBm]
+
+   This parameter is configurable by attribute system::
+
+      Config::SetDefault ("ns3::LteUePowerControl::PsrsOffset", IntegerValue (7));
+
+ * :math:`M_{SRS,c}` is the bandwidth of the SRS transmission in subframe :math:`i` for serving 
+   cell :math:`c` expressed in number of resource blocks. In current implementation SRS is sent 
+   over entire UL bandwidth. 
+
+ * :math:`f_{c}(i)` is the current PUSCH power control adjustment state for serving cell :math:`c`,
+   as defined in    :ref:`sec-uplink-power-control-pusch`
+
+ * :math:`P_{O\_PUSCH,c}(j)` and :math:`\alpha_{c}(j)` are parameters as defined in
+   :ref:`sec-uplink-power-control-pusch`, where :math:`j = 1` .
+
+--------------------------
+Fractional Frequency Reuse
+--------------------------
+
+
+Overview
+++++++++
+
+This section describes the ns-3 support for Fractional Frequency Reuse 
+algorithms. All implemented algorithms are described in [ASHamza2013]_.
+Currently 7 FR algorithms are implemented:
+
+ * ``ns3::LteFrNoOpAlgorithm``
+ * ``ns3::LteFrHardAlgorithm``
+ * ``ns3::LteFrStrictAlgorithm``
+ * ``ns3::LteFrSoftAlgorithm``
+ * ``ns3::LteFfrSoftAlgorithm``
+ * ``ns3::LteFfrEnhancedAlgorithm``
+ * ``ns3::LteFfrDistributedAlgorithm``
+
+
+New LteFfrAlgorithm class was created and it is a abstract class for 
+Frequency Reuse algorithms implementation. Also, two new SAPs between 
+FR-Scheduler and FR-RRC were added. 
+
+
+.. _fig-lte-ffr-scheduling:
+ 
+.. figure:: figures/lte-ffr-scheduling.*
+   :align: center
+
+   Sequence diagram of Scheduling with FR algorithm
+
+Figure :ref:`fig-lte-ffr-scheduling` shows the sequence diagram of 
+scheduling process with FR algorithm. In the beginning of scheduling 
+process, scheduler asks FR entity for avaiable RBGs. According to 
+implementation FR returns all RBGs available in cell or filter them based 
+on its policy. Then when trying to assign some RBG to UE, scheduler asks FR 
+entity if this RBG is allowed for this UE. When FR returns true, scheduler 
+can assign this RBG to this UE, if not scheduler is checking another RBG 
+for this UE. Again, FR response depends on implementation and policy applied 
+to UE.
+
+
+Supported FR algorithms
+++++++++++++++++++++++++
+
+No Frequency Reuse
+------------------
+The NoOp FR algorithm (LteFrNoOpAlgorithm class) is implementation of 
+Full Frequency Reuse scheme, that means no frequency partitioning is performed 
+between eNBs of the same network (frequency reuse factor, FRF equals 1). eNBs 
+uses entire system bandwidth and transmit with uniform power over all RBGs. It 
+is the simplest scheme and is the basic way of operating an LTE network. This 
+scheme allows for achieving the high peak data rate. But from the other hand, 
+due to heavy interference levels from neighbouring cells, cell-edge users 
+performance is greatly limited. 
+
+Figure :ref:`fig-lte-full-frequency-reuse-scheme` below presents frequency and 
+power plan for Full Frequency Reuse scheme.
+
+.. _fig-lte-full-frequency-reuse-scheme:
+ 
+.. figure:: figures/fr-full-frequency-reuse-scheme.*
+   :scale: 40 %
+   :align: center
+
+   Full Frequency Reuse scheme 
+
+In ns-3, the NoOp FR algorithm always allows scheduler to use full bandwidth 
+and allows all UEs to use any RBG. It simply does nothing new (i.e. it does not 
+limit eNB bandwidth, FR algorithm is disabled), it is the simplest implementation 
+of FrAlgorithm class and is installed in eNb by default. 
+
+.. _sec-fr-hard-algorithm:
+
+Hard Frequency Reuse
+--------------------
+The Hard Frequency Reuse algorithm provides the simplest scheme which allows to 
+reduce inter-cell interference level. In this scheme whole frequency bandwidth is 
+divided into few (typically 3, 4, or 7) disjoint sub-bands. Adjacent eNBs are 
+allocated with different sub-band. Frequency reuse factor equals the number 
+of sub-bands. This scheme allows to significanlty reduce ICI at the cell edge, 
+so the performance of cell-users is improved. But due to the fact, that each 
+eNB uses only one part of whole bandwidth, peak data rate level is also reduced 
+by the factor equal to the reuse factor.
+
+Figure :ref:`fig-lte-hard-frequency-reuse-scheme` below presents frequency and 
+power plan for Hard Frequency Reuse scheme.
+
+.. _fig-lte-hard-frequency-reuse-scheme:
+ 
+.. figure:: figures/fr-hard-frequency-reuse-scheme.*
+   :scale: 40 %
+   :align: center
+
+   Hard Frequency Reuse scheme 
+
+In our implementation, the Hard FR algorithm has only vector of RBGs available 
+for eNB and pass it to MAC Scheduler during scheduling functions. When scheduler 
+ask, if RBG is allowed for specific UE it allways return true.
+
+Strict Frequency Reuse
+----------------------
+Strict Frequency Reuse scheme is combination of Full and Hard Frequency Reuse 
+schemes. It consists of dividing the system bandwidth into two parts which will 
+have different frequency reuse. One common sub-band of the system bandwidth is 
+used in each cell interior (frequency reuse-1), while the other part of the 
+bandwidth is divided among the neighboring eNBs as in hard frequency reuse 
+(frequency reuse-N, N>1), in order to create one sub-band with a low inter-cell 
+interference level in each sector. Center UEs will be granted with the fully-reused 
+frequency chunks, while cell-edge UEs with ortogonal chunks. It means that interior 
+UEs from one cell do not share any spectrum with edge UEs from second cell, which 
+reduces interference for both. As can be noticed, Strict FR requires a total of 
+N + 1 sub-bands, and allows to achieve RFR in the middle between 1 and 3.
+
+Figure :ref:`fig-lte-strict-frequency-reuse-scheme` below presents frequency and 
+power plan for Strict Frequency Reuse scheme with a cell-edge reuse factor of N = 3.
+
+.. _fig-lte-strict-frequency-reuse-scheme:
+ 
+.. figure:: figures/fr-strict-frequency-reuse-scheme.*
+   :scale: 40 %
+   :align: center
+
+   Strict Frequency Reuse scheme 
+
+In our implementation, Strict FR algorithm has two maps, one for each sub-band. 
+If UE can be served within private sub-band, its RNTI is added to m_privateSubBandUe 
+map. If UE can be served within common sub-band, its RNTI is added to 
+m_commonSubBandUe map. Strict FR algorithm needs to decide within which sub-band 
+UE should be served. It uses UE measurements provided by RRB and compare them 
+with signal quality threshold (this parameter can be easily tuned by attribute 
+mechanism). Threshold has influence on interior to cell radius ratio.
+
+
+Soft Frequency Reuse
+--------------------
+In Soft Frequency Reuse (SFR) scheme each eNb transmits over the entire system 
+bandwidth, but there are two sub-bands, within UEs are served with different power 
+level. Since cell-center UEs share the bandwidth with neighboring cells, they 
+usually transmit at lower power level than the cell-edge UEs. SFR is more bandwidth 
+efficient than Strict FR, because it uses entire system bandwidth, but it also 
+results in more interference to both cell interior and edge users.
+
+There are two possible versions of SFR scheme:
+
+ * In first version, the sub-band dedicated for the cell-edge UEs may also be used 
+   by the cell-center UEs but with reduced power level and only if it is not occupied 
+   by the cell-edge UEs. Cell-center sub-band is available to the centre UEs only. 
+   Figure :ref:`fig-lte-soft-frequency-reuse-scheme-v1` below presents frequency and 
+   power plan for this version of Soft Frequency Reuse scheme.
+
+   .. _fig-lte-soft-frequency-reuse-scheme-v1:
+ 
+   .. figure:: figures/fr-soft-frequency-reuse-scheme-v1.*
+      :scale: 40 %
+      :align: center
+
+      Soft Frequency Reuse scheme version 1 
+
+ * In second version, cell-center UEs do not have access to cell-edge sub-band. 
+   In this way, each cell can use the whole system bandwidth while reducing the 
+   interference to the neighbors cells. From the other hand, lower ICI level at 
+   the cell-edge is achieved at the expense of lower spectrum utilization. 
+   Figure :ref:`fig-lte-soft-frequency-reuse-scheme-v2` below presents frequency 
+   and power plan for this version of Soft Frequency Reuse scheme. 
+
+   .. _fig-lte-soft-frequency-reuse-scheme-v2:
+ 
+   .. figure:: figures/fr-soft-frequency-reuse-scheme-v2.*
+      :scale: 40 %
+      :align: center
+
+      Soft Frequency Reuse scheme version 2
+
+SFR algorithm maintain two maps. If UE should be served with lower power level, 
+its RNTI is added to m_lowPowerSubBandUe map. If UE should be served with higher 
+power level, its RNTI is added to m_highPowerSubBandUe map. To decide with which 
+power level UE should be served SFR algorithm utilize UE measurements, and 
+compares them to threshold. Signal quality threshold and PdschConfigDedicated 
+(i.e. P_A value) for inner and outer area can be configured by attributes system. 
+SFR utilizes Downlink Power Control described here.
+
+
+Soft Fractional Frequency Reuse
+-------------------------------
+
+Soft Fractional Frequency Reuse (SFFR) is an combination of Strict and Soft 
+Frequency Reuse schemes. While Strict FR do not use the subbands allocated 
+for outer region in the adjacent cells, soft FFR uses these subbands for the 
+inner UEs with low transmit power. As a result, the SFFR, like SFR, use the 
+subband with high transmit power level and with low transmit power level. 
+Unlike the Soft FR and like Strict FR, the Soft FFR uses the common sub-band 
+which can enhance the throughput of the inner users.
+
+Figure :ref:`fig-lte-soft-fractional-frequency-reuse-scheme` below presents 
+frequency and power plan for Soft Fractional Frequency Reuse.
+
+.. _fig-lte-soft-fractional-frequency-reuse-scheme:
+ 
+.. figure:: figures/fr-soft-fractional-frequency-reuse-scheme.*
+   :scale: 40 %
+   :align: center
+
+   Soft Fractional Fractional Frequency Reuse scheme
+
+Enhanced Fractional Frequency Reuse
+-----------------------------------
+
+Enhanced Fractional Frequency Reuse (EFFR) described in [ZXie2009]_ defines 3 
+cell-types for directly neighboring cells in a cellular system, and reserves 
+for each cell-type a part of the whole frequency band named `Primary Segment`,
+which among different type cells should be orthogonal. The remaining subchannels 
+constitute the `Secondary Segment`. The `Primary Segment` of a cell-type is 
+at the same time a part of the `Secondary Segments` belonging to the other two 
+cell-types. Each cell can occupy all subchannels of its `Primary Segment` at 
+will, whereas only a part of subchannels in the `Secondary Segment` can be used 
+by this cell in an interference-aware manner.The `Primary Segment` of each cell 
+is divided into a reuse-3 part and reuse-1 part. The reuse-1 part can be reused 
+by all types of cells in the system, whereas reuse-3 part can only be exclusively 
+reused by other same type cells( i.e. the reuse-3 subchannels cannot be reused 
+by directly neighboring cells). On the `Secondary Segment` cell acts as a guest, 
+and occupying secondary subchannels is actually reuse the primary subchannels 
+belonging to the directly neighboring cells, thus reuse on the `Secondary Segment` 
+by each cell should conform to two rules:
+
+ * monitor before use
+ * resource reuse based on SINR estimation
+
+Each cell listens on every secondary subchannel all the time. And before occupation, 
+it makes SINR evaluation according to the gathered channel quality information (CQI) 
+and chooses resources with best estimation values for reuse. If CQI value for RBG is 
+above configured threshold for some user, transmission for this user can be performed 
+using this RBG.
+
+In [ZXie2009]_ scheduling process is described, it consist of three steps and two 
+scheduling polices. Since none of currently implemented schedulers allow for
+this behaviour, some simplification were applied. In our implementation reuse-1 
+subchannels can be used only by cell center users. Reuse-3 subchannels can be used by
+edge users, and only if there is no edge user, transmission for cell center users can
+be served in reuse-3 subchannels.
+
+Figure :ref:`fig-lte-enhanced-fractional-frequency-reuse-scheme` below presents 
+frequency and power plan for Enhanced Fractional Frequency Reuse.
+
+.. _fig-lte-enhanced-fractional-frequency-reuse-scheme:
+ 
+.. figure:: figures/fr-enhanced-fractional-frequency-reuse-scheme.*
+   :scale: 40 %
+   :align: center
+
+   Enhanced Fractional Fractional Frequency Reuse scheme
+
+
+Distributed Fractional Frequency Reuse
+--------------------------------------
+
+This Distributed Fractional Frequency Reuse Algorithm was presented in [DKimura2012]_. It 
+automatically optimizes cell-edge sub-bands by focusing on user distribution (in particular,
+receive-power distribution). This algorithm adaptively selects RBs for cell-edge sub-band on 
+basis of coordination information from adjecent cells and notifies the base stations of the 
+adjacent cells, which RBs it selected to use in edge sub-band. The base station of each cell 
+uses the received information and the following equation to compute cell-edge-band metric 
+:math:`A_{k}` for each RB.
+
+.. math::
+
+   A_{k} = \sum_{j\in J}w_{j}X_{j,k}
+
+where :math:`J` is a set of neighbor cells, :math:`X_{j,k}=\{0,1\}` is the RNTP from the :math:`j`-th
+neighbor cell. It takes a value of 1 when the :math:`k`-th RB in the :math:`j`-th neighbor cell is used 
+as a cell-edge sub-band and 0 otherwise. The symbol :math:`w_{j}` denotes weight with respect to adjacent 
+cell :math:`j`, that is, the number of users for which the difference between the power of the signal 
+received from the serving cell :math:`i` and the power of the signal received from the adjacent cell :math:`j`
+is less than a threshold value (i.e., the number of users near the cell edge in the service cell). A large 
+received power difference means that cell-edge users in the :math:`i`-th cell suffer strong interference 
+from the :math:`j`-th cell.
+
+The RB for which metric :math:`A_{k}` is smallest is considered to be least affected by interference from 
+another cell. Serving cell selects a configured number of RBs as cell-edge sub-band in ascending order 
+of :math:`A_{k}`. As a result, the RBs in which a small number of cell-edge users receive high
+interference from adjacent base stations are selected. 
+
+The updated RNTP is then sent to all the neighbor cells. In order to avoid the meaningless oscillation 
+of cell-edge-band selection, a base station ignores an RNTP from another base station that has larger 
+cell ID than the base station. 
+
+Repeating this process across all cells enables the allocation of RBs to cell-edge areas to be optimized 
+over the system and to be adjusted with changes in user distribution.
+
+Figure :ref:`fig-lte-distributed-fractional-frequency-reuse-scheme` below presents 
+sequence diagram of Distributed Fractional Frequency Reuse Scheme.
+
+.. _fig-lte-distributed-fractional-frequency-reuse-scheme:
+ 
+.. figure:: figures/ffr-distributed-scheme.*
+   :scale: 100 %
+   :align: center
+
+   Sequence diagram of Distributed Frequency Reuse Scheme
+
+
 -------
 Helpers
 -------
diff -Naur ns-3.20/src/lte/doc/source/lte-references.rst ns-3.21/src/lte/doc/source/lte-references.rst
--- ns-3.20/src/lte/doc/source/lte-references.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/lte-references.rst	2014-09-17 20:03:14.000000000 -0700
@@ -144,5 +144,23 @@
    "Effects of time-to-trigger parameter on handover performance in SON-based LTE systems",
    Communications (APCC), 2010 16th Asia-Pacific Conference on, pp.492-496, Oct. 31 2010--Nov. 3 2010
    
-.. [Bbojovic2014] B. Bojovic, N. Baldo, "A new Channel and QoS Aware Scheduler to enhance the capacity of Voice over LTE systems", SDD conference 2014, preprint version is available: <http://www.cttc.es/?post_type=publication&p=5226>
+.. [Bbojovic2014] B. Bojovic, N. Baldo, `"A new Channel and QoS Aware
+   Scheduler to enhance the capacity of Voice over LTE systems"
+   <http://www.cttc.es/publication/a-new-channel-and-qos-aware-scheduler-to-enhance-the-capacity-of-voice-over-lte-systems/>`_,
+   in Proceedings of 11th International Multi-Conference on Systems,
+   Signals & Devices (SSD’14), Castelldefels, 11-14 February 2014,
+   Castelldefels (Spain). 
 
+.. [Baldo2014] N. Baldo, R. Martínez, P. Dini, R. Vilalta, M. Miozzo,
+   R. Casellas, R. Muñoz, `"A Testbed for Fixed Mobile Convergence
+   Experimentation: ADRENALINE-LENA Integration"
+   <http://www.cttc.es/publication/a-testbed-for-fixed-mobile-convergence-experimentation-adrenaline-lena-integration/>`_, 
+   in Proceedings of European Wireless 2014, 14-16 May 2014, Barcelona
+   (Spain). 
+
+
+.. [ASHamza2013] Abdelbaset S. Hamza, Shady S. Khalifa, Haitham S. Hamza, and Khaled Elsayed, "A Survey on Inter-Cell Interference Coordination Techniques in OFDMA-based Cellular Networks", IEEE Communications Surveys & Tutorials, March 19, 2013
+
+.. [ZXie2009] Zheng Xie, Bernhard Walke, "Enhanced Fractional Frequency Reuse to Increase Capacity of OFDMA Systems", Proceedings of the 3rd international conference on New technologies, mobility and security, NTMS 2009
+
+.. [DKimura2012] D. Kimura, H. Seki, "Inter-Cell Interference Coordination (ICIC) Technology", FUJITSU Sci. Tech. J., Vol. 48, No. 1 (January 2012)
diff -Naur ns-3.20/src/lte/doc/source/lte-testing.rst ns-3.21/src/lte/doc/source/lte-testing.rst
--- ns-3.20/src/lte/doc/source/lte-testing.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/lte-testing.rst	2014-09-17 20:03:14.000000000 -0700
@@ -142,7 +142,7 @@
 obtaining the tracing output produced by the scheduler after 4ms (this
 is needed to account for the initial delay in CQI reporting). The SINR
 which is calcualted by the simulator is also obtained using the
-``LteSinrChunkProcessor`` interface. The test
+``LteChunkProcessor`` interface. The test
 passes if both the following conditions are satisfied:
  
  #. the SINR calculated by the simulator correspond to the SNR
@@ -1007,12 +1007,19 @@
  #. RRC Connection Establishment 
  #. RRC Reconfiguration
 
-The test suite considers a type of scenario with a single eNB and multiple UEs that are instructed to connect to the eNB. Each test case implement an instance of this scenario with specific values of the following parameters:
+The test suite considers a type of scenario with four eNBs aligned in a square
+layout with 100-meter edges. Multiple UEs are located at a specific spot on the
+diagonal of the square and are instructed to connect to the first eNB. Each test
+case implements an instance of this scenario with specific values of the
+following parameters:
 
  - number of UEs
  - number of Data Radio Bearers to be activated for each UE
  - time :math:`t^c_0` at which the first UE is instructed to start connecting to the eNB
  - time interval :math:`d^i` between the start of connection of UE :math:`n` and UE :math:`n+1`; the time at which user :math:`n` connects is thus determined as :math:`t^c_n = t^c_0 + n d^i` sdf
+ - the relative position of the UEs on the diagonal of the square, where higher
+   values indicate larger distance from the serving eNodeB, i.e., higher
+   interference from the other eNodeBs
  - a boolean flag indicating whether the ideal or the real RRC protocol model is used
 
 Each test cases passes if a number of test conditions are positively evaluated for each UE after a delay :math:`d^e` from the time it started connecting to the eNB. The delay :math:`d^e` is determined as 
@@ -1031,9 +1038,9 @@
    to allocate the UL grant because of lack of resources. The number
    of collisions depends on the number of UEs that try to access
    simultaneously; we estimated that for a :math:`0.99` RA success
-   probability, 5 attempts are sufficient for up to 20 UEs, and 10
-   attempts for up to 50 UEs. For the UL
-   grant, considered the system bandwidth and the
+   probability, 5 attempts are sufficient for up to 20 UEs, and  10 attempts for up
+   to 50 UEs.
+   For the UL grant, considered the system bandwidth and the
    default MCS used for the UL grant (MCS 0), at most 4 UL grants can
    be assigned in a TTI; so for :math:`n` UEs trying to
    do RA simultaneously the max number of attempts due to the UL grant
@@ -1045,7 +1052,10 @@
    SETUP + RRC CONNECTION SETUP COMPLETED. We consider a round trip
    delay of 10ms plus :math:`\lceil 2n/4 \rceil` considering that 2
    RRC packets have to be transmitted and that at most 4 such packets
-   can be transmitted per TTI.
+   can be transmitted per TTI. In cases where interference is high, we
+   accommodate one retry attempt by the UE, so we double the :math:`d^{ce}`
+   value and then add :math:`d^{si}` on top of it (because the timeout has
+   reset the previously received SIB2).
  - :math:`d^{cr}` is the delay required for eventually needed RRC
    CONNECTION RECONFIGURATION transactions. The number of transactions needed is
    1 for each bearer activation. Similarly to what done for
@@ -1053,12 +1063,12 @@
    delay of 10ms plus :math:`\lceil 2n/4 \rceil`.
    delay of 20ms.
 
-The conditions that are evaluated for a test case to pass are, for
-each UE:
 
- - the eNB has the context of the UE (identified by the RNTI value
-   retrieved from the UE RRC)
- - the RRC state of the UE at the eNB is CONNECTED_NORMALLY
+The base version of the test ``LteRrcConnectionEstablishmentTestCase``
+tests for correct RRC connection establishment in absence of channel
+errors. The conditions that are evaluated for this test case to pass
+are, for each UE: 
+
  - the RRC state at the UE is CONNECTED_NORMALLY
  - the UE is configured with the CellId, DlBandwidth, UlBandwidth,
    DlEarfcn and UlEarfcn of the eNB
@@ -1068,6 +1078,24 @@
  - for each Data Radio Bearer, the following identifiers match between
    the UE and the eNB: EPS bearer id, DRB id, LCID
 
+The test variant ``LteRrcConnectionEstablishmentErrorTestCase`` is
+similar except for the presence of errors in the transmission of a
+particular RRC message of choice during the first connection
+attempt. The error is obtained by temporarily moving the UE to a far
+away location; the time of movement has been determined empyrically
+for each instance of the test case based on the message that it was
+desidred to be in error.  the test case checks that at least one of the following
+conditions is false at the time right before the UE is moved back to
+the original location:
+
+ - the RRC state at the UE is CONNECTED_NORMALLY 
+ - the UE context at the eNB is present
+ - the RRC state of the UE Context at the eNB is CONNECTED_NORMALLY
+  
+Additionally, all the conditions of the
+``LteRrcConnectionEstablishmentTestCase`` are evaluated - they are
+espected to be true because of the NAS behavior of immediately
+re-attempting the connection establishment if it fails.
  
 
 Initial cell selection
@@ -1391,3 +1419,139 @@
 
 The test case then verifies that the handover algorithm, when faced with more
 than one options of target cells, is able to choose the right one.
+
+Downlink Power Control
+----------------------
+
+The test suite ``lte-downlink-power-control`` checks correctness of Downlink 
+Power Control in three different ways: 
+
+ * LteDownlinkPowerControlSpectrumValue test case   check if 
+   ``LteSpectrumValueHelper::CreateTxPowerSpectralDensity`` is creating correct 
+   spectrum value for PSD for downlink transmission. The test vector contain EARFCN, 
+   system bandwidth, TX power, TX power for each RB, active RBs, and expected TxPSD. 
+   The test passes if TxPDS generated by 
+   ``LteSpectrumValueHelper::CreateTxPowerSpectralDensity`` is equal to expected TxPSD. 
+
+ * LteDownlinkPowerControlTestCase test case check if TX power difference between 
+   data and control channel is equal to configured PdschConfigDedicated::P_A value. 
+   TX power of control channel is measured by ``LteTestSinrChunkProcessor`` added 
+   to ``RsPowerChunkProcessor`` list in UE DownlinkSpectrumPhy. Tx power of data 
+   channel is measured in similar way, but it had to be implemented. Now 
+   ``LteTestSinrChunkProcessor`` is added to ``DataPowerChunkProcessor`` list in UE 
+   DownlinkSpectrumPhy. Test vector contain a set of all avaiable P_A values. Test 
+   pass if power diffrence equals P_A value. 
+
+ * LteDownlinkPowerControlRrcConnectionReconfiguration test case check if 
+   RrcConnectionReconfiguration is performed correctly. When FR entity gets UE 
+   measurements, it immediately calls function to change P_A value for this UE and also 
+   triggers callback connected with this event. Then, test check if UE gets 
+   RrcConnectionReconfiguration message (it trigger callback). Finally, it checks if eNB 
+   receive RrcConnectionReconfigurationCompleted message, what also trigger callback. 
+   The test passes if all event have occurred. The test is performed two times, with 
+   IdealRrcProtocol and with RealRrcProtocol.  
+
+
+Uplink Power Control Tests 
+--------------------------
+
+UE uses Uplink Power Control to automatically change Tx Power level for Uplink 
+Physical Channels. Tx Power is computed based on path-loss, number of RB used for transmission,
+some configurable parameters and TPC command from eNB.
+
+The test suite ``lte-uplink-power-control`` verifies if Tx Power is computed correctly.
+There are three different test cases: 
+
+ * LteUplinkOpenLoopPowerControlTestCase test case checks Uplink Power Control functionality 
+   in Open Loop mechanism. UE is attached to eNB and is transmitting data in Downlink and 
+   Uplink. Uplink Power Control with Open Loop mechanism is enabled and UE changes position 
+   each 100 ms. In each position Uplink Power Control entity is calculating new Tx Power level
+   for all uplink channels. These values are traced and test passes if Uplink Tx Power for 
+   PUSCH, PUCCH and SRS in each UE position are equal to expected values.
+
+ * LteUplinkClosedLoopPowerControlAbsoluteModeTestCase test case checks Uplink Power Control 
+   functionality with Closed Loop mechanism and Absolute Mode enabled. 
+   UE is attached to eNB and is transmitting data in Downlink and Uplink. Uplink Power Control 
+   with Closed Loop mechanism and Absolute Mode is enabled. UE is located 100 m from eNB and
+   is not changing its position. LteFfrSimple algorithm is used on eNB side to set TPC values in 
+   DL-DCI messages. TPC configuration in eNB is changed every 100 ms, so every 100 ms Uplink 
+   Power Control entity in UE should calculate different Tx Power level for all uplink channels. 
+   These values are traced and test passes if Uplink Tx Power for PUSCH, PUCCH and SRS
+   computed with all TCP values are equal to expected values.
+
+ * LteUplinkClosedLoopPowerControlAccumulatedModeTestCase test case checks Closed Loop Uplink
+   Power Control functionality with Closed Loop mechanism and Accumulative Mode enabled.
+   UE is attached to eNB and is transmitting data in Downlink and Uplink. Uplink Power Control 
+   with Closed Loop mechanism and Accumulative Mode is enabled. UE is located 100 m from eNB and
+   is not changing its position. As in above test case, LteFfrSimple algorithm is used on eNB 
+   side to set TPC values in DL-DCI messages, but in this case TPC command are set in DL-DCI 
+   only configured number of times, and after that TPC is set to be 1, what is mapped to value 
+   of 0 in Accumulative Mode (TS36.213 Table 5.1.1.1-2). TPC configuration in eNB is changed 
+   every 100 ms. UE is accumulating these values and calculates Tx Power levels for all uplink 
+   channels based on accumulated value. If computed Tx Power level is lower than minimal 
+   UE Tx Power, UE should transmit with its minimal Tx Power. If computed Tx Power level is
+   higher than maximal UE Tx Power, UE should transmit with its maximal Tx Power.    
+   Tx Power levels for PUSCH, PUCCH and SRS are traced and test passes if they are equal to 
+   expected values.
+
+
+Frequency Reuse Algorithms
+--------------------------
+
+The test suite ``lte-frequency-reuse`` contain two types of test cases. 
+
+First type of test cases check if RBGs are used correctly according to FR algorithm 
+policy. We are testing if scheduler use only RBGs allowed by FR configuration. To 
+check which RBGs are used ``LteSimpleSpectrumPhy`` is attached to Downlink Channel. 
+It notifies when data downlink channel transmission has occured and pass signal 
+TxPsd spectrum value to check which RBs were used for transmission. The test vector 
+comprise a set of configuration for Hard and Strict FR algorithms (there is no point 
+to check other FR algorithms in this way because they use entire cell bandwidth). 
+Test passes if none of not allowed RBGs are used. 
+
+Second type of test cases check if UE is served within proper sub-band and with proper 
+transmission power. In this test scenario, there are two eNBs.There are also two UEs 
+and each eNB is serving one.  One uses Frequency Reuse algorithm and second one does not. 
+Second eNB is responsible for generating interferences in whole system bandwidth. 
+UE served by first eNB is changing position each few second (rather slow because time is
+needed to report new UE Measurements). To check which RBGs are used for this UE
+``LteSimpleSpectrumPhy`` is attached to Downlink Channel. It notifies when data 
+downlink channel transmission in cell 1 has occured and pass signal TxPsd spectrum value 
+to check which RBs were used for transmission and their power level. 
+The same approach is applied in Uplink direction and second ``LteSimpleSpectrumPhy``
+is attached to Uplink Channel. Test passes if UE served by eNB with FR algorithm 
+is served in DL and UL with expected RBs and with expected power level. 
+Test vector comprise a configuration for Strict FR, Soft FR, Soft FFR, Enchanced FFR.
+Each FR algorithm is tested with all schedulers, which support FR (i.e. PF, PSS, CQA, 
+TD-TBFQ, FD-TBFQ). (Hard FR do not use UE measurements, so there is no point to perform 
+this type of test for Hard FR).
+
+Test case for Distributed FFR algorithm is quite similar to above one, but since eNBs need 
+to exchange some information, scenario with EPC enabled and X2 interfaces is considered.
+Moreover, both eNB are using Distributed FFR algorithm. There are 2 UE in first cell, 
+and 1 in second cell. Position of each UE is changed (rather slow because time is
+needed to report new UE Measurements), to obtain different result from calculation in 
+Distributed FFR algorithm entities. To check which RBGs are used for UE transmission
+``LteSimpleSpectrumPhy`` is attached to Downlink Channel. It notifies when data 
+downlink channel transmission has occured and pass signal TxPsd spectrum value 
+to check which RBs were used for transmission and their power level. 
+The same approach is applied in Uplink direction and second ``LteSimpleSpectrumPhy``
+is attached to Uplink Channel. 
+Test passes if UE served by eNB in cell 2, is served in DL and UL with expected RBs 
+and with expected power level. Test vector compirse a configuration for Distributed FFR.
+Test is performed with all schedulers, which support FR (i.e. PF, PSS, CQA, 
+TD-TBFQ, FD-TBFQ).
+
+
+Inter-cell Interference with FR algorithms Tests 
+-------------------------------------------------
+
+The test suite ``lte-interference-fr`` is very similar to ``lte-interference``. 
+Topology (Figure :ref:`fig-lte-interference-test-scenario`) is the same and test checks 
+interference level. The difference is that, in this test case Frequency Reuse algorithms 
+are enabled and we are checking interference level on different RBGs (not only on one). 
+For example, when we install Hard FR algorithm in eNbs, and first half of system bandwidth 
+is assigned to one eNb, and second half to second eNb, interference level should be much 
+lower compared to legacy scenario. The test vector comprise a set of configuration for 
+all available Frequency Reuse Algorithms. Test passes if calculated SINR on specific 
+RBs is equal to these obtained by Octave script.
diff -Naur ns-3.20/src/lte/doc/source/lte-user.rst ns-3.21/src/lte/doc/source/lte-user.rst
--- ns-3.20/src/lte/doc/source/lte-user.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/doc/source/lte-user.rst	2014-09-17 20:03:14.000000000 -0700
@@ -236,7 +236,7 @@
   qos.mbrDl = yourvalue; // Downlink MBR
   qos.mbrUl = yourvalue; // Uplink MBR
   EpsBearer bearer (q, qos);
-  lteHelper->ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());
+  lteHelper->ActivateDedicatedEpsBearer (ueDevs, bearer, EpcTft::Default ());
 
 In PSS, TBR is obtained from GBR in bearer level QoS parameters. In TBFQ, token generation rate is obtained from the MBR
 setting in bearer level QoS parameters, which therefore needs to be configured consistently.
@@ -665,7 +665,10 @@
 By using the class ``RadioEnvironmentMapHelper`` it is possible to output
 to a file a Radio Environment Map (REM), i.e., a uniform 2D grid of values
 that represent the Signal-to-noise ratio in the downlink with respect
-to the eNB that has the strongest signal at each point. 
+to the eNB that has the strongest signal at each point. It is possible
+to specify if REM should be generated for data or control channel. Also user
+can set the RbId, for which REM will be generated. Default RbId is -1, what
+means that REM will generated with averaged Signal-to-noise ratio from all RBs.
 
 To do this, you just need to add the following code to your simulation
 program towards the end, right before the call to Simulator::Run ()::
@@ -680,6 +683,8 @@
   remHelper->SetAttribute ("YMax", DoubleValue (300.0));
   remHelper->SetAttribute ("YRes", UintegerValue (75));
   remHelper->SetAttribute ("Z", DoubleValue (0.0));
+  remHelper->SetAttribute ("UseDataChannel", BooleanValue (true));
+  remHelper->SetAttribute ("RbId", IntegerValue (10));
   remHelper->Install ();
 
 By configuring the attributes of the ``RadioEnvironmentMapHelper`` object
@@ -898,7 +903,7 @@
       pf.localPortStart = 1234;
       pf.localPortEnd = 1234;
       tft->Add (pf);  
-      lteHelper->ActivateEpsBearer (ueLteDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), pf);
+      lteHelper->ActivateDedicatedEpsBearer (ueLteDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), tft);
 
 you can of course use custom EpsBearer and EpcTft configurations,
 please refer to the doxygen documentation for how to do it.
@@ -927,6 +932,94 @@
 
 
 
+Using the EPC with emulation mode
+---------------------------------
+
+In the previous section we used PointToPoint links for the connection between the eNBs and the SGW (S1-U interface) and among eNBs (X2-U and X2-C interfaces). The LTE module supports using emulated links instead of PointToPoint links. This is achieved by just replacing the creation of ``LteHelper`` and ``EpcHelper`` with the following code::
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<EmuEpcHelper>  epcHelper = CreateObject<EmuEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+  epcHelper->Initialize ();
+
+
+The attributes ``ns3::EmuEpcHelper::sgwDeviceName`` and ``ns3::EmuEpcHelper::enbDeviceName`` are used to set the name of the devices used for transporting the S1-U, X2-U and X2-C interfaces at the SGW and eNB, respectively. We will now show how this is done in an example where we execute the example program ``lena-simple-epc-emu`` using two virtual ethernet interfaces. 
+
+First of all we build ns-3 appropriately::
+
+  # configure
+  ./waf configure --enable-sudo --enable-modules=lte,fd-net-device --enable-examples 
+  
+  # build 
+  ./waf
+
+
+Then we setup two virtual ethernet interfaces, and start wireshark to look at the traffic going through::
+
+
+  # note: you need to be root
+  
+  # create two paired veth devices
+  ip link add name veth0 type veth peer name veth1
+  ip link show
+  
+  # enable promiscuous mode
+  ip link set veth0 promisc on
+  ip link set veth1 promisc on
+  
+  # bring interfaces up
+  ip link set veth0 up
+  ip link set veth1 up
+  
+  # start wireshark and capture on veth0 
+  wireshark &
+  
+
+We can now run the example program with the simulated clock::
+
+  ./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1"
+
+
+Using wireshark, you should see ARP resolution first, then some GTP
+packets exchanged both in uplink and downlink. 
+
+The default setting of the example program is 1 eNB and 1UE. You can change this via command line parameters, e.g.::
+
+  ./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1 --nEnbs=2 --nUesPerEnb=2"
+
+
+To get a list of the available parameters::
+
+  ./waf --run lena-simple-epc-emu --command="%s --PrintHelp"
+
+
+
+To run with the realtime clock: it turns out that the default debug
+build is too slow for realtime. Softening the real time constraints
+with the BestEffort mode is not a good idea: something can go wrong
+(e.g., ARP can fail) and, if so, you won't get any data packets out. 
+So you need a decent hardware and the optimized build with statically  
+linked modules::
+
+  ./waf configure -d optimized --enable-static --enable-modules=lte --enable-examples --enable-sudo
+
+
+Then run the example program like this::
+
+  ./waf --run lena-simple-epc-emu --command="%s --ns3::EmuEpcHelper::sgwDeviceName=veth0 --ns3::EmuEpcHelper::enbDeviceName=veth1 --simulatorImplementationType=ns3::RealtimeSimulatorImpl --ns3::RealtimeSimulatorImpl::SynchronizationMode=HardLimit"
+
+
+note the HardLimit setting, which will cause the program to terminate
+if it cannot keep up with real time. 
+
+The approach described in this section can be used with any type of
+net device. For instance, [Baldo2014]_ describes how it was used to
+run an emulated LTE-EPC network over a real multi-layer packet-optical
+transport network.
+
+
+
+
 .. _sec-network-attachment:
 
 Network Attachment
@@ -1413,8 +1506,405 @@
     NS_LOG=LteEnbRrc:LteUeRrc:EpcX2 ./waf --run lena-x2-handover
 
 
+Frequency Reuse Algorithms
+--------------------------
+
+In this section we will describe how to use Frequency Reuse Algorithms 
+in eNb within LTE simulations. 
+There are two possible ways of configuration. The first approach is the 
+"manual" one, it requires more parameters to be configured, but allow user 
+to configure FR algorithm as he/she needs. The second approach is more 
+"automatic". It is very convenient, because is the same for each FR algorithm, 
+so user can switch FR algorithm very quickly by changing only type of FR 
+algorithm. One drawback is that "automatic" approach uses only limited set 
+of configurations for each algorithm, what make it less flexible, but is 
+sufficient for most of cases.
+
+These two approaches will be described more in following sub-section.
+
+If user do not configure Frequency Reuse algorithm, default one 
+(i.e. LteFrNoOpAlgorithm) is installed in eNb. It acts as if FR 
+algorithm was disabled.
+
+One thing that should be mentioned is that most of implemented FR algorithms work with
+cell bandwidth greater or equal than 15 RBs. This limitation is caused by requirement
+that at least three continuous RBs have to be assigned to UE for transmission.
+
+Manual configuration
+********************
+
+Frequency reuse algorithm can be configured "manually" within the simulation 
+program by setting type of FR algorithm and all its attributes. Currently, 
+seven FR algorithms are implemented:
+
+ - ``ns3::LteFrNoOpAlgorithm``
+ - ``ns3::LteFrHardAlgorithm``
+ - ``ns3::LteFrStrictAlgorithm``
+ - ``ns3::LteFrSoftAlgorithm``
+ - ``ns3::LteFfrSoftAlgorithm``
+ - ``ns3::LteFfrEnhancedAlgorithm``
+ - ``ns3::LteFfrDistributedAlgorithm``
 
 
+Selecting a FR algorithm is done via the ``LteHelper`` object and 
+its ``SetFfrAlgorithmType`` method as shown below::
+
+   Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+   lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
+
+Each implemented FR algorithm provide several configurable attributes. Users do 
+not have to care about UL and DL bandwidth configuration, because it is done 
+automatically during cell configuration. To change bandwidth for FR algorithm,
+configure required values for ``LteEnbNetDevice``::
+
+   uint8_t bandwidth = 100;
+   lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+   lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+
+Now, each FR algorithms configuration will be described. 
+
+Hard Frequency Reuse Algorithm
+++++++++++++++++++++++++++++++
+
+As described in Section :ref:`sec-fr-hard-algorithm` of the Design Documentation 
+``ns3::LteFrHardAlgorithm`` uses one sub-band. To configure this sub-band user need 
+to specify offset and bandwidth for DL and UL in number of RBs. 
+
+Hard Frequency Reuse Algorithm provides following attributes:
+
+ * ``DlSubBandOffset``: Downlink Offset in number of Resource Block Groups
+ * ``DlSubBandwidth``: Downlink Transmission SubBandwidth Configuration in number of Resource Block Groups
+ * ``UlSubBandOffset``: Uplink Offset in number of Resource Block Groups
+ * ``UlSubBandwidth``: Uplink Transmission SubBandwidth Configuration in number of Resource Block Groups
+
+Example configuration of LteFrHardAlgorithm can be done in following way::
+
+   lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (8));
+   NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
+
+Above example allow eNB to use only RBs from 8 to 16 in DL and UL, while entire cell
+bandwidth is 25. 
+
+
+Strict Frequency Reuse Algorithm
+++++++++++++++++++++++++++++++++
+
+Strict Frequency Reuse Algorithm uses two sub-bands: one common for each cell and one 
+private. There is also RSRQ threshold, which is needed to decide within which sub-band 
+UE should be served. Moreover the power transmission in these sub-bands can be different. 
+
+Strict Frequency Reuse Algorithm provides following attributes:
+
+ * ``UlCommonSubBandwidth``: Uplink Common SubBandwidth Configuration in number of Resource Block Groups
+ * ``UlEdgeSubBandOffset``: Uplink Edge SubBand Offset in number of Resource Block Groups
+ * ``UlEdgeSubBandwidth``: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlCommonSubBandwidth``: Downlink Common SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlEdgeSubBandOffset``: Downlink Edge SubBand Offset in number of Resource Block Groups
+ * ``DlEdgeSubBandwidth``: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``RsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in edge sub-band
+ * ``CenterPowerOffset``: PdschConfigDedicated::Pa value for center sub-band, default value dB0
+ * ``EdgePowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``CenterAreaTpc``: TPC value which will be set in DL-DCI for UEs in center area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``EdgeAreaTpc``: TPC value which will be set in DL-DCI for UEs in edge area,
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+
+
+Example below allow eNB to use RBs from 0 to 6 as common sub-band and from 12 to 18 as 
+private sub-band in DL and UL, RSRQ threshold is 20 dB, power in center area equals 
+``LteEnbPhy::TxPower - 3dB``, power in edge area equals ``LteEnbPhy::TxPower + 3dB``::
+
+   lteHelper->SetFfrAlgorithmType ("ns3::LteFrStrictAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (20));
+   lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
+   lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+   lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (1));
+   lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (2));
+   NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
+
+
+Soft Frequency Reuse Algorithm
+++++++++++++++++++++++++++++++
+
+With Soft Frequency Reuse Algorithm, eNb uses entire cell bandwidth, but there are two 
+sub-bands, within UEs are served with different power level. 
+
+Soft Frequency Reuse Algorithm provides following attributes:
+
+ * ``UlEdgeSubBandOffset``: Uplink Edge SubBand Offset in number of Resource Block Groups
+ * ``UlEdgeSubBandwidth``: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlEdgeSubBandOffset``: Downlink Edge SubBand Offset in number of Resource Block Groups
+ * ``DlEdgeSubBandwidth``: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``AllowCenterUeUseEdgeSubBand``: If true center UEs can receive on edge sub-band RBGs, otherwise 
+   edge sub-band is allowed only for edge UEs, default value is true
+ * ``RsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in edge sub-band
+ * ``CenterPowerOffset``: PdschConfigDedicated::Pa value for center sub-band, default value dB0
+ * ``EdgePowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``CenterAreaTpc``: TPC value which will be set in DL-DCI for UEs in center area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``EdgeAreaTpc``: TPC value which will be set in DL-DCI for UEs in edge area,
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+
+Example below configures RBs from 8 to 16 to be used by cell edge UEs and this sub-band 
+is not available for cell center users. RSRQ threshold is 20 dB, power in center area
+equals ``LteEnbPhy::TxPower``, power in edge area equals ``LteEnbPhy::TxPower + 3dB``::
+
+   lteHelper->SetFfrAlgorithmType ("ns3::LteFrSoftAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (8));
+   lteHelper->SetFfrAlgorithmAttribute ("AllowCenterUeUseEdgeSubBand", BooleanValue (false));
+   lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (20));
+   lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+   lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+		         UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+   NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
+
+
+Soft Fractional Frequency Reuse Algorithm
++++++++++++++++++++++++++++++++++++++++++
+
+Soft Fractional Frequency Reuse (SFFR) uses three sub-bands: center, medium (common)
+and edge. User have to configure only two of them: common and edge. Center sub-band
+will be composed from the remaining bandwidth. Each sub-band can be served with
+different transmission power. Since there are three sub-bands, two RSRQ thresholds needs to
+be configured.
+
+
+Soft Fractional Frequency Reuse Algorithm provides following attributes:
+
+ * ``UlCommonSubBandwidth``: Uplink Common SubBandwidth Configuration in number of Resource Block Groups
+ * ``UlEdgeSubBandOffset``: Uplink Edge SubBand Offset in number of Resource Block Groups
+ * ``UlEdgeSubBandwidth``: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlCommonSubBandwidth``: Downlink Common SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlEdgeSubBandOffset``: Downlink Edge SubBand Offset in number of Resource Block Groups
+ * ``DlEdgeSubBandwidth``: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups
+ * ``CenterRsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in medium sub-band
+ * ``EdgeRsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in edge sub-band
+ * ``CenterAreaPowerOffset``: PdschConfigDedicated::Pa value for center sub-band, default value dB0
+ * ``MediumAreaPowerOffset``: PdschConfigDedicated::Pa value for medium sub-band, default value dB0
+ * ``EdgeAreaPowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``CenterAreaTpc``: TPC value which will be set in DL-DCI for UEs in center area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``MediumAreaTpc``: TPC value which will be set in DL-DCI for UEs in medium area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``EdgeAreaTpc``: TPC value which will be set in DL-DCI for UEs in edge area,
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+
+
+In example below RBs from 0 to 6 will be used as common (medium) sub-band,
+RBs from 6 to 12 will be used as edge sub-band and RBs from 12 to 24 will be used as
+center sub-band (it is composed with remaining RBs). RSRQ threshold between center 
+and medium area is 28 dB, RSRQ threshold between medium and edge area is 18 dB.
+Power in center area equals ``LteEnbPhy::TxPower - 3dB``, power in medium area equals 
+``LteEnbPhy::TxPower + 3dB``, power in edge area equals ``LteEnbPhy::TxPower + 3dB``::
+
+   lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSoftAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (0));
+   lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (0));
+   lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (6));
+   lteHelper->SetFfrAlgorithmAttribute ("CenterRsrqThreshold", UintegerValue (28));
+   lteHelper->SetFfrAlgorithmAttribute ("EdgeRsrqThreshold", UintegerValue (18));
+   lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
+   lteHelper->SetFfrAlgorithmAttribute ("MediumAreaPowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+   lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
+			 UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+   NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
+
+
+Enhanced Fractional Frequency Reuse Algorithm
++++++++++++++++++++++++++++++++++++++++++++++
+
+Enhanced Fractional Frequency Reuse (EFFR) reserve part of system bandwidth for each cell
+(typically there are 3 cell types and each one gets 1/3 of system bandwidth). Then part of
+this subbandwidth it used as `Primary Segment` with reuse factor 3 and as `Secondary Segment`
+with reuse factor 1. User has to configure (for DL and UL) offset of the cell subbandwidth 
+in number of RB, number of RB which will be used as `Primary Segment` and number of RB which 
+will be used as `Secondary Segment`. `Primary Segment` is used by cell at will, but RBs from 
+`Secondary Segment` can be assigned to UE only is CQI feedback from this UE have higher value 
+than configured CQI threshold. UE is considered as edge UE when its RSRQ is lower than ``RsrqThreshold``.
+
+Since each eNb needs to know where are Primary and Secondary of other cell types, 
+it will calculate them assuming configuration is the same for each cell and only subbandwidth offsets
+are different. So it is important to divide available system bandwidth equally to each cell and apply 
+the same configuration of Primary and Secondary Segments to them. 
+
+
+Enhanced Fractional Frequency Reuse Algorithm provides following attributes:
+
+ * ``UlSubBandOffset``: Uplink SubBand Offset for this cell in number of Resource Block Groups
+ * ``UlReuse3SubBandwidth``: Uplink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups
+ * ``UlReuse1SubBandwidth``: Uplink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlSubBandOffset``: Downlink SubBand Offset for this cell in number of Resource Block Groups
+ * ``DlReuse3SubBandwidth``: Downlink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups
+ * ``DlReuse1SubBandwidth``: Downlink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups
+ * ``RsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in edge sub-band
+ * ``CenterAreaPowerOffset``: PdschConfigDedicated::Pa value for center sub-band, default value dB0
+ * ``EdgeAreaPowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``DlCqiThreshold``: If the DL-CQI for RBG of is higher than this threshold, transmission on RBG is possible
+ * ``UlCqiThreshold``: If the UL-CQI for RBG of is higher than this threshold, transmission on RBG is possible
+ * ``CenterAreaTpc``: TPC value which will be set in DL-DCI for UEs in center area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``EdgeAreaTpc``: TPC value which will be set in DL-DCI for UEs in edge area,
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+
+
+In example below offset in DL and UL is 0 RB, 4 RB will be used in `Primary Segment` and 
+`Secondary Segment`. RSRQ threshold between center and edge area is 25 dB. DL and UL CQI 
+thresholds are set to value of 10. Power in center area equals ``LteEnbPhy::TxPower - 6dB``, 
+power in edge area equals ``LteEnbPhy::TxPower + 0dB``::
+
+   lteHelper->SetFfrAlgorithmType("ns3::LteFfrEnhancedAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute("RsrqThreshold", UintegerValue (25));
+   lteHelper->SetFfrAlgorithmAttribute("DlCqiThreshold", UintegerValue (10));
+   lteHelper->SetFfrAlgorithmAttribute("UlCqiThreshold", UintegerValue (10));
+   lteHelper->SetFfrAlgorithmAttribute("CenterAreaPowerOffset",
+		  UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+   lteHelper->SetFfrAlgorithmAttribute("EdgeAreaPowerOffset",
+		  UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+   lteHelper->SetFfrAlgorithmAttribute("UlSubBandOffset", UintegerValue (0));
+   lteHelper->SetFfrAlgorithmAttribute("UlReuse3SubBandwidth", UintegerValue (4));
+   lteHelper->SetFfrAlgorithmAttribute("UlReuse1SubBandwidth", UintegerValue (4));
+   lteHelper->SetFfrAlgorithmAttribute("DlSubBandOffset", UintegerValue (0));
+   lteHelper->SetFfrAlgorithmAttribute("DlReuse3SubBandwidth", UintegerValue (4));
+   lteHelper->SetFfrAlgorithmAttribute("DlReuse1SubBandwidth", UintegerValue (4));
+
+
+Distributed Fractional Frequency Reuse Algorithm
+++++++++++++++++++++++++++++++++++++++++++++++++
+
+Distributed Fractional Frequency Reuse requires X2 interface between all eNB to be installed. 
+X2 interfaces can be installed only when EPC is configured, so this FFR scheme can be used only with
+EPC scenarios. 
+
+With Distributed Fractional Frequency Reuse  Algorithm, eNb uses entire cell bandwidth and there can 
+be two sub-bands: center sub-band and edge sub-band . Within these sub-bands UEs can be served with 
+different power level. Algorithm adaptively selects RBs for cell-edge sub-band on basis of 
+coordination information (i.e. RNTP) from adjecent cells and notifies the base stations of the adjacent cells, 
+which RBs it selected to use in edge sub-band. If there are no UE classified as edge UE in cell, 
+eNB will not use any RBs as edge sub-band.
+
+Distributed Fractional Frequency Reuse Algorithm provides following attributes:
+
+ * ``CalculationInterval``: Time interval between calculation of Edge sub-band, Default value 1 second
+ * ``RsrqThreshold``: If the RSRQ of is worse than this threshold, UE should be served in edge sub-band
+ * ``RsrpDifferenceThreshold``: If the difference between the power of the signal received by UE from
+   the serving cell and the power of the signal received from the adjacent cell is less than a 
+   RsrpDifferenceThreshold value, the cell weight is incremented
+ * ``CenterPowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``EdgePowerOffset``: PdschConfigDedicated::Pa value for edge sub-band, default value dB0
+ * ``EdgeRbNum``: Number of RB that can be used in edge sub-band
+ * ``CenterAreaTpc``: TPC value which will be set in DL-DCI for UEs in center area, 
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+ * ``EdgeAreaTpc``: TPC value which will be set in DL-DCI for UEs in edge area,
+   Absolute mode is used, default value 1 is mapped to -1 according to TS36.213 Table 5.1.1.1-2
+
+In example below calculation interval is 500 ms. RSRQ threshold between center and edge area is 25. 
+RSRP Difference Threshold is set to be 5. In DL and UL 6 RB will be used by each cell in edge sub-band.  
+Power in center area equals ``LteEnbPhy::TxPower - 0dB``, power in edge area equals ``LteEnbPhy::TxPower + 3dB``::
+
+  lteHelper->SetFfrAlgorithmType("ns3::LteFfrDistributedAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute("CalculationInterval", TimeValue(MilliSeconds(500)));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrpDifferenceThreshold", UintegerValue (5));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeRbNum", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+		  UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+		  UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+
+Automatic configuration
+***********************
+
+Frequency Reuse algorithms can also be configured in more “automatic” way by setting 
+only the bandwidth and FrCellTypeId. During initialization of FR instance, configuration 
+for set bandwidth and FrCellTypeId will be taken from configuration table. It is important 
+that only sub-bands will be configured, thresholds and transmission power will be set 
+to default values. If one wants, he/she can change thresholds and transmission power 
+as show in previous sub-section. 
+
+There are three FrCellTypeId : ``1, 2, 3``, which correspond to three different 
+configurations for each bandwidth. Three configurations allow to have different 
+configurations in neighbouring cells in hexagonal eNB layout. If user needs to have
+more different configuration for neighbouring cells, he/she need to use manual 
+configuration.
+
+Example below show automatic FR algorithm configuration::
+
+   lteHelper->SetFfrAlgorithmType("ns3::LteFfrSoftAlgorithm");
+   lteHelper->SetFfrAlgorithmAttribute("FrCellTypeId", UintegerValue (1));
+   NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
+
+
+Uplink Power Control
+--------------------
+
+Uplink Power Control functionality is enabled by default. User can disable it by setting 
+the boolean attribute ``ns3::LteUePhy::EnableUplinkPowerControl`` to true.
+
+User can switch between Open Loop Power Control and Closed Loop Power Control mechanisms
+by setting the boolean attribute ``ns3::LteUePowerControl::ClosedLoop``. 
+By default Closed Loop Power Control with Accumulation Mode is enabled.
+
+Path-loss is key component of Uplink Power Control. It is computed as difference between 
+filtered RSRP and ReferenceSignalPower parameter. ReferenceSignalPower is 
+sent with SIB2.
+
+Attributes available in Uplink Power Control:
+
+ * ``ClosedLoop``: if true Closed Loop Uplink Power Control mode is enabled and Open Loop 
+   Power Control otherwise, default value is false
+ * ``AccumulationEnabled``: if true Accumulation Mode is enabled and Absolute mode otherwise, 
+   default value is false 
+ * ``Alpha``: the path loss compensation factor, default value is 1.0
+ * ``Pcmin``: minimal UE TxPower, default value is -40 dBm
+ * ``Pcmax``: maximal UE TxPower, default value is 23 dBm
+ * ``PoNominalPusch``: this parameter should be set by higher layers, but currently 
+   it needs to be configured by attribute system, possible values are 
+   integers in range (-126 ... 24), Default value is -80
+ * ``PoUePusch``: this parameter should be set by higher layers, but currently 
+   it needs to be configured by attribute system, possible values are 
+   integers in range (-8 ... 7), Default value is 0
+ * ``PsrsOffset``: this parameter should be set by higher layers, but currently 
+   it needs to be configured by attribute system, possible values are 
+   integers in range (0 ... 15), Default value is 7, what gives P_Srs_Offset_Value = 0
+
+Traced values in Uplink Power Control:
+ * ``ReportPuschTxPower``: Current UE TxPower for PUSCH
+ * ``ReportPucchTxPower``: Current UE TxPower for PUCCH
+ * ``ReportSrsTxPower``: Current UE TxPower for SRS
+
+
+Example configuration is presented below::
+
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (30));
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (true));
+
+As an example, user can take a look and run the lena-uplink-power-control program.
+
 
 Examples Programs
 -----------------
@@ -1423,7 +1913,6 @@
 show how to simulate different LTE scenarios. 
 
 
-
 Reference scenarios
 -------------------
 
@@ -1731,3 +2220,123 @@
 between the two handover algorithms in this campaign scenario. It would be
 interesting to see their performance in different scenarios, such as scenarios
 with home eNodeBs deployment.
+
+
+Frequency Reuse examples
+**********************************
+
+There are two examples showing Frequency Reuse Algorithms functionality.
+
+``lena-frequency-reuse`` is simple example with 3 eNBs in triangle layout. 
+There are 3 cell edge UEs, which are located in the center of this triangle and 
+3 cell center UEs (one near each eNB). User can also specify the number of randomly 
+located UEs. FR algorithm is installed in eNBs and each eNB has different FrCellTypeId, 
+what means each eNB uses different FR configuration. User can run ``lena-frequency-reuse`` 
+with 6 different FR algorithms: NoOp, Hard FR, Strict FR, Soft FR, Soft FFR and Enhanced FFR.
+To run scenario with Distributed FFR algorithm, user should use ``lena-distributed-ffr``. 
+These two examples are very similar, but they were splitted because Distributed FFR requires 
+EPC to be used, and other algorihtms do not. 
+
+To run ``lena-frequency-reuse`` with different Frequency Reuse algorithms, user needs to specify 
+FR algorithm by overriding the default attribute ``ns3::LteHelper::FfrAlgorithm``.
+Example command to run ``lena-frequency-reuse`` with Soft FR algorithm is presented below::
+
+   $ ./waf --run "lena-frequency-reuse --ns3::LteHelper::FfrAlgorithm=ns3::LteFrSoftAlgorithm"
+
+In these examples functionality to generate REM and spectrum analyzer trace was added. 
+User can enable generation of it by setting ``generateRem`` and ``generateSpectrumTrace``
+attributes. 
+
+Command to generate REM for RB 1 in data channel from ``lena-frequency-reuse`` scenario 
+with Soft FR algorithm is presented below::
+
+   $ ./waf --run "lena-frequency-reuse --ns3::LteHelper::FfrAlgorithm=ns3::LteFrSoftAlgorithm
+     --generateRem=true --remRbId=1"
+
+Radio Environment Map for Soft FR is presented in Figure :ref:`fig-lte-soft-fr-1-rem`.
+
+.. _fig-lte-soft-fr-1-rem:
+
+.. figure:: figures/lte-fr-soft-1-rem.*
+   :align: center
+
+   REM for RB 1 obtained from ``lena-frequency-reuse`` example with Soft FR 
+   algorithm enabled
+
+
+Command to generate spectrum trace from ``lena-frequency-reuse`` scenario 
+with Soft FFR algorithm is presented below (Spectrum Analyzer position needs to be configured 
+inside script)::
+
+   $ ./waf --run "lena-frequency-reuse --ns3::LteHelper::FfrAlgorithm=ns3::LteFfrSoftAlgorithm
+     --generateSpectrumTrace=true"
+
+Example spectrum analyzer trace is presented in figure :ref:`fig-lte-soft-ffr-2-spectrum-trace`.
+As can be seen, different data channel subbands are sent with different power level
+(according to configuration), while control channel is transmitted with uniform power 
+along entire system bandwidth.
+
+
+.. _fig-lte-soft-ffr-2-spectrum-trace:
+
+.. figure:: figures/lte-ffr-soft-2-spectrum-trace.*
+   :align: center
+
+   Spectrum Analyzer trace obtained from ``lena-frequency-reuse`` example 
+   with Soft FFR algorithm enabled. Spectrum Analyzer was located need eNB 
+   with FrCellTypeId 2.
+
+
+``lena-dual-stripe`` can be also run with Frequency Reuse algorithms installed in all macro eNB. 
+User needs to specify FR algorithm by overriding the default attribute ``ns3::LteHelper::FfrAlgorithm``.
+Example command to run ``lena-dual-stripe`` with Hard FR algorithm is presented below::
+
+   $ ./waf --run="lena-dual-stripe
+     --simTime=50 --nBlocks=0 --nMacroEnbSites=7 --nMacroEnbSitesX=2
+     --epc=1 --useUdp=0 --outdoorUeMinSpeed=16.6667 --outdoorUeMaxSpeed=16.6667
+     --ns3::LteHelper::HandoverAlgorithm=ns3::NoOpHandoverAlgorithm
+     --ns3::LteHelper::FfrAlgorithm=ns3::LteFrHardAlgorithm
+     --ns3::RadioBearerStatsCalculator::DlRlcOutputFilename=no-op-DlRlcStats.txt
+     --ns3::RadioBearerStatsCalculator::UlRlcOutputFilename=no-op-UlRlcStats.txt
+     --ns3::PhyStatsCalculator::DlRsrpSinrFilename=no-op-DlRsrpSinrStats.txt
+     --ns3::PhyStatsCalculator::UlSinrFilename=no-op-UlSinrStats.txt
+     --RngRun=1" > no-op.txt
+
+Example command to generate REM for RB 1 in data channel from ``lena-dual-stripe`` scenario 
+with Hard FR algorithm is presented below::
+
+   $ ./waf --run="lena-dual-stripe
+     --simTime=50 --nBlocks=0 --nMacroEnbSites=7 --nMacroEnbSitesX=2
+     --epc=0 --useUdp=0 --outdoorUeMinSpeed=16.6667 --outdoorUeMaxSpeed=16.6667
+     --ns3::LteHelper::HandoverAlgorithm=ns3::NoOpHandoverAlgorithm
+     --ns3::LteHelper::FfrAlgorithm=ns3::LteFrHardAlgorithm
+     --ns3::RadioBearerStatsCalculator::DlRlcOutputFilename=no-op-DlRlcStats.txt
+     --ns3::RadioBearerStatsCalculator::UlRlcOutputFilename=no-op-UlRlcStats.txt
+     --ns3::PhyStatsCalculator::DlRsrpSinrFilename=no-op-DlRsrpSinrStats.txt
+     --ns3::PhyStatsCalculator::UlSinrFilename=no-op-UlSinrStats.txt
+     --RngRun=1 --generateRem=true --remRbId=1" > no-op.txt
+
+Radio Environment Maps for RB 1, 10 and 20 generated from ``lena-dual-stripe``
+scenario with Hard Frequency Reuse algorithm are presented in the figures 
+below. These RB were selected because each one is used by different FR cell type.
+
+.. _fig-lte-hard-fr-1-rem:
+
+.. figure:: figures/lte-fr-hard-1-rem.*
+   :align: center
+
+   REM for RB 1 obtained from ``lena-dual-stripe`` simulation with Hard FR algorithm enabled
+
+.. _fig-lte-hard-fr-2-rem:
+
+.. figure:: figures/lte-fr-hard-2-rem.*
+   :align: center
+
+   REM for RB 10 obtained from ``lena-dual-stripe`` simulation with Hard FR algorithm enabled
+
+.. _fig-lte-hard-fr-3-rem:
+
+.. figure:: figures/lte-fr-hard-3-rem.*
+   :align: center
+
+   REM for RB 20 obtained from ``lena-dual-stripe`` simulation with Hard FR algorithm enabled
diff -Naur ns-3.20/src/lte/examples/lena-distributed-ffr.cc ns-3.21/src/lte/examples/lena-distributed-ffr.cc
--- ns-3.20/src/lte/examples/lena-distributed-ffr.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/examples/lena-distributed-ffr.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,393 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/lte-module.h"
+#include "ns3/spectrum-module.h"
+#include "ns3/config-store.h"
+#include <ns3/buildings-helper.h>
+#include "ns3/point-to-point-epc-helper.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/log.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("LenaDistributedFrequencyReuse");
+
+void
+PrintGnuplottableUeListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteUeNetDevice> uedev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
+          if (uedev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << uedev->GetImsi ()
+                      << "\" at " << pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0"
+                      << std::endl;
+            }
+        }
+    }
+}
+
+void
+PrintGnuplottableEnbListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteEnbNetDevice> enbdev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
+          if (enbdev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << enbdev->GetCellId ()
+                      << "\" at " << pos.x << "," << pos.y
+                      << " left font \"Helvetica,4\" textcolor rgb \"white\" front  point pt 2 ps 0.3 lc rgb \"white\" offset 0,0"
+                      << std::endl;
+            }
+        }
+    }
+}
+
+int main (int argc, char *argv[])
+{
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (true));
+
+  //Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  uint32_t runId = 3;
+  uint16_t numberOfRandomUes = 0;
+  double simTime = 5.000;
+  bool generateSpectrumTrace = false;
+  bool generateRem = false;
+  int32_t remRbId = -1;
+  uint8_t bandwidth = 25;
+  double distance = 1000;
+  Box macroUeBox = Box (-distance * 0.5, distance * 1.5, -distance * 0.5, distance * 1.5, 1.5, 1.5);
+
+  // Command line arguments
+  CommandLine cmd;
+  cmd.AddValue ("numberOfUes", "Number of UEs", numberOfRandomUes);
+  cmd.AddValue ("simTime", "Total duration of the simulation (in seconds)", simTime);
+  cmd.AddValue ("generateSpectrumTrace", "if true, will generate a Spectrum Analyzer trace", generateSpectrumTrace);
+  cmd.AddValue ("generateRem", "if true, will generate a REM and then abort the simulation", generateRem);
+  cmd.AddValue ("remRbId", "Resource block Id, for which REM will be generated,"
+                "default value is -1, what means REM will be averaged from all RBs", remRbId);
+  cmd.AddValue ("runId", "runId", runId);
+  cmd.Parse (argc, argv);
+
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (runId);
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+  lteHelper->SetHandoverAlgorithmType ("ns3::NoOpHandoverAlgorithm"); // disable automatic handover
+
+  Ptr<Node> pgw = epcHelper->GetPgwNode ();
+
+  // Create a single RemoteHost
+  NodeContainer remoteHostContainer;
+  remoteHostContainer.Create (1);
+  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
+  InternetStackHelper internet;
+  internet.Install (remoteHostContainer);
+
+  // Create the Internet
+  PointToPointHelper p2ph;
+  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
+  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
+  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
+  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
+  Ipv4AddressHelper ipv4h;
+  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
+  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
+  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
+
+  // Routing of the Internet Host (towards the LTE network)
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
+  // interface 0 is localhost, 1 is the p2p device
+  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer randomUeNodes;
+  enbNodes.Create (3);
+  randomUeNodes.Create (numberOfRandomUes);
+
+  /*   the topology is the following:
+   *                 eNB3
+   *                /     \
+   *               /       \
+   *              /         \
+   *             /           \
+   *   distance /             \ distance
+   *           /      UEs      \
+   *          /                 \
+   *         /                   \
+   *        /                     \
+   *       /                       \
+   *   eNB1-------------------------eNB2
+   *                  distance
+   */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> enbPositionAlloc = CreateObject<ListPositionAllocator> ();
+  enbPositionAlloc->Add (Vector (0.0, 0.0, 0.0));                       // eNB1
+  enbPositionAlloc->Add (Vector (distance,  0.0, 0.0));                 // eNB2
+  enbPositionAlloc->Add (Vector (distance * 0.5, distance * 0.866, 0.0));   // eNB3
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (enbPositionAlloc);
+  mobility.Install (enbNodes);
+
+  Ptr<RandomBoxPositionAllocator> randomUePositionAlloc = CreateObject<RandomBoxPositionAllocator> ();
+  Ptr<UniformRandomVariable> xVal = CreateObject<UniformRandomVariable> ();
+  xVal->SetAttribute ("Min", DoubleValue (macroUeBox.xMin));
+  xVal->SetAttribute ("Max", DoubleValue (macroUeBox.xMax));
+  randomUePositionAlloc->SetAttribute ("X", PointerValue (xVal));
+  Ptr<UniformRandomVariable> yVal = CreateObject<UniformRandomVariable> ();
+  yVal->SetAttribute ("Min", DoubleValue (macroUeBox.yMin));
+  yVal->SetAttribute ("Max", DoubleValue (macroUeBox.yMax));
+  randomUePositionAlloc->SetAttribute ("Y", PointerValue (yVal));
+  Ptr<UniformRandomVariable> zVal = CreateObject<UniformRandomVariable> ();
+  zVal->SetAttribute ("Min", DoubleValue (macroUeBox.zMin));
+  zVal->SetAttribute ("Max", DoubleValue (macroUeBox.zMax));
+  randomUePositionAlloc->SetAttribute ("Z", PointerValue (zVal));
+  mobility.SetPositionAllocator (randomUePositionAlloc);
+  mobility.Install (randomUeNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer randomUeDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  lteHelper->SetSchedulerAttribute ("HarqEnabled",  BooleanValue (true));
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrDistributedAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("CalculationInterval", TimeValue (MilliSeconds (200)));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrpDifferenceThreshold", UintegerValue (5));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeRbNum", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+  lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (3));
+
+  //ns3::LteFfrDistributedAlgorithm works with Absolute Mode Uplink Power Control
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  randomUeDevs = lteHelper->InstallUeDevice (randomUeNodes);
+
+  // Add X2 inteface
+  lteHelper->AddX2Interface (enbNodes);
+
+
+  NodeContainer ueNodes;
+  ueNodes.Add (randomUeNodes);
+  NetDeviceContainer ueDevs;
+  ueDevs.Add (randomUeDevs);
+
+  // Install the IP stack on the UEs
+  internet.Install (ueNodes);
+  Ipv4InterfaceContainer ueIpIfaces;
+  ueIpIfaces = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueDevs));
+  // Assign IP address to UEs, and install applications
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ueNode = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+    }
+
+  // Attach a UE to a eNB
+  lteHelper->AttachToClosestEnb (ueDevs, enbDevs);
+
+  // Install and start applications on UEs and remote host
+  uint16_t dlPort = 10000;
+  uint16_t ulPort = 20000;
+
+  // randomize a bit start times to avoid simulation artifacts
+  // (e.g., buffer overflows due to packet transmissions happening
+  // exactly at the same time)
+  Ptr<UniformRandomVariable> startTimeSeconds = CreateObject<UniformRandomVariable> ();
+  startTimeSeconds->SetAttribute ("Min", DoubleValue (0));
+  startTimeSeconds->SetAttribute ("Max", DoubleValue (0.010));
+
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ue = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+
+      for (uint32_t b = 0; b < 1; ++b)
+        {
+          ++dlPort;
+          ++ulPort;
+
+          ApplicationContainer clientApps;
+          ApplicationContainer serverApps;
+
+          UdpClientHelper dlClientHelper (ueIpIfaces.GetAddress (u), dlPort);
+          dlClientHelper.SetAttribute ("MaxPackets", UintegerValue (1000000));
+          dlClientHelper.SetAttribute ("Interval", TimeValue (MilliSeconds (1.0)));
+          clientApps.Add (dlClientHelper.Install (remoteHost));
+          PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory",
+                                               InetSocketAddress (Ipv4Address::GetAny (), dlPort));
+          serverApps.Add (dlPacketSinkHelper.Install (ue));
+
+
+          UdpClientHelper ulClientHelper (remoteHostAddr, ulPort);
+          ulClientHelper.SetAttribute ("MaxPackets", UintegerValue (1000000));
+          ulClientHelper.SetAttribute ("Interval", TimeValue (MilliSeconds (1.0)));
+          clientApps.Add (ulClientHelper.Install (ue));
+          PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory",
+                                               InetSocketAddress (Ipv4Address::GetAny (), ulPort));
+          serverApps.Add (ulPacketSinkHelper.Install (remoteHost));
+
+          Ptr<EpcTft> tft = Create<EpcTft> ();
+          EpcTft::PacketFilter dlpf;
+          dlpf.localPortStart = dlPort;
+          dlpf.localPortEnd = dlPort;
+          tft->Add (dlpf);
+          EpcTft::PacketFilter ulpf;
+          ulpf.remotePortStart = ulPort;
+          ulpf.remotePortEnd = ulPort;
+          tft->Add (ulpf);
+          EpsBearer bearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT);
+          lteHelper->ActivateDedicatedEpsBearer (ueDevs.Get (u), bearer, tft);
+
+          Time startTime = Seconds (startTimeSeconds->GetValue ());
+          serverApps.Start (startTime);
+          clientApps.Start (startTime);
+        }
+    }
+
+  //Spectrum analyzer
+  NodeContainer spectrumAnalyzerNodes;
+  spectrumAnalyzerNodes.Create (1);
+  SpectrumAnalyzerHelper spectrumAnalyzerHelper;
+
+  if (generateSpectrumTrace)
+    {
+      Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+      //position of Spectrum Analyzer
+      positionAlloc->Add (Vector (0.0, 0.0, 0.0));                              // eNB1
+//      positionAlloc->Add (Vector (distance,  0.0, 0.0));                        // eNB2
+//      positionAlloc->Add (Vector (distance*0.5, distance*0.866, 0.0));          // eNB3
+
+      MobilityHelper mobility;
+      mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+      mobility.SetPositionAllocator (positionAlloc);
+      mobility.Install (spectrumAnalyzerNodes);
+
+      Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+      Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+      spectrumAnalyzerHelper.SetChannel (dlChannel);
+      Ptr<SpectrumModel> sm = LteSpectrumValueHelper::GetSpectrumModel (100, bandwidth);
+      spectrumAnalyzerHelper.SetRxSpectrumModel (sm);
+      spectrumAnalyzerHelper.SetPhyAttribute ("Resolution", TimeValue (MicroSeconds (10)));
+      spectrumAnalyzerHelper.SetPhyAttribute ("NoisePowerSpectralDensity", DoubleValue (1e-15));     // -120 dBm/Hz
+      spectrumAnalyzerHelper.EnableAsciiAll ("spectrum-analyzer-output");
+      spectrumAnalyzerHelper.Install (spectrumAnalyzerNodes);
+    }
+
+  Ptr<RadioEnvironmentMapHelper> remHelper;
+  if (generateRem)
+    {
+      PrintGnuplottableEnbListToFile ("enbs.txt");
+      PrintGnuplottableUeListToFile ("ues.txt");
+
+      remHelper = CreateObject<RadioEnvironmentMapHelper> ();
+      Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+      Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+      uint32_t dlChannelId = dlChannel->GetId ();
+      NS_LOG_INFO ("DL ChannelId: " << dlChannelId);
+      remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/1"));
+      remHelper->SetAttribute ("OutputFile", StringValue ("lena-frequency-reuse.rem"));
+      remHelper->SetAttribute ("XMin", DoubleValue (macroUeBox.xMin));
+      remHelper->SetAttribute ("XMax", DoubleValue (macroUeBox.xMax));
+      remHelper->SetAttribute ("YMin", DoubleValue (macroUeBox.yMin));
+      remHelper->SetAttribute ("YMax", DoubleValue (macroUeBox.yMax));
+      remHelper->SetAttribute ("Z", DoubleValue (1.5));
+      remHelper->SetAttribute ("XRes", UintegerValue (500));
+      remHelper->SetAttribute ("YRes", UintegerValue (500));
+
+      if (remRbId >= 0)
+        {
+          remHelper->SetAttribute ("UseDataChannel", BooleanValue (true));
+          remHelper->SetAttribute ("RbId", IntegerValue (remRbId));
+        }
+
+      remHelper->Install ();
+      // simulation will stop right after the REM has been generated
+    }
+  else
+    {
+      Simulator::Stop (Seconds (simTime));
+    }
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/lte/examples/lena-dual-stripe.cc ns-3.21/src/lte/examples/lena-dual-stripe.cc
--- ns-3.20/src/lte/examples/lena-dual-stripe.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/examples/lena-dual-stripe.cc	2014-09-17 20:03:14.000000000 -0700
@@ -299,6 +299,12 @@
                                        "if false, will run the simulation normally (without generating any REM)",
                                        ns3::BooleanValue (false),
                                        ns3::MakeBooleanChecker ());
+static ns3::GlobalValue g_remRbId ("remRbId",
+                                   "Resource Block Id of Data Channel, for which REM will be generated;"
+                                   "default value is -1, what means REM will be averaged from all RBs of "
+                                   "Control Channel",
+                                   ns3::IntegerValue (-1),
+                                   MakeIntegerChecker<int32_t> ());
 static ns3::GlobalValue g_epc ("epc",
                                "If true, will setup the EPC to simulate an end-to-end topology, "
                                "with real IP applications over PDCP and RLC UM (or RLC AM by changing "
@@ -366,6 +372,7 @@
 
   // the scenario parameters get their values from the global attributes defined above
   UintegerValue uintegerValue;
+  IntegerValue integerValue;
   DoubleValue doubleValue;
   BooleanValue booleanValue;
   StringValue stringValue;
@@ -415,6 +422,8 @@
   bool useUdp = booleanValue.Get ();
   GlobalValue::GetValueByName ("generateRem", booleanValue);
   bool generateRem = booleanValue.Get ();
+  GlobalValue::GetValueByName ("remRbId", integerValue);
+  int32_t remRbId = integerValue.Get ();
   GlobalValue::GetValueByName ("fadingTrace", stringValue);
   std::string fadingTrace = stringValue.Get ();
   GlobalValue::GetValueByName ("numBearersPerUe", uintegerValue);
@@ -832,6 +841,13 @@
       remHelper->SetAttribute ("YMin", DoubleValue (macroUeBox.yMin));
       remHelper->SetAttribute ("YMax", DoubleValue (macroUeBox.yMax));
       remHelper->SetAttribute ("Z", DoubleValue (1.5));
+
+      if (remRbId >= 0)
+        {
+          remHelper->SetAttribute ("UseDataChannel", BooleanValue (true));
+          remHelper->SetAttribute ("RbId", IntegerValue (remRbId));
+        }
+
       remHelper->Install ();
       // simulation will stop right after the REM has been generated
     }
diff -Naur ns-3.20/src/lte/examples/lena-frequency-reuse.cc ns-3.21/src/lte/examples/lena-frequency-reuse.cc
--- ns-3.20/src/lte/examples/lena-frequency-reuse.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/examples/lena-frequency-reuse.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,402 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/lte-module.h"
+#include "ns3/config-store.h"
+#include <ns3/buildings-helper.h>
+#include <ns3/spectrum-module.h>
+#include <ns3/log.h>
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("LenaFrequencyReuse");
+
+void
+PrintGnuplottableUeListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteUeNetDevice> uedev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
+          if (uedev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << uedev->GetImsi ()
+                      << "\" at " << pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0"
+                      << std::endl;
+            }
+        }
+    }
+}
+
+void
+PrintGnuplottableEnbListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteEnbNetDevice> enbdev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
+          if (enbdev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << enbdev->GetCellId ()
+                      << "\" at " << pos.x << "," << pos.y
+                      << " left font \"Helvetica,4\" textcolor rgb \"white\" front  point pt 2 ps 0.3 lc rgb \"white\" offset 0,0"
+                      << std::endl;
+            }
+        }
+    }
+}
+
+int main (int argc, char *argv[])
+{
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (true));
+
+  //Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  uint32_t runId = 3;
+  uint16_t numberOfRandomUes = 0;
+  double simTime = 2.500;
+  bool generateSpectrumTrace = false;
+  bool generateRem = false;
+  int32_t remRbId = -1;
+  uint8_t bandwidth = 25;
+  double distance = 1000;
+  Box macroUeBox = Box (-distance * 0.5, distance * 1.5, -distance * 0.5, distance * 1.5, 1.5, 1.5);
+
+  // Command line arguments
+  CommandLine cmd;
+  cmd.AddValue ("numberOfUes", "Number of random UEs", numberOfRandomUes);
+  cmd.AddValue ("simTime", "Total duration of the simulation (in seconds)", simTime);
+  cmd.AddValue ("generateSpectrumTrace", "if true, will generate a Spectrum Analyzer trace", generateSpectrumTrace);
+  cmd.AddValue ("generateRem", "if true, will generate a REM and then abort the simulation", generateRem);
+  cmd.AddValue ("remRbId", "Resource Block Id, for which REM will be generated,"
+                "default value is -1, what means REM will be averaged from all RBs", remRbId);
+  cmd.AddValue ("runId", "runId", runId);
+  cmd.Parse (argc, argv);
+
+  RngSeedManager::SetSeed (1);
+  RngSeedManager::SetRun (runId);
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer centerUeNodes;
+  NodeContainer edgeUeNodes;
+  NodeContainer randomUeNodes;
+  enbNodes.Create (3);
+  centerUeNodes.Create (3);
+  edgeUeNodes.Create (3);
+  randomUeNodes.Create (numberOfRandomUes);
+
+
+/*   the topology is the following:
+ *                 eNB3
+ *                /     \
+ *               /       \
+ *              /         \
+ *             /           \
+ *   distance /             \ distance
+ *           /      UEs      \
+ *          /                 \
+ *         /                   \
+ *        /                     \
+ *       /                       \
+ *   eNB1-------------------------eNB2
+ *                  distance
+ */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> enbPositionAlloc = CreateObject<ListPositionAllocator> ();
+  enbPositionAlloc->Add (Vector (0.0, 0.0, 0.0));                       // eNB1
+  enbPositionAlloc->Add (Vector (distance,  0.0, 0.0));                 // eNB2
+  enbPositionAlloc->Add (Vector (distance * 0.5, distance * 0.866, 0.0));   // eNB3
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (enbPositionAlloc);
+  mobility.Install (enbNodes);
+
+
+  Ptr<ListPositionAllocator> edgeUePositionAlloc = CreateObject<ListPositionAllocator> ();
+  edgeUePositionAlloc->Add (Vector (distance * 0.5, distance * 0.28867, 0.0));  // edgeUE1
+  edgeUePositionAlloc->Add (Vector (distance * 0.5, distance * 0.28867, 0.0));  // edgeUE2
+  edgeUePositionAlloc->Add (Vector (distance * 0.5, distance * 0.28867, 0.0));  // edgeUE3
+  mobility.SetPositionAllocator (edgeUePositionAlloc);
+  mobility.Install (edgeUeNodes);
+
+
+  Ptr<ListPositionAllocator> centerUePositionAlloc = CreateObject<ListPositionAllocator> ();
+  centerUePositionAlloc->Add (Vector (0.0, 0.0, 0.0));                                      // centerUE1
+  centerUePositionAlloc->Add (Vector (distance,  0.0, 0.0));                            // centerUE2
+  centerUePositionAlloc->Add (Vector (distance * 0.5, distance * 0.866, 0.0));      // centerUE3
+  mobility.SetPositionAllocator (centerUePositionAlloc);
+  mobility.Install (centerUeNodes);
+
+
+  Ptr<RandomBoxPositionAllocator> randomUePositionAlloc = CreateObject<RandomBoxPositionAllocator> ();
+  Ptr<UniformRandomVariable> xVal = CreateObject<UniformRandomVariable> ();
+  xVal->SetAttribute ("Min", DoubleValue (macroUeBox.xMin));
+  xVal->SetAttribute ("Max", DoubleValue (macroUeBox.xMax));
+  randomUePositionAlloc->SetAttribute ("X", PointerValue (xVal));
+  Ptr<UniformRandomVariable> yVal = CreateObject<UniformRandomVariable> ();
+  yVal->SetAttribute ("Min", DoubleValue (macroUeBox.yMin));
+  yVal->SetAttribute ("Max", DoubleValue (macroUeBox.yMax));
+  randomUePositionAlloc->SetAttribute ("Y", PointerValue (yVal));
+  Ptr<UniformRandomVariable> zVal = CreateObject<UniformRandomVariable> ();
+  zVal->SetAttribute ("Min", DoubleValue (macroUeBox.zMin));
+  zVal->SetAttribute ("Max", DoubleValue (macroUeBox.zMax));
+  randomUePositionAlloc->SetAttribute ("Z", PointerValue (zVal));
+  mobility.SetPositionAllocator (randomUePositionAlloc);
+  mobility.Install (randomUeNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer edgeUeDevs;
+  NetDeviceContainer centerUeDevs;
+  NetDeviceContainer randomUeDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  lteHelper->SetSchedulerAttribute ("UlCqiFilter", EnumValue (FfMacScheduler::PUSCH_UL_CQI));
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  std::string frAlgorithmType = lteHelper->GetFfrAlgorithmType ();
+  NS_LOG_DEBUG ("FrAlgorithmType: " << frAlgorithmType);
+
+  if (frAlgorithmType == "ns3::LteFrHardAlgorithm")
+    {
+
+      //Nothing to configure here in automatic mode
+
+    }
+  else if (frAlgorithmType == "ns3::LteFrStrictAlgorithm")
+    {
+
+      lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (32));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (0));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (3));
+
+      //ns3::LteFrStrictAlgorithm works with Absolute Mode Uplink Power Control
+      Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+    }
+  else if (frAlgorithmType == "ns3::LteFrSoftAlgorithm")
+    {
+
+      lteHelper->SetFfrAlgorithmAttribute ("AllowCenterUeUseEdgeSubBand", BooleanValue (true));
+      lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (0));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (3));
+
+      //ns3::LteFrSoftAlgorithm works with Absolute Mode Uplink Power Control
+      Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+    }
+  else if (frAlgorithmType == "ns3::LteFfrSoftAlgorithm")
+    {
+
+      lteHelper->SetFfrAlgorithmAttribute ("CenterRsrqThreshold", UintegerValue (30));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeRsrqThreshold", UintegerValue (25));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+      lteHelper->SetFfrAlgorithmAttribute ("MediumAreaPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB_1dot77));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (1));
+      lteHelper->SetFfrAlgorithmAttribute ("MediumAreaTpc", UintegerValue (2));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (3));
+
+      //ns3::LteFfrSoftAlgorithm works with Absolute Mode Uplink Power Control
+      Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+    }
+  else if (frAlgorithmType == "ns3::LteFfrEnhancedAlgorithm")
+    {
+
+      lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+      lteHelper->SetFfrAlgorithmAttribute ("DlCqiThreshold", UintegerValue (10));
+      lteHelper->SetFfrAlgorithmAttribute ("UlCqiThreshold", UintegerValue (10));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
+                                           UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+      lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (0));
+      lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (3));
+
+      //ns3::LteFfrEnhancedAlgorithm works with Absolute Mode Uplink Power Control
+      Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+    }
+  else if (frAlgorithmType == "ns3::LteFfrDistributedAlgorithm")
+    {
+
+      NS_FATAL_ERROR ("ns3::LteFfrDistributedAlgorithm not supported in this example. Please run lena-distributed-ffr");
+
+    }
+  else
+    {
+      lteHelper->SetFfrAlgorithmType ("ns3::LteFrNoOpAlgorithm");
+    }
+
+  lteHelper->SetFfrAlgorithmAttribute ("FrCellTypeId", UintegerValue (1));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmAttribute ("FrCellTypeId", UintegerValue (2));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  lteHelper->SetFfrAlgorithmAttribute ("FrCellTypeId", UintegerValue (3));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (2)));
+
+  //FR algorithm reconfiguration if needed
+  PointerValue tmp;
+  enbDevs.Get (0)->GetAttribute ("LteFfrAlgorithm", tmp);
+  Ptr<LteFfrAlgorithm> ffrAlgorithm = DynamicCast<LteFfrAlgorithm> (tmp.GetObject ());
+  ffrAlgorithm->SetAttribute ("FrCellTypeId", UintegerValue (1));
+
+
+  //Install Ue Device
+  edgeUeDevs = lteHelper->InstallUeDevice (edgeUeNodes);
+  centerUeDevs = lteHelper->InstallUeDevice (centerUeNodes);
+  randomUeDevs = lteHelper->InstallUeDevice (randomUeNodes);
+
+  // Attach edge UEs to eNbs
+  for (uint32_t i = 0; i < edgeUeDevs.GetN (); i++)
+    {
+      lteHelper->Attach (edgeUeDevs.Get (i), enbDevs.Get (i));
+    }
+  // Attach center UEs to eNbs
+  for (uint32_t i = 0; i < centerUeDevs.GetN (); i++)
+    {
+      lteHelper->Attach (centerUeDevs.Get (i), enbDevs.Get (i));
+    }
+
+  // Attach UE to a eNB
+  lteHelper->AttachToClosestEnb (randomUeDevs, enbDevs);
+
+  // Activate a data radio bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (edgeUeDevs, bearer);
+  lteHelper->ActivateDataRadioBearer (centerUeDevs, bearer);
+  lteHelper->ActivateDataRadioBearer (randomUeDevs, bearer);
+
+  //Spectrum analyzer
+  NodeContainer spectrumAnalyzerNodes;
+  spectrumAnalyzerNodes.Create (1);
+  SpectrumAnalyzerHelper spectrumAnalyzerHelper;
+
+  if (generateSpectrumTrace)
+    {
+      Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+      //position of Spectrum Analyzer
+//	  positionAlloc->Add (Vector (0.0, 0.0, 0.0));                              // eNB1
+//	  positionAlloc->Add (Vector (distance,  0.0, 0.0));                        // eNB2
+      positionAlloc->Add (Vector (distance * 0.5, distance * 0.866, 0.0));          // eNB3
+
+      MobilityHelper mobility;
+      mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+      mobility.SetPositionAllocator (positionAlloc);
+      mobility.Install (spectrumAnalyzerNodes);
+
+      Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+      Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+      spectrumAnalyzerHelper.SetChannel (dlChannel);
+      Ptr<SpectrumModel> sm = LteSpectrumValueHelper::GetSpectrumModel (100, bandwidth);
+      spectrumAnalyzerHelper.SetRxSpectrumModel (sm);
+      spectrumAnalyzerHelper.SetPhyAttribute ("Resolution", TimeValue (MicroSeconds (10)));
+      spectrumAnalyzerHelper.SetPhyAttribute ("NoisePowerSpectralDensity", DoubleValue (1e-15));     // -120 dBm/Hz
+      spectrumAnalyzerHelper.EnableAsciiAll ("spectrum-analyzer-output");
+      spectrumAnalyzerHelper.Install (spectrumAnalyzerNodes);
+    }
+
+  Ptr<RadioEnvironmentMapHelper> remHelper;
+  if (generateRem)
+    {
+      PrintGnuplottableEnbListToFile ("enbs.txt");
+      PrintGnuplottableUeListToFile ("ues.txt");
+
+      remHelper = CreateObject<RadioEnvironmentMapHelper> ();
+      remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0"));
+      remHelper->SetAttribute ("OutputFile", StringValue ("lena-frequency-reuse.rem"));
+      remHelper->SetAttribute ("XMin", DoubleValue (macroUeBox.xMin));
+      remHelper->SetAttribute ("XMax", DoubleValue (macroUeBox.xMax));
+      remHelper->SetAttribute ("YMin", DoubleValue (macroUeBox.yMin));
+      remHelper->SetAttribute ("YMax", DoubleValue (macroUeBox.yMax));
+      remHelper->SetAttribute ("Z", DoubleValue (1.5));
+      remHelper->SetAttribute ("XRes", UintegerValue (500));
+      remHelper->SetAttribute ("YRes", UintegerValue (500));
+      if (remRbId >= 0)
+        {
+          remHelper->SetAttribute ("UseDataChannel", BooleanValue (true));
+          remHelper->SetAttribute ("RbId", IntegerValue (remRbId));
+        }
+
+      remHelper->Install ();
+      // simulation will stop right after the REM has been generated
+    }
+  else
+    {
+      Simulator::Stop (Seconds (simTime));
+    }
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/lte/examples/lena-simple-epc-emu.cc ns-3.21/src/lte/examples/lena-simple-epc-emu.cc
--- ns-3.20/src/lte/examples/lena-simple-epc-emu.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/examples/lena-simple-epc-emu.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,200 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011, 2013 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jaume Nin <jaume.nin@cttc.cat>
+ *         Nicola Baldo <nbaldo@cttc.cat>
+ */
+
+#include "ns3/lte-helper.h"
+#include "ns3/epc-helper.h"
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/internet-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/lte-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/point-to-point-helper.h"
+#include <ns3/config-store-module.h>
+
+using namespace ns3;
+
+/*
+ * Simple simulation program using the emulated EPC.
+ * For the LTE radio part, it simulates a simple linear topology with
+ * a fixed number of eNBs spaced at equal distance, and a fixed number
+ * of UEs per each eNB, located at the same position of the eNB. 
+ * For the EPC, it uses EmuEpcHelper to realize the S1-U connection
+ * via a real link. 
+ */
+
+
+
+
+NS_LOG_COMPONENT_DEFINE ("EpcFirstExample");
+int
+main (int argc, char *argv[])
+{
+
+  uint16_t nEnbs = 1;
+  uint16_t nUesPerEnb = 1;
+  double simTime = 10.1;
+  double distance = 1000.0;
+  double interPacketInterval = 1000;
+
+  // Command line arguments
+  CommandLine cmd;
+  cmd.AddValue("nEnbs", "Number of eNBs", nEnbs);
+  cmd.AddValue("nUesPerEnb", "Number of UEs per eNB", nUesPerEnb);
+  cmd.AddValue("simTime", "Total duration of the simulation [s])", simTime);
+  cmd.AddValue("distance", "Distance between eNBs [m]", distance);
+  cmd.AddValue("interPacketInterval", "Inter packet interval [ms])", interPacketInterval);
+  cmd.Parse(argc, argv);
+
+  // let's go in real time
+  // NOTE: if you go in real time I strongly advise to use
+  // --ns3::RealtimeSimulatorImpl::SynchronizationMode=HardLimit
+  // I've seen that if BestEffort is used things can break
+  // (even simple stuff such as ARP)
+  //GlobalValue::Bind ("SimulatorImplementationType", 
+  //                 StringValue ("ns3::RealtimeSimulatorImpl"));
+
+ // let's speed things up, we don't need these details for this scenario
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));  
+
+  GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));
+
+  ConfigStore inputConfig;
+  inputConfig.ConfigureDefaults();
+
+  // parse again so you can override default values from the command line
+  cmd.Parse(argc, argv);
+
+
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<EmuEpcHelper>  epcHelper = CreateObject<EmuEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+  epcHelper->Initialize ();
+
+  Ptr<Node> pgw = epcHelper->GetPgwNode ();
+
+   // Create a single RemoteHost
+  NodeContainer remoteHostContainer;
+  remoteHostContainer.Create (1);
+  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
+  InternetStackHelper internet;
+  internet.Install (remoteHostContainer);
+
+  // Create the Internet
+  PointToPointHelper p2ph;
+  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
+  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
+  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
+  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
+  Ipv4AddressHelper ipv4h;
+  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
+  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
+  // interface 0 is localhost, 1 is the p2p device
+  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
+
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
+  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
+
+  NodeContainer ueNodes;
+  NodeContainer enbNodes;
+  enbNodes.Create(nEnbs);
+  ueNodes.Create(nEnbs*nUesPerEnb);
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  for (uint16_t i = 0; i < nEnbs; i++)
+    {
+      positionAlloc->Add (Vector(distance * i, 0, 0));
+    }
+  MobilityHelper mobility;
+  mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator(positionAlloc);
+  mobility.Install(enbNodes);
+  mobility.Install(ueNodes);
+
+  // Install LTE Devices to the nodes
+  NetDeviceContainer enbLteDevs = lteHelper->InstallEnbDevice (enbNodes);
+  NetDeviceContainer ueLteDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Install the IP stack on the UEs
+  internet.Install (ueNodes);
+  Ipv4InterfaceContainer ueIpIface;
+  ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevs));
+  // Assign IP address to UEs, and install applications
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ueNode = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+    }
+
+  lteHelper->Attach (ueLteDevs); 
+  // side effects: 1) use idle mode cell selection, 2) activate default EPS bearer
+
+  // randomize a bit start times to avoid simulation artifacts
+  // (e.g., buffer overflows due to packet transmissions happening
+  // exactly at the same time) 
+  Ptr<UniformRandomVariable> startTimeSeconds = CreateObject<UniformRandomVariable> ();
+  startTimeSeconds->SetAttribute ("Min", DoubleValue (0));
+  startTimeSeconds->SetAttribute ("Max", DoubleValue (interPacketInterval/1000.0));
+
+  // Install and start applications on UEs and remote host
+  uint16_t dlPort = 1234;
+  uint16_t ulPort = 2000;
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      ++ulPort;
+      ApplicationContainer clientApps;
+      ApplicationContainer serverApps;
+
+
+      PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort));
+      PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), ulPort));
+      serverApps.Add (dlPacketSinkHelper.Install (ueNodes.Get(u)));
+      serverApps.Add (ulPacketSinkHelper.Install (remoteHost));
+
+      UdpClientHelper dlClient (ueIpIface.GetAddress (u), dlPort);
+      dlClient.SetAttribute ("Interval", TimeValue (MilliSeconds(interPacketInterval)));
+      dlClient.SetAttribute ("MaxPackets", UintegerValue(1000000));
+
+      UdpClientHelper ulClient (remoteHostAddr, ulPort);
+      ulClient.SetAttribute ("Interval", TimeValue (MilliSeconds(interPacketInterval)));
+      ulClient.SetAttribute ("MaxPackets", UintegerValue(1000000));
+
+      clientApps.Add (dlClient.Install (remoteHost));
+      clientApps.Add (ulClient.Install (ueNodes.Get(u)));
+
+      serverApps.Start (Seconds (startTimeSeconds->GetValue ()));
+      clientApps.Start (Seconds (startTimeSeconds->GetValue ()));  
+    }
+
+  Simulator::Stop(Seconds(simTime));
+  Simulator::Run();
+
+  Simulator::Destroy();
+  return 0;
+}
+
diff -Naur ns-3.20/src/lte/examples/lena-uplink-power-control.cc ns-3.21/src/lte/examples/lena-uplink-power-control.cc
--- ns-3.20/src/lte/examples/lena-uplink-power-control.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/examples/lena-uplink-power-control.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,100 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/lte-module.h"
+#include "ns3/config-store.h"
+#include <ns3/buildings-helper.h>
+
+using namespace ns3;
+
+/*
+ * This example show how to configure and how Uplink Power Control works.
+ */
+
+int main (int argc, char *argv[])
+{	
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::Alpha", DoubleValue (1.0));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  uint8_t bandwidth = 25;
+  double d1 = 0;
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes);
+
+/*   the topology is the following:
+ *
+ *   eNB1-------------------------UE
+ *                  d1
+ */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   		// eNB1
+  positionAlloc->Add (Vector (d1, 0.0, 0.0));  		// UE1
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate a data radio bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  Simulator::Stop (Seconds (0.500));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/lte/examples/wscript ns-3.21/src/lte/examples/wscript
--- ns-3.20/src/lte/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -40,4 +40,15 @@
     obj = bld.create_ns3_program('lena-x2-handover-measures',
                                  ['lte'])
     obj.source = 'lena-x2-handover-measures.cc'
-
+    obj = bld.create_ns3_program('lena-simple-epc-emu',
+                                 ['lte', 'emu'])
+    obj.source = 'lena-simple-epc-emu.cc'
+    obj = bld.create_ns3_program('lena-frequency-reuse',
+                                 ['lte'])
+    obj.source = 'lena-frequency-reuse.cc'
+    obj = bld.create_ns3_program('lena-distributed-ffr',
+                                 ['lte'])
+    obj.source = 'lena-distributed-ffr.cc'
+    obj = bld.create_ns3_program('lena-uplink-power-control',
+                                 ['lte'])
+    obj.source = 'lena-uplink-power-control.cc'
diff -Naur ns-3.20/src/lte/helper/emu-epc-helper.cc ns-3.21/src/lte/helper/emu-epc-helper.cc
--- ns-3.20/src/lte/helper/emu-epc-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/helper/emu-epc-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,363 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011-2013 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jaume Nin <jnin@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ *         Manuel Requena <manuel.requena@cttc.es>
+ */
+
+#include <ns3/emu-epc-helper.h>
+#include <ns3/log.h>
+#include <ns3/inet-socket-address.h>
+#include <ns3/mac48-address.h>
+#include <ns3/eps-bearer.h>
+#include <ns3/ipv4-address.h>
+#include <ns3/internet-stack-helper.h>
+#include <ns3/packet-socket-helper.h>
+#include <ns3/packet-socket-address.h>
+#include <ns3/epc-enb-application.h>
+#include <ns3/epc-sgw-pgw-application.h>
+#include <ns3/emu-fd-net-device-helper.h>
+
+#include <ns3/lte-enb-rrc.h>
+#include <ns3/epc-x2.h>
+#include <ns3/lte-enb-net-device.h>
+#include <ns3/lte-ue-net-device.h>
+#include <ns3/epc-mme.h>
+#include <ns3/epc-ue-nas.h>
+#include <ns3/string.h>
+#include <ns3/abort.h>
+
+#include <iomanip>
+#include <iostream>
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("EmuEpcHelper");
+
+NS_OBJECT_ENSURE_REGISTERED (EmuEpcHelper);
+
+
+EmuEpcHelper::EmuEpcHelper () 
+  : m_gtpuUdpPort (2152)  // fixed by the standard
+{
+  NS_LOG_FUNCTION (this);
+
+}
+
+EmuEpcHelper::~EmuEpcHelper ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+TypeId
+EmuEpcHelper::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::EmuEpcHelper")
+    .SetParent<EpcHelper> ()
+    .AddConstructor<EmuEpcHelper> ()
+    .AddAttribute ("sgwDeviceName", 
+                   "The name of the device used for the S1-U interface of the SGW",
+                   StringValue ("veth0"),
+                   MakeStringAccessor (&EmuEpcHelper::m_sgwDeviceName),
+                   MakeStringChecker ())
+    .AddAttribute ("enbDeviceName", 
+                   "The name of the device used for the S1-U interface of the eNB",
+                   StringValue ("veth1"),
+                   MakeStringAccessor (&EmuEpcHelper::m_enbDeviceName),
+                   MakeStringChecker ())
+    .AddAttribute ("SgwMacAddress", 
+                   "MAC address used for the SGW ",
+                   StringValue ("00:00:00:59:00:aa"),
+                   MakeStringAccessor (&EmuEpcHelper::m_sgwMacAddress),
+                   MakeStringChecker ())
+    .AddAttribute ("EnbMacAddressBase", 
+                   "First 5 bytes of the Enb MAC address base",
+                   StringValue ("00:00:00:eb:00"),
+                   MakeStringAccessor (&EmuEpcHelper::m_enbMacAddressBase),
+                   MakeStringChecker ())
+    ;
+  return tid;
+}
+
+void
+EmuEpcHelper::DoInitialize ()
+{
+  NS_LOG_LOGIC (this);   
+
+
+  // we use a /8 net for all UEs
+  m_ueAddressHelper.SetBase ("7.0.0.0", "255.0.0.0");
+
+  
+ 
+  // create SgwPgwNode
+  m_sgwPgw = CreateObject<Node> ();
+  InternetStackHelper internet;
+  internet.SetIpv4StackInstall (true);
+  internet.Install (m_sgwPgw);
+  
+  // create S1-U socket
+  Ptr<Socket> sgwPgwS1uSocket = Socket::CreateSocket (m_sgwPgw, TypeId::LookupByName ("ns3::UdpSocketFactory"));
+  int retval = sgwPgwS1uSocket->Bind (InetSocketAddress (Ipv4Address::GetAny (), m_gtpuUdpPort));
+  NS_ASSERT (retval == 0);
+
+  // create TUN device implementing tunneling of user data over GTP-U/UDP/IP 
+  m_tunDevice = CreateObject<VirtualNetDevice> ();
+  // allow jumbo packets
+  m_tunDevice->SetAttribute ("Mtu", UintegerValue (30000));
+
+  // yes we need this
+  m_tunDevice->SetAddress (Mac48Address::Allocate ()); 
+
+  m_sgwPgw->AddDevice (m_tunDevice);
+  NetDeviceContainer tunDeviceContainer;
+  tunDeviceContainer.Add (m_tunDevice);
+  
+  // the TUN device is on the same subnet as the UEs, so when a packet
+  // addressed to an UE arrives at the intenet to the WAN interface of
+  // the PGW it will be forwarded to the TUN device. 
+  Ipv4InterfaceContainer tunDeviceIpv4IfContainer = m_ueAddressHelper.Assign (tunDeviceContainer);  
+
+  // create EpcSgwPgwApplication
+  m_sgwPgwApp = CreateObject<EpcSgwPgwApplication> (m_tunDevice, sgwPgwS1uSocket);
+  m_sgwPgw->AddApplication (m_sgwPgwApp);
+  
+  // connect SgwPgwApplication and virtual net device for tunneling
+  m_tunDevice->SetSendCallback (MakeCallback (&EpcSgwPgwApplication::RecvFromTunDevice, m_sgwPgwApp));
+
+  // Create MME and connect with SGW via S11 interface
+  m_mme = CreateObject<EpcMme> ();
+  m_mme->SetS11SapSgw (m_sgwPgwApp->GetS11SapSgw ());
+  m_sgwPgwApp->SetS11SapMme (m_mme->GetS11SapMme ());
+
+  // Create EmuFdNetDevice for SGW
+  EmuFdNetDeviceHelper emu;
+  NS_LOG_LOGIC ("SGW device: " << m_sgwDeviceName);
+  emu.SetDeviceName (m_sgwDeviceName);
+  NetDeviceContainer sgwDevices = emu.Install (m_sgwPgw);
+  Ptr<NetDevice> sgwDevice = sgwDevices.Get (0);
+  NS_LOG_LOGIC ("MAC address of SGW: " << m_sgwMacAddress);
+  sgwDevice->SetAttribute ("Address", Mac48AddressValue (m_sgwMacAddress.c_str ()));
+
+  // we use a /8 subnet so the SGW and the eNBs can talk directly to each other
+  m_epcIpv4AddressHelper.SetBase ("10.0.0.0", "255.255.255.0", "0.0.0.1");  
+  m_sgwIpIfaces = m_epcIpv4AddressHelper.Assign (sgwDevices);
+  m_epcIpv4AddressHelper.SetBase ("10.0.0.0", "255.0.0.0", "0.0.0.101");  
+  
+  
+  EpcHelper::DoInitialize ();
+}
+
+void
+EmuEpcHelper::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  m_tunDevice->SetSendCallback (MakeNullCallback<bool, Ptr<Packet>, const Address&, const Address&, uint16_t> ());
+  m_tunDevice = 0;
+  m_sgwPgwApp = 0;  
+  m_sgwPgw->Dispose ();
+}
+
+
+void
+EmuEpcHelper::AddEnb (Ptr<Node> enb, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId)
+{
+  NS_LOG_FUNCTION (this << enb << lteEnbNetDevice << cellId);
+
+  Initialize ();
+
+  NS_ASSERT (enb == lteEnbNetDevice->GetNode ());  
+
+  // add an IPv4 stack to the previously created eNB
+  InternetStackHelper internet;
+  internet.Install (enb);
+  NS_LOG_LOGIC ("number of Ipv4 ifaces of the eNB after node creation: " << enb->GetObject<Ipv4> ()->GetNInterfaces ());
+
+
+
+  // Create an EmuFdNetDevice for the eNB to connect with the SGW and other eNBs
+  EmuFdNetDeviceHelper emu;
+  NS_LOG_LOGIC ("eNB device: " << m_enbDeviceName);
+  emu.SetDeviceName (m_enbDeviceName);  
+  NetDeviceContainer enbDevices = emu.Install (enb);
+
+  NS_ABORT_IF ((cellId == 0) || (cellId > 255));
+  std::ostringstream enbMacAddress;
+  enbMacAddress << m_enbMacAddressBase << ":" << std::hex << std::setfill ('0') << std::setw (2) << cellId;
+  NS_LOG_LOGIC ("MAC address of enB with cellId " << cellId << " : " << enbMacAddress.str ());
+  Ptr<NetDevice> enbDev = enbDevices.Get (0);
+  enbDev->SetAttribute ("Address", Mac48AddressValue (enbMacAddress.str ().c_str ()));
+
+  //emu.EnablePcap ("enbDevice", enbDev);
+
+  NS_LOG_LOGIC ("number of Ipv4 ifaces of the eNB after installing emu dev: " << enb->GetObject<Ipv4> ()->GetNInterfaces ());  
+  Ipv4InterfaceContainer enbIpIfaces = m_epcIpv4AddressHelper.Assign (enbDevices);
+  NS_LOG_LOGIC ("number of Ipv4 ifaces of the eNB after assigning Ipv4 addr to S1 dev: " << enb->GetObject<Ipv4> ()->GetNInterfaces ());
+  
+  Ipv4Address enbAddress = enbIpIfaces.GetAddress (0);
+  Ipv4Address sgwAddress = m_sgwIpIfaces.GetAddress (0);
+
+  // create S1-U socket for the ENB
+  Ptr<Socket> enbS1uSocket = Socket::CreateSocket (enb, TypeId::LookupByName ("ns3::UdpSocketFactory"));
+  int retval = enbS1uSocket->Bind (InetSocketAddress (enbAddress, m_gtpuUdpPort));
+  NS_ASSERT (retval == 0);
+    
+  // create LTE socket for the ENB 
+  Ptr<Socket> enbLteSocket = Socket::CreateSocket (enb, TypeId::LookupByName ("ns3::PacketSocketFactory"));
+  PacketSocketAddress enbLteSocketBindAddress;
+  enbLteSocketBindAddress.SetSingleDevice (lteEnbNetDevice->GetIfIndex ());
+  enbLteSocketBindAddress.SetProtocol (Ipv4L3Protocol::PROT_NUMBER);
+  retval = enbLteSocket->Bind (enbLteSocketBindAddress);
+  NS_ASSERT (retval == 0);  
+  PacketSocketAddress enbLteSocketConnectAddress;
+  enbLteSocketConnectAddress.SetPhysicalAddress (Mac48Address::GetBroadcast ());
+  enbLteSocketConnectAddress.SetSingleDevice (lteEnbNetDevice->GetIfIndex ());
+  enbLteSocketConnectAddress.SetProtocol (Ipv4L3Protocol::PROT_NUMBER);
+  retval = enbLteSocket->Connect (enbLteSocketConnectAddress);
+  NS_ASSERT (retval == 0);  
+  
+
+  NS_LOG_INFO ("create EpcEnbApplication");
+  Ptr<EpcEnbApplication> enbApp = CreateObject<EpcEnbApplication> (enbLteSocket, enbS1uSocket, enbAddress, sgwAddress, cellId);
+  enb->AddApplication (enbApp);
+  NS_ASSERT (enb->GetNApplications () == 1);
+  NS_ASSERT_MSG (enb->GetApplication (0)->GetObject<EpcEnbApplication> () != 0, "cannot retrieve EpcEnbApplication");
+  NS_LOG_LOGIC ("enb: " << enb << ", enb->GetApplication (0): " << enb->GetApplication (0));
+
+  
+  NS_LOG_INFO ("Create EpcX2 entity");
+  Ptr<EpcX2> x2 = CreateObject<EpcX2> ();
+  enb->AggregateObject (x2);
+
+  NS_LOG_INFO ("connect S1-AP interface");
+  m_mme->AddEnb (cellId, enbAddress, enbApp->GetS1apSapEnb ());
+  m_sgwPgwApp->AddEnb (cellId, enbAddress, sgwAddress);
+  enbApp->SetS1apSapMme (m_mme->GetS1apSapMme ());
+}
+
+
+void
+EmuEpcHelper::AddX2Interface (Ptr<Node> enb1, Ptr<Node> enb2)
+{
+  NS_LOG_FUNCTION (this << enb1 << enb2);
+
+  NS_LOG_WARN ("X2 support still untested");
+
+
+  // for X2, we reuse the same device and IP address of the S1-U interface
+  Ptr<Ipv4> enb1Ipv4 = enb1->GetObject<Ipv4> ();
+  Ptr<Ipv4> enb2Ipv4 = enb2->GetObject<Ipv4> ();
+  NS_LOG_LOGIC ("number of Ipv4 ifaces of the eNB #1: " << enb1Ipv4->GetNInterfaces ());
+  NS_LOG_LOGIC ("number of Ipv4 ifaces of the eNB #2: " << enb2Ipv4->GetNInterfaces ());
+  NS_LOG_LOGIC ("number of NetDevices of the eNB #1: " << enb1->GetNDevices ());
+  NS_LOG_LOGIC ("number of NetDevices of the eNB #2: " << enb2->GetNDevices ());
+
+  // 0 is the LTE device, 1 is localhost, 2 is the EPC NetDevice
+  Ptr<NetDevice> enb1EpcDev = enb1->GetDevice (2);
+  Ptr<NetDevice> enb2EpcDev = enb2->GetDevice (2);
+
+  int32_t enb1Interface =  enb1Ipv4->GetInterfaceForDevice (enb1EpcDev);
+  int32_t enb2Interface =  enb2Ipv4->GetInterfaceForDevice (enb2EpcDev);
+  NS_ASSERT (enb1Interface >= 0);
+  NS_ASSERT (enb2Interface >= 0);
+  NS_ASSERT (enb1Ipv4->GetNAddresses (enb1Interface) == 1);
+  NS_ASSERT (enb2Ipv4->GetNAddresses (enb2Interface) == 1);
+  Ipv4Address enb1Addr = enb1Ipv4->GetAddress (enb1Interface, 0).GetLocal (); 
+  Ipv4Address enb2Addr = enb2Ipv4->GetAddress (enb2Interface, 0).GetLocal (); 
+  NS_LOG_LOGIC (" eNB 1 IP address: " << enb1Addr); 
+  NS_LOG_LOGIC (" eNB 2 IP address: " << enb2Addr);
+  
+  // Add X2 interface to both eNBs' X2 entities
+  Ptr<EpcX2> enb1X2 = enb1->GetObject<EpcX2> ();
+  Ptr<LteEnbNetDevice> enb1LteDev = enb1->GetDevice (0)->GetObject<LteEnbNetDevice> ();
+  uint16_t enb1CellId = enb1LteDev->GetCellId ();
+  NS_LOG_LOGIC ("LteEnbNetDevice #1 = " << enb1LteDev << " - CellId = " << enb1CellId);
+
+  Ptr<EpcX2> enb2X2 = enb2->GetObject<EpcX2> ();
+  Ptr<LteEnbNetDevice> enb2LteDev = enb2->GetDevice (0)->GetObject<LteEnbNetDevice> ();
+  uint16_t enb2CellId = enb2LteDev->GetCellId ();
+  NS_LOG_LOGIC ("LteEnbNetDevice #2 = " << enb2LteDev << " - CellId = " << enb2CellId);
+
+  enb1X2->AddX2Interface (enb1CellId, enb1Addr, enb2CellId, enb2Addr);
+  enb2X2->AddX2Interface (enb2CellId, enb2Addr, enb1CellId, enb1Addr);
+
+  enb1LteDev->GetRrc ()->AddX2Neighbour (enb2LteDev->GetCellId ());
+  enb2LteDev->GetRrc ()->AddX2Neighbour (enb1LteDev->GetCellId ());
+}
+
+
+void 
+EmuEpcHelper::AddUe (Ptr<NetDevice> ueDevice, uint64_t imsi)
+{
+  NS_LOG_FUNCTION (this << imsi << ueDevice );
+  
+  m_mme->AddUe (imsi);
+  m_sgwPgwApp->AddUe (imsi);
+  
+}
+
+void
+EmuEpcHelper::ActivateEpsBearer (Ptr<NetDevice> ueDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)
+{
+  NS_LOG_FUNCTION (this << ueDevice << imsi);
+
+  // we now retrieve the IPv4 address of the UE and notify it to the SGW;
+  // we couldn't do it before since address assignment is triggered by
+  // the user simulation program, rather than done by the EPC   
+  Ptr<Node> ueNode = ueDevice->GetNode (); 
+  Ptr<Ipv4> ueIpv4 = ueNode->GetObject<Ipv4> ();
+  NS_ASSERT_MSG (ueIpv4 != 0, "UEs need to have IPv4 installed before EPS bearers can be activated");
+  int32_t interface =  ueIpv4->GetInterfaceForDevice (ueDevice);
+  NS_ASSERT (interface >= 0);
+  NS_ASSERT (ueIpv4->GetNAddresses (interface) == 1);
+  Ipv4Address ueAddr = ueIpv4->GetAddress (interface, 0).GetLocal ();
+  NS_LOG_LOGIC (" UE IP address: " << ueAddr);  m_sgwPgwApp->SetUeAddress (imsi, ueAddr);
+  
+  m_mme->AddBearer (imsi, tft, bearer);
+  Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
+  if (ueLteDevice)
+    {
+      Simulator::ScheduleNow (&EpcUeNas::ActivateEpsBearer, ueLteDevice->GetNas (), bearer, tft);
+    }
+}
+
+
+Ptr<Node>
+EmuEpcHelper::GetPgwNode ()
+{
+  return m_sgwPgw;
+}
+
+
+Ipv4InterfaceContainer 
+EmuEpcHelper::AssignUeIpv4Address (NetDeviceContainer ueDevices)
+{
+  return m_ueAddressHelper.Assign (ueDevices);
+}
+
+
+
+Ipv4Address
+EmuEpcHelper::GetUeDefaultGatewayAddress ()
+{
+  // return the address of the tun device
+  return m_sgwPgw->GetObject<Ipv4> ()->GetAddress (1, 0).GetLocal ();
+}
+
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/helper/emu-epc-helper.h ns-3.21/src/lte/helper/emu-epc-helper.h
--- ns-3.20/src/lte/helper/emu-epc-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/helper/emu-epc-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,126 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011-2013 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Jaume Nin <jnin@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ *         Manuel Requena <manuel.requena@cttc.es>
+ */
+
+#ifndef EMU_EPC_HELPER_H
+#define EMU_EPC_HELPER_H
+
+#include <ns3/object.h>
+#include <ns3/ipv4-address-helper.h>
+#include <ns3/data-rate.h>
+#include <ns3/epc-tft.h>
+#include <ns3/eps-bearer.h>
+#include <ns3/epc-helper.h>
+
+namespace ns3 {
+
+class Node;
+class NetDevice;
+class VirtualNetDevice;
+class EpcSgwPgwApplication;
+class EpcX2;
+class EpcMme;
+
+/**
+ * \brief Create an EPC network using EmuFdNetDevice 
+ *
+ * This Helper will create an EPC network topology comprising of a
+ * single node that implements both the SGW and PGW functionality, and
+ * an MME node. The S1-U, X2-U and X2-C interfaces are realized using
+ * EmuFdNetDevice; in particular, one device is used to send all the
+ * traffic related to these interfaces. 
+ */
+class EmuEpcHelper : public EpcHelper
+{
+public:
+  
+  /** 
+   * Constructor
+   */
+  EmuEpcHelper ();
+
+  /** 
+   * Destructor
+   */  
+  virtual ~EmuEpcHelper ();
+  
+  // inherited from Object
+  static TypeId GetTypeId (void);
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  // inherited from EpcHelper
+  virtual void AddEnb (Ptr<Node> enbNode, Ptr<NetDevice> lteEnbNetDevice, uint16_t cellId);
+  virtual void AddUe (Ptr<NetDevice> ueLteDevice, uint64_t imsi);
+  virtual void AddX2Interface (Ptr<Node> enbNode1, Ptr<Node> enbNode2);
+  virtual void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer);
+  virtual Ptr<Node> GetPgwNode ();
+  virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices);
+  virtual Ipv4Address GetUeDefaultGatewayAddress ();
+
+
+
+private:
+
+  /** 
+   * helper to assign addresses to UE devices as well as to the TUN device of the SGW/PGW
+   */
+  Ipv4AddressHelper m_ueAddressHelper; 
+
+
+  /**
+   * SGW-PGW network element
+   */  
+  Ptr<Node> m_sgwPgw; 
+  Ptr<EpcSgwPgwApplication> m_sgwPgwApp;
+  Ptr<VirtualNetDevice> m_tunDevice;
+  Ptr<EpcMme> m_mme;
+
+  /** 
+   * helper to assign addresses to S1-U NetDevices 
+   */
+  Ipv4AddressHelper m_epcIpv4AddressHelper; 
+
+  /**
+   * UDP port where the GTP-U Socket is bound, fixed by the standard as 2152
+   */
+  uint16_t m_gtpuUdpPort;
+
+  /**
+   * Map storing for each IMSI the corresponding eNB NetDevice
+   * 
+   */
+  std::map<uint64_t, Ptr<NetDevice> > m_imsiEnbDeviceMap;
+  
+  Ipv4InterfaceContainer m_sgwIpIfaces; 
+
+  std::string m_sgwDeviceName;
+  std::string m_enbDeviceName;
+  std::string m_sgwMacAddress;
+  std::string m_enbMacAddressBase;
+};
+
+
+
+
+} // namespace ns3
+
+#endif // EMU_EPC_HELPER_H
diff -Naur ns-3.20/src/lte/helper/lte-helper.cc ns-3.21/src/lte/helper/lte-helper.cc
--- ns-3.20/src/lte/helper/lte-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/helper/lte-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -35,7 +35,7 @@
 #include <ns3/lte-enb-phy.h>
 #include <ns3/lte-ue-phy.h>
 #include <ns3/lte-spectrum-phy.h>
-#include <ns3/lte-sinr-chunk-processor.h>
+#include <ns3/lte-chunk-processor.h>
 #include <ns3/multi-model-spectrum-channel.h>
 #include <ns3/friis-spectrum-propagation-loss.h>
 #include <ns3/trace-fading-loss-model.h>
@@ -43,6 +43,7 @@
 #include <ns3/lte-enb-net-device.h>
 #include <ns3/lte-ue-net-device.h>
 #include <ns3/ff-mac-scheduler.h>
+#include <ns3/lte-ffr-algorithm.h>
 #include <ns3/lte-handover-algorithm.h>
 #include <ns3/lte-anr.h>
 #include <ns3/lte-rlc.h>
@@ -151,10 +152,18 @@
                    MakeStringAccessor (&LteHelper::SetSchedulerType,
                                        &LteHelper::GetSchedulerType),
                    MakeStringChecker ())
+    .AddAttribute ("FfrAlgorithm",
+                   "The type of FFR algorithm to be used for eNBs. "
+                   "The allowed values for this attributes are the type names "
+                   "of any class inheriting from ns3::LteFfrAlgorithm.",
+                   StringValue ("ns3::LteFrNoOpAlgorithm"),
+                   MakeStringAccessor (&LteHelper::SetFfrAlgorithmType,
+                                       &LteHelper::GetFfrAlgorithmType),
+                   MakeStringChecker ())
     .AddAttribute ("HandoverAlgorithm",
                    "The type of handover algorithm to be used for eNBs. "
                    "The allowed values for this attributes are the type names "
-                   "of any class inheriting from ns3::HandoverAlgorithm.",
+                   "of any class inheriting from ns3::LteHandoverAlgorithm.",
                    StringValue ("ns3::NoOpHandoverAlgorithm"),
                    MakeStringAccessor (&LteHelper::SetHandoverAlgorithmType,
                                        &LteHelper::GetHandoverAlgorithmType),
@@ -185,6 +194,12 @@
                    BooleanValue (true),
                    MakeBooleanAccessor (&LteHelper::m_isAnrEnabled),
                    MakeBooleanChecker ())
+    .AddAttribute ("UsePdschForCqiGeneration",
+                   "If true, DL-CQI will be calculated from PDCCH as signal and PDSCH as interference "
+                   "If false, DL-CQI will be calculated from PDCCH as signal and PDCCH as interference  ",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteHelper::m_usePdschForCqiGeneration),
+                   MakeBooleanChecker ())
   ;
   return tid;
 }
@@ -228,6 +243,27 @@
 }
 
 std::string
+LteHelper::GetFfrAlgorithmType () const
+{
+  return m_ffrAlgorithmFactory.GetTypeId ().GetName ();
+}
+
+void
+LteHelper::SetFfrAlgorithmType (std::string type)
+{
+  NS_LOG_FUNCTION (this << type);
+  m_ffrAlgorithmFactory = ObjectFactory ();
+  m_ffrAlgorithmFactory.SetTypeId (type);
+}
+
+void
+LteHelper::SetFfrAlgorithmAttribute (std::string n, const AttributeValue &v)
+{
+  NS_LOG_FUNCTION (this << n);
+  m_ffrAlgorithmFactory.Set (n, v);
+}
+
+std::string
 LteHelper::GetHandoverAlgorithmType () const
 {
   return m_handoverAlgorithmFactory.GetTypeId ().GetName ();
@@ -389,13 +425,17 @@
   ulPhy->SetHarqPhyModule (harq);
   phy->SetHarqPhyModule (harq);
 
-  Ptr<LteCtrlSinrChunkProcessor> pCtrl = Create<LteCtrlSinrChunkProcessor> (phy->GetObject<LtePhy> ());
+  Ptr<LteChunkProcessor> pCtrl = Create<LteChunkProcessor> ();
+  pCtrl->AddCallback (MakeCallback (&LteEnbPhy::GenerateCtrlCqiReport, phy));
   ulPhy->AddCtrlSinrChunkProcessor (pCtrl); // for evaluating SRS UL-CQI
 
-  Ptr<LteDataSinrChunkProcessor> pData = Create<LteDataSinrChunkProcessor> (ulPhy, phy);
+  Ptr<LteChunkProcessor> pData = Create<LteChunkProcessor> ();
+  pData->AddCallback (MakeCallback (&LteEnbPhy::GenerateDataCqiReport, phy));
+  pData->AddCallback (MakeCallback (&LteSpectrumPhy::UpdateSinrPerceived, ulPhy));
   ulPhy->AddDataSinrChunkProcessor (pData); // for evaluating PUSCH UL-CQI
 
-  Ptr<LteInterferencePowerChunkProcessor> pInterf = Create<LteInterferencePowerChunkProcessor> (phy);
+  Ptr<LteChunkProcessor> pInterf = Create<LteChunkProcessor> ();
+  pInterf->AddCallback (MakeCallback (&LteEnbPhy::ReportInterference, phy));
   ulPhy->AddInterferenceDataChunkProcessor (pInterf); // for interference power tracing
 
   dlPhy->SetChannel (m_downlinkChannel);
@@ -413,6 +453,7 @@
 
   Ptr<LteEnbMac> mac = CreateObject<LteEnbMac> ();
   Ptr<FfMacScheduler> sched = m_schedulerFactory.Create<FfMacScheduler> ();
+  Ptr<LteFfrAlgorithm> ffrAlgorithm = m_ffrAlgorithmFactory.Create<LteFfrAlgorithm> ();
   Ptr<LteHandoverAlgorithm> handoverAlgorithm = m_handoverAlgorithmFactory.Create<LteHandoverAlgorithm> ();
   Ptr<LteEnbRrc> rrc = CreateObject<LteEnbRrc> ();
 
@@ -463,6 +504,14 @@
   phy->SetLteEnbCphySapUser (rrc->GetLteEnbCphySapUser ());
   rrc->SetLteEnbCphySapProvider (phy->GetLteEnbCphySapProvider ());
 
+  //FFR SAP
+  sched->SetLteFfrSapProvider (ffrAlgorithm->GetLteFfrSapProvider ());
+  ffrAlgorithm->SetLteFfrSapUser (sched->GetLteFfrSapUser ());
+
+  rrc->SetLteFfrRrcSapProvider (ffrAlgorithm->GetLteFfrRrcSapProvider ());
+  ffrAlgorithm->SetLteFfrRrcSapUser (rrc->GetLteFfrRrcSapUser ());
+  //FFR SAP END
+
   Ptr<LteEnbNetDevice> dev = m_enbNetDeviceFactory.Create<LteEnbNetDevice> ();
   dev->SetNode (n);
   dev->SetAttribute ("CellId", UintegerValue (cellId)); 
@@ -471,6 +520,7 @@
   dev->SetAttribute ("FfMacScheduler", PointerValue (sched));
   dev->SetAttribute ("LteEnbRrc", PointerValue (rrc)); 
   dev->SetAttribute ("LteHandoverAlgorithm", PointerValue (handoverAlgorithm));
+  dev->SetAttribute ("LteFfrAlgorithm", PointerValue (ffrAlgorithm));
 
   if (m_isAnrEnabled)
     {
@@ -544,18 +594,31 @@
   ulPhy->SetHarqPhyModule (harq);
   phy->SetHarqPhyModule (harq);
 
-  Ptr<LteRsReceivedPowerChunkProcessor> pRs = Create<LteRsReceivedPowerChunkProcessor> (phy->GetObject<LtePhy> ());
+  Ptr<LteChunkProcessor> pRs = Create<LteChunkProcessor> ();
+  pRs->AddCallback (MakeCallback (&LteUePhy::ReportRsReceivedPower, phy));
   dlPhy->AddRsPowerChunkProcessor (pRs);
 
-  Ptr<LteInterferencePowerChunkProcessor> pInterf = Create<LteInterferencePowerChunkProcessor> (phy);
+  Ptr<LteChunkProcessor> pInterf = Create<LteChunkProcessor> ();
+  pInterf->AddCallback (MakeCallback (&LteUePhy::ReportInterference, phy));
   dlPhy->AddInterferenceCtrlChunkProcessor (pInterf); // for RSRQ evaluation of UE Measurements
 
-  Ptr<LteCtrlSinrChunkProcessor> pCtrl = Create<LteCtrlSinrChunkProcessor> (phy->GetObject<LtePhy> (), dlPhy);
+  Ptr<LteChunkProcessor> pCtrl = Create<LteChunkProcessor> ();
+  pCtrl->AddCallback (MakeCallback (&LteUePhy::GenerateCtrlCqiReport, phy));
+  pCtrl->AddCallback (MakeCallback (&LteSpectrumPhy::UpdateSinrPerceived, dlPhy));
   dlPhy->AddCtrlSinrChunkProcessor (pCtrl);
 
-  Ptr<LteDataSinrChunkProcessor> pData = Create<LteDataSinrChunkProcessor> (dlPhy);
+  Ptr<LteChunkProcessor> pData = Create<LteChunkProcessor> ();
+  pData->AddCallback (MakeCallback (&LteSpectrumPhy::UpdateSinrPerceived, dlPhy));
   dlPhy->AddDataSinrChunkProcessor (pData);
 
+  Ptr<LteChunkProcessor> pDataInterf = Create<LteChunkProcessor> ();
+  if (m_usePdschForCqiGeneration)
+    {
+      pDataInterf->AddCallback (MakeCallback (&LteUePhy::ReportDataInterference, phy));
+    }
+
+  dlPhy->AddInterferenceDataChunkProcessor (pDataInterf);
+
   dlPhy->SetChannel (m_downlinkChannel);
   ulPhy->SetChannel (m_uplinkChannel);
 
@@ -926,7 +989,7 @@
   LogComponentEnable ("LteSpectrumValueHelper", LOG_LEVEL_ALL);
   LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL);
   LogComponentEnable ("LteInterference", LOG_LEVEL_ALL);
-  LogComponentEnable ("LteSinrChunkProcessor", LOG_LEVEL_ALL);
+  LogComponentEnable ("LteChunkProcessor", LOG_LEVEL_ALL);
 
   std::string propModelStr = m_dlPathlossModelFactory.GetTypeId ().GetName ().erase (0,5).c_str ();
   LogComponentEnable ("LteNetDevice", LOG_LEVEL_ALL);
diff -Naur ns-3.20/src/lte/helper/lte-helper.h ns-3.21/src/lte/helper/lte-helper.h
--- ns-3.20/src/lte/helper/lte-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/helper/lte-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -114,6 +114,26 @@
 
   /**
    *
+   * \param type the type of FFR algorithm to be used for the eNBs
+   */
+  void SetFfrAlgorithmType (std::string type);
+
+  /**
+   *
+   * \return the FFR algorithm type
+   */
+  std::string GetFfrAlgorithmType () const;
+
+  /**
+   * set an attribute for the FFR algorithm to be created
+   *
+   * \param n the name of the attribute
+   * \param v the value of the attribute
+   */
+  void SetFfrAlgorithmAttribute (std::string n, const AttributeValue &v);
+
+  /**
+   *
    * \param type the type of handover algorithm to be used for the eNBs
    */
   void SetHandoverAlgorithmType (std::string type);
@@ -538,6 +558,7 @@
   Ptr<Object> m_uplinkPathlossModel;
 
   ObjectFactory m_schedulerFactory;
+  ObjectFactory m_ffrAlgorithmFactory;
   ObjectFactory m_handoverAlgorithmFactory;
   ObjectFactory m_propagationModelFactory;
   ObjectFactory m_enbNetDeviceFactory;
@@ -570,6 +591,8 @@
 
   bool m_useIdealRrc;
   bool m_isAnrEnabled;
+
+  bool m_usePdschForCqiGeneration;
 };
 
 
diff -Naur ns-3.20/src/lte/helper/lte-hex-grid-enb-topology-helper.cc ns-3.21/src/lte/helper/lte-hex-grid-enb-topology-helper.cc
--- ns-3.20/src/lte/helper/lte-hex-grid-enb-topology-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/helper/lte-hex-grid-enb-topology-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -139,18 +139,21 @@
 	case 0:
 	  antennaOrientation = 0;
 	  x += m_offset;
+	  m_lteHelper->SetFfrAlgorithmAttribute("FrCellTypeId", UintegerValue (1));
 	  break;
 	  
 	case 1:
 	  antennaOrientation = 120;
 	  x -= m_offset/2.0;
 	  y += m_offset*xydfactor;
+	  m_lteHelper->SetFfrAlgorithmAttribute("FrCellTypeId", UintegerValue (2));
 	  break;
 	  
 	case 2:
 	  antennaOrientation = -120;
 	  x -= m_offset/2.0;
 	  y -= m_offset*xydfactor;
+	  m_lteHelper->SetFfrAlgorithmAttribute("FrCellTypeId", UintegerValue (3));
 	  break;
 	
           // no default, n%3 = 0, 1, 2
diff -Naur ns-3.20/src/lte/helper/radio-environment-map-helper.cc ns-3.21/src/lte/helper/radio-environment-map-helper.cc
--- ns-3.20/src/lte/helper/radio-environment-map-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/helper/radio-environment-map-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -24,6 +24,7 @@
 #include <ns3/abort.h>
 #include <ns3/log.h>
 #include <ns3/double.h>
+#include <ns3/integer.h>
 #include <ns3/uinteger.h>
 #include <ns3/string.h>
 #include <ns3/boolean.h>
@@ -133,6 +134,17 @@
                    MakeUintegerAccessor (&RadioEnvironmentMapHelper::SetBandwidth, 
                                          &RadioEnvironmentMapHelper::GetBandwidth),
                    MakeUintegerChecker<uint16_t> ())
+    .AddAttribute ("UseDataChannel",
+                   "If true, REM will be generated for PDSCH and for PDCCH otherwise ",
+                   BooleanValue (false),
+                   MakeBooleanAccessor (&RadioEnvironmentMapHelper::m_useDataChannel),
+                   MakeBooleanChecker ())
+    .AddAttribute ("RbId",
+                   "Resource block Id, for which REM will be generated,"
+                   "default value is -1, what means REM will be averaged from all RBs",
+                   IntegerValue (-1),
+                   MakeIntegerAccessor (&RadioEnvironmentMapHelper::m_rbId),
+                   MakeIntegerChecker<int32_t> ())
   ;
   return tid;
 }
@@ -189,9 +201,17 @@
       return;
     }
   
-  Simulator::Schedule (Seconds (0.0026), 
+  double startDelay = 0.0026;
+
+  if (m_useDataChannel)
+    {
+      //need time to start transmission of data channel
+      startDelay = 0.5001;
+    }
+
+  Simulator::Schedule (Seconds (startDelay),
                        &RadioEnvironmentMapHelper::DelayedInstall,
-                                   this);
+                       this);
 }
 
 
@@ -216,6 +236,8 @@
       p.bmm->AggregateObject (buildingInfo); // operation usually done by BuildingsHelper::Install
       p.phy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (m_earfcn, m_bandwidth));
       p.phy->SetMobility (p.bmm);
+      p.phy->SetUseDataChannel (m_useDataChannel);
+      p.phy->SetRbId (m_rbId);
       m_channel->AddRx (p.phy);
       m_rem.push_back (p);
     }
@@ -249,6 +271,7 @@
             }
         }      
     }
+
   Simulator::Schedule (Seconds (remIterationStartTime), 
                        &RadioEnvironmentMapHelper::Finalize,
                        this);
@@ -268,7 +291,7 @@
            y < ((x == xMax) ? yMax : m_yMax) + 0.5*m_yStep;
            y += m_yStep)
         {
-          NS_ASSERT (remIt != m_rem.end ());          
+          NS_ASSERT (remIt != m_rem.end ());
           remIt->bmm->SetPosition (Vector (x, y, m_z));
           BuildingsHelper::MakeConsistent (remIt->bmm);
           ++remIt;
diff -Naur ns-3.20/src/lte/helper/radio-environment-map-helper.h ns-3.21/src/lte/helper/radio-environment-map-helper.h
--- ns-3.20/src/lte/helper/radio-environment-map-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/helper/radio-environment-map-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -112,6 +112,9 @@
 
   std::ofstream m_outFile;
 
+  bool m_useDataChannel;
+  int32_t m_rbId;
+
 };
 
 
diff -Naur ns-3.20/src/lte/model/cqa-ff-mac-scheduler.cc ns-3.21/src/lte/model/cqa-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/cqa-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/cqa-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -270,6 +270,8 @@
   m_amc = CreateObject <LteAmc> ();
   m_cschedSapProvider = new CqaSchedulerMemberCschedSapProvider (this);
   m_schedSapProvider = new CqaSchedulerMemberSchedSapProvider (this);
+  m_ffrSapProvider = 0;
+  m_ffrSapUser = new MemberLteFfrSapUser<CqaFfMacScheduler> (this);
 }
 
 CqaFfMacScheduler::~CqaFfMacScheduler ()
@@ -290,6 +292,7 @@
   m_ulHarqProcessesDciBuffer.clear ();
   delete m_cschedSapProvider;
   delete m_schedSapProvider;
+  delete m_ffrSapUser;
 }
 
 TypeId
@@ -349,6 +352,18 @@
 }
 
 void
+CqaFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+CqaFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 CqaFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -785,6 +800,16 @@
   uint16_t rbgAllocatedNum = 0;
   std::set <uint16_t> rntiAllocated;
   rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+
+  rbgMap = m_ffrSapProvider->GetAvailableDlRbg ();
+  for (std::vector<bool>::iterator it = rbgMap.begin (); it != rbgMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbgAllocatedNum++;
+        }
+    }
+
   FfMacSchedSapUser::SchedDlConfigIndParameters ret;
 
   //   update UL HARQ proc id
@@ -796,8 +821,48 @@
 
 
   // RACH Allocation
+  uint16_t rbAllocatedNum = 0;
+  std::vector <bool> ulRbMap;
+  ulRbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  ulRbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+  uint8_t maxContinuousUlBandwidth = 0;
+  uint8_t tmpMinBandwidth = 0;
+  uint16_t ffrRbStartOffset = 0;
+  uint16_t tmpFfrRbStartOffset = 0;
+  uint16_t index = 0;
+
+  for (std::vector<bool>::iterator it = ulRbMap.begin (); it != ulRbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+          if (tmpMinBandwidth > maxContinuousUlBandwidth)
+            {
+              maxContinuousUlBandwidth = tmpMinBandwidth;
+              ffrRbStartOffset = tmpFfrRbStartOffset;
+            }
+          tmpMinBandwidth = 0;
+        }
+      else
+        {
+          if (tmpMinBandwidth == 0)
+            {
+              tmpFfrRbStartOffset = index;
+            }
+          tmpMinBandwidth++;
+        }
+      index++;
+    }
+
+  if (tmpMinBandwidth > maxContinuousUlBandwidth)
+    {
+      maxContinuousUlBandwidth = tmpMinBandwidth;
+      ffrRbStartOffset = tmpFfrRbStartOffset;
+    }
+
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
   uint16_t rbStart = 0;
+  rbStart = ffrRbStartOffset;
   std::vector <struct RachListElement_s>::iterator itRach;
   for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
     {
@@ -812,7 +877,7 @@
       uint16_t rbLen = 1;
       uint16_t tbSizeBits = 0;
       // find lowest TB size that fits UL grant estimated size
-      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < (ffrRbStartOffset + maxContinuousUlBandwidth)))
         {
           rbLen++;
           tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
@@ -834,7 +899,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
       
       if (m_harqOn == true)
         {
@@ -874,6 +938,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
       
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -1019,7 +1084,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % numberOfRBGs;
                 }
               if (j == dciRbg.size ())
                 {
@@ -1037,7 +1102,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1287,7 +1352,9 @@
   for (int i = 0; i <  numberOfRBGs; i++)
     {
       if (rbgMap.at (i) == false)
-        availableRBGs.insert (i);
+        {
+          availableRBGs.insert (i);
+        }
     }
 
   t_it_HOLgroupToUEs itGBRgroups = map_GBRHOLgroupToUE.begin ();
@@ -1319,6 +1386,7 @@
 
       while (availableRBGs.size ()>0 and itCurrentGroup->second.size ()>0)
         {
+          bool currentRBchecked = false;
           int currentRB = *(availableRBGs.begin ());
           std::map<LteFlowId_t, CQI_value> UeToCQIValue;
           std::map<LteFlowId_t, double > UeToCoitaMetric;
@@ -1343,10 +1411,16 @@
 
               std::map <uint16_t, CqasFlowPerf_t>::iterator itStats;
 
+              if ((m_ffrSapProvider->IsDlRbgAvailableForUe (currentRB, flowId.m_rnti)) == false)
+                {
+                  continue;
+                }
+
               if (m_flowStatsDl.find (flowId.m_rnti) == m_flowStatsDl.end ())
                 {
                   continue;                               // TO DO:  check if this should be logged and how.
                 }
+              currentRBchecked = true;
 
               itStats = m_flowStatsDl.find (flowId.m_rnti);
               double tbr_weight = (*itStats).second.targetThroughput / (*itStats).second.lastAveragedThroughput;
@@ -1461,6 +1535,13 @@
                 }
             }
 
+          if (!currentRBchecked)
+            {
+              // erase current RBG from the list of available RBG
+              availableRBGs.erase (currentRB);
+              continue;
+            }
+
           qos_rb_and_CQI_assigned_to_lc s;
           s.cqi_value_for_lc = UeToCQIValue.find (userWithMaximumMetric)->second;
           s.resource_block_index = currentRB;
@@ -1595,6 +1676,8 @@
       newDci.m_rv.push_back (0);
       //}
 
+      newDci.m_tpc = m_ffrSapProvider->GetTpc ((*itMap).first);
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1677,6 +1760,7 @@
 CqaFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportDlCqiInfo (params);
 
   for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
     {
@@ -1771,6 +1855,7 @@
   NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
 
   RefreshUlCqiMaps ();
+  m_ffrSapProvider->ReportUlCqiInfo (m_ueCqi);
 
   // Generate RBs map
   FfMacSchedSapUser::SchedUlConfigIndParameters ret;
@@ -1785,6 +1870,20 @@
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
 
   rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+
+  rbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+
+  for (std::vector<bool>::iterator it = rbMap.begin (); it != rbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ffrSapProvider->GetMinContinuousUlBandwidth ();
+  uint8_t ffrUlBandwidth = m_cschedCellConfig.m_ulBandwidth - rbAllocatedNum;
+
   // remove RACH allocation
   for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
     {
@@ -1897,7 +1996,9 @@
 
 
   // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
-  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t tempRbPerFlow = (ffrUlBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t rbPerFlow = (minContinuousUlBandwidth < tempRbPerFlow) ? minContinuousUlBandwidth : tempRbPerFlow;
+
   if (rbPerFlow < 3)
     {
       rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
@@ -1951,6 +2052,7 @@
             }
         }
 
+      rbAllocated = 0;
       UlDciListElement_s uldci;
       uldci.m_rnti = (*it).first;
       uldci.m_rbLen = rbPerFlow;
@@ -1967,9 +2069,15 @@
                   free = false;
                   break;
                 }
+              if ((m_ffrSapProvider->IsUlRbgAvailableForUe (j, (*it).first)) == false)
+                {
+                  free = false;
+                  break;
+                }
             }
           if (free)
             {
+        	  NS_LOG_INFO (this << "RNTI: "<< (*it).first<< " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
               uldci.m_rbStart = rbAllocated;
 
               for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
@@ -1998,13 +2106,14 @@
       if (!allocated)
         {
           // unable to allocate new resource: finish scheduling
-          m_nextRntiUl = (*it).first;
-          if (ret.m_dciList.size () > 0)
-            {
-              m_schedSapUser->SchedUlConfigInd (ret);
-            }
-          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
-          return;
+//          m_nextRntiUl = (*it).first;
+//          if (ret.m_dciList.size () > 0)
+//            {
+//              m_schedSapUser->SchedUlConfigInd (ret);
+//            }
+//          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+//          return;
+          break;
         }
 
 
@@ -2093,6 +2202,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/cqa-ff-mac-scheduler.h ns-3.21/src/lte/model/cqa-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/cqa-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/cqa-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -33,6 +33,7 @@
 #include <set>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -94,6 +95,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class CqaSchedulerMemberCschedSapProvider;
   friend class CqaSchedulerMemberSchedSapProvider;
 
@@ -241,6 +246,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/epc-ue-nas.cc ns-3.21/src/lte/model/epc-ue-nas.cc
--- ns-3.20/src/lte/model/epc-ue-nas.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/epc-ue-nas.cc	2014-09-17 20:03:14.000000000 -0700
@@ -236,17 +236,13 @@
   SwitchToState (ACTIVE); // will eventually activate dedicated bearers
 }
 
-void 
+void
 EpcUeNas::DoNotifyConnectionFailed ()
 {
   NS_LOG_FUNCTION (this);
 
-  SwitchToState (OFF);
-  /**
-   * \todo Currently not implemented, action by NAS and upper layers after UE
-   *       fails to switch to CONNNECTED mode. Maybe a retry, or just stop here
-   *       and fire a trace to let user know.
-   */
+  // immediately retry the connection
+  Simulator::ScheduleNow (&LteAsSapProvider::Connect, m_asSapProvider);
 }
 
 void
diff -Naur ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.cc ns-3.21/src/lte/model/fdbet-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.cc	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdbet-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -296,6 +296,18 @@
 }
 
 void
+FdBetFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+FdBetFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 FdBetFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -406,7 +418,7 @@
 FdBetFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
-  
+
   m_uesTxMode.erase (params.m_rnti);
   m_dlHarqCurrentProcessId.erase (params.m_rnti);
   m_dlHarqProcessesStatus.erase  (params.m_rnti);
@@ -601,14 +613,14 @@
   NS_LOG_FUNCTION (this);
 
   std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itTimers;
-  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers ++)
+  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers++)
     {
       for (uint16_t i = 0; i < HARQ_PROC_NUM; i++)
         {
           if ((*itTimers).second.at (i) == HARQ_DL_TIMEOUT)
             {
               // reset HARQ process
-              
+
               NS_LOG_DEBUG (this << " Reset HARQ proc " << i << " for RNTI " << (*itTimers).first);
               std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find ((*itTimers).first);
               if (itStat == m_dlHarqProcessesStatus.end ())
@@ -624,7 +636,7 @@
             }
         }
     }
-  
+
 }
 
 
@@ -697,7 +709,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -737,6 +748,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -882,7 +894,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -900,7 +912,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1029,7 +1041,7 @@
               NS_LOG_DEBUG (this << " RNTI discared for HARQ id" << (uint16_t)(*itFlow).first);
             }
           continue;
-       }
+        }
 
       estAveThr.insert (std::pair <uint16_t, double> ((*itFlow).first, (*itFlow).second.lastAveragedThroughput));
     }
@@ -1047,8 +1059,8 @@
             }
           rbgPerRntiLog.insert (std::pair<uint16_t, int> ((*it).first, 1));
         }
-      
-    
+
+
       // The scheduler tries the best to achieve the equal throughput among all UEs
       int i = 0;
       do 
@@ -1069,7 +1081,7 @@
                 {
                   (*itMap).second.push_back (i);
                 }
-          
+
               // caculate expected throughput for current UE
               std::map <uint16_t,uint8_t>::iterator itCqi;
               itCqi = m_p10CqiRxed.find ((*itMax).first);
@@ -1092,7 +1104,7 @@
                       mcs.push_back (m_amc->GetMcsFromCqi ((*itCqi).second));
                     }
                 }
-          
+
               std::map <uint16_t,int>::iterator itRbgPerRntiLog;
               itRbgPerRntiLog = rbgPerRntiLog.find ((*itMax).first);
               std::map <uint16_t, fdbetsFlowPerf_t>::iterator itPastAveThr;
@@ -1104,12 +1116,12 @@
                   bytesTxed += tbSize;
                 }
               double expectedAveThr = ((1.0 - (1.0 / m_timeWindow)) * (*itPastAveThr).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)(bytesTxed / 0.001));
-          
+
               int rbgPerRnti = (*itRbgPerRntiLog).second;
               rbgPerRnti++;
-              rbgPerRntiLog[(*itMax).first] = rbgPerRnti;   
+              rbgPerRntiLog[(*itMax).first] = rbgPerRnti;
               estAveThr[(*itMax).first] = expectedAveThr;
-          
+
               // find new UE with largest priority metric
               metricMax = 0.0;
               for (it = estAveThr.begin (); it != estAveThr.end (); it++)
@@ -1121,13 +1133,13 @@
                       metricMax = metric;
                     }
                 } // end for estAveThr
-        
+
               rbgMap.at (i) = true;
-    
-          } // end for free RBGs
-    
+
+            } // end for free RBGs
+
           i++;
-      
+
         } 
       while ( i < rbgNum ); // end for RBGs
 
@@ -1240,6 +1252,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1307,7 +1321,7 @@
   NS_LOG_FUNCTION (this);
 
   m_rachList = params.m_rachList;
-  
+
   return;
 }
 
@@ -1438,7 +1452,7 @@
     {
       //   Process UL HARQ feedback
       for (uint16_t i = 0; i < params.m_ulInfoList.size (); i++)
-        {        
+        {
           if (params.m_ulInfoList.at (i).m_receptionStatus == UlInfoListElement_s::NotOk)
             {
               // retx correspondent block: retrieve the UL-DCI
@@ -1501,7 +1515,7 @@
               ret.m_dciList.push_back (dci);
               rntiAllocated.insert (dci.m_rnti);
             }
-            else
+          else
             {
               NS_LOG_INFO (this << " HARQ-ACK feedback from RNTI " << params.m_ulInfoList.at (i).m_rnti);
             }
@@ -1528,7 +1542,7 @@
           m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
-        
+
       return;  // no flows to be scheduled
     }
 
@@ -1584,7 +1598,7 @@
           if (rbPerFlow < 3)
             {
               // terminate allocation
-              rbPerFlow = 0;      
+              rbPerFlow = 0;
             }
         }
 
@@ -1628,7 +1642,7 @@
               if (rbPerFlow < 3)
                 {
                   // terminate allocation
-                  rbPerFlow = 0;                 
+                  rbPerFlow = 0;
                 }
             }
         }
@@ -1676,8 +1690,8 @@
 
           // translate SINR -> cqi: WILD ACK: same as DL
           double s = log2 ( 1 + (
-                                 std::pow (10, minSinr / 10 )  /
-                                 ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
+                              std::pow (10, minSinr / 10 )  /
+                              ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
           cqi = m_amc->GetCqiFromSpectralEfficiency (s);
           if (cqi == 0)
             {
@@ -1730,6 +1744,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
@@ -1817,7 +1838,7 @@
               uint8_t bsrId = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (lcg);
               buffer += BufferSizeLevelBsr::BsrId2BufferSize (bsrId);
             }
-          
+
           uint16_t rnti = params.m_macCeList.at (i).m_rnti;
           NS_LOG_LOGIC (this << "RNTI=" << rnti << " buffer=" << buffer);
           it = m_ceBsrRxed.find (rnti);
@@ -2081,7 +2102,7 @@
       // Update status queue
       if (((*it).second.m_rlcStatusPduSize > 0) && (size >= (*it).second.m_rlcStatusPduSize))
         {
-           (*it).second.m_rlcStatusPduSize = 0;
+          (*it).second.m_rlcStatusPduSize = 0;
         }
       else if (((*it).second.m_rlcRetransmissionQueueSize > 0) && (size >= (*it).second.m_rlcRetransmissionQueueSize))
         {
@@ -2096,7 +2117,7 @@
               // overestimate RLC overhead rather than
               // underestimate it and risk unneeded
               // segmentation which increases delay 
-              rlcOverhead = 4;                                  
+              rlcOverhead = 4;
             }
           else
             {
@@ -2109,7 +2130,7 @@
               (*it).second.m_rlcTransmissionQueueSize = 0;
             }
           else
-            {                    
+            {
               (*it).second.m_rlcTransmissionQueueSize -= size - rlcOverhead;
             }
         }
diff -Naur ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.h ns-3.21/src/lte/model/fdbet-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/fdbet-ff-mac-scheduler.h	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdbet-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -94,6 +94,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class FdBetSchedulerMemberCschedSapProvider;
   friend class FdBetSchedulerMemberSchedSapProvider;
 
@@ -240,6 +244,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.cc ns-3.21/src/lte/model/fdmt-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.cc	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdmt-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -295,6 +295,18 @@
 }
 
 void
+FdMtFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+FdMtFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 FdMtFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -685,7 +697,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -725,6 +736,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -870,7 +882,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -888,7 +900,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1246,6 +1258,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1708,6 +1722,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.h ns-3.21/src/lte/model/fdmt-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/fdmt-ff-mac-scheduler.h	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdmt-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -31,7 +31,7 @@
 #include <set>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -86,6 +86,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class FdMtSchedulerMemberCschedSapProvider;
   friend class FdMtSchedulerMemberSchedSapProvider;
 
@@ -232,6 +236,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.cc ns-3.21/src/lte/model/fdtbfq-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.cc	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdtbfq-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -223,6 +223,8 @@
   m_amc = CreateObject <LteAmc> ();
   m_cschedSapProvider = new FdTbfqSchedulerMemberCschedSapProvider (this);
   m_schedSapProvider = new FdTbfqSchedulerMemberSchedSapProvider (this);
+  m_ffrSapProvider = 0;
+  m_ffrSapUser = new MemberLteFfrSapUser<FdTbfqFfMacScheduler> (this);
 }
 
 FdTbfqFfMacScheduler::~FdTbfqFfMacScheduler ()
@@ -243,6 +245,7 @@
   m_ulHarqProcessesDciBuffer.clear ();
   delete m_cschedSapProvider;
   delete m_schedSapProvider;
+  delete m_ffrSapUser;
 }
 
 TypeId
@@ -318,6 +321,18 @@
 }
 
 void
+FdTbfqFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+FdTbfqFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 FdTbfqFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -692,6 +707,16 @@
   uint16_t rbgAllocatedNum = 0;
   std::set <uint16_t> rntiAllocated;
   rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+
+  rbgMap = m_ffrSapProvider->GetAvailableDlRbg ();
+  for (std::vector<bool>::iterator it = rbgMap.begin (); it != rbgMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbgAllocatedNum++;
+        }
+    }
+
   FfMacSchedSapUser::SchedDlConfigIndParameters ret;
 
   //   update UL HARQ proc id
@@ -702,8 +727,48 @@
     }
 
   // RACH Allocation
+  uint16_t rbAllocatedNum = 0;
+  std::vector <bool> ulRbMap;
+  ulRbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  ulRbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+  uint8_t maxContinuousUlBandwidth = 0;
+  uint8_t tmpMinBandwidth = 0;
+  uint16_t ffrRbStartOffset = 0;
+  uint16_t tmpFfrRbStartOffset = 0;
+  uint16_t index = 0;
+
+  for (std::vector<bool>::iterator it = ulRbMap.begin (); it != ulRbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+          if (tmpMinBandwidth > maxContinuousUlBandwidth)
+            {
+              maxContinuousUlBandwidth = tmpMinBandwidth;
+              ffrRbStartOffset = tmpFfrRbStartOffset;
+            }
+          tmpMinBandwidth = 0;
+        }
+      else
+        {
+          if (tmpMinBandwidth == 0)
+            {
+              tmpFfrRbStartOffset = index;
+            }
+          tmpMinBandwidth++;
+        }
+      index++;
+    }
+
+  if (tmpMinBandwidth > maxContinuousUlBandwidth)
+    {
+      maxContinuousUlBandwidth = tmpMinBandwidth;
+      ffrRbStartOffset = tmpFfrRbStartOffset;
+    }
+
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
   uint16_t rbStart = 0;
+  rbStart = ffrRbStartOffset;
   std::vector <struct RachListElement_s>::iterator itRach;
   for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
     {
@@ -718,7 +783,7 @@
       uint16_t rbLen = 1;
       uint16_t tbSizeBits = 0;
       // find lowest TB size that fits UL grant estimated size
-      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < (ffrRbStartOffset + maxContinuousUlBandwidth)))
         {
           rbLen++;
           tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
@@ -740,9 +805,8 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
-            if (m_harqOn == true)
+      if (m_harqOn == true)
         {
           // generate UL-DCI for HARQ retransmissions
           UlDciListElement_s uldci;
@@ -780,6 +844,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -925,7 +990,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -943,7 +1008,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1200,6 +1265,9 @@
               if ( rbgMap.at (k) == true) // this RBG is allocated in RACH procedure
                 continue;
 
+              if ((m_ffrSapProvider->IsDlRbgAvailableForUe (k, (*itMax).first)) == false)
+                continue;
+
               std::vector <uint8_t> sbCqi;
               if (itCqi == m_a30CqiRxed.end ())
                 {
@@ -1496,6 +1564,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = m_ffrSapProvider->GetTpc ((*itMap).first);
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1544,6 +1614,7 @@
 FdTbfqFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportDlCqiInfo (params);
 
   for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
     {
@@ -1638,6 +1709,7 @@
   NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
 
   RefreshUlCqiMaps ();
+  m_ffrSapProvider->ReportUlCqiInfo (m_ueCqi);
 
   // Generate RBs map
   FfMacSchedSapUser::SchedUlConfigIndParameters ret;
@@ -1652,6 +1724,20 @@
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
 
   rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+
+  rbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+
+  for (std::vector<bool>::iterator it = rbMap.begin (); it != rbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ffrSapProvider->GetMinContinuousUlBandwidth ();
+  uint8_t ffrUlBandwidth = m_cschedCellConfig.m_ulBandwidth - rbAllocatedNum;
+
   // remove RACH allocation
   for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
     {
@@ -1763,7 +1849,9 @@
 
 
   // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
-  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t tempRbPerFlow = (ffrUlBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t rbPerFlow = (minContinuousUlBandwidth < tempRbPerFlow) ? minContinuousUlBandwidth : tempRbPerFlow;
+
   if (rbPerFlow < 3)
     {
       rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
@@ -1817,6 +1905,7 @@
             }
         }
 
+      rbAllocated = 0;
       UlDciListElement_s uldci;
       uldci.m_rnti = (*it).first;
       uldci.m_rbLen = rbPerFlow;
@@ -1833,9 +1922,15 @@
                   free = false;
                   break;
                 }
+              if ((m_ffrSapProvider->IsUlRbgAvailableForUe (j, (*it).first)) == false)
+                {
+                  free = false;
+                  break;
+                }
             }
           if (free)
             {
+              NS_LOG_INFO (this << "RNTI: "<< (*it).first<< " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
               uldci.m_rbStart = rbAllocated;
 
               for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
@@ -1864,13 +1959,14 @@
       if (!allocated)
         {
           // unable to allocate new resource: finish scheduling
-          m_nextRntiUl = (*it).first;
-          if (ret.m_dciList.size () > 0)
-            {
-              m_schedSapUser->SchedUlConfigInd (ret);
-            }
-          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
-          return;
+//          m_nextRntiUl = (*it).first;
+//          if (ret.m_dciList.size () > 0)
+//            {
+//              m_schedSapUser->SchedUlConfigInd (ret);
+//            }
+//          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+//          return;
+    	  break;
         }
 
 
@@ -1959,6 +2055,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.h ns-3.21/src/lte/model/fdtbfq-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/fdtbfq-ff-mac-scheduler.h	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/fdtbfq-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -101,6 +101,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class FdTbfqSchedulerMemberCschedSapProvider;
   friend class FdTbfqSchedulerMemberSchedSapProvider;
 
@@ -247,6 +251,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/ff-mac-scheduler.h ns-3.21/src/lte/model/ff-mac-scheduler.h
--- ns-3.20/src/lte/model/ff-mac-scheduler.h	2014-06-16 22:00:30.000000000 -0700
+++ ns-3.21/src/lte/model/ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -33,6 +33,8 @@
 class FfMacSchedSapUser;
 class FfMacCschedSapProvider;
 class FfMacSchedSapProvider;
+class LteFfrSapProvider;
+class LteFfrSapUser;
 
 /**
  * \ingroup lte
@@ -106,6 +108,21 @@
    */
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider () = 0;
 
+  //FFR SAPs
+  /**
+   *
+   * Set the Provider part of the LteFfrSap that this Scheduler will
+   * interact with
+   *
+   * \param s
+   */
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s) = 0;
+
+  /**
+   *
+   * \return the User part of the LteFfrSap provided by the FfrAlgorithm
+   */
+  virtual LteFfrSapUser* GetLteFfrSapUser () = 0;
   
 protected:
     
diff -Naur ns-3.20/src/lte/model/lte-chunk-processor.cc ns-3.21/src/lte/model/lte-chunk-processor.cc
--- ns-3.20/src/lte/model/lte-chunk-processor.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-chunk-processor.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,89 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Nicola Baldo <nbaldo@cttc.es>
+ * Modified by : Marco Miozzo <mmiozzo@cttc.es>
+ *        (move from CQI to Ctrl and Data SINR Chunk processors
+ */
+
+
+#include <ns3/log.h>
+#include <ns3/spectrum-value.h>
+#include "lte-chunk-processor.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteChunkProcessor");
+
+namespace ns3 {
+
+LteChunkProcessor::LteChunkProcessor ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+LteChunkProcessor::~LteChunkProcessor ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteChunkProcessor::AddCallback (LteChunkProcessorCallback c)
+{
+  NS_LOG_FUNCTION (this);
+  m_lteChunkProcessorCallbacks.push_back (c);
+}
+
+void
+LteChunkProcessor::Start ()
+{
+  NS_LOG_FUNCTION (this);
+  m_sumValues = 0;
+  m_totDuration = MicroSeconds (0);
+}
+
+
+void
+LteChunkProcessor::EvaluateChunk (const SpectrumValue& sinr, Time duration)
+{
+  NS_LOG_FUNCTION (this << sinr << duration);
+  if (m_sumValues == 0)
+    {
+      m_sumValues = Create<SpectrumValue> (sinr.GetSpectrumModel ());
+    }
+  (*m_sumValues) += sinr * duration.GetSeconds ();
+  m_totDuration += duration;
+}
+
+void
+LteChunkProcessor::End ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_totDuration.GetSeconds () > 0)
+    {
+      std::vector<LteChunkProcessorCallback>::iterator it;
+      for (it = m_lteChunkProcessorCallbacks.begin (); it != m_lteChunkProcessorCallbacks.end (); it++)
+        {
+          (*it)((*m_sumValues) / m_totDuration.GetSeconds ());
+        }
+    }
+  else
+    {
+      NS_LOG_WARN ("m_numSinr == 0");
+    }
+}
+
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-chunk-processor.h ns-3.21/src/lte/model/lte-chunk-processor.h
--- ns-3.20/src/lte/model/lte-chunk-processor.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-chunk-processor.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,95 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009, 2010 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Nicola Baldo <nbaldo@cttc.es>
+ * Modified by : Marco Miozzo <mmiozzo@cttc.es>
+ *        (move from CQI to Ctrl and Data SINR Chunk processors)
+ * Modified by : Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *        (removed all Lte***ChunkProcessor implementations
+ *        and created generic LteChunkProcessor)
+ */
+
+
+#ifndef LTE_CHUNK_PROCESSOR_H
+#define LTE_CHUNK_PROCESSOR_H
+
+#include <ns3/ptr.h>
+#include <ns3/nstime.h>
+#include <ns3/object.h>
+
+namespace ns3 {
+
+class SpectrumValue;
+
+typedef Callback< void, const SpectrumValue& > LteChunkProcessorCallback;
+
+/** 
+ * This abstract class is used to process the time-vs-frequency
+ * SINR/interference/power chunk of a received LTE signal
+ * which was calculated by the LteInterference object.
+ */
+class LteChunkProcessor : public SimpleRefCount<LteChunkProcessor>
+{
+public:
+  LteChunkProcessor ();
+  virtual ~LteChunkProcessor ();
+
+  /**
+    * \brief Add callback to list
+    *
+    * This function adds callback c to list. Each callback pass
+    * calculated value to its object and is called in
+    * LteChunkProcessor::End().
+    */
+  virtual void AddCallback (LteChunkProcessorCallback c);
+
+  /**
+    * \brief Clear internal variables
+    *
+    * This function clears internal variables in the beginning of
+    * calculation
+    */
+  virtual void Start ();
+
+  /**
+    * \brief Collect SpectrumValue and duration of signal
+    *
+    * Passed values are collected in m_sumValues and m_totDuration variables.
+    */
+  virtual void EvaluateChunk (const SpectrumValue& sinr, Time duration);
+
+  /**
+    * \brief Finish calculation and inform interested objects about calculated value
+    *
+    * During this function all callbacks from list are executed
+    * to inform interested object about calculated value. This
+    * function is called at the end of calculation.
+    */
+  virtual void End ();
+
+private:
+  Ptr<SpectrumValue> m_sumValues;
+  Time m_totDuration;
+
+  std::vector<LteChunkProcessorCallback> m_lteChunkProcessorCallbacks;
+};
+
+} // namespace ns3
+
+
+
+#endif /* LTE_CHUNK_PROCESSOR_H */
diff -Naur ns-3.20/src/lte/model/lte-enb-cphy-sap.h ns-3.21/src/lte/model/lte-enb-cphy-sap.h
--- ns-3.20/src/lte/model/lte-enb-cphy-sap.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-cphy-sap.h	2014-09-17 20:03:14.000000000 -0700
@@ -80,6 +80,14 @@
   virtual void RemoveUe (uint16_t rnti) = 0;
   
   /**
+   * Set the UE transmission power offset P_A
+   *
+   * \param rnti the UE id relative to this cell
+   * \param pa transmission power offset
+   */
+  virtual void SetPa (uint16_t rnti, double pa) = 0;
+
+  /**
    * \param rnti the RNTI of the user
    * \param txMode the transmissionMode of the user
    */
@@ -102,6 +110,12 @@
    * \param sib1 the System Information Block Type 1 to be sent on the BCH
    */
   virtual void SetSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 sib1) = 0;
+
+  /**
+   *
+   * \return Reference Signal Power for SIB2
+   */
+  virtual int8_t GetReferenceSignalPower () = 0;
 };
 
 
@@ -140,10 +154,12 @@
   virtual void SetEarfcn (uint16_t ulEarfcn, uint16_t dlEarfcn);
   virtual void AddUe (uint16_t rnti);
   virtual void RemoveUe (uint16_t rnti);
+  virtual void SetPa (uint16_t rnti, double pa);
   virtual void SetTransmissionMode (uint16_t  rnti, uint8_t txMode);
   virtual void SetSrsConfigurationIndex (uint16_t  rnti, uint16_t srsCi);
   virtual void SetMasterInformationBlock (LteRrcSap::MasterInformationBlock mib);
   virtual void SetSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 sib1);
+  virtual int8_t GetReferenceSignalPower ();
   
 private:
   MemberLteEnbCphySapProvider ();
@@ -199,6 +215,13 @@
 
 template <class C>
 void 
+MemberLteEnbCphySapProvider<C>::SetPa (uint16_t rnti, double pa)
+{
+  m_owner->DoSetPa (rnti, pa);
+}
+
+template <class C>
+void
 MemberLteEnbCphySapProvider<C>::SetTransmissionMode (uint16_t  rnti, uint8_t txMode)
 {
   m_owner->DoSetTransmissionMode (rnti, txMode);
@@ -225,7 +248,12 @@
   m_owner->DoSetSystemInformationBlockType1 (sib1);
 }
 
-
+template <class C>
+int8_t
+MemberLteEnbCphySapProvider<C>::GetReferenceSignalPower ()
+{
+  return m_owner->DoGetReferenceSignalPower ();
+}
 
 /**
  * Template for the implementation of the LteEnbCphySapUser as a member
diff -Naur ns-3.20/src/lte/model/lte-enb-net-device.cc ns-3.21/src/lte/model/lte-enb-net-device.cc
--- ns-3.20/src/lte/model/lte-enb-net-device.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-net-device.cc	2014-09-17 20:03:14.000000000 -0700
@@ -40,6 +40,7 @@
 #include <ns3/ff-mac-scheduler.h>
 #include <ns3/lte-handover-algorithm.h>
 #include <ns3/lte-anr.h>
+#include <ns3/lte-ffr-algorithm.h>
 #include <ns3/ipv4-l3-protocol.h>
 #include <ns3/abort.h>
 #include <ns3/log.h>
@@ -72,6 +73,11 @@
                    PointerValue (),
                    MakePointerAccessor (&LteEnbNetDevice::m_anr),
                    MakePointerChecker <LteAnr> ())
+    .AddAttribute ("LteFfrAlgorithm",
+                   "The FFR algorithm associated to this EnbNetDevice",
+                   PointerValue (),
+                   MakePointerAccessor (&LteEnbNetDevice::m_ffrAlgorithm),
+                   MakePointerChecker <LteFfrAlgorithm> ())
     .AddAttribute ("LteEnbMac",
                    "The MAC associated to this EnbNetDevice",
                    PointerValue (),
@@ -170,6 +176,9 @@
       m_anr = 0;
     }
 
+  m_ffrAlgorithm->Dispose ();
+  m_ffrAlgorithm = 0;
+
   m_phy->Dispose ();
   m_phy = 0;
 
@@ -326,6 +335,8 @@
     {
       m_anr->Initialize ();
     }
+
+  m_ffrAlgorithm->Initialize ();
 }
 
 
diff -Naur ns-3.20/src/lte/model/lte-enb-net-device.h ns-3.21/src/lte/model/lte-enb-net-device.h
--- ns-3.20/src/lte/model/lte-enb-net-device.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-net-device.h	2014-09-17 20:03:14.000000000 -0700
@@ -42,7 +42,7 @@
 class FfMacScheduler;
 class LteHandoverAlgorithm;
 class LteAnr;
-
+class LteFfrAlgorithm;
 
 /**
  * \ingroup lte
@@ -200,6 +200,8 @@
 
   Ptr<LteAnr> m_anr;
 
+  Ptr<LteFfrAlgorithm> m_ffrAlgorithm;
+
   uint16_t m_cellId; /**< Cell Identifer. Part of the CGI, see TS 29.274, section 8.21.1  */
 
   uint8_t m_dlBandwidth; /**< downlink bandwidth in RBs */
diff -Naur ns-3.20/src/lte/model/lte-enb-phy.cc ns-3.21/src/lte/model/lte-enb-phy.cc
--- ns-3.20/src/lte/model/lte-enb-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -75,7 +75,7 @@
   virtual void SetCellId (uint16_t cellId);
   virtual void SendLteControlMessage (Ptr<LteControlMessage> msg);
   virtual uint8_t GetMacChTtiDelay ();
-  
+
 
 private:
   LteEnbPhy* m_phy;
@@ -279,6 +279,13 @@
   return m_txPower;
 }
 
+int8_t
+LteEnbPhy::DoGetReferenceSignalPower () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_txPower;
+}
+
 void
 LteEnbPhy::SetNoiseFigure (double nf)
 {
@@ -400,6 +407,15 @@
   m_downlinkSpectrumPhy->SetTxPowerSpectralDensity (txPsd);
 }
 
+void
+LteEnbPhy::SetDownlinkSubChannelsWithPowerAllocation (std::vector<int> mask)
+{
+  NS_LOG_FUNCTION (this);
+  m_listOfDownlinkSubchannel = mask;
+  Ptr<SpectrumValue> txPsd = CreateTxPowerSpectralDensityWithPowerAllocation ();
+  m_downlinkSpectrumPhy->SetTxPowerSpectralDensity (txPsd);
+}
+
 std::vector<int>
 LteEnbPhy::GetDownlinkSubChannels (void)
 {
@@ -407,6 +423,21 @@
   return m_listOfDownlinkSubchannel;
 }
 
+void
+LteEnbPhy::GeneratePowerAllocationMap (uint16_t rnti, int rbId)
+{
+  NS_LOG_FUNCTION (this);
+  double rbgTxPower = m_txPower;
+
+  std::map<uint16_t, double>::iterator it = m_paMap.find (rnti);
+  if (it != m_paMap.end ())
+    {
+      rbgTxPower = m_txPower + it->second;
+    }
+
+  m_dlPowerAllocationMap.insert (std::pair<int, double> (rbId, rbgTxPower));
+}
+
 Ptr<SpectrumValue>
 LteEnbPhy::CreateTxPowerSpectralDensity ()
 {
@@ -417,6 +448,16 @@
   return psd;
 }
 
+Ptr<SpectrumValue>
+LteEnbPhy::CreateTxPowerSpectralDensityWithPowerAllocation ()
+{
+  NS_LOG_FUNCTION (this);
+
+  Ptr<SpectrumValue> psd = LteSpectrumValueHelper::CreateTxPowerSpectralDensity (m_dlEarfcn, m_dlBandwidth, m_txPower, m_dlPowerAllocationMap, GetDownlinkSubChannels ());
+
+  return psd;
+}
+
 
 void
 LteEnbPhy::CalcChannelQualityForUe (std::vector <double> sinr, Ptr<LteSpectrumPhy> ue)
@@ -448,7 +489,7 @@
 {
   NS_LOG_FUNCTION (this);
   std::list<Ptr<LteControlMessage> >::iterator it;
-  for (it = msgList.begin (); it != msgList.end(); it++)
+  for (it = msgList.begin (); it != msgList.end (); it++)
     {
       switch ((*it)->GetMessageType ())
         {
@@ -490,7 +531,7 @@
                 m_enbPhySapUser->ReceiveLteControlMessage (*it);
               }
           }
-          break;          
+          break;
         default:
           NS_FATAL_ERROR ("Unexpected LteControlMessage type");
           break;
@@ -543,13 +584,13 @@
   if (m_srsPeriodicity>0)
     { 
       // might be 0 in case the eNB has no UEs attached
-        NS_ASSERT_MSG (m_nrFrames > 1, "the SRS index check code assumes that frameNo starts at 1");
+      NS_ASSERT_MSG (m_nrFrames > 1, "the SRS index check code assumes that frameNo starts at 1");
       NS_ASSERT_MSG (m_nrSubFrames > 0 && m_nrSubFrames <= 10, "the SRS index check code assumes that subframeNo starts at 1");
       m_currentSrsOffset = (((m_nrFrames-1)*10 + (m_nrSubFrames-1)) % m_srsPeriodicity);
     }
   NS_LOG_INFO ("-----sub frame " << m_nrSubFrames << "-----");
   m_harqPhyModule->SubframeIndication (m_nrFrames, m_nrSubFrames);
-  
+
   // update info on TB to be received
   std::list<UlDciLteControlMessage> uldcilist = DequeueUlDci ();
   std::list<UlDciLteControlMessage>::iterator dciIt = uldcilist.begin ();
@@ -558,7 +599,7 @@
     {
       std::set <uint16_t>::iterator it2;
       it2 = m_ueAttached.find ((*dciIt).GetDci ().m_rnti);
-      
+
       if (it2 == m_ueAttached.end ())
         {
           NS_LOG_ERROR ("UE not attached");
@@ -587,6 +628,7 @@
   // process the current burst of control messages
   std::list<Ptr<LteControlMessage> > ctrlMsg = GetControlMessages ();
   m_dlDataRbMap.clear ();
+  m_dlPowerAllocationMap.clear ();
   if (ctrlMsg.size () > 0)
     {
       std::list<Ptr<LteControlMessage> >::iterator it;
@@ -608,6 +650,7 @@
                         {
                           m_dlDataRbMap.push_back ((i * GetRbgSize ()) + k);
                           //NS_LOG_DEBUG(this << " [enb]DL-DCI allocated PRB " << (i*GetRbgSize()) + k);
+                          GeneratePowerAllocationMap (dci->GetDci ().m_rnti, (i * GetRbgSize ()) + k );
                         }
                     }
                   mask = (mask << 1);
@@ -628,7 +671,7 @@
                   params.m_ndi = dci->GetDci ().m_ndi.at (i);
                   m_dlPhyTransmission (params);
                 }
-              
+
             }
           else if (msg->GetMessageType () == LteControlMessage::UL_DCI)
             {
@@ -665,16 +708,16 @@
 
         }
     }
-    
+
   SendControlChannels (ctrlMsg);
-  
+
   // send data frame
   Ptr<PacketBurst> pb = GetPacketBurst ();
   if (pb)
     {
       Simulator::Schedule (DL_CTRL_DELAY_FROM_SUBFRAME_START, // ctrl frame fixed to 3 symbols
-                       &LteEnbPhy::SendDataChannels,
-                       this,pb);
+                           &LteEnbPhy::SendDataChannels,
+                           this,pb);
     }
 
   // trigger the MAC
@@ -704,14 +747,14 @@
       pss = true;
     }
   m_downlinkSpectrumPhy->StartTxDlCtrlFrame (ctrlMsgList, pss);
-  
+
 }
 
 void
 LteEnbPhy::SendDataChannels (Ptr<PacketBurst> pb)
 {
   // set the current tx power spectral density
-  SetDownlinkSubChannels (m_dlDataRbMap);
+  SetDownlinkSubChannelsWithPowerAllocation (m_dlDataRbMap);
   // send the current burts of packets
   NS_LOG_LOGIC (this << " eNB start TX DATA");
   std::list<Ptr<LteControlMessage> > ctrlMsgList;
@@ -845,6 +888,9 @@
  
   bool success = AddUePhy (rnti);
   NS_ASSERT_MSG (success, "AddUePhy() failed");
+
+  // add default P_A value
+  DoSetPa (rnti, 0);
 }
 
 void 
@@ -854,8 +900,33 @@
  
   bool success = DeleteUePhy (rnti);
   NS_ASSERT_MSG (success, "DeleteUePhy() failed");
+
+  // remove also P_A value
+  std::map<uint16_t, double>::iterator it = m_paMap.find (rnti);
+  if (it != m_paMap.end ())
+    {
+      m_paMap.erase (it);
+    }
+
 }
 
+void
+LteEnbPhy::DoSetPa (uint16_t rnti, double pa)
+{
+  NS_LOG_FUNCTION (this << rnti);
+
+  std::map<uint16_t, double>::iterator it = m_paMap.find (rnti);
+
+  if (it == m_paMap.end ())
+    {
+      m_paMap.insert (std::pair<uint16_t, double> (rnti, pa));
+    }
+  else
+    {
+      it->second = pa;
+    }
+
+}
 
 FfMacSchedSapProvider::SchedUlCqiInfoReqParameters
 LteEnbPhy::CreateSrsCqiReport (const SpectrumValue& sinr)
@@ -867,15 +938,15 @@
   int i = 0;
   double srsSum = 0.0;
   for (it = sinr.ConstValuesBegin (); it != sinr.ConstValuesEnd (); it++)
-  {
-    double sinrdb = 10 * log10 ((*it));
-    //       NS_LOG_DEBUG ("ULCQI RB " << i << " value " << sinrdb);
-    // convert from double to fixed point notation Sxxxxxxxxxxx.xxx
-    int16_t sinrFp = LteFfConverter::double2fpS11dot3 (sinrdb);
-    srsSum += (*it);
-    ulcqi.m_ulCqi.m_sinr.push_back (sinrFp);
-    i++;
-  }
+    {
+      double sinrdb = 10 * log10 ((*it));
+      //       NS_LOG_DEBUG ("ULCQI RB " << i << " value " << sinrdb);
+      // convert from double to fixed point notation Sxxxxxxxxxxx.xxx
+      int16_t sinrFp = LteFfConverter::double2fpS11dot3 (sinrdb);
+      srsSum += (*it);
+      ulcqi.m_ulCqi.m_sinr.push_back (sinrFp);
+      i++;
+    }
   // Insert the user generated the srs as a vendor specific parameter
   NS_LOG_DEBUG (this << " ENB RX UL-CQI of " << m_srsUeOffset.at (m_currentSrsOffset));
   VendorSpecificListElement_s vsp;
@@ -888,12 +959,12 @@
   CreateSrsReport (m_srsUeOffset.at (m_currentSrsOffset),
                    (i > 0) ? (srsSum / i) : DBL_MAX);
   return (ulcqi);
-  
+
 }
 
 
 void
-LteEnbPhy::CreateSrsReport(uint16_t rnti, double srs)
+LteEnbPhy::CreateSrsReport (uint16_t rnti, double srs)
 {
   NS_LOG_FUNCTION (this << rnti << srs);
   std::map <uint16_t,uint16_t>::iterator it = m_srsSampleCounterMap.find (rnti);
@@ -976,7 +1047,7 @@
       m_srsCounter.insert (std::pair<uint16_t, uint16_t> (rnti, GetSrsSubframeOffset (srcCi) + 1));
     }
   m_srsUeOffset.at (GetSrsSubframeOffset (srcCi)) = rnti;
-    
+
 }
 
 
diff -Naur ns-3.20/src/lte/model/lte-enb-phy.h ns-3.21/src/lte/model/lte-enb-phy.h
--- ns-3.20/src/lte/model/lte-enb-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -48,7 +48,7 @@
 {
   friend class EnbMemberLteEnbPhySapProvider;
   friend class MemberLteEnbCphySapProvider<LteEnbPhy>;
-  
+
 public:
   /**
    * @warning the default constructor should not be used
@@ -104,6 +104,10 @@
    */
   double GetTxPower () const;
 
+  /**
+   * \return the transmission power in dBm
+   */
+  int8_t DoGetReferenceSignalPower () const;
 
   /**
    * \param pow the noise figure in dB
@@ -119,7 +123,7 @@
    * \param delay the TTI delay between MAC and channel
    */
   void SetMacChDelay (uint8_t delay);
-  
+
   /**
    * \returns the TTI delay between MAC and channel
    */
@@ -134,7 +138,7 @@
    * \return a pointer to the LteSpectrumPhy instance relative to the uplink
    */
   Ptr<LteSpectrumPhy> GetUlSpectrumPhy () const;
-  
+
 
   /**
    * \brief set the resource blocks (a.k.a. sub channels) to be used in the downlink for transmission
@@ -146,7 +150,16 @@
    */
   void SetDownlinkSubChannels (std::vector<int> mask );
 
-
+  /**
+   * \brief set the resource blocks (a.k.a. sub channels) and its power
+   * to be used in the downlink for transmission
+   *
+   * \param mask a vector of integers, if the i-th value is j it means
+   * that the j-th resource block is used for transmission in the
+   * downlink. If there is no i such that the value of the i-th
+   * element is j, it means that RB j is not used.
+   */
+  void SetDownlinkSubChannelsWithPowerAllocation (std::vector<int> mask);
   /**
    * 
    * \return  a vector of integers, if the i-th value is j it means
@@ -156,12 +169,27 @@
    */
   std::vector<int> GetDownlinkSubChannels (void);
 
+
+  /**
+   * \brief Generate power allocation map (i.e. tx power level for each RB)
+   *
+   * \param rnti indicates which UE will occupy this RB
+   * \param rbId indicates which RB UE is using,
+   * power level for this RB is power level of UE
+   */
+  void GeneratePowerAllocationMap (uint16_t rnti, int rbId);
+
   /**
    * \brief Create the PSD for TX
    */
   virtual Ptr<SpectrumValue> CreateTxPowerSpectralDensity ();
 
   /**
+   * \brief Create the PSD for TX with power allocation for each RB
+   */
+  virtual Ptr<SpectrumValue> CreateTxPowerSpectralDensityWithPowerAllocation ();
+
+  /**
    * \brief Calculate the channel quality for a given UE
    * \param sinr a list of computed SINR
    * \param ue the UE
@@ -181,7 +209,7 @@
   * \return UL CQI feedback in the format usable by an FF MAC scheduler
   */
   FfMacSchedSapProvider::SchedUlCqiInfoReqParameters CreatePuschCqiReport (const SpectrumValue& sinr);
-  
+
   /**
   * \brief Create the UL CQI feedback from SINR values perceived at
   * the physical layer with the SRS signal received from eNB
@@ -195,18 +223,18 @@
   * \param ctrlMsgList the list of control messages of PDCCH
   */
   void SendControlChannels (std::list<Ptr<LteControlMessage> > ctrlMsgList);
-  
+
   /**
   * \brief Send the PDSCH
   * \param pb the PacketBurst to be sent
   */
   void SendDataChannels (Ptr<PacketBurst> pb);
-  
+
   /**
   * \param m the UL-CQI to be queued
   */
   void QueueUlDci (UlDciLteControlMessage m);
-  
+
   /**
   * \returns the list of UL-CQI to be processed
   */
@@ -234,7 +262,7 @@
    * \brief PhySpectrum received a new PHY-PDU
    */
   void PhyPduReceived (Ptr<Packet> p);
-  
+
   /**
   * \brief PhySpectrum received a new list of LteControlMessage
   */
@@ -261,31 +289,39 @@
   // LteEnbCphySapProvider forwarded methods
   void DoSetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth);
   void DoSetEarfcn (uint16_t dlEarfcn, uint16_t ulEarfcn);
-  void DoAddUe (uint16_t rnti);  
-  void DoRemoveUe (uint16_t rnti);  
+  void DoAddUe (uint16_t rnti);
+  void DoRemoveUe (uint16_t rnti);
+  void DoSetPa (uint16_t rnti, double pa);
   void DoSetTransmissionMode (uint16_t  rnti, uint8_t txMode);
-  void DoSetSrsConfigurationIndex (uint16_t  rnti, uint16_t srcCi);  
+  void DoSetSrsConfigurationIndex (uint16_t  rnti, uint16_t srcCi);
   void DoSetMasterInformationBlock (LteRrcSap::MasterInformationBlock mib);
   void DoSetSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 sib1);
 
   // LteEnbPhySapProvider forwarded methods
-  void DoSendMacPdu (Ptr<Packet> p);  
-  void DoSendLteControlMessage (Ptr<LteControlMessage> msg);  
-  uint8_t DoGetMacChTtiDelay ();  
+  void DoSendMacPdu (Ptr<Packet> p);
+  void DoSendLteControlMessage (Ptr<LteControlMessage> msg);
+  uint8_t DoGetMacChTtiDelay ();
 
   bool AddUePhy (uint16_t rnti);
 
   bool DeleteUePhy (uint16_t rnti);
 
-  void CreateSrsReport(uint16_t rnti, double srs);
+  void CreateSrsReport (uint16_t rnti, double srs);
 
 
   std::set <uint16_t> m_ueAttached;
-  
+
+
+  // P_A per UE RNTI
+  std::map <uint16_t,double> m_paMap;
+
+  // DL power allocation map
+  std::map <int, double> m_dlPowerAllocationMap;
+
   std::vector <int> m_listOfDownlinkSubchannel;
-  
+
   std::vector <int> m_dlDataRbMap;
-  
+
   std::vector< std::list<UlDciLteControlMessage> > m_ulDciQueue; // for storing info on future receptions
 
   LteEnbPhySapProvider* m_enbPhySapProvider;
@@ -293,10 +329,10 @@
 
   LteEnbCphySapProvider* m_enbCphySapProvider;
   LteEnbCphySapUser* m_enbCphySapUser;
-  
+
   uint32_t m_nrFrames;
   uint32_t m_nrSubFrames;
-  
+
   uint16_t m_srsPeriodicity;
   Time m_srsStartTime;
   std::map <uint16_t,uint16_t> m_srsCounter;
@@ -330,7 +366,7 @@
    * PhyTrasmissionStatParameters see lte-common.h
    */
   TracedCallback<PhyTransmissionStatParameters> m_dlPhyTransmission;
-  
+
 };
 
 
diff -Naur ns-3.20/src/lte/model/lte-enb-rrc.cc ns-3.21/src/lte/model/lte-enb-rrc.cc
--- ns-3.20/src/lte/model/lte-enb-rrc.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-rrc.cc	2014-09-17 20:03:14.000000000 -0700
@@ -139,7 +139,7 @@
     m_pendingRrcConnectionReconfiguration (false),
     m_sourceX2apId (0),
     m_sourceCellId (0),
-    m_needTransmissionModeConfiguration (false)
+    m_needPhyMacConfiguration (false)
 { 
   NS_LOG_FUNCTION (this);
 }
@@ -156,6 +156,8 @@
   m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = m_rrc->GetNewSrsConfigurationIndex ();
   m_physicalConfigDedicated.soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
   m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth = 0;
+  m_physicalConfigDedicated.havePdschConfigDedicated = true;
+  m_physicalConfigDedicated.pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
 
   m_rrc->m_cmacSapProvider->AddUe (m_rnti);
   m_rrc->m_cphySapProvider->AddUe (m_rnti);
@@ -169,7 +171,7 @@
     rlc->SetRnti (m_rnti);
     rlc->SetLcId (lcid);
 
-    m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();  
+    m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();
     m_srb0->m_rlc = rlc;
     m_srb0->m_srbIdentity = 0;
     // no need to store logicalChannelConfig as SRB0 is pre-configured
@@ -179,7 +181,7 @@
     lcinfo.lcId = lcid;
     // leave the rest of lcinfo empty as CCCH (LCID 0) is pre-configured
     m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
-    
+
   }
 
   // setup the eNB side of SRB1; the UE side will be set up upon RRC connection establishment
@@ -198,7 +200,7 @@
     pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
     rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
 
-    m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();  
+    m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();
     m_srb1->m_rlc = rlc;
     m_srb1->m_pdcp = pdcp;
     m_srb1->m_srbIdentity = 1;
@@ -206,7 +208,7 @@
     m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
     m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
     m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
-    
+
     LteEnbCmacSapProvider::LcInfo lcinfo;
     lcinfo.rnti = m_rnti;
     lcinfo.lcId = lcid;
@@ -230,7 +232,7 @@
   req.m_rnti = m_rnti;
   req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
   m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
-  
+
   // configure PHY
   m_rrc->m_cphySapProvider->SetTransmissionMode (m_rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
   m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
@@ -240,16 +242,16 @@
   switch (m_state)
     {
     case INITIAL_RANDOM_ACCESS:
-      m_connectionTimeout = Simulator::Schedule (m_rrc->m_connectionTimeoutDuration, 
-                                                 &LteEnbRrc::ConnectionTimeout, 
-                                                 m_rrc, m_rnti);
+      m_connectionRequestTimeout = Simulator::Schedule (m_rrc->m_connectionRequestTimeoutDuration,
+                                                        &LteEnbRrc::ConnectionRequestTimeout,
+                                                        m_rrc, m_rnti);
       break;
 
     case HANDOVER_JOINING:
-      m_handoverJoiningTimeout = Simulator::Schedule (m_rrc->m_handoverJoiningTimeoutDuration, 
+      m_handoverJoiningTimeout = Simulator::Schedule (m_rrc->m_handoverJoiningTimeoutDuration,
                                                       &LteEnbRrc::HandoverJoiningTimeout,
                                                       m_rrc, m_rnti);
-      break;      
+      break;
 
     default:
       NS_FATAL_ERROR ("unexpected state " << ToString (m_state));
@@ -328,7 +330,7 @@
   Ptr<LteDataRadioBearerInfo> drbInfo = CreateObject<LteDataRadioBearerInfo> ();
   uint8_t drbid = AddDataRadioBearerInfo (drbInfo);
   uint8_t lcid = Drbid2Lcid (drbid); 
-  uint8_t bid = Drbid2Bid (drbid);  
+  uint8_t bid = Drbid2Bid (drbid);
   NS_ASSERT_MSG ( bearerId == 0 || bid == bearerId, "bearer ID mismatch (" << (uint32_t) bid << " != " << (uint32_t) bearerId << ", the assumption that ID are allocated in the same way by MME and RRC is not valid any more");
   drbInfo->m_epsBearerIdentity = bid;
   drbInfo->m_drbIdentity = drbid;
@@ -343,7 +345,7 @@
       x2uTeidInfo.rnti = m_rnti;
       x2uTeidInfo.drbid = drbid;
       std::pair<std::map<uint32_t, LteEnbRrc::X2uTeidInfo>::iterator, bool>
-        ret = m_rrc->m_x2uTeidInfoMap.insert (std::pair<uint32_t, LteEnbRrc::X2uTeidInfo> (gtpTeid, x2uTeidInfo));
+      ret = m_rrc->m_x2uTeidInfoMap.insert (std::pair<uint32_t, LteEnbRrc::X2uTeidInfo> (gtpTeid, x2uTeidInfo));
       NS_ASSERT_MSG (ret.second == true, "overwriting a pre-existing entry in m_x2uTeidInfoMap");
     }
 
@@ -371,7 +373,7 @@
       rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
       drbInfo->m_pdcp = pdcp;
     }
-    
+
   LteEnbCmacSapProvider::LcInfo lcinfo;
   lcinfo.rnti = m_rnti;
   lcinfo.lcId = lcid;
@@ -383,7 +385,7 @@
   lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
   lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
   m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
-  
+
   if (rlcTypeId == LteRlcAm::GetTypeId ())
     {
       drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::AM;
@@ -398,7 +400,7 @@
   drbInfo->m_logicalChannelConfig.logicalChannelGroup = m_rrc->GetLogicalChannelGroup (bearer);
   if (bearer.IsGbr ())
     {
-      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;      
+      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;
     }
   else
     {
@@ -418,7 +420,7 @@
        ++it)
     {
       m_drbsToBeStarted.push_back (it->first);
-    }    
+    }
 }
 
 void
@@ -518,7 +520,7 @@
         params.ueAggregateMaxBitRateDownlink = 200 * 1000;
         params.ueAggregateMaxBitRateUplink = 100 * 1000;
         params.bearers = GetErabList ();
-  
+
         LteRrcSap::HandoverPreparationInfo hpi;
         hpi.asConfig.sourceUeIdentity = m_rnti;
         hpi.asConfig.sourceDlCarrierFreq = m_rrc->m_dlEarfcn;
@@ -537,18 +539,18 @@
         hpi.asConfig.sourceSystemInformationBlockType2.freqInfo.ulCarrierFreq = m_rrc->m_ulEarfcn;
         hpi.asConfig.sourceSystemInformationBlockType2.freqInfo.ulBandwidth = m_rrc->m_ulBandwidth;
         params.rrcContext = m_rrc->m_rrcSapUser->EncodeHandoverPreparationInformation (hpi);
-  
+
         NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
         NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
         NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
         NS_LOG_LOGIC ("mmeUeS1apId = " << params.mmeUeS1apId);
         NS_LOG_LOGIC ("rrcContext   = " << params.rrcContext);
-  
+
         m_rrc->m_x2SapProvider->SendHandoverRequest (params);
         SwitchToState (HANDOVER_PREPARATION);
       }
-      break;      
-      
+      break;
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
       break;
@@ -560,7 +562,7 @@
 UeManager::RecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
 {
   NS_LOG_FUNCTION (this);
-  
+
   NS_ASSERT_MSG (params.notAdmittedBearers.empty (), "not admission of some bearers upon handover is not supported");
   NS_ASSERT_MSG (params.admittedBearers.size () == m_drbMap.size (), "not enough bearers in admittedBearers");
 
@@ -593,7 +595,7 @@
       if (0 != drbIt->second->m_rlc->GetObject<LteRlcAm> ())
         {
           LtePdcp::Status status = drbIt->second->m_pdcp->GetStatus ();
-          EpcX2Sap::ErabsSubjectToStatusTransferItem i;          
+          EpcX2Sap::ErabsSubjectToStatusTransferItem i;
           i.dlPdcpSn = status.txSn;
           i.ulPdcpSn = status.rxSn;
           sst.erabsSubjectToStatusTransferList.push_back (i);
@@ -627,9 +629,9 @@
     case CONNECTION_SETUP:
       NS_LOG_WARN ("not connected, discarding packet");
       return;
-      break;      
-      
-    case CONNECTED_NORMALLY:      
+      break;
+
+    case CONNECTED_NORMALLY:
     case CONNECTION_RECONFIGURATION:
     case CONNECTION_REESTABLISHMENT:
     case HANDOVER_PREPARATION:
@@ -646,27 +648,27 @@
         pdcpSapProvider->TransmitPdcpSdu (params);
       }
       break;
-      
+
     case HANDOVER_LEAVING:
       {
         NS_LOG_LOGIC ("forwarding data to target eNB over X2-U");
-        uint8_t drbid = Bid2Drbid (bid);        
+        uint8_t drbid = Bid2Drbid (bid);
         EpcX2Sap::UeDataParams params;
         params.sourceCellId = m_rrc->m_cellId;
         params.targetCellId = m_targetCellId;
         params.gtpTeid = GetDataRadioBearerInfo (drbid)->m_gtpTeid;
         params.ueData = p;
         m_rrc->m_x2SapProvider->SendUeData (params);
-      }      
+      }
       break;
-      
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
 
-std::vector<EpcX2Sap::ErabToBeSetupItem>   
+std::vector<EpcX2Sap::ErabToBeSetupItem>
 UeManager::GetErabList ()
 {
   NS_LOG_FUNCTION (this);
@@ -681,7 +683,7 @@
       etbsi.dlForwarding = false;
       etbsi.transportLayerAddress = it->second->m_transportLayerAddress;
       etbsi.gtpTeid = it->second->m_gtpTeid;
-      ret.push_back (etbsi);      
+      ret.push_back (etbsi);
     }
   return ret;
 }
@@ -691,7 +693,7 @@
 {
   NS_LOG_FUNCTION (this);
   switch (m_state)
-    {     
+    {
     case HANDOVER_PATH_SWITCH:
       NS_LOG_INFO ("Send UE CONTEXT RELEASE from target eNB to source eNB");
       EpcX2SapProvider::UeContextReleaseParams ueCtxReleaseParams;
@@ -702,10 +704,10 @@
       SwitchToState (CONNECTED_NORMALLY);
       m_rrc->m_handoverEndOkTrace (m_imsi, m_rrc->m_cellId, m_rnti);
       break;
-      
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
 
@@ -714,16 +716,16 @@
 {
   NS_LOG_FUNCTION (this << cellId);
   switch (m_state)
-    {     
-    case HANDOVER_PREPARATION:   
+    {
+    case HANDOVER_PREPARATION:
       NS_ASSERT (cellId == m_targetCellId);
       NS_LOG_INFO ("target eNB sent HO preparation failure, aborting HO");
       SwitchToState (CONNECTED_NORMALLY);
       break;
-      
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
 
@@ -751,7 +753,7 @@
 {
   NS_LOG_FUNCTION (this);
   NS_ASSERT_MSG (m_state == HANDOVER_LEAVING, "method unexpected in state " << ToString (m_state));
-  m_handoverLeavingTimeout.Cancel ();  
+  m_handoverLeavingTimeout.Cancel ();
 }
 
 
@@ -771,41 +773,50 @@
   NS_LOG_FUNCTION (this);
   switch (m_state)
     {
-    case INITIAL_RANDOM_ACCESS:      
-      {      
+    case INITIAL_RANDOM_ACCESS:
+      {
+        m_connectionRequestTimeout.Cancel ();
+
         if (m_rrc->m_admitRrcConnectionRequest == true)
           {
-            m_connectionTimeout.Cancel ();
-            m_imsi = msg.ueIdentity;      
+            m_imsi = msg.ueIdentity;
             if (m_rrc->m_s1SapProvider != 0)
               {
                 m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
-              }      
+              }
+
+            // send RRC CONNECTION SETUP to UE
             LteRrcSap::RrcConnectionSetup msg2;
             msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
             msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
             m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
+
             RecordDataRadioBearersToBeStarted ();
+            m_connectionSetupTimeout = Simulator::Schedule (
+                m_rrc->m_connectionSetupTimeoutDuration,
+                &LteEnbRrc::ConnectionSetupTimeout, m_rrc, m_rnti);
             SwitchToState (CONNECTION_SETUP);
           }
         else
           {
-            m_connectionTimeout.Cancel ();
             NS_LOG_INFO ("rejecting connection request for RNTI " << m_rnti);
+
+            // send RRC CONNECTION REJECT to UE
             LteRrcSap::RrcConnectionReject rejectMsg;
             rejectMsg.waitTime = 3;
             m_rrc->m_rrcSapUser->SendRrcConnectionReject (m_rnti, rejectMsg);
-            m_connectionRejectedTimeout = Simulator::Schedule (m_rrc->m_connectionRejectedTimeoutDuration, 
-                                                       &LteEnbRrc::ConnectionRejectedTimeout, 
-                                                       m_rrc, m_rnti);
+
+            m_connectionRejectedTimeout = Simulator::Schedule (
+                m_rrc->m_connectionRejectedTimeoutDuration,
+                &LteEnbRrc::ConnectionRejectedTimeout, m_rrc, m_rnti);
             SwitchToState (CONNECTION_REJECTED);
-          }        
+          }
       }
       break;
-      
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
 
@@ -816,14 +827,15 @@
   switch (m_state)
     {
     case CONNECTION_SETUP:
+      m_connectionSetupTimeout.Cancel ();
       StartDataRadioBearers ();
       SwitchToState (CONNECTED_NORMALLY);
       m_rrc->m_connectionEstablishedTrace (m_imsi, m_rrc->m_cellId, m_rnti);
       break;
-            
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
 
@@ -834,28 +846,31 @@
   switch (m_state)
     {
     case CONNECTION_RECONFIGURATION:
-      StartDataRadioBearers ();   
-      if (m_needTransmissionModeConfiguration)
-        {          
+      StartDataRadioBearers ();
+      if (m_needPhyMacConfiguration)
+        {
           // configure MAC (and scheduler)
           LteEnbCmacSapProvider::UeConfig req;
           req.m_rnti = m_rnti;
           req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
-          m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);  
-          
+          m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
+
           // configure PHY
           m_rrc->m_cphySapProvider->SetTransmissionMode (req.m_rnti, req.m_transmissionMode);
-          
-          m_needTransmissionModeConfiguration = false;
+
+          double paDouble = LteRrcSap::ConvertPdschConfigDedicated2Double (m_physicalConfigDedicated.pdschConfigDedicated);
+          m_rrc->m_cphySapProvider->SetPa (m_rnti, paDouble);
+
+          m_needPhyMacConfiguration = false;
         }
       SwitchToState (CONNECTED_NORMALLY);
       m_rrc->m_connectionReconfigurationTrace (m_imsi, m_rrc->m_cellId, m_rnti);
       break;
 
-    case HANDOVER_LEAVING:      
+    case HANDOVER_LEAVING:
       NS_LOG_INFO ("ignoring RecvRrcConnectionReconfigurationCompleted in state " << ToString (m_state));
       break;
-      
+
     case HANDOVER_JOINING:
       {
         m_handoverJoiningTimeout.Cancel ();
@@ -873,17 +888,17 @@
             b.epsBearerId = it->second->m_epsBearerIdentity;
             b.teid =  it->second->m_gtpTeid;
             params.bearersToBeSwitched.push_back (b);
-          }     
+          }
         m_rrc->m_s1SapProvider->PathSwitchRequest (params);
       }
       break;
-      
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 }
-  
+
 void 
 UeManager::RecvRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
 {
@@ -893,13 +908,13 @@
     case CONNECTED_NORMALLY:
       break;
 
-    case HANDOVER_LEAVING:      
-      m_handoverLeavingTimeout.Cancel ();  
-      break;      
-      
+    case HANDOVER_LEAVING:
+      m_handoverLeavingTimeout.Cancel ();
+      break;
+
     default:
       NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
-      break;      
+      break;
     }
 
   LteRrcSap::RrcConnectionReestablishment msg2;
@@ -922,19 +937,19 @@
   uint8_t measId = msg.measResults.measId;
   NS_LOG_FUNCTION (this << (uint16_t) measId);
   NS_LOG_LOGIC ("measId " << (uint16_t) measId
-                << " haveMeasResultNeighCells " << msg.measResults.haveMeasResultNeighCells
-                << " measResultListEutra " << msg.measResults.measResultListEutra.size ());
+                          << " haveMeasResultNeighCells " << msg.measResults.haveMeasResultNeighCells
+                          << " measResultListEutra " << msg.measResults.measResultListEutra.size ());
   NS_LOG_LOGIC ("serving cellId " << m_rrc->m_cellId
-                << " RSRP " << (uint16_t) msg.measResults.rsrpResult
-                << " RSRQ " << (uint16_t) msg.measResults.rsrqResult);
+                                  << " RSRP " << (uint16_t) msg.measResults.rsrpResult
+                                  << " RSRQ " << (uint16_t) msg.measResults.rsrqResult);
 
   for (std::list <LteRrcSap::MeasResultEutra>::iterator it = msg.measResults.measResultListEutra.begin ();
        it != msg.measResults.measResultListEutra.end ();
        ++it)
     {
       NS_LOG_LOGIC ("neighbour cellId " << it->physCellId
-                    << " RSRP " << (it->haveRsrpResult ? (uint16_t) it->rsrpResult : 255)
-                    << " RSRQ " << (it->haveRsrqResult ? (uint16_t) it->rsrqResult : 255));
+                                        << " RSRP " << (it->haveRsrpResult ? (uint16_t) it->rsrpResult : 255)
+                                        << " RSRQ " << (it->haveRsrqResult ? (uint16_t) it->rsrqResult : 255));
     }
 
   if ((m_rrc->m_handoverManagementSapProvider != 0)
@@ -952,6 +967,13 @@
       m_rrc->m_anrSapProvider->ReportUeMeas (msg.measResults);
     }
 
+  if ((m_rrc->m_ffrRrcSapProvider != 0)
+      && (m_rrc->m_ffrMeasIds.find (measId) != m_rrc->m_ffrMeasIds.end ()))
+    {
+      // this measurement was requested by the FFR function
+      m_rrc->m_ffrRrcSapProvider->ReportUeMeas (m_rnti, msg.measResults);
+    }
+
   // fire a trace source
   m_rrc->m_recvMeasurementReportTrace (m_imsi, m_rrc->m_cellId, m_rnti, msg);
 
@@ -965,10 +987,10 @@
 {
   NS_LOG_FUNCTION (this << m_rnti);
   // at this stage used only by the scheduler for updating txMode
-  
+
   m_physicalConfigDedicated.antennaInfo.transmissionMode = cmacParams.m_transmissionMode;
 
-  m_needTransmissionModeConfiguration = true;
+  m_needPhyMacConfiguration = true;
 
   // reconfigure the UE RRC
   ScheduleRrcConnectionReconfiguration ();
@@ -1023,7 +1045,7 @@
       // do nothing, srs conf index will be correctly enforced upon
       // RRC connection establishment
       break;
-      
+
     default:
       ScheduleRrcConnectionReconfiguration ();
       break;
@@ -1036,11 +1058,23 @@
   return m_state;
 }
 
+void
+UeManager::SetPdschConfigDedicated (LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
+{
+  NS_LOG_FUNCTION (this);
+  m_physicalConfigDedicated.pdschConfigDedicated = pdschConfigDedicated;
+
+  m_needPhyMacConfiguration = true;
+
+  // reconfigure the UE RRC
+  ScheduleRrcConnectionReconfiguration ();
+}
+
 uint8_t
 UeManager::AddDataRadioBearerInfo (Ptr<LteDataRadioBearerInfo> drbInfo)
 {
   NS_LOG_FUNCTION (this);
-  const uint8_t MAX_DRB_ID = 32;  
+  const uint8_t MAX_DRB_ID = 32;
   for (int drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
        drbid != m_lastAllocatedDrbid; 
        drbid = (drbid + 1) % MAX_DRB_ID)
@@ -1065,7 +1099,7 @@
 {
   NS_LOG_FUNCTION (this << (uint32_t) drbid);
   NS_ASSERT (0 != drbid);
-  std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);  
+  std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
   NS_ABORT_IF (it == m_drbMap.end ());
   return it->second;
 }
@@ -1107,7 +1141,7 @@
       stam.logicalChannelConfig = m_srb1->m_logicalChannelConfig;
       rrcd.srbToAddModList.push_back (stam);
     }
-    
+
   for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
        it != m_drbMap.end ();
        ++it)
@@ -1176,21 +1210,21 @@
   NS_LOG_FUNCTION (this << ToString (newState));
   State oldState = m_state;
   m_state = newState;
-  NS_LOG_INFO (this << "IMSI " << m_imsi << " RNTI " << m_rnti << " UeManager "
+  NS_LOG_INFO (this << " IMSI " << m_imsi << " RNTI " << m_rnti << " UeManager "
                     << ToString (oldState) << " --> " << ToString (newState));
   m_stateTransitionTrace (m_imsi, m_rrc->m_cellId, m_rnti, oldState, newState);
-  
+
   switch (newState)
     {
     case INITIAL_RANDOM_ACCESS:
     case HANDOVER_JOINING:
-      NS_FATAL_ERROR ("cannot switch to an initial state");      
+      NS_FATAL_ERROR ("cannot switch to an initial state");
       break;
 
     case CONNECTION_SETUP:
       break;
 
-    case CONNECTED_NORMALLY:    
+    case CONNECTED_NORMALLY:
       {
         if (m_pendingRrcConnectionReconfiguration == true)
           {
@@ -1204,9 +1238,9 @@
 
     case CONNECTION_REESTABLISHMENT:
       break;
-      
+
     case HANDOVER_LEAVING:
-      break;      
+      break;
 
     default:
       break;
@@ -1226,6 +1260,7 @@
     m_cmacSapProvider (0),
     m_handoverManagementSapProvider (0),
     m_anrSapProvider (0),
+    m_ffrRrcSapProvider (0),
     m_rrcSapUser (0),
     m_macSapProvider (0),
     m_s1SapProvider (0),
@@ -1240,6 +1275,7 @@
   m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
   m_handoverManagementSapUser = new MemberLteHandoverManagementSapUser<LteEnbRrc> (this);
   m_anrSapUser = new MemberLteAnrSapUser<LteEnbRrc> (this);
+  m_ffrRrcSapUser = new MemberLteFfrRrcSapUser<LteEnbRrc> (this);
   m_rrcSapProvider = new MemberLteEnbRrcSapProvider<LteEnbRrc> (this);
   m_x2SapUser = new EpcX2SpecificEpcX2SapUser<LteEnbRrc> (this);
   m_s1SapUser = new MemberEpcEnbS1SapUser<LteEnbRrc> (this);
@@ -1261,6 +1297,7 @@
   delete m_cmacSapUser;
   delete m_handoverManagementSapUser;
   delete m_anrSapUser;
+  delete m_ffrRrcSapUser;
   delete m_rrcSapProvider;
   delete m_x2SapUser;
   delete m_s1SapUser;
@@ -1306,40 +1343,60 @@
                    MakeUintegerChecker<uint32_t> ())
 
     // Timeout related attributes
-    .AddAttribute ("ConnectionTimeoutDuration",
-                   "After a RA attempt, if no RRC Connection Request is received before this time, the UE context is destroyed. Must account for reception of RAR and transmission of RRC CONNECTION REQUEST over UL GRANT.",
+    .AddAttribute ("ConnectionRequestTimeoutDuration",
+                   "After a RA attempt, if no RRC CONNECTION REQUEST is "
+                   "received before this time, the UE context is destroyed. "
+                   "Must account for reception of RAR and transmission of "
+                   "RRC CONNECTION REQUEST over UL GRANT.",
                    TimeValue (MilliSeconds (15)),
-                   MakeTimeAccessor (&LteEnbRrc::m_connectionTimeoutDuration),
+                   MakeTimeAccessor (&LteEnbRrc::m_connectionRequestTimeoutDuration),
+                   MakeTimeChecker ())
+    .AddAttribute ("ConnectionSetupTimeoutDuration",
+                   "After accepting connection request, if no RRC CONNECTION "
+                   "SETUP COMPLETE is received before this time, the UE "
+                   "context is destroyed. Must account for the UE's reception "
+                   "of RRC CONNECTION SETUP and transmission of RRC CONNECTION "
+                   "SETUP COMPLETE.",
+                   TimeValue (MilliSeconds (150)),
+                   MakeTimeAccessor (&LteEnbRrc::m_connectionSetupTimeoutDuration),
                    MakeTimeChecker ())
     .AddAttribute ("ConnectionRejectedTimeoutDuration",
-                   "Time to wait between sending a RRC CONNECTION REJECT and destroying the UE context",
+                   "Time to wait between sending a RRC CONNECTION REJECT and "
+                   "destroying the UE context",
                    TimeValue (MilliSeconds (30)),
                    MakeTimeAccessor (&LteEnbRrc::m_connectionRejectedTimeoutDuration),
                    MakeTimeChecker ())
     .AddAttribute ("HandoverJoiningTimeoutDuration",
-                   "After accepting a handover request, if no RRC Connection Reconfiguration Completed is received before this time, the UE context is destroyed. Must account for reception of X2 HO REQ ACK by source eNB, transmission of the Handover Command, non-contention-based random access and reception of the RRC Connection Reconfiguration Completed message.",
+                   "After accepting a handover request, if no RRC CONNECTION "
+                   "RECONFIGURATION COMPLETE is received before this time, the "
+                   "UE context is destroyed. Must account for reception of "
+                   "X2 HO REQ ACK by source eNB, transmission of the Handover "
+                   "Command, non-contention-based random access and reception "
+                   "of the RRC CONNECTION RECONFIGURATION COMPLETE message.",
                    TimeValue (MilliSeconds (200)),
                    MakeTimeAccessor (&LteEnbRrc::m_handoverJoiningTimeoutDuration),
                    MakeTimeChecker ())
     .AddAttribute ("HandoverLeavingTimeoutDuration",
-                   "After issuing a Handover Command, if neither RRC Connection Reestablishment nor X2 UE Context Release has been previously received, the UE context is destroyed.",
+                   "After issuing a Handover Command, if neither RRC "
+                   "CONNECTION RE-ESTABLISHMENT nor X2 UE Context Release has "
+                   "been previously received, the UE context is destroyed.",
                    TimeValue (MilliSeconds (500)),
                    MakeTimeAccessor (&LteEnbRrc::m_handoverLeavingTimeoutDuration),
                    MakeTimeChecker ())
 
     // Cell selection related attribute
-   .AddAttribute ("QRxLevMin",
-                  "One of information transmitted within the SIB1 message, "
-                  "indicating the required minimum RSRP level that any UE must "
-                  "receive from this cell before it is allowed to camp to this "
-                  "cell. The default value -70 corresponds to -140 dBm and is "
-                  "the lowest possible value as defined by Section 6.3.4 of "
-                  "3GPP TS 36.133. This restriction, however, only applies to "
-                  "initial cell selection and EPC-enabled simulation.",
-                  TypeId::ATTR_GET | TypeId::ATTR_CONSTRUCT,
-                  IntegerValue (-70),
-                  MakeIntegerAccessor (&LteEnbRrc::m_qRxLevMin),
-                  MakeIntegerChecker<int8_t> (-70, -22))
+    .AddAttribute ("QRxLevMin",
+                   "One of information transmitted within the SIB1 message, "
+                   "indicating the required minimum RSRP level that any UE must "
+                   "receive from this cell before it is allowed to camp to this "
+                   "cell. The default value -70 corresponds to -140 dBm and is "
+                   "the lowest possible value as defined by Section 6.3.4 of "
+                   "3GPP TS 36.133. This restriction, however, only applies to "
+                   "initial cell selection and EPC-enabled simulation.",
+                   TypeId::ATTR_GET | TypeId::ATTR_CONSTRUCT,
+                   IntegerValue (-70),
+                   MakeIntegerAccessor (&LteEnbRrc::m_qRxLevMin),
+                   MakeIntegerChecker<int8_t> (-70, -22))
 
     // Handover related attributes
     .AddAttribute ("AdmitHandoverRequest",
@@ -1451,6 +1508,20 @@
 }
 
 void
+LteEnbRrc::SetLteFfrRrcSapProvider (LteFfrRrcSapProvider * s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapProvider = s;
+}
+
+LteFfrRrcSapUser*
+LteEnbRrc::GetLteFfrRrcSapUser ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapUser;
+}
+
+void
 LteEnbRrc::SetLteEnbRrcSapUser (LteEnbRrcSapUser * s)
 {
   NS_LOG_FUNCTION (this << s);
@@ -1477,7 +1548,7 @@
   m_s1SapProvider = s;
 }
 
-  
+
 EpcEnbS1SapUser* 
 LteEnbRrc::GetS1SapUser ()
 {
@@ -1498,6 +1569,14 @@
   return m_cphySapUser;
 }
 
+bool
+LteEnbRrc::HasUeManager (uint16_t rnti) const
+{
+  NS_LOG_FUNCTION (this << (uint32_t) rnti);
+  std::map<uint16_t, Ptr<UeManager> >::const_iterator it = m_ueMap.find (rnti);
+  return (it != m_ueMap.end ());
+}
+
 Ptr<UeManager>
 LteEnbRrc::GetUeManager (uint16_t rnti)
 {
@@ -1612,6 +1691,8 @@
   m_ulBandwidth = ulBandwidth;
   m_cellId = cellId;
   m_cphySapProvider->SetCellId (cellId);
+  m_ffrRrcSapProvider->SetCellId (cellId);
+  m_ffrRrcSapProvider->SetBandwidth(ulBandwidth, dlBandwidth);
 
   /*
    * Initializing the list of UE measurement configuration (m_ueMeasConfig).
@@ -1694,11 +1775,20 @@
 }
 
 void
-LteEnbRrc::ConnectionTimeout (uint16_t rnti)
+LteEnbRrc::ConnectionRequestTimeout (uint16_t rnti)
 {
   NS_LOG_FUNCTION (this << rnti);
-  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::INITIAL_RANDOM_ACCESS, 
-                 "ConnectionTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
+  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::INITIAL_RANDOM_ACCESS,
+                 "ConnectionRequestTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
+  RemoveUe (rnti);
+}
+
+void
+LteEnbRrc::ConnectionSetupTimeout (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this << rnti);
+  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::CONNECTION_SETUP,
+                 "ConnectionSetupTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
   RemoveUe (rnti);
 }
 
@@ -1707,7 +1797,7 @@
 {
   NS_LOG_FUNCTION (this << rnti);
   NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::CONNECTION_REJECTED,
-                 "ConnectionTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
+                 "ConnectionRejectedTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
   RemoveUe (rnti);
 }
 
@@ -1715,7 +1805,7 @@
 LteEnbRrc::HandoverJoiningTimeout (uint16_t rnti)
 {
   NS_LOG_FUNCTION (this << rnti);
-  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_JOINING, 
+  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_JOINING,
                  "HandoverJoiningTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
   RemoveUe (rnti);
 }
@@ -1724,7 +1814,7 @@
 LteEnbRrc::HandoverLeavingTimeout (uint16_t rnti)
 {
   NS_LOG_FUNCTION (this << rnti);
-  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_LEAVING, 
+  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_LEAVING,
                  "HandoverLeavingTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
   RemoveUe (rnti);
 }
@@ -1768,12 +1858,12 @@
   NS_LOG_FUNCTION (this << rnti);
   GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
 }
-  
+
 void 
 LteEnbRrc::DoRecvRrcConnectionReestablishmentRequest (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
 {
   NS_LOG_FUNCTION (this << rnti);
-  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);  
+  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);
 }
 
 void 
@@ -1794,7 +1884,7 @@
 LteEnbRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
 {
   Ptr<UeManager> ueManager = GetUeManager (request.rnti);
-  ueManager->SetupDataRadioBearer (request.bearer, request.bearerId, request.gtpTeid, request.transportLayerAddress);       
+  ueManager->SetupDataRadioBearer (request.bearer, request.bearerId, request.gtpTeid, request.transportLayerAddress);
 }
 
 void 
@@ -1823,23 +1913,23 @@
       NS_LOG_INFO ("rejecting handover request from cellId " << req.sourceCellId);
       EpcX2Sap::HandoverPreparationFailureParams res;
       res.oldEnbUeX2apId =  req.oldEnbUeX2apId;
-      res.sourceCellId = req.sourceCellId ;
-      res.targetCellId = req.targetCellId ;
+      res.sourceCellId = req.sourceCellId;
+      res.targetCellId = req.targetCellId;
       res.cause = 0;
       res.criticalityDiagnostics = 0;
       m_x2SapProvider->SendHandoverPreparationFailure (res);
       return;
     }
-  
+
   uint16_t rnti = AddUe (UeManager::HANDOVER_JOINING);
   LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue anrcrv = m_cmacSapProvider->AllocateNcRaPreamble (rnti);
   if (anrcrv.valid == false)
     {
-      NS_LOG_INFO (this << "failed to allocate a preamble for non-contention based RA => cannot accept HO");
+      NS_LOG_INFO (this << " failed to allocate a preamble for non-contention based RA => cannot accept HO");
       RemoveUe (rnti);
       NS_FATAL_ERROR ("should trigger HO Preparation Failure, but it is not implemented");
       return;
-    }    
+    }
 
   Ptr<UeManager> ueManager = GetUeManager (rnti);
   ueManager->SetSource (req.sourceCellId, req.oldEnbUeX2apId);
@@ -1898,16 +1988,16 @@
 LteEnbRrc::DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
 {
   NS_LOG_FUNCTION (this);
-  
+
   NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST ACK");
-  
+
   NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
   NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
   NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
   NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
 
   uint16_t rnti = params.oldEnbUeX2apId;
-  Ptr<UeManager> ueManager = GetUeManager (rnti);  
+  Ptr<UeManager> ueManager = GetUeManager (rnti);
   ueManager->RecvHandoverRequestAck (params);
 }
 
@@ -1969,7 +2059,7 @@
 
   NS_LOG_LOGIC ("Number of cellInformationItems = " << params.cellInformationList.size ());
 
-  NS_ASSERT ("Processing of LOAD INFORMATION X2 message IS NOT IMPLEMENTED");
+  m_ffrRrcSapProvider->RecvLoadInformation(params);
 }
 
 void
@@ -1998,7 +2088,7 @@
 
   std::map<uint32_t, X2uTeidInfo>::iterator 
     teidInfoIt = m_x2uTeidInfoMap.find (params.gtpTeid);
-  if (teidInfoIt != m_x2uTeidInfoMap.end ())    
+  if (teidInfoIt != m_x2uTeidInfoMap.end ())
     {
       GetUeManager (teidInfoIt->second.rnti)->SendData (teidInfoIt->second.drbid, params.ueData);
     }
@@ -2091,7 +2181,30 @@
   return measId;
 }
 
+uint8_t
+LteEnbRrc::DoAddUeMeasReportConfigForFfr (LteRrcSap::ReportConfigEutra reportConfig)
+{
+  NS_LOG_FUNCTION (this);
+  uint8_t measId = AddUeMeasReportConfig (reportConfig);
+  m_ffrMeasIds.insert (measId);
+  return measId;
+}
+
+void
+LteEnbRrc::DoSetPdschConfigDedicated (uint16_t rnti, LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
+{
+  NS_LOG_FUNCTION (this);
+  Ptr<UeManager> ueManager = GetUeManager (rnti);
+  ueManager->SetPdschConfigDedicated (pdschConfigDedicated);
+}
 
+void
+LteEnbRrc::DoSendLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_x2SapProvider->SendLoadInformation(params);
+}
 
 uint16_t
 LteEnbRrc::AddUe (UeManager::State state)
@@ -2115,8 +2228,8 @@
   Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state);
   m_ueMap.insert (std::pair<uint16_t, Ptr<UeManager> > (rnti, ueManager));
   ueManager->Initialize ();
-  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());      
-  m_newUeContextTrace (m_cellId, rnti);      
+  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());
+  m_newUeContextTrace (m_cellId, rnti);
   return rnti;
 }
 
@@ -2242,9 +2355,9 @@
   if (m_ueSrsConfigurationIndexSet.size () >= g_srsPeriodicity[m_srsCurrentPeriodicityId])
     {
       NS_FATAL_ERROR ("too many UEs (" << m_ueSrsConfigurationIndexSet.size () + 1 
-                      << ") for current SRS periodicity " 
-                      <<  g_srsPeriodicity[m_srsCurrentPeriodicityId]
-                      << ", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
+                                       << ") for current SRS periodicity "
+                                       <<  g_srsPeriodicity[m_srsCurrentPeriodicityId]
+                                       << ", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
     }
 
   if (m_ueSrsConfigurationIndexSet.empty ())
@@ -2281,7 +2394,7 @@
         } 
     }
   return m_lastAllocatedConfigurationIndex;
-  
+
 }
 
 
@@ -2326,6 +2439,8 @@
   si.haveSib2 = true;
   si.sib2.freqInfo.ulCarrierFreq = m_ulEarfcn;
   si.sib2.freqInfo.ulBandwidth = m_ulBandwidth;
+  si.sib2.radioResourceConfigCommon.pdschConfigCommon.referenceSignalPower = m_cphySapProvider->GetReferenceSignalPower();
+  si.sib2.radioResourceConfigCommon.pdschConfigCommon.pb = 0;
 
   LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider->GetRachConfig ();
   LteRrcSap::RachConfigCommon rachConfigCommon;
diff -Naur ns-3.20/src/lte/model/lte-enb-rrc.h ns-3.21/src/lte/model/lte-enb-rrc.h
--- ns-3.20/src/lte/model/lte-enb-rrc.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-enb-rrc.h	2014-09-17 20:03:14.000000000 -0700
@@ -39,6 +39,7 @@
 #include <ns3/lte-enb-cphy-sap.h>
 #include <ns3/lte-rrc-sap.h>
 #include <ns3/lte-anr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
 
 #include <map>
 #include <set>
@@ -139,7 +140,7 @@
    * 
    */
   void RecordDataRadioBearersToBeStarted ();
-  
+
   /** 
    * Start the data radio bearers that have been previously recorded
    * to be started using RecordDataRadioBearersToBeStarted() 
@@ -174,7 +175,7 @@
    * \param params 
    */
   void RecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params);
-  
+
   /** 
    * 
    * \return the HandoverPreparationInfo sent by the source eNB to the
@@ -261,7 +262,7 @@
   // METHODS FORWARDED FROM ENB PDCP SAP //////////////////////////////////////
 
   void DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params);
-  
+
   /** 
    * 
    * \return the RNTI, i.e., an UE identifier that is unique within
@@ -294,6 +295,13 @@
    */
   State GetState () const;
 
+  /**
+   * Configure PdschConfigDedicated (i.e. P_A value) for UE and start RrcConnectionReconfiguration
+   * to inform UE about new PdschConfigDedicated
+   *
+   * \param pdschConfigDedicated new pdschConfigDedicated (i.e. P_A value) to be set
+   */
+  void SetPdschConfigDedicated (LteRrcSap::PdschConfigDedicated pdschConfigDedicated);
 
 private:
 
@@ -381,7 +389,7 @@
    * \return the corresponding Data Radio Bearer Id
    */
   uint8_t Bid2Drbid (uint8_t bid);
-  
+
   /** 
    * Switch the UeManager to the given state
    * 
@@ -408,9 +416,10 @@
   uint16_t m_sourceCellId;
   uint16_t m_targetCellId;
   std::list<uint8_t> m_drbsToBeStarted;
-  bool m_needTransmissionModeConfiguration;
+  bool m_needPhyMacConfiguration;
 
-  EventId m_connectionTimeout;
+  EventId m_connectionRequestTimeout;
+  EventId m_connectionSetupTimeout;
   EventId m_connectionRejectedTimeout;
   EventId m_handoverJoiningTimeout;
   EventId m_handoverLeavingTimeout;
@@ -430,6 +439,7 @@
   friend class EnbRrcMemberLteEnbCmacSapUser;
   friend class MemberLteHandoverManagementSapUser<LteEnbRrc>;
   friend class MemberLteAnrSapUser<LteEnbRrc>;
+  friend class MemberLteFfrRrcSapUser<LteEnbRrc>;
   friend class MemberLteEnbRrcSapProvider<LteEnbRrc>;
   friend class MemberEpcEnbS1SapUser<LteEnbRrc>;
   friend class EpcX2SpecificEpcX2SapUser<LteEnbRrc>;
@@ -512,6 +522,21 @@
   LteAnrSapUser* GetLteAnrSapUser ();
 
 
+
+  /**
+   * set the FFR SAP this RRC should interact with
+   *
+   * \param s the FFR SAP Provider to be used by this RRC
+   */
+  void SetLteFfrRrcSapProvider (LteFfrRrcSapProvider * s);
+
+  /**
+   * Get the FFR SAP offered by this RRC
+   * \return s the FFR SAP User interface offered to the ANR instance by this
+   *           RRC
+   */
+  LteFfrRrcSapUser* GetLteFfrRrcSapUser ();
+
   /**
    * set the RRC SAP this RRC should interact with
    *
@@ -569,6 +594,15 @@
    * 
    * \param rnti the identifier of an UE
    * 
+   * \return true if the corresponding UeManager instance exists
+   */
+  bool HasUeManager (uint16_t rnti) const;
+
+  /**
+   *
+   *
+   * \param rnti the identifier of an UE
+   *
    * \return the corresponding UeManager instance
    */
   Ptr<UeManager> GetUeManager (uint16_t rnti);
@@ -644,14 +678,22 @@
   void SetForwardUpCallback (Callback <void, Ptr<Packet> > cb);
 
   /** 
-   * Method triggered when a UE is expected to get connected but does
+   * Method triggered when a UE is expected to request for connection but does
    * not do so in a reasonable time
    * 
    * \param rnti the T-C-RNTI whose timeout expired
    */
-  void ConnectionTimeout (uint16_t rnti);
+  void ConnectionRequestTimeout (uint16_t rnti);
 
   /** 
+   * Method triggered when a UE is expected to complete a connection setup
+   * procedure but does not do so in a reasonable time
+   *
+   * \param rnti the T-C-RNTI whose timeout expired
+   */
+  void ConnectionSetupTimeout (uint16_t rnti);
+
+  /**
    * Method triggered a while after sending RRC Connection Rejected
    * 
    * \param rnti the T-C-RNTI whose timeout expired
@@ -746,6 +788,10 @@
 
   uint8_t DoAddUeMeasReportConfigForAnr (LteRrcSap::ReportConfigEutra reportConfig);
 
+  // FFR RRC SAP methods
+  uint8_t DoAddUeMeasReportConfigForFfr (LteRrcSap::ReportConfigEutra reportConfig);
+  void DoSetPdschConfigDedicated (uint16_t rnti, LteRrcSap::PdschConfigDedicated pa);
+  void DoSendLoadInformation (EpcX2Sap::LoadInformationParams params);
 
   // Internal methods
 
@@ -884,6 +930,9 @@
   LteAnrSapUser* m_anrSapUser;
   LteAnrSapProvider* m_anrSapProvider;
 
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
   LteEnbRrcSapUser* m_rrcSapUser;
   LteEnbRrcSapProvider* m_rrcSapProvider;
 
@@ -916,6 +965,7 @@
 
   std::set<uint8_t> m_handoverMeasIds;
   std::set<uint8_t> m_anrMeasIds;
+  std::set<uint8_t> m_ffrMeasIds;
 
   struct X2uTeidInfo
   {
@@ -950,20 +1000,21 @@
   uint8_t m_rsrqFilterCoefficient;
 
   // timeouts
-  Time m_connectionTimeoutDuration;
+  Time m_connectionRequestTimeoutDuration;
+  Time m_connectionSetupTimeoutDuration;
   Time m_connectionRejectedTimeoutDuration;
   Time m_handoverJoiningTimeoutDuration;
   Time m_handoverLeavingTimeoutDuration;
 
-  //             cellid    rnti   
+  //             cellid    rnti
   TracedCallback<uint16_t, uint16_t> m_newUeContextTrace;
-  //             imsi      cellid    rnti   
+  //             imsi      cellid    rnti
   TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionEstablishedTrace;
-  //             imsi      cellid    rnti   
+  //             imsi      cellid    rnti
   TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionReconfigurationTrace;
   //             imsi      cellid    rnti     targetCellId
   TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> m_handoverStartTrace;
-  //             imsi      cellid    rnti    
+  //             imsi      cellid    rnti
   TracedCallback<uint64_t, uint16_t, uint16_t> m_handoverEndOkTrace;
 
   //             imsi      cellid    rnti
diff -Naur ns-3.20/src/lte/model/lte-ffr-algorithm.cc ns-3.21/src/lte/model/lte-ffr-algorithm.cc
--- ns-3.20/src/lte/model/lte-ffr-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,180 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-algorithm.h"
+#include "ns3/uinteger.h"
+#include "ns3/boolean.h"
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteFfrAlgorithm");
+
+namespace ns3 {
+
+static const int Type0AllocationRbg[4] = {
+  10,       // RGB size 1
+  26,       // RGB size 2
+  63,       // RGB size 3
+  110       // RGB size 4
+};  // see table 7.1.6.1-1 of 3GPP TS 36.213
+
+NS_OBJECT_ENSURE_REGISTERED (LteFfrAlgorithm);
+
+
+LteFfrAlgorithm::LteFfrAlgorithm () :
+  m_needReconfiguration (true)
+{
+}
+
+
+LteFfrAlgorithm::~LteFfrAlgorithm ()
+{
+}
+
+
+TypeId
+LteFfrAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFfrAlgorithm")
+    .SetParent<Object> ()
+    .AddAttribute ("FrCellTypeId",
+                   "Downlink FR cell type ID for automatic configuration,"
+                   "default value is 0 and it means that user needs to configure FR algorithm manually,"
+                   "if it is set to 1,2 or 3 FR algorithm will be configured automatically",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrAlgorithm::SetFrCellTypeId,&LteFfrAlgorithm::GetFrCellTypeId),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EnabledInUplink",
+                   "If FR algorithm will also work in Uplink, default value true",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteFfrAlgorithm::m_enabledInUplink),
+                   MakeBooleanChecker ())
+  ;
+  return tid;
+}
+
+
+void
+LteFfrAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+uint8_t
+LteFfrAlgorithm::GetUlBandwidth () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_ulBandwidth;
+}
+
+void
+LteFfrAlgorithm::SetUlBandwidth (uint8_t bw)
+{
+  NS_LOG_FUNCTION (this << uint16_t (bw));
+  switch (bw)
+    {
+    case 6:
+    case 15:
+    case 25:
+    case 50:
+    case 75:
+    case 100:
+      m_ulBandwidth = bw;
+      break;
+
+    default:
+      NS_FATAL_ERROR ("invalid bandwidth value " << (uint16_t) bw);
+      break;
+    }
+}
+
+uint8_t
+LteFfrAlgorithm::GetDlBandwidth () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_dlBandwidth;
+}
+
+void
+LteFfrAlgorithm::SetDlBandwidth (uint8_t bw)
+{
+  NS_LOG_FUNCTION (this << uint16_t (bw));
+  switch (bw)
+    {
+    case 6:
+    case 15:
+    case 25:
+    case 50:
+    case 75:
+    case 100:
+      m_dlBandwidth = bw;
+      break;
+
+    default:
+      NS_FATAL_ERROR ("invalid bandwidth value " << (uint16_t) bw);
+      break;
+    }
+}
+
+void
+LteFfrAlgorithm::SetFrCellTypeId (uint8_t cellTypeId)
+{
+  NS_LOG_FUNCTION (this << uint16_t (cellTypeId));
+  m_frCellTypeId = cellTypeId;
+  m_needReconfiguration = true;
+}
+
+uint8_t
+LteFfrAlgorithm::GetFrCellTypeId () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_frCellTypeId;
+}
+
+int
+LteFfrAlgorithm::GetRbgSize (int dlbandwidth)
+{
+  for (int i = 0; i < 4; i++)
+    {
+      if (dlbandwidth < Type0AllocationRbg[i])
+        {
+          return (i + 1);
+        }
+    }
+
+  return (-1);
+}
+
+void
+LteFfrAlgorithm::DoSetCellId (uint16_t cellId )
+{
+  NS_LOG_FUNCTION (this);
+  m_cellId = cellId;
+}
+
+void
+LteFfrAlgorithm::DoSetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  SetDlBandwidth (dlBandwidth);
+  SetUlBandwidth (ulBandwidth);
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-algorithm.h ns-3.21/src/lte/model/lte-ffr-algorithm.h
--- ns-3.20/src/lte/model/lte-ffr-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,259 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_ALGORITHM_H
+#define LTE_FFR_ALGORITHM_H
+
+#include <ns3/object.h>
+#include <ns3/lte-rrc-sap.h>
+#include <ns3/epc-x2-sap.h>
+#include <ns3/ff-mac-sched-sap.h>
+#include <map>
+
+namespace ns3 {
+
+class LteFfrSapUser;
+class LteFfrSapProvider;
+
+class LteFfrRrcSapUser;
+class LteFfrRrcSapProvider;
+
+/**
+ * \brief The abstract base class of a Frequency Reuse algorithm
+ *
+ * Generally Frequency reuse algorithm tells the Scheduler which RB can be allocated
+ * and which can not. FR policy depend on its implementation.
+ *
+ * The communication with the eNodeB MAC Scheduler instance is done through
+ * the *LteFfrSap* interface. The frequency reuse algorithm instance corresponds to the
+ * "provider" part of this interface, while the eNodeB MAC Scheduler instance takes the
+ * role of the "user" part.
+ *
+ * The communication with the eNodeB RRC instance is done through the *LteFfrRrcSap*
+ * interface. The frequency reuse algorithm instance corresponds to the
+ * "provider" part of this interface, while the eNodeB RRC instance takes the
+ * role of the "user" part.
+ *
+ */
+
+class LteFfrAlgorithm : public Object
+{
+public:
+  LteFfrAlgorithm ();
+  virtual ~LteFfrAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  /**
+   * \brief Set the "user" part of the LteFfrSap interface that
+   *        this frequency reuse algorithm instance will interact with.
+   * \param s a reference to the "user" part of the interface, typically a
+   *          member of an Scheduler instance
+   */
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s) = 0;
+
+  /**
+   * \brief Set the "user" part of the LteFfrRrcSap interface that
+   *        this frequency reuse algorithm instance will interact with.
+   * \param s a reference to the "user" part of the interface, typically a
+   *          member of an LteEnbRrc instance
+   */
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s) = 0;
+
+  /**
+   * \brief Export the "provider" part of the LteFfrSap interface.
+   * \return the reference to the "provider" part of the interface, typically to
+   *         be kept by an Scheduler instance
+   */
+  virtual LteFfrSapProvider* GetLteFfrSapProvider () = 0;
+
+  /**
+   * \brief Export the "provider" part of the LteFfrRrcSap interface.
+   * \return the reference to the "provider" part of the interface, typically to
+   *         be kept by an LteEnbRrc instance
+   */
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider () = 0;
+
+  /**
+   * \return the uplink bandwidth in RBs
+   */
+  uint8_t GetUlBandwidth () const;
+
+  /**
+   * \param bw the uplink bandwidth in RBs
+   */
+  void SetUlBandwidth (uint8_t bw);
+
+  /**
+   * \return the downlink bandwidth in RBs
+   */
+  uint8_t GetDlBandwidth () const;
+
+  /**
+   * \param bw the downlink bandwidth in RBs
+   */
+  void SetDlBandwidth (uint8_t bw);
+
+  /**
+   * \param cellTypeId for automatic FR configuration
+   */
+  void SetFrCellTypeId (uint8_t cellTypeId);
+
+  /**
+   * \return cellTypeId which is used for automatic FR configuration
+   */
+  uint8_t GetFrCellTypeId () const;
+
+protected:
+
+  // inherited from Object
+  virtual void DoDispose ();
+
+  /**
+   * \brief Automatic FR reconfiguration
+   */
+  virtual void Reconfigure () = 0;
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+
+  /**
+   * \brief Implementation of LteFfrSapProvider::GetAvailableDlRbg
+   * \return vector of size (m_dlBandwidth/RbgSize); false indicates
+   *                    that RBG is free to use, true otherwise
+   */
+  virtual std::vector <bool> DoGetAvailableDlRbg () = 0;
+
+  /**
+   * \brief Implementation of LteFfrSapProvider::IsDlRbgAvailableForUe
+   * \param rbId
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \return true if UE can be served on i-th RB, false otherwise
+   */
+  virtual bool DoIsDlRbgAvailableForUe (int rbId, uint16_t rnti) = 0;
+
+  /**
+   * \brief Implementation of LteFfrSapProvider::GetAvailableUlRbg.
+   * \return vector of size m_ulBandwidth; false indicates
+   *                    that RB is free to use, true otherwise
+   */
+  virtual std::vector <bool> DoGetAvailableUlRbg () = 0;
+
+  /**
+   * \brief Implementation of LteFfrSapProvider::IsUlRbgAvailableForUe.
+   * \param rbId
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \return true if UE can be served on i-th RB, false otherwise
+   */
+  virtual bool DoIsUlRbgAvailableForUe (int rbId, uint16_t rnti) = 0;
+
+  /**
+   * \brief DoReportDlCqiInfo
+   * \param params
+   *
+   */
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params) = 0;
+
+  /**
+   * \brief DoReportUlCqiInfo
+   * \param params
+   *
+   */
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params) = 0;
+
+  /**
+   * \brief DoReportUlCqiInfo
+   * \param ulCqiMap
+   *
+   */
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap ) = 0;
+
+  /**
+   * \brief DoGetTpc for UE
+   * \param rnti
+   * \return TPC value
+   */
+  virtual uint8_t DoGetTpc (uint16_t rnti) = 0;
+
+  /**
+   * \brief DoGetMinContinuousUlBandwidth in number of RB
+   * \return number of RB in min continous UL Bandwidth
+   */
+  virtual uint8_t DoGetMinContinuousUlBandwidth () = 0;
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+
+  /**
+   * \brief SetCellId
+   * \param cellId the Cell Identifier
+   */
+  virtual void DoSetCellId (uint16_t cellId);
+
+  /**
+   * \brief Implementation of LteFfrRrcSapProvider::SetBandwidth.
+   * \param ulBandwidth UL bandwidth in number of RB
+   * \param dlBandwidth DL bandwidth in number of RB
+   */
+  virtual void DoSetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth);
+
+  /**
+   * \brief Implementation of LteFfrRrcSapProvider::ReportUeMeas.
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \param measResults a single report of one measurement identity
+   */
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults) = 0;
+
+  /**
+   * \brief DoRecvLoadInformation
+   * \param params
+   *
+   */
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params) = 0;
+
+  /**
+  * \brief Get RBG size for DL Bandwidth according to table 7.1.6.1-1 of 36.213
+  * \param dlbandwidth
+  * \return size of RBG in number of RB
+  */
+  int GetRbgSize (int dlbandwidth);
+
+
+  uint16_t m_cellId;
+
+  uint8_t m_dlBandwidth; /**< downlink bandwidth in RBs */
+  uint8_t m_ulBandwidth; /**< uplink bandwidth in RBs */
+
+  uint8_t m_frCellTypeId; /**< FFR cell type ID for automatic configuration */
+
+  bool m_enabledInUplink; /**< If true FR algorithm will also work in Uplink*/
+
+  bool m_needReconfiguration; /**< If true FR algorithm will be reconfigured*/
+
+}; // end of class LteFfrAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-ffr-distributed-algorithm.cc ns-3.21/src/lte/model/lte-ffr-distributed-algorithm.cc
--- ns-3.20/src/lte/model/lte-ffr-distributed-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-distributed-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,711 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-distributed-algorithm.h"
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteFfrDistributedAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFfrDistributedAlgorithm);
+
+
+LteFfrDistributedAlgorithm::LteFfrDistributedAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFfrDistributedAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFfrDistributedAlgorithm> (this);
+}
+
+
+LteFfrDistributedAlgorithm::~LteFfrDistributedAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFfrDistributedAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFfrDistributedAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFfrDistributedAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFfrDistributedAlgorithm> ()
+    .AddAttribute ("CalculationInterval",
+                   "Time interval between calculation of Edge sub-band, Default value 1 second",
+                   TimeValue (Seconds (1)),
+                   MakeTimeAccessor (&LteFfrDistributedAlgorithm::m_calculationInterval),
+                   MakeTimeChecker ())
+    .AddAttribute ("RsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_egdeSubBandRsrqThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("RsrpDifferenceThreshold",
+                   "If the difference between the power of the signal received by UE from "
+                   "the serving cell and the power of the signal received from the adjacent cell is less "
+                   "than a RsrpDifferenceThreshold value, the cell weight is incremented",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_rsrpDifferenceThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterPowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_centerPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgePowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_edgePowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeRbNum",
+                   "Number of RB that can be used in edge Sub-band",
+                   UintegerValue (8),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_edgeRbNum),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in center area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_centerAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in edge area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrDistributedAlgorithm::m_edgeAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+
+  ;
+  return tid;
+}
+
+
+void
+LteFfrDistributedAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFfrDistributedAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFfrDistributedAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFfrDistributedAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFfrDistributedAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+  NS_LOG_LOGIC (this << " requesting Event A1 and A4 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_rsrqMeasId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+
+  LteRrcSap::ReportConfigEutra reportConfigA4;
+  reportConfigA4.eventId = LteRrcSap::ReportConfigEutra::EVENT_A4;
+  reportConfigA4.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRP;
+  reportConfigA4.threshold1.range = 0; // intentionally very low threshold
+  reportConfigA4.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRP;
+  reportConfigA4.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_rsrpMeasId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfigA4);
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlEdgeRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_ulEdgeRbgMap.resize (m_ulBandwidth, false);
+  m_calculationEvent = Simulator::ScheduleNow (&LteFfrDistributedAlgorithm::Calculate, this);
+
+}
+
+void
+LteFfrDistributedAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFfrDistributedAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteFfrDistributedAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteFfrDistributedAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  NS_LOG_FUNCTION (this);
+  m_dlRbgMap.clear ();
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, false);
+}
+
+void
+LteFfrDistributedAlgorithm::InitializeUplinkRbgMaps ()
+{
+  NS_LOG_FUNCTION (this);
+  m_ulRbgMap.clear ();
+  m_ulRbgMap.resize (m_ulBandwidth, false);
+}
+
+std::vector <bool>
+LteFfrDistributedAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFfrDistributedAlgorithm::DoIsDlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool edgeRbg = m_dlEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == EdgeArea )
+    {
+      edgeUe = true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+std::vector <bool>
+LteFfrDistributedAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFfrDistributedAlgorithm::DoIsUlRbgAvailableForUe (int rbId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  bool edgeRbg = m_ulEdgeRbgMap[rbId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == EdgeArea )
+    {
+      edgeUe = true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+void
+LteFfrDistributedAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFfrDistributedAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFfrDistributedAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFfrDistributedAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return 1;     // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+    }
+
+  //TS36.213 Table 5.1.1.1-2
+  //   TPC   |   Accumulated Mode  |  Absolute Mode
+  //------------------------------------------------
+  //    0    |         -1          |      -4
+  //    1    |          0          |      -1
+  //    2    |          1          |       1
+  //    3    |          3          |       4
+  //------------------------------------------------
+  // here Absolute mode is used
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      return 1;
+    }
+
+  if (it->second == EdgeArea )
+    {
+      return m_edgeAreaTpc;
+    }
+  else
+    {
+      return m_centerAreaTpc;
+    }
+
+  return 1;
+}
+
+uint8_t
+LteFfrDistributedAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  uint8_t minContinuousUlBandwidth = m_ulBandwidth;
+
+  if (!m_enabledInUplink)
+    {
+      return minContinuousUlBandwidth;
+    }
+
+  minContinuousUlBandwidth =
+    ((m_edgeRbNum > 0 ) && (m_edgeRbNum < minContinuousUlBandwidth)) ? m_edgeRbNum : minContinuousUlBandwidth;
+
+  return minContinuousUlBandwidth;
+}
+
+void
+LteFfrDistributedAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                            LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_INFO ("CellId: " << m_cellId << " RNTI :" << rnti << " MeasId: " << (uint16_t) measResults.measId
+                          << " RSRP: " << (uint16_t)measResults.rsrpResult
+                          << " RSRQ: " << (uint16_t)measResults.rsrqResult);
+
+  if (measResults.measId == m_rsrqMeasId)
+    {
+      //check if it is center or edge UE
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+
+      it = m_ues.find (rnti);
+      if (measResults.rsrqResult >= m_egdeSubBandRsrqThreshold)
+        {
+          if (it->second != CenterArea)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Center sub-band");
+              it->second = CenterArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_centerPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else
+        {
+          if (it->second != EdgeArea )
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Edge sub-band");
+              it->second = EdgeArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_edgePowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+    }
+  else if (measResults.measId == m_rsrpMeasId)
+    {
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+
+      UpdateNeighbourMeasurements (rnti, m_cellId, measResults.rsrpResult, measResults.rsrqResult);
+
+      if (measResults.haveMeasResultNeighCells
+          && !measResults.measResultListEutra.empty ())
+        {
+          for (std::list <LteRrcSap::MeasResultEutra>::iterator it = measResults.measResultListEutra.begin ();
+               it != measResults.measResultListEutra.end ();
+               ++it)
+            {
+              NS_ASSERT_MSG (it->haveRsrpResult == true,
+                             "RSRP measurement is missing from cellId " << it->physCellId);
+              NS_ASSERT_MSG (it->haveRsrqResult == true,
+                             "RSRQ measurement is missing from cellId " << it->physCellId);
+              UpdateNeighbourMeasurements (rnti, it->physCellId, it->rsrpResult, it->rsrqResult);
+
+              bool found = false;
+              for (std::vector<uint16_t>::iterator ncIt = m_neigborCell.begin (); ncIt != m_neigborCell.end (); ncIt++)
+                {
+                  if ((*ncIt) == it->physCellId)
+                    {
+                      found = true;
+                    }
+                }
+              if (found == false)
+                {
+                  m_neigborCell.push_back (it->physCellId);
+                }
+            }
+        }
+      else
+        {
+          NS_LOG_WARN (this << " Event A4 received without measurement results from neighbouring cells");
+        }
+    }
+  else
+    {
+      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
+    }
+}
+
+void
+LteFfrDistributedAlgorithm::Calculate ()
+{
+  NS_LOG_FUNCTION (this);
+  m_calculationEvent = Simulator::Schedule (m_calculationInterval, &LteFfrDistributedAlgorithm::Calculate, this);
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  uint16_t rbgNum = m_dlBandwidth / rbgSize;
+
+  m_cellWeightMap.clear ();
+  m_dlEdgeRbgMap.clear ();
+  m_dlEdgeRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_ulEdgeRbgMap.clear ();
+  m_ulEdgeRbgMap.resize (m_ulBandwidth, false);
+
+  MeasurementTable_t::iterator it1;
+  MeasurementRow_t::iterator it2;
+  Ptr<UeMeasure> servingCellMeasures;
+  Ptr<UeMeasure> neighbourCellMeasures;
+
+  uint32_t edgeUeNum = 0;
+  std::map< uint16_t, uint8_t >::iterator areaIt;
+  for (areaIt = m_ues.begin (); areaIt != m_ues.end (); areaIt++)
+    {
+      if (areaIt->second == EdgeArea)
+        {
+          edgeUeNum++;
+        }
+    }
+
+  if (edgeUeNum != 0)
+    {
+      for (it1 = m_ueMeasures.begin (); it1 != m_ueMeasures.end (); it1++)
+        {
+          std::map< uint16_t, uint8_t >::iterator areaIt = m_ues.find (it1->first);
+          if (areaIt->second != EdgeArea)
+            {
+              continue;
+            }
+
+          servingCellMeasures = 0;
+          neighbourCellMeasures = 0;
+
+          it2 = it1->second.find (m_cellId);
+          if (it2 != it1->second.end ())
+            {
+              servingCellMeasures = it2->second;
+            }
+          else
+            {
+              continue;
+            }
+
+          for (it2 = it1->second.begin (); it2 != it1->second.end (); it2++)
+            {
+              if (it2->first != m_cellId)
+                {
+                  neighbourCellMeasures = it2->second;
+                }
+              else
+                {
+                  continue;
+                }
+
+              if (servingCellMeasures && neighbourCellMeasures)
+                {
+                  int16_t rsrpDifference = servingCellMeasures->m_rsrp - neighbourCellMeasures->m_rsrp;
+                  NS_LOG_INFO ("CellId: " << m_cellId << " UE RNTI: " << it1->first
+                                          << " NeighborCellId: " << neighbourCellMeasures->m_cellId
+                                          << " RSRP Serving: " << (int)servingCellMeasures->m_rsrp
+                                          << " RSRP Neighbor: " << (int)neighbourCellMeasures->m_rsrp
+                                          << " RSRP Difference: " << (int)rsrpDifference);
+
+                  if (rsrpDifference < m_rsrpDifferenceThreshold)
+                    {
+                      m_cellWeightMap[neighbourCellMeasures->m_cellId]++;
+                    }
+                }
+            }
+        }
+
+      std::map< uint16_t, uint64_t > metricA;
+      for (uint16_t i = 0; i < rbgNum; i++)
+        {
+          metricA[i] = 0;
+        }
+
+      std::map<uint16_t, uint32_t>::iterator cellIt;
+      for (cellIt = m_cellWeightMap.begin (); cellIt != m_cellWeightMap.end (); cellIt++)
+        {
+          NS_LOG_INFO ("CellId: " << m_cellId << " NeighborCellId: " << cellIt->first << " Weight: " << cellIt->second);
+
+          std::map<uint16_t, std::vector <bool> >::iterator rntpIt = m_rntp.find (cellIt->first);
+          if (rntpIt == m_rntp.end ())
+            {
+              continue;
+            }
+
+          for (uint8_t i = 0; i < rbgNum; i++)
+            {
+              metricA[i] += cellIt->second * rntpIt->second[i];
+            }
+        }
+
+      std::vector<uint16_t> sortedRbgByMetric;
+      std::multimap< uint64_t, uint16_t > sortedMetricA;
+      for (std::map<uint16_t, uint64_t>::const_iterator it = metricA.begin (); it != metricA.end (); ++it)
+        {
+          sortedMetricA.insert (std::pair<uint64_t, uint16_t> (it->second, it->first));
+        }
+
+      for (std::multimap< uint64_t, uint16_t >::const_iterator it = sortedMetricA.begin ();
+           it != sortedMetricA.end (); ++it)
+        {
+          sortedRbgByMetric.push_back (it->second);
+        }
+
+      for (int i = 0; i < m_edgeRbNum / rbgSize; i++)
+        {
+          m_dlEdgeRbgMap[ sortedRbgByMetric[i] ] = true;
+        }
+
+      for (int i = 0; i < m_edgeRbNum / rbgSize; i++)
+        {
+          uint32_t rbgIndex = sortedRbgByMetric[i];
+          for (int k = 0; k < rbgSize; k++)
+            {
+              uint32_t rbIndex = rbgSize * rbgIndex + k;
+              m_ulEdgeRbgMap[ rbIndex ] = true;
+            }
+        }
+    }
+
+  for (std::vector<uint16_t>::iterator ncIt = m_neigborCell.begin (); ncIt != m_neigborCell.end (); ncIt++)
+    {
+      SendLoadInformation ((*ncIt));
+    }
+}
+
+void
+LteFfrDistributedAlgorithm::SendLoadInformation (uint16_t targetCellId)
+{
+  NS_LOG_FUNCTION (this);
+
+  NS_LOG_INFO ("SendLoadInformation to CellId : " << targetCellId );
+
+  std::vector<EpcX2Sap::UlInterferenceOverloadIndicationItem> m_currentUlInterferenceOverloadIndicationList;
+  std::vector <EpcX2Sap::UlHighInterferenceInformationItem>  m_currentUlHighInterferenceInformationList;
+  EpcX2Sap::RelativeNarrowbandTxBand m_currentRelativeNarrowbandTxBand;
+
+  m_currentRelativeNarrowbandTxBand.rntpPerPrbList = m_dlEdgeRbgMap;
+
+  EpcX2Sap::CellInformationItem cii;
+  cii.sourceCellId = m_cellId;
+  cii.ulInterferenceOverloadIndicationList = m_currentUlInterferenceOverloadIndicationList;
+  cii.ulHighInterferenceInformationList = m_currentUlHighInterferenceInformationList;
+  cii.relativeNarrowbandTxBand = m_currentRelativeNarrowbandTxBand;
+
+  EpcX2Sap::LoadInformationParams params;
+  params.targetCellId = targetCellId;
+  params.cellInformationList.push_back (cii);
+
+  m_ffrRrcSapUser->SendLoadInformation (params);
+}
+
+void
+LteFfrDistributedAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_INFO ("CellId: " << m_cellId
+                          << " Recv X2 message: LOAD INFORMATION from CellId:" << params.cellInformationList[0].sourceCellId);
+
+  if (params.cellInformationList[0].sourceCellId > m_cellId)
+    {
+      return;
+    }
+
+  uint16_t neighborCellId = params.cellInformationList[0].sourceCellId;
+  std::map<uint16_t, std::vector <bool> >::iterator it = m_rntp.find (neighborCellId);
+  if (it != m_rntp.end ())
+    {
+      it->second = params.cellInformationList[0].relativeNarrowbandTxBand.rntpPerPrbList;
+    }
+  else
+    {
+      m_rntp.insert (std::pair<uint16_t, std::vector <bool> > (neighborCellId, params.cellInformationList[0].relativeNarrowbandTxBand.rntpPerPrbList));
+    }
+}
+
+void
+LteFfrDistributedAlgorithm::UpdateNeighbourMeasurements (uint16_t rnti,
+                                                         uint16_t cellId,
+                                                         uint8_t rsrp,
+                                                         uint8_t rsrq)
+{
+  NS_LOG_FUNCTION (this << rnti << cellId << (uint16_t) rsrq);
+
+  MeasurementTable_t::iterator it1;
+  it1 = m_ueMeasures.find (rnti);
+
+  if (it1 == m_ueMeasures.end ())
+    {
+      // insert a new UE entry
+      MeasurementRow_t row;
+      std::pair<MeasurementTable_t::iterator, bool> ret;
+      ret = m_ueMeasures.insert (std::pair<uint16_t, MeasurementRow_t> (rnti, row));
+      NS_ASSERT (ret.second);
+      it1 = ret.first;
+    }
+
+  NS_ASSERT (it1 != m_ueMeasures.end ());
+  Ptr<UeMeasure> cellMeasures;
+  std::map<uint16_t, Ptr<UeMeasure> >::iterator it2;
+  it2 = it1->second.find (cellId);
+
+  if (it2 != it1->second.end ())
+    {
+      cellMeasures = it2->second;
+      cellMeasures->m_cellId = cellId;
+      cellMeasures->m_rsrp = rsrp;
+      cellMeasures->m_rsrq = rsrq;
+    }
+  else
+    {
+      // insert a new cell entry
+      cellMeasures = Create<UeMeasure> ();
+      cellMeasures->m_cellId = cellId;
+      cellMeasures->m_rsrp = rsrp;
+      cellMeasures->m_rsrq = rsrq;
+      it1->second[cellId] = cellMeasures;
+    }
+
+} // end of UpdateNeighbourMeasurements
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-distributed-algorithm.h ns-3.21/src/lte/model/lte-ffr-distributed-algorithm.h
--- ns-3.20/src/lte/model/lte-ffr-distributed-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-distributed-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,158 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_DISTRIBUTED_ALGORITHM_H
+#define LTE_FFR_DISTRIBUTED_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+
+namespace ns3 {
+
+/**
+ * \brief Distributed Fractional Frequency Reuse algorithm implementation.
+ */
+class LteFfrDistributedAlgorithm : public LteFfrAlgorithm
+{
+public:
+  LteFfrDistributedAlgorithm ();
+  virtual ~LteFfrDistributedAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFfrDistributedAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFfrDistributedAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+  void UpdateNeighbourMeasurements (uint16_t rnti, uint16_t cellId, uint8_t rsrp, uint8_t rsrq);
+
+  void Calculate ();
+  void SendLoadInformation (uint16_t targetCellId);
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  uint8_t m_edgeRbNum;
+  std::vector <bool> m_dlEdgeRbgMap;
+  std::vector <bool> m_ulEdgeRbgMap;
+
+  enum UePosition
+  {
+    AreaUnset,
+    CenterArea,
+    EdgeArea
+  };
+
+  std::map< uint16_t, uint8_t > m_ues;
+
+  uint8_t m_egdeSubBandRsrqThreshold;
+
+  uint8_t m_centerPowerOffset;
+  uint8_t m_edgePowerOffset;
+
+  uint8_t m_centerAreaTpc;
+  uint8_t m_edgeAreaTpc;
+
+  Time m_calculationInterval;
+  EventId m_calculationEvent;
+
+  // The expected measurement identity
+  uint8_t m_rsrqMeasId;
+  uint8_t m_rsrpMeasId;
+
+  /**
+   * \brief Measurements reported by a UE for a cell ID.
+   *
+   * The values are quantized according 3GPP TS 36.133 section 9.1.4 and 9.1.7.
+   */
+  class UeMeasure : public SimpleRefCount<UeMeasure>
+  {
+public:
+    uint16_t m_cellId;
+    uint8_t m_rsrp;
+    uint8_t m_rsrq;
+  };
+
+  //               cellId
+  typedef std::map<uint16_t, Ptr<UeMeasure> > MeasurementRow_t;
+  //               rnti
+  typedef std::map<uint16_t, MeasurementRow_t> MeasurementTable_t;
+  MeasurementTable_t m_ueMeasures;
+
+  std::vector<uint16_t> m_neigborCell;
+
+  uint8_t m_rsrpDifferenceThreshold;
+
+  std::map<uint16_t, uint32_t> m_cellWeightMap;
+
+  std::map<uint16_t, std::vector <bool> > m_rntp;
+
+}; // end of class LteFfrDistributedAlgorithm
+
+} // end of namespace ns3
+
+#endif /* LTE_FR_DISTRIBUTED_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-ffr-enhanced-algorithm.cc ns-3.21/src/lte/model/lte-ffr-enhanced-algorithm.cc
--- ns-3.20/src/lte/model/lte-ffr-enhanced-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-enhanced-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,907 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-enhanced-algorithm.h"
+#include "ns3/ff-mac-common.h"
+#include "ns3/lte-common.h"
+#include "ns3/lte-vendor-specific-parameters.h"
+#include <ns3/log.h>
+#include "ns3/boolean.h"
+#include <ns3/double.h>
+#include <cfloat>
+
+NS_LOG_COMPONENT_DEFINE ("LteFfrEnhancedAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFfrEnhancedAlgorithm);
+
+static const double SpectralEfficiencyForCqi[16] = {
+  0.0, // out of range
+  0.15, 0.23, 0.38, 0.6, 0.88, 1.18,
+  1.48, 1.91, 2.41,
+  2.73, 3.32, 3.9, 4.52, 5.12, 5.55
+};
+
+static const struct FfrEnhancedDownlinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t dlBandwidth;
+  uint8_t dlSubBandOffset;
+  uint8_t dlReuse3SubBandwidth;
+  uint8_t dlReuse1SubBandwidth;
+} g_ffrEnhancedDownlinkDefaultConfiguration[] = {
+  { 1, 25, 0, 4, 4},
+  { 2, 25, 8, 4, 4},
+  { 3, 25, 16, 4, 4},
+  { 1, 50, 0, 9, 6},
+  { 2, 50, 15, 9, 6},
+  { 3, 50, 30, 9, 6},
+  { 1, 75, 0, 8, 16},
+  { 2, 75, 24, 8, 16},
+  { 3, 75, 48, 8, 16},
+  { 1, 100, 0, 16, 16},
+  { 2, 100, 32, 16, 16},
+  { 3, 100, 64, 16, 16}
+};
+
+static const struct FfrEnhancedUplinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t ulBandwidth;
+  uint8_t ulSubBandOffset;
+  uint8_t ulReuse3SubBandwidth;
+  uint8_t ulReuse1SubBandwidth;
+} g_ffrEnhancedUplinkDefaultConfiguration[] = {
+  { 1, 25, 0, 4, 4},
+  { 2, 25, 8, 4, 4},
+  { 3, 25, 16, 4, 4},
+  { 1, 50, 0, 9, 6},
+  { 2, 50, 15, 9, 6},
+  { 3, 50, 30, 9, 6},
+  { 1, 75, 0, 8, 16},
+  { 2, 75, 24, 8, 16},
+  { 3, 75, 48, 8, 16},
+  { 1, 100, 0, 16, 16},
+  { 2, 100, 32, 16, 16},
+  { 3, 100, 64, 16, 16}
+};
+
+const uint16_t NUM_DOWNLINK_CONFS (sizeof (g_ffrEnhancedDownlinkDefaultConfiguration) / sizeof (FfrEnhancedDownlinkDefaultConfiguration));
+const uint16_t NUM_UPLINK_CONFS (sizeof (g_ffrEnhancedUplinkDefaultConfiguration) / sizeof (FfrEnhancedUplinkDefaultConfiguration));
+
+
+LteFfrEnhancedAlgorithm::LteFfrEnhancedAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_measId (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFfrEnhancedAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFfrEnhancedAlgorithm> (this);
+}
+
+
+LteFfrEnhancedAlgorithm::~LteFfrEnhancedAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFfrEnhancedAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFfrEnhancedAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFfrEnhancedAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFfrEnhancedAlgorithm> ()
+    .AddAttribute ("UlSubBandOffset",
+                   "Uplink SubBand Offset for this cell in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_ulSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlReuse3SubBandwidth",
+                   "Uplink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (4),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_ulReuse3SubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlReuse1SubBandwidth",
+                   "Uplink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (4),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_ulReuse1SubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlSubBandOffset",
+                   "Downlink SubBand Offset for this cell in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_dlSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlReuse3SubBandwidth",
+                   "Downlink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (4),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_dlReuse3SubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlReuse1SubBandwidth",
+                   "Downlink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (4),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_dlReuse1SubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("RsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
+                   UintegerValue (26),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_rsrqThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaPowerOffset",
+                   "PdschConfigDedicated::Pa value for Center Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_centerAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaPowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_edgeAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlCqiThreshold",
+                   "If the DL-CQI for RBG of is higher than this threshold, transmission on RBG is possible",
+                   UintegerValue (15),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_dlCqiThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlCqiThreshold",
+                   "If the UL-CQI for RBG of is higher than this threshold, transmission on RBG is possible",
+                   UintegerValue (15),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_ulCqiThreshold),
+                   MakeUintegerChecker <uint8_t> ())
+    .AddAttribute ("CenterAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in center area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_centerAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in edge area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrEnhancedAlgorithm::m_edgeAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+void
+LteFfrEnhancedAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFfrEnhancedAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFfrEnhancedAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFfrEnhancedAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFfrEnhancedAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_ASSERT_MSG (m_dlBandwidth > 24,"DlBandwidth must be at least 25 to use EFFR algorithm");
+  NS_ASSERT_MSG (m_ulBandwidth > 24,"UlBandwidth must be at least 25 to use EFFR algorithm");
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+  NS_LOG_LOGIC (this << " requesting Event A1 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_measId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+}
+
+void
+LteFfrEnhancedAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFfrEnhancedAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_DOWNLINK_CONFS; ++i)
+    {
+      if ((g_ffrEnhancedDownlinkDefaultConfiguration[i].cellId == cellId)
+          && g_ffrEnhancedDownlinkDefaultConfiguration[i].dlBandwidth == m_dlBandwidth)
+        {
+          m_dlSubBandOffset = g_ffrEnhancedDownlinkDefaultConfiguration[i].dlSubBandOffset;
+          m_dlReuse3SubBandwidth = g_ffrEnhancedDownlinkDefaultConfiguration[i].dlReuse3SubBandwidth;
+          m_dlReuse1SubBandwidth = g_ffrEnhancedDownlinkDefaultConfiguration[i].dlReuse1SubBandwidth;
+        }
+    }
+}
+
+void
+LteFfrEnhancedAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_UPLINK_CONFS; ++i)
+    {
+      if ((g_ffrEnhancedUplinkDefaultConfiguration[i].cellId == cellId)
+          && g_ffrEnhancedUplinkDefaultConfiguration[i].ulBandwidth == m_ulBandwidth)
+        {
+          m_ulSubBandOffset = g_ffrEnhancedUplinkDefaultConfiguration[i].ulSubBandOffset;
+          m_ulReuse3SubBandwidth = g_ffrEnhancedUplinkDefaultConfiguration[i].ulReuse3SubBandwidth;
+          m_ulReuse1SubBandwidth = g_ffrEnhancedUplinkDefaultConfiguration[i].ulReuse1SubBandwidth;
+        }
+    }
+}
+
+int
+LteFfrEnhancedAlgorithm::GetCqiFromSpectralEfficiency (double s)
+{
+  NS_LOG_FUNCTION (s);
+  NS_ASSERT_MSG (s >= 0.0, "negative spectral efficiency = " << s);
+  int cqi = 0;
+  while ((cqi < 15) && (SpectralEfficiencyForCqi[cqi + 1] < s))
+    {
+      ++cqi;
+    }
+  NS_LOG_LOGIC ("cqi = " << cqi);
+  return cqi;
+}
+
+void
+LteFfrEnhancedAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  m_dlRbgMap.clear ();
+  m_dlReuse3RbgMap.clear ();
+  m_dlReuse1RbgMap.clear ();
+  m_dlPrimarySegmentRbgMap.clear ();
+  m_dlSecondarySegmentRbgMap.clear ();
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, true);
+
+  m_dlReuse3RbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlReuse1RbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlPrimarySegmentRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlSecondarySegmentRbgMap.resize (m_dlBandwidth / rbgSize, true);
+
+  NS_ASSERT_MSG (m_dlSubBandOffset <= m_dlBandwidth,"DlSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlSubBandOffset + m_dlReuse3SubBandwidth + m_dlReuse1SubBandwidth <= m_dlBandwidth,
+                 "DlSubBandOffset + DlReuse3SubBandwidth + DlReuse1SubBandwidth  higher than DlBandwidth");
+
+  for (uint8_t i = 0; i < m_dlReuse3SubBandwidth / rbgSize; i++)
+    {
+      int offset = m_dlSubBandOffset / rbgSize;
+      uint8_t index = offset + i;
+      m_dlReuse3RbgMap[index] = true;
+      m_dlPrimarySegmentRbgMap[index] = true;
+      m_dlRbgMap[index] = false;
+    }
+
+  for (uint8_t i = 0; i < m_dlReuse1SubBandwidth / rbgSize; i++)
+    {
+      int offset = (m_dlSubBandOffset + m_dlReuse3SubBandwidth) / rbgSize;
+      uint8_t index = offset + i;
+      m_dlReuse1RbgMap[index] = true;
+      m_dlPrimarySegmentRbgMap[index] = true;
+      m_dlSecondarySegmentRbgMap[index] = false;
+      m_dlRbgMap[index] = false;
+    }
+
+  for (uint8_t i = 0; i < m_dlReuse3SubBandwidth / rbgSize; i++)
+    {
+      uint8_t offset = (m_dlReuse3SubBandwidth + m_dlReuse1SubBandwidth) / rbgSize;
+
+      uint8_t index = 0 * offset + i;
+      m_dlSecondarySegmentRbgMap[index] = false;
+
+      index = 1 * offset + i;
+      m_dlSecondarySegmentRbgMap[index] = false;
+
+      index = 2 * offset + i;
+      m_dlSecondarySegmentRbgMap[index] = false;
+    }
+}
+
+
+void
+LteFfrEnhancedAlgorithm::InitializeUplinkRbgMaps ()
+{
+  m_ulRbgMap.clear ();
+  m_ulReuse3RbgMap.clear ();
+  m_ulReuse1RbgMap.clear ();
+  m_ulPrimarySegmentRbgMap.clear ();
+  m_ulSecondarySegmentRbgMap.clear ();
+
+  if (!m_enabledInUplink)
+    {
+      m_ulRbgMap.resize (m_ulBandwidth, false);
+      return;
+    }
+
+  m_ulRbgMap.resize (m_ulBandwidth, true);
+  m_ulReuse3RbgMap.resize (m_ulBandwidth, false);
+  m_ulReuse1RbgMap.resize (m_ulBandwidth, false);
+  m_ulPrimarySegmentRbgMap.resize (m_ulBandwidth, false);
+  m_ulSecondarySegmentRbgMap.resize (m_ulBandwidth, true);
+
+
+  NS_ASSERT_MSG (m_ulSubBandOffset <= m_ulBandwidth, "UlSubBandOffset higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulSubBandOffset + m_ulReuse3SubBandwidth + m_ulReuse1SubBandwidth <= m_ulBandwidth,
+                 "UlSubBandOffset + UlReuse3SubBandwidth + UlReuse1SubBandwidth higher than UlBandwidth");
+
+
+  for (uint8_t i = 0; i < m_ulReuse3SubBandwidth; i++)
+    {
+      int offset = m_ulSubBandOffset;
+      uint8_t index = offset + i;
+      m_ulReuse3RbgMap[index] = true;
+      m_ulPrimarySegmentRbgMap[index] = true;
+      m_ulRbgMap[index] = false;
+    }
+
+  for (uint8_t i = 0; i < m_ulReuse1SubBandwidth; i++)
+    {
+      int offset = (m_ulSubBandOffset + m_ulReuse3SubBandwidth);
+      uint8_t index = offset + i;
+      m_ulReuse1RbgMap[index] = true;
+      m_ulPrimarySegmentRbgMap[index] = true;
+      m_ulSecondarySegmentRbgMap[index] = false;
+      m_ulRbgMap[index] = false;
+    }
+
+  for (uint8_t i = 0; i < m_ulReuse3SubBandwidth; i++)
+    {
+      uint8_t offset = m_ulReuse3SubBandwidth + m_ulReuse1SubBandwidth;
+
+      uint8_t index = 0 * offset + i;
+      m_ulSecondarySegmentRbgMap[index] = false;
+
+      index = 1 * offset + i;
+      m_ulSecondarySegmentRbgMap[index] = false;
+
+      index = 2 * offset + i;
+      m_ulSecondarySegmentRbgMap[index] = false;
+
+    }
+}
+
+std::vector <bool>
+LteFfrEnhancedAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  std::vector <bool> rbgMap = m_dlRbgMap;
+
+  std::map <uint16_t, std::vector<bool> >::iterator it;
+  for (it = m_dlRbgAvailableforUe.begin (); it != m_dlRbgAvailableforUe.end (); it++)
+    {
+      NS_LOG_INFO ("RNTI : " << it->first);
+      std::vector<bool> rbgAvailableMap = it->second;
+      for (uint32_t i = 0; i < rbgMap.size (); i++)
+        {
+          NS_LOG_INFO ("\t rbgId: " << i << " available " << (int)rbgAvailableMap.at (i));
+          if ( rbgAvailableMap.at (i) == true)
+            {
+              rbgMap.at (i) = false;
+            }
+        }
+    }
+
+  return rbgMap;
+}
+
+bool
+LteFfrEnhancedAlgorithm::DoIsDlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool isReuse3Rbg = m_dlReuse3RbgMap[rbgId];
+  bool isReuse1Rbg = m_dlReuse1RbgMap[rbgId];
+  bool isPrimarySegmentRbg     = m_dlPrimarySegmentRbgMap[rbgId];
+  bool isSecondarySegmentRbg   = m_dlSecondarySegmentRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+    }
+
+  it = m_ues.find (rnti);
+
+  //if UE area is unknown, serve UE in edge area RBGs
+  if (it->second == AreaUnset)
+    {
+      return isReuse3Rbg;
+    }
+
+
+  bool isCenterUe = false;
+  bool isEdgeUe   = false;
+
+  if (it->second == CenterArea )
+    {
+      isCenterUe = true;
+    }
+  else if (it->second == EdgeArea)
+    {
+      isEdgeUe = true;
+    }
+
+  if (isPrimarySegmentRbg)
+    {
+      NS_LOG_INFO ("PRIMARY SEGMENT RNTI: " << rnti  << "  rbgId: " << rbgId );
+      return (isReuse1Rbg && isCenterUe) || (isReuse3Rbg && isEdgeUe);
+    }
+  else if (isSecondarySegmentRbg && isCenterUe)
+    {
+      //check if RB can be used by UE based on CQI information
+      NS_LOG_INFO ("SECONDARY SEGMENT RNTI: " << rnti  << "  rbgId: " << rbgId );
+      std::map <uint16_t, std::vector<bool> >::iterator it = m_dlRbgAvailableforUe.find (rnti);
+      if (it != m_dlRbgAvailableforUe.end ())
+        {
+          NS_LOG_INFO ("RNTI: " << rnti  << "  rbgId: " << rbgId << "  available: " << it->second.at (rbgId));
+          if (it->second.at (rbgId) == true)
+            {
+              return true;
+            }
+        }
+      return false;
+    }
+
+  return false;
+}
+
+std::vector <bool>
+LteFfrEnhancedAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  if (!m_enabledInUplink)
+    {
+      return m_ulRbgMap;
+    }
+
+  std::vector <bool> rbgMap = m_ulRbgMap;
+
+  std::map <uint16_t, std::vector<bool> >::iterator it;
+  for (it = m_ulRbAvailableforUe.begin (); it != m_ulRbAvailableforUe.end (); it++)
+    {
+      NS_LOG_INFO ("RNTI : " << it->first);
+      std::vector<bool> rbAvailableMap = it->second;
+      for (uint32_t i = 0; i < rbgMap.size (); i++)
+        {
+          NS_LOG_INFO ("\t rbgId: " << i << " available " << (int)rbAvailableMap.at (i));
+          if ( rbAvailableMap.at (i) == true)
+            {
+              rbgMap.at (i) = false;
+            }
+        }
+    }
+
+  return rbgMap;
+}
+
+bool
+LteFfrEnhancedAlgorithm::DoIsUlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  bool isReuse3Rbg = m_ulReuse3RbgMap[rbgId];
+  bool isReuse1Rbg = m_ulReuse1RbgMap[rbgId];
+  bool isPrimarySegmentRbg     = m_ulPrimarySegmentRbgMap[rbgId];
+  bool isSecondarySegmentRbg   = m_ulSecondarySegmentRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+    }
+
+  it = m_ues.find (rnti);
+
+  //if UE area is unknown, serve UE in edge area RBGs
+  if (it->second == AreaUnset)
+    {
+      return isReuse3Rbg;
+    }
+
+  bool isCenterUe = false;
+  bool isEdgeUe   = false;
+
+  if (it->second == CenterArea )
+    {
+      isCenterUe = true;
+    }
+  else if (it->second == EdgeArea)
+    {
+      isEdgeUe = true;
+    }
+
+  if (isPrimarySegmentRbg)
+    {
+      return (isReuse1Rbg && isCenterUe) || (isReuse3Rbg && isEdgeUe);
+    }
+  else if (isSecondarySegmentRbg && isCenterUe)
+    {
+      //check if RB can be used by UE based on CQI information
+      NS_LOG_INFO ("UL SECONDARY SEGMENT RNTI: " << rnti  << "  rbgId: " << rbgId );
+      std::map <uint16_t, std::vector<bool> >::iterator it = m_ulRbAvailableforUe.find (rnti);
+      if (it != m_ulRbAvailableforUe.end ())
+        {
+          NS_LOG_INFO ("RNTI: " << rnti  << "  rbgId: " << rbgId << "  available: " << it->second.at (rbgId));
+          if (it->second.at (rbgId) == true)
+            {
+              return true;
+            }
+        }
+      return false;
+    }
+
+  return false;
+}
+
+void
+LteFfrEnhancedAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_dlCqi.clear ();
+  for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
+    {
+      if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::A30 )
+        {
+          NS_LOG_INFO ("subband CQI reporting high layer configured");
+          // subband CQI reporting high layer configured
+          std::map <uint16_t,SbMeasResult_s>::iterator it;
+          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
+
+          std::map< uint16_t, uint8_t >::iterator ueIt = m_ues.find (rnti);
+          if (ueIt != m_ues.end ())
+            {
+              if (ueIt->second != CenterArea )
+                {
+                  continue;
+                }
+            }
+          else
+            {
+              continue;
+            }
+
+          it = m_dlCqi.find (rnti);
+          if (it == m_dlCqi.end ())
+            {
+              // create the new entry
+              m_dlCqi.insert ( std::pair<uint16_t, SbMeasResult_s > (rnti, params.m_cqiList.at (i).m_sbMeasResult) );
+            }
+          else
+            {
+              // update the CQI value and refresh correspondent timer
+              (*it).second = params.m_cqiList.at (i).m_sbMeasResult;
+            }
+        }
+      else
+        {
+          NS_LOG_ERROR (this << " CQI type unknown");
+        }
+    }
+
+  uint32_t rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgAvailableforUe.clear ();
+  std::map <uint16_t,SbMeasResult_s>::iterator it;
+  for (it = m_dlCqi.begin (); it != m_dlCqi.end (); it++)
+    {
+      uint16_t rnti = it->first;
+      std::vector<bool> rbgAvailableMap;
+
+      for (uint32_t i = 0; i < (*it).second.m_higherLayerSelected.size (); i++)
+        {
+          uint8_t rbgCqi = (*it).second.m_higherLayerSelected.at (i).m_sbCqi.at (0);
+
+          if (i > m_dlBandwidth / rbgSize)
+            {
+              continue;
+            }
+          NS_LOG_INFO (this << " RNTI " << rnti << " RBG  " << i << " DL-CQI: " << (int)rbgCqi);
+
+          bool rbgAvailable = (rbgCqi > m_dlCqiThreshold) ? true : false;
+
+          bool isSecondarySegmentRbg = false;
+          if (i < m_dlSecondarySegmentRbgMap.size ())
+            {
+              isSecondarySegmentRbg = m_dlSecondarySegmentRbgMap[i];
+            }
+
+          rbgAvailable = (isSecondarySegmentRbg == true) ? rbgAvailable : false;
+
+          rbgAvailableMap.push_back (rbgAvailable);
+        }
+
+      m_dlRbgAvailableforUe.insert ( std::pair<uint16_t, std::vector<bool> > (rnti, rbgAvailableMap ) );
+    }
+
+  m_ulRbAvailableforUe.clear ();
+  for (std::map<uint16_t, std::vector<bool> >::iterator it = m_dlRbgAvailableforUe.begin ();
+       it != m_dlRbgAvailableforUe.end (); it++)
+    {
+      uint16_t rnti = it->first;
+      std::vector<bool> dlRbgAvailableMap = it->second;
+      std::vector<bool> ulRbAvailableMap;
+      ulRbAvailableMap.resize (m_ulBandwidth, false);
+
+      for (uint32_t j = 0; j < dlRbgAvailableMap.size (); j++)
+        {
+          uint32_t index = rbgSize * j;
+          for (uint32_t i = 0; i < rbgSize; i++)
+            {
+              index = index + i;
+              ulRbAvailableMap[index] = dlRbgAvailableMap[j];
+            }
+        }
+
+      m_ulRbAvailableforUe.insert ( std::pair<uint16_t, std::vector<bool> > (rnti, ulRbAvailableMap ) );
+    }
+
+  return;
+}
+
+void
+LteFfrEnhancedAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  if (params.m_ulCqi.m_type == UlCqi_s::SRS)
+    {
+      // get the RNTI from vendor specific parameters
+      uint16_t rnti = 0;
+      for (uint32_t j = 0; j < m_ulBandwidth; j++)
+        {
+          double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (j));
+          double s = log2 ( 1 + (
+                              std::pow (10, sinr / 10 )  /
+                              ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
+          int cqi = GetCqiFromSpectralEfficiency (s);
+          NS_LOG_INFO (this << " RNTI " << rnti << " new SRS-CQI for RB  " << j << " value " << sinr << " UL-CQI: " << cqi);
+        }
+    }
+}
+
+void
+LteFfrEnhancedAlgorithm::DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap )
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+double
+LteFfrEnhancedAlgorithm::EstimateUlSinr (uint16_t rnti, uint16_t rb, std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  std::map <uint16_t, std::vector <double> >::iterator itCqi = ulCqiMap.find (rnti);
+  if (itCqi == ulCqiMap.end ())
+    {
+      // no cqi info about this UE
+      return (NO_SINR);
+    }
+  else
+    {
+      // take the average SINR value among the available
+      double sinrSum = 0;
+      int sinrNum = 0;
+      for (uint32_t i = 0; i < m_ulBandwidth; i++)
+        {
+          double sinr = (*itCqi).second.at (i);
+          if (sinr != NO_SINR)
+            {
+              sinrSum += sinr;
+              sinrNum++;
+            }
+        }
+      double estimatedSinr = (sinrNum > 0) ? (sinrSum / sinrNum) : DBL_MAX;
+      // store the value
+      (*itCqi).second.at (rb) = estimatedSinr;
+      return (estimatedSinr);
+    }
+}
+
+uint8_t
+LteFfrEnhancedAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return 1;     // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+    }
+
+  //TS36.213 Table 5.1.1.1-2
+  //   TPC   |   Accumulated Mode  |  Absolute Mode
+  //------------------------------------------------
+  //    0    |         -1          |      -4
+  //    1    |          0          |      -1
+  //    2    |          1          |       1
+  //    3    |          3          |       4
+  //------------------------------------------------
+  // here Absolute mode is used
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      return 1;
+    }
+
+  if (it->second == EdgeArea )
+    {
+      return m_edgeAreaTpc;
+    }
+  else
+    {
+      return m_centerAreaTpc;
+    }
+
+  return 1;
+}
+
+uint8_t
+LteFfrEnhancedAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  uint8_t minContinuousUlBandwidth = m_ulBandwidth;
+
+  if (!m_enabledInUplink)
+    {
+      return minContinuousUlBandwidth;
+    }
+
+  minContinuousUlBandwidth =
+    ((m_ulReuse3SubBandwidth > 0 ) && (m_ulReuse3SubBandwidth < minContinuousUlBandwidth)) ? m_ulReuse3SubBandwidth : minContinuousUlBandwidth;
+
+  minContinuousUlBandwidth =
+    ((m_ulReuse1SubBandwidth > 0 ) && (m_ulReuse1SubBandwidth < minContinuousUlBandwidth)) ? m_ulReuse1SubBandwidth : minContinuousUlBandwidth;
+
+  NS_LOG_INFO ("minContinuousUlBandwidth: " << (int)minContinuousUlBandwidth);
+
+  return minContinuousUlBandwidth;
+}
+
+
+void
+LteFfrEnhancedAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                         LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_INFO ("RNTI :" << rnti << " MeasId: " << (uint16_t) measResults.measId
+                        << " RSRP: " << (uint16_t)measResults.rsrpResult
+                        << " RSRQ: " << (uint16_t)measResults.rsrqResult);
+
+  if (measResults.measId != m_measId)
+    {
+      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
+    }
+  else
+    {
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+
+      it = m_ues.find (rnti);
+      if (measResults.rsrqResult < m_rsrqThreshold)
+        {
+          if (it->second != EdgeArea)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Edge sub-band");
+              it->second = EdgeArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_edgeAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else
+        {
+          if (it->second != CenterArea)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Center sub-band");
+              it->second = CenterArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_centerAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+    }
+}
+void
+LteFfrEnhancedAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-enhanced-algorithm.h ns-3.21/src/lte/model/lte-ffr-enhanced-algorithm.h
--- ns-3.20/src/lte/model/lte-ffr-enhanced-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-enhanced-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,159 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_ENHANCED_ALGORITHM_H
+#define LTE_FFR_ENHANCED_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+#include <map>
+
+// value for SINR outside the range defined by FF-API, used to indicate that there
+// is no CQI for this element
+#define NO_SINR -5000
+
+namespace ns3 {
+
+/**
+ * \brief Enhanced Fractional Frequency Reuse algorithm implementation
+ */
+class LteFfrEnhancedAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFfrEnhancedAlgorithm ();
+  virtual ~LteFfrEnhancedAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFfrEnhancedAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFfrEnhancedAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+  double EstimateUlSinr (uint16_t rnti, uint16_t rb, std::map <uint16_t, std::vector <double> > ulCqiMap);
+  int GetCqiFromSpectralEfficiency (double s);
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  uint8_t m_dlSubBandOffset;
+  uint8_t m_dlReuse3SubBandwidth;
+  uint8_t m_dlReuse1SubBandwidth;
+
+  uint8_t m_ulSubBandOffset;
+  uint8_t m_ulReuse3SubBandwidth;
+  uint8_t m_ulReuse1SubBandwidth;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  std::vector <bool> m_dlReuse3RbgMap;
+  std::vector <bool> m_dlReuse1RbgMap;
+  std::vector <bool> m_dlPrimarySegmentRbgMap;
+  std::vector <bool> m_dlSecondarySegmentRbgMap;
+
+  std::vector <bool> m_ulReuse3RbgMap;
+  std::vector <bool> m_ulReuse1RbgMap;
+  std::vector <bool> m_ulPrimarySegmentRbgMap;
+  std::vector <bool> m_ulSecondarySegmentRbgMap;
+
+  enum UePosition
+  {
+    AreaUnset,
+    CenterArea,
+    EdgeArea
+  };
+
+  std::map< uint16_t, uint8_t > m_ues;
+
+  uint8_t m_rsrqThreshold;
+
+  uint8_t m_centerAreaPowerOffset;
+  uint8_t m_edgeAreaPowerOffset;
+
+  uint8_t m_centerAreaTpc;
+  uint8_t m_edgeAreaTpc;
+
+
+  uint8_t m_dlCqiThreshold;
+  /*
+  * Map of UE's DL CQI A30 received
+  */
+  std::map <uint16_t,SbMeasResult_s> m_dlCqi;
+  std::map <uint16_t, std::vector<bool> > m_dlRbgAvailableforUe;
+
+  uint8_t m_ulCqiThreshold;
+  std::map <uint16_t, std::vector<int> > m_ulCqi;
+  std::map <uint16_t, std::vector<bool> > m_ulRbAvailableforUe;
+
+  // The expected measurement identity
+  uint8_t m_measId;
+
+}; // end of class LteFfrEnhancedAlgorithm
+
+} // end of namespace ns3
+
+#endif /* LTE_FFR_ENHANCED_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-ffr-rrc-sap.cc ns-3.21/src/lte/model/lte-ffr-rrc-sap.cc
--- ns-3.20/src/lte/model/lte-ffr-rrc-sap.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-rrc-sap.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,39 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+
+#include "lte-ffr-rrc-sap.h"
+
+
+namespace ns3 {
+
+
+LteFfrRrcSapProvider::~LteFfrRrcSapProvider ()
+{
+}
+
+
+LteFfrRrcSapUser::~LteFfrRrcSapUser ()
+{
+}
+
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-rrc-sap.h ns-3.21/src/lte/model/lte-ffr-rrc-sap.h
--- ns-3.20/src/lte/model/lte-ffr-rrc-sap.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-rrc-sap.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,246 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_RRC_SAP_H
+#define LTE_FFR_RRC_SAP_H
+
+#include <ns3/lte-rrc-sap.h>
+#include <ns3/epc-x2-sap.h>
+
+namespace ns3 {
+
+/**
+ * \brief Service Access Point (SAP) offered by the Frequency Reuse algorithm
+ *        instance to the eNodeB RRC instance.
+ *
+ * This is the *LteFfrRrcSapProvider*, i.e., the part of the SAP
+ * that contains the Frequency Reuse algorithm methods called by the eNodeB RRC
+ * instance.
+ */
+class LteFfrRrcSapProvider
+{
+public:
+  virtual ~LteFfrRrcSapProvider ();
+
+  /**
+   * \brief SetCellId
+   * \param cellId the Cell Identifier
+   */
+  virtual void SetCellId (uint16_t cellId ) = 0;
+
+  /**
+   * \brief Configure DL and UL bandwidth in Frequency Reuse Algorithm
+   *        function is called during Cell configuration
+   * \param ulBandwidth UL bandwidth in number of RB
+   * \param dlBandwidth DL bandwidth in number of RB
+   */
+  virtual void SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth) = 0;
+
+  /**
+   * \brief Send a UE measurement report to Frequency Reuse algorithm.
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \param measResults a single report of one measurement identity
+   *
+   * The received measurement report is a result of the UE measurement
+   * configuration previously configured by calling
+   * LteFfrRrcSapUser::AddUeMeasReportConfigForFfr. The report
+   * may be stored and utilised for the purpose of making decisions within which
+   * sub-band UE should be served.
+   */
+  virtual void ReportUeMeas (uint16_t rnti,
+                             LteRrcSap::MeasResults measResults) = 0;
+
+  /**
+   * \brief RecvLoadInformation
+   */
+  virtual void  RecvLoadInformation (EpcX2Sap::LoadInformationParams params) = 0;
+
+}; // end of class LteFfrRrcSapProvider
+
+
+/**
+ * \brief Service Access Point (SAP) offered by the eNodeB RRC instance to the
+ *        Frequency Reuse algorithm instance.
+ *
+ * This is the *LteFfrRrcSapUser*, i.e., the part of the SAP that
+ * contains the eNodeB RRC methods called by the Frequency Reuse algorithm instance.
+ */
+class LteFfrRrcSapUser
+{
+public:
+  virtual ~LteFfrRrcSapUser ();
+
+  /**
+   * \brief Request a certain reporting configuration to be fulfilled by the UEs
+   *        attached to the eNodeB entity.
+   * \param reportConfig the UE measurement reporting configuration
+   * \return the measurement identity associated with this newly added
+   *         reporting configuration
+   *
+   * The eNodeB RRC entity is expected to configure the same reporting
+   * configuration in each of the attached UEs. When later in the simulation a
+   * UE measurement report is received from a UE as a result of this
+   * configuration, the eNodeB RRC entity shall forward this report to the
+   * Frequency Reuse algorithm through the LteFfrRrcSapProvider::ReportUeMeas
+   * SAP function.
+   *
+   * \note This function is only valid before the simulation begins.
+   */
+  virtual uint8_t AddUeMeasReportConfigForFfr (LteRrcSap::ReportConfigEutra reportConfig) = 0;
+
+  /**
+   * \brief Instruct the eNodeB RRC entity to perform RrcConnectionReconfiguration
+   *        to inform UE about new PdschConfigDedicated (i.e. P_a value).
+   *        Also Downlink Power Allocation is done based on this value.
+   * \param rnti Radio Network Temporary Identity, an integer identifying the
+   *             UE which shall perform the handover
+   * \param pdschConfigDedicated new PdschConfigDedicated to be configured for UE
+   *
+   * This function is used by the Frequency Reuse algorithm entity when it decides
+   * that PDSCH for this UE should be allocated with different transmit power.
+   *
+   * The process to produce the decision is up to the implementation of Frequency Reuse
+   * algorithm. It is typically based on the reported UE measurements, which are
+   * received through the LteFfrRrcSapProvider::ReportUeMeas function.
+   */
+  virtual void SetPdschConfigDedicated (uint16_t rnti, LteRrcSap::PdschConfigDedicated pdschConfigDedicated) = 0;
+
+  /**
+   * \brief SendLoadInformation
+   */
+  virtual void  SendLoadInformation (EpcX2Sap::LoadInformationParams params) = 0;
+
+}; // end of class LteFfrRrcSapUser
+
+
+/**
+ * \brief Template for the implementation of the LteFfrRrcSapProvider
+ *        as a member of an owner class of type C to which all methods are
+ *        forwarded.
+ */
+template <class C>
+class MemberLteFfrRrcSapProvider : public LteFfrRrcSapProvider
+{
+public:
+  MemberLteFfrRrcSapProvider (C* owner);
+
+  // inherited from LteHandoverManagemenrSapProvider
+  virtual void SetCellId (uint16_t cellId );
+  virtual void SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth);
+  virtual void ReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void RecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  MemberLteFfrRrcSapProvider ();
+  C* m_owner;
+
+}; // end of class MemberLteFfrRrcSapProvider
+
+
+template <class C>
+MemberLteFfrRrcSapProvider<C>::MemberLteFfrRrcSapProvider (C* owner)
+  : m_owner (owner)
+{
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapProvider<C>::SetCellId (uint16_t cellId )
+{
+  m_owner->DoSetCellId (cellId);
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapProvider<C>::SetBandwidth (uint8_t ulBandwidth, uint8_t dlBandwidth)
+{
+  m_owner->DoSetBandwidth (ulBandwidth, dlBandwidth);
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapProvider<C>::ReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults)
+{
+  m_owner->DoReportUeMeas (rnti, measResults);
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapProvider<C>::RecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  m_owner->DoRecvLoadInformation (params);
+}
+
+/**
+ * \brief Template for the implementation of the LteFfrRrcSapUser
+ *        as a member of an owner class of type C to which all methods are
+ *        forwarded.
+ */
+template <class C>
+class MemberLteFfrRrcSapUser : public LteFfrRrcSapUser
+{
+public:
+  MemberLteFfrRrcSapUser (C* owner);
+
+  // inherited from LteFfrRrcSapUser
+  virtual uint8_t AddUeMeasReportConfigForFfr (LteRrcSap::ReportConfigEutra reportConfig);
+
+  virtual void SetPdschConfigDedicated (uint16_t rnti, LteRrcSap::PdschConfigDedicated pdschConfigDedicated);
+
+  virtual void  SendLoadInformation (EpcX2Sap::LoadInformationParams params);
+private:
+  MemberLteFfrRrcSapUser ();
+  C* m_owner;
+
+}; // end of class LteFfrRrcSapUser
+
+template <class C>
+MemberLteFfrRrcSapUser<C>::MemberLteFfrRrcSapUser (C* owner)
+  : m_owner (owner)
+{
+}
+
+template <class C>
+uint8_t
+MemberLteFfrRrcSapUser<C>::AddUeMeasReportConfigForFfr (LteRrcSap::ReportConfigEutra reportConfig)
+{
+  return m_owner->DoAddUeMeasReportConfigForFfr (reportConfig);
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapUser<C>::SetPdschConfigDedicated (uint16_t rnti, LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
+{
+  m_owner->DoSetPdschConfigDedicated (rnti, pdschConfigDedicated);
+}
+
+template <class C>
+void
+MemberLteFfrRrcSapUser<C>::SendLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  m_owner->DoSendLoadInformation (params);
+}
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_RRC_SAP_H */
diff -Naur ns-3.20/src/lte/model/lte-ffr-sap.cc ns-3.21/src/lte/model/lte-ffr-sap.cc
--- ns-3.20/src/lte/model/lte-ffr-sap.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-sap.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,38 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-sap.h"
+
+
+namespace ns3 {
+
+
+LteFfrSapProvider::~LteFfrSapProvider ()
+{
+}
+
+
+LteFfrSapUser::~LteFfrSapUser ()
+{
+}
+
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-sap.h ns-3.21/src/lte/model/lte-ffr-sap.h
--- ns-3.20/src/lte/model/lte-ffr-sap.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-sap.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,265 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_SAP_H
+#define LTE_FFR_SAP_H
+
+#include <ns3/lte-rrc-sap.h>
+#include <ns3/ff-mac-sched-sap.h>
+#include <map>
+
+namespace ns3 {
+
+/**
+ * \brief Service Access Point (SAP) offered by the Frequency Reuse algorithm
+ *        instance to the MAC Scheduler instance.
+ *
+ * This is the *LteFfrSapProvider*, i.e., the part of the SAP
+ * that contains the Frequency Reuse algorithm methods called by the MAC Scheduler
+ * instance.
+ */
+class LteFfrSapProvider
+{
+public:
+  virtual ~LteFfrSapProvider ();
+
+  /**
+    * \brief Get vector of available RBG in DL for this Cell
+    * \return vector of size (m_dlBandwidth/RbgSize); false indicates
+    *                   that RBG is free to use, true otherwise
+    *
+    * This function is called by MAC Scheduler in the beginning of DL
+    * scheduling process. Frequency Reuse Algorithm based on its policy
+    * generates vector of RBG which can be used and which can not be used
+    * by Scheduler to schedule transmission.
+    */
+  virtual std::vector <bool> GetAvailableDlRbg () = 0;
+
+  /**
+   * \brief Check if UE can be served on i-th RB in DL
+   * \param i RBG ID
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \return true if UE can be served on i-th RB, false otherwise
+   *
+   * This function is called by MAC Scheduler during DL scheduling process
+   * to check if UE is allowed to be served with i-th RBG. Frequency Reuse
+   * Algorithm based on its policy decides if RBG is allowed to UE.
+   * If yes, Scheduler will try to allocate this RBG for UE, if not this UE
+   * will not be served with this RBG.
+   */
+  virtual bool IsDlRbgAvailableForUe (int i, uint16_t rnti) = 0;
+
+  /**
+   * \brief Get vector of available RB in UL for this Cell
+   * \return vector of size m_ulBandwidth; false indicates
+   *                    that RB is free to use, true otherwise
+   *
+   * This function is called by MAC Scheduler in the beginning of UL
+   * scheduling process. Frequency Reuse Algorithm based on its policy
+   * generates vector of RB which can be used and which can not be used
+   * by Scheduler to schedule transmission.
+   */
+  virtual std::vector <bool> GetAvailableUlRbg () = 0;
+
+  /**
+   * \brief Check if UE can be served on i-th RB in UL
+   * \param i RB ID
+   * \param rnti Radio Network Temporary Identity, an integer identifying the UE
+   *             where the report originates from
+   * \return true if UE can be served on i-th RB, false otherwise
+   *
+   * This function is called by MAC Scheduler during UL scheduling process
+   * to check if UE is allowed to be served with i-th RB. Frequency Reuse
+   * Algorithm based on its policy decides if RB is allowed to UE.
+   * If yes, Scheduler will try to allocate this RB for UE, if not this UE
+   * will not be served with this RB.
+   */
+  virtual bool IsUlRbgAvailableForUe (int i, uint16_t rnti) = 0;
+
+  /**
+   * \brief ReportDlCqiInfo
+   */
+  virtual void ReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params) = 0;
+
+  /**
+   * \brief ReportUlCqiInfo
+   */
+  virtual void ReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params) = 0;
+
+  /**
+   * \brief ReportUlCqiInfo
+   */
+  virtual void ReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap ) = 0;
+
+  /**
+   * \brief GetTpc
+   */
+  virtual uint8_t GetTpc (uint16_t rnti) = 0;
+
+  /**
+   * \brief GetMinContinuousUlBandwidth
+   */
+  virtual uint8_t GetMinContinuousUlBandwidth () = 0;
+}; // end of class LteFfrSapProvider
+
+
+/**
+ * \brief Service Access Point (SAP) offered by the eNodeB RRC instance to the
+ *        Frequency Reuse algorithm instance.
+ *
+ * This is the *LteFfrSapUser*, i.e., the part of the SAP that
+ * contains the MAC Scheduler methods called by the Frequency Reuse algorithm instance.
+ */
+class LteFfrSapUser
+{
+public:
+  virtual ~LteFfrSapUser ();
+
+}; // end of class LteFfrSapUser
+
+
+/**
+ * \brief Template for the implementation of the LteFfrSapProvider
+ *        as a member of an owner class of type C to which all methods are
+ *        forwarded.
+ */
+template <class C>
+class MemberLteFfrSapProvider : public LteFfrSapProvider
+{
+public:
+  MemberLteFfrSapProvider (C* owner);
+
+  // inherited from LteFfrSapProvider
+  virtual std::vector <bool> GetAvailableDlRbg ();
+  virtual bool IsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> GetAvailableUlRbg ();
+  virtual bool IsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void ReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void ReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void ReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t GetTpc (uint16_t rnti);
+  virtual uint8_t GetMinContinuousUlBandwidth ();
+private:
+  MemberLteFfrSapProvider ();
+  C* m_owner;
+
+}; // end of class MemberLteFfrSapProvider
+
+
+template <class C>
+MemberLteFfrSapProvider<C>::MemberLteFfrSapProvider (C* owner)
+  : m_owner (owner)
+{
+}
+
+
+template <class C>
+std::vector <bool>
+MemberLteFfrSapProvider<C>::GetAvailableDlRbg ()
+{
+  return m_owner->DoGetAvailableDlRbg ();
+}
+
+template <class C>
+bool
+MemberLteFfrSapProvider<C>::IsDlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  return m_owner->DoIsDlRbgAvailableForUe (i,rnti);
+}
+
+template <class C>
+std::vector <bool>
+MemberLteFfrSapProvider<C>::GetAvailableUlRbg ()
+{
+  return m_owner->DoGetAvailableUlRbg ();
+}
+
+template <class C>
+bool
+MemberLteFfrSapProvider<C>::IsUlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  return m_owner->DoIsUlRbgAvailableForUe (i,rnti);
+}
+
+template <class C>
+void
+MemberLteFfrSapProvider<C>::ReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  m_owner->DoReportDlCqiInfo (params);
+}
+
+template <class C>
+void
+MemberLteFfrSapProvider<C>::ReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  m_owner->DoReportUlCqiInfo (params);
+}
+
+template <class C>
+void
+MemberLteFfrSapProvider<C>::ReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap )
+{
+  m_owner->DoReportUlCqiInfo (ulCqiMap);
+}
+
+template <class C>
+uint8_t
+MemberLteFfrSapProvider<C>::GetTpc ( uint16_t rnti )
+{
+  return m_owner->DoGetTpc (rnti);
+}
+
+template <class C>
+uint8_t
+MemberLteFfrSapProvider<C>::GetMinContinuousUlBandwidth ()
+{
+  return m_owner->DoGetMinContinuousUlBandwidth ();
+}
+
+/**
+ * \brief Template for the implementation of the LteFfrSapUser
+ *        as a member of an owner class of type C to which all methods are
+ *        forwarded.
+ */
+template <class C>
+class MemberLteFfrSapUser : public LteFfrSapUser
+{
+public:
+  MemberLteFfrSapUser (C* owner);
+
+  // inherited from LteFfrSapUser
+private:
+  MemberLteFfrSapUser ();
+  C* m_owner;
+
+}; // end of class LteFfrSapUser
+
+template <class C>
+MemberLteFfrSapUser<C>::MemberLteFfrSapUser (C* owner)
+  : m_owner (owner)
+{
+}
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_SAP_H */
diff -Naur ns-3.20/src/lte/model/lte-ffr-soft-algorithm.cc ns-3.21/src/lte/model/lte-ffr-soft-algorithm.cc
--- ns-3.20/src/lte/model/lte-ffr-soft-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-soft-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,693 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-soft-algorithm.h"
+#include <ns3/log.h>
+#include "ns3/boolean.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteFfrSoftAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFfrSoftAlgorithm);
+
+static const struct FfrSoftDownlinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t dlBandwidth;
+  uint8_t dlCommonSubBandwidth;
+  uint8_t dlEgdeSubBandOffset;
+  uint8_t dlEdgeSubBandwidth;
+} g_ffrSoftDownlinkDefaultConfiguration[] = {
+  { 1, 15, 2, 0, 4},
+  { 2, 15, 2, 4, 4},
+  { 3, 15, 2, 8, 4},
+  { 1, 25, 6, 0, 6},
+  { 2, 25, 6, 6, 6},
+  { 3, 25, 6, 12, 6},
+  { 1, 50, 21, 0, 9},
+  { 2, 50, 21, 9, 9},
+  { 3, 50, 21, 18, 11},
+  { 1, 75, 36, 0, 12},
+  { 2, 75, 36, 12, 12},
+  { 3, 75, 36, 24, 15},
+  { 1, 100, 28, 0, 24},
+  { 2, 100, 28, 24, 24},
+  { 3, 100, 28, 48, 24}
+};
+
+static const struct FfrSoftUplinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t ulBandwidth;
+  uint8_t ulCommonSubBandwidth;
+  uint8_t ulEgdeSubBandOffset;
+  uint8_t ulEdgeSubBandwidth;
+} g_ffrSoftUplinkDefaultConfiguration[] = {
+  { 1, 15, 3, 0, 4},
+  { 2, 15, 3, 4, 4},
+  { 3, 15, 3, 8, 4},
+  { 1, 25, 6, 0, 6},
+  { 2, 25, 6, 6, 6},
+  { 3, 25, 6, 12, 6},
+  { 1, 50, 21, 0, 9},
+  { 2, 50, 21, 9, 9},
+  { 3, 50, 21, 18, 11},
+  { 1, 75, 36, 0, 12},
+  { 2, 75, 36, 12, 12},
+  { 3, 75, 36, 24, 15},
+  { 1, 100, 28, 0, 24},
+  { 2, 100, 28, 24, 24},
+  { 3, 100, 28, 48, 24}
+};
+
+const uint16_t NUM_DOWNLINK_CONFS (sizeof (g_ffrSoftDownlinkDefaultConfiguration) / sizeof (FfrSoftDownlinkDefaultConfiguration));
+const uint16_t NUM_UPLINK_CONFS (sizeof (g_ffrSoftUplinkDefaultConfiguration) / sizeof (FfrSoftUplinkDefaultConfiguration));
+
+
+LteFfrSoftAlgorithm::LteFfrSoftAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_dlEgdeSubBandOffset (0),
+    m_dlEdgeSubBandwidth (0),
+    m_ulEgdeSubBandOffset (0),
+    m_ulEdgeSubBandwidth (0),
+    m_measId (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFfrSoftAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFfrSoftAlgorithm> (this);
+}
+
+
+LteFfrSoftAlgorithm::~LteFfrSoftAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFfrSoftAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFfrSoftAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFfrSoftAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFfrSoftAlgorithm> ()
+    .AddAttribute ("UlCommonSubBandwidth",
+                   "Uplink Medium (Common) SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (6),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_ulCommonSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlEdgeSubBandOffset",
+                   "Uplink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_ulEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlEdgeSubBandwidth",
+                   "Uplink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (6),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_ulEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlCommonSubBandwidth",
+                   "Downlink Medium (Common) SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (6),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_dlCommonSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandOffset",
+                   "Downlink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_dlEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandwidth",
+                   "Downlink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_dlEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterRsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Medium sub-band",
+                   UintegerValue (30),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_centerSubBandThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeRsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_egdeSubBandThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaPowerOffset",
+                   "PdschConfigDedicated::Pa value for Center Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_centerAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("MediumAreaPowerOffset",
+                   "PdschConfigDedicated::Pa value for Medium Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_mediumAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaPowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_edgeAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in center area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_centerAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("MediumAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in medium area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_mediumAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in edge area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFfrSoftAlgorithm::m_edgeAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+void
+LteFfrSoftAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFfrSoftAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFfrSoftAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFfrSoftAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFfrSoftAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_ASSERT_MSG (m_dlBandwidth > 14,"DlBandwidth must be at least 15 to use FFR algorithms");
+  NS_ASSERT_MSG (m_ulBandwidth > 14,"UlBandwidth must be at least 15 to use FFR algorithms");
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+  NS_LOG_LOGIC (this << " requesting Event A1 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_measId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+}
+
+void
+LteFfrSoftAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFfrSoftAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_DOWNLINK_CONFS; ++i)
+    {
+      if ((g_ffrSoftDownlinkDefaultConfiguration[i].cellId == cellId)
+          && g_ffrSoftDownlinkDefaultConfiguration[i].dlBandwidth == m_dlBandwidth)
+        {
+          m_dlCommonSubBandwidth = g_ffrSoftDownlinkDefaultConfiguration[i].dlCommonSubBandwidth;
+          m_dlEgdeSubBandOffset = g_ffrSoftDownlinkDefaultConfiguration[i].dlEgdeSubBandOffset;
+          m_dlEdgeSubBandwidth = g_ffrSoftDownlinkDefaultConfiguration[i].dlEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFfrSoftAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_UPLINK_CONFS; ++i)
+    {
+      if ((g_ffrSoftUplinkDefaultConfiguration[i].cellId == cellId)
+          && g_ffrSoftUplinkDefaultConfiguration[i].ulBandwidth == m_ulBandwidth)
+        {
+          m_ulCommonSubBandwidth = g_ffrSoftUplinkDefaultConfiguration[i].ulCommonSubBandwidth;
+          m_ulEgdeSubBandOffset = g_ffrSoftUplinkDefaultConfiguration[i].ulEgdeSubBandOffset;
+          m_ulEdgeSubBandwidth = g_ffrSoftUplinkDefaultConfiguration[i].ulEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFfrSoftAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  m_dlRbgMap.clear ();
+  m_dlCenterRbgMap.clear ();
+  m_dlMediumRbgMap.clear ();
+  m_dlEdgeRbgMap.clear ();
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlCenterRbgMap.resize (m_dlBandwidth / rbgSize, true);
+  m_dlMediumRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlEdgeRbgMap.resize (m_dlBandwidth / rbgSize, false);
+
+  NS_ASSERT_MSG (m_dlCommonSubBandwidth <= m_dlBandwidth,"DlCommonSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlCommonSubBandwidth + m_dlEgdeSubBandOffset <= m_dlBandwidth,
+                 "DlCommonSubBandwidth + DlEgdeSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlEgdeSubBandOffset <= m_dlBandwidth,"DlEgdeSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlEdgeSubBandwidth <= m_dlBandwidth,"DlEdgeSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG ((m_dlCommonSubBandwidth + m_dlEgdeSubBandOffset + m_dlEdgeSubBandwidth) <= m_dlBandwidth,
+                 "(DlCommonSubBandwidth + DlEgdeSubBandOffset+DlEdgeSubBandwidth) higher than DlBandwidth");
+
+  for (uint8_t i = 0;
+       i < m_dlCommonSubBandwidth / rbgSize; i++)
+    {
+      m_dlMediumRbgMap[i] = true;
+      m_dlCenterRbgMap[i] = false;
+    }
+
+  for (uint8_t i = (m_dlCommonSubBandwidth + m_dlEgdeSubBandOffset) / rbgSize;
+       i < (m_dlCommonSubBandwidth + m_dlEgdeSubBandOffset + m_dlEdgeSubBandwidth) / rbgSize; i++)
+    {
+      m_dlEdgeRbgMap[i] = true;
+      m_dlCenterRbgMap[i] = false;
+    }
+}
+
+
+void
+LteFfrSoftAlgorithm::InitializeUplinkRbgMaps ()
+{
+  m_ulRbgMap.clear ();
+  m_ulCenterRbgMap.clear ();
+  m_ulMediumRbgMap.clear ();
+  m_ulEdgeRbgMap.clear ();
+
+  m_ulRbgMap.resize (m_ulBandwidth, false);
+  m_ulCenterRbgMap.resize (m_ulBandwidth, true);
+  m_ulMediumRbgMap.resize (m_ulBandwidth, false);
+  m_ulEdgeRbgMap.resize (m_ulBandwidth, false);
+
+  NS_ASSERT_MSG (m_ulCommonSubBandwidth <= m_ulBandwidth,"UlCommonSubBandwidth higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset <= m_ulBandwidth,
+                 "UlCommonSubBandwidth + UlEgdeSubBandOffset higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulEgdeSubBandOffset <= m_ulBandwidth,"UlEgdeSubBandOffset higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulEdgeSubBandwidth <= m_ulBandwidth,"UlEdgeSubBandwidth higher than UlBandwidth");
+  NS_ASSERT_MSG ((m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset + m_ulEdgeSubBandwidth) <= m_ulBandwidth,
+                 "(UlCommonSubBandwidth + UlEgdeSubBandOffset+UlEdgeSubBandwidth) higher than UlBandwidth");
+
+  for (uint8_t i = 0;
+       i < m_ulCommonSubBandwidth; i++)
+    {
+      m_ulMediumRbgMap[i] = true;
+      m_ulCenterRbgMap[i] = false;
+    }
+
+  for (uint8_t i = (m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset);
+       i < (m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset + m_ulEdgeSubBandwidth); i++)
+    {
+      m_ulEdgeRbgMap[i] = true;
+      m_ulCenterRbgMap[i] = false;
+    }
+}
+
+std::vector <bool>
+LteFfrSoftAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFfrSoftAlgorithm::DoIsDlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool isCenterRbg = m_dlCenterRbgMap[rbgId];
+  bool isMediumRbg = m_dlMediumRbgMap[rbgId];
+  bool isEdgeRbg   = m_dlEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+    }
+
+  it = m_ues.find (rnti);
+
+  //if UE area is unknown, serve UE in medium (common) RBGs
+  if (it->second == AreaUnset)
+    {
+      return isMediumRbg;
+    }
+
+
+  bool isCenterUe = false;
+  bool isMediumUe = false;
+  bool isEdgeUe   = false;
+
+  if (it->second == CenterArea )
+    {
+      isCenterUe = true;
+    }
+  else if (it->second == MediumArea)
+    {
+      isMediumUe = true;
+    }
+  else if (it->second == EdgeArea)
+    {
+      isEdgeUe = true;
+    }
+
+  return (isCenterRbg && isCenterUe) || (isMediumRbg && isMediumUe) || (isEdgeRbg && isEdgeUe);
+}
+
+std::vector <bool>
+LteFfrSoftAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFfrSoftAlgorithm::DoIsUlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  bool isCenterRbg = m_ulCenterRbgMap[rbgId];
+  bool isMediumRbg = m_ulMediumRbgMap[rbgId];
+  bool isEdgeRbg   = m_ulEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+    }
+
+  it = m_ues.find (rnti);
+
+  //if UE area is unknown, serve UE in medium (common) RBGs
+  if (it->second == AreaUnset)
+    {
+      return isMediumRbg;
+    }
+
+
+  bool isCenterUe = false;
+  bool isMediumUe = false;
+  bool isEdgeUe   = false;
+
+  if (it->second == CenterArea )
+    {
+      isCenterUe = true;
+    }
+  else if (it->second == MediumArea)
+    {
+      isMediumUe = true;
+    }
+  else if (it->second == EdgeArea)
+    {
+      isEdgeUe = true;
+    }
+
+  return (isCenterRbg && isCenterUe) || (isMediumRbg && isMediumUe) || (isEdgeRbg && isEdgeUe);
+}
+
+void
+LteFfrSoftAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFfrSoftAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFfrSoftAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFfrSoftAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return 1;     // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+    }
+
+  //TS36.213 Table 5.1.1.1-2
+  //   TPC   |   Accumulated Mode  |  Absolute Mode
+  //------------------------------------------------
+  //    0    |         -1          |      -4
+  //    1    |          0          |      -1
+  //    2    |          1          |       1
+  //    3    |          3          |       4
+  //------------------------------------------------
+  // here Absolute mode is used
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      return 1;
+    }
+
+  if (it->second == CenterArea )
+    {
+      return m_centerAreaTpc;
+    }
+  else if (it->second == MediumArea)
+    {
+      return m_mediumAreaTpc;
+    }
+  else if (it->second == EdgeArea)
+    {
+      return m_edgeAreaTpc;
+    }
+
+  return 1;
+}
+
+uint8_t
+LteFfrSoftAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return m_ulBandwidth;
+    }
+
+  uint8_t centerSubBandwidth = 0;
+  uint8_t mediumSubBandwidth = 0;
+  uint8_t edgeSubBandwidth = 0;
+
+  for (uint8_t i = 0; i < m_ulCenterRbgMap.size (); i++)
+    {
+      if ( m_ulCenterRbgMap[i] == true)
+        {
+          centerSubBandwidth++;
+        }
+    }
+
+  for (uint8_t i = 0; i < m_ulMediumRbgMap.size (); i++)
+    {
+      if ( m_ulMediumRbgMap[i] == true)
+        {
+          mediumSubBandwidth++;
+        }
+    }
+
+  for (uint8_t i = 0; i < m_ulEdgeRbgMap.size (); i++)
+    {
+      if ( m_ulEdgeRbgMap[i] == true)
+        {
+          edgeSubBandwidth++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ulBandwidth;
+
+  minContinuousUlBandwidth =
+    ((centerSubBandwidth > 0 ) && (centerSubBandwidth < minContinuousUlBandwidth)) ? centerSubBandwidth : minContinuousUlBandwidth;
+
+  minContinuousUlBandwidth =
+    ((mediumSubBandwidth > 0 ) && (mediumSubBandwidth < minContinuousUlBandwidth)) ? mediumSubBandwidth : minContinuousUlBandwidth;
+
+  minContinuousUlBandwidth =
+    ((edgeSubBandwidth > 0 ) && (edgeSubBandwidth < minContinuousUlBandwidth)) ? edgeSubBandwidth : minContinuousUlBandwidth;
+
+  NS_LOG_INFO ("minContinuousUlBandwidth: " << (int)minContinuousUlBandwidth);
+
+  return minContinuousUlBandwidth;
+}
+
+void
+LteFfrSoftAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                     LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_INFO ("RNTI :" << rnti << " MeasId: " << (uint16_t) measResults.measId
+                        << " RSRP: " << (uint16_t)measResults.rsrpResult
+                        << " RSRQ: " << (uint16_t)measResults.rsrqResult);
+
+  NS_ASSERT_MSG (m_centerSubBandThreshold >= m_egdeSubBandThreshold,
+                 "CenterSubBandThreshold must be higher than EgdeSubBandThreshold");
+
+  if (measResults.measId != m_measId)
+    {
+      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
+    }
+  else
+    {
+
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+
+      it = m_ues.find (rnti);
+      if (measResults.rsrqResult >= m_centerSubBandThreshold)
+        {
+          if (it->second != CenterArea)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Center sub-band");
+              it->second = CenterArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_centerAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else if (measResults.rsrqResult < m_egdeSubBandThreshold)
+        {
+          if (it->second != EdgeArea )
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Edge sub-band");
+              it->second = EdgeArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_edgeAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else
+        {
+          if (it->second != MediumArea)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Medium sub-band");
+              it->second = MediumArea;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_mediumAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+    }
+}
+
+void
+LteFfrSoftAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ffr-soft-algorithm.h ns-3.21/src/lte/model/lte-ffr-soft-algorithm.h
--- ns-3.20/src/lte/model/lte-ffr-soft-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ffr-soft-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,148 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_SOFT_ALGORITHM_H
+#define LTE_FFR_SOFT_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+#include <map>
+
+namespace ns3 {
+
+
+/**
+ * \brief Soft Fractional Frequency Reuse algorithm implementation
+ */
+class LteFfrSoftAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFfrSoftAlgorithm ();
+
+  virtual ~LteFfrSoftAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFfrSoftAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFfrSoftAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  uint8_t m_dlCommonSubBandwidth;
+  uint8_t m_dlEgdeSubBandOffset;
+  uint8_t m_dlEdgeSubBandwidth;
+
+  uint8_t m_ulCommonSubBandwidth;
+  uint8_t m_ulEgdeSubBandOffset;
+  uint8_t m_ulEdgeSubBandwidth;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  std::vector <bool> m_dlCenterRbgMap;
+  std::vector <bool> m_ulCenterRbgMap;
+
+  std::vector <bool> m_dlMediumRbgMap;
+  std::vector <bool> m_ulMediumRbgMap;
+
+  std::vector <bool> m_dlEdgeRbgMap;
+  std::vector <bool> m_ulEdgeRbgMap;
+
+  enum UePosition
+  {
+    AreaUnset,
+    CenterArea,
+    MediumArea,
+    EdgeArea
+  };
+
+  std::map< uint16_t, uint8_t > m_ues;
+
+  uint8_t m_centerSubBandThreshold;
+  uint8_t m_egdeSubBandThreshold;
+
+  uint8_t m_centerAreaPowerOffset;
+  uint8_t m_mediumAreaPowerOffset;
+  uint8_t m_edgeAreaPowerOffset;
+
+  uint8_t m_centerAreaTpc;
+  uint8_t m_mediumAreaTpc;
+  uint8_t m_edgeAreaTpc;
+
+  // The expected measurement identity
+  uint8_t m_measId;
+
+}; // end of class LteFfrSoftAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_SOFT_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-fr-hard-algorithm.cc ns-3.21/src/lte/model/lte-fr-hard-algorithm.cc
--- ns-3.20/src/lte/model/lte-fr-hard-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-hard-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,385 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-fr-hard-algorithm.h"
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteFrHardAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFrHardAlgorithm);
+
+static const struct FrHardDownlinkDefaultConfiguration
+{
+  uint8_t m_cellId;
+  uint8_t m_dlBandwidth;
+  uint8_t m_dlOffset;
+  uint8_t m_dlSubBand;
+} g_frHardDownlinkDefaultConfiguration[] = {
+  { 1, 15, 0, 4},
+  { 2, 15, 4, 4},
+  { 3, 15, 8, 6},
+  { 1, 25, 0, 8},
+  { 2, 25, 8, 8},
+  { 3, 25, 16, 9},
+  { 1, 50, 0, 16},
+  { 2, 50, 16, 16},
+  { 3, 50, 32, 18},
+  { 1, 75, 0, 24},
+  { 2, 75, 24, 24},
+  { 3, 75, 48, 27},
+  { 1, 100, 0, 32},
+  { 2, 100, 32, 32},
+  { 3, 100, 64, 36}
+};
+
+static const struct FrHardUplinkDefaultConfiguration
+{
+  uint8_t m_cellId;
+  uint8_t m_ulBandwidth;
+  uint8_t m_ulOffset;
+  uint8_t m_ulSubBand;
+} g_frHardUplinkDefaultConfiguration[] = {
+  { 1, 15, 0, 5},
+  { 2, 15, 5, 5},
+  { 3, 15, 10, 5},
+  { 1, 25, 0, 8},
+  { 2, 25, 8, 8},
+  { 3, 25, 16, 9},
+  { 1, 50, 0, 16},
+  { 2, 50, 16, 16},
+  { 3, 50, 32, 18},
+  { 1, 75, 0, 24},
+  { 2, 75, 24, 24},
+  { 3, 75, 48, 27},
+  { 1, 100, 0, 32},
+  { 2, 100, 32, 32},
+  { 3, 100, 64, 36}
+};
+
+const uint16_t NUM_DOWNLINK_CONFS (sizeof (g_frHardDownlinkDefaultConfiguration) / sizeof (FrHardDownlinkDefaultConfiguration));
+const uint16_t NUM_UPLINK_CONFS (sizeof (g_frHardUplinkDefaultConfiguration) / sizeof (FrHardUplinkDefaultConfiguration));
+
+LteFrHardAlgorithm::LteFrHardAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_dlOffset (0),
+    m_dlSubBand (0),
+    m_ulOffset (0),
+    m_ulSubBand (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFrHardAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFrHardAlgorithm> (this);
+}
+
+
+LteFrHardAlgorithm::~LteFrHardAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFrHardAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFrHardAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFrHardAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFrHardAlgorithm> ()
+    .AddAttribute ("UlSubBandOffset",
+                   "Uplink Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrHardAlgorithm::m_ulOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlSubBandwidth",
+                   "Uplink Transmission SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (25),
+                   MakeUintegerAccessor (&LteFrHardAlgorithm::m_ulSubBand),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlSubBandOffset",
+                   "Downlink Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrHardAlgorithm::m_dlOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlSubBandwidth",
+                   "Downlink Transmission SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (25),
+                   MakeUintegerAccessor (&LteFrHardAlgorithm::m_dlSubBand),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+void
+LteFrHardAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFrHardAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFrHardAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFrHardAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFrHardAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_ASSERT_MSG (m_dlBandwidth > 14,"DlBandwidth must be at least 15 to use FFR algorithms");
+  NS_ASSERT_MSG (m_ulBandwidth > 14,"UlBandwidth must be at least 15 to use FFR algorithms");
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+}
+
+void
+LteFrHardAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFrHardAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_DOWNLINK_CONFS; ++i)
+    {
+      if ((g_frHardDownlinkDefaultConfiguration[i].m_cellId == cellId)
+          && g_frHardDownlinkDefaultConfiguration[i].m_dlBandwidth == m_dlBandwidth)
+        {
+          m_dlOffset = g_frHardDownlinkDefaultConfiguration[i].m_dlOffset;
+          m_dlSubBand = g_frHardDownlinkDefaultConfiguration[i].m_dlSubBand;
+        }
+    }
+}
+
+void
+LteFrHardAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_UPLINK_CONFS; ++i)
+    {
+      if ((g_frHardUplinkDefaultConfiguration[i].m_cellId == cellId)
+          && g_frHardUplinkDefaultConfiguration[i].m_ulBandwidth == m_ulBandwidth)
+        {
+          m_ulOffset = g_frHardUplinkDefaultConfiguration[i].m_ulOffset;
+          m_ulSubBand = g_frHardUplinkDefaultConfiguration[i].m_ulSubBand;
+        }
+    }
+}
+
+void
+LteFrHardAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  m_dlRbgMap.clear ();
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, true);
+
+  NS_ASSERT_MSG (m_dlOffset <= m_dlBandwidth,"DlOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlSubBand <= m_dlBandwidth,"DlBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG ((m_dlOffset + m_dlSubBand) <= m_dlBandwidth,
+                 "(DlOffset+DlSubBand) higher than DlBandwidth");
+
+  for (uint8_t i = m_dlOffset / rbgSize; i < (m_dlOffset / rbgSize + m_dlSubBand / rbgSize); i++)
+    {
+      m_dlRbgMap[i] = false;
+
+    }
+}
+
+void
+LteFrHardAlgorithm::InitializeUplinkRbgMaps ()
+{
+  m_ulRbgMap.clear ();
+
+  if (!m_enabledInUplink)
+    {
+      m_ulRbgMap.resize (m_ulBandwidth, false);
+      return;
+    }
+
+  m_ulRbgMap.resize (m_ulBandwidth, true);
+
+  NS_ASSERT_MSG (m_ulOffset <= m_ulBandwidth,"UlOffset higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulSubBand <= m_ulBandwidth,"UlBandwidth higher than UlBandwidth");
+  NS_ASSERT_MSG ((m_ulOffset + m_ulSubBand) <= m_ulBandwidth,
+                 "(UlOffset+UlSubBand) higher than UlBandwidth");
+
+  for (uint8_t i = m_ulOffset; i < (m_ulOffset + m_ulSubBand); i++)
+    {
+      m_ulRbgMap[i] = false;
+    }
+}
+
+std::vector <bool>
+LteFrHardAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFrHardAlgorithm::DoIsDlRbgAvailableForUe (int rbId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return !m_dlRbgMap[rbId];
+}
+
+std::vector <bool>
+LteFrHardAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFrHardAlgorithm::DoIsUlRbgAvailableForUe (int rbId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  return !m_ulRbgMap[rbId];
+}
+
+void
+LteFrHardAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrHardAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrHardAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFrHardAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return 1; // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+}
+
+uint8_t
+LteFrHardAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return m_ulBandwidth;
+    }
+
+  return m_ulSubBand;
+}
+
+void
+LteFrHardAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                    LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrHardAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-fr-hard-algorithm.h ns-3.21/src/lte/model/lte-fr-hard-algorithm.h
--- ns-3.20/src/lte/model/lte-fr-hard-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-hard-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,111 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FR_HARD_ALGORITHM_H
+#define LTE_FR_HARD_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+
+namespace ns3 {
+
+
+/**
+ * \brief Hard Frequency Reuse algorithm implementation which uses only 1 sub-band.
+ */
+class LteFrHardAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFrHardAlgorithm ();
+
+  virtual ~LteFrHardAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFrHardAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFrHardAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  uint8_t m_dlOffset;
+  uint8_t m_dlSubBand;
+
+  uint8_t m_ulOffset;
+  uint8_t m_ulSubBand;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+}; // end of class LteFrHardAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FR_HARD_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-fr-no-op-algorithm.cc ns-3.21/src/lte/model/lte-fr-no-op-algorithm.cc
--- ns-3.20/src/lte/model/lte-fr-no-op-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-no-op-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,194 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-fr-no-op-algorithm.h"
+#include <ns3/log.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteFrNoOpAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFrNoOpAlgorithm);
+
+
+LteFrNoOpAlgorithm::LteFrNoOpAlgorithm ()
+  : m_ffrSapUser (0), m_ffrRrcSapUser (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFrNoOpAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFrNoOpAlgorithm> (this);
+}
+
+
+LteFrNoOpAlgorithm::~LteFrNoOpAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFrNoOpAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFrNoOpAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFrNoOpAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFrNoOpAlgorithm> ()
+  ;
+  return tid;
+}
+
+
+void
+LteFrNoOpAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFrNoOpAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFrNoOpAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFrNoOpAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFrNoOpAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+}
+
+void
+LteFrNoOpAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+std::vector <bool>
+LteFrNoOpAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+  std::vector <bool> rbgMap;
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  rbgMap.resize (m_dlBandwidth/rbgSize, false);
+  return rbgMap;
+}
+
+bool
+LteFrNoOpAlgorithm::DoIsDlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+std::vector <bool>
+LteFrNoOpAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+  std::vector <bool> rbgMap;
+  rbgMap.resize (m_ulBandwidth, false);
+  return rbgMap;
+}
+
+bool
+LteFrNoOpAlgorithm::DoIsUlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+void
+LteFrNoOpAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrNoOpAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrNoOpAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFrNoOpAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return 1; // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+}
+
+uint8_t
+LteFrNoOpAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ulBandwidth;
+}
+
+void
+LteFrNoOpAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                    LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrNoOpAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-fr-no-op-algorithm.h ns-3.21/src/lte/model/lte-fr-no-op-algorithm.h
--- ns-3.20/src/lte/model/lte-fr-no-op-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-no-op-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,103 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FR_NO_OP_ALGORITHM_H
+#define LTE_FR_NO_OP_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+
+namespace ns3 {
+
+
+/**
+ * \brief FR algorithm implementation which simply does nothing.
+ *
+ * Selecting this FR algorithm is equivalent to disabling FFR.
+ * This is the default choice.
+ *
+ * To enable FR, please select another FR algorithm, i.e.,
+ * another child class of LteFfrAlgorithm.
+ */
+class LteFrNoOpAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a NoOP FR algorithm instance.
+   */
+  LteFrNoOpAlgorithm ();
+
+  virtual ~LteFrNoOpAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFrNoOpAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFrNoOpAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+}; // end of class LteFrNoOpAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_NO_OP_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-fr-soft-algorithm.cc ns-3.21/src/lte/model/lte-fr-soft-algorithm.cc
--- ns-3.20/src/lte/model/lte-fr-soft-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-soft-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,559 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-fr-soft-algorithm.h"
+#include <ns3/log.h>
+#include "ns3/boolean.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteFrSoftAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFrSoftAlgorithm);
+
+static const struct FrSoftDownlinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t dlBandwidth;
+  uint8_t dlEgdeSubBandOffset;
+  uint8_t dlEdgeSubBandwidth;
+} g_frSoftDownlinkDefaultConfiguration[] = {
+  { 1, 15, 0, 4},
+  { 2, 15, 4, 4},
+  { 3, 15, 8, 6},
+  { 1, 25, 0, 8},
+  { 2, 25, 8, 8},
+  { 3, 25, 16, 9},
+  { 1, 50, 0, 16},
+  { 2, 50, 16, 16},
+  { 3, 50, 32, 18},
+  { 1, 75, 0, 24},
+  { 2, 75, 24, 24},
+  { 3, 75, 48, 27},
+  { 1, 100, 0, 32},
+  { 2, 100, 32, 32},
+  { 3, 100, 64, 36}
+};
+
+static const struct FrSoftUplinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t ulBandwidth;
+  uint8_t ulEgdeSubBandOffset;
+  uint8_t ulEdgeSubBandwidth;
+} g_frSoftUplinkDefaultConfiguration[] = {
+  { 1, 15, 0, 5},
+  { 2, 15, 5, 5},
+  { 3, 15, 10, 5},
+  { 1, 25, 0, 8},
+  { 2, 25, 8, 8},
+  { 3, 25, 16, 9},
+  { 1, 50, 0, 16},
+  { 2, 50, 16, 16},
+  { 3, 50, 32, 18},
+  { 1, 75, 0, 24},
+  { 2, 75, 24, 24},
+  { 3, 75, 48, 27},
+  { 1, 100, 0, 32},
+  { 2, 100, 32, 32},
+  { 3, 100, 64, 36}
+};
+
+const uint16_t NUM_DOWNLINK_CONFS (sizeof (g_frSoftDownlinkDefaultConfiguration) / sizeof (FrSoftDownlinkDefaultConfiguration));
+const uint16_t NUM_UPLINK_CONFS (sizeof (g_frSoftUplinkDefaultConfiguration) / sizeof (FrSoftUplinkDefaultConfiguration));
+
+
+LteFrSoftAlgorithm::LteFrSoftAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_dlEgdeSubBandOffset (0),
+    m_dlEdgeSubBandwidth (0),
+    m_ulEgdeSubBandOffset (0),
+    m_ulEdgeSubBandwidth (0),
+    m_measId (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFrSoftAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFrSoftAlgorithm> (this);
+}
+
+
+LteFrSoftAlgorithm::~LteFrSoftAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFrSoftAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFrSoftAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFrSoftAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFrSoftAlgorithm> ()
+    .AddAttribute ("UlEdgeSubBandOffset",
+                   "Uplink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_ulEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlEdgeSubBandwidth",
+                   "Uplink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_ulEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandOffset",
+                   "Downlink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_dlEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandwidth",
+                   "Downlink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_dlEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("AllowCenterUeUseEdgeSubBand",
+                   "If true center UEs can receive on Edge SubBand RBGs",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteFrSoftAlgorithm::m_isEdgeSubBandForCenterUe),
+                   MakeBooleanChecker ())
+    .AddAttribute ("RsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_egdeSubBandThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterPowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_centerPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgePowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_edgePowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in center area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_centerAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in edge area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFrSoftAlgorithm::m_edgeAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+void
+LteFrSoftAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFrSoftAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFrSoftAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFrSoftAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFrSoftAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_ASSERT_MSG (m_dlBandwidth > 14,"DlBandwidth must be at least 15 to use FFR algorithms");
+  NS_ASSERT_MSG (m_ulBandwidth > 14,"UlBandwidth must be at least 15 to use FFR algorithms");
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+  NS_LOG_LOGIC (this << " requesting Event A1 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_measId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+}
+
+void
+LteFrSoftAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFrSoftAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_DOWNLINK_CONFS; ++i)
+    {
+      if ((g_frSoftDownlinkDefaultConfiguration[i].cellId == cellId)
+          && g_frSoftDownlinkDefaultConfiguration[i].dlBandwidth == m_dlBandwidth)
+        {
+          m_dlEgdeSubBandOffset = g_frSoftDownlinkDefaultConfiguration[i].dlEgdeSubBandOffset;
+          m_dlEdgeSubBandwidth = g_frSoftDownlinkDefaultConfiguration[i].dlEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFrSoftAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_UPLINK_CONFS; ++i)
+    {
+      if ((g_frSoftUplinkDefaultConfiguration[i].cellId == cellId)
+          && g_frSoftUplinkDefaultConfiguration[i].ulBandwidth == m_ulBandwidth)
+        {
+          m_ulEgdeSubBandOffset = g_frSoftUplinkDefaultConfiguration[i].ulEgdeSubBandOffset;
+          m_ulEdgeSubBandwidth = g_frSoftUplinkDefaultConfiguration[i].ulEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFrSoftAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  m_dlRbgMap.clear ();
+  m_dlEdgeRbgMap.clear ();
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, false);
+  m_dlEdgeRbgMap.resize (m_dlBandwidth / rbgSize, false);
+
+  NS_ASSERT_MSG (m_dlEgdeSubBandOffset <= m_dlBandwidth,"DlEgdeSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlEdgeSubBandwidth <= m_dlBandwidth,"DlEdgeSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG ((m_dlEgdeSubBandOffset + m_dlEdgeSubBandwidth) <= m_dlBandwidth,
+                 "(DlEgdeSubBandOffset+DlEdgeSubBandwidth) higher than DlBandwidth");
+
+  for (uint8_t i = m_dlEgdeSubBandOffset / rbgSize;
+       i < (m_dlEgdeSubBandOffset + m_dlEdgeSubBandwidth) / rbgSize; i++)
+    {
+      m_dlEdgeRbgMap[i] = true;
+    }
+}
+
+void
+LteFrSoftAlgorithm::InitializeUplinkRbgMaps ()
+{
+  m_ulRbgMap.clear ();
+  m_ulEdgeRbgMap.clear ();
+
+  m_ulRbgMap.resize (m_ulBandwidth, false);
+  m_ulEdgeRbgMap.resize (m_ulBandwidth, false);
+
+  NS_ASSERT_MSG (m_ulEgdeSubBandOffset <= m_dlBandwidth,"UlEgdeSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_ulEdgeSubBandwidth <= m_dlBandwidth,"UlEdgeSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG ((m_ulEgdeSubBandOffset + m_ulEdgeSubBandwidth) <= m_dlBandwidth,
+                 "(UlEgdeSubBandOffset+UlEdgeSubBandwidth) higher than DlBandwidth");
+
+  for (uint8_t i = m_ulEgdeSubBandOffset; i < (m_ulEgdeSubBandOffset + m_ulEdgeSubBandwidth); i++)
+    {
+      m_ulEdgeRbgMap[i] = true;
+    }
+}
+
+std::vector <bool>
+LteFrSoftAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFrSoftAlgorithm::DoIsDlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool edgeRbg = m_dlEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == CellEdge )
+    {
+      edgeUe = true;
+    }
+
+  if (!edgeUe && m_isEdgeSubBandForCenterUe)
+    {
+      return true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+std::vector <bool>
+LteFrSoftAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFrSoftAlgorithm::DoIsUlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  bool edgeRbg = m_ulEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == CellEdge )
+    {
+      edgeUe = true;
+    }
+
+  if (!edgeUe && m_isEdgeSubBandForCenterUe)
+    {
+      return true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+void
+LteFrSoftAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrSoftAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrSoftAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFrSoftAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return 1;     // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+    }
+
+  //TS36.213 Table 5.1.1.1-2
+  //   TPC   |   Accumulated Mode  |  Absolute Mode
+  //------------------------------------------------
+  //    0    |         -1          |      -4
+  //    1    |          0          |      -1
+  //    2    |          1          |       1
+  //    3    |          3          |       4
+  //------------------------------------------------
+  // here Absolute mode is used
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      return 1;
+    }
+
+  if (it->second == CellEdge )
+    {
+      return m_edgeAreaTpc;
+    }
+  else if (it->second == CellCenter )
+    {
+      return m_centerAreaTpc;
+    }
+
+  return 1;
+}
+
+uint8_t
+LteFrSoftAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  uint8_t minContinuousUlBandwidth = m_ulBandwidth;
+
+  if (!m_enabledInUplink)
+    {
+      return minContinuousUlBandwidth;
+    }
+
+  uint8_t leftBandwidth = m_ulEgdeSubBandOffset;
+  uint8_t centerBandwidth = m_ulEdgeSubBandwidth;
+  uint8_t rightBandwidth = m_ulBandwidth - m_ulEdgeSubBandwidth - m_ulEgdeSubBandOffset;
+
+  minContinuousUlBandwidth =
+    ((leftBandwidth > 0 ) && (leftBandwidth < minContinuousUlBandwidth)) ? leftBandwidth : minContinuousUlBandwidth;
+
+  minContinuousUlBandwidth =
+    ((centerBandwidth > 0 ) && (centerBandwidth < minContinuousUlBandwidth)) ? centerBandwidth : minContinuousUlBandwidth;
+
+  minContinuousUlBandwidth =
+    ((rightBandwidth > 0 ) && (rightBandwidth < minContinuousUlBandwidth)) ? rightBandwidth : minContinuousUlBandwidth;
+
+  NS_LOG_INFO ("minContinuousUlBandwidth: " << (int)minContinuousUlBandwidth);
+
+  return minContinuousUlBandwidth;
+}
+
+void
+LteFrSoftAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                    LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_INFO ("RNTI :" << rnti << " MeasId: " << (uint16_t) measResults.measId
+                        << " RSRP: " << (uint16_t)measResults.rsrpResult
+                        << " RSRQ: " << (uint16_t)measResults.rsrqResult);
+
+  if (measResults.measId != m_measId)
+    {
+      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
+    }
+  else
+    {
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+      it = m_ues.find (rnti);
+
+      if (measResults.rsrqResult < m_egdeSubBandThreshold)
+        {
+          if (it->second != CellEdge)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Edge sub-band");
+              it->second = CellEdge;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_edgePowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else
+        {
+          if (it->second != CellCenter)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Center sub-band");
+              it->second = CellCenter;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_centerPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+    }
+}
+
+void
+LteFrSoftAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-fr-soft-algorithm.h ns-3.21/src/lte/model/lte-fr-soft-algorithm.h
--- ns-3.20/src/lte/model/lte-fr-soft-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-soft-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,138 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FR_SOFT_ALGORITHM_H
+#define LTE_FR_SOFT_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+#include <map>
+
+namespace ns3 {
+
+
+/**
+ * \brief Soft Frequency Reuse algorithm implementation
+ */
+class LteFrSoftAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFrSoftAlgorithm ();
+
+  virtual ~LteFrSoftAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFrSoftAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFrSoftAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  bool m_isEdgeSubBandForCenterUe;
+
+  uint8_t m_dlEgdeSubBandOffset;
+  uint8_t m_dlEdgeSubBandwidth;
+
+  uint8_t m_ulEgdeSubBandOffset;
+  uint8_t m_ulEdgeSubBandwidth;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  std::vector <bool> m_dlEdgeRbgMap;
+  std::vector <bool> m_ulEdgeRbgMap;
+
+  enum SubBand
+  {
+    AreaUnset,
+    CellCenter,
+    CellEdge
+  };
+
+  std::map< uint16_t, uint8_t > m_ues;
+  std::vector<uint16_t> m_egdeUes;
+
+  uint8_t m_egdeSubBandThreshold;
+
+  uint8_t m_centerPowerOffset;
+  uint8_t m_edgePowerOffset;
+
+  uint8_t m_centerAreaTpc;
+  uint8_t m_edgeAreaTpc;
+
+  // The expected measurement identity
+  uint8_t m_measId;
+
+}; // end of class LteFrSoftAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FR_SOFT_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-fr-strict-algorithm.cc ns-3.21/src/lte/model/lte-fr-strict-algorithm.cc
--- ns-3.20/src/lte/model/lte-fr-strict-algorithm.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-strict-algorithm.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,571 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-fr-strict-algorithm.h"
+#include <ns3/log.h>
+#include "ns3/boolean.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteFrStrictAlgorithm");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFrStrictAlgorithm);
+
+static const struct FrStrictDownlinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t dlBandwidth;
+  uint8_t dlCommonSubBandwidth;
+  uint8_t dlEgdeSubBandOffset;
+  uint8_t dlEdgeSubBandwidth;
+} g_frStrictDownlinkDefaultConfiguration[] = {
+  { 1, 15, 2, 0, 4},
+  { 2, 15, 2, 4, 4},
+  { 3, 15, 2, 8, 4},
+  { 1, 25, 6, 0, 6},
+  { 2, 25, 6, 6, 6},
+  { 3, 25, 6, 12, 6},
+  { 1, 50, 21, 0, 9},
+  { 2, 50, 21, 9, 9},
+  { 3, 50, 21, 18, 11},
+  { 1, 75, 36, 0, 12},
+  { 2, 75, 36, 12, 12},
+  { 3, 75, 36, 24, 15},
+  { 1, 100, 28, 0, 24},
+  { 2, 100, 28, 24, 24},
+  { 3, 100, 28, 48, 24}
+};
+
+static const struct FrStrictUplinkDefaultConfiguration
+{
+  uint8_t cellId;
+  uint8_t ulBandwidth;
+  uint8_t ulCommonSubBandwidth;
+  uint8_t ulEgdeSubBandOffset;
+  uint8_t ulEdgeSubBandwidth;
+} g_frStrictUplinkDefaultConfiguration[] = {
+  { 1, 15, 3, 0, 4},
+  { 2, 15, 3, 4, 4},
+  { 3, 15, 3, 8, 4},
+  { 1, 25, 6, 0, 6},
+  { 2, 25, 6, 6, 6},
+  { 3, 25, 6, 12, 6},
+  { 1, 50, 21, 0, 9},
+  { 2, 50, 21, 9, 9},
+  { 3, 50, 21, 18, 11},
+  { 1, 75, 36, 0, 12},
+  { 2, 75, 36, 12, 12},
+  { 3, 75, 36, 24, 15},
+  { 1, 100, 28, 0, 24},
+  { 2, 100, 28, 24, 24},
+  { 3, 100, 28, 48, 24}
+};
+
+const uint16_t NUM_DOWNLINK_CONFS (sizeof (g_frStrictDownlinkDefaultConfiguration) / sizeof (FrStrictDownlinkDefaultConfiguration));
+const uint16_t NUM_UPLINK_CONFS (sizeof (g_frStrictUplinkDefaultConfiguration) / sizeof (FrStrictUplinkDefaultConfiguration));
+
+
+LteFrStrictAlgorithm::LteFrStrictAlgorithm ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_dlEgdeSubBandOffset (0),
+    m_dlEdgeSubBandwidth (0),
+    m_ulEgdeSubBandOffset (0),
+    m_ulEdgeSubBandwidth (0),
+    m_measId (0)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFrStrictAlgorithm> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFrStrictAlgorithm> (this);
+}
+
+
+LteFrStrictAlgorithm::~LteFrStrictAlgorithm ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFrStrictAlgorithm::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFrStrictAlgorithm::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFrStrictAlgorithm")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFrStrictAlgorithm> ()
+    .AddAttribute ("UlCommonSubBandwidth",
+                   "Uplink Common SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (25),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_ulCommonSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlEdgeSubBandOffset",
+                   "Uplink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_ulEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlEdgeSubBandwidth",
+                   "Uplink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_ulEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlCommonSubBandwidth",
+                   "Downlink Common SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (25),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_dlCommonSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandOffset",
+                   "Downlink Edge SubBand Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_dlEgdeSubBandOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlEdgeSubBandwidth",
+                   "Downlink Edge SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_dlEdgeSubBandwidth),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("RsrqThreshold",
+                   "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_egdeSubBandThreshold),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterPowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_centerAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgePowerOffset",
+                   "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
+                   UintegerValue (5),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_edgeAreaPowerOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("CenterAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in center area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_centerAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("EdgeAreaTpc",
+                   "TPC value which will be set in DL-DCI for UEs in edge area"
+                   "Absolute mode is used, default value 1 is mapped to -1 according to"
+                   "TS36.213 Table 5.1.1.1-2",
+                   UintegerValue (1),
+                   MakeUintegerAccessor (&LteFrStrictAlgorithm::m_edgeAreaTpc),
+                   MakeUintegerChecker<uint8_t> ())
+  ;
+  return tid;
+}
+
+
+void
+LteFrStrictAlgorithm::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFrStrictAlgorithm::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFrStrictAlgorithm::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFrStrictAlgorithm::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFrStrictAlgorithm::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_ASSERT_MSG (m_dlBandwidth > 14,"DlBandwidth must be at least 15 to use FFR algorithms");
+  NS_ASSERT_MSG (m_ulBandwidth > 14,"UlBandwidth must be at least 15 to use FFR algorithms");
+
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+
+  NS_LOG_LOGIC (this << " requesting Event A1 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_measId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+}
+
+void
+LteFrStrictAlgorithm::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_frCellTypeId != 0)
+    {
+      SetDownlinkConfiguration (m_frCellTypeId, m_dlBandwidth);
+      SetUplinkConfiguration (m_frCellTypeId, m_ulBandwidth);
+    }
+  InitializeDownlinkRbgMaps ();
+  InitializeUplinkRbgMaps ();
+  m_needReconfiguration = false;
+}
+
+void
+LteFrStrictAlgorithm::SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_DOWNLINK_CONFS; ++i)
+    {
+      if ((g_frStrictDownlinkDefaultConfiguration[i].cellId == cellId)
+          && g_frStrictDownlinkDefaultConfiguration[i].dlBandwidth == m_dlBandwidth)
+        {
+          m_dlCommonSubBandwidth = g_frStrictDownlinkDefaultConfiguration[i].dlCommonSubBandwidth;
+          m_dlEgdeSubBandOffset = g_frStrictDownlinkDefaultConfiguration[i].dlEgdeSubBandOffset;
+          m_dlEdgeSubBandwidth = g_frStrictDownlinkDefaultConfiguration[i].dlEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFrStrictAlgorithm::SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth)
+{
+  NS_LOG_FUNCTION (this);
+  for (uint16_t i = 0; i < NUM_UPLINK_CONFS; ++i)
+    {
+      if ((g_frStrictUplinkDefaultConfiguration[i].cellId == cellId)
+          && g_frStrictUplinkDefaultConfiguration[i].ulBandwidth == m_ulBandwidth)
+        {
+          m_ulCommonSubBandwidth = g_frStrictUplinkDefaultConfiguration[i].ulCommonSubBandwidth;
+          m_ulEgdeSubBandOffset = g_frStrictUplinkDefaultConfiguration[i].ulEgdeSubBandOffset;
+          m_ulEdgeSubBandwidth = g_frStrictUplinkDefaultConfiguration[i].ulEdgeSubBandwidth;
+        }
+    }
+}
+
+void
+LteFrStrictAlgorithm::InitializeDownlinkRbgMaps ()
+{
+  m_dlRbgMap.clear ();
+  m_dlEdgeRbgMap.clear ();
+
+  int rbgSize = GetRbgSize (m_dlBandwidth);
+  m_dlRbgMap.resize (m_dlBandwidth / rbgSize, true);
+  m_dlEdgeRbgMap.resize (m_dlBandwidth / rbgSize, false);
+
+  NS_ASSERT_MSG (m_dlCommonSubBandwidth <= m_dlBandwidth,"DlCommonSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlEgdeSubBandOffset <= m_dlBandwidth,"DlEgdeSubBandOffset higher than DlBandwidth");
+  NS_ASSERT_MSG (m_dlEdgeSubBandwidth <= m_dlBandwidth,"DlEdgeSubBandwidth higher than DlBandwidth");
+  NS_ASSERT_MSG ((m_dlCommonSubBandwidth + m_dlEgdeSubBandOffset + m_dlEdgeSubBandwidth) <= m_dlBandwidth,
+                 "(DlCommonSubBandwidth+DlEgdeSubBandOffset+DlEdgeSubBandwidth) higher than DlBandwidth");
+
+  for (uint8_t i = 0; i < m_dlCommonSubBandwidth / rbgSize; i++)
+    {
+      m_dlRbgMap[i] = false;
+
+    }
+
+  for (uint8_t i = m_dlCommonSubBandwidth / rbgSize + m_dlEgdeSubBandOffset / rbgSize;
+       i < (m_dlCommonSubBandwidth / rbgSize + m_dlEgdeSubBandOffset / rbgSize
+            + m_dlEdgeSubBandwidth / rbgSize); i++)
+    {
+      m_dlRbgMap[i] = false;
+      m_dlEdgeRbgMap[i] = true;
+    }
+}
+
+void
+LteFrStrictAlgorithm::InitializeUplinkRbgMaps ()
+{
+  m_ulRbgMap.clear ();
+  m_ulEdgeRbgMap.clear ();
+
+  if (!m_enabledInUplink)
+    {
+      m_ulRbgMap.resize (m_ulBandwidth, false);
+      return;
+    }
+
+  m_ulRbgMap.resize (m_ulBandwidth, true);
+  m_ulEdgeRbgMap.resize (m_ulBandwidth, false);
+
+  NS_ASSERT_MSG (m_ulCommonSubBandwidth <= m_ulBandwidth,"UlCommonSubBandwidth higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulEgdeSubBandOffset <= m_ulBandwidth,"UlEgdeSubBandOffset higher than UlBandwidth");
+  NS_ASSERT_MSG (m_ulEdgeSubBandwidth <= m_ulBandwidth,"UlEdgeSubBandwidth higher than UlBandwidth");
+  NS_ASSERT_MSG ((m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset + m_ulEdgeSubBandwidth) <= m_dlBandwidth,
+                 "(UlCommonSubBandwidth+UlEgdeSubBandOffset+UlEdgeSubBandwidth) higher than UlBandwidth");
+
+  for (uint8_t i = 0; i < m_ulCommonSubBandwidth; i++)
+    {
+      m_ulRbgMap[i] = false;
+
+    }
+
+  for (uint8_t i = m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset;
+       i < (m_ulCommonSubBandwidth + m_ulEgdeSubBandOffset
+            + m_ulEdgeSubBandwidth); i++)
+    {
+      m_ulRbgMap[i] = false;
+      m_ulEdgeRbgMap[i] = true;
+    }
+}
+
+
+std::vector <bool>
+LteFrStrictAlgorithm::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_needReconfiguration)
+    {
+      Reconfigure ();
+    }
+
+  if (m_dlRbgMap.empty ())
+    {
+      InitializeDownlinkRbgMaps ();
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFrStrictAlgorithm::DoIsDlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  bool edgeRbg = m_dlEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == CellEdge )
+    {
+      edgeUe = true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+std::vector <bool>
+LteFrStrictAlgorithm::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      InitializeUplinkRbgMaps ();
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFrStrictAlgorithm::DoIsUlRbgAvailableForUe (int rbgId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return true;
+    }
+
+  bool edgeRbg = m_ulEdgeRbgMap[rbgId];
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+      return !edgeRbg;
+    }
+
+  bool edgeUe = false;
+  if (it->second == CellEdge )
+    {
+      edgeUe = true;
+    }
+
+  return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
+}
+
+void
+LteFrStrictAlgorithm::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrStrictAlgorithm::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+void
+LteFrStrictAlgorithm::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, because it is empty");
+}
+
+uint8_t
+LteFrStrictAlgorithm::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return 1;     // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+    }
+
+  //TS36.213 Table 5.1.1.1-2
+  //   TPC   |   Accumulated Mode  |  Absolute Mode
+  //------------------------------------------------
+  //    0    |         -1          |      -4
+  //    1    |          0          |      -1
+  //    2    |          1          |       1
+  //    3    |          3          |       4
+  //------------------------------------------------
+  // here Absolute mode is used
+
+  std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+  if (it == m_ues.end ())
+    {
+      return 1;
+    }
+
+  if (it->second == CellEdge )
+    {
+      return m_edgeAreaTpc;
+    }
+  else if (it->second == CellCenter )
+    {
+      return m_centerAreaTpc;
+    }
+
+  return 1;
+}
+
+uint8_t
+LteFrStrictAlgorithm::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_enabledInUplink)
+    {
+      return m_ulBandwidth;
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ulCommonSubBandwidth < m_ulEdgeSubBandwidth ? m_ulCommonSubBandwidth : m_ulEdgeSubBandwidth;
+  NS_LOG_INFO ("minContinuousUlBandwidth: " << (int)minContinuousUlBandwidth);
+
+  return minContinuousUlBandwidth;
+}
+
+void
+LteFrStrictAlgorithm::DoReportUeMeas (uint16_t rnti,
+                                      LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+  NS_LOG_INFO ("RNTI :" << rnti << " MeasId: " << (uint16_t) measResults.measId
+                        << " RSRP: " << (uint16_t)measResults.rsrpResult
+                        << " RSRQ: " << (uint16_t)measResults.rsrqResult);
+
+  if (measResults.measId != m_measId)
+    {
+      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
+    }
+  else
+    {
+      std::map< uint16_t, uint8_t >::iterator it = m_ues.find (rnti);
+      if (it == m_ues.end ())
+        {
+          m_ues.insert (std::pair< uint16_t, uint8_t > (rnti, AreaUnset));
+        }
+      it = m_ues.find (rnti);
+
+      if (measResults.rsrqResult < m_egdeSubBandThreshold)
+        {
+          if (it->second != CellEdge )
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Edge sub-band");
+              it->second = CellEdge;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_edgeAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+      else
+        {
+          if (it->second != CellCenter)
+            {
+              NS_LOG_INFO ("UE RNTI: " << rnti << " will be served in Center sub-band");
+              it->second = CellCenter;
+
+              LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+              pdschConfigDedicated.pa = m_centerAreaPowerOffset;
+              m_ffrRrcSapUser->SetPdschConfigDedicated (rnti, pdschConfigDedicated);
+            }
+        }
+    }
+}
+
+void
+LteFrStrictAlgorithm::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_WARN ("Method should not be called, since it is empty");
+
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-fr-strict-algorithm.h ns-3.21/src/lte/model/lte-fr-strict-algorithm.h
--- ns-3.20/src/lte/model/lte-fr-strict-algorithm.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-fr-strict-algorithm.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,139 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FR_STRICT_ALGORITHM_H
+#define LTE_FR_STRICT_ALGORITHM_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+#include <map>
+
+namespace ns3 {
+
+
+/**
+ * \brief Strict Frequency Reuse algorithm implementation
+ */
+class LteFrStrictAlgorithm : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFrStrictAlgorithm ();
+
+  virtual ~LteFrStrictAlgorithm ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFrStrictAlgorithm>;
+  friend class MemberLteFfrRrcSapProvider<LteFrStrictAlgorithm>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+  void SetDownlinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void SetUplinkConfiguration (uint16_t cellId, uint8_t bandwidth);
+  void InitializeDownlinkRbgMaps ();
+  void InitializeUplinkRbgMaps ();
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+
+  uint8_t m_dlCommonSubBandwidth;
+  uint8_t m_dlEgdeSubBandOffset;
+  uint8_t m_dlEdgeSubBandwidth;
+
+  uint8_t m_ulCommonSubBandwidth;
+  uint8_t m_ulEgdeSubBandOffset;
+  uint8_t m_ulEdgeSubBandwidth;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  std::vector <bool> m_dlEdgeRbgMap;
+  std::vector <bool> m_ulEdgeRbgMap;
+
+  enum SubBand
+  {
+    AreaUnset,
+    CellCenter,
+    CellEdge
+  };
+
+  std::map< uint16_t, uint8_t > m_ues;
+  std::vector<uint16_t> m_egdeUes;
+
+  uint8_t m_egdeSubBandThreshold;
+
+  uint8_t m_centerAreaPowerOffset;
+  uint8_t m_edgeAreaPowerOffset;
+
+  uint8_t m_centerAreaTpc;
+  uint8_t m_edgeAreaTpc;
+
+  // The expected measurement identity
+  uint8_t m_measId;
+
+}; // end of class LteFrStrictAlgorithm
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FR_STRICT_ALGORITHM_H */
diff -Naur ns-3.20/src/lte/model/lte-interference.cc ns-3.21/src/lte/model/lte-interference.cc
--- ns-3.20/src/lte/model/lte-interference.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-interference.cc	2014-09-17 20:03:14.000000000 -0700
@@ -20,7 +20,7 @@
 
 
 #include "lte-interference.h"
-#include "lte-sinr-chunk-processor.h"
+#include "lte-chunk-processor.h"
 
 #include <ns3/simulator.h>
 #include <ns3/log.h>
@@ -78,15 +78,15 @@
       m_rxSignal = rxPsd->Copy ();
       m_lastChangeTime = Now ();
       m_receiving = true;
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
         {
           (*it)->Start ();
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
         {
           (*it)->Start ();
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
         {
           (*it)->Start (); 
         }
@@ -115,15 +115,15 @@
     {
       ConditionallyEvaluateChunk ();
       m_receiving = false;
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
         {
           (*it)->End ();
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
         {
           (*it)->End ();
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
         {
           (*it)->End (); 
         }
@@ -192,17 +192,17 @@
 
       SpectrumValue sinr = (*m_rxSignal) / interf;
       Time duration = Now () - m_lastChangeTime;
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_sinrChunkProcessorList.begin (); it != m_sinrChunkProcessorList.end (); ++it)
         {
-          (*it)->EvaluateSinrChunk (sinr, duration);
+          (*it)->EvaluateChunk (sinr, duration);
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_interfChunkProcessorList.begin (); it != m_interfChunkProcessorList.end (); ++it)
         {
-          (*it)->EvaluateSinrChunk (interf, duration);
+          (*it)->EvaluateChunk (interf, duration);
         }
-      for (std::list<Ptr<LteSinrChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
+      for (std::list<Ptr<LteChunkProcessor> >::const_iterator it = m_rsPowerChunkProcessorList.begin (); it != m_rsPowerChunkProcessorList.end (); ++it)
         {
-          (*it)->EvaluateSinrChunk (*m_rxSignal, duration);
+          (*it)->EvaluateChunk (*m_rxSignal, duration);
         }
       m_lastChangeTime = Now ();
     }
@@ -228,21 +228,21 @@
 }
 
 void
-LteInterference::AddRsPowerChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteInterference::AddRsPowerChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   NS_LOG_FUNCTION (this << p);
   m_rsPowerChunkProcessorList.push_back (p);
 }
 
 void
-LteInterference::AddSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteInterference::AddSinrChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   NS_LOG_FUNCTION (this << p);
   m_sinrChunkProcessorList.push_back (p);
 }
 
 void
-LteInterference::AddInterferenceChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteInterference::AddInterferenceChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   NS_LOG_FUNCTION (this << p);
   m_interfChunkProcessorList.push_back (p);
diff -Naur ns-3.20/src/lte/model/lte-interference.h ns-3.21/src/lte/model/lte-interference.h
--- ns-3.20/src/lte/model/lte-interference.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-interference.h	2014-09-17 20:03:14.000000000 -0700
@@ -34,7 +34,7 @@
 
 
 
-class LteSinrChunkProcessor;
+class LteChunkProcessor;
 
 
 
@@ -54,31 +54,31 @@
   virtual void DoDispose ();
 
   /**
-   * Add a LteSinrChunkProcessor that will use the time-vs-frequency SINR
+   * Add a LteChunkProcessor that will use the time-vs-frequency SINR
    * calculated by this LteInterference instance. Note that all the
-   * added LteSinrChunkProcessors will work in parallel. 
+   * added LteChunkProcessors will work in parallel.
    *
    * @param p
    */
-  void AddSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddSinrChunkProcessor (Ptr<LteChunkProcessor> p);
 
   /**
-   * Add a LteSinrChunkProcessor that will use the time-vs-frequency
+   * Add a LteChunkProcessor that will use the time-vs-frequency
    *  interference calculated by this LteInterference instance. Note 
-   *  that all the added LteSinrChunkProcessors will work in parallel.
+   *  that all the added LteChunkProcessors will work in parallel.
    *
    * @param p
    */
-  void AddInterferenceChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddInterferenceChunkProcessor (Ptr<LteChunkProcessor> p);
 
   /**
-   * Add a LteSinrChunkProcessor that will use the time-vs-frequency
+   * Add a LteChunkProcessor that will use the time-vs-frequency
    *  power calculated by this LteInterference instance. Note
-   *  that all the added LteSinrChunkProcessors will work in parallel.
+   *  that all the added LteChunkProcessors will work in parallel.
    *
    * @param p
    */
-  void AddRsPowerChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddRsPowerChunkProcessor (Ptr<LteChunkProcessor> p);
 
   /**
    * notify that the PHY is starting a RX attempt
@@ -143,15 +143,15 @@
 
   /** all the processor instances that need to be notified whenever
   a new interference chunk is calculated */
-  std::list<Ptr<LteSinrChunkProcessor> > m_rsPowerChunkProcessorList;
+  std::list<Ptr<LteChunkProcessor> > m_rsPowerChunkProcessorList;
 
   /** all the processor instances that need to be notified whenever
       a new SINR chunk is calculated */
-  std::list<Ptr<LteSinrChunkProcessor> > m_sinrChunkProcessorList;
+  std::list<Ptr<LteChunkProcessor> > m_sinrChunkProcessorList;
 
   /** all the processor instances that need to be notified whenever
       a new interference chunk is calculated */
-  std::list<Ptr<LteSinrChunkProcessor> > m_interfChunkProcessorList; 
+  std::list<Ptr<LteChunkProcessor> > m_interfChunkProcessorList;
 
 
 };
diff -Naur ns-3.20/src/lte/model/lte-rrc-header.cc ns-3.21/src/lte/model/lte-rrc-header.cc
--- ns-3.20/src/lte/model/lte-rrc-header.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-rrc-header.cc	2014-09-17 20:03:14.000000000 -0700
@@ -263,7 +263,7 @@
 {
   // Serialize PhysicalConfigDedicated Sequence
   std::bitset<10> optionalFieldsPhysicalConfigDedicated;
-  optionalFieldsPhysicalConfigDedicated.set (9,0);  // pdsch-ConfigDedicated not present
+  optionalFieldsPhysicalConfigDedicated.set (9,physicalConfigDedicated.havePdschConfigDedicated);  // pdsch-ConfigDedicated
   optionalFieldsPhysicalConfigDedicated.set (8,0);  // pucch-ConfigDedicated not present
   optionalFieldsPhysicalConfigDedicated.set (7,0);  // pusch-ConfigDedicated not present
   optionalFieldsPhysicalConfigDedicated.set (6,0);  // uplinkPowerControlDedicated not present
@@ -275,6 +275,20 @@
   optionalFieldsPhysicalConfigDedicated.set (0,0);  // schedulingRequestConfig not present
   SerializeSequence (optionalFieldsPhysicalConfigDedicated,true);
 
+  if (physicalConfigDedicated.havePdschConfigDedicated)
+    {
+      // Serialize Pdsch-ConfigDedicated Sequence:
+      // 0 optional / default fields, no extension marker.
+      SerializeSequence (std::bitset<0> (),false);
+
+      // Serialize  p-a
+      // Assuming the value in the struct is the enum index
+      SerializeEnum (8,physicalConfigDedicated.pdschConfigDedicated.pa);
+
+      // Serialize release
+      SerializeNull ();
+    }
+
   if (physicalConfigDedicated.haveSoundingRsUlConfigDedicated)
     {
       // Serialize SoundingRS-UL-ConfigDedicated choice:
@@ -2093,10 +2107,21 @@
   std::bitset<10> optionalFieldPresent;
   bIterator = DeserializeSequence (&optionalFieldPresent,true,bIterator);
 
+  physicalConfigDedicated->havePdschConfigDedicated = optionalFieldPresent[9];
   if (optionalFieldPresent[9])
     {
       // Deserialize pdsch-ConfigDedicated
-      // ...
+      std::bitset<0> bitset0;
+      bIterator = DeserializeSequence (&bitset0,false,bIterator);
+
+      int slct;
+
+      // Deserialize p-a
+      bIterator = DeserializeEnum (8,&slct,bIterator);
+      physicalConfigDedicated->pdschConfigDedicated.pa = slct;
+
+      bIterator = DeserializeNull (bIterator);
+
     }
   if (optionalFieldPresent[8])
     {
diff -Naur ns-3.20/src/lte/model/lte-rrc-sap.h ns-3.21/src/lte/model/lte-rrc-sap.h
--- ns-3.20/src/lte/model/lte-rrc-sap.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-rrc-sap.h	2014-09-17 20:03:14.000000000 -0700
@@ -133,6 +133,66 @@
     uint8_t transmissionMode;
   };
 
+  struct PdschConfigCommon
+  {
+	int8_t referenceSignalPower;  // INTEGER (-60..50),
+    int8_t pb;                    // INTEGER (0..3),
+  };
+
+  struct PdschConfigDedicated
+  {
+    /*
+     * P_A values, TS 36.331 6.3.2 PDSCH-Config
+     * ENUMERATED { dB-6, dB-4dot77, dB-3, dB-1dot77, dB0, dB1, dB2, dB3 }
+     */
+    enum
+    {
+      dB_6,
+      dB_4dot77,
+      dB_3,
+      dB_1dot77,
+      dB0,
+      dB1,
+      dB2,
+      dB3
+    };
+    uint8_t pa;
+  };
+
+  static double ConvertPdschConfigDedicated2Double (PdschConfigDedicated pdschConfigDedicated)
+  {
+    double pa = 0;
+    switch (pdschConfigDedicated.pa)
+      {
+      case PdschConfigDedicated::dB_6:
+        pa = -6;
+        break;
+      case PdschConfigDedicated::dB_4dot77:
+        pa = -4.77;
+        break;
+      case PdschConfigDedicated::dB_3:
+        pa = -3;
+        break;
+      case PdschConfigDedicated::dB_1dot77:
+        pa = -1.77;
+        break;
+      case PdschConfigDedicated::dB0:
+        pa = 0;
+        break;
+      case PdschConfigDedicated::dB1:
+        pa = 1;
+        break;
+      case PdschConfigDedicated::dB2:
+        pa = 2;
+        break;
+      case PdschConfigDedicated::dB3:
+        pa = 3;
+        break;
+      default:
+        break;
+      }
+    return pa;
+  }
 
   struct PhysicalConfigDedicated
   {
@@ -140,6 +200,8 @@
     SoundingRsUlConfigDedicated soundingRsUlConfigDedicated;
     bool haveAntennaInfoDedicated;
     AntennaInfoDedicated antennaInfo;
+    bool havePdschConfigDedicated;
+    PdschConfigDedicated pdschConfigDedicated;
   };
 
 
@@ -183,6 +245,7 @@
   struct RadioResourceConfigCommonSib
   {
     RachConfigCommon rachConfigCommon;
+    PdschConfigCommon pdschConfigCommon;
   };
 
   struct RadioResourceConfigDedicated
diff -Naur ns-3.20/src/lte/model/lte-sinr-chunk-processor.cc ns-3.21/src/lte/model/lte-sinr-chunk-processor.cc
--- ns-3.20/src/lte/model/lte-sinr-chunk-processor.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-sinr-chunk-processor.cc	1969-12-31 16:00:00.000000000 -0800
@@ -1,279 +0,0 @@
-/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2010 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Nicola Baldo <nbaldo@cttc.es>
- * Modified by : Marco Miozzo <mmiozzo@cttc.es>
- *        (move from CQI to Ctrl and Data SINR Chunk processors
- */
-
-
-#include <ns3/log.h>
-
-#include "lte-sinr-chunk-processor.h"
-
-NS_LOG_COMPONENT_DEFINE ("LteSinrChunkProcessor");
-
-namespace ns3 {
-
-LteSinrChunkProcessor::~LteSinrChunkProcessor ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-
-// ------------- LteCtrlSinrChunkProcessor ------------------------------
-
-LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor (Ptr<LtePhy> p)
-  : m_phy (p),
-  m_spectrumPhy (0)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_phy);
-}
-
-LteCtrlSinrChunkProcessor::LteCtrlSinrChunkProcessor (Ptr<LtePhy> p, Ptr<LteSpectrumPhy> s)
-: m_phy (p),
-  m_spectrumPhy (s)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_phy);
-  NS_ASSERT (m_spectrumPhy);
-}
-
-
-LteCtrlSinrChunkProcessor::~LteCtrlSinrChunkProcessor ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-
-void 
-LteCtrlSinrChunkProcessor::Start ()
-{
-  NS_LOG_FUNCTION (this);
-  m_sumSinr = 0;
-  m_totDuration = MicroSeconds (0);
-}
-
-
-void 
-LteCtrlSinrChunkProcessor::EvaluateSinrChunk (const SpectrumValue& sinr, Time duration)
-{
-  NS_LOG_FUNCTION (this << sinr << duration);
-  if (m_sumSinr == 0)
-    {
-      m_sumSinr = Create<SpectrumValue> (sinr.GetSpectrumModel ());
-    }
-  (*m_sumSinr) += sinr * duration.GetSeconds ();
-  m_totDuration += duration;
-}
- 
-void 
-LteCtrlSinrChunkProcessor::End ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_totDuration.GetSeconds () > 0)
-    {
-      m_phy->GenerateCtrlCqiReport ((*m_sumSinr) / m_totDuration.GetSeconds ());
-      if (m_spectrumPhy)
-        {
-          m_spectrumPhy->UpdateSinrPerceived ((*m_sumSinr) / m_totDuration.GetSeconds ());
-        }
-    }
-  else
-    {
-      NS_LOG_WARN ("m_numSinr == 0");
-    }
-}
-
-
-// ------------- LteDataSinrChunkProcessor ------------------------------
-
-LteDataSinrChunkProcessor::LteDataSinrChunkProcessor (Ptr<LteSpectrumPhy> s, Ptr<LtePhy> p)
-: m_spectrumPhy (s),
-  m_phy (p)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_spectrumPhy);
-  NS_ASSERT (m_phy);
-}
-
-LteDataSinrChunkProcessor::LteDataSinrChunkProcessor (Ptr<LteSpectrumPhy> p)
-: m_spectrumPhy (p),
-  m_phy (0)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_spectrumPhy);
-  
-}
-
-
-
-LteDataSinrChunkProcessor::~LteDataSinrChunkProcessor ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-
-void 
-LteDataSinrChunkProcessor::Start ()
-{
-  NS_LOG_FUNCTION (this);
-  m_sumSinr = 0;
-  m_totDuration = MicroSeconds (0);
-}
-
-
-void 
-LteDataSinrChunkProcessor::EvaluateSinrChunk (const SpectrumValue& sinr, Time duration)
-{
-  NS_LOG_FUNCTION (this << sinr << duration);
-  if (m_sumSinr == 0)
-  {
-    m_sumSinr = Create<SpectrumValue> (sinr.GetSpectrumModel ());
-  }
-  (*m_sumSinr) += sinr * duration.GetSeconds ();
-  m_totDuration += duration;
-}
-
-void 
-LteDataSinrChunkProcessor::End ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_totDuration.GetSeconds () > 0)
-  {
-    m_spectrumPhy->UpdateSinrPerceived ((*m_sumSinr) / m_totDuration.GetSeconds ());
-    if (m_phy)
-      {
-        m_phy->GenerateDataCqiReport ((*m_sumSinr) / m_totDuration.GetSeconds ());
-      }
-  }
-  else
-  {
-    NS_LOG_WARN ("m_numSinr == 0");
-  }
-}
-
-
-
-
-// ------------- LteRsReceivedPowerChunkProcessor ------------------------------
-
-LteRsReceivedPowerChunkProcessor::LteRsReceivedPowerChunkProcessor (Ptr<LtePhy> p)
-: m_phy (p)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_phy);
-}
-
-LteRsReceivedPowerChunkProcessor::~LteRsReceivedPowerChunkProcessor ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-
-void
-LteRsReceivedPowerChunkProcessor::Start ()
-{
-  NS_LOG_FUNCTION (this);
-  m_sumSinr = 0;
-  m_totDuration = MicroSeconds (0);
-}
-
-
-void
-LteRsReceivedPowerChunkProcessor::EvaluateSinrChunk (const SpectrumValue& sinr, Time duration)
-{
-  NS_LOG_FUNCTION (this << sinr << duration);
-  if (m_sumSinr == 0)
-    {
-      m_sumSinr = Create<SpectrumValue> (sinr.GetSpectrumModel ());
-    }
-  (*m_sumSinr) += sinr * duration.GetSeconds ();
-  m_totDuration += duration;
-}
-
-void
-LteRsReceivedPowerChunkProcessor::End ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_totDuration.GetSeconds () > 0)
-    {
-      m_phy->ReportRsReceivedPower ((*m_sumSinr) / m_totDuration.GetSeconds ());
-    }
-  else
-    {
-      NS_LOG_WARN ("m_numSinr == 0");
-    }
-}
-
-
-
-
-
-// ------------- LteInterferencePowerChunkProcessor ------------------------------
-
-LteInterferencePowerChunkProcessor::LteInterferencePowerChunkProcessor (Ptr<LtePhy> p)
-: m_phy (p)
-{
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_phy);
-}
-
-LteInterferencePowerChunkProcessor::~LteInterferencePowerChunkProcessor ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-
-void
-LteInterferencePowerChunkProcessor::Start ()
-{
-  NS_LOG_FUNCTION (this);
-  m_sumSinr = 0;
-  m_totDuration = MicroSeconds (0);
-}
-
-
-void
-LteInterferencePowerChunkProcessor::EvaluateSinrChunk (const SpectrumValue& sinr, Time duration)
-{
-  NS_LOG_FUNCTION (this << sinr << duration);
-  if (m_sumSinr == 0)
-    {
-      m_sumSinr = Create<SpectrumValue> (sinr.GetSpectrumModel ());
-    }
-  (*m_sumSinr) += sinr * duration.GetSeconds ();
-  m_totDuration += duration;
-}
-
-void
-LteInterferencePowerChunkProcessor::End ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_totDuration.GetSeconds () > 0)
-    {
-      m_phy->ReportInterference ((*m_sumSinr) / m_totDuration.GetSeconds ());
-    }
-  else
-    {
-      NS_LOG_WARN ("m_numSinr == 0");
-    }
-}
-
-
-} // namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-sinr-chunk-processor.h ns-3.21/src/lte/model/lte-sinr-chunk-processor.h
--- ns-3.20/src/lte/model/lte-sinr-chunk-processor.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-sinr-chunk-processor.h	1969-12-31 16:00:00.000000000 -0800
@@ -1,158 +0,0 @@
-/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2009, 2010 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Nicola Baldo <nbaldo@cttc.es>
- * Modified by : Marco Miozzo <mmiozzo@cttc.es>
- *        (move from CQI to Ctrl and Data SINR Chunk processors)
- */
-
-
-#ifndef LTE_SINR_CHUNK_PROCESSOR_H
-#define LTE_SINR_CHUNK_PROCESSOR_H
-
-#include <ns3/spectrum-value.h>
-#include <ns3/ptr.h>
-#include <ns3/packet.h>
-#include <ns3/nstime.h>
-#include <ns3/object.h>
-#include <ns3/lte-phy.h>
-#include <ns3/lte-spectrum-phy.h>
-
-namespace ns3 {
-
-
-
-/** 
- * This abstract class is used to process the time-vs-frequency SINR chunk
- * of a received LTE signal which was calculated by the
- * LteInterference object.
- * 
- */
-class LteSinrChunkProcessor : public SimpleRefCount<LteSinrChunkProcessor> 
-{
-public:
-  virtual ~LteSinrChunkProcessor ();
-  virtual void Start () = 0;
-  virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration) = 0;
-  virtual void End () = 0;
-};
-
-
-
-
-/** 
- * The LteCtrlSinrChunkProcessor averages the calculated SINR over time 
- * for the Ctrl frame and therefore in charge of generating the CQI starting
- *  from the reference signals and the sinr values used for evaluating the 
- *  decodification error probability of the control channels (PCFICH + PDCCH)
- * 
- */
-class LteCtrlSinrChunkProcessor : public LteSinrChunkProcessor
-{
-public:
-  virtual ~LteCtrlSinrChunkProcessor ();
-  LteCtrlSinrChunkProcessor (Ptr<LtePhy> p);
-  LteCtrlSinrChunkProcessor (Ptr<LtePhy> p, Ptr<LteSpectrumPhy> s);
-  virtual void Start ();
-  virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration);
-  virtual void End ();
-private:
-  Ptr<SpectrumValue> m_sumSinr;
-  Time m_totDuration;
-  Ptr<LtePhy> m_phy;
-  Ptr<LteSpectrumPhy> m_spectrumPhy;
-};
-
-
-
-/** 
-* The LteDataSinrChunkProcessor averages the calculated SINR over time for
-* data frame and therefore in charge of generating the sinr values for
-*  evaluating the errors of data packets. Might be used also for generating 
-*  CQI based on data in case any LtePhy is attached.
-* 
-*/
-class LteDataSinrChunkProcessor : public LteSinrChunkProcessor
-{
-  public:
-    virtual ~LteDataSinrChunkProcessor ();
-    LteDataSinrChunkProcessor (Ptr<LteSpectrumPhy> p);
-    LteDataSinrChunkProcessor (Ptr<LteSpectrumPhy> s, Ptr<LtePhy> p);
-    virtual void Start ();
-    virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration);
-    virtual void End ();
-  private:
-    Ptr<SpectrumValue> m_sumSinr;
-    Time m_totDuration;
-    Ptr<LteSpectrumPhy> m_spectrumPhy;
-    Ptr<LtePhy> m_phy;
-};
-
-
-/**
-* The LteRsReceivedPowerChunkProcessor averages the received signal power
-* over time for data frame and therefore in charge of generating the
-*  power linear values for generating the RSRP tracing at eNB side
-*
-*/
-class LteRsReceivedPowerChunkProcessor : public LteSinrChunkProcessor
-{
-  public:
-    virtual ~LteRsReceivedPowerChunkProcessor ();
-    LteRsReceivedPowerChunkProcessor (Ptr<LtePhy> p);
-    virtual void Start ();
-    virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration);
-    virtual void End ();
-  private:
-    Ptr<SpectrumValue> m_sumSinr;
-    Time m_totDuration;
-    Ptr<LtePhy> m_phy;
-};
-
-
-
-
-/**
-* The LteInterferencePowerChunkProcessor averages the interference power 
-* over time for data frame and therefore in charge of generating the 
-* interference power linear values for generating the interference power
-* tracing at eNB side
-*
-*/
-class LteInterferencePowerChunkProcessor : public LteSinrChunkProcessor
-{
-  public:
-    virtual ~LteInterferencePowerChunkProcessor ();
-    LteInterferencePowerChunkProcessor (Ptr<LtePhy> p);
-    virtual void Start ();
-    virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration);
-    virtual void End ();
-  private:
-    Ptr<SpectrumValue> m_sumSinr;
-    Time m_totDuration;
-    Ptr<LtePhy> m_phy;
-};
-
-
-
-
-
-} // namespace ns3
-
-
-
-#endif /* LTE_SINR_PROCESSOR_H */
diff -Naur ns-3.20/src/lte/model/lte-spectrum-phy.cc ns-3.21/src/lte/model/lte-spectrum-phy.cc
--- ns-3.20/src/lte/model/lte-spectrum-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-spectrum-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -31,7 +31,7 @@
 #include "lte-spectrum-signal-parameters.h"
 #include "lte-net-device.h"
 #include "lte-radio-bearer-tag.h"
-#include "lte-sinr-chunk-processor.h"
+#include "lte-chunk-processor.h"
 #include "lte-phy-tag.h"
 #include <ns3/lte-mi-error-model.h>
 #include <ns3/lte-radio-bearer-tag.h>
@@ -1116,32 +1116,37 @@
 
 
 void
-LteSpectrumPhy::AddRsPowerChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteSpectrumPhy::AddRsPowerChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   m_interferenceCtrl->AddRsPowerChunkProcessor (p);
 }
 
+void
+LteSpectrumPhy::AddDataPowerChunkProcessor (Ptr<LteChunkProcessor> p)
+{
+  m_interferenceData->AddRsPowerChunkProcessor (p);
+}
 
 void
-LteSpectrumPhy::AddDataSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteSpectrumPhy::AddDataSinrChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   m_interferenceData->AddSinrChunkProcessor (p);
 }
 
 void
-LteSpectrumPhy::AddInterferenceCtrlChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteSpectrumPhy::AddInterferenceCtrlChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   m_interferenceCtrl->AddInterferenceChunkProcessor (p);
 }
 
 void
-LteSpectrumPhy::AddInterferenceDataChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteSpectrumPhy::AddInterferenceDataChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   m_interferenceData->AddInterferenceChunkProcessor (p);
 }
 
 void
-LteSpectrumPhy::AddCtrlSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p)
+LteSpectrumPhy::AddCtrlSinrChunkProcessor (Ptr<LteChunkProcessor> p)
 {
   m_interferenceCtrl->AddSinrChunkProcessor (p);
 }
diff -Naur ns-3.20/src/lte/model/lte-spectrum-phy.h ns-3.21/src/lte/model/lte-spectrum-phy.h
--- ns-3.20/src/lte/model/lte-spectrum-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-spectrum-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -326,41 +326,49 @@
   /**
   *
   *
-  * \param p the new LteSinrChunkProcessor to be added to the RS power 
+  * \param p the new LteChunkProcessor to be added to the RS power
   *          processing chain
   */
-  void AddRsPowerChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddRsPowerChunkProcessor (Ptr<LteChunkProcessor> p);
   
+  /**
+  *
+  *
+  * \param p the new LteChunkProcessor to be added to the Data Channel power
+  *          processing chain
+  */
+  void AddDataPowerChunkProcessor (Ptr<LteChunkProcessor> p);
+
   /** 
   * 
   * 
-  * \param p the new LteSinrChunkProcessor to be added to the data processing chain
+  * \param p the new LteChunkProcessor to be added to the data processing chain
   */
-  void AddDataSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddDataSinrChunkProcessor (Ptr<LteChunkProcessor> p);
 
   /**
-  *  LteSinrChunkProcessor devoted to evaluate interference + noise power
+  *  LteChunkProcessor devoted to evaluate interference + noise power
   *  in control symbols of the subframe
   *
-  * \param p the new LteSinrChunkProcessor to be added to the data processing chain
+  * \param p the new LteChunkProcessor to be added to the data processing chain
   */
-  void AddInterferenceCtrlChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddInterferenceCtrlChunkProcessor (Ptr<LteChunkProcessor> p);
 
   /**
-  *  LteSinrChunkProcessor devoted to evaluate interference + noise power
+  *  LteChunkProcessor devoted to evaluate interference + noise power
   *  in data symbols of the subframe
   *
-  * \param p the new LteSinrChunkProcessor to be added to the data processing chain
+  * \param p the new LteChunkProcessor to be added to the data processing chain
   */
-  void AddInterferenceDataChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddInterferenceDataChunkProcessor (Ptr<LteChunkProcessor> p);
   
   
   /** 
   * 
   * 
-  * \param p the new LteSinrChunkProcessor to be added to the ctrl processing chain
+  * \param p the new LteChunkProcessor to be added to the ctrl processing chain
   */
-  void AddCtrlSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p);
+  void AddCtrlSinrChunkProcessor (Ptr<LteChunkProcessor> p);
   
   /** 
   * 
diff -Naur ns-3.20/src/lte/model/lte-spectrum-value-helper.cc ns-3.21/src/lte/model/lte-spectrum-value-helper.cc
--- ns-3.20/src/lte/model/lte-spectrum-value-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-spectrum-value-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -36,7 +36,7 @@
   vector<int>::const_iterator it = v.begin ();
   while (it != v.end ())
     {
-      os << *it << " " ;
+      os << *it << " ";
       ++it;
     }
   os << endl;
@@ -52,7 +52,7 @@
 /**
  * Table 5.7.3-1 "E-UTRA channel numbers" from 3GPP TS 36.101
  * The table was converted to C syntax doing a cut & paste from TS 36.101 and running the following filter:
- * awk '{if ((NR % 7) == 1) printf("{"); printf ("%s",$0); if ((NR % 7) == 0) printf("},\n"); else printf(", ");}' | sed 's/ – /, /g' 
+ * awk '{if ((NR % 7) == 1) printf("{"); printf ("%s",$0); if ((NR % 7) == 0) printf("},\n"); else printf(", ");}' | sed 's/ – /, /g'
  */
 static const struct EutraChannelNumbers
 {
@@ -255,6 +255,45 @@
   return txPsd;
 }
 
+Ptr<SpectrumValue>
+LteSpectrumValueHelper::CreateTxPowerSpectralDensity (uint16_t earfcn, uint8_t txBandwidthConfiguration, double powerTx, std::map<int, double> powerTxMap, std::vector <int> activeRbs)
+{
+  NS_LOG_FUNCTION (earfcn << (uint16_t) txBandwidthConfiguration << activeRbs);
+
+  Ptr<SpectrumModel> model = GetSpectrumModel (earfcn, txBandwidthConfiguration);
+  Ptr<SpectrumValue> txPsd = Create <SpectrumValue> (model);
+
+  // powerTx is expressed in dBm. We must convert it into natural unit.
+  double powerTxW = std::pow (10., (powerTx - 30) / 10);
+  double basicPowerTxW = std::pow (10., (powerTx - 30) / 10);
+
+  double txPowerDensity = (powerTxW / (txBandwidthConfiguration * 180000));
+
+  for (std::vector <int>::iterator it = activeRbs.begin (); it != activeRbs.end (); it++)
+    {
+      int rbId = (*it);
+
+      std::map<int, double>::iterator powerIt = powerTxMap.find (rbId);
+
+      if (powerIt != powerTxMap.end ())
+        {
+          powerTxW = std::pow (10., (powerIt->second - 30) / 10);
+          txPowerDensity = (powerTxW / (txBandwidthConfiguration * 180000));
+        }
+      else
+        {
+          txPowerDensity = (basicPowerTxW / (txBandwidthConfiguration * 180000));
+        }
+
+      (*txPsd)[rbId] = txPowerDensity;
+    }
+
+  NS_LOG_LOGIC (*txPsd);
+
+  return txPsd;
+}
+
+
 
 Ptr<SpectrumValue>
 LteSpectrumValueHelper::CreateNoisePowerSpectralDensity (uint16_t earfcn, uint8_t txBandwidthConfiguration, double noiseFigure)
diff -Naur ns-3.20/src/lte/model/lte-spectrum-value-helper.h ns-3.21/src/lte/model/lte-spectrum-value-helper.h
--- ns-3.20/src/lte/model/lte-spectrum-value-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-spectrum-value-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -112,6 +112,27 @@
                                                           double powerTx,
                                                           std::vector <int> activeRbs);
 
+  /**
+   * create a spectrum value representing the power spectral
+   * density of a signal to be transmitted. See 3GPP TS 36.101 for
+   * a definition of most of the parameters described here.
+   *
+   * \param earfcn the carrier frequency (EARFCN) of the transmission
+   * \param bandwidth the Transmission Bandwidth Configuration in
+   * number of resource blocks
+   * \param powerTx the total power in dBm over the whole bandwidth
+   * \param powerTxMap the map of power in dBm for each RB,
+   * if map contain power for RB, powerTx is not used for this RB,
+   * otherwise powerTx is set for this RB
+   * \param activeRbs the list of Active Resource Blocks (PRBs)
+   *
+   * \return a pointer to a newly allocated SpectrumValue representing the TX Power Spectral Density in W/Hz for each Resource Block
+   */
+  static Ptr<SpectrumValue> CreateTxPowerSpectralDensity (uint16_t earfcn,
+                                                          uint8_t bandwidth,
+                                                          double powerTx,
+                                                          std::map<int, double> powerTxMap,
+                                                          std::vector <int> activeRbs);
 
   /**
    * create a SpectrumValue that models the power spectral density of AWGN
diff -Naur ns-3.20/src/lte/model/lte-ue-cphy-sap.h ns-3.21/src/lte/model/lte-ue-cphy-sap.h
--- ns-3.20/src/lte/model/lte-ue-cphy-sap.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-cphy-sap.h	2014-09-17 20:03:14.000000000 -0700
@@ -116,6 +116,13 @@
    */
   virtual void ConfigureUplink (uint16_t ulEarfcn, uint8_t ulBandwidth) = 0;
 
+  /**
+   * \brief Configure referenceSignalPower
+   *
+   * \param referenceSignalPower received from eNB in SIB2
+   */
+  virtual void ConfigureReferenceSignalPower (int8_t referenceSignalPower) = 0;
+
   /** 
    * 
    * \param rnti the cell-specific UE identifier
@@ -220,6 +227,7 @@
   virtual void SynchronizeWithEnb (uint16_t cellId, uint16_t dlEarfcn);
   virtual void SetDlBandwidth (uint8_t dlBandwidth);
   virtual void ConfigureUplink (uint16_t ulEarfcn, uint8_t ulBandwidth);
+  virtual void ConfigureReferenceSignalPower (int8_t referenceSignalPower);
   virtual void SetRnti (uint16_t rnti);
   virtual void SetTransmissionMode (uint8_t txMode);
   virtual void SetSrsConfigurationIndex (uint16_t srcCi);
@@ -284,6 +292,13 @@
 
 template <class C>
 void 
+MemberLteUeCphySapProvider<C>::ConfigureReferenceSignalPower (int8_t referenceSignalPower)
+{
+  m_owner->DoConfigureReferenceSignalPower (referenceSignalPower);
+}
+
+template <class C>
+void
 MemberLteUeCphySapProvider<C>::SetRnti (uint16_t rnti)
 {
   m_owner->DoSetRnti (rnti);
diff -Naur ns-3.20/src/lte/model/lte-ue-mac.cc ns-3.21/src/lte/model/lte-ue-mac.cc
--- ns-3.20/src/lte/model/lte-ue-mac.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-mac.cc	2014-09-17 20:03:14.000000000 -0700
@@ -527,6 +527,8 @@
           m_lcInfoMap.erase (it++);
         }
     }
+
+  m_noRaResponseReceivedEvent.Cancel ();
   m_rachConfigured = false;
   m_freshUlBsr = false;
   m_ulBsrReceived.clear ();
diff -Naur ns-3.20/src/lte/model/lte-ue-phy.cc ns-3.21/src/lte/model/lte-ue-phy.cc
--- ns-3.20/src/lte/model/lte-ue-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -35,9 +35,11 @@
 #include "lte-amc.h"
 #include "lte-ue-mac.h"
 #include "ff-mac-common.h"
-#include "lte-sinr-chunk-processor.h"
+#include "lte-chunk-processor.h"
 #include <ns3/lte-common.h>
 #include <ns3/pointer.h>
+#include <ns3/boolean.h>
+#include <ns3/lte-ue-power-control.h>
 
 NS_LOG_COMPONENT_DEFINE ("LteUePhy");
 
@@ -137,12 +139,14 @@
     m_subframeNo (0),
     m_rsReceivedPowerUpdated (false),
     m_rsInterferencePowerUpdated (false),
+    m_dataInterferencePowerUpdated (false),
     m_pssReceived (false),
     m_ueMeasurementsFilterPeriod (MilliSeconds (200)),
     m_ueMeasurementsFilterLast (MilliSeconds (0)),
     m_rsrpSinrSampleCounter (0)
 {
   m_amc = CreateObject <LteAmc> ();
+  m_powerControl = CreateObject <LteUePowerControl> ();
   m_uePhySapProvider = new UeMemberLteUePhySapProvider (this);
   m_ueCphySapProvider = new MemberLteUeCphySapProvider<LteUePhy> (this);
   m_macChTtiDelay = UL_PUSCH_TTIS_DELAY;
@@ -270,6 +274,11 @@
     .AddTraceSource ("StateTransition",
                      "Trace fired upon every UE PHY state transition",
                      MakeTraceSourceAccessor (&LteUePhy::m_stateTransitionTrace))
+    .AddAttribute ("EnableUplinkPowerControl",
+                   "If true Uplink Power Control will be enabled",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteUePhy::m_enableUplinkPowerControl),
+                   MakeBooleanChecker ())
   ;
   return tid;
 }
@@ -329,6 +338,7 @@
 {
   NS_LOG_FUNCTION (this << pow);
   m_txPower = pow;
+  m_powerControl->SetTxPower (pow);
 }
 
 double
@@ -338,6 +348,12 @@
   return m_txPower;
 }
 
+Ptr<LteUePowerControl>
+LteUePhy::GetUplinkPowerControl () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_powerControl;
+}
 
 uint8_t
 LteUePhy::GetMacChDelay (void) const
@@ -423,6 +439,14 @@
 {
   NS_LOG_FUNCTION (this);
 
+  if (m_dataInterferencePowerUpdated)
+    {
+      SpectrumValue mixedSinr = m_rsReceivedPower / m_dataInterferencePower;
+      GenerateMixedCqiReport (mixedSinr);
+      m_dataInterferencePowerUpdated = false;
+      return;
+    }
+
   NS_ASSERT (m_state != CELL_SEARCH);
   NS_ASSERT (m_cellId > 0);
 
@@ -542,6 +566,123 @@
 }
 
 void
+LteUePhy::GenerateMixedCqiReport (const SpectrumValue& sinr)
+{
+  NS_LOG_FUNCTION (this);
+
+  NS_ASSERT (m_state != CELL_SEARCH);
+  NS_ASSERT (m_cellId > 0);
+
+  if (m_dlConfigured && m_ulConfigured && (m_rnti > 0))
+    {
+      // check periodic wideband CQI
+      if (Simulator::Now () > m_p10CqiLast + m_p10CqiPeriocity)
+        {
+          Ptr<LteUeNetDevice> thisDevice = GetDevice ()->GetObject<LteUeNetDevice> ();
+          Ptr<DlCqiLteControlMessage> msg = CreateDlCqiFeedbackMessage (sinr);
+          if (msg)
+            {
+              DoSendLteControlMessage (msg);
+            }
+          m_p10CqiLast = Simulator::Now ();
+        }
+      // check aperiodic high-layer configured subband CQI
+      if  (Simulator::Now () > m_a30CqiLast + m_a30CqiPeriocity)
+        {
+          Ptr<LteUeNetDevice> thisDevice = GetDevice ()->GetObject<LteUeNetDevice> ();
+          Ptr<DlCqiLteControlMessage> msg = CreateDlCqiFeedbackMessage (sinr);
+          if (msg)
+            {
+              DoSendLteControlMessage (msg);
+            }
+          m_a30CqiLast = Simulator::Now ();
+        }
+    }
+
+  // Generate PHY trace
+  m_rsrpSinrSampleCounter++;
+  if (m_rsrpSinrSampleCounter==m_rsrpSinrSamplePeriod)
+    {
+      NS_ASSERT_MSG (m_rsReceivedPowerUpdated, " RS received power info obsolete");
+      // RSRP evaluated as averaged received power among RBs
+      double sum = 0.0;
+      uint8_t rbNum = 0;
+      Values::const_iterator it;
+      for (it = m_rsReceivedPower.ConstValuesBegin (); it != m_rsReceivedPower.ConstValuesEnd (); it++)
+        {
+          // convert PSD [W/Hz] to linear power [W] for the single RE
+          // we consider only one RE for the RS since the channel is
+          // flat within the same RB
+          double powerTxW = ((*it) * 180000.0) / 12.0;
+          sum += powerTxW;
+          rbNum++;
+        }
+      double rsrp = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
+      // averaged SINR among RBs
+      sum = 0.0;
+      rbNum = 0;
+      for (it = sinr.ConstValuesBegin (); it != sinr.ConstValuesEnd (); it++)
+        {
+          sum += (*it);
+          rbNum++;
+        }
+      double avSinr = (rbNum > 0) ? (sum / rbNum) : DBL_MAX;
+      NS_LOG_INFO (this << " cellId " << m_cellId << " rnti " << m_rnti << " RSRP " << rsrp << " SINR " << avSinr);
+
+      m_reportCurrentCellRsrpSinrTrace (m_cellId, m_rnti, rsrp, avSinr);
+      m_rsrpSinrSampleCounter = 0;
+    }
+
+  if (m_pssReceived)
+    {
+      // measure instantaneous RSRQ now
+      NS_ASSERT_MSG (m_rsInterferencePowerUpdated, " RS interference power info obsolete");
+
+      std::list <PssElement>::iterator itPss = m_pssList.begin ();
+      while (itPss != m_pssList.end ())
+        {
+          uint16_t rbNum = 0;
+          double rsrqSum = 0.0;
+
+          Values::const_iterator itIntN = m_rsInterferencePower.ConstValuesBegin ();
+          Values::const_iterator itPj = m_rsReceivedPower.ConstValuesBegin ();
+          for (itPj = m_rsReceivedPower.ConstValuesBegin ();
+               itPj != m_rsReceivedPower.ConstValuesEnd ();
+               itIntN++, itPj++)
+            {
+              rbNum++;
+              // convert PSD [W/Hz] to linear power [W] for the single RE
+              double noisePowerTxW = ((*itIntN) * 180000.0) / 12.0;
+              double intPowerTxW = ((*itPj) * 180000.0) / 12.0;
+              rsrqSum += (2 * (noisePowerTxW + intPowerTxW));
+            }
+
+          NS_ASSERT (rbNum == (*itPss).nRB);
+          double rsrq_dB = 10 * log10 ((*itPss).pssPsdSum / rsrqSum);
+
+          if (rsrq_dB > m_pssReceptionThreshold)
+            {
+              NS_LOG_INFO (this << " PSS RNTI " << m_rnti << " cellId " << m_cellId
+                                << " has RSRQ " << rsrq_dB << " and RBnum " << rbNum);
+              // store measurements
+              std::map <uint16_t, UeMeasurementsElement>::iterator itMeasMap;
+              itMeasMap = m_ueMeasurementsMap.find ((*itPss).cellId);
+              NS_ASSERT (itMeasMap != m_ueMeasurementsMap.end ());
+              (*itMeasMap).second.rsrqSum += rsrq_dB;
+              (*itMeasMap).second.rsrqNum++;
+            }
+
+          itPss++;
+
+        }         // end of while (itPss != m_pssList.end ())
+
+      m_pssList.clear ();
+
+    }     // end of if (m_pssReceived)
+
+}
+
+void
 LteUePhy::ReportInterference (const SpectrumValue& interf)
 {
   NS_LOG_FUNCTION (this << interf);
@@ -550,14 +691,38 @@
 }
 
 void
+LteUePhy::ReportDataInterference (const SpectrumValue& interf)
+{
+  NS_LOG_FUNCTION (this << interf);
+
+  m_dataInterferencePowerUpdated = true;
+  m_dataInterferencePower = interf;
+}
+
+void
 LteUePhy::ReportRsReceivedPower (const SpectrumValue& power)
 {
   NS_LOG_FUNCTION (this << power);
   m_rsReceivedPowerUpdated = true;
   m_rsReceivedPower = power;
-}
 
+  if (m_enableUplinkPowerControl)
+    {
+      double sum = 0;
+      uint32_t rbNum = 0;
+      Values::const_iterator it;
+      for (it = m_rsReceivedPower.ConstValuesBegin (); it != m_rsReceivedPower.ConstValuesEnd (); it++)
+        {
+          double powerTxW = ((*it) * 180000);
+          sum += powerTxW;
+          rbNum++;
+        }
+      double rsrp = 10 * log10 (sum) + 30;
 
+      NS_LOG_INFO ("RSRP: " << rsrp);
+      m_powerControl->SetRsrp (rsrp);
+    }
+}
 
 Ptr<DlCqiLteControlMessage>
 LteUePhy::CreateDlCqiFeedbackMessage (const SpectrumValue& sinr)
@@ -728,144 +893,149 @@
   NS_LOG_FUNCTION (this);
 
   std::list<Ptr<LteControlMessage> >::iterator it;
-  for (it = msgList.begin (); it != msgList.end(); it++)
-  {
-    Ptr<LteControlMessage> msg = (*it);
-  
-    if (msg->GetMessageType () == LteControlMessage::DL_DCI)
-    {
-      Ptr<DlDciLteControlMessage> msg2 = DynamicCast<DlDciLteControlMessage> (msg);
-      
-      DlDciListElement_s dci = msg2->GetDci ();
-      if (dci.m_rnti != m_rnti)
-        {
-          // DCI not for me
-          continue;
-        }
-      
-      if (dci.m_resAlloc != 0)
-      {
-        NS_FATAL_ERROR ("Resource Allocation type not implemented");
-      }
-      
-      std::vector <int> dlRb;
-      
-      // translate the DCI to Spectrum framework
-      uint32_t mask = 0x1;
-      for (int i = 0; i < 32; i++)
-      {
-        if (((dci.m_rbBitmap & mask) >> i) == 1)
-        {
-          for (int k = 0; k < GetRbgSize (); k++)
-          {
-            dlRb.push_back ((i * GetRbgSize ()) + k);
+  for (it = msgList.begin (); it != msgList.end (); it++)
+    {
+      Ptr<LteControlMessage> msg = (*it);
+
+      if (msg->GetMessageType () == LteControlMessage::DL_DCI)
+        {
+          Ptr<DlDciLteControlMessage> msg2 = DynamicCast<DlDciLteControlMessage> (msg);
+
+          DlDciListElement_s dci = msg2->GetDci ();
+          if (dci.m_rnti != m_rnti)
+            {
+              // DCI not for me
+              continue;
+            }
+
+          if (dci.m_resAlloc != 0)
+            {
+              NS_FATAL_ERROR ("Resource Allocation type not implemented");
+            }
+
+          std::vector <int> dlRb;
+
+          // translate the DCI to Spectrum framework
+          uint32_t mask = 0x1;
+          for (int i = 0; i < 32; i++)
+            {
+              if (((dci.m_rbBitmap & mask) >> i) == 1)
+                {
+                  for (int k = 0; k < GetRbgSize (); k++)
+                    {
+                      dlRb.push_back ((i * GetRbgSize ()) + k);
 //             NS_LOG_DEBUG(this << " RNTI " << m_rnti << " RBG " << i << " DL-DCI allocated PRB " << (i*GetRbgSize()) + k);
-          }
+                    }
+                }
+              mask = (mask << 1);
+            }
+          if (m_enableUplinkPowerControl)
+            {
+              m_powerControl->ReportTpc (dci.m_tpc);
+            }
+
+
+          // send TB info to LteSpectrumPhy
+          NS_LOG_DEBUG (this << " UE " << m_rnti << " DL-DCI " << dci.m_rnti << " bitmap "  << dci.m_rbBitmap);
+          for (uint8_t i = 0; i < dci.m_tbsSize.size (); i++)
+            {
+              m_downlinkSpectrumPhy->AddExpectedTb (dci.m_rnti, dci.m_ndi.at (i), dci.m_tbsSize.at (i), dci.m_mcs.at (i), dlRb, i, dci.m_harqProcess, dci.m_rv.at (i), true /* DL */);
+            }
+
+          SetSubChannelsForReception (dlRb);
+
+
         }
-        mask = (mask << 1);
-      }
-      
-      // send TB info to LteSpectrumPhy
-      NS_LOG_DEBUG (this << " UE " << m_rnti << " DL-DCI " << dci.m_rnti << " bitmap "  << dci.m_rbBitmap);
-      for (uint8_t i = 0; i < dci.m_tbsSize.size (); i++)
-      {
-        m_downlinkSpectrumPhy->AddExpectedTb (dci.m_rnti, dci.m_ndi.at (i), dci.m_tbsSize.at (i), dci.m_mcs.at (i), dlRb, i, dci.m_harqProcess, dci.m_rv.at (i), true /* DL */);
-      }
-      
-      SetSubChannelsForReception (dlRb);
-      
-      
-    }
-    else if (msg->GetMessageType () == LteControlMessage::UL_DCI) 
-    {
-      // set the uplink bandwidth according to the UL-CQI
-      Ptr<UlDciLteControlMessage> msg2 = DynamicCast<UlDciLteControlMessage> (msg);
-      UlDciListElement_s dci = msg2->GetDci ();
-      if (dci.m_rnti != m_rnti)
-        {
-          // DCI not for me
-          continue;
-        }
-      NS_LOG_INFO (this << " UL DCI");
-      std::vector <int> ulRb;
-      for (int i = 0; i < dci.m_rbLen; i++)
-      {
-        ulRb.push_back (i + dci.m_rbStart);
-        //NS_LOG_DEBUG (this << " UE RB " << i + dci.m_rbStart);
-      }
-      QueueSubChannelsForTransmission (ulRb);
-      // fire trace of UL Tx PHY stats
-      HarqProcessInfoList_t harqInfoList = m_harqPhyModule->GetHarqProcessInfoUl (m_rnti, 0);
-      PhyTransmissionStatParameters params;
-      params.m_cellId = m_cellId;
-      params.m_imsi = 0; // it will be set by DlPhyTransmissionCallback in LteHelper
-      params.m_timestamp = Simulator::Now ().GetMilliSeconds () + UL_PUSCH_TTIS_DELAY;
-      params.m_rnti = m_rnti;
-      params.m_txMode = 0; // always SISO for UE
-      params.m_layer = 0;
-      params.m_mcs = dci.m_mcs;
-      params.m_size = dci.m_tbSize;
-      params.m_rv = harqInfoList.size ();
-      params.m_ndi = dci.m_ndi;
-      m_ulPhyTransmission (params);
-      // pass the info to the MAC
-      m_uePhySapUser->ReceiveLteControlMessage (msg);
-    }
-    else if (msg->GetMessageType () == LteControlMessage::RAR)
-      {
-        Ptr<RarLteControlMessage> rarMsg = DynamicCast<RarLteControlMessage> (msg);
-        if (rarMsg->GetRaRnti () == m_raRnti)
-          {
-            for (std::list<RarLteControlMessage::Rar>::const_iterator it = rarMsg->RarListBegin (); it != rarMsg->RarListEnd (); ++it)
-              {
-                if (it->rapId != m_raPreambleId)
-                  {
-                    // UL grant not for me
-                    continue;
-                  }
-                else
-                  {
-                    NS_LOG_INFO ("received RAR RNTI " << m_raRnti);
-                    // set the uplink bandwidht according to the UL grant
-                    std::vector <int> ulRb;
-                    for (int i = 0; i < it->rarPayload.m_grant.m_rbLen; i++)
+      else if (msg->GetMessageType () == LteControlMessage::UL_DCI)
+        {
+          // set the uplink bandwidth according to the UL-CQI
+          Ptr<UlDciLteControlMessage> msg2 = DynamicCast<UlDciLteControlMessage> (msg);
+          UlDciListElement_s dci = msg2->GetDci ();
+          if (dci.m_rnti != m_rnti)
+            {
+              // DCI not for me
+              continue;
+            }
+          NS_LOG_INFO (this << " UL DCI");
+          std::vector <int> ulRb;
+          for (int i = 0; i < dci.m_rbLen; i++)
+            {
+              ulRb.push_back (i + dci.m_rbStart);
+              //NS_LOG_DEBUG (this << " UE RB " << i + dci.m_rbStart);
+            }
+          QueueSubChannelsForTransmission (ulRb);
+          // fire trace of UL Tx PHY stats
+          HarqProcessInfoList_t harqInfoList = m_harqPhyModule->GetHarqProcessInfoUl (m_rnti, 0);
+          PhyTransmissionStatParameters params;
+          params.m_cellId = m_cellId;
+          params.m_imsi = 0; // it will be set by DlPhyTransmissionCallback in LteHelper
+          params.m_timestamp = Simulator::Now ().GetMilliSeconds () + UL_PUSCH_TTIS_DELAY;
+          params.m_rnti = m_rnti;
+          params.m_txMode = 0; // always SISO for UE
+          params.m_layer = 0;
+          params.m_mcs = dci.m_mcs;
+          params.m_size = dci.m_tbSize;
+          params.m_rv = harqInfoList.size ();
+          params.m_ndi = dci.m_ndi;
+          m_ulPhyTransmission (params);
+          // pass the info to the MAC
+          m_uePhySapUser->ReceiveLteControlMessage (msg);
+        }
+      else if (msg->GetMessageType () == LteControlMessage::RAR)
+        {
+          Ptr<RarLteControlMessage> rarMsg = DynamicCast<RarLteControlMessage> (msg);
+          if (rarMsg->GetRaRnti () == m_raRnti)
+            {
+              for (std::list<RarLteControlMessage::Rar>::const_iterator it = rarMsg->RarListBegin (); it != rarMsg->RarListEnd (); ++it)
+                {
+                  if (it->rapId != m_raPreambleId)
                     {
-                      ulRb.push_back (i + it->rarPayload.m_grant.m_rbStart);
+                      // UL grant not for me
+                      continue;
                     }
+                  else
+                    {
+                      NS_LOG_INFO ("received RAR RNTI " << m_raRnti);
+                      // set the uplink bandwidht according to the UL grant
+                      std::vector <int> ulRb;
+                      for (int i = 0; i < it->rarPayload.m_grant.m_rbLen; i++)
+                        {
+                          ulRb.push_back (i + it->rarPayload.m_grant.m_rbStart);
+                        }
+
+                      QueueSubChannelsForTransmission (ulRb);
+                      // pass the info to the MAC
+                      m_uePhySapUser->ReceiveLteControlMessage (msg);
+                      // reset RACH variables with out of range values
+                      m_raPreambleId = 255;
+                      m_raRnti = 11;
+                    }
+                }
+            }
+        }
+      else if (msg->GetMessageType () == LteControlMessage::MIB)
+        {
+          NS_LOG_INFO ("received MIB");
+          NS_ASSERT (m_cellId > 0);
+          Ptr<MibLteControlMessage> msg2 = DynamicCast<MibLteControlMessage> (msg);
+          m_ueCphySapUser->RecvMasterInformationBlock (m_cellId, msg2->GetMib ());
+        }
+      else if (msg->GetMessageType () == LteControlMessage::SIB1)
+        {
+          NS_LOG_INFO ("received SIB1");
+          NS_ASSERT (m_cellId > 0);
+          Ptr<Sib1LteControlMessage> msg2 = DynamicCast<Sib1LteControlMessage> (msg);
+          m_ueCphySapUser->RecvSystemInformationBlockType1 (m_cellId, msg2->GetSib1 ());
+        }
+      else
+        {
+          // pass the message to UE-MAC
+          m_uePhySapUser->ReceiveLteControlMessage (msg);
+        }
 
-                    QueueSubChannelsForTransmission (ulRb);
-                    // pass the info to the MAC
-                    m_uePhySapUser->ReceiveLteControlMessage (msg);
-                    // reset RACH variables with out of range values
-                    m_raPreambleId = 255;
-                    m_raRnti = 11;
-                  }
-              }
-          }
-      }
-    else if (msg->GetMessageType () == LteControlMessage::MIB) 
-      {
-        NS_LOG_INFO ("received MIB");
-        NS_ASSERT (m_cellId > 0);
-        Ptr<MibLteControlMessage> msg2 = DynamicCast<MibLteControlMessage> (msg);
-        m_ueCphySapUser->RecvMasterInformationBlock (m_cellId, msg2->GetMib ());
-      }
-    else if (msg->GetMessageType () == LteControlMessage::SIB1)
-      {
-        NS_LOG_INFO ("received SIB1");
-        NS_ASSERT (m_cellId > 0);
-        Ptr<Sib1LteControlMessage> msg2 = DynamicCast<Sib1LteControlMessage> (msg);
-        m_ueCphySapUser->RecvSystemInformationBlockType1 (m_cellId, msg2->GetSib1 ());
-      }
-    else
-    {
-      // pass the message to UE-MAC
-      m_uePhySapUser->ReceiveLteControlMessage (msg);
     }
-    
-  }
-  
-  
+
+
 }
 
 
@@ -945,6 +1115,7 @@
   if (m_ulConfigured)
     {
       // update uplink transmission mask according to previous UL-CQIs
+      std::vector <int> rbMask = m_subChannelsForTransmissionQueue.at (0);
       SetSubChannelsForTransmission (m_subChannelsForTransmissionQueue.at (0));
 
       // shift the queue
@@ -953,7 +1124,7 @@
           m_subChannelsForTransmissionQueue.at (i-1) = m_subChannelsForTransmissionQueue.at (i);
         }
       m_subChannelsForTransmissionQueue.at (m_macChTtiDelay-1).clear ();
-  
+
       if (m_srsConfigured && (m_srsStartTime <= Simulator::Now ()))
         {
 
@@ -966,7 +1137,7 @@
                                                     this);
             }
         }
-      
+
       std::list<Ptr<LteControlMessage> > ctrlMsg = GetControlMessages ();
       // send packets in queue
       NS_LOG_LOGIC (this << " UE - start slot for PUSCH + PUCCH - RNTI " << m_rnti << " CELLID " << m_cellId);
@@ -974,6 +1145,11 @@
       Ptr<PacketBurst> pb = GetPacketBurst ();
       if (pb)
         {
+          if (m_enableUplinkPowerControl)
+            {
+              m_txPower = m_powerControl->GetPuschTxPower (rbMask);
+              SetSubChannelsForTransmission (rbMask);
+            }
           m_uplinkSpectrumPhy->StartTxDataFrame (pb, ctrlMsg, UL_DATA_DURATION);
         }
       else
@@ -983,6 +1159,12 @@
             {
               NS_LOG_LOGIC (this << " UE - start TX PUCCH (NO PUSCH)");
               std::vector <int> dlRb;
+
+              if (m_enableUplinkPowerControl)
+                {
+                  m_txPower = m_powerControl->GetPucchTxPower (dlRb);
+                }
+
               SetSubChannelsForTransmission (dlRb);
               m_uplinkSpectrumPhy->StartTxDataFrame (pb, ctrlMsg, UL_DATA_DURATION);
             }
@@ -992,10 +1174,10 @@
             }
         }
     }  // m_configured
-  
+
   // trigger the MAC
   m_uePhySapUser->SubframeIndication (frameNo, subframeNo);
-  
+
   m_subframeNo = subframeNo;
   ++subframeNo;
   if (subframeNo > 10)
@@ -1003,7 +1185,7 @@
       ++frameNo;
       subframeNo = 1;
     }
-  
+
   // schedule next subframe indication
   Simulator::Schedule (Seconds (GetTti ()), &LteUePhy::SubframeIndication, this, frameNo, subframeNo);
 }
@@ -1020,6 +1202,12 @@
     {
       dlRb.push_back (i);
     }
+
+  if (m_enableUplinkPowerControl)
+    {
+      m_txPower = m_powerControl->GetSrsTxPower (dlRb);
+    }
+
   SetSubChannelsForTransmission (dlRb);
   m_uplinkSpectrumPhy->StartTxUlSrsFrame ();
 }
@@ -1140,12 +1328,21 @@
   m_ulConfigured = true;
 }
 
+void
+LteUePhy::DoConfigureReferenceSignalPower (int8_t referenceSignalPower)
+{
+  NS_LOG_FUNCTION (this);
+  m_powerControl->ConfigureReferenceSignalPower (referenceSignalPower);
+}
  
 void
 LteUePhy::DoSetRnti (uint16_t rnti)
 {
   NS_LOG_FUNCTION (this << rnti);
   m_rnti = rnti;
+
+  m_powerControl->SetCellId (m_cellId);
+  m_powerControl->SetRnti (m_rnti);
 }
  
 void
diff -Naur ns-3.20/src/lte/model/lte-ue-phy.h ns-3.21/src/lte/model/lte-ue-phy.h
--- ns-3.20/src/lte/model/lte-ue-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -33,6 +33,7 @@
 #include <ns3/ptr.h>
 #include <ns3/lte-amc.h>
 #include <set>
+#include <ns3/lte-ue-power-control.h>
 
 
 namespace ns3 {
@@ -117,6 +118,12 @@
    * \return the transmission power in dBm
    */
   double GetTxPower () const;
+
+  /**
+   * \return ptr to UE Uplink Power Control entity
+   */
+  Ptr<LteUePowerControl> GetUplinkPowerControl () const;
+
   /**
    * \param nf the noise figure in dB
    */
@@ -183,7 +190,9 @@
   // inherited from LtePhy
   virtual void GenerateCtrlCqiReport (const SpectrumValue& sinr);
   virtual void GenerateDataCqiReport (const SpectrumValue& sinr);
+  virtual void GenerateMixedCqiReport (const SpectrumValue& sinr);
   virtual void ReportInterference (const SpectrumValue& interf);
+  virtual void ReportDataInterference (const SpectrumValue& interf);
   virtual void ReportRsReceivedPower (const SpectrumValue& power);
 
   // callbacks for LteSpectrumPhy
@@ -260,6 +269,7 @@
   void DoSynchronizeWithEnb (uint16_t cellId, uint16_t dlEarfcn);
   void DoSetDlBandwidth (uint8_t ulBandwidth);
   void DoConfigureUplink (uint16_t ulEarfcn, uint8_t ulBandwidth);
+  void DoConfigureReferenceSignalPower (int8_t referenceSignalPower);
   void DoSetRnti (uint16_t rnti);
   void DoSetTransmissionMode (uint8_t txMode);
   void DoSetSrsConfigurationIndex (uint16_t srcCi);
@@ -277,6 +287,9 @@
 
   Ptr<LteAmc> m_amc;
 
+  bool m_enableUplinkPowerControl;
+  Ptr<LteUePowerControl> m_powerControl;
+
   Time m_p10CqiPeriocity; /**< Wideband Periodic CQI: 2, 5, 10, 16, 20, 32, 40, 64, 80 or 160 ms */
   Time m_p10CqiLast;
 
@@ -316,6 +329,9 @@
   bool m_rsInterferencePowerUpdated;
   SpectrumValue m_rsInterferencePower;
 
+  bool m_dataInterferencePowerUpdated;
+  SpectrumValue m_dataInterferencePower;
+
   bool m_pssReceived;
   struct PssElement
   {
diff -Naur ns-3.20/src/lte/model/lte-ue-power-control.cc ns-3.21/src/lte/model/lte-ue-power-control.cc
--- ns-3.20/src/lte/model/lte-ue-power-control.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ue-power-control.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,455 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ue-power-control.h"
+#include <ns3/log.h>
+#include <ns3/boolean.h>
+#include <ns3/double.h>
+#include <ns3/integer.h>
+#include <ns3/math.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteUePowerControl");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteUePowerControl);
+
+LteUePowerControl::LteUePowerControl ()
+{
+  NS_LOG_FUNCTION (this);
+  m_deltaTF = 0;
+  m_fc = 0;
+  m_pathLoss = 100; //initial value
+  m_curPuschTxPower = 10;
+  m_curPucchTxPower = 10;
+  m_curSrsTxPower = 10;
+  m_txPower = 10;
+
+  m_cellId = 0;
+  m_rnti = 0;
+
+  m_M_Pusch = 0;
+  m_rsrpSet = false;
+}
+
+LteUePowerControl::~LteUePowerControl ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteUePowerControl::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteUePowerControl::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+TypeId
+LteUePowerControl::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LteUePowerControl")
+    .SetParent<Object> ()
+    .AddConstructor<LteUePowerControl> ()
+    .AddAttribute ("ClosedLoop",
+                   "If true Closed Loop mode will be active, otherwise Open Loop",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteUePowerControl::m_closedLoop),
+                   MakeBooleanChecker ())
+    .AddAttribute ("AccumulationEnabled",
+                   "If true TCP accumulation mode will be active, otherwise absolute mode will be active",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&LteUePowerControl::m_accumulationEnabled),
+                   MakeBooleanChecker ())
+    .AddAttribute ("Alpha",
+                   "Value of Alpha paramter",
+                   DoubleValue (1.0),
+                   MakeDoubleAccessor (&LteUePowerControl::SetAlpha),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("Pcmax",
+                   "Max Transmission power in dBm, Default value 23 dBm"
+                   "TS36.101 section 6.2.3",
+                   DoubleValue (23.0),
+                   MakeDoubleAccessor (&LteUePowerControl::m_Pcmax),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("Pcmin",
+                   "Min Transmission power in dBm, Default value -40 dBm"
+                   "TS36.101 section 6.2.3",
+                   DoubleValue (-40),
+                   MakeDoubleAccessor (&LteUePowerControl::m_Pcmin),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("PoNominalPusch",
+                   "P_O_NOMINAL_PUSCH   INT (-126 ... 24), Default value -80",
+                   IntegerValue (-80),
+                   MakeIntegerAccessor (&LteUePowerControl::SetPoNominalPusch),
+                   MakeIntegerChecker<int16_t> ())
+    .AddAttribute ("PoUePusch",
+                   "P_O_UE_PUSCH   INT(-8...7), Default value 0",
+                   IntegerValue (0),
+                   MakeIntegerAccessor (&LteUePowerControl::SetPoUePusch),
+                   MakeIntegerChecker<int16_t> ())
+    .AddAttribute ("PsrsOffset",
+                   "P_SRS_OFFSET   INT(0...15), Default value 7",
+                   IntegerValue (7),
+                   MakeIntegerAccessor (&LteUePowerControl::m_PsrsOffset),
+                   MakeIntegerChecker<int16_t> ())
+    .AddTraceSource ("ReportPuschTxPower",
+                     "Report PUSCH TxPower in dBm",
+                     MakeTraceSourceAccessor (&LteUePowerControl::m_reportPuschTxPower))
+    .AddTraceSource ("ReportPucchTxPower",
+                     "Report PUCCH TxPower in dBm",
+                     MakeTraceSourceAccessor (&LteUePowerControl::m_reportPucchTxPower))
+    .AddTraceSource ("ReportSrsTxPower",
+                     "Report SRS TxPower in dBm",
+                     MakeTraceSourceAccessor (&LteUePowerControl::m_reportSrsTxPower))
+  ;
+  return tid;
+}
+
+void
+LteUePowerControl::SetPcmax (double value)
+{
+  NS_LOG_FUNCTION (this);
+  m_Pcmax = value;
+}
+
+double
+LteUePowerControl::GetPcmax ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_Pcmax;
+}
+
+void
+LteUePowerControl::SetTxPower (double value)
+{
+  NS_LOG_FUNCTION (this);
+  m_txPower = value;
+  m_curPuschTxPower = value;
+  m_curPucchTxPower = value;
+  m_curSrsTxPower = value;
+}
+
+void
+LteUePowerControl::ConfigureReferenceSignalPower (int8_t referenceSignalPower)
+{
+  NS_LOG_FUNCTION (this);
+  m_referenceSignalPower = referenceSignalPower;
+}
+
+void
+LteUePowerControl::SetCellId (uint16_t cellId)
+{
+  NS_LOG_FUNCTION (this);
+  m_cellId = cellId;
+}
+void
+LteUePowerControl::SetRnti (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  m_rnti = rnti;
+}
+
+void
+LteUePowerControl::SetPoNominalPusch (int16_t value)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_PoNominalPusch.empty ())
+    {
+      m_PoNominalPusch.push_back (value);
+      m_PoNominalPusch.push_back (value);
+      m_PoNominalPusch.push_back (value);
+    }
+  else
+    {
+      m_PoNominalPusch[0] = value;
+      m_PoNominalPusch[1] = value;
+      m_PoNominalPusch[2] = value;
+    }
+
+}
+void
+LteUePowerControl::SetPoUePusch (int16_t value)
+{
+  NS_LOG_FUNCTION (this);
+  if (m_PoUePusch.empty ())
+    {
+      m_PoUePusch.push_back (value);
+      m_PoUePusch.push_back (value);
+      m_PoUePusch.push_back (0);
+    }
+  else
+    {
+      m_PoUePusch[0] = value;
+      m_PoUePusch[1] = value;
+      m_PoUePusch[2] = 0;
+    }
+}
+void
+LteUePowerControl::SetAlpha (double value)
+{
+  NS_LOG_FUNCTION (this);
+
+  uint32_t temp = value * 10;
+  switch (temp)
+    {
+    case 0:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+    case 10:
+      break;
+    default:
+      NS_FATAL_ERROR ("Unexpected Alpha value");
+    }
+
+  if (m_alpha.empty ())
+    {
+      m_alpha.push_back (value);
+      m_alpha.push_back (value);
+      m_alpha.push_back (0);
+    }
+  else
+    {
+      m_alpha[0] = value;
+      m_alpha[1] = value;
+      m_alpha[2] = 1;
+    }
+
+}
+
+void
+LteUePowerControl::SetRsrp (double value)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (!m_rsrpSet)
+    {
+      m_rsrp = value;
+      m_rsrpSet = true;
+      return;
+    }
+
+  double coeff = 0.7;
+  m_rsrp = coeff * m_rsrp + (1 - coeff) * value;
+  m_pathLoss = m_referenceSignalPower - m_rsrp;
+}
+
+void
+LteUePowerControl::ReportTpc (uint8_t tpc)
+{
+  NS_LOG_FUNCTION (this);
+
+  int delta = 0;
+  if (m_accumulationEnabled)
+    {
+      switch (tpc)
+        {
+        case 0:
+          delta = -1;
+          break;
+        case 1:
+          delta = 0;
+          break;
+        case 2:
+          delta = 1;
+          break;
+        case 3:
+          delta = 3;
+          break;
+        default:
+          NS_FATAL_ERROR ("Unexpected TPC value");
+        }
+    }
+  else
+    {
+      switch (tpc)
+        {
+        case 0:
+          delta = -4;
+          break;
+        case 1:
+          delta = -1;
+          break;
+        case 2:
+          delta = 1;
+          break;
+        case 3:
+          delta = 4;
+          break;
+        default:
+          NS_FATAL_ERROR ("Unexpected TPC value");
+        }
+    }
+
+  m_deltaPusch.push_back (delta);
+
+  if (m_closedLoop)
+    {
+      if (m_accumulationEnabled)
+        {
+          if (m_deltaPusch.size () == 4)
+            {
+              if ((m_curPuschTxPower <= m_Pcmin && m_deltaPusch.at (0) < 0)
+                  || (m_curPuschTxPower >= m_Pcmax && m_deltaPusch.at (0) > 0))
+                {
+                  //TPC commands for serving cell shall not be accumulated
+                  m_deltaPusch.erase (m_deltaPusch.begin ());
+                }
+              else
+                {
+                  m_fc = m_fc + m_deltaPusch.at (0);
+                  m_deltaPusch.erase (m_deltaPusch.begin ());
+                }
+            }
+          else
+            {
+              m_fc = 0;
+            }
+        }
+      else
+        {
+          m_fc = m_deltaPusch.at (0);
+          m_deltaPusch.erase (m_deltaPusch.begin ());
+        }
+    }
+  else
+    {
+      m_fc = 0;
+    }
+
+  NS_LOG_INFO ("ReportTpc: " << (int)tpc << " delta: " << delta << " Fc: " << m_fc);
+}
+
+void
+LteUePowerControl::SetSubChannelMask (std::vector <int> mask)
+{
+  NS_LOG_FUNCTION (this);
+  m_M_Pusch = mask.size ();
+}
+
+void
+LteUePowerControl::CalculatePuschTxPower ()
+{
+  NS_LOG_FUNCTION (this);
+  int32_t j = 1;
+  int32_t PoPusch = m_PoNominalPusch[j] + m_PoUePusch[j];
+
+  NS_LOG_INFO ("RB: " << m_M_Pusch << " m_PoPusch: " << PoPusch
+                      << " Alpha: " << m_alpha[j] << " PathLoss: " << m_pathLoss
+                      << " deltaTF: " << m_deltaTF << " fc: " << m_fc);
+
+  if ( m_M_Pusch > 0 )
+    {
+      m_curPuschTxPower = 10 * log10 (1.0 * m_M_Pusch) + PoPusch + m_alpha[j] * m_pathLoss + m_deltaTF + m_fc;
+      m_M_Pusch = 0;
+    }
+  else
+    {
+      m_curPuschTxPower = PoPusch + m_alpha[j] * m_pathLoss + m_fc;
+    }
+
+  NS_LOG_INFO ("CalcPower: " << m_curPuschTxPower << " MinPower: " << m_Pcmin << " MaxPower:" << m_Pcmax);
+
+  m_curPuschTxPower = m_curPuschTxPower > m_Pcmin ? m_curPuschTxPower : m_Pcmin;
+  m_curPuschTxPower = m_Pcmax < m_curPuschTxPower ? m_Pcmax : m_curPuschTxPower;
+  NS_LOG_INFO ("PuschTxPower: " << m_curPuschTxPower);
+}
+
+void
+LteUePowerControl::CalculatePucchTxPower ()
+{
+  NS_LOG_FUNCTION (this);
+  m_curPucchTxPower = m_curPuschTxPower;
+  NS_LOG_INFO ("PucchTxPower: " << m_curPucchTxPower);
+}
+
+void
+LteUePowerControl::CalculateSrsTxPower ()
+{
+  NS_LOG_FUNCTION (this);
+  int32_t j = 1;
+  int32_t PoPusch = m_PoNominalPusch[j] + m_PoUePusch[j];
+
+  NS_LOG_INFO ("RB: " << m_M_Pusch << " m_PoPusch: " << PoPusch
+                      << " Alpha: " << m_alpha[j] << " PathLoss: " << m_pathLoss
+                      << " deltaTF: " << m_deltaTF << " fc: " << m_fc);
+
+
+  double pSrsOffsetValue = -10.5 + m_PsrsOffset * 1.5;
+
+  m_curSrsTxPower = pSrsOffsetValue + 10 * log10 (m_srsBandwidth) + PoPusch + m_alpha[j] * m_pathLoss + m_fc;
+
+  NS_LOG_INFO ("CalcPower: " << m_curSrsTxPower << " MinPower: " << m_Pcmin << " MaxPower:" << m_Pcmax);
+
+  m_curSrsTxPower = m_curSrsTxPower > m_Pcmin ? m_curSrsTxPower : m_Pcmin;
+  m_curSrsTxPower = m_Pcmax < m_curSrsTxPower ? m_Pcmax : m_curSrsTxPower;
+  NS_LOG_INFO ("SrsTxPower: " << m_curSrsTxPower);
+}
+
+
+double
+LteUePowerControl::GetPuschTxPower (std::vector <int> dlRb)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_M_Pusch = dlRb.size ();
+  CalculatePuschTxPower ();
+
+  m_reportPuschTxPower (m_cellId, m_rnti, m_curPuschTxPower);
+
+  return m_curPuschTxPower;
+}
+
+double
+LteUePowerControl::GetPucchTxPower (std::vector <int> dlRb)
+{
+  NS_LOG_FUNCTION (this);
+
+  CalculatePucchTxPower ();
+
+  m_reportPucchTxPower (m_cellId, m_rnti, m_curPucchTxPower);
+
+  return m_curPucchTxPower;
+}
+
+double
+LteUePowerControl::GetSrsTxPower (std::vector <int> dlRb)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_srsBandwidth = dlRb.size ();
+  CalculateSrsTxPower ();
+
+  m_reportSrsTxPower (m_cellId, m_rnti, m_curSrsTxPower);
+
+  return m_curSrsTxPower;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/model/lte-ue-power-control.h ns-3.21/src/lte/model/lte-ue-power-control.h
--- ns-3.20/src/lte/model/lte-ue-power-control.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/model/lte-ue-power-control.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,138 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_UE_POWER_CONTROL_H
+#define LTE_UE_POWER_CONTROL_H
+
+#include <ns3/ptr.h>
+#include <ns3/traced-callback.h>
+#include <ns3/object.h>
+#include <vector>
+
+
+namespace ns3 {
+
+/**
+ * \brief This class realizes Uplink Power Control functionality
+ *
+ * When LteUePhy is about sending PUSCH/PUCCH/SRS it should ask
+ * LteUePowerControl for current channel TX power level and then
+ * use it while creating SpectrumValue for Uplink Transmission
+ *
+ * LteUePowerControl computes TX power level for PUSCH and SRS.
+ * PUCCH is realized in ideal way and PUSCH do not use any resources,
+ * so there is no need to compute power for that channel
+ *
+ * LteUePowerControlcomputes TX power based on some preconfigured
+ * parameters and current Path-loss. Path-loss is computed as difference
+ * between current RSRP and referenceSignalPower level. Current RSRP
+ * is passed to LteUePowerControl by LteUePhy. referenceSignalPower is
+ * configurable by attribute system
+ *
+ * Moreover, LteUePhy pass all received TPC values to LteUePowerControl,
+ * what is a part of Closed Loop Power Control functionality
+ */
+
+class LteUePowerControl : public Object
+{
+public:
+
+  LteUePowerControl ();
+  virtual ~LteUePowerControl ();
+
+  // inherited from Object
+  static TypeId GetTypeId (void);
+  virtual void DoInitialize (void);
+  virtual void DoDispose (void);
+
+  void SetPcmax (double value);
+  double GetPcmax ();
+
+  void SetTxPower (double value);
+  void ConfigureReferenceSignalPower (int8_t referenceSignalPower);
+
+  void SetCellId (uint16_t cellId);
+  void SetRnti (uint16_t rnti);
+
+  void SetPoNominalPusch (int16_t value);
+  void SetPoUePusch (int16_t value);
+  void SetAlpha (double value);
+
+  void SetRsrp (double value);
+  void ReportTpc (uint8_t tpc);
+
+  void CalculatePuschTxPower ();
+  void CalculatePucchTxPower ();
+  void CalculateSrsTxPower ();
+
+  double GetPuschTxPower (std::vector <int> rb);
+  double GetPucchTxPower (std::vector <int> rb);
+  double GetSrsTxPower (std::vector <int> rb);
+
+private:
+  void SetSubChannelMask (std::vector <int> mask);
+
+  double m_txPower;
+  double m_Pcmax;
+  double m_Pcmin;
+
+  double m_curPuschTxPower;
+  double m_curPucchTxPower;
+  double m_curSrsTxPower;
+
+  double m_referenceSignalPower;
+  bool m_rsrpSet;
+  double m_rsrp;
+
+  std::vector<int16_t> m_PoNominalPusch;
+  std::vector<int16_t> m_PoUePusch;
+
+  int16_t m_PsrsOffset;
+
+  uint16_t m_M_Pusch;
+  std::vector<double> m_alpha;
+  double m_pathLoss;
+  double m_deltaTF;
+
+  std::vector<int8_t> m_deltaPusch;
+  double m_fc;
+
+  uint16_t m_srsBandwidth;
+
+  bool m_closedLoop;
+  bool m_accumulationEnabled;
+
+  uint16_t m_cellId;
+  uint16_t m_rnti;
+  /**
+   * Trace information regarding Uplink TxPower
+   * uint16_t cellId, uint16_t rnti, double txPower
+   */
+  TracedCallback<uint16_t, uint16_t, double> m_reportPuschTxPower;
+  TracedCallback<uint16_t, uint16_t, double> m_reportPucchTxPower;
+  TracedCallback<uint16_t, uint16_t, double> m_reportSrsTxPower;
+
+};
+
+
+}
+
+#endif /* LTE_UE_POWER_CONTROL_H */
diff -Naur ns-3.20/src/lte/model/lte-ue-rrc.cc ns-3.21/src/lte/model/lte-ue-rrc.cc
--- ns-3.20/src/lte/model/lte-ue-rrc.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-rrc.cc	2014-09-17 20:03:14.000000000 -0700
@@ -189,6 +189,12 @@
                    UintegerValue (0), // unused, read-only attribute
                    MakeUintegerAccessor (&LteUeRrc::GetRnti),
                    MakeUintegerChecker<uint16_t> ())
+    .AddAttribute ("T300",
+                   "Timer for the RRC Connection Establishment procedure "
+                   "(i.e., the procedure is deemed as failed if it takes longer than this)",
+                   TimeValue (MilliSeconds (100)),
+                   MakeTimeAccessor (&LteUeRrc::m_t300),
+                   MakeTimeChecker ())
     .AddTraceSource ("MibReceived",
                      "trace fired upon reception of Master Information Block",
                      MakeTraceSourceAccessor (&LteUeRrc::m_mibReceivedTrace))
@@ -216,6 +222,9 @@
     .AddTraceSource ("ConnectionEstablished",
                      "trace fired upon successful RRC connection establishment",
                      MakeTraceSourceAccessor (&LteUeRrc::m_connectionEstablishedTrace))
+    .AddTraceSource ("ConnectionTimeout",
+                     "trace fired upon timeout RRC connection establishment because of T300",
+                     MakeTraceSourceAccessor (&LteUeRrc::m_connectionTimeoutTrace))
     .AddTraceSource ("ConnectionReconfiguration",
                      "trace fired upon RRC connection reconfiguration",
                      MakeTraceSourceAccessor (&LteUeRrc::m_connectionReconfigurationTrace))
@@ -487,6 +496,9 @@
         LteRrcSap::RrcConnectionRequest msg;
         msg.ueIdentity = m_imsi;
         m_rrcSapUser->SendRrcConnectionRequest (msg); 
+        m_connectionTimeout = Simulator::Schedule (m_t300,
+                                                   &LteUeRrc::ConnectionTimeout,
+                                                   this);
       }
       break;
 
@@ -796,6 +808,7 @@
           rc.raResponseWindowSize = msg.sib2.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.raResponseWindowSize;
           m_cmacSapProvider->ConfigureRach (rc);
           m_cphySapProvider->ConfigureUplink (m_ulEarfcn, m_ulBandwidth);
+          m_cphySapProvider->ConfigureReferenceSignalPower(msg.sib2.radioResourceConfigCommon.pdschConfigCommon.referenceSignalPower);
           if (m_state == IDLE_WAIT_SIB2)
             {
               NS_ASSERT (m_connectionPending);
@@ -821,6 +834,7 @@
     case IDLE_CONNECTING:
       {
         ApplyRadioResourceConfigDedicated (msg.radioResourceConfigDedicated);
+        m_connectionTimeout.Cancel ();
         SwitchToState (CONNECTED_NORMALLY);
         LteRrcSap::RrcConnectionSetupCompleted msg2;
         msg2.rrcTransactionIdentifier = msg.rrcTransactionIdentifier;
@@ -964,8 +978,12 @@
 LteUeRrc::DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg)
 {
   NS_LOG_FUNCTION (this);
-  m_cmacSapProvider->Reset ();
+  m_connectionTimeout.Cancel ();
+
+  m_cmacSapProvider->Reset ();       // reset the MAC
+  m_hasReceivedSib2 = false;         // invalidate the previously received SIB2
   SwitchToState (IDLE_CAMPED_NORMALLY);
+  m_asSapUser->NotifyConnectionFailed ();  // inform upper layer
 }
 
 
@@ -1085,7 +1103,7 @@
 {
   NS_LOG_FUNCTION (this);
   const struct LteRrcSap::PhysicalConfigDedicated& pcd = rrcd.physicalConfigDedicated;
-  
+
   if (pcd.haveAntennaInfoDedicated)
     {
       m_cphySapProvider->SetTransmissionMode (pcd.antennaInfo.transmissionMode);
@@ -1095,6 +1113,12 @@
       m_cphySapProvider->SetSrsConfigurationIndex (pcd.soundingRsUlConfigDedicated.srsConfigIndex);
     }
 
+  if (pcd.havePdschConfigDedicated)
+    {
+      // update PdschConfigDedicated (i.e. P_A value)
+	  m_pdschConfigDedicated = pcd.pdschConfigDedicated;
+   }
+
   std::list<LteRrcSap::SrbToAddMod>::const_iterator stamIt = rrcd.srbToAddModList.begin ();
   if (stamIt != rrcd.srbToAddModList.end ())
     {
@@ -2728,6 +2752,17 @@
 }
 
 void
+LteUeRrc::ConnectionTimeout ()
+{
+  NS_LOG_FUNCTION (this << m_imsi);
+  m_cmacSapProvider->Reset ();       // reset the MAC
+  m_hasReceivedSib2 = false;         // invalidate the previously received SIB2
+  SwitchToState (IDLE_CAMPED_NORMALLY);
+  m_connectionTimeoutTrace (m_imsi, m_cellId, m_rnti);
+  m_asSapUser->NotifyConnectionFailed ();  // inform upper layer
+}
+
+void
 LteUeRrc::DisposeOldSrb1 ()
 {
   NS_LOG_FUNCTION (this);
@@ -2749,7 +2784,7 @@
   NS_LOG_FUNCTION (this << ToString (newState));
   State oldState = m_state;
   m_state = newState;
-  NS_LOG_INFO (this << "IMSI " << m_imsi << " RNTI " << m_rnti << " UeRrc "
+  NS_LOG_INFO (this << " IMSI " << m_imsi << " RNTI " << m_rnti << " UeRrc "
                     << ToString (oldState) << " --> " << ToString (newState));
   m_stateTransitionTrace (m_imsi, m_cellId, m_rnti, oldState, newState);
 
diff -Naur ns-3.20/src/lte/model/lte-ue-rrc.h ns-3.21/src/lte/model/lte-ue-rrc.h
--- ns-3.20/src/lte/model/lte-ue-rrc.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/lte-ue-rrc.h	2014-09-17 20:03:14.000000000 -0700
@@ -501,6 +501,8 @@
 
   uint8_t m_lastRrcTransactionIdentifier;
 
+  LteRrcSap::PdschConfigDedicated m_pdschConfigDedicated;
+
   uint8_t m_dlBandwidth; /**< downlink bandwidth in RBs */
   uint8_t m_ulBandwidth; /**< uplink bandwidth in RBs */
 
@@ -526,6 +528,8 @@
   //             imsi      cellId    rnti
   TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionEstablishedTrace;
   //             imsi      cellId    rnti
+  TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionTimeoutTrace;
+  //             imsi      cellId    rnti
   TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionReconfigurationTrace;
   //             imsi      cellId    rnti      targetCellId
   TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> m_handoverStartTrace;
@@ -796,6 +800,25 @@
    */
   void CancelLeavingTrigger (uint8_t measId, uint16_t cellId);
 
+  /**
+   * \brief Timer for RRC connection establishment procedure.
+   *
+   * Section 7.3 of 3GPP TS 36.331.
+   */
+  Time m_t300;
+
+  /**
+   * \brief Invokes ConnectionEstablishmentTimeout() if RRC connection
+   *        establishment procedure for this UE takes longer than T300.
+   */
+  EventId m_connectionTimeout;
+
+  /**
+   * \brief Invoked after timer T300 expires, notifying upper layers that RRC
+   *        connection establishment procedure has failed.
+   */
+  void ConnectionTimeout ();
+
 }; // end of class LteUeRrc
 
 
diff -Naur ns-3.20/src/lte/model/pf-ff-mac-scheduler.cc ns-3.21/src/lte/model/pf-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/pf-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/pf-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -30,6 +30,7 @@
 #include <cfloat>
 #include <set>
 
+
 NS_LOG_COMPONENT_DEFINE ("PfFfMacScheduler");
 
 namespace ns3 {
@@ -221,6 +222,8 @@
   m_amc = CreateObject <LteAmc> ();
   m_cschedSapProvider = new PfSchedulerMemberCschedSapProvider (this);
   m_schedSapProvider = new PfSchedulerMemberSchedSapProvider (this);
+  m_ffrSapProvider = 0;
+  m_ffrSapUser = new MemberLteFfrSapUser<PfFfMacScheduler> (this);
 }
 
 PfFfMacScheduler::~PfFfMacScheduler ()
@@ -241,6 +244,7 @@
   m_ulHarqProcessesDciBuffer.clear ();
   delete m_cschedSapProvider;
   delete m_schedSapProvider;
+  delete m_ffrSapUser;
 }
 
 TypeId
@@ -295,6 +299,18 @@
 }
 
 void
+PfFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+PfFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 PfFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -405,7 +421,7 @@
 PfFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
-  
+
   m_uesTxMode.erase (params.m_rnti);
   m_dlHarqCurrentProcessId.erase (params.m_rnti);
   m_dlHarqProcessesStatus.erase  (params.m_rnti);
@@ -600,14 +616,14 @@
   NS_LOG_FUNCTION (this);
 
   std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itTimers;
-  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers ++)
+  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers++)
     {
       for (uint16_t i = 0; i < HARQ_PROC_NUM; i++)
         {
           if ((*itTimers).second.at (i) == HARQ_DL_TIMEOUT)
             {
               // reset HARQ process
-              
+
               NS_LOG_DEBUG (this << " Reset HARQ proc " << i << " for RNTI " << (*itTimers).first);
               std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find ((*itTimers).first);
               if (itStat == m_dlHarqProcessesStatus.end ())
@@ -623,7 +639,7 @@
             }
         }
     }
-  
+
 }
 
 
@@ -647,6 +663,16 @@
   uint16_t rbgAllocatedNum = 0;
   std::set <uint16_t> rntiAllocated;
   rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+
+  rbgMap = m_ffrSapProvider->GetAvailableDlRbg ();
+  for (std::vector<bool>::iterator it = rbgMap.begin (); it != rbgMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbgAllocatedNum++;
+        }
+    }
+
   FfMacSchedSapUser::SchedDlConfigIndParameters ret;
 
   //   update UL HARQ proc id
@@ -658,8 +684,48 @@
 
 
   // RACH Allocation
+  uint16_t rbAllocatedNum = 0;
+  std::vector <bool> ulRbMap;
+  ulRbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  ulRbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+  uint8_t maxContinuousUlBandwidth = 0;
+  uint8_t tmpMinBandwidth = 0;
+  uint16_t ffrRbStartOffset = 0;
+  uint16_t tmpFfrRbStartOffset = 0;
+  uint16_t index = 0;
+
+  for (std::vector<bool>::iterator it = ulRbMap.begin (); it != ulRbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+          if (tmpMinBandwidth > maxContinuousUlBandwidth)
+            {
+              maxContinuousUlBandwidth = tmpMinBandwidth;
+              ffrRbStartOffset = tmpFfrRbStartOffset;
+            }
+          tmpMinBandwidth = 0;
+        }
+      else
+        {
+          if (tmpMinBandwidth == 0)
+            {
+              tmpFfrRbStartOffset = index;
+            }
+          tmpMinBandwidth++;
+        }
+      index++;
+    }
+
+  if (tmpMinBandwidth > maxContinuousUlBandwidth)
+    {
+      maxContinuousUlBandwidth = tmpMinBandwidth;
+      ffrRbStartOffset = tmpFfrRbStartOffset;
+    }
+
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
   uint16_t rbStart = 0;
+  rbStart = ffrRbStartOffset;
   std::vector <struct RachListElement_s>::iterator itRach;
   for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
     {
@@ -674,7 +740,7 @@
       uint16_t rbLen = 1;
       uint16_t tbSizeBits = 0;
       // find lowest TB size that fits UL grant estimated size
-      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < (ffrRbStartOffset + maxContinuousUlBandwidth)))
         {
           rbLen++;
           tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
@@ -696,7 +762,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
       
       if (m_harqOn == true)
         {
@@ -736,6 +801,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
       
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -881,7 +947,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -899,7 +965,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1019,18 +1085,21 @@
           double rcqiMax = 0.0;
           for (it = m_flowStatsDl.begin (); it != m_flowStatsDl.end (); it++)
             {
+              if ((m_ffrSapProvider->IsDlRbgAvailableForUe (i, (*it).first)) == false)
+                continue;
+
               std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*it).first);
               if ((itRnti != rntiAllocated.end ())||(!HarqProcessAvailability ((*it).first)))
                 {
                   // UE already allocated for HARQ or without HARQ process available -> drop it
                   if (itRnti != rntiAllocated.end ())
-                  {
-                    NS_LOG_DEBUG (this << " RNTI discared for HARQ tx" << (uint16_t)(*it).first);
-                  }
+                    {
+                      NS_LOG_DEBUG (this << " RNTI discared for HARQ tx" << (uint16_t)(*it).first);
+                    }
                   if (!HarqProcessAvailability ((*it).first))
-                  {
-                    NS_LOG_DEBUG (this << " RNTI discared for HARQ id" << (uint16_t)(*it).first);
-                  }
+                    {
+                      NS_LOG_DEBUG (this << " RNTI discared for HARQ id" << (uint16_t)(*it).first);
+                    }
                   continue;
                 }
               std::map <uint16_t,SbMeasResult_s>::iterator itCqi;
@@ -1263,6 +1332,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = m_ffrSapProvider->GetTpc ((*itMap).first);
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1330,7 +1401,7 @@
   NS_LOG_FUNCTION (this);
 
   m_rachList = params.m_rachList;
-  
+
   return;
 }
 
@@ -1338,6 +1409,7 @@
 PfFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportDlCqiInfo (params);
 
   for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
     {
@@ -1432,6 +1504,7 @@
   NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
 
   RefreshUlCqiMaps ();
+  m_ffrSapProvider->ReportUlCqiInfo (m_ueCqi);
 
   // Generate RBs map
   FfMacSchedSapUser::SchedUlConfigIndParameters ret;
@@ -1446,6 +1519,19 @@
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
 
   rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  rbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+
+  for (std::vector<bool>::iterator it = rbMap.begin (); it != rbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ffrSapProvider->GetMinContinuousUlBandwidth ();
+  uint8_t ffrUlBandwidth = m_cschedCellConfig.m_ulBandwidth - rbAllocatedNum;
+
   // remove RACH allocation
   for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
     {
@@ -1462,7 +1548,7 @@
       //   Process UL HARQ feedback
 
       for (uint16_t i = 0; i < params.m_ulInfoList.size (); i++)
-        {        
+        {
           if (params.m_ulInfoList.at (i).m_receptionStatus == UlInfoListElement_s::NotOk)
             {
               // retx correspondent block: retrieve the UL-DCI
@@ -1525,7 +1611,7 @@
               ret.m_dciList.push_back (dci);
               rntiAllocated.insert (dci.m_rnti);
             }
-            else
+          else
             {
               NS_LOG_INFO (this << " HARQ-ACK feedback from RNTI " << params.m_ulInfoList.at (i).m_rnti);
             }
@@ -1552,17 +1638,20 @@
           m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
           m_schedSapUser->SchedUlConfigInd (ret);
         }
-        
+
       return;  // no flows to be scheduled
     }
 
 
   // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
-  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t tempRbPerFlow = (ffrUlBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t rbPerFlow = (minContinuousUlBandwidth < tempRbPerFlow) ? minContinuousUlBandwidth : tempRbPerFlow;
+
   if (rbPerFlow < 3)
     {
       rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
     }
+
   int rbAllocated = 0;
 
   std::map <uint16_t, pfsFlowPerf_t>::iterator itStats;
@@ -1608,15 +1697,16 @@
           if (rbPerFlow < 3)
             {
               // terminate allocation
-              rbPerFlow = 0;      
+              rbPerFlow = 0;
             }
         }
 
+      rbAllocated = 0;
       UlDciListElement_s uldci;
       uldci.m_rnti = (*it).first;
       uldci.m_rbLen = rbPerFlow;
       bool allocated = false;
-      NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
+
       while ((!allocated)&&((rbAllocated + rbPerFlow - m_cschedCellConfig.m_ulBandwidth) < 1) && (rbPerFlow != 0))
         {
           // check availability
@@ -1628,9 +1718,15 @@
                   free = false;
                   break;
                 }
+              if ((m_ffrSapProvider->IsUlRbgAvailableForUe (j, (*it).first)) == false)
+                {
+                  free = false;
+                  break;
+                }
             }
           if (free)
             {
+              NS_LOG_INFO (this << "RNTI: "<< (*it).first<< " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
               uldci.m_rbStart = rbAllocated;
 
               for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
@@ -1652,7 +1748,7 @@
               if (rbPerFlow < 3)
                 {
                   // terminate allocation
-                  rbPerFlow = 0;                 
+                  rbPerFlow = 0;
                 }
             }
         }
@@ -1660,12 +1756,13 @@
         {
           // unable to allocate new resource: finish scheduling
           m_nextRntiUl = (*it).first;
-          if (ret.m_dciList.size () > 0)
-            {
-              m_schedSapUser->SchedUlConfigInd (ret);
-            }
-          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
-          return;
+//          if (ret.m_dciList.size () > 0)
+//            {
+//              m_schedSapUser->SchedUlConfigInd (ret);
+//            }
+//          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+//          return;
+          break;
         }
 
 
@@ -1700,8 +1797,8 @@
 
           // translate SINR -> cqi: WILD ACK: same as DL
           double s = log2 ( 1 + (
-                                 std::pow (10, minSinr / 10 )  /
-                                 ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
+                              std::pow (10, minSinr / 10 )  /
+                              ( (-std::log (5.0 * 0.00005 )) / 1.5) ));
           cqi = m_amc->GetCqiFromSpectralEfficiency (s);
           if (cqi == 0)
             {
@@ -1754,6 +1851,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
@@ -1841,7 +1945,7 @@
               uint8_t bsrId = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (lcg);
               buffer += BufferSizeLevelBsr::BsrId2BufferSize (bsrId);
             }
-          
+
           uint16_t rnti = params.m_macCeList.at (i).m_rnti;
           NS_LOG_LOGIC (this << "RNTI=" << rnti << " buffer=" << buffer);
           it = m_ceBsrRxed.find (rnti);
@@ -1865,6 +1969,8 @@
 PfFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportUlCqiInfo (params);
+
 // retrieve the allocation for this subframe
   switch (m_ulCqiFilter)
     {
@@ -1949,7 +2055,7 @@
       break;
     case UlCqi_s::SRS:
       {
-        NS_LOG_DEBUG (this << " Collect SRS CQIs of Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
+    	 NS_LOG_DEBUG (this << " Collect SRS CQIs of Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
         // get the RNTI from vendor specific parameters
         uint16_t rnti = 0;
         NS_ASSERT (params.m_vendorSpecificList.size () > 0);
@@ -2106,7 +2212,7 @@
       // Update status queue
       if (((*it).second.m_rlcStatusPduSize > 0) && (size >= (*it).second.m_rlcStatusPduSize))
         {
-           (*it).second.m_rlcStatusPduSize = 0;
+          (*it).second.m_rlcStatusPduSize = 0;
         }
       else if (((*it).second.m_rlcRetransmissionQueueSize > 0) && (size >= (*it).second.m_rlcRetransmissionQueueSize))
         {
@@ -2121,7 +2227,7 @@
               // overestimate RLC overhead rather than
               // underestimate it and risk unneeded
               // segmentation which increases delay 
-              rlcOverhead = 4;                                  
+              rlcOverhead = 4;
             }
           else
             {
@@ -2134,7 +2240,7 @@
               (*it).second.m_rlcTransmissionQueueSize = 0;
             }
           else
-            {                    
+            {
               (*it).second.m_rlcTransmissionQueueSize -= size - rlcOverhead;
             }
         }
diff -Naur ns-3.20/src/lte/model/pf-ff-mac-scheduler.h ns-3.21/src/lte/model/pf-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/pf-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/pf-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -29,7 +29,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -93,6 +93,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class PfSchedulerMemberCschedSapProvider;
   friend class PfSchedulerMemberSchedSapProvider;
 
@@ -239,6 +243,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/pss-ff-mac-scheduler.cc ns-3.21/src/lte/model/pss-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/pss-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/pss-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -225,6 +225,8 @@
   m_amc = CreateObject <LteAmc> ();
   m_cschedSapProvider = new PssSchedulerMemberCschedSapProvider (this);
   m_schedSapProvider = new PssSchedulerMemberSchedSapProvider (this);
+  m_ffrSapProvider = 0;
+  m_ffrSapUser = new MemberLteFfrSapUser<PssFfMacScheduler> (this);
 }
 
 PssFfMacScheduler::~PssFfMacScheduler ()
@@ -245,6 +247,7 @@
   m_ulHarqProcessesDciBuffer.clear ();
   delete m_cschedSapProvider;
   delete m_schedSapProvider;
+  delete m_ffrSapUser;
 }
 
 TypeId
@@ -309,6 +312,18 @@
 }
 
 void
+PssFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+PssFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 PssFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -676,6 +691,16 @@
   uint16_t rbgAllocatedNum = 0;
   std::set <uint16_t> rntiAllocated;
   rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+
+  rbgMap = m_ffrSapProvider->GetAvailableDlRbg ();
+  for (std::vector<bool>::iterator it = rbgMap.begin (); it != rbgMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbgAllocatedNum++;
+        }
+    }
+
   FfMacSchedSapUser::SchedDlConfigIndParameters ret;
 
   //   update UL HARQ proc id
@@ -686,8 +711,48 @@
     }
 
   // RACH Allocation
+  uint16_t rbAllocatedNum = 0;
+  std::vector <bool> ulRbMap;
+  ulRbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  ulRbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+  uint8_t maxContinuousUlBandwidth = 0;
+  uint8_t tmpMinBandwidth = 0;
+  uint16_t ffrRbStartOffset = 0;
+  uint16_t tmpFfrRbStartOffset = 0;
+  uint16_t index = 0;
+
+  for (std::vector<bool>::iterator it = ulRbMap.begin (); it != ulRbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+          if (tmpMinBandwidth > maxContinuousUlBandwidth)
+            {
+              maxContinuousUlBandwidth = tmpMinBandwidth;
+              ffrRbStartOffset = tmpFfrRbStartOffset;
+            }
+          tmpMinBandwidth = 0;
+        }
+      else
+        {
+          if (tmpMinBandwidth == 0)
+            {
+              tmpFfrRbStartOffset = index;
+            }
+          tmpMinBandwidth++;
+        }
+      index++;
+    }
+
+  if (tmpMinBandwidth > maxContinuousUlBandwidth)
+    {
+      maxContinuousUlBandwidth = tmpMinBandwidth;
+      ffrRbStartOffset = tmpFfrRbStartOffset;
+    }
+
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
   uint16_t rbStart = 0;
+  rbStart = ffrRbStartOffset;
   std::vector <struct RachListElement_s>::iterator itRach;
   for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
     {
@@ -702,7 +767,7 @@
       uint16_t rbLen = 1;
       uint16_t tbSizeBits = 0;
       // find lowest TB size that fits UL grant estimated size
-      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < (ffrRbStartOffset + maxContinuousUlBandwidth)))
         {
           rbLen++;
           tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
@@ -724,7 +789,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -764,6 +828,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -909,7 +974,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -927,7 +992,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1233,7 +1298,9 @@
                 {
                   if (rbgMap.at (i) == true)
                     continue;
-        
+                  if ((m_ffrSapProvider->IsDlRbgAvailableForUe (i, (*it).first)) == false)
+                    continue;
+
                   std::map <uint16_t, pssFlowPerf_t>::iterator itMax = tdUeSet.end ();
                   double metricMax = 0.0;
                   for (it = tdUeSet.begin (); it != tdUeSet.end (); it++)
@@ -1329,6 +1396,9 @@
                 {
                   if (rbgMap.at (i) == true)
                     continue;
+
+                  if ((m_ffrSapProvider->IsDlRbgAvailableForUe (i, (*it).first)) == false)
+                    continue;
         
                   std::map <uint16_t, pssFlowPerf_t>::iterator itMax = tdUeSet.end ();
                   double metricMax = 0.0;
@@ -1563,6 +1633,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = m_ffrSapProvider->GetTpc ((*itMap).first);
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1644,6 +1716,7 @@
 PssFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportDlCqiInfo (params);
 
   for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
     {
@@ -1738,6 +1811,7 @@
   NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
 
   RefreshUlCqiMaps ();
+  m_ffrSapProvider->ReportUlCqiInfo (m_ueCqi);
 
   // Generate RBs map
   FfMacSchedSapUser::SchedUlConfigIndParameters ret;
@@ -1752,6 +1826,21 @@
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
 
   rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+
+  rbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+
+  for (std::vector<bool>::iterator it = rbMap.begin (); it != rbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ffrSapProvider->GetMinContinuousUlBandwidth ();
+  uint8_t ffrUlBandwidth = m_cschedCellConfig.m_ulBandwidth - rbAllocatedNum;
+
+
   // remove RACH allocation
   for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
     {
@@ -1863,7 +1952,9 @@
 
 
   // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
-  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t tempRbPerFlow = (ffrUlBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t rbPerFlow = (minContinuousUlBandwidth < tempRbPerFlow) ? minContinuousUlBandwidth : tempRbPerFlow;
+
   if (rbPerFlow < 3)
     {
       rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
@@ -1917,6 +2008,7 @@
             }
         }
 
+      rbAllocated = 0;
       UlDciListElement_s uldci;
       uldci.m_rnti = (*it).first;
       uldci.m_rbLen = rbPerFlow;
@@ -1933,9 +2025,15 @@
                   free = false;
                   break;
                 }
+              if ((m_ffrSapProvider->IsUlRbgAvailableForUe (j, (*it).first)) == false)
+                {
+                  free = false;
+                  break;
+                }
             }
           if (free)
             {
+        	  NS_LOG_INFO (this << "RNTI: "<< (*it).first<< " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
               uldci.m_rbStart = rbAllocated;
 
               for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
@@ -1964,13 +2062,14 @@
       if (!allocated)
         {
           // unable to allocate new resource: finish scheduling
-          m_nextRntiUl = (*it).first;
-          if (ret.m_dciList.size () > 0)
-            {
-              m_schedSapUser->SchedUlConfigInd (ret);
-            }
-          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
-          return;
+//          m_nextRntiUl = (*it).first;
+//          if (ret.m_dciList.size () > 0)
+//            {
+//              m_schedSapUser->SchedUlConfigInd (ret);
+//            }
+//          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+//          return;
+    	  break;
         }
 
 
@@ -2059,6 +2158,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/pss-ff-mac-scheduler.h ns-3.21/src/lte/model/pss-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/pss-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/pss-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -102,6 +102,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class PssSchedulerMemberCschedSapProvider;
   friend class PssSchedulerMemberSchedSapProvider;
 
@@ -248,6 +252,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/rem-spectrum-phy.cc ns-3.21/src/lte/model/rem-spectrum-phy.cc
--- ns-3.20/src/lte/model/rem-spectrum-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/rem-spectrum-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -38,10 +38,12 @@
 NS_OBJECT_ENSURE_REGISTERED (RemSpectrumPhy);
 
 RemSpectrumPhy::RemSpectrumPhy ()
-  : m_mobility (0),    
+  : m_mobility (0),
     m_referenceSignalPower (0),
     m_sumPower (0),
-    m_active (true)
+    m_active (true),
+    m_useDataChannel (false),
+    m_rbId (-1)
 {
   NS_LOG_FUNCTION (this);
 }
@@ -67,7 +69,7 @@
   static TypeId tid = TypeId ("ns3::RemSpectrumPhy")
     .SetParent<SpectrumPhy> ()
     .AddConstructor<RemSpectrumPhy> ()
-    ;
+  ;
   return tid;
 }
 
@@ -125,15 +127,50 @@
 
   if (m_active)
     {
-      Ptr<LteSpectrumSignalParametersDlCtrlFrame> lteDlCtrlRxParams = DynamicCast<LteSpectrumSignalParametersDlCtrlFrame> (params);
-      if (lteDlCtrlRxParams!=0)
+      if (m_useDataChannel)
         {
-          double power = Integral (*(params->psd));
-                               
-          m_sumPower += power;
-          if (power > m_referenceSignalPower)
+          Ptr<LteSpectrumSignalParametersDataFrame> lteDlDataRxParams = DynamicCast<LteSpectrumSignalParametersDataFrame> (params);
+          if (lteDlDataRxParams != 0)
             {
-              m_referenceSignalPower = power;
+              NS_LOG_DEBUG ("StartRx data");
+              double power = 0;
+              if (m_rbId >= 0)
+                {
+                  power = (*(params->psd))[m_rbId] * 180000;
+                }
+              else
+                {
+                  power = Integral (*(params->psd));
+                }
+
+              m_sumPower += power;
+              if (power > m_referenceSignalPower)
+                {
+                  m_referenceSignalPower = power;
+                }
+            }
+        }
+      else
+        {
+          Ptr<LteSpectrumSignalParametersDlCtrlFrame> lteDlCtrlRxParams = DynamicCast<LteSpectrumSignalParametersDlCtrlFrame> (params);
+          if (lteDlCtrlRxParams != 0)
+            {
+              NS_LOG_DEBUG ("StartRx control");
+              double power = 0;
+              if (m_rbId >= 0)
+                {
+                  power = (*(params->psd))[m_rbId] * 180000;
+                }
+              else
+                {
+                  power = Integral (*(params->psd));
+                }
+
+              m_sumPower += power;
+              if (power > m_referenceSignalPower)
+                {
+                  m_referenceSignalPower = power;
+                }
             }
         }
     }
@@ -171,5 +208,17 @@
   m_sumPower = 0;
 }
 
+void
+RemSpectrumPhy::SetUseDataChannel (bool value)
+{
+  m_useDataChannel = value;
+}
+
+void
+RemSpectrumPhy::SetRbId (int32_t rbId)
+{
+  m_rbId = rbId;
+}
+
 
 } // namespace ns3
diff -Naur ns-3.20/src/lte/model/rem-spectrum-phy.h ns-3.21/src/lte/model/rem-spectrum-phy.h
--- ns-3.20/src/lte/model/rem-spectrum-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/rem-spectrum-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -82,9 +82,9 @@
    */
   double GetSinr (double noisePower);
 
-  /** 
+  /**
    * make StartRx a no-op from now on, and mark instance as inactive
-   * 
+   *
    */
   void Deactivate ();
 
@@ -100,6 +100,20 @@
    */
   void Reset ();
 
+  /**
+   * set usage of DataChannel
+   *
+   * \param value if true, data channel signal will be processed, control signal otherwise
+   */
+  void SetUseDataChannel (bool value);
+
+  /**
+   * set RB Id
+   *
+   * \param rbId Resource Block Id which will be processed
+   */
+  void SetRbId (int32_t rbId);
+
 private:
   Ptr<MobilityModel> m_mobility;
   Ptr<const SpectrumModel> m_rxSpectrumModel;
@@ -109,6 +123,9 @@
 
   bool m_active;
 
+  bool m_useDataChannel;
+  int32_t m_rbId;
+
 };
 
 
diff -Naur ns-3.20/src/lte/model/rr-ff-mac-scheduler.cc ns-3.21/src/lte/model/rr-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/rr-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/rr-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -298,6 +298,18 @@
 }
 
 void
+RrFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+RrFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 RrFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -663,7 +675,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -703,6 +714,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -847,7 +859,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -865,7 +877,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1181,6 +1193,9 @@
           newDci.m_ndi.push_back (1);
           newDci.m_rv.push_back (0);
         }
+
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
       if (m_harqOn == true)
         {
@@ -1582,7 +1597,15 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
+        
       NS_LOG_INFO (this << " UL Allocation - UE " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " harqId " << (uint16_t)harqId);
 
       it++;
diff -Naur ns-3.20/src/lte/model/rr-ff-mac-scheduler.h ns-3.21/src/lte/model/rr-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/rr-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/rr-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -29,6 +29,7 @@
 #include <map>
 #include <ns3/lte-common.h>
 #include <ns3/lte-amc.h>
+#include <ns3/lte-ffr-sap.h>
 
 #define HARQ_PROC_NUM 8
 #define HARQ_DL_TIMEOUT 11
@@ -80,6 +81,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class RrSchedulerMemberCschedSapProvider;
   friend class RrSchedulerMemberSchedSapProvider;
 
@@ -205,6 +210,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.cc ns-3.21/src/lte/model/tdbet-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdbet-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -296,6 +296,18 @@
 }
 
 void
+TdBetFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+TdBetFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 TdBetFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -696,7 +708,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -736,6 +747,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -881,7 +893,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -899,7 +911,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1162,6 +1174,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1652,6 +1666,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.h ns-3.21/src/lte/model/tdbet-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/tdbet-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdbet-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -94,6 +94,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class TdBetSchedulerMemberCschedSapProvider;
   friend class TdBetSchedulerMemberSchedSapProvider;
 
@@ -240,6 +244,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.cc ns-3.21/src/lte/model/tdmt-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdmt-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -295,6 +295,18 @@
 }
 
 void
+TdMtFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+TdMtFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 TdMtFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -685,7 +697,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -725,6 +736,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -870,7 +882,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -888,7 +900,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1186,6 +1198,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1648,6 +1662,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.h ns-3.21/src/lte/model/tdmt-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/tdmt-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdmt-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -31,7 +31,7 @@
 #include <set>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -86,6 +86,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class TdMtSchedulerMemberCschedSapProvider;
   friend class TdMtSchedulerMemberSchedSapProvider;
 
@@ -232,6 +236,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.cc ns-3.21/src/lte/model/tdtbfq-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdtbfq-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -223,6 +223,8 @@
   m_amc = CreateObject <LteAmc> ();
   m_cschedSapProvider = new TdTbfqSchedulerMemberCschedSapProvider (this);
   m_schedSapProvider = new TdTbfqSchedulerMemberSchedSapProvider (this);
+  m_ffrSapProvider = 0;
+  m_ffrSapUser = new MemberLteFfrSapUser<TdTbfqFfMacScheduler> (this);
 }
 
 TdTbfqFfMacScheduler::~TdTbfqFfMacScheduler ()
@@ -243,6 +245,7 @@
   m_ulHarqProcessesDciBuffer.clear ();
   delete m_cschedSapProvider;
   delete m_schedSapProvider;
+  delete m_ffrSapUser;
 }
 
 TypeId
@@ -318,6 +321,18 @@
 }
 
 void
+TdTbfqFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+TdTbfqFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 TdTbfqFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -692,6 +707,16 @@
   uint16_t rbgAllocatedNum = 0;
   std::set <uint16_t> rntiAllocated;
   rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
+
+  rbgMap = m_ffrSapProvider->GetAvailableDlRbg ();
+  for (std::vector<bool>::iterator it = rbgMap.begin (); it != rbgMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbgAllocatedNum++;
+        }
+    }
+
   FfMacSchedSapUser::SchedDlConfigIndParameters ret;
 
   //   update UL HARQ proc id
@@ -702,8 +727,48 @@
     }
 
   // RACH Allocation
+  uint16_t rbAllocatedNum = 0;
+  std::vector <bool> ulRbMap;
+  ulRbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+  ulRbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+  uint8_t maxContinuousUlBandwidth = 0;
+  uint8_t tmpMinBandwidth = 0;
+  uint16_t ffrRbStartOffset = 0;
+  uint16_t tmpFfrRbStartOffset = 0;
+  uint16_t index = 0;
+
+  for (std::vector<bool>::iterator it = ulRbMap.begin (); it != ulRbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+          if (tmpMinBandwidth > maxContinuousUlBandwidth)
+            {
+              maxContinuousUlBandwidth = tmpMinBandwidth;
+              ffrRbStartOffset = tmpFfrRbStartOffset;
+            }
+          tmpMinBandwidth = 0;
+        }
+      else
+        {
+          if (tmpMinBandwidth == 0)
+            {
+              tmpFfrRbStartOffset = index;
+            }
+          tmpMinBandwidth++;
+        }
+      index++;
+    }
+
+  if (tmpMinBandwidth > maxContinuousUlBandwidth)
+    {
+      maxContinuousUlBandwidth = tmpMinBandwidth;
+      ffrRbStartOffset = tmpFfrRbStartOffset;
+    }
+
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
   uint16_t rbStart = 0;
+  rbStart = ffrRbStartOffset;
   std::vector <struct RachListElement_s>::iterator itRach;
   for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
     {
@@ -718,7 +783,7 @@
       uint16_t rbLen = 1;
       uint16_t tbSizeBits = 0;
       // find lowest TB size that fits UL grant estimated size
-      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
+      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < (ffrRbStartOffset + maxContinuousUlBandwidth)))
         {
           rbLen++;
           tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
@@ -740,7 +805,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -780,6 +844,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -925,7 +990,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -943,7 +1008,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1128,6 +1193,9 @@
           if ( rbgMap.at (i) == true) // this RBG is allocated in RACH procedure
             continue;
 
+          if ((m_ffrSapProvider->IsDlRbgAvailableForUe (i, (*itMax).first)) == false)
+            continue;
+
           tempMap.push_back (i);
           rbgMap.at (i) = true;
         }
@@ -1266,6 +1334,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = m_ffrSapProvider->GetTpc ((*itMap).first);
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1331,6 +1401,7 @@
 TdTbfqFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
+  m_ffrSapProvider->ReportDlCqiInfo (params);
 
   for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
     {
@@ -1425,6 +1496,7 @@
   NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
 
   RefreshUlCqiMaps ();
+  m_ffrSapProvider->ReportUlCqiInfo (m_ueCqi);
 
   // Generate RBs map
   FfMacSchedSapUser::SchedUlConfigIndParameters ret;
@@ -1439,6 +1511,20 @@
   m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
 
   rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
+
+  rbMap = m_ffrSapProvider->GetAvailableUlRbg ();
+
+  for (std::vector<bool>::iterator it = rbMap.begin (); it != rbMap.end (); it++)
+    {
+      if ((*it) == true )
+        {
+          rbAllocatedNum++;
+        }
+    }
+
+  uint8_t minContinuousUlBandwidth = m_ffrSapProvider->GetMinContinuousUlBandwidth ();
+  uint8_t ffrUlBandwidth = m_cschedCellConfig.m_ulBandwidth - rbAllocatedNum;
+
   // remove RACH allocation
   for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
     {
@@ -1550,7 +1636,9 @@
 
 
   // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
-  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t tempRbPerFlow = (ffrUlBandwidth) / (nflows + rntiAllocated.size ());
+  uint16_t rbPerFlow = (minContinuousUlBandwidth < tempRbPerFlow) ? minContinuousUlBandwidth : tempRbPerFlow;
+
   if (rbPerFlow < 3)
     {
       rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
@@ -1604,6 +1692,7 @@
             }
         }
 
+      rbAllocated = 0;
       UlDciListElement_s uldci;
       uldci.m_rnti = (*it).first;
       uldci.m_rbLen = rbPerFlow;
@@ -1620,9 +1709,15 @@
                   free = false;
                   break;
                 }
+              if ((m_ffrSapProvider->IsUlRbgAvailableForUe (j, (*it).first)) == false)
+                {
+                  free = false;
+                  break;
+                }
             }
           if (free)
             {
+        	  NS_LOG_INFO (this << "RNTI: "<< (*it).first<< " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow << " flows " << nflows);
               uldci.m_rbStart = rbAllocated;
 
               for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
@@ -1651,13 +1746,14 @@
       if (!allocated)
         {
           // unable to allocate new resource: finish scheduling
-          m_nextRntiUl = (*it).first;
-          if (ret.m_dciList.size () > 0)
-            {
-              m_schedSapUser->SchedUlConfigInd (ret);
-            }
-          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
-          return;
+//          m_nextRntiUl = (*it).first;
+//          if (ret.m_dciList.size () > 0)
+//            {
+//              m_schedSapUser->SchedUlConfigInd (ret);
+//            }
+//          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
+//          return;
+    	  break;
         }
 
 
@@ -1746,6 +1842,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.h ns-3.21/src/lte/model/tdtbfq-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/tdtbfq-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tdtbfq-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,7 @@
 #include <map>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -101,6 +101,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class TdTbfqSchedulerMemberCschedSapProvider;
   friend class TdTbfqSchedulerMemberSchedSapProvider;
 
@@ -247,6 +251,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/model/tta-ff-mac-scheduler.cc ns-3.21/src/lte/model/tta-ff-mac-scheduler.cc
--- ns-3.20/src/lte/model/tta-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tta-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -295,6 +295,18 @@
 }
 
 void
+TtaFfMacScheduler::SetLteFfrSapProvider (LteFfrSapProvider* s)
+{
+  m_ffrSapProvider = s;
+}
+
+LteFfrSapUser*
+TtaFfMacScheduler::GetLteFfrSapUser ()
+{
+  return m_ffrSapUser;
+}
+
+void
 TtaFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
 {
   NS_LOG_FUNCTION (this);
@@ -685,7 +697,6 @@
         {
           m_rachAllocationMap.at (i) = (*itRach).m_rnti;
         }
-      rbStart = rbStart + rbLen;
 
       if (m_harqOn == true)
         {
@@ -725,6 +736,7 @@
           (*itDci).second.at (harqId) = uldci;
         }
 
+      rbStart = rbStart + rbLen;
       ret.m_buildRarList.push_back (newRar);
     }
   m_rachList.clear ();
@@ -870,7 +882,7 @@
                       dciRbg.at (j) = rbgId;
                       j++;
                     }
-                  rbgId++;
+                  rbgId = (rbgId + 1) % rbgNum;
                 }
               if (j == dciRbg.size ())
                 {
@@ -888,7 +900,7 @@
               else
                 {
                   // HARQ retx cannot be performed on this TTI -> store it
-                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
+                  dlInfoListUntxed.push_back (m_dlInfoListBuffered.at (i));
                   NS_LOG_INFO (this << " No resource for this retx -> buffer it");
                 }
             }
@@ -1265,6 +1277,8 @@
           newDci.m_rv.push_back (0);
         }
 
+      newDci.m_tpc = 1; //1 is mapped to 0 in Accumulated Mode and to -1 in Absolute Mode
+
       newEl.m_dci = newDci;
 
       if (m_harqOn == true)
@@ -1727,6 +1741,13 @@
               NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
             }
           (*itDci).second.at (harqId) = uldci;
+          // Update HARQ process status (RV 0)
+          std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (uldci.m_rnti);
+          if (itStat == m_ulHarqProcessesStatus.end ())
+            {
+              NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << uldci.m_rnti);
+            }
+          (*itStat).second.at (harqId) = 0;
         }
 
       NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
diff -Naur ns-3.20/src/lte/model/tta-ff-mac-scheduler.h ns-3.21/src/lte/model/tta-ff-mac-scheduler.h
--- ns-3.20/src/lte/model/tta-ff-mac-scheduler.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/model/tta-ff-mac-scheduler.h	2014-09-17 20:03:14.000000000 -0700
@@ -31,7 +31,7 @@
 #include <set>
 #include <ns3/nstime.h>
 #include <ns3/lte-amc.h>
-
+#include <ns3/lte-ffr-sap.h>
 
 // value for SINR outside the range defined by FF-API, used to indicate that there
 // is no CQI for this element
@@ -86,6 +86,10 @@
   virtual FfMacCschedSapProvider* GetFfMacCschedSapProvider ();
   virtual FfMacSchedSapProvider* GetFfMacSchedSapProvider ();
 
+  // FFR SAPs
+  virtual void SetLteFfrSapProvider (LteFfrSapProvider* s);
+  virtual LteFfrSapUser* GetLteFfrSapUser ();
+
   friend class TtaSchedulerMemberCschedSapProvider;
   friend class TtaSchedulerMemberSchedSapProvider;
 
@@ -232,6 +236,9 @@
   FfMacCschedSapProvider* m_cschedSapProvider;
   FfMacSchedSapProvider* m_schedSapProvider;
 
+  // FFR SAPs
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
 
   // Internal parameters
   FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
diff -Naur ns-3.20/src/lte/test/lte-ffr-simple.cc ns-3.21/src/lte/test/lte-ffr-simple.cc
--- ns-3.20/src/lte/test/lte-ffr-simple.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-ffr-simple.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,326 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include "lte-ffr-simple.h"
+#include <ns3/log.h>
+#include "ns3/lte-rrc-sap.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteFfrSimple");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteFfrSimple);
+
+
+LteFfrSimple::LteFfrSimple ()
+  : m_ffrSapUser (0),
+    m_ffrRrcSapUser (0),
+    m_dlOffset (0),
+    m_dlSubBand (0),
+    m_ulOffset (0),
+    m_ulSubBand (0),
+    m_measId (0),
+    m_changePdschConfigDedicated (false),
+    m_tpc (1),
+    m_tpcNum (0),
+    m_acculumatedMode (false)
+{
+  NS_LOG_FUNCTION (this);
+  m_ffrSapProvider = new MemberLteFfrSapProvider<LteFfrSimple> (this);
+  m_ffrRrcSapProvider = new MemberLteFfrRrcSapProvider<LteFfrSimple> (this);
+}
+
+
+LteFfrSimple::~LteFfrSimple ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+
+void
+LteFfrSimple::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  delete m_ffrSapProvider;
+  delete m_ffrRrcSapProvider;
+}
+
+
+TypeId
+LteFfrSimple::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::LteFfrSimple")
+    .SetParent<LteFfrAlgorithm> ()
+    .AddConstructor<LteFfrSimple> ()
+    .AddAttribute ("UlSubBandOffset",
+                   "Uplink Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrSimple::m_ulOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("UlSubBandwidth",
+                   "Uplink Transmission SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (25),
+                   MakeUintegerAccessor (&LteFfrSimple::m_ulSubBand),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlSubBandOffset",
+                   "Downlink Offset in number of Resource Block Groups",
+                   UintegerValue (0),
+                   MakeUintegerAccessor (&LteFfrSimple::m_dlOffset),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddAttribute ("DlSubBandwidth",
+                   "Downlink Transmission SubBandwidth Configuration in number of Resource Block Groups",
+                   UintegerValue (12),
+                   MakeUintegerAccessor (&LteFfrSimple::m_dlSubBand),
+                   MakeUintegerChecker<uint8_t> ())
+    .AddTraceSource ("ChangePdschConfigDedicated",
+                     "trace fired upon change of PdschConfigDedicated",
+                     MakeTraceSourceAccessor (&LteFfrSimple::m_changePdschConfigDedicatedTrace))
+  ;
+  return tid;
+}
+
+
+void
+LteFfrSimple::SetLteFfrSapUser (LteFfrSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrSapUser = s;
+}
+
+
+LteFfrSapProvider*
+LteFfrSimple::GetLteFfrSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrSapProvider;
+}
+
+void
+LteFfrSimple::SetLteFfrRrcSapUser (LteFfrRrcSapUser* s)
+{
+  NS_LOG_FUNCTION (this << s);
+  m_ffrRrcSapUser = s;
+}
+
+
+LteFfrRrcSapProvider*
+LteFfrSimple::GetLteFfrRrcSapProvider ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ffrRrcSapProvider;
+}
+
+
+void
+LteFfrSimple::DoInitialize ()
+{
+  NS_LOG_FUNCTION (this);
+  LteFfrAlgorithm::DoInitialize ();
+
+  NS_LOG_LOGIC (this << " requesting Event A4 measurements"
+                     << " (threshold = 0" << ")");
+  LteRrcSap::ReportConfigEutra reportConfig;
+  reportConfig.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
+  reportConfig.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
+  reportConfig.threshold1.range = 0;
+  reportConfig.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
+  reportConfig.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
+  m_measId = m_ffrRrcSapUser->AddUeMeasReportConfigForFfr (reportConfig);
+
+  m_pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
+}
+
+void
+LteFfrSimple::Reconfigure ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteFfrSimple::ChangePdschConfigDedicated (bool change)
+{
+  m_changePdschConfigDedicated = change;
+}
+
+void
+LteFfrSimple::SetPdschConfigDedicated (LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
+{
+  m_pdschConfigDedicated = pdschConfigDedicated;
+}
+
+void
+LteFfrSimple::SetTpc (uint32_t tpc, uint32_t num, bool acculumatedMode)
+{
+  m_tpc = tpc;
+  m_tpcNum = num;
+  m_acculumatedMode = acculumatedMode;
+}
+
+std::vector <bool>
+LteFfrSimple::DoGetAvailableDlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_dlRbgMap.empty ())
+    {
+      int rbgSize = GetRbgSize (m_dlBandwidth);
+      m_dlRbgMap.resize (m_dlBandwidth / rbgSize, true);
+
+      for (uint8_t i = m_dlOffset; i < (m_dlOffset + m_dlSubBand); i++)
+        {
+          m_dlRbgMap[i] = false;
+
+        }
+    }
+
+  return m_dlRbgMap;
+}
+
+bool
+LteFfrSimple::DoIsDlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+std::vector <bool>
+LteFfrSimple::DoGetAvailableUlRbg ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_ulRbgMap.empty ())
+    {
+      m_ulRbgMap.resize (m_ulBandwidth, true);
+
+      for (uint8_t i = m_ulOffset; i < (m_ulOffset + m_ulSubBand); i++)
+        {
+          m_ulRbgMap[i] = false;
+        }
+    }
+
+  return m_ulRbgMap;
+}
+
+bool
+LteFfrSimple::DoIsUlRbgAvailableForUe (int i, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+  return true;
+}
+
+void
+LteFfrSimple::DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteFfrSimple::DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+LteFfrSimple::DoReportUlCqiInfo (std::map <uint16_t, std::vector <double> > ulCqiMap)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+uint8_t
+LteFfrSimple::DoGetTpc (uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_acculumatedMode)
+    {
+      if (m_tpcNum > 0)
+        {
+          m_tpcNum--;
+          return m_tpc;
+        }
+      else
+        {
+          return 1;
+        }
+    }
+  else
+    {
+      return m_tpc;
+    }
+
+  return 1; // 1 is mapped to 0 for Accumulated mode, and to -1 in Absolute mode TS36.213 Table 5.1.1.1-2
+}
+
+uint8_t
+LteFfrSimple::DoGetMinContinuousUlBandwidth ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_ulBandwidth;
+}
+
+void
+LteFfrSimple::DoReportUeMeas (uint16_t rnti,
+                              LteRrcSap::MeasResults measResults)
+{
+  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
+
+  std::map<uint16_t, LteRrcSap::PdschConfigDedicated>::iterator it;
+
+  it = m_ues.find (rnti);
+
+  if (it == m_ues.end ())
+    {
+      LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+      pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
+      m_ues.insert (std::pair<uint16_t, LteRrcSap::PdschConfigDedicated> (rnti,
+                                                                          pdschConfigDedicated));
+    }
+
+  if (m_changePdschConfigDedicated)
+    {
+      UpdatePdschConfigDedicated ();
+    }
+}
+
+void
+LteFfrSimple::UpdatePdschConfigDedicated ()
+{
+  NS_LOG_FUNCTION (this);
+
+  std::map<uint16_t, LteRrcSap::PdschConfigDedicated>::iterator it;
+  for (it = m_ues.begin (); it != m_ues.end (); it++)
+    {
+      if (it->second.pa != m_pdschConfigDedicated.pa)
+        {
+          m_changePdschConfigDedicatedTrace (it->first, m_pdschConfigDedicated.pa);
+          LteRrcSap::PdschConfigDedicated pdschConfigDedicated = m_pdschConfigDedicated;
+          m_ffrRrcSapUser->SetPdschConfigDedicated (it->first, pdschConfigDedicated );
+        }
+    }
+}
+
+void
+LteFfrSimple::DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+} // end of namespace ns3
diff -Naur ns-3.20/src/lte/test/lte-ffr-simple.h ns-3.21/src/lte/test/lte-ffr-simple.h
--- ns-3.20/src/lte/test/lte-ffr-simple.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-ffr-simple.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,137 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_FFR_SIMPLE_H
+#define LTE_FFR_SIMPLE_H
+
+#include <ns3/lte-ffr-algorithm.h>
+#include <ns3/lte-ffr-sap.h>
+#include <ns3/lte-ffr-rrc-sap.h>
+#include <ns3/lte-rrc-sap.h>
+
+#include <ns3/traced-callback.h>
+#include <map>
+
+namespace ns3 {
+
+
+/**
+ * \brief Simple Frequency Reuse algorithm implementation which uses only 1 sub-band.
+ *                Used to test Downlink Power Allocation. When Simple FR receives UE measurements
+ *                it immediately call functions to change PdschConfigDedicated (i.e. P_A) value for
+ *                this UE.
+ */
+class LteFfrSimple : public LteFfrAlgorithm
+{
+public:
+  /**
+   * \brief Creates a trivial ffr algorithm instance.
+   */
+  LteFfrSimple ();
+
+  virtual ~LteFfrSimple ();
+
+  // inherited from Object
+  static TypeId GetTypeId ();
+
+  void ChangePdschConfigDedicated (bool change);
+  void SetPdschConfigDedicated (LteRrcSap::PdschConfigDedicated pdschConfigDedicated);
+
+  void SetTpc (uint32_t tpc, uint32_t num, bool acculumatedMode);
+
+  // inherited from LteFfrAlgorithm
+  virtual void SetLteFfrSapUser (LteFfrSapUser* s);
+  virtual LteFfrSapProvider* GetLteFfrSapProvider ();
+
+  virtual void SetLteFfrRrcSapUser (LteFfrRrcSapUser* s);
+  virtual LteFfrRrcSapProvider* GetLteFfrRrcSapProvider ();
+
+  // let the forwarder class access the protected and private members
+  friend class MemberLteFfrSapProvider<LteFfrSimple>;
+  friend class MemberLteFfrRrcSapProvider<LteFfrSimple>;
+
+protected:
+  // inherited from Object
+  virtual void DoInitialize ();
+  virtual void DoDispose ();
+
+  virtual void Reconfigure ();
+
+  // FFR SAP PROVIDER IMPLEMENTATION
+  virtual std::vector <bool> DoGetAvailableDlRbg ();
+  virtual bool DoIsDlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual std::vector <bool> DoGetAvailableUlRbg ();
+  virtual bool DoIsUlRbgAvailableForUe (int i, uint16_t rnti);
+  virtual void DoReportDlCqiInfo (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params);
+  virtual void DoReportUlCqiInfo ( std::map <uint16_t, std::vector <double> > ulCqiMap );
+  virtual uint8_t DoGetTpc (uint16_t rnti);
+  virtual uint8_t DoGetMinContinuousUlBandwidth ();
+
+  // FFR SAP RRC PROVIDER IMPLEMENTATION
+  virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
+  virtual void DoRecvLoadInformation (EpcX2Sap::LoadInformationParams params);
+
+private:
+
+  void UpdatePdschConfigDedicated ();
+
+  // FFR SAP
+  LteFfrSapUser* m_ffrSapUser;
+  LteFfrSapProvider* m_ffrSapProvider;
+
+  // FFR RRF SAP
+  LteFfrRrcSapUser* m_ffrRrcSapUser;
+  LteFfrRrcSapProvider* m_ffrRrcSapProvider;
+
+  uint8_t m_dlOffset;
+  uint8_t m_dlSubBand;
+
+  uint8_t m_ulOffset;
+  uint8_t m_ulSubBand;
+
+  std::vector <bool> m_dlRbgMap;
+  std::vector <bool> m_ulRbgMap;
+
+  std::map <uint16_t, LteRrcSap::PdschConfigDedicated> m_ues;
+
+  // The expected measurement identity
+  uint8_t m_measId;
+
+  bool m_changePdschConfigDedicated;
+
+  LteRrcSap::PdschConfigDedicated m_pdschConfigDedicated;
+
+  TracedCallback<uint16_t, uint8_t> m_changePdschConfigDedicatedTrace;
+
+
+  //Uplink Power Control
+  uint32_t m_tpc;
+  uint32_t m_tpcNum;
+  bool m_acculumatedMode;
+
+}; // end of class LteFfrSimple
+
+
+} // end of namespace ns3
+
+
+#endif /* LTE_FFR_SIMPLE_H */
diff -Naur ns-3.20/src/lte/test/lte-simple-spectrum-phy.cc ns-3.21/src/lte/test/lte-simple-spectrum-phy.cc
--- ns-3.20/src/lte/test/lte-simple-spectrum-phy.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-simple-spectrum-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,170 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include <ns3/log.h>
+#include <cmath>
+#include <ns3/simulator.h>
+#include <ns3/antenna-model.h>
+#include "lte-simple-spectrum-phy.h"
+#include "ns3/lte-spectrum-signal-parameters.h"
+#include "ns3/lte-net-device.h"
+#include "ns3/lte-phy-tag.h"
+#include <ns3/boolean.h>
+#include <ns3/double.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteSimpleSpectrumPhy");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (LteSimpleSpectrumPhy);
+
+LteSimpleSpectrumPhy::LteSimpleSpectrumPhy ()
+  : m_cellId (0)
+{
+}
+
+
+LteSimpleSpectrumPhy::~LteSimpleSpectrumPhy ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void LteSimpleSpectrumPhy::DoDispose ()
+{
+  NS_LOG_FUNCTION (this);
+  m_channel = 0;
+  m_mobility = 0;
+  m_device = 0;
+  SpectrumPhy::DoDispose ();
+}
+
+
+TypeId
+LteSimpleSpectrumPhy::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::LteSimpleSpectrumPhy")
+    .SetParent<SpectrumPhy> ()
+    .AddTraceSource ("RxStart",
+                     "Data reception start",
+                     MakeTraceSourceAccessor (&LteSimpleSpectrumPhy::m_rxStart))
+  ;
+  return tid;
+}
+
+
+
+Ptr<NetDevice>
+LteSimpleSpectrumPhy::GetDevice ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_device;
+}
+
+
+Ptr<MobilityModel>
+LteSimpleSpectrumPhy::GetMobility ()
+{
+  NS_LOG_FUNCTION (this);
+  return m_mobility;
+}
+
+
+void
+LteSimpleSpectrumPhy::SetDevice (Ptr<NetDevice> d)
+{
+  NS_LOG_FUNCTION (this << d);
+  m_device = d;
+}
+
+
+void
+LteSimpleSpectrumPhy::SetMobility (Ptr<MobilityModel> m)
+{
+  NS_LOG_FUNCTION (this << m);
+  m_mobility = m;
+}
+
+
+void
+LteSimpleSpectrumPhy::SetChannel (Ptr<SpectrumChannel> c)
+{
+  NS_LOG_FUNCTION (this << c);
+  m_channel = c;
+}
+
+Ptr<const SpectrumModel>
+LteSimpleSpectrumPhy::GetRxSpectrumModel () const
+{
+  return m_rxSpectrumModel;
+}
+
+
+Ptr<AntennaModel>
+LteSimpleSpectrumPhy::GetRxAntenna ()
+{
+  return m_antenna;
+}
+
+void
+LteSimpleSpectrumPhy::StartRx (Ptr<SpectrumSignalParameters> spectrumRxParams)
+{
+  NS_LOG_DEBUG ("LteSimpleSpectrumPhy::StartRx");
+
+  NS_LOG_FUNCTION (this << spectrumRxParams);
+  Ptr <const SpectrumValue> rxPsd = spectrumRxParams->psd;
+  Time duration = spectrumRxParams->duration;
+
+  // the device might start RX only if the signal is of a type
+  // understood by this device - in this case, an LTE signal.
+  Ptr<LteSpectrumSignalParametersDataFrame> lteDataRxParams = DynamicCast<LteSpectrumSignalParametersDataFrame> (spectrumRxParams);
+  if (lteDataRxParams != 0)
+    {
+      if ( m_cellId > 0 )
+        {
+          if (m_cellId == lteDataRxParams->cellId)
+            {
+              m_rxStart (rxPsd);
+            }
+        }
+      else
+        {
+          m_rxStart (rxPsd);
+        }
+    }
+}
+
+void
+LteSimpleSpectrumPhy::SetRxSpectrumModel (Ptr<const SpectrumModel> model)
+{
+  NS_LOG_FUNCTION (this);
+  m_rxSpectrumModel = model;
+}
+
+void
+LteSimpleSpectrumPhy::SetCellId (uint16_t cellId)
+{
+  NS_LOG_FUNCTION (this);
+  m_cellId = cellId;
+}
+
+
+
+} // namespace ns3
diff -Naur ns-3.20/src/lte/test/lte-simple-spectrum-phy.h ns-3.21/src/lte/test/lte-simple-spectrum-phy.h
--- ns-3.20/src/lte/test/lte-simple-spectrum-phy.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-simple-spectrum-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,91 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_SIMPLE_SPECTRUM_PHY_H
+#define LTE_SIMPLE_SPECTRUM_PHY_H
+
+#include <ns3/event-id.h>
+#include <ns3/spectrum-value.h>
+#include <ns3/mobility-model.h>
+#include <ns3/net-device.h>
+#include <ns3/spectrum-phy.h>
+#include <ns3/spectrum-channel.h>
+#include <ns3/traced-callback.h>
+
+namespace ns3 {
+
+/**
+ * \ingroup lte
+ *
+ * The LteSimpleSpectrumPhy models the physical layer of LTE
+ * This class is used to test Frequency Reuse Algorithms,
+ * it allow to get SpectrumValue from channel and pass it to
+ * test script by trace mechanism.
+ * When m_cellId is 0, all received signals will be traced,
+ * if m_cellId > 0, only signals from specified Cell will be traced.
+ *
+ */
+
+class LteSimpleSpectrumPhy : public SpectrumPhy
+{
+
+public:
+  LteSimpleSpectrumPhy ();
+  virtual ~LteSimpleSpectrumPhy ();
+
+  // inherited from Object
+  static TypeId GetTypeId (void);
+  virtual void DoDispose ();
+
+  // inherited from SpectrumPhy
+  void SetChannel (Ptr<SpectrumChannel> c);
+  void SetMobility (Ptr<MobilityModel> m);
+  void SetDevice (Ptr<NetDevice> d);
+  Ptr<MobilityModel> GetMobility ();
+  Ptr<NetDevice> GetDevice ();
+  Ptr<const SpectrumModel> GetRxSpectrumModel () const;
+  Ptr<AntennaModel> GetRxAntenna ();
+  void StartRx (Ptr<SpectrumSignalParameters> params);
+
+  void SetRxSpectrumModel (Ptr<const SpectrumModel> model);
+
+  void SetCellId (uint16_t cellId);
+
+private:
+  Ptr<MobilityModel> m_mobility;
+  Ptr<AntennaModel> m_antenna;
+  Ptr<NetDevice> m_device;
+  Ptr<SpectrumChannel> m_channel;
+  Ptr<const SpectrumModel> m_rxSpectrumModel;
+
+  uint16_t m_cellId;
+
+  TracedCallback< Ptr<const SpectrumValue> > m_rxStart;
+};
+
+
+
+
+
+
+}
+
+#endif /* LTE_SIMPLE_SPECTRUM_PHY_H */
diff -Naur ns-3.20/src/lte/test/lte-test-cqi-generation.cc ns-3.21/src/lte/test/lte-test-cqi-generation.cc
--- ns-3.20/src/lte/test/lte-test-cqi-generation.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-cqi-generation.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,208 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/config.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/enum.h>
+#include <ns3/boolean.h>
+#include <ns3/pointer.h>
+#include "ns3/ff-mac-scheduler.h"
+#include "ns3/mobility-helper.h"
+#include "ns3/lte-helper.h"
+
+#include "lte-test-cqi-generation.h"
+
+NS_LOG_COMPONENT_DEFINE ("LteCqiGenerationTest");
+
+using namespace ns3;
+
+void
+LteTestDlSchedulingCallback (LteCqiGenerationTestCase *testcase, std::string path,
+                             uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                             uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2)
+{
+  testcase->DlScheduling (frameNo, subframeNo, rnti, mcsTb1, sizeTb1, mcsTb2, sizeTb2);
+}
+
+void
+LteTestUlSchedulingCallback (LteCqiGenerationTestCase *testcase, std::string path,
+                             uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                             uint8_t mcs, uint16_t sizeTb)
+{
+  testcase->UlScheduling (frameNo, subframeNo, rnti, mcs, sizeTb);
+}
+
+
+/**
+ * TestSuite
+ */
+
+LteCqiGenerationTestSuite::LteCqiGenerationTestSuite ()
+  : TestSuite ("lte-cqi-generation", SYSTEM)
+{
+//  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_DEBUG);
+//  LogComponentEnable ("LteCqiGenerationTest", logLevel);
+  NS_LOG_INFO ("Creating LteCqiGenerationTestSuite");
+
+  AddTestCase (new LteCqiGenerationTestCase ("UsePdcchForCqiGeneration", false, 4, 2), TestCase::QUICK);
+  AddTestCase (new LteCqiGenerationTestCase ("UsePdschForCqiGeneration", true, 28, 2), TestCase::QUICK);
+
+}
+
+static LteCqiGenerationTestSuite lteCqiGenerationTestSuite;
+
+
+LteCqiGenerationTestCase::LteCqiGenerationTestCase (std::string name, bool usePdcchForCqiGeneration,
+                                                    uint16_t dlMcs, uint16_t ulMcs)
+  : TestCase ("Downlink Power Control: " + name),
+    m_dlMcs (dlMcs),
+    m_ulMcs (ulMcs)
+{
+  m_usePdcchForCqiGeneration = usePdcchForCqiGeneration;
+  NS_LOG_INFO ("Creating LteCqiGenerationTestCase");
+}
+
+LteCqiGenerationTestCase::~LteCqiGenerationTestCase ()
+{
+}
+
+void
+LteCqiGenerationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                                        uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2)
+{
+  // need to allow for RRC connection establishment + CQI feedback reception
+  if (Simulator::Now () > MilliSeconds (35))
+    {
+//	  NS_LOG_UNCOND("DL MSC: " << (uint32_t)mcsTb1 << " expected DL MCS: " << (uint32_t)m_dlMcs);
+      NS_TEST_ASSERT_MSG_EQ ((uint32_t)mcsTb1, (uint32_t)m_dlMcs, "Wrong DL MCS ");
+    }
+}
+
+void
+LteCqiGenerationTestCase::UlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                                        uint8_t mcs, uint16_t sizeTb)
+{
+  // need to allow for RRC connection establishment + SRS transmission
+  if (Simulator::Now () > MilliSeconds (50))
+    {
+//	  NS_LOG_UNCOND("UL MSC: " << (uint32_t)mcs << " expected UL MCS: " << (uint32_t)m_ulMcs);
+      NS_TEST_ASSERT_MSG_EQ ((uint32_t)mcs, (uint32_t)m_ulMcs, "Wrong UL MCS");
+    }
+}
+
+void
+LteCqiGenerationTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteCqiGenerationTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (m_usePdcchForCqiGeneration));
+
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (true));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1                        UE1 UE2                        eNB2
+   *    |                            |                            |
+   *    x -------------------------- x -------------------------- x
+   *                  500 m                       500 m
+   *
+   */
+
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (1000, 0.0, 0.0)); // eNB2
+  positionAlloc->Add (Vector (500.0, 0.0, 0.0));  // UE1
+  positionAlloc->Add (Vector (500, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  lteHelper->SetSchedulerAttribute ("UlCqiFilter", EnumValue (FfMacScheduler::PUSCH_UL_CQI));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (25));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (25));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
+                   MakeBoundCallback (&LteTestDlSchedulingCallback, this));
+
+  Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/UlScheduling",
+                   MakeBoundCallback (&LteTestUlSchedulingCallback, this));
+
+  Config::Connect ("/NodeList/1/DeviceList/0/LteEnbMac/DlScheduling",
+                   MakeBoundCallback (&LteTestDlSchedulingCallback, this));
+
+  Config::Connect ("/NodeList/1/DeviceList/0/LteEnbMac/UlScheduling",
+                   MakeBoundCallback (&LteTestUlSchedulingCallback, this));
+
+  Simulator::Stop (Seconds (1.100));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+}
diff -Naur ns-3.20/src/lte/test/lte-test-cqi-generation.h ns-3.21/src/lte/test/lte-test-cqi-generation.h
--- ns-3.20/src/lte/test/lte-test-cqi-generation.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-cqi-generation.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,57 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_TEST_CQI_GENERATION_H
+#define LTE_TEST_CQI_GENERATION_H
+
+#include "ns3/test.h"
+
+using namespace ns3;
+
+class LteCqiGenerationTestSuite : public TestSuite
+{
+public:
+  LteCqiGenerationTestSuite ();
+};
+
+class LteCqiGenerationTestCase : public TestCase
+{
+public:
+  LteCqiGenerationTestCase (std::string name, bool usePdcchForCqiGeneration,
+                            uint16_t dlMcs, uint16_t ulMcs);
+  virtual ~LteCqiGenerationTestCase ();
+
+  void DlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                     uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2);
+
+  void UlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
+                     uint8_t mcs, uint16_t sizeTb);
+
+private:
+  virtual void DoRun (void);
+
+  bool m_usePdcchForCqiGeneration;
+  uint16_t m_dlMcs;
+  uint16_t m_ulMcs;
+
+};
+
+#endif /* LTE_TEST_CQI_GENERATION_H */
diff -Naur ns-3.20/src/lte/test/lte-test-downlink-power-control.cc ns-3.21/src/lte/test/lte-test-downlink-power-control.cc
--- ns-3.20/src/lte/test/lte-test-downlink-power-control.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-downlink-power-control.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,598 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/config.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/enum.h>
+#include <ns3/boolean.h>
+#include <ns3/pointer.h>
+
+#include "ns3/mobility-helper.h"
+#include "ns3/lte-helper.h"
+
+#include <ns3/ff-mac-scheduler.h>
+#include <ns3/lte-enb-net-device.h>
+#include <ns3/lte-enb-phy.h>
+#include <ns3/lte-enb-rrc.h>
+#include <ns3/lte-ue-net-device.h>
+#include <ns3/lte-ue-phy.h>
+#include <ns3/lte-ue-rrc.h>
+
+#include "lte-ffr-simple.h"
+#include "lte-test-sinr-chunk-processor.h"
+#include <ns3/lte-common.h>
+
+#include "lte-test-downlink-power-control.h"
+#include <ns3/lte-rrc-sap.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteDownlinkPowerControlTest");
+
+using namespace ns3;
+
+/**
+ * TestSuite
+ */
+
+LteDownlinkPowerControlTestSuite::LteDownlinkPowerControlTestSuite ()
+  : TestSuite ("lte-downlink-power-control", SYSTEM)
+{
+//  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_DEBUG);
+//  LogComponentEnable ("LteDownlinkPowerControlTest", logLevel);
+  NS_LOG_INFO ("Creating LteDownlinkPowerControlTestSuite");
+
+  // Spectrum helper test
+  {
+    std::vector<int> activeRbs_txpowdB30nrb6run1earfcn500 (4);
+    activeRbs_txpowdB30nrb6run1earfcn500[0] = 0;
+    activeRbs_txpowdB30nrb6run1earfcn500[1] = 2;
+    activeRbs_txpowdB30nrb6run1earfcn500[2] = 3;
+    activeRbs_txpowdB30nrb6run1earfcn500[3] = 5;
+
+    uint16_t earfcn = 500;
+    uint8_t bw = 6;
+    double powerTx = 30;
+
+    std::map<int, double> powerTxMap;
+    double rbTxPower = powerTx;
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_6);
+    powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB0);
+    powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(5, rbTxPower));
+
+    SpectrumValue spectrumValue_txpowdB30nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6));
+    spectrumValue_txpowdB30nrb6run1earfcn500[0] = 2.325820769916e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[1] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb6run1earfcn500[2] = 4.640622533585e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[3] = 9.259259259259e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[4] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb6run1earfcn500[5] = 1.467493696723e-06;
+
+    AddTestCase (new LteDownlinkPowerControlSpectrumValueTestCase ("txpowdB30nrb6run1earfcn500_allRbPower",
+                                                                   earfcn, bw, powerTx,
+                                                                   powerTxMap, activeRbs_txpowdB30nrb6run1earfcn500,
+                                                                   spectrumValue_txpowdB30nrb6run1earfcn500), TestCase::QUICK);
+  }
+  {
+    //if power for RB not present, but RB is active, use powerTx
+    std::vector<int> activeRbs_txpowdB30nrb6run1earfcn500 (4);
+    activeRbs_txpowdB30nrb6run1earfcn500[0] = 0;
+    activeRbs_txpowdB30nrb6run1earfcn500[1] = 2;
+    activeRbs_txpowdB30nrb6run1earfcn500[2] = 3;
+    activeRbs_txpowdB30nrb6run1earfcn500[3] = 5;
+
+    uint16_t earfcn = 500;
+    uint8_t bw = 6;
+    double powerTx = 30;
+
+    std::map<int, double> powerTxMap;
+    double rbTxPower = powerTx;
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB0);
+    powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
+
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(5, rbTxPower));
+
+    SpectrumValue spectrumValue_txpowdB30nrb6run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, 6));
+    spectrumValue_txpowdB30nrb6run1earfcn500[0] = 9.259259259259e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[1] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb6run1earfcn500[2] = 4.640622533585e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[3] = 9.259259259259e-07;
+    spectrumValue_txpowdB30nrb6run1earfcn500[4] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb6run1earfcn500[5] = 1.467493696723e-06;
+
+    AddTestCase (new LteDownlinkPowerControlSpectrumValueTestCase ("txpowdB30nrb6run1earfcn500",
+                                                                   earfcn, bw, powerTx,
+                                                                   powerTxMap, activeRbs_txpowdB30nrb6run1earfcn500,
+                                                                   spectrumValue_txpowdB30nrb6run1earfcn500), TestCase::QUICK);
+  }
+  {
+    std::vector<int> activeRbs_txpowdB30nrb25run1earfcn500 (15);
+    activeRbs_txpowdB30nrb25run1earfcn500[0] = 0;
+    activeRbs_txpowdB30nrb25run1earfcn500[1] = 1;
+    activeRbs_txpowdB30nrb25run1earfcn500[2] = 2;
+    activeRbs_txpowdB30nrb25run1earfcn500[3] = 3;
+    activeRbs_txpowdB30nrb25run1earfcn500[4] = 7;
+    activeRbs_txpowdB30nrb25run1earfcn500[5] = 8;
+    activeRbs_txpowdB30nrb25run1earfcn500[6] = 9;
+    activeRbs_txpowdB30nrb25run1earfcn500[7] = 11;
+    activeRbs_txpowdB30nrb25run1earfcn500[8] = 13;
+    activeRbs_txpowdB30nrb25run1earfcn500[9] = 14;
+    activeRbs_txpowdB30nrb25run1earfcn500[10] = 18;
+    activeRbs_txpowdB30nrb25run1earfcn500[11] = 19;
+    activeRbs_txpowdB30nrb25run1earfcn500[12] = 20;
+    activeRbs_txpowdB30nrb25run1earfcn500[13] = 21;
+    activeRbs_txpowdB30nrb25run1earfcn500[14] = 24;
+
+    uint16_t earfcn = 500;
+    uint8_t bw = 25;
+    double powerTx = 30;
+
+    std::map<int, double> powerTxMap;
+    double rbTxPower = powerTx;
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_4dot77);
+    powerTxMap.insert (std::pair<int,double>(1, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_6);
+    powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB1);
+    powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(7, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(8, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(9, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_1dot77);
+    powerTxMap.insert (std::pair<int,double>(11, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(13, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(14, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB0);
+    powerTxMap.insert (std::pair<int,double>(18, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(19, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(20, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_4dot77);
+    powerTxMap.insert (std::pair<int,double>(21, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB3);
+    powerTxMap.insert (std::pair<int,double>(24, rbTxPower));
+
+
+    SpectrumValue spectrumValue_txpowdB30nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, bw));
+    spectrumValue_txpowdB30nrb25run1earfcn500[0] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[1] = 7.409475839182e-08;
+    spectrumValue_txpowdB30nrb25run1earfcn500[2] = 5.581969847799e-08;
+    spectrumValue_txpowdB30nrb25run1earfcn500[3] = 2.797612026209e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[4] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[5] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[6] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[7] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[8] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[9] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[10] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[11] = 1.478384791559e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[12] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[13] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[14] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[15] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[16] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[17] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[18] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[19] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[20] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[21] = 7.409475839182e-08;
+    spectrumValue_txpowdB30nrb25run1earfcn500[22] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[23] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[24] = 4.433916255486e-07;
+
+    AddTestCase (new LteDownlinkPowerControlSpectrumValueTestCase ("txpowdB30nrb25run1earfcn500_allRbPower",
+                                                                   earfcn, bw, powerTx,
+                                                                   powerTxMap, activeRbs_txpowdB30nrb25run1earfcn500,
+                                                                   spectrumValue_txpowdB30nrb25run1earfcn500), TestCase::QUICK);
+  }
+  {
+    //if power for RB not present, but RB is active, use powerTx
+    std::vector<int> activeRbs_txpowdB30nrb25run1earfcn500 (15);
+    activeRbs_txpowdB30nrb25run1earfcn500[0] = 0;
+    activeRbs_txpowdB30nrb25run1earfcn500[1] = 1;
+    activeRbs_txpowdB30nrb25run1earfcn500[2] = 2;
+    activeRbs_txpowdB30nrb25run1earfcn500[3] = 3;
+    activeRbs_txpowdB30nrb25run1earfcn500[4] = 7;
+    activeRbs_txpowdB30nrb25run1earfcn500[5] = 8;
+    activeRbs_txpowdB30nrb25run1earfcn500[6] = 9;
+    activeRbs_txpowdB30nrb25run1earfcn500[7] = 11;
+    activeRbs_txpowdB30nrb25run1earfcn500[8] = 13;
+    activeRbs_txpowdB30nrb25run1earfcn500[9] = 14;
+    activeRbs_txpowdB30nrb25run1earfcn500[10] = 18;
+    activeRbs_txpowdB30nrb25run1earfcn500[11] = 19;
+    activeRbs_txpowdB30nrb25run1earfcn500[12] = 20;
+    activeRbs_txpowdB30nrb25run1earfcn500[13] = 21;
+    activeRbs_txpowdB30nrb25run1earfcn500[14] = 24;
+
+    uint16_t earfcn = 500;
+    uint8_t bw = 25;
+    double powerTx = 30;
+
+    std::map<int, double> powerTxMap;
+    double rbTxPower = powerTx;
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(0, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_6);
+    powerTxMap.insert (std::pair<int,double>(2, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB1);
+    powerTxMap.insert (std::pair<int,double>(3, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(7, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(8, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB2);
+    powerTxMap.insert (std::pair<int,double>(13, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(14, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB0);
+    powerTxMap.insert (std::pair<int,double>(18, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB_3);
+    powerTxMap.insert (std::pair<int,double>(19, rbTxPower));
+    rbTxPower = CalculateRbTxPower (powerTx, LteRrcSap::PdschConfigDedicated::dB3);
+    powerTxMap.insert (std::pair<int,double>(24, rbTxPower));
+
+
+    SpectrumValue spectrumValue_txpowdB30nrb25run1earfcn500 (LteSpectrumValueHelper::GetSpectrumModel (500, bw));
+    spectrumValue_txpowdB30nrb25run1earfcn500[0] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[1] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[2] = 5.581969847799e-08;
+    spectrumValue_txpowdB30nrb25run1earfcn500[3] = 2.797612026209e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[4] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[5] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[6] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[7] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[8] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[9] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[10] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[11] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[12] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[13] = 3.521984872135e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[14] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[15] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[16] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[17] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[18] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[19] = 1.113749408060e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[20] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[21] = 2.222222222222e-07;
+    spectrumValue_txpowdB30nrb25run1earfcn500[22] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[23] = 0.000000000000e+00;
+    spectrumValue_txpowdB30nrb25run1earfcn500[24] = 4.433916255486e-07;
+
+    AddTestCase (new LteDownlinkPowerControlSpectrumValueTestCase ("txpowdB30nrb25run1earfcn500",
+                                                                   earfcn, bw, powerTx,
+                                                                   powerTxMap, activeRbs_txpowdB30nrb25run1earfcn500,
+                                                                   spectrumValue_txpowdB30nrb25run1earfcn500), TestCase::QUICK);
+  }
+
+
+  // Downlink DATA and CONTROL channels power comparison
+  AddTestCase (new LteDownlinkPowerControlTestCase (false, LteRrcSap::PdschConfigDedicated::dB0,
+                                                    "DataCtrlPowerDifference_noChange"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB_6,
+                                                    "DataCtrlPowerDifference_dB_6"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB_4dot77,
+                                                    "DataCtrlPowerDifference_dB_4dot77"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB_3,
+                                                    "DataCtrlPowerDifference_dB_3"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB_1dot77,
+                                                    "DataCtrlPowerDifference_dB_1dot77"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB0,
+                                                    "DataCtrlPowerDifference_dB0"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB1,
+                                                    "DataCtrlPowerDifference_dB1"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB2,
+                                                    "DataCtrlPowerDifference_dB2"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlTestCase (true, LteRrcSap::PdschConfigDedicated::dB3,
+                                                    "DataCtrlPowerDifference_dB3"), TestCase::QUICK);
+
+
+  // RrcConnectionReconfiguration test
+  AddTestCase (new LteDownlinkPowerControlRrcConnectionReconfigurationTestCase (false, "RrcConnReconf-IdealRrc"), TestCase::QUICK);
+  AddTestCase (new LteDownlinkPowerControlRrcConnectionReconfigurationTestCase (true, "RrcConnReconf-RealRrc"), TestCase::QUICK);
+
+
+}
+
+double
+LteDownlinkPowerControlTestSuite::CalculateRbTxPower (double txPower, uint8_t pa)
+{
+  LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+  pdschConfigDedicated.pa = pa;
+  double rbTxpower = txPower + LteRrcSap::ConvertPdschConfigDedicated2Double (pdschConfigDedicated);
+
+  return rbTxpower;
+}
+
+static LteDownlinkPowerControlTestSuite lteDownlinkPowerControlTestSuite;
+
+
+/**
+ * TestCase Data
+ */
+
+LteDownlinkPowerControlSpectrumValueTestCase::LteDownlinkPowerControlSpectrumValueTestCase (std::string name,
+                                                                                            uint16_t earfcn, uint8_t bw, double powerTx,
+                                                                                            std::map<int, double> powerTxMap, std::vector <int> activeRbs,
+                                                                                            SpectrumValue& expected)
+  : TestCase ("Downlink Power Control: " + name),
+    m_actual (LteSpectrumValueHelper::CreateTxPowerSpectralDensity (earfcn, bw, powerTx, powerTxMap, activeRbs)),
+    m_expected (Create<SpectrumValue> (expected))
+{
+  NS_LOG_INFO ("Creating LteDownlinkPowerControlTestCase");
+}
+
+LteDownlinkPowerControlSpectrumValueTestCase::~LteDownlinkPowerControlSpectrumValueTestCase ()
+{
+}
+
+void
+LteDownlinkPowerControlSpectrumValueTestCase::DoRun (void)
+{
+  NS_LOG_INFO ("Creating LteDownlinkPowerControlSpectrumValueTestCase");
+  NS_TEST_ASSERT_MSG_EQ (m_actual->GetSpectrumModelUid (), m_expected->GetSpectrumModelUid (), "SpectrumModel UID mismatch");
+  NS_TEST_ASSERT_MSG_SPECTRUM_VALUE_EQ_TOL ((*m_actual), (*m_expected), 0.0000001, "SpectrumValues not equal");
+
+}
+
+LteDownlinkPowerControlTestCase::LteDownlinkPowerControlTestCase (bool changePower, uint8_t pa, std::string name)
+  : TestCase ("Downlink Power Control: " + name)
+{
+  m_changePdschConfigDedicated = changePower;
+  m_pdschConfigDedicated.pa = pa;
+  m_expectedPowerDiff = LteRrcSap::ConvertPdschConfigDedicated2Double (m_pdschConfigDedicated);
+  NS_LOG_INFO ("Creating LteDownlinkPowerControlTestCase");
+}
+
+LteDownlinkPowerControlTestCase::~LteDownlinkPowerControlTestCase ()
+{
+}
+
+void
+LteDownlinkPowerControlTestCase::DoRun (void)
+{
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  /**
+    * Simulation Topology
+    */
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSimple");
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  PointerValue tmp;
+  enbDevs.Get (0)->GetAttribute ("LteFfrAlgorithm", tmp);
+  Ptr<LteFfrSimple> simpleFfrAlgorithm = DynamicCast<LteFfrSimple>(tmp.GetObject ());
+  simpleFfrAlgorithm->ChangePdschConfigDedicated (m_changePdschConfigDedicated);
+  simpleFfrAlgorithm->SetPdschConfigDedicated (m_pdschConfigDedicated);
+
+  // Activate the default EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  // Use testing chunk processor in the PHY layer
+  // It will be used to calculate data and ctrl power in downlink
+
+  Ptr<LtePhy> ue1Phy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+
+  Ptr<LteTestSinrChunkProcessor> testDlDataPowerReceived = Create<LteTestSinrChunkProcessor> ();
+  ue1Phy->GetDownlinkSpectrumPhy ()->AddDataPowerChunkProcessor (testDlDataPowerReceived);
+
+  Ptr<LteTestSinrChunkProcessor> testDlCtrlPowerReceived = Create<LteTestSinrChunkProcessor> ();
+  ue1Phy->GetDownlinkSpectrumPhy ()->AddRsPowerChunkProcessor (testDlCtrlPowerReceived);
+
+  Simulator::Stop (Seconds (0.400));
+  Simulator::Run ();
+
+  double dataPower = 10.0 * std::log10 (testDlDataPowerReceived->GetSinr ()->operator[] (0));
+  double ctrlPower = 10.0 * std::log10 (testDlCtrlPowerReceived->GetSinr ()->operator[] (0));
+  double powerDiff = (-1.0)*ctrlPower + dataPower;
+
+  NS_LOG_DEBUG ("DataPower: " << dataPower);
+  NS_LOG_DEBUG ("CtrlPower: " << ctrlPower);
+  NS_LOG_DEBUG ("PowerDifference: " << powerDiff);
+  NS_LOG_DEBUG ("ExpectedPowerDifference: " << m_expectedPowerDiff);
+
+  NS_TEST_ASSERT_MSG_EQ_TOL (powerDiff, m_expectedPowerDiff, 0.001,
+                             "Downlink Data and Ctrl Power Difference are not equal within tolerance");
+
+  Simulator::Destroy ();
+}
+
+void
+NotifyConnectionReconfigurationUe (LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase,
+                                   std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
+{
+  testcase->ConnectionReconfigurationUe (context, imsi, cellId, rnti);
+}
+
+void
+NotifyConnectionReconfigurationEnb (LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase,
+                                    std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
+{
+  testcase->ConnectionReconfigurationEnb (context, imsi, cellId, rnti);
+}
+
+void
+ChangePdschConfigDedicatedCallback (LteDownlinkPowerControlRrcConnectionReconfigurationTestCase *testcase,
+                                    std::string context, uint16_t rnti, uint8_t pa)
+{
+  testcase->ChangePdschConfigDedicated (rnti, pa);
+}
+
+
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::LteDownlinkPowerControlRrcConnectionReconfigurationTestCase (bool useIdealRrc, std::string name)
+  : TestCase ("Downlink Power Control: " + name),
+    m_useIdealRrc (useIdealRrc),
+    m_changePdschConfigDedicatedTriggered (false),
+    m_connectionReconfigurationUeReceived (false),
+    m_connectionReconfigurationEnbCompleted (false)
+{
+
+}
+
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::~LteDownlinkPowerControlRrcConnectionReconfigurationTestCase ()
+{
+}
+
+void
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::ConnectionReconfigurationEnb (std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
+{
+  if (Simulator::Now () > MilliSeconds (100))
+    {
+      NS_LOG_DEBUG ("eNb ConnectionReconfigurationCompleted");
+      m_connectionReconfigurationEnbCompleted = true;
+    }
+}
+
+void
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::ConnectionReconfigurationUe (std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
+{
+  if (Simulator::Now () > MilliSeconds (100))
+    {
+      NS_LOG_DEBUG ("Ue ConnectionReconfiguration");
+      m_connectionReconfigurationUeReceived = true;
+    }
+}
+
+void
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::ChangePdschConfigDedicated (uint16_t rnti, uint8_t pa)
+{
+  NS_LOG_DEBUG ("FFR Algorithm ChangePdschConfigDedicated");
+  m_changePdschConfigDedicatedTriggered = true;
+}
+
+void
+LteDownlinkPowerControlRrcConnectionReconfigurationTestCase::DoRun (void)
+{
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (m_useIdealRrc));
+
+  /**
+  * Simulation Topology
+  */
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSimple");
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  PointerValue tmp;
+  enbDevs.Get (0)->GetAttribute ("LteFfrAlgorithm", tmp);
+  Ptr<LteFfrSimple> simpleFfrAlgorithm = DynamicCast<LteFfrSimple>(tmp.GetObject ());
+  LteRrcSap::PdschConfigDedicated pdschConfigDedicated;
+  pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB_6;
+  simpleFfrAlgorithm->ChangePdschConfigDedicated (true);
+  simpleFfrAlgorithm->SetPdschConfigDedicated (pdschConfigDedicated);
+
+  // Activate the default EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  Config::Connect ("/NodeList/0/DeviceList/0/LteFfrAlgorithm/ChangePdschConfigDedicated",
+                   MakeBoundCallback (&ChangePdschConfigDedicatedCallback, this));
+  Config::Connect ("/NodeList/1/DeviceList/0/LteUeRrc/ConnectionReconfiguration",
+                   MakeBoundCallback (&NotifyConnectionReconfigurationUe, this));
+  Config::Connect ("/NodeList/0/DeviceList/0/LteEnbRrc/ConnectionReconfiguration",
+                   MakeBoundCallback (&NotifyConnectionReconfigurationEnb, this));
+
+  Simulator::Stop (Seconds (0.400));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_changePdschConfigDedicatedTriggered, true,
+                         "Ffr have not changed PdschConfigDedicated for UE");
+  NS_TEST_ASSERT_MSG_EQ (m_connectionReconfigurationUeReceived, true,
+                         "Ue have not received RrcConnectionReconfiguration");
+  NS_TEST_ASSERT_MSG_EQ (m_connectionReconfigurationEnbCompleted, true,
+                         "Enb have not received RrcConnectionReconfigurationCompleted");
+
+  Simulator::Destroy ();
+}
+
diff -Naur ns-3.20/src/lte/test/lte-test-downlink-power-control.h ns-3.21/src/lte/test/lte-test-downlink-power-control.h
--- ns-3.20/src/lte/test/lte-test-downlink-power-control.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-downlink-power-control.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,97 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_TEST_DOWNLINK_POWER_CONTROL_H
+#define LTE_TEST_DOWNLINK_POWER_CONTROL_H
+
+#include "ns3/spectrum-value.h"
+#include <ns3/lte-rrc-sap.h>
+
+#include "ns3/spectrum-test.h"
+#include "ns3/lte-spectrum-value-helper.h"
+
+#include "ns3/test.h"
+
+using namespace ns3;
+
+/**
+ * Test 1.1 SINR calculation in downlink
+ */
+class LteDownlinkPowerControlTestSuite : public TestSuite
+{
+public:
+  LteDownlinkPowerControlTestSuite ();
+
+  double CalculateRbTxPower (double txPower, uint8_t pa);
+};
+
+class LteDownlinkPowerControlSpectrumValueTestCase : public TestCase
+{
+public:
+  LteDownlinkPowerControlSpectrumValueTestCase (std::string name,
+                                                uint16_t earfcn, uint8_t bw, double powerTx,
+                                                std::map<int, double> powerTxMap, std::vector <int> activeRbs,
+                                                SpectrumValue& expected);
+  virtual ~LteDownlinkPowerControlSpectrumValueTestCase ();
+
+private:
+  virtual void DoRun (void);
+  Ptr<SpectrumValue> m_actual;
+  Ptr<SpectrumValue> m_expected;
+
+};
+
+class LteDownlinkPowerControlTestCase : public TestCase
+{
+public:
+  LteDownlinkPowerControlTestCase (bool changePower, uint8_t pa, std::string name);
+  virtual ~LteDownlinkPowerControlTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  bool m_changePdschConfigDedicated;
+  LteRrcSap::PdschConfigDedicated m_pdschConfigDedicated;
+  double m_expectedPowerDiff;
+};
+
+
+class LteDownlinkPowerControlRrcConnectionReconfigurationTestCase : public TestCase
+{
+public:
+  LteDownlinkPowerControlRrcConnectionReconfigurationTestCase (bool useIdealRrc, std::string name);
+  virtual ~LteDownlinkPowerControlRrcConnectionReconfigurationTestCase ();
+
+  void ConnectionReconfigurationEnb (std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti);
+
+  void ConnectionReconfigurationUe (std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti);
+
+  void ChangePdschConfigDedicated (uint16_t rnti, uint8_t pa);
+private:
+  virtual void DoRun (void);
+  bool m_useIdealRrc;
+
+  bool m_changePdschConfigDedicatedTriggered;
+  bool m_connectionReconfigurationUeReceived;
+  bool m_connectionReconfigurationEnbCompleted;
+};
+
+#endif /* LTE_TEST_DOWNLINK_POWER_CONTROL_H */
diff -Naur ns-3.20/src/lte/test/lte-test-downlink-sinr.cc ns-3.21/src/lte/test/lte-test-downlink-sinr.cc
--- ns-3.20/src/lte/test/lte-test-downlink-sinr.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-downlink-sinr.cc	2014-09-17 20:03:14.000000000 -0700
@@ -135,7 +135,7 @@
   dlPhy->SetCellId (cellId);
   ulPhy->SetCellId (cellId);
 
-  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
+  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> ();
   dlPhy->AddDataSinrChunkProcessor (chunkProcessor);
 
   /**
@@ -261,7 +261,7 @@
   Simulator::Run ();
 
   /**
-   * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
+   * Check that the values passed to LteChunkProcessor::EvaluateChunk () correspond
    * to known values which have been calculated offline (with octave) for the generated signals
    */
   Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
@@ -307,7 +307,7 @@
   dlPhy->SetCellId (cellId);
   ulPhy->SetCellId (cellId);
   
-  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
+  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> ();
   dlPhy->AddCtrlSinrChunkProcessor (chunkProcessor);
   
   /**
@@ -433,7 +433,7 @@
   Simulator::Run ();
   
   /**
-  * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
+  * Check that the values passed to LteChunkProcessor::EvaluateChunk () correspond
   * to known values which have been calculated offline (with octave) for the generated signals
   */
   Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
diff -Naur ns-3.20/src/lte/test/lte-test-fading.cc ns-3.21/src/lte/test/lte-test-fading.cc
--- ns-3.20/src/lte/test/lte-test-fading.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-fading.cc	2014-09-17 20:03:14.000000000 -0700
@@ -26,7 +26,7 @@
 
 #include "ns3/lte-phy-tag.h"
 #include "ns3/lte-test-ue-phy.h"
-#include "ns3/lte-sinr-chunk-processor.h"
+#include "ns3/lte-chunk-processor.h"
 
 #include "ns3/lte-test-fading.h"
 #include <ns3/buildings-propagation-loss-model.h>
@@ -166,7 +166,7 @@
   // 
   //   LogComponentEnable ("LteSpectrumPhy", logLevel);
   //   LogComponentEnable ("LteInterference", logLevel);
-  //   LogComponentEnable ("LteSinrChunkProcessor", logLevel);
+  //   LogComponentEnable ("LteChunkProcessor", logLevel);
   // 
   //   LogComponentEnable ("LtePropagationLossModel", logLevel);
   //   LogComponentEnable ("LossModel", logLevel);
diff -Naur ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -207,6 +207,9 @@
 
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -192,6 +192,9 @@
 
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-frequency-reuse.cc ns-3.21/src/lte/test/lte-test-frequency-reuse.cc
--- ns-3.20/src/lte/test/lte-test-frequency-reuse.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-frequency-reuse.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,1718 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/config.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/enum.h>
+#include <ns3/boolean.h>
+#include <ns3/pointer.h>
+
+#include "ns3/mobility-helper.h"
+#include "ns3/lte-helper.h"
+#include "ns3/point-to-point-epc-helper.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/applications-module.h"
+
+#include <ns3/ff-mac-scheduler.h>
+#include <ns3/lte-enb-net-device.h>
+#include <ns3/lte-enb-phy.h>
+#include <ns3/lte-enb-rrc.h>
+#include <ns3/lte-ue-net-device.h>
+#include <ns3/lte-ue-phy.h>
+#include <ns3/lte-ue-rrc.h>
+
+#include "lte-ffr-simple.h"
+#include "lte-simple-spectrum-phy.h"
+#include "lte-test-sinr-chunk-processor.h"
+#include <ns3/lte-common.h>
+
+#include "lte-test-frequency-reuse.h"
+
+
+NS_LOG_COMPONENT_DEFINE ("LteFrequencyReuseTest");
+
+using namespace ns3;
+
+/**
+ * TestSuite
+ */
+
+LteFrequencyReuseTestSuite::LteFrequencyReuseTestSuite ()
+  : TestSuite ("lte-frequency-reuse", SYSTEM)
+{
+//  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_DEBUG);
+//  LogComponentEnable ("LteFrequencyReuseTest", logLevel);
+
+  std::vector<bool> availableDlRb;
+  std::vector<bool> availableUlRb;
+  for (uint32_t i = 0; i < 12; i++)
+    {
+      availableDlRb.push_back (true);
+      availableUlRb.push_back (true);
+    }
+  for (uint32_t i = 12; i < 25; i++)
+    {
+      availableDlRb.push_back (false);
+      availableUlRb.push_back (false);
+    }
+
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrPf1", 1, "ns3::PfFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrPf2", 5, "ns3::PfFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrPss1", 1, "ns3::PssFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrPss2", 5, "ns3::PssFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrCqa1", 1, "ns3::CqaFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrCqa2", 5, "ns3::CqaFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrFdTbfq1", 1, "ns3::FdTbfqFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrFdTbfq2", 5, "ns3::FdTbfqFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrTdTbfq1", 1, "ns3::TdTbfqFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteHardFrTestCase ("DownlinkHardFrTdTbfq2", 5, "ns3::TdTbfqFfMacScheduler", 25, 25, 0, 12, 0, 12, availableDlRb, availableUlRb), TestCase::QUICK);
+
+  availableDlRb.clear ();
+  availableUlRb.clear ();
+  for (uint32_t i = 0; i < 6; i++)
+    {
+      availableDlRb.push_back (true);
+      availableUlRb.push_back (true);
+    }
+  for (uint32_t i = 6; i < 12; i++)
+    {
+      availableDlRb.push_back (false);
+      availableUlRb.push_back (false);
+    }
+  for (uint32_t i = 12; i < 18; i++)
+    {
+      availableDlRb.push_back (true);
+      availableUlRb.push_back (true);
+    }
+  for (uint32_t i = 18; i < 25; i++)
+    {
+      availableDlRb.push_back (false);
+      availableUlRb.push_back (false);
+    }
+
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrPf1", 1, "ns3::PfFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrPf2", 5, "ns3::PfFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrPss1", 1, "ns3::PssFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrPss2", 5, "ns3::PssFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqa1", 1, "ns3::CqaFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqa2", 5, "ns3::CqaFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqaFdTbfq1", 1, "ns3::FdTbfqFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqaFdTbfq2", 5, "ns3::FdTbfqFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqaTdTbfq1", 1, "ns3::TdTbfqFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+  AddTestCase (new LteStrictFrTestCase ("DownlinkStrictFrCqaTdTbfq2", 5, "ns3::TdTbfqFfMacScheduler", 25, 25, 6, 6, 6, 6, 6, 6, availableDlRb, availableUlRb), TestCase::QUICK);
+
+  AddTestCase (new LteStrictFrAreaTestCase ("LteStrictFrAreaTestCasePf1", "ns3::PfFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteStrictFrAreaTestCase ("LteStrictFrAreaTestCasePss1", "ns3::PssFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteStrictFrAreaTestCase ("LteStrictFrAreaTestCaseCqa1", "ns3::CqaFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteStrictFrAreaTestCase ("LteStrictFrAreaTestCaseFdTbfq1", "ns3::FdTbfqFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteStrictFrAreaTestCase ("LteStrictFrAreaTestCaseTdTbfq1", "ns3::TdTbfqFfMacScheduler"), TestCase::QUICK);
+
+  AddTestCase (new LteSoftFrAreaTestCase ("LteSoftFrAreaTestCasePf1", "ns3::PfFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFrAreaTestCase ("LteSoftFrAreaTestCasePss1", "ns3::PssFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFrAreaTestCase ("LteSoftFrAreaTestCaseCqa1", "ns3::CqaFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFrAreaTestCase ("LteSoftFrAreaTestCaseFdTbfq1", "ns3::FdTbfqFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFrAreaTestCase ("LteSoftFrAreaTestCaseTdTbfq1", "ns3::TdTbfqFfMacScheduler"), TestCase::QUICK);
+
+  AddTestCase (new LteSoftFfrAreaTestCase ("LteSoftFfrAreaTestCasePf1", "ns3::PfFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFfrAreaTestCase ("LteSoftFfrAreaTestCasePss1", "ns3::PssFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFfrAreaTestCase ("LteSoftFfrAreaTestCaseCqa1", "ns3::CqaFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFfrAreaTestCase ("LteSoftFfrAreaTestCaseFdTbfq1", "ns3::FdTbfqFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteSoftFfrAreaTestCase ("LteSoftFfrAreaTestCaseTdTbfq1", "ns3::TdTbfqFfMacScheduler"), TestCase::QUICK);
+
+  AddTestCase (new LteEnhancedFfrAreaTestCase ("LteEnhancedFfrAreaTestCasePf1", "ns3::PfFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteEnhancedFfrAreaTestCase ("LteEnhancedFfrAreaTestCasePss1", "ns3::PssFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteEnhancedFfrAreaTestCase ("LteEnhancedFfrAreaTestCaseCqa1", "ns3::CqaFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteEnhancedFfrAreaTestCase ("LteEnhancedFfrAreaTestCaseFdTbfq1", "ns3::FdTbfqFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteEnhancedFfrAreaTestCase ("LteEnhancedFfrAreaTestCaseTdTbfq1", "ns3::TdTbfqFfMacScheduler"), TestCase::QUICK);
+
+  AddTestCase (new LteDistributedFfrAreaTestCase ("LteDistributedFfrAreaTestCasePf1", "ns3::PfFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteDistributedFfrAreaTestCase ("LteDistributedFfrAreaTestCasePss1", "ns3::PssFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteDistributedFfrAreaTestCase ("LteDistributedFfrAreaTestCaseCqa1", "ns3::CqaFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteDistributedFfrAreaTestCase ("LteDistributedFfrAreaTestCaseFdTbfq1", "ns3::FdTbfqFfMacScheduler"), TestCase::QUICK);
+  AddTestCase (new LteDistributedFfrAreaTestCase ("LteDistributedFfrAreaTestCaseTdTbfq1", "ns3::TdTbfqFfMacScheduler"), TestCase::QUICK);
+}
+
+static LteFrequencyReuseTestSuite lteFrequencyReuseTestSuite;
+
+
+/**
+ * TestCase Data
+ */
+void
+DlDataRxStartNofitication (LteFrTestCase *testcase,
+                           Ptr<const SpectrumValue> spectrumValue)
+{
+  testcase->DlDataRxStart (spectrumValue);
+}
+
+void
+UlDataRxStartNofitication (LteFrTestCase *testcase,
+                           Ptr<const SpectrumValue> spectrumValue)
+{
+  testcase->UlDataRxStart (spectrumValue);
+}
+
+LteFrTestCase::LteFrTestCase (std::string name,
+                              uint32_t userNum,uint8_t dlBandwidth,uint8_t ulBandwidth,
+                              std::vector<bool> availableDlRb, std::vector<bool> availableUlRb)
+  : TestCase ("Test: " + name),
+    m_userNum (userNum),
+    m_dlBandwidth (dlBandwidth),
+    m_ulBandwidth (ulBandwidth),
+    m_availableDlRb (availableDlRb),
+    m_usedMutedDlRbg (false),
+    m_availableUlRb (availableUlRb),
+    m_usedMutedUlRbg (false)
+{
+}
+
+LteFrTestCase::~LteFrTestCase ()
+{
+}
+
+
+
+void
+LteFrTestCase::DlDataRxStart (Ptr<const SpectrumValue> spectrumValue)
+{
+  NS_LOG_DEBUG ("DL DATA Power allocation :");
+  Values::const_iterator it;
+  uint32_t i = 0;
+  for (it = spectrumValue->ConstValuesBegin (); it != spectrumValue->ConstValuesEnd (); it++)
+    {
+      double power =  (*it) * (m_dlBandwidth * 180000);
+      NS_LOG_DEBUG ("RB " << i << " POWER: " << " " << power << " isAvailable: " << m_availableDlRb[i]);
+
+      if (m_availableDlRb[i] == false && power > 0)
+        {
+          m_usedMutedDlRbg = true;
+        }
+      i++;
+    }
+}
+
+void
+LteFrTestCase::UlDataRxStart (Ptr<const SpectrumValue> spectrumValue)
+{
+  NS_LOG_DEBUG ("UL DATA Power allocation :");
+  Values::const_iterator it;
+  uint32_t i = 0;
+  for (it = spectrumValue->ConstValuesBegin (); it != spectrumValue->ConstValuesEnd (); it++)
+    {
+      double power =  (*it) * (m_ulBandwidth * 180000);
+      NS_LOG_DEBUG ("RB " << i << " POWER: " << " " << power << " isAvailable: " << m_availableUlRb[i]);
+
+      if (m_availableUlRb[i] == false && power > 0)
+        {
+          m_usedMutedUlRbg = true;
+        }
+      i++;
+    }
+}
+
+
+void
+LteFrTestCase::DoRun (void)
+{
+
+}
+
+
+LteHardFrTestCase::LteHardFrTestCase (std::string name, uint32_t userNum,
+                                      std::string schedulerType,
+                                      uint8_t dlBandwidth, uint8_t ulBandwidth,
+                                      uint8_t dlSubBandOffset, uint8_t dlSubBandwidth,
+                                      uint8_t ulSubBandOffset, uint8_t ulSubBandwidth,
+                                      std::vector<bool> availableDlRb, std::vector<bool> availableUlRb)
+  : LteFrTestCase (name, userNum, dlBandwidth, ulBandwidth, availableDlRb, availableUlRb),
+    m_schedulerType (schedulerType),
+    m_dlSubBandOffset (dlSubBandOffset),
+    m_dlSubBandwidth (dlSubBandwidth),
+    m_ulSubBandOffset (ulSubBandOffset),
+    m_ulSubBandwidth (ulSubBandwidth)
+{
+  NS_LOG_INFO ("Creating LteDownlinkFrTestCase");
+}
+
+LteHardFrTestCase::~LteHardFrTestCase ()
+{
+}
+
+void
+LteHardFrTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteFrTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  /**
+    * Simulation Topology
+    */
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (m_dlSubBandOffset));
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (m_dlSubBandwidth));
+
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (m_ulSubBandOffset));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (m_ulSubBandwidth));
+
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (m_userNum);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType (m_schedulerType);
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate the default EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofitication, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofitication, this));
+
+  Simulator::Stop (Seconds (0.500));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedMutedDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedMutedUlRbg, false,
+                         "Scheduler used UL RBG muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+
+
+LteStrictFrTestCase::LteStrictFrTestCase (std::string name, uint32_t userNum,
+                                          std::string schedulerType,
+                                          uint8_t dlBandwidth, uint8_t ulBandwidth,
+                                          uint8_t dlCommonSubBandwidth, uint8_t dlEdgeSubBandOffset, uint8_t dlEdgeSubBandwidth,
+                                          uint8_t ulCommonSubBandwidth, uint8_t ulEdgeSubBandOffset, uint8_t ulEdgeSubBandwidth,
+                                          std::vector<bool> availableDlRb, std::vector<bool> availableUlRb)
+  : LteFrTestCase (name, userNum, dlBandwidth, ulBandwidth, availableDlRb, availableUlRb),
+    m_schedulerType (schedulerType),
+    m_dlCommonSubBandwidth (dlCommonSubBandwidth),
+    m_dlEdgeSubBandOffset (dlEdgeSubBandOffset),
+    m_dlEdgeSubBandwidth (dlEdgeSubBandwidth),
+    m_ulCommonSubBandwidth (ulCommonSubBandwidth),
+    m_ulEdgeSubBandOffset (ulEdgeSubBandOffset),
+    m_ulEdgeSubBandwidth (ulEdgeSubBandwidth)
+{
+  NS_LOG_INFO ("Creating LteFrTestCase");
+}
+
+LteStrictFrTestCase::~LteStrictFrTestCase ()
+{
+}
+
+void
+LteStrictFrTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteFrTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  /**
+    * Simulation Topology
+    */
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrStrictAlgorithm");
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (m_dlCommonSubBandwidth));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (m_dlEdgeSubBandOffset));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (m_dlEdgeSubBandwidth));
+
+  lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (m_ulCommonSubBandwidth));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (m_ulEdgeSubBandOffset));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (m_ulEdgeSubBandwidth));
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (m_userNum);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
+
+  // Install Mobility Model
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType (m_schedulerType);
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate the default EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofitication, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofitication, this));
+
+  Simulator::Stop (Seconds (0.500));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedMutedDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedMutedUlRbg, false,
+                         "Scheduler used UL RBG muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+void
+DlDataRxStartNofiticationArea (LteFrAreaTestCase *testcase,
+                               Ptr<const SpectrumValue> spectrumValue)
+{
+  testcase->DlDataRxStart (spectrumValue);
+}
+
+void
+UlDataRxStartNofiticationArea (LteFrAreaTestCase *testcase,
+                               Ptr<const SpectrumValue> spectrumValue)
+{
+  testcase->UlDataRxStart (spectrumValue);
+}
+
+LteFrAreaTestCase::LteFrAreaTestCase (std::string name, std::string schedulerType)
+  : TestCase ("Test: " + name),
+    m_schedulerType (schedulerType)
+{
+  m_dlBandwidth = 25;
+  m_ulBandwidth = 25;
+  m_usedWrongDlRbg = false;
+  m_usedWrongUlRbg = false;
+}
+LteFrAreaTestCase::~LteFrAreaTestCase ()
+{
+}
+
+void
+LteFrAreaTestCase::DlDataRxStart (Ptr<const SpectrumValue> spectrumValue)
+{
+  //need time to report new UE measurements, and wait because of filtering
+  if ( (Simulator::Now () - m_teleportTime ) < MilliSeconds (400))
+    {
+      return;
+    }
+
+  NS_LOG_DEBUG ("DL DATA Power allocation :");
+  Values::const_iterator it;
+  uint32_t i = 0;
+  for (it = spectrumValue->ConstValuesBegin (); it != spectrumValue->ConstValuesEnd (); it++)
+    {
+      double power =  (*it) * (m_dlBandwidth * 180000);
+      NS_LOG_DEBUG ("RB " << i << " POWER: " << " " << power);
+      NS_LOG_DEBUG ("RB " << i << " POWER: " << " " << power
+                          << " Available: " << m_expectedDlRb[i] << " Expected Power: " << m_expectedDlPower );
+
+      if (m_expectedDlRb[i] == false && power > 0)
+        {
+          m_usedWrongDlRbg = true;
+        }
+      else if (m_expectedDlRb[i] == true && power > 0)
+        {
+          NS_TEST_ASSERT_MSG_EQ_TOL (power, m_expectedDlPower, 0.1,
+                                     "Wrong Data Channel DL Power level");
+        }
+      i++;
+    }
+}
+
+void
+LteFrAreaTestCase::UlDataRxStart (Ptr<const SpectrumValue> spectrumValue)
+{
+  //need time to report new UE measurements, and wait because of filtering
+  if ( (Simulator::Now () - m_teleportTime ) < MilliSeconds (400))
+    {
+      return;
+    }
+
+  NS_LOG_DEBUG ("UL DATA Power allocation :");
+  Values::const_iterator it;
+  uint32_t i = 0;
+  for (it = spectrumValue->ConstValuesBegin (); it != spectrumValue->ConstValuesEnd (); it++)
+    {
+      double power =  (*it) * (m_ulBandwidth * 180000);
+      NS_LOG_DEBUG ("RB " << i << " POWER: " << power << " expectedUlPower: " << m_expectedUlPower);
+      if (m_expectedUlRb[i] == false && power > 0)
+        {
+          m_usedWrongUlRbg = true;
+        }
+      else if (m_expectedUlRb[i] == true && power > 0)
+        {
+          NS_TEST_ASSERT_MSG_EQ_TOL (power, m_expectedUlPower, 0.01,
+                                     "Wrong Data Channel UL Power level" << Simulator::Now ().GetSeconds ());
+        }
+      i++;
+    }
+}
+
+void
+LteFrAreaTestCase::SimpleTeleportUe (uint32_t x, uint32_t y)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("Teleport UE to : (" << x << ", " << y << ", 0)");
+  m_teleportTime = Simulator::Now ();
+  m_ueMobility->SetPosition (Vector (x, y, 0.0));
+}
+
+void
+LteFrAreaTestCase::TeleportUe (uint32_t x, uint32_t y, double expectedPower,
+                               std::vector<bool> expectedDlRb)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("Teleport UE to : (" << x << ", " << y << ", 0)");
+  m_teleportTime = Simulator::Now ();
+  m_ueMobility->SetPosition (Vector (x, y, 0.0));
+  m_expectedDlPower = expectedPower;
+  m_expectedDlRb = expectedDlRb;
+}
+
+void
+LteFrAreaTestCase::TeleportUe2 (Ptr<Node> ueNode, uint32_t x, uint32_t y, double expectedPower,
+                                std::vector<bool> expectedDlRb)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("Teleport UE to : (" << x << ", " << y << ", 0)");
+
+  Ptr<MobilityModel> ueMobility = ueNode->GetObject<MobilityModel> ();
+  ueMobility->SetPosition (Vector (x, y, 0.0));
+  m_teleportTime = Simulator::Now ();
+  m_expectedDlPower = expectedPower;
+  m_expectedDlRb = expectedDlRb;
+}
+
+void
+LteFrAreaTestCase::SetDlExpectedValues (double expectedDlPower, std::vector<bool> expectedDlRb)
+{
+  NS_LOG_FUNCTION (this);
+  m_expectedDlPower = expectedDlPower;
+  m_expectedDlRb = expectedDlRb;
+}
+
+void
+LteFrAreaTestCase::SetUlExpectedValues (double expectedUlPower, std::vector<bool> expectedUlRb)
+{
+  NS_LOG_FUNCTION (this);
+  m_expectedUlPower = expectedUlPower;
+  m_expectedUlRb = expectedUlRb;
+}
+
+void
+LteFrAreaTestCase::DoRun (void)
+{
+}
+
+LteStrictFrAreaTestCase::LteStrictFrAreaTestCase (std::string name, std::string schedulerType)
+  : LteFrAreaTestCase (name, schedulerType)
+{
+  NS_LOG_INFO ("Creating LteFrTestCase");
+}
+
+LteStrictFrAreaTestCase::~LteStrictFrAreaTestCase ()
+{
+}
+
+void
+LteStrictFrAreaTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteStrictFrAreaTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1            UE1                                      eNB2
+   *    |              |                                         |
+   *    x ------------ x ------------------------ x ------------ x----UE2
+   *         200 m               600 m                  200 m      20 m
+   *
+   */
+
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (1000, 0.0, 0.0)); // eNB2
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));  // UE1
+  positionAlloc->Add (Vector (1020, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes1.Get (0)->GetObject<MobilityModel> ();
+
+  // Disable layer-3 filtering
+  Config::SetDefault ("ns3::LteEnbRrc::RsrpFilterCoefficient",
+                      UintegerValue (0));
+  Config::SetDefault ("ns3::LteEnbRrc::RsrqFilterCoefficient",
+                      UintegerValue (0));
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType (m_schedulerType);
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrStrictAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+
+  lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (6));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrNoOpAlgorithm");
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->SetCellId (1);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofiticationArea, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->SetCellId (1);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofiticationArea, this));
+
+  std::vector<bool> expectedDlRbCenterArea;
+  expectedDlRbCenterArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbCenterArea;
+  expectedUlRbCenterArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 6; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+
+  std::vector<bool> expectedDlRbEdgeArea;
+  expectedDlRbEdgeArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea;
+  expectedUlRbEdgeArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 12; i < 18; i++)
+    {
+      expectedDlRbEdgeArea[i] = true;
+      expectedUlRbEdgeArea[i] = true;
+    }
+
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0, 1, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::TeleportUe, this, 800, 0, 2, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.199526, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0, 1, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Stop (Seconds (1.500));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongDlRbg, false,
+                         "Scheduler used DL RB muted by FFR Algorithm");
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongUlRbg, false,
+                         "Scheduler used UL RB muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+LteSoftFrAreaTestCase::LteSoftFrAreaTestCase (std::string name, std::string schedulerType)
+  : LteFrAreaTestCase (name, schedulerType)
+{
+  NS_LOG_INFO ("Creating LteSoftFrAreaTestCase");
+}
+
+LteSoftFrAreaTestCase::~LteSoftFrAreaTestCase ()
+{
+}
+
+void
+LteSoftFrAreaTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteSoftFrAreaTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1            UE1                                      eNB2
+   *    |              |                                         |
+   *    x ------------ x ------------------------ x ------------ x----UE2
+   *         200 m               600 m                  200 m      20 m
+   *
+   */
+
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (1000, 0.0, 0.0)); // eNB2
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));  // UE1
+  positionAlloc->Add (Vector (1020, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes1.Get (0)->GetObject<MobilityModel> ();
+
+  // Disable layer-3 filtering
+  Config::SetDefault ("ns3::LteEnbRrc::RsrpFilterCoefficient",
+                      UintegerValue (0));
+  Config::SetDefault ("ns3::LteEnbRrc::RsrqFilterCoefficient",
+                      UintegerValue (0));
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType (m_schedulerType);
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrSoftAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("AllowCenterUeUseEdgeSubBand", BooleanValue (false));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (8));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (8));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (8));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (8));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrNoOpAlgorithm");
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->SetCellId (1);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofiticationArea, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->SetCellId (1);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofiticationArea, this));
+
+
+  std::vector<bool> expectedDlRbCenterArea;
+  expectedDlRbCenterArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbCenterArea;
+  expectedUlRbCenterArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 8; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+  for (uint32_t i = 16; i < 25; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+    }
+
+  std::vector<bool> expectedDlRbEdgeArea;
+  expectedDlRbEdgeArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea;
+  expectedUlRbEdgeArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 8; i < 16; i++)
+    {
+      expectedDlRbEdgeArea[i] = true;
+      expectedUlRbEdgeArea[i] = true;
+    }
+
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0, 1, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::TeleportUe, this, 800, 0, 2, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.199526, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0, 1, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Stop (Seconds (1.500));
+  Simulator::Run ();
+
+#if 0
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+
+#endif
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongUlRbg, false,
+                         "Scheduler used UL RB muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+LteSoftFfrAreaTestCase::LteSoftFfrAreaTestCase (std::string name, std::string schedulerType)
+  : LteFrAreaTestCase (name, schedulerType)
+{
+  NS_LOG_INFO ("Creating LteSoftFfrAreaTestCase");
+}
+
+LteSoftFfrAreaTestCase::~LteSoftFfrAreaTestCase ()
+{
+}
+
+void
+LteSoftFfrAreaTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteSoftFfrAreaTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1            UE1                                      eNB2
+   *    |              |                                         |
+   *    x ------------ x ------------------------ x ------------ x----UE2
+   *         200 m               600 m                  200 m      20 m
+   *
+   */
+
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (1000, 0.0, 0.0)); // eNB2
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));  // UE1
+  positionAlloc->Add (Vector (1020, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes1.Get (0)->GetObject<MobilityModel> ();
+
+  // Disable layer-3 filtering
+  Config::SetDefault ("ns3::LteEnbRrc::RsrpFilterCoefficient",
+                      UintegerValue (0));
+  Config::SetDefault ("ns3::LteEnbRrc::RsrqFilterCoefficient",
+                      UintegerValue (0));
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType (m_schedulerType);
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSoftAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("CenterRsrqThreshold", UintegerValue (28));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeRsrqThreshold", UintegerValue (18));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
+  lteHelper->SetFfrAlgorithmAttribute ("MediumAreaPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+  lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (6));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (6));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrNoOpAlgorithm");
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->SetCellId (1);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofiticationArea, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->SetCellId (1);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofiticationArea, this));
+
+  double expectedDlPowerCenterArea = 0.5;
+  std::vector<bool> expectedDlRbCenterArea;
+  expectedDlRbCenterArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbCenterArea;
+  expectedUlRbCenterArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 6; i < 12; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+  for (uint32_t i = 18; i < 25; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+
+  double expectedDlPowerMiddleArea = 1.0;
+  std::vector<bool> expectedDlRbMiddleArea;
+  expectedDlRbMiddleArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbMiddleArea;
+  expectedUlRbMiddleArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 6; i++)
+    {
+      expectedDlRbMiddleArea[i] = true;
+      expectedUlRbMiddleArea[i] = true;
+    }
+
+  double expectedDlPowerEdgeArea = 2.0;
+  std::vector<bool> expectedDlRbEdgeArea;
+  expectedDlRbEdgeArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea;
+  expectedUlRbEdgeArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 12; i < 18; i++)
+    {
+      expectedDlRbEdgeArea[i] = true;
+      expectedUlRbEdgeArea[i] = true;
+    }
+
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::TeleportUe, this, 600, 0,
+                       expectedDlPowerMiddleArea, expectedDlRbMiddleArea );
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.135489, expectedUlRbMiddleArea );
+
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::TeleportUe, this, 800, 0,
+                       expectedDlPowerEdgeArea, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.199526, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteFrAreaTestCase::TeleportUe, this, 600, 0,
+                       expectedDlPowerMiddleArea, expectedDlRbMiddleArea );
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.135489, expectedUlRbMiddleArea );
+
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteFrAreaTestCase::TeleportUe, this, 200, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0150543, expectedUlRbCenterArea );
+
+  Simulator::Stop (Seconds (2.500));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongUlRbg, false,
+                         "Scheduler used UL RB muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+
+LteEnhancedFfrAreaTestCase::LteEnhancedFfrAreaTestCase (std::string name, std::string schedulerType)
+  : LteFrAreaTestCase (name, schedulerType)
+{
+  NS_LOG_INFO ("Creating LteEnhancedFfrAreaTestCase");
+}
+
+LteEnhancedFfrAreaTestCase::~LteEnhancedFfrAreaTestCase ()
+{
+}
+
+void
+LteEnhancedFfrAreaTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteEnhancedFfrAreaTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1            UE1                                      eNB2
+   *    |              |                                         |
+   *    x ------------ x ------------------------ x ------------ x----UE2
+   *         200 m               600 m                  200 m      20 m
+   *
+   */
+
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (1000, 0.0, 0.0)); // eNB2
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));  // UE1
+  positionAlloc->Add (Vector (1020, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes1.Get (0)->GetObject<MobilityModel> ();
+
+  // Disable layer-3 filtering
+  Config::SetDefault ("ns3::LteEnbRrc::RsrpFilterCoefficient",
+                      UintegerValue (0));
+  Config::SetDefault ("ns3::LteEnbRrc::RsrqFilterCoefficient",
+                      UintegerValue (0));
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType (m_schedulerType);
+  lteHelper->SetSchedulerAttribute ("HarqEnabled",  BooleanValue (true));
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (m_dlBandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (m_ulBandwidth));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrEnhancedAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("DlCqiThreshold", UintegerValue (10));
+  lteHelper->SetFfrAlgorithmAttribute ("UlCqiThreshold", UintegerValue (15));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlReuse3SubBandwidth", UintegerValue (4));
+  lteHelper->SetFfrAlgorithmAttribute ("UlReuse1SubBandwidth", UintegerValue (4));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("DlReuse3SubBandwidth", UintegerValue (4));
+  lteHelper->SetFfrAlgorithmAttribute ("DlReuse1SubBandwidth", UintegerValue (4));
+
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrNoOpAlgorithm");
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->SetCellId (1);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofiticationArea, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->SetCellId (1);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofiticationArea, this));
+
+  double expectedDlPowerCenterArea = 0.251189;
+  std::vector<bool> expectedDlRbCenterArea;
+  expectedDlRbCenterArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbCenterArea;
+  expectedUlRbCenterArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 8; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+  for (uint32_t i = 12; i < 16; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+  for (uint32_t i = 20; i < 24; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+
+  double expectedDlPowerMiddleArea = 0.251189;
+  std::vector<bool> expectedDlRbMiddleArea;
+  expectedDlRbMiddleArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbMiddleArea;
+  expectedUlRbMiddleArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 4; i < 8; i++)
+    {
+      expectedDlRbMiddleArea[i] = true;
+      expectedUlRbMiddleArea[i] = true;
+    }
+
+  double expectedDlPowerEdgeArea = 1.0;
+  std::vector<bool> expectedDlRbEdgeArea;
+  expectedDlRbEdgeArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea;
+  expectedUlRbEdgeArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 4; i++)
+    {
+      expectedDlRbEdgeArea[i] = true;
+      expectedUlRbEdgeArea[i] = true;
+    }
+
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteEnhancedFfrAreaTestCase::TeleportUe, this, 100, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.00250905, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteEnhancedFfrAreaTestCase::TeleportUe, this, 300, 0,
+                       expectedDlPowerMiddleArea, expectedDlRbMiddleArea );
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0225815, expectedUlRbMiddleArea );
+
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteEnhancedFfrAreaTestCase::TeleportUe, this, 600, 0,
+                       expectedDlPowerEdgeArea, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0903259, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteEnhancedFfrAreaTestCase::TeleportUe, this, 100, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.00250905, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteEnhancedFfrAreaTestCase::TeleportUe, this, 300, 0,
+                       expectedDlPowerMiddleArea, expectedDlRbMiddleArea );
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0225815, expectedUlRbCenterArea );
+
+  Simulator::Stop (Seconds (2.500));
+  Simulator::Run ();
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongUlRbg, false,
+                         "Scheduler used UL RB muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+}
+
+
+LteDistributedFfrAreaTestCase::LteDistributedFfrAreaTestCase (std::string name, std::string schedulerType)
+  : LteFrAreaTestCase (name, schedulerType)
+{
+  NS_LOG_INFO ("Creating LteDistributedFfrAreaTestCase");
+}
+
+LteDistributedFfrAreaTestCase::~LteDistributedFfrAreaTestCase ()
+{
+}
+
+void
+LteDistributedFfrAreaTestCase::DoRun (void)
+{
+  NS_LOG_DEBUG ("LteDistributedFfrAreaTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  Config::SetDefault ("ns3::LteHelper::UsePdschForCqiGeneration", BooleanValue (true));
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+
+  // Disable layer-3 filtering
+  Config::SetDefault ("ns3::LteEnbRrc::RsrpFilterCoefficient",
+                      UintegerValue (0));
+  Config::SetDefault ("ns3::LteEnbRrc::RsrqFilterCoefficient",
+                      UintegerValue (0));
+
+  uint8_t bandwidth = 25;
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
+  lteHelper->SetEpcHelper (epcHelper);
+  lteHelper->SetHandoverAlgorithmType ("ns3::NoOpHandoverAlgorithm"); // disable automatic handover
+
+  Ptr<Node> pgw = epcHelper->GetPgwNode ();
+
+  // Create a single RemoteHost
+  NodeContainer remoteHostContainer;
+  remoteHostContainer.Create (1);
+  Ptr<Node> remoteHost = remoteHostContainer.Get (0);
+  InternetStackHelper internet;
+  internet.Install (remoteHostContainer);
+
+  // Create the Internet
+  PointToPointHelper p2ph;
+  p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s")));
+  p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500));
+  p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010)));
+  NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost);
+  Ipv4AddressHelper ipv4h;
+  ipv4h.SetBase ("1.0.0.0", "255.0.0.0");
+  Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices);
+  Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
+
+  // Routing of the Internet Host (towards the LTE network)
+  Ipv4StaticRoutingHelper ipv4RoutingHelper;
+  Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ());
+  // interface 0 is localhost, 1 is the p2p device
+  remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (2);
+  ueNodes2.Create (1);
+  NodeContainer ueNodes = NodeContainer ( ueNodes1, ueNodes2);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  /*
+   * The topology is the following:
+   *
+   *  eNB1            UE1                        UE2            eNB2
+   *    |              |                          |              |
+   *    x ------------ x ------------------------ x ------------ x
+   *         200 m               600 m                  200 m
+   *
+   */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));                  // eNB1
+  positionAlloc->Add (Vector (1000,  0.0, 0.0));                // eNB2
+
+  positionAlloc->Add (Vector (200, 0.0, 0.0));                  // UE1
+  positionAlloc->Add (Vector (200, 0.0, 0.0));                  // UE1
+  positionAlloc->Add (Vector (800, 0.0, 0.0));                  // UE2
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes2.Get (0)->GetObject<MobilityModel> ();
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType (m_schedulerType);
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrDistributedAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("CalculationInterval", TimeValue (MilliSeconds (10)));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("RsrpDifferenceThreshold", UintegerValue (5));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgeRbNum", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  NetDeviceContainer ueLteDevs;
+  ueLteDevs.Add (ueDevs1);
+  ueLteDevs.Add (ueDevs2);
+
+  // Add X2 inteface
+  lteHelper->AddX2Interface (enbNodes);
+
+  // Install the IP stack on the UEs
+  internet.Install (ueNodes);
+  Ipv4InterfaceContainer ueIpIfaces;
+  ueIpIfaces = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevs));
+  // Assign IP address to UEs, and install applications
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ueNode = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ueNode->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+    }
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+
+  // Install and start applications on UEs and remote host
+  uint16_t dlPort = 10000;
+  uint16_t ulPort = 20000;
+
+  // randomize a bit start times to avoid simulation artifacts
+  // (e.g., buffer overflows due to packet transmissions happening
+  // exactly at the same time)
+  Ptr<UniformRandomVariable> startTimeSeconds = CreateObject<UniformRandomVariable> ();
+  startTimeSeconds->SetAttribute ("Min", DoubleValue (0));
+  startTimeSeconds->SetAttribute ("Max", DoubleValue (0.010));
+
+  for (uint32_t u = 0; u < ueNodes.GetN (); ++u)
+    {
+      Ptr<Node> ue = ueNodes.Get (u);
+      // Set the default gateway for the UE
+      Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ());
+      ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1);
+
+      for (uint32_t b = 0; b < 1; ++b)
+        {
+          ++dlPort;
+          ++ulPort;
+
+          ApplicationContainer clientApps;
+          ApplicationContainer serverApps;
+
+          NS_LOG_LOGIC ("installing UDP DL app for UE " << u);
+          UdpClientHelper dlClientHelper (ueIpIfaces.GetAddress (u), dlPort);
+          dlClientHelper.SetAttribute ("MaxPackets", UintegerValue (1000000));
+          dlClientHelper.SetAttribute ("Interval", TimeValue (MilliSeconds (1.0)));
+          clientApps.Add (dlClientHelper.Install (remoteHost));
+          PacketSinkHelper dlPacketSinkHelper ("ns3::UdpSocketFactory",
+                                               InetSocketAddress (Ipv4Address::GetAny (), dlPort));
+          serverApps.Add (dlPacketSinkHelper.Install (ue));
+
+          NS_LOG_LOGIC ("installing UDP UL app for UE " << u);
+          UdpClientHelper ulClientHelper (remoteHostAddr, ulPort);
+          ulClientHelper.SetAttribute ("MaxPackets", UintegerValue (1000000));
+          ulClientHelper.SetAttribute ("Interval", TimeValue (MilliSeconds (1.0)));
+          clientApps.Add (ulClientHelper.Install (ue));
+          PacketSinkHelper ulPacketSinkHelper ("ns3::UdpSocketFactory",
+                                               InetSocketAddress (Ipv4Address::GetAny (), ulPort));
+          serverApps.Add (ulPacketSinkHelper.Install (remoteHost));
+
+          Ptr<EpcTft> tft = Create<EpcTft> ();
+          EpcTft::PacketFilter dlpf;
+          dlpf.localPortStart = dlPort;
+          dlpf.localPortEnd = dlPort;
+          tft->Add (dlpf);
+          EpcTft::PacketFilter ulpf;
+          ulpf.remotePortStart = ulPort;
+          ulpf.remotePortEnd = ulPort;
+          tft->Add (ulpf);
+          EpsBearer bearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT);
+          lteHelper->ActivateDedicatedEpsBearer (ueLteDevs.Get (u), bearer, tft);
+
+          Time startTime = Seconds (startTimeSeconds->GetValue ());
+          serverApps.Start (startTime);
+          clientApps.Start (startTime);
+        }
+    }
+
+  //Test SpectrumPhy to get signals form DL channel
+  Ptr<LteSpectrumPhy> enbDlSpectrumPhy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetDownlinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> dlChannel = enbDlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testDlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  Ptr<LteEnbNetDevice> eNbDev = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ();
+  testDlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetDlEarfcn (), m_dlBandwidth));
+  dlChannel->AddRx (testDlSpectrumPhy);
+
+  testDlSpectrumPhy->SetCellId (2);
+
+  testDlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&DlDataRxStartNofiticationArea, this));
+
+  //Test SpectrumPhy to get signals form UL channel
+  Ptr<LteSpectrumPhy> ueUlSpectrumPhy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetUplinkSpectrumPhy ()->GetObject<LteSpectrumPhy> ();
+  Ptr<SpectrumChannel> ulChannel = ueUlSpectrumPhy->GetChannel ();
+
+  Ptr<LteSimpleSpectrumPhy> testUlSpectrumPhy = CreateObject<LteSimpleSpectrumPhy> ();
+  testUlSpectrumPhy->SetRxSpectrumModel (LteSpectrumValueHelper::GetSpectrumModel (eNbDev->GetUlEarfcn (), m_ulBandwidth));
+  ulChannel->AddRx (testUlSpectrumPhy);
+
+  testUlSpectrumPhy->SetCellId (2);
+
+  testUlSpectrumPhy->TraceConnectWithoutContext ("RxStart",
+                                                 MakeBoundCallback (&UlDataRxStartNofiticationArea, this));
+
+  double expectedDlPowerCenterArea = 1.0;
+  std::vector<bool> expectedDlRbCenterArea;
+  expectedDlRbCenterArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbCenterArea;
+  expectedUlRbCenterArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < m_dlBandwidth; i++)
+    {
+      expectedDlRbCenterArea[i] = true;
+      expectedUlRbCenterArea[i] = true;
+    }
+
+  double expectedDlPowerEdgeArea = 2.0;
+  std::vector<bool> expectedDlRbEdgeArea;
+  expectedDlRbEdgeArea.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea;
+  expectedUlRbEdgeArea.resize (m_ulBandwidth, false);
+  for (uint32_t i = 0; i < 6; i++)
+    {
+      expectedDlRbEdgeArea[i] = true;
+      expectedUlRbEdgeArea[i] = true;
+    }
+
+  std::vector<bool> expectedDlRbEdgeArea2;
+  expectedDlRbEdgeArea2.resize (m_dlBandwidth, false);
+  std::vector<bool> expectedUlRbEdgeArea2;
+  expectedUlRbEdgeArea2.resize (m_dlBandwidth, false);
+  for (uint32_t i = 6; i < 12; i++)
+    {
+      expectedDlRbEdgeArea2[i] = true;
+      expectedUlRbEdgeArea2[i] = true;
+    }
+
+
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::TeleportUe, this, 800, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (1),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0225815, expectedUlRbCenterArea );
+
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::TeleportUe, this, 400, 0,
+                       expectedDlPowerEdgeArea, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.135489, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::TeleportUe2, this, ueNodes1.Get (0), 600, 0,
+                       expectedDlPowerEdgeArea, expectedDlRbEdgeArea2 );
+  Simulator::Schedule (MilliSeconds (1001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.135489, expectedUlRbEdgeArea2 );
+
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteFrAreaTestCase::TeleportUe2, this, ueNodes1.Get (0), 200, 0,
+                       expectedDlPowerEdgeArea, expectedDlRbEdgeArea );
+  Simulator::Schedule (MilliSeconds (1501),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.135489, expectedUlRbEdgeArea );
+
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteFrAreaTestCase::TeleportUe, this, 800, 0,
+                       expectedDlPowerCenterArea, expectedDlRbCenterArea );
+  Simulator::Schedule (MilliSeconds (2001),
+                       &LteFrAreaTestCase::SetUlExpectedValues, this, 0.0225815, expectedUlRbCenterArea );
+
+  Simulator::Stop (Seconds (2.500));
+  Simulator::Run ();
+
+#if 0
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongDlRbg, false,
+                         "Scheduler used DL RBG muted by FFR Algorithm");
+#endif
+
+  NS_TEST_ASSERT_MSG_EQ (m_usedWrongUlRbg, false,
+                         "Scheduler used UL RB muted by FFR Algorithm");
+
+  Simulator::Destroy ();
+
+}
diff -Naur ns-3.20/src/lte/test/lte-test-frequency-reuse.h ns-3.21/src/lte/test/lte-test-frequency-reuse.h
--- ns-3.20/src/lte/test/lte-test-frequency-reuse.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-frequency-reuse.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,211 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_TEST_DOWNLINK_FR_H
+#define LTE_TEST_DOWNLINK_FR_H
+
+#include "ns3/test.h"
+#include "ns3/spectrum-value.h"
+#include <ns3/lte-rrc-sap.h>
+
+#include "ns3/spectrum-test.h"
+#include "ns3/lte-spectrum-value-helper.h"
+
+using namespace ns3;
+
+/**
+ * Test Downlink FFR algorithms
+ */
+class LteFrequencyReuseTestSuite : public TestSuite
+{
+public:
+  LteFrequencyReuseTestSuite ();
+};
+
+class LteFrTestCase : public TestCase
+{
+public:
+  LteFrTestCase (std::string name,
+                 uint32_t userNum,uint8_t dlBandwidth,uint8_t ulBandwidth,
+                 std::vector<bool> availableDlRb, std::vector<bool> availableUlRb);
+  virtual ~LteFrTestCase ();
+
+  void DlDataRxStart (Ptr<const SpectrumValue> spectrumValue);
+  void UlDataRxStart (Ptr<const SpectrumValue> spectrumValue);
+
+protected:
+  virtual void DoRun (void);
+
+  uint32_t m_userNum;
+  uint8_t m_dlBandwidth;
+  uint8_t m_ulBandwidth;
+
+  std::vector<bool> m_availableDlRb;
+  bool m_usedMutedDlRbg;
+
+  std::vector<bool> m_availableUlRb;
+  bool m_usedMutedUlRbg;
+};
+
+
+class LteHardFrTestCase : public LteFrTestCase
+{
+public:
+  LteHardFrTestCase (std::string name, uint32_t userNum,
+                     std::string schedulerType,
+                     uint8_t dlBandwidth, uint8_t ulBandwidth,
+                     uint8_t dlSubBandOffset, uint8_t dlSubBandwidth,
+                     uint8_t ulSubBandOffset, uint8_t ulSubBandwidth,
+                     std::vector<bool> availableDlRb, std::vector<bool> availableUlRb);
+  virtual ~LteHardFrTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  std::string m_schedulerType;
+
+  uint8_t m_dlSubBandOffset;
+  uint8_t m_dlSubBandwidth;
+
+  uint8_t m_ulSubBandOffset;
+  uint8_t m_ulSubBandwidth;
+};
+
+class LteStrictFrTestCase : public LteFrTestCase
+{
+public:
+  LteStrictFrTestCase (std::string name, uint32_t userNum,
+                       std::string schedulerType,
+                       uint8_t dlBandwidth, uint8_t ulBandwidth,
+                       uint8_t dlCommonSubBandwidth, uint8_t dlEdgeSubBandOffset, uint8_t dlEdgeSubBandwidth,
+                       uint8_t ulCommonSubBandwidth, uint8_t ulEdgeSubBandOffset, uint8_t ulEdgeSubBandwidth,
+                       std::vector<bool> availableDlRb, std::vector<bool> availableUlRb);
+  virtual ~LteStrictFrTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  std::string m_schedulerType;
+
+  uint8_t m_dlCommonSubBandwidth;
+  uint8_t m_dlEdgeSubBandOffset;
+  uint8_t m_dlEdgeSubBandwidth;
+
+  uint8_t m_ulCommonSubBandwidth;
+  uint8_t m_ulEdgeSubBandOffset;
+  uint8_t m_ulEdgeSubBandwidth;
+};
+
+class LteFrAreaTestCase : public TestCase
+{
+public:
+  LteFrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteFrAreaTestCase ();
+
+  void DlDataRxStart (Ptr<const SpectrumValue> spectrumValue);
+  void UlDataRxStart (Ptr<const SpectrumValue> spectrumValue);
+
+  void SimpleTeleportUe (uint32_t x, uint32_t y);
+  void TeleportUe (uint32_t x, uint32_t y, double expectedPower, std::vector<bool> expectedDlRb);
+  void TeleportUe2 (Ptr<Node> ueNode, uint32_t x, uint32_t y, double expectedPower,
+                    std::vector<bool> expectedDlRb);
+
+  void SetDlExpectedValues (double expectedPower, std::vector<bool> expectedDlRb);
+  void SetUlExpectedValues (double expectedPower, std::vector<bool> expectedDlRb);
+
+protected:
+  virtual void DoRun (void);
+
+  std::string m_schedulerType;
+
+  uint8_t m_dlBandwidth;
+  uint8_t m_ulBandwidth;
+
+  Time m_teleportTime;
+  Ptr<MobilityModel> m_ueMobility;
+
+  double m_expectedDlPower;
+  std::vector<bool> m_expectedDlRb;
+  bool m_usedWrongDlRbg;
+  bool m_usedWrongDlPower;
+
+  double m_expectedUlPower;
+  std::vector<bool> m_expectedUlRb;
+  bool m_usedWrongUlRbg;
+  bool m_usedWrongUlPower;
+
+};
+
+class LteStrictFrAreaTestCase : public LteFrAreaTestCase
+{
+public:
+  LteStrictFrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteStrictFrAreaTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+class LteSoftFrAreaTestCase : public LteFrAreaTestCase
+{
+public:
+  LteSoftFrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteSoftFrAreaTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+};
+
+class LteSoftFfrAreaTestCase : public LteFrAreaTestCase
+{
+public:
+  LteSoftFfrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteSoftFfrAreaTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+};
+
+class LteEnhancedFfrAreaTestCase : public LteFrAreaTestCase
+{
+public:
+  LteEnhancedFfrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteEnhancedFfrAreaTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+};
+
+class LteDistributedFfrAreaTestCase : public LteFrAreaTestCase
+{
+public:
+  LteDistributedFfrAreaTestCase (std::string name, std::string schedulerType);
+  virtual ~LteDistributedFfrAreaTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+};
+
+#endif /* LTE_TEST_DOWNLINK_FR_H */
diff -Naur ns-3.20/src/lte/test/lte-test-harq.cc ns-3.21/src/lte/test/lte-test-harq.cc
--- ns-3.20/src/lte/test/lte-test-harq.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-harq.cc	2014-09-17 20:03:14.000000000 -0700
@@ -111,6 +111,9 @@
   Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
   Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (true));
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
 //   Config::SetDefault ("ns3::RrFfMacScheduler::HarqEnabled", BooleanValue (false));
 //   LogComponentEnable ("LteEnbRrc", LOG_LEVEL_ALL);
 //   LogComponentEnable ("LteUeRrc", LOG_LEVEL_ALL);
@@ -124,7 +127,7 @@
 
 //   LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL);
 //   LogComponentEnable ("LteInterference", LOG_LEVEL_ALL);
-//   LogComponentEnable ("LteSinrChunkProcessor", LOG_LEVEL_ALL);
+//   LogComponentEnable ("LteChunkProcessor", LOG_LEVEL_ALL);
 //
 //   LogComponentEnable ("LtePropagationLossModel", LOG_LEVEL_ALL);
 //   LogComponentEnable ("LossModel", LOG_LEVEL_ALL);
diff -Naur ns-3.20/src/lte/test/lte-test-interference.cc ns-3.21/src/lte/test/lte-test-interference.cc
--- ns-3.20/src/lte/test/lte-test-interference.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-interference.cc	2014-09-17 20:03:14.000000000 -0700
@@ -120,6 +120,9 @@
   lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
   lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (false));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   // Create Nodes: eNodeB and UE
   NodeContainer enbNodes;
   NodeContainer ueNodes1;
@@ -171,11 +174,11 @@
   // we plug in two instances, one for DL and one for UL
 
   Ptr<LtePhy> ue1Phy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> (ue1Phy);
+  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> ();
   ue1Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr1);
 
   Ptr<LtePhy> enb1phy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> (enb1phy);
+  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> ();
   enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr1);
 
   Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
@@ -188,11 +191,11 @@
   // same as above for eNB2 and UE2
 
   Ptr<LtePhy> ue2Phy = ueDevs2.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> (ue2Phy);
+  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> ();
   ue2Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr2);
 
   Ptr<LtePhy> enb2phy = enbDevs.Get (1)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> (enb2phy);
+  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> ();
   enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr2);
 
   Config::Connect ("/NodeList/1/DeviceList/0/LteEnbMac/DlScheduling",
diff -Naur ns-3.20/src/lte/test/lte-test-interference-fr.cc ns-3.21/src/lte/test/lte-test-interference-fr.cc
--- ns-3.20/src/lte/test/lte-test-interference-fr.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-interference-fr.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,413 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ * Based on lte-test-interference.{h,cc} by Manuel Requena <manuel.requena@cttc.es>
+ *                                                                              Nicola Baldo <nbaldo@cttc.es>
+ */
+
+#include "ns3/simulator.h"
+#include "ns3/log.h"
+#include "ns3/string.h"
+#include "ns3/double.h"
+#include <ns3/enum.h>
+#include "ns3/boolean.h"
+#include <ns3/pointer.h>
+#include "ns3/mobility-helper.h"
+#include "ns3/lte-helper.h"
+#include "ns3/ff-mac-scheduler.h"
+
+#include "ns3/lte-enb-phy.h"
+#include "ns3/lte-enb-net-device.h"
+
+#include "ns3/lte-ue-phy.h"
+#include "ns3/lte-ue-net-device.h"
+
+#include "lte-test-interference-fr.h"
+
+#include "lte-test-sinr-chunk-processor.h"
+
+#include "lte-simple-spectrum-phy.h"
+#include "ns3/spectrum-value.h"
+#include "ns3/lte-spectrum-value-helper.h"
+
+
+NS_LOG_COMPONENT_DEFINE ("LteInterferenceFrTest");
+
+using namespace ns3;
+
+/**
+ * TestSuite
+ */
+
+LteInterferenceFrTestSuite::LteInterferenceFrTestSuite ()
+  : TestSuite ("lte-interference-fr", SYSTEM)
+{
+//  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_DEBUG);
+//  LogComponentEnable ("LteInterferenceFrTest", logLevel);
+
+  AddTestCase (new LteInterferenceHardFrTestCase ("d1=50, d2=20",  50.000000, 20.000000,  356449.932732, 10803.280215), TestCase::QUICK);
+  AddTestCase (new LteInterferenceHardFrTestCase ("d1=50, d2=50",  50.000000, 50.000000,  356449.932732, 10803.280215), TestCase::QUICK);
+  AddTestCase (new LteInterferenceHardFrTestCase ("d1=50, d2=200",  50.000000, 200.000000,  356449.932732, 10803.280215), TestCase::QUICK);
+  AddTestCase (new LteInterferenceHardFrTestCase ("d1=50, d2=500",  50.000000, 500.000000,  356449.932732, 10803.280215), TestCase::QUICK);
+
+  AddTestCase (new LteInterferenceStrictFrTestCase ("d1=50, d2=20",  50.000000, 20.000000,  0.160000, 0.159998, 356449.932732, 10803.280215, 18), TestCase::QUICK);
+  AddTestCase (new LteInterferenceStrictFrTestCase ("d1=50, d2=50",  50.000000, 50.000000, 0.999997, 0.999907, 356449.932732, 10803.280215, 28), TestCase::QUICK);
+  AddTestCase (new LteInterferenceStrictFrTestCase ("d1=50, d2=200",  50.000000, 200.000000,  15.999282, 15.976339, 356449.932732, 10803.280215, 30), TestCase::QUICK);
+  AddTestCase (new LteInterferenceStrictFrTestCase ("d1=50, d2=500",  50.000000, 500.000000,  99.971953, 99.082845, 356449.932732, 10803.280215, 30), TestCase::QUICK);
+
+}
+
+static LteInterferenceFrTestSuite LteInterferenceFrTestSuite;
+
+
+/**
+ * TestCase Data
+ */
+LteInterferenceHardFrTestCase::LteInterferenceHardFrTestCase (std::string name, double d1, double d2, double dlSinr, double ulSinr)
+  : TestCase ("Test: " + name),
+    m_d1 (d1),
+    m_d2 (d2),
+    m_dlSinrDb (10 * std::log10 (dlSinr)),
+    m_ulSinrDb (10 * std::log10 (ulSinr))
+{
+  NS_LOG_INFO ("Creating LteInterferenceFrTestCase");
+}
+
+LteInterferenceHardFrTestCase::~LteInterferenceHardFrTestCase ()
+{
+}
+
+void
+LteInterferenceHardFrTestCase::DoRun (void)
+{
+  NS_LOG_INFO (this << GetName ());
+  NS_LOG_DEBUG ("LteInterferenceHardFrTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010));
+  Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
+
+  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (1);
+  ueNodes2.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  // the topology is the following:
+  //         d2
+  //  UE1-----------eNB2
+  //   |             |
+  // d1|             |d1
+  //   |     d2      |
+  //  eNB1----------UE2
+  //
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));   // eNB1
+  positionAlloc->Add (Vector (m_d2, m_d1, 0.0)); // eNB2
+  positionAlloc->Add (Vector (0.0, m_d1, 0.0));  // UE1
+  positionAlloc->Add (Vector (m_d2, 0.0, 0.0));  // UE2
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  lteHelper->SetSchedulerAttribute ("UlCqiFilter", EnumValue (FfMacScheduler::PUSCH_UL_CQI));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (25));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (25));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  // Use testing chunk processor in the PHY layer
+  // It will be used to test that the SNR is as intended
+  // we plug in two instances, one for DL and one for UL
+
+  Ptr<LtePhy> ue1Phy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> ();
+  ue1Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr1);
+
+  Ptr<LtePhy> enb1phy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> ();
+  enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr1);
+
+  // same as above for eNB2 and UE2
+
+  Ptr<LtePhy> ue2Phy = ueDevs2.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> ();
+  ue2Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr2);
+
+  Ptr<LtePhy> enb2phy = enbDevs.Get (1)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> ();
+  enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr2);
+
+// need to allow for RRC connection establishment + SRS
+  Simulator::Stop (Seconds (0.200));
+  Simulator::Run ();
+
+
+  for (uint32_t i = 0; i < 12; i++)
+    {
+      double dlSinr1 = testDlSinr1->GetSinr ()->operator[] (i);
+      double dlSinr1Db = 10.0 * std::log10 (dlSinr1);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr1Db, m_dlSinrDb, 0.01, "Wrong SINR in DL! (eNB1 --> UE1)");
+
+
+      double dlSinr2 = testDlSinr2->GetSinr ()->operator[] (i);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr2, 0, 0.01, "Wrong SINR in DL! (eNB2 --> UE2)");
+    }
+
+  for (uint32_t i = 12; i < 24; i++)
+    {
+      double dlSinr1 = testDlSinr1->GetSinr ()->operator[] (i);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr1, 0, 0.01, "Wrong SINR in DL! (eNB1 --> UE1)");
+
+      double dlSinr2 = testDlSinr2->GetSinr ()->operator[] (i);
+      double dlSinr2Db = 10.0 * std::log10 (dlSinr2);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr2Db, m_dlSinrDb, 0.01, "Wrong SINR in DL! (eNB2 --> UE2)");
+    }
+
+  //FR algorithms do not operate in uplink now, so we do not test it
+//  double ulSinr1Db = 10.0 * std::log10 (testUlSinr1->GetSinr ()->operator[] (0));
+//  NS_LOG_DEBUG("ulSinr1Db: "<< ulSinr1Db);
+//  NS_TEST_ASSERT_MSG_EQ_TOL (ulSinr1Db, m_ulSinrDb, 0.01, "Wrong SINR in UL!  (UE1 --> eNB1)");
+//
+//  double ulSinr2Db = 10.0 * std::log10 (testUlSinr2->GetSinr ()->operator[] (0));
+//  NS_LOG_DEBUG("ulSinr2Db: "<< ulSinr2Db);
+//  NS_TEST_ASSERT_MSG_EQ_TOL (ulSinr2Db, m_ulSinrDb, 0.01, "Wrong SINR in UL!  (UE2 --> eNB2)");
+
+  Simulator::Destroy ();
+}
+
+LteInterferenceStrictFrTestCase::LteInterferenceStrictFrTestCase (std::string name, double d1, double d2,
+                                                                  double commonDlSinr, double commonUlSinr, double edgeDlSinr, double edgeUlSinr,
+                                                                  uint32_t rspqThreshold)
+  : TestCase ("Test: " + name),
+    m_d1 (d1),
+    m_d2 (d2),
+    m_commonDlSinrDb (10 * std::log10 (commonDlSinr)),
+    m_commonUlSinrDb (10 * std::log10 (commonUlSinr)),
+    m_edgeDlSinrDb (10 * std::log10 (edgeDlSinr)),
+    m_edgeUlSinrDb (10 * std::log10 (edgeUlSinr)),
+    m_rspqThreshold (rspqThreshold)
+{
+  NS_LOG_INFO ("Creating LteInterferenceFrTestCase");
+}
+
+LteInterferenceStrictFrTestCase::~LteInterferenceStrictFrTestCase ()
+{
+}
+
+void
+LteInterferenceStrictFrTestCase::DoRun (void)
+{
+  NS_LOG_INFO (this << GetName ());
+  NS_LOG_DEBUG ("LteInterferenceStrictFrTestCase");
+
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010));
+  Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFrStrictAlgorithm");
+  lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (m_rspqThreshold));
+  lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+  lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
+                                       UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
+
+
+  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes1;
+  NodeContainer ueNodes2;
+  enbNodes.Create (2);
+  ueNodes1.Create (2);
+  ueNodes2.Create (2);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes1, ueNodes2);
+
+  // the topology is the following:
+  //         d2
+  //  UE1-----------eNB2
+  //   |             |
+  // d1|             |d1
+  //   |     d2      |
+  //  eNB1----------UE2
+  //
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0,  0.0,  0.0));  // eNB1
+  positionAlloc->Add (Vector (m_d2, m_d1, 0.0));  // eNB2
+
+  positionAlloc->Add (Vector (0.0, m_d1, 0.0));  // UE1-eNB1
+  positionAlloc->Add (Vector (0.5 * m_d2, 0.0, 0.0));  // UE2-eNB1
+
+  positionAlloc->Add (Vector (m_d2, 0.0, 0.0));   // UE1-eNB2
+  positionAlloc->Add (Vector (0.5 * m_d2, m_d1, 0.0));    // UE2-eNB2
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs1;
+  NetDeviceContainer ueDevs2;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+  lteHelper->SetSchedulerAttribute ("UlCqiFilter", EnumValue (FfMacScheduler::PUSCH_UL_CQI));
+
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue (25));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue (0));
+  lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (0));
+
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0)));
+
+  lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue (12));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue (6));
+  lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue (6));
+  enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (1)));
+
+  ueDevs1 = lteHelper->InstallUeDevice (ueNodes1);
+  ueDevs2 = lteHelper->InstallUeDevice (ueNodes2);
+
+  lteHelper->Attach (ueDevs1, enbDevs.Get (0));
+  lteHelper->Attach (ueDevs2, enbDevs.Get (1));
+
+  // Activate an EPS bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs1, bearer);
+  lteHelper->ActivateDataRadioBearer (ueDevs2, bearer);
+
+  // Use testing chunk processor in the PHY layer
+  // It will be used to test that the SNR is as intended
+  // we plug in two instances, one for DL and one for UL
+
+  Ptr<LtePhy> ue1Phy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> ();
+  ue1Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr1);
+
+  Ptr<LtePhy> enb1phy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> ();
+  enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr1);
+
+  // same as above for eNB2 and UE2
+
+  Ptr<LtePhy> ue2Phy = ueDevs2.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> ();
+  ue2Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr2);
+
+  Ptr<LtePhy> enb2phy = enbDevs.Get (1)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
+  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> ();
+  enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr2);
+
+// need to allow for UE Measurement report
+  Simulator::Stop (Seconds (2.000));
+  Simulator::Run ();
+
+
+  for (uint32_t i = 0; i < 12; i++)
+    {
+      double dlSinr1 = testDlSinr1->GetSinr ()->operator[] (i);
+      double dlSinr1Db = 10.0 * std::log10 (dlSinr1);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr1Db, m_commonDlSinrDb, 0.01, "Wrong SINR in DL! (eNB1 --> UE1)");
+
+
+      double dlSinr2 = testDlSinr2->GetSinr ()->operator[] (i);
+      double dlSinr2Db = 10.0 * std::log10 (dlSinr2);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr2Db, m_commonDlSinrDb, 0.01, "Wrong SINR in DL! (eNB2 --> UE2)");
+    }
+
+  for (uint32_t i = 12; i < 18; i++)
+    {
+      double dlSinr1 = testDlSinr1->GetSinr ()->operator[] (i);
+      double dlSinr1Db = 10.0 * std::log10 (dlSinr1);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr1Db, m_edgeDlSinrDb, 0.01, "Wrong SINR in DL! (eNB1 --> UE1)");
+
+
+      double dlSinr2 = testDlSinr2->GetSinr ()->operator[] (i);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr2, 0, 0.01, "Wrong SINR in DL! (eNB2 --> UE2)");
+    }
+
+  for (uint32_t i = 18; i < 24; i++)
+    {
+      double dlSinr1 = testDlSinr1->GetSinr ()->operator[] (i);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr1, 0, 0.01, "Wrong SINR in DL! (eNB1 --> UE1)");
+
+      double dlSinr2 = testDlSinr2->GetSinr ()->operator[] (i);
+      double dlSinr2Db = 10.0 * std::log10 (dlSinr2);
+      NS_TEST_ASSERT_MSG_EQ_TOL (dlSinr2Db, m_edgeDlSinrDb, 0.01, "Wrong SINR in DL! (eNB2 --> UE2)");
+    }
+
+
+  //FR algorithms do not operate in uplink now, so we do not test it
+//  double ulSinr1Db = 10.0 * std::log10 (testUlSinr1->GetSinr ()->operator[] (0));
+//  NS_LOG_DEBUG("ulSinr1Db: "<< ulSinr1Db);
+//  NS_TEST_ASSERT_MSG_EQ_TOL (ulSinr1Db, m_ulSinrDb, 0.01, "Wrong SINR in UL!  (UE1 --> eNB1)");
+//
+//  double ulSinr2Db = 10.0 * std::log10 (testUlSinr2->GetSinr ()->operator[] (0));
+//  NS_LOG_DEBUG("ulSinr2Db: "<< ulSinr2Db);
+//  NS_TEST_ASSERT_MSG_EQ_TOL (ulSinr2Db, m_ulSinrDb, 0.01, "Wrong SINR in UL!  (UE2 --> eNB2)");
+
+  Simulator::Destroy ();
+}
diff -Naur ns-3.20/src/lte/test/lte-test-interference-fr.h ns-3.21/src/lte/test/lte-test-interference-fr.h
--- ns-3.20/src/lte/test/lte-test-interference-fr.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-interference-fr.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,77 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ * Based on lte-test-interference.{h,cc} by Manuel Requena <manuel.requena@cttc.es>
+ *                                          Nicola Baldo <nbaldo@cttc.es>
+ *
+ */
+
+#ifndef LTE_TEST_INTERFERENCE_FR_H
+#define LTE_TEST_INTERFERENCE_FR_H
+
+#include "ns3/test.h"
+
+using namespace ns3;
+
+/**
+ * Test Interference level with FR algorithms
+ */
+class LteInterferenceFrTestSuite : public TestSuite
+{
+public:
+  LteInterferenceFrTestSuite ();
+};
+
+
+class LteInterferenceHardFrTestCase : public TestCase
+{
+public:
+  LteInterferenceHardFrTestCase (std::string name, double d1, double d2, double dlSinr, double ulSinr);
+  virtual ~LteInterferenceHardFrTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  double m_d1;
+  double m_d2;
+  double m_dlSinrDb;
+  double m_ulSinrDb;
+};
+
+class LteInterferenceStrictFrTestCase : public TestCase
+{
+public:
+  LteInterferenceStrictFrTestCase (std::string name, double d1, double d2,
+                                   double commonDlSinr, double commonUlSinr, double edgeDlSinr, double edgeUlSinr,
+                                   uint32_t rspqThreshold);
+  virtual ~LteInterferenceStrictFrTestCase ();
+
+private:
+  virtual void DoRun (void);
+
+  double m_d1;
+  double m_d2;
+  double m_commonDlSinrDb;
+  double m_commonUlSinrDb;
+  double m_edgeDlSinrDb;
+  double m_edgeUlSinrDb;
+
+  uint32_t m_rspqThreshold;
+};
+
+#endif /* LTE_TEST_INTERFERENCE_FR_H */
diff -Naur ns-3.20/src/lte/test/lte-test-link-adaptation.cc ns-3.21/src/lte/test/lte-test-link-adaptation.cc
--- ns-3.20/src/lte/test/lte-test-link-adaptation.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-link-adaptation.cc	2014-09-17 20:03:14.000000000 -0700
@@ -162,6 +162,9 @@
   Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (2));
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
     * Simulation Topology
     */
@@ -204,7 +207,7 @@
   // Use testing chunk processor in the PHY layer
   // It will be used to test that the SNR is as intended
   Ptr<LtePhy> uePhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> (uePhy);
+  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> ();
   uePhy->GetDownlinkSpectrumPhy ()->AddCtrlSinrChunkProcessor (testSinr);
 
   Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
diff -Naur ns-3.20/src/lte/test/lte-test-mimo.cc ns-3.21/src/lte/test/lte-test-mimo.cc
--- ns-3.20/src/lte/test/lte-test-mimo.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-mimo.cc	2014-09-17 20:03:14.000000000 -0700
@@ -121,6 +121,9 @@
   Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010));
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (m_useIdealRrc));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-pathloss-model.cc ns-3.21/src/lte/test/lte-test-pathloss-model.cc
--- ns-3.20/src/lte/test/lte-test-pathloss-model.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-pathloss-model.cc	2014-09-17 20:03:14.000000000 -0700
@@ -25,7 +25,7 @@
 #include "ns3/spectrum-test.h"
 
 #include "ns3/lte-phy-tag.h"
-#include "ns3/lte-sinr-chunk-processor.h"
+#include "ns3/lte-chunk-processor.h"
 
 
 #include <ns3/hybrid-buildings-propagation-loss-model.h>
@@ -36,6 +36,7 @@
 #include <ns3/single-model-spectrum-channel.h>
 #include "ns3/string.h"
 #include "ns3/double.h"
+#include <ns3/boolean.h>
 #include <ns3/building.h>
 #include <ns3/enum.h>
 #include <ns3/net-device-container.h>
@@ -205,6 +206,8 @@
   /**
   * Simulation Topology
   */
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
 
   Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
   //   lteHelper->EnableLogComponents ();
@@ -269,7 +272,7 @@
   // Use testing chunk processor in the PHY layer
   // It will be used to test that the SNR is as intended
   //Ptr<LtePhy> uePhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> (uePhy);
+  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> ();
   uePhy->GetDownlinkSpectrumPhy ()->AddCtrlSinrChunkProcessor (testSinr);
    
 //   Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
diff -Naur ns-3.20/src/lte/test/lte-test-phy-error-model.cc ns-3.21/src/lte/test/lte-test-phy-error-model.cc
--- ns-3.20/src/lte/test/lte-test-phy-error-model.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-phy-error-model.cc	2014-09-17 20:03:14.000000000 -0700
@@ -169,6 +169,9 @@
   Config::SetDefault ("ns3::RrFfMacScheduler::HarqEnabled", BooleanValue (false));
   Config::SetGlobal ("RngRun", IntegerValue (m_rngRun));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /*
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
@@ -322,6 +325,9 @@
   Config::SetDefault ("ns3::RrFfMacScheduler::HarqEnabled", BooleanValue (false));
   Config::SetGlobal ("RngRun", IntegerValue (m_rngRun));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /*
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-rr-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -188,6 +188,9 @@
   // This is needed as the RR scheduler does not allocate resources properly for retransmission
   Config::SetDefault ("ns3::LteRlcAm::TxOpportunityForRetxAlwaysBigEnough", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-sinr-chunk-processor.cc ns-3.21/src/lte/test/lte-test-sinr-chunk-processor.cc
--- ns-3.20/src/lte/test/lte-test-sinr-chunk-processor.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-sinr-chunk-processor.cc	2014-09-17 20:03:14.000000000 -0700
@@ -20,7 +20,7 @@
  */
 
 #include <ns3/log.h>
-
+#include <ns3/spectrum-value.h>
 #include "lte-test-sinr-chunk-processor.h"
 
 NS_LOG_COMPONENT_DEFINE ("LteTestSinrChunkProcessor");
@@ -28,11 +28,9 @@
 namespace ns3 {
 
 
-LteTestSinrChunkProcessor::LteTestSinrChunkProcessor (Ptr<LtePhy> p)
-  : m_phy (p)
+LteTestSinrChunkProcessor::LteTestSinrChunkProcessor ()
 {
-  NS_LOG_FUNCTION (this << p);
-  NS_ASSERT (m_phy);
+  NS_LOG_FUNCTION (this);
 }
 
 LteTestSinrChunkProcessor::~LteTestSinrChunkProcessor ()
@@ -41,6 +39,12 @@
 }
 
 void
+LteTestSinrChunkProcessor::AddCallback (LteChunkProcessorCallback c)
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
 LteTestSinrChunkProcessor::Start ()
 {
   NS_LOG_FUNCTION (this);
@@ -49,7 +53,7 @@
 }
 
 void
-LteTestSinrChunkProcessor::EvaluateSinrChunk (const SpectrumValue& sinr, Time duration)
+LteTestSinrChunkProcessor::EvaluateChunk (const SpectrumValue& sinr, Time duration)
 {
   NS_LOG_FUNCTION (this << sinr << duration);
   if (m_sumSinr == 0)
diff -Naur ns-3.20/src/lte/test/lte-test-sinr-chunk-processor.h ns-3.21/src/lte/test/lte-test-sinr-chunk-processor.h
--- ns-3.20/src/lte/test/lte-test-sinr-chunk-processor.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-sinr-chunk-processor.h	2014-09-17 20:03:14.000000000 -0700
@@ -22,24 +22,24 @@
 #ifndef LTE_TEST_SINR_CHUNK_PROCESSOR_H
 #define LTE_TEST_SINR_CHUNK_PROCESSOR_H
 
-#include "ns3/lte-sinr-chunk-processor.h"
+#include "ns3/lte-chunk-processor.h"
 
 namespace ns3 {
 
-
 /**
- * This custom LteSinrChunkProcessor averages the calculated SINR over time.
+ * This custom LteTestSinrChunkProcessor averages the calculated SINR over time.
  * It is plugged on the receiving SpectrumPhy and therefore
  * receives the SINR SpectrumValue calculated by the LteInterference module.
  */
-class LteTestSinrChunkProcessor : public LteSinrChunkProcessor
+class LteTestSinrChunkProcessor : public LteChunkProcessor
 {
 public:
-  LteTestSinrChunkProcessor (Ptr<LtePhy> p);
+  LteTestSinrChunkProcessor ();
   virtual ~LteTestSinrChunkProcessor ();
 
+  virtual void AddCallback (LteChunkProcessorCallback c);
   virtual void Start ();
-  virtual void EvaluateSinrChunk (const SpectrumValue& sinr, Time duration);
+  virtual void EvaluateChunk (const SpectrumValue& sinr, Time duration);
   virtual void End ();
 
   Ptr<SpectrumValue> GetSinr ();
@@ -48,7 +48,6 @@
   Ptr<SpectrumValue> m_sumSinr;
   Ptr<SpectrumValue> m_sinr;
   Time m_totDuration;
-  Ptr<LtePhy> m_phy;
 };
 
 
diff -Naur ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -207,6 +207,9 @@
 
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -192,6 +192,9 @@
 
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-tta-ff-mac-scheduler.cc ns-3.21/src/lte/test/lte-test-tta-ff-mac-scheduler.cc
--- ns-3.20/src/lte/test/lte-test-tta-ff-mac-scheduler.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-tta-ff-mac-scheduler.cc	2014-09-17 20:03:14.000000000 -0700
@@ -195,6 +195,9 @@
 
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   /**
    * Initialize Simulation Scenario: 1 eNB and m_nUser UEs
    */
diff -Naur ns-3.20/src/lte/test/lte-test-ue-measurements.cc ns-3.21/src/lte/test/lte-test-ue-measurements.cc
--- ns-3.20/src/lte/test/lte-test-ue-measurements.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-ue-measurements.cc	2014-09-17 20:03:14.000000000 -0700
@@ -147,6 +147,9 @@
   lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel"));
   lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (false));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   // LogComponentEnable ("LteUeMeasurementsTest", LOG_LEVEL_ALL);
 
   // Create Nodes: eNodeB and UE
@@ -201,11 +204,11 @@
   // we plug in two instances, one for DL and one for UL
 
   Ptr<LtePhy> ue1Phy = ueDevs1.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> (ue1Phy);
+  Ptr<LteTestSinrChunkProcessor> testDlSinr1 = Create<LteTestSinrChunkProcessor> ();
   ue1Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr1);
 
   Ptr<LtePhy> enb1phy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> (enb1phy);
+  Ptr<LteTestSinrChunkProcessor> testUlSinr1 = Create<LteTestSinrChunkProcessor> ();
   enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr1);
 
   Config::Connect ("/NodeList/2/DeviceList/0/LteUePhy/ReportUeMeasurements",
@@ -216,11 +219,11 @@
   // same as above for eNB2 and UE2
 
   Ptr<LtePhy> ue2Phy = ueDevs2.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> (ue2Phy);
+  Ptr<LteTestSinrChunkProcessor> testDlSinr2 = Create<LteTestSinrChunkProcessor> ();
   ue2Phy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr2);
 
   Ptr<LtePhy> enb2phy = enbDevs.Get (1)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> (enb2phy);
+  Ptr<LteTestSinrChunkProcessor> testUlSinr2 = Create<LteTestSinrChunkProcessor> ();
   enb1phy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr2);
 
   Config::Connect ("/NodeList/3/DeviceList/0/LteUePhy/ReportUeMeasurements",
@@ -574,6 +577,9 @@
                            StringValue ("ns3::FriisSpectrumPropagationLossModel"));
   lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   // Create Nodes: eNodeB and UE
   NodeContainer enbNodes;
   NodeContainer ueNodes;
@@ -1156,6 +1162,9 @@
                            StringValue ("ns3::FriisSpectrumPropagationLossModel"));
   lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   // Create Nodes: eNodeB and UE
   NodeContainer enbNodes;
   NodeContainer ueNodes;
@@ -1706,6 +1715,10 @@
                            StringValue ("ns3::FriisSpectrumPropagationLossModel"));
   lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (true));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
+
   // Create Nodes: eNodeB and UE
   NodeContainer enbNodes;
   NodeContainer ueNodes;
diff -Naur ns-3.20/src/lte/test/lte-test-uplink-power-control.cc ns-3.21/src/lte/test/lte-test-uplink-power-control.cc
--- ns-3.20/src/lte/test/lte-test-uplink-power-control.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-uplink-power-control.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,528 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#include <ns3/simulator.h>
+#include <ns3/log.h>
+#include <ns3/callback.h>
+#include <ns3/config.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/enum.h>
+#include <ns3/boolean.h>
+#include <ns3/pointer.h>
+#include <ns3/integer.h>
+
+#include "ns3/mobility-helper.h"
+#include "ns3/lte-helper.h"
+
+#include <ns3/ff-mac-scheduler.h>
+#include <ns3/lte-enb-net-device.h>
+#include <ns3/lte-enb-phy.h>
+#include <ns3/lte-enb-rrc.h>
+#include <ns3/lte-ue-net-device.h>
+#include <ns3/lte-ue-phy.h>
+#include <ns3/lte-ue-rrc.h>
+
+#include "lte-ffr-simple.h"
+#include "lte-test-sinr-chunk-processor.h"
+#include <ns3/lte-common.h>
+
+#include "lte-test-uplink-power-control.h"
+#include <ns3/lte-rrc-sap.h>
+
+NS_LOG_COMPONENT_DEFINE ("LteUplinkPowerControlTest");
+
+using namespace ns3;
+
+/**
+ * TestSuite
+ */
+
+LteUplinkPowerControlTestSuite::LteUplinkPowerControlTestSuite ()
+  : TestSuite ("lte-uplink-power-control", SYSTEM)
+{
+//  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_DEBUG);
+//  LogComponentEnable ("LteUplinkPowerControlTest", logLevel);
+  NS_LOG_INFO ("Creating LteUplinkPowerControlTestSuite");
+
+  AddTestCase (new LteUplinkOpenLoopPowerControlTestCase ("OpenLoopTest1"), TestCase::QUICK);
+  AddTestCase (new LteUplinkClosedLoopPowerControlAbsoluteModeTestCase ("ClosedLoopAbsoluteModeTest1"), TestCase::QUICK);
+  AddTestCase (new LteUplinkClosedLoopPowerControlAccumulatedModeTestCase ("ClosedLoopAccumulatedModeTest1"), TestCase::QUICK);
+}
+
+static LteUplinkPowerControlTestSuite lteUplinkPowerControlTestSuite;
+
+/**
+ * TestCase Data
+ */
+void
+PuschTxPowerNofitication (LteUplinkPowerControlTestCase *testcase,
+                          uint16_t cellId, uint16_t rnti, double txPower)
+{
+  testcase->PuschTxPowerTrace (cellId, rnti, txPower);
+}
+
+void
+PucchTxPowerNofitication (LteUplinkPowerControlTestCase *testcase,
+                          uint16_t cellId, uint16_t rnti, double txPower)
+{
+  testcase->PucchTxPowerTrace (cellId, rnti, txPower);
+}
+
+void
+SrsTxPowerNofitication (LteUplinkPowerControlTestCase *testcase,
+                        uint16_t cellId, uint16_t rnti, double txPower)
+{
+  testcase->SrsTxPowerTrace (cellId, rnti, txPower);
+}
+
+LteUplinkPowerControlTestCase::LteUplinkPowerControlTestCase (std::string name)
+  : TestCase (name)
+{
+  NS_LOG_INFO ("Creating LteUplinkPowerControlTestCase");
+}
+
+LteUplinkPowerControlTestCase::~LteUplinkPowerControlTestCase ()
+{
+}
+
+void
+LteUplinkPowerControlTestCase::TeleportUe (uint32_t x, uint32_t y,
+                                           double expectedPuschTxPower, double expectedPucchTxPower, double expectedSrsTxPower)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("Teleport UE to : (" << x << ", " << y << ", 0)");
+
+  m_ueMobility->SetPosition (Vector (x, y, 0.0));
+  m_teleportTime = Simulator::Now ();
+
+  m_expectedPuschTxPower = expectedPuschTxPower;
+  m_expectedPucchTxPower = expectedPucchTxPower;
+  m_expectedSrsTxPower = expectedSrsTxPower;
+}
+
+void
+LteUplinkPowerControlTestCase::SetTpcConfiguration (uint32_t tpc, uint32_t tpcNum,
+                                                    double expectedPuschTxPower, double expectedPucchTxPower, double expectedSrsTxPower)
+{
+  NS_LOG_FUNCTION (this);
+
+  m_teleportTime = Simulator::Now ();
+
+  m_expectedPuschTxPower = expectedPuschTxPower;
+  m_expectedPucchTxPower = expectedPucchTxPower;
+  m_expectedSrsTxPower = expectedSrsTxPower;
+
+  m_ffrSimple->SetTpc (tpc, tpcNum, m_accumulatedMode);
+}
+
+void
+LteUplinkPowerControlTestCase::PuschTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("PuschTxPower : CellId: " << cellId << " RNTI: " << rnti << " PuschTxPower: " << txPower);
+  //wait because of RSRP filtering
+  if ( (Simulator::Now () - m_teleportTime ) < MilliSeconds (50))
+    {
+      return;
+    }
+  NS_TEST_ASSERT_MSG_EQ_TOL (txPower, m_expectedPuschTxPower, 0.01, "Wrong Pusch Tx Power");
+}
+
+void
+LteUplinkPowerControlTestCase::PucchTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("PucchTxPower : CellId: " << cellId << " RNTI: " << rnti << " PuschTxPower: " << txPower);
+  //wait because of RSRP filtering
+  if ( (Simulator::Now () - m_teleportTime ) < MilliSeconds (50))
+    {
+      return;
+    }
+
+  NS_TEST_ASSERT_MSG_EQ_TOL (txPower, m_expectedPucchTxPower, 0.01, "Wrong Pucch Tx Power");
+}
+
+void
+LteUplinkPowerControlTestCase::SrsTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower)
+{
+  NS_LOG_FUNCTION (this);
+  NS_LOG_DEBUG ("SrsTxPower : CellId: " << cellId << " RNTI: " << rnti << " PuschTxPower: " << txPower);
+  //wait because of RSRP filtering
+  if ( (Simulator::Now () - m_teleportTime ) < MilliSeconds (50))
+    {
+      return;
+    }
+  NS_TEST_ASSERT_MSG_EQ_TOL (txPower, m_expectedSrsTxPower, 0.01, "Wrong Srs Tx Power");
+}
+
+void
+LteUplinkPowerControlTestCase::DoRun (void)
+{
+}
+
+
+LteUplinkOpenLoopPowerControlTestCase::LteUplinkOpenLoopPowerControlTestCase (std::string name)
+  : LteUplinkPowerControlTestCase ("Uplink Open Loop Power Control: " + name)
+{
+  NS_LOG_INFO ("Creating LteUplinkPowerControlTestCase");
+}
+
+LteUplinkOpenLoopPowerControlTestCase::~LteUplinkOpenLoopPowerControlTestCase ()
+{
+}
+
+void
+LteUplinkOpenLoopPowerControlTestCase::DoRun (void)
+{
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (false));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteUePowerControl::PoNominalPusch", IntegerValue (-90));
+  Config::SetDefault ("ns3::LteUePowerControl::PsrsOffset", IntegerValue (9));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+
+  uint8_t bandwidth = 25;
+  double d1 = 0;
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes);
+
+/*   the topology is the following:
+ *
+ *   eNB1-------------------------UE
+ *                  d1
+ */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));                  // eNB1
+  positionAlloc->Add (Vector (d1, 0.0, 0.0));           // UE1
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes.Get (0)->GetObject<MobilityModel> ();
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  Ptr<LteUePhy> uePhy = DynamicCast<LteUePhy>( ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy () );
+  m_ueUpc = uePhy->GetUplinkPowerControl ();
+
+  m_ueUpc->TraceConnectWithoutContext ("ReportPuschTxPower",
+                                       MakeBoundCallback (&PuschTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportPucchTxPower",
+                                       MakeBoundCallback (&PucchTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportSrsTxPower",
+                                       MakeBoundCallback (&SrsTxPowerNofitication, this));
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate a data radio bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  //Changing UE position
+  Simulator::Schedule (MilliSeconds (0),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 0, 0, -40, -40, -40);
+  Simulator::Schedule (MilliSeconds (200),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 200, 0, 8.9745, 8.9745, 11.9745);
+  Simulator::Schedule (MilliSeconds (300),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 400, 0, 14.9951, 14.9951, 17.9951 );
+  Simulator::Schedule (MilliSeconds (400),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 600, 0, 18.5169, 18.5169, 21.5169 );
+  Simulator::Schedule (MilliSeconds (500),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 800, 0, 21.0157, 21.0157, 23 );
+  Simulator::Schedule (MilliSeconds (600),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 1000, 0, 22.9539, 22.9539, 23 );
+  Simulator::Schedule (MilliSeconds (700),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 1200, 0, 23, 10, 23 );
+  Simulator::Schedule (MilliSeconds (800),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 400, 0, 14.9951, 14.9951, 17.9951 );
+  Simulator::Schedule (MilliSeconds (900),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 800, 0, 21.0157, 21.0157, 23 );
+  Simulator::Schedule (MilliSeconds (1000),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 0, 0, -40, -40, -40 );
+  Simulator::Schedule (MilliSeconds (1100),
+                       &LteUplinkPowerControlTestCase::TeleportUe, this, 100, 0, 2.9539, 2.9539, 5.9539 );
+  Simulator::Stop (Seconds (1.200));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+}
+
+LteUplinkClosedLoopPowerControlAbsoluteModeTestCase::LteUplinkClosedLoopPowerControlAbsoluteModeTestCase (std::string name)
+  : LteUplinkPowerControlTestCase ("Uplink Closed Loop Power Control: " + name)
+{
+  NS_LOG_INFO ("Creating LteUplinkClosedLoopPowerControlAbsoluteModeTestCase");
+}
+
+LteUplinkClosedLoopPowerControlAbsoluteModeTestCase::~LteUplinkClosedLoopPowerControlAbsoluteModeTestCase ()
+{
+}
+
+void
+LteUplinkClosedLoopPowerControlAbsoluteModeTestCase::DoRun (void)
+{
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (false));
+  Config::SetDefault ("ns3::LteUePowerControl::PoNominalPusch", IntegerValue (-90));
+  Config::SetDefault ("ns3::LteUePowerControl::PsrsOffset", IntegerValue (9));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSimple");
+
+  uint8_t bandwidth = 25;
+  double d1 = 100;
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes);
+
+/*   the topology is the following:
+ *
+ *   eNB1-------------------------UE
+ *                  d1
+ */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));                  // eNB1
+  positionAlloc->Add (Vector (d1, 0.0, 0.0));           // UE1
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes.Get (0)->GetObject<MobilityModel> ();
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  Ptr<LteUePhy> uePhy = DynamicCast<LteUePhy>( ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy () );
+  m_ueUpc = uePhy->GetUplinkPowerControl ();
+
+  m_ueUpc->TraceConnectWithoutContext ("ReportPuschTxPower",
+                                       MakeBoundCallback (&PuschTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportPucchTxPower",
+                                       MakeBoundCallback (&PucchTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportSrsTxPower",
+                                       MakeBoundCallback (&SrsTxPowerNofitication, this));
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate a data radio bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  PointerValue tmp;
+  enbDevs.Get (0)->GetAttribute ("LteFfrAlgorithm", tmp);
+  m_ffrSimple = DynamicCast<LteFfrSimple>(tmp.GetObject ());
+  m_accumulatedMode = false;
+
+  //Changing TPC value
+  Simulator::Schedule (MilliSeconds (0),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 1, 0, 1.9539, 1.9539, 4.9539);
+  Simulator::Schedule (MilliSeconds (100),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 0, -1.0461, -1.0461, 1.9539);
+  Simulator::Schedule (MilliSeconds (200),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 0, 3.9539, 3.9539, 6.9539);
+  Simulator::Schedule (MilliSeconds (300),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 3, 0, 6.9539, 6.9539, 9.9539);
+  Simulator::Schedule (MilliSeconds (400),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 0, -1.0461, -1.0461, 1.9539);
+  Simulator::Schedule (MilliSeconds (500),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 1, 0, 1.9539, 1.9539, 4.9539);
+  Simulator::Schedule (MilliSeconds (600),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 3, 0, 6.9539, 6.9539, 9.9539);
+  Simulator::Schedule (MilliSeconds (800),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 0, 3.9539, 3.9539, 6.9539);
+  Simulator::Stop (Seconds (1.000));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+}
+
+LteUplinkClosedLoopPowerControlAccumulatedModeTestCase::LteUplinkClosedLoopPowerControlAccumulatedModeTestCase (std::string name)
+  : LteUplinkPowerControlTestCase ("Uplink Closed Loop Power Control: " + name)
+{
+  NS_LOG_INFO ("Creating LteUplinkClosedLoopPowerControlAccumulatedModeTestCase");
+}
+
+LteUplinkClosedLoopPowerControlAccumulatedModeTestCase::~LteUplinkClosedLoopPowerControlAccumulatedModeTestCase ()
+{
+}
+
+void
+LteUplinkClosedLoopPowerControlAccumulatedModeTestCase::DoRun (void)
+{
+  Config::Reset ();
+  Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (false));
+
+  double eNbTxPower = 30;
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (eNbTxPower));
+  Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (true));
+
+  Config::SetDefault ("ns3::LteUePowerControl::ClosedLoop", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::AccumulationEnabled", BooleanValue (true));
+  Config::SetDefault ("ns3::LteUePowerControl::PoNominalPusch", IntegerValue (-90));
+  Config::SetDefault ("ns3::LteUePowerControl::PsrsOffset", IntegerValue (9));
+
+  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
+  lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSimple");
+
+  uint8_t bandwidth = 25;
+  double d1 = 10;
+
+  // Create Nodes: eNodeB and UE
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+  enbNodes.Create (1);
+  ueNodes.Create (1);
+  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes);
+
+/*   the topology is the following:
+ *
+ *   eNB1-------------------------UE
+ *                  d1
+ */
+
+  // Install Mobility Model
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));                  // eNB1
+  positionAlloc->Add (Vector (d1, 0.0, 0.0));           // UE1
+
+  MobilityHelper mobility;
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (positionAlloc);
+  mobility.Install (allNodes);
+  m_ueMobility = ueNodes.Get (0)->GetObject<MobilityModel> ();
+
+  // Create Devices and install them in the Nodes (eNB and UE)
+  NetDeviceContainer enbDevs;
+  NetDeviceContainer ueDevs;
+  lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler");
+
+  lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
+  lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
+
+  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
+  ueDevs = lteHelper->InstallUeDevice (ueNodes);
+
+  Ptr<LteUePhy> uePhy = DynamicCast<LteUePhy>( ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy () );
+  m_ueUpc = uePhy->GetUplinkPowerControl ();
+
+  m_ueUpc->TraceConnectWithoutContext ("ReportPuschTxPower",
+                                       MakeBoundCallback (&PuschTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportPucchTxPower",
+                                       MakeBoundCallback (&PucchTxPowerNofitication, this));
+  m_ueUpc->TraceConnectWithoutContext ("ReportSrsTxPower",
+                                       MakeBoundCallback (&SrsTxPowerNofitication, this));
+
+  // Attach a UE to a eNB
+  lteHelper->Attach (ueDevs, enbDevs.Get (0));
+
+  // Activate a data radio bearer
+  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
+  EpsBearer bearer (q);
+  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);
+
+  PointerValue tmp;
+  enbDevs.Get (0)->GetAttribute ("LteFfrAlgorithm", tmp);
+  m_ffrSimple = DynamicCast<LteFfrSimple>(tmp.GetObject ());
+  m_accumulatedMode = true;
+
+  //Changing TPC value
+  Simulator::Schedule (MilliSeconds (0),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 1, 0, -17.0461, -17.0461, -14.0461);
+  Simulator::Schedule (MilliSeconds (100),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 20, -37.0461, -37.0461, -34.0461);
+  Simulator::Schedule (MilliSeconds (200),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 20, -40, 10, -37.0461);
+  Simulator::Schedule (MilliSeconds (300),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 1, -39.0461, -39.0461, -36.0461);
+  Simulator::Schedule (MilliSeconds (400),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 3, 10, -9.0461, -9.0461, -6.0461);
+  Simulator::Schedule (MilliSeconds (500),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 15, 5.9539, 5.9539, 8.9539);
+  Simulator::Schedule (MilliSeconds (600),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 3, 1, 8.9539, 8.9539, 11.9539);
+  Simulator::Schedule (MilliSeconds (700),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 10, 18.9539, 18.9539, 21.9539);
+  Simulator::Schedule (MilliSeconds (800),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 20, 23, 23, 23);
+  Simulator::Schedule (MilliSeconds (900),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 1, 22.9539, 22.9539, 23);
+  Simulator::Schedule (MilliSeconds (1000),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 0, 20, 2.9539, 2.9539, 5.9539);
+  Simulator::Schedule (MilliSeconds (1100),
+                       &LteUplinkPowerControlTestCase::SetTpcConfiguration, this, 2, 5, 7.9539, 7.9539, 10.9539);
+  Simulator::Stop (Seconds (1.200));
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+}
diff -Naur ns-3.20/src/lte/test/lte-test-uplink-power-control.h ns-3.21/src/lte/test/lte-test-uplink-power-control.h
--- ns-3.20/src/lte/test/lte-test-uplink-power-control.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/lte-test-uplink-power-control.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,102 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Piotr Gawlowicz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Piotr Gawlowicz <gawlowicz.p@gmail.com>
+ *
+ */
+
+#ifndef LTE_TEST_UPLINK_POWER_CONTROL_H
+#define LTE_TEST_UPLINK_POWER_CONTROL_H
+
+#include "ns3/spectrum-value.h"
+#include "ns3/spectrum-test.h"
+#include "ns3/test.h"
+
+using namespace ns3;
+
+/**
+ * Test 1.1 Uplink Power Control
+ */
+class LteUplinkPowerControlTestSuite : public TestSuite
+{
+public:
+  LteUplinkPowerControlTestSuite ();
+};
+
+class LteUplinkPowerControlTestCase : public TestCase
+{
+public:
+  LteUplinkPowerControlTestCase (std::string name);
+  virtual ~LteUplinkPowerControlTestCase ();
+
+  void TeleportUe (uint32_t x, uint32_t y,
+                   double expectedPuschTxPower, double expectedPucchTxPower, double expectedSrsTxPower);
+
+  void SetTpcConfiguration (uint32_t tpc, uint32_t tpcNum,
+                            double expectedPuschTxPower, double expectedPucchTxPower, double expectedSrsTxPower);
+
+  void PuschTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower);
+  void PucchTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower);
+  void SrsTxPowerTrace (uint16_t cellId, uint16_t rnti, double txPower);
+
+protected:
+  virtual void DoRun (void);
+
+  Ptr<MobilityModel> m_ueMobility;
+  Time m_teleportTime;
+
+  double m_expectedPuschTxPower;
+  double m_expectedPucchTxPower;
+  double m_expectedSrsTxPower;
+
+  Ptr<LteUePowerControl> m_ueUpc;
+  bool m_accumulatedMode;
+
+  Ptr<LteFfrSimple> m_ffrSimple;
+};
+
+class LteUplinkOpenLoopPowerControlTestCase : public LteUplinkPowerControlTestCase
+{
+public:
+  LteUplinkOpenLoopPowerControlTestCase (std::string name);
+  virtual ~LteUplinkOpenLoopPowerControlTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+class LteUplinkClosedLoopPowerControlAbsoluteModeTestCase : public LteUplinkPowerControlTestCase
+{
+public:
+  LteUplinkClosedLoopPowerControlAbsoluteModeTestCase (std::string name);
+  virtual ~LteUplinkClosedLoopPowerControlAbsoluteModeTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+class LteUplinkClosedLoopPowerControlAccumulatedModeTestCase : public LteUplinkPowerControlTestCase
+{
+public:
+  LteUplinkClosedLoopPowerControlAccumulatedModeTestCase (std::string name);
+  virtual ~LteUplinkClosedLoopPowerControlAccumulatedModeTestCase ();
+
+private:
+  virtual void DoRun (void);
+};
+
+#endif /* LTE_TEST_UPLINK_POWER_CONTROL_H */
diff -Naur ns-3.20/src/lte/test/lte-test-uplink-sinr.cc ns-3.21/src/lte/test/lte-test-uplink-sinr.cc
--- ns-3.20/src/lte/test/lte-test-uplink-sinr.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/lte-test-uplink-sinr.cc	2014-09-17 20:03:14.000000000 -0700
@@ -144,7 +144,7 @@
   dlPhy->SetCellId (cellId);
   ulPhy->SetCellId (cellId);
 
-  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
+  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> ();
   ulPhy->AddDataSinrChunkProcessor (chunkProcessor);
 
   /**
@@ -296,7 +296,7 @@
   Simulator::Run ();
 
   /**
-   * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
+   * Check that the values passed to LteChunkProcessor::EvaluateChunk () correspond
    * to known values which have been calculated offline (with octave) for the generated signals
    */
   Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
@@ -345,7 +345,7 @@
   dlPhy->SetCellId (cellId);
   ulPhy->SetCellId (cellId);
   
-  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> (uePhy->GetObject<LtePhy> ());
+  Ptr<LteTestSinrChunkProcessor> chunkProcessor = Create<LteTestSinrChunkProcessor> ();
   ulPhy->AddCtrlSinrChunkProcessor (chunkProcessor);
   
   /**
@@ -466,7 +466,7 @@
   Simulator::Run ();
   
   /**
-  * Check that the values passed to LteSinrChunkProcessor::EvaluateSinrChunk () correspond
+  * Check that the values passed to LteChunkProcessor::EvaluateChunk () correspond
   * to known values which have been calculated offline (with octave) for the generated signals
   */
   Ptr<SpectrumValue> calculatedSinr = chunkProcessor->GetSinr ();
diff -Naur ns-3.20/src/lte/test/reference/lte_cqi_generation.m ns-3.21/src/lte/test/reference/lte_cqi_generation.m
--- ns-3.20/src/lte/test/reference/lte_cqi_generation.m	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/reference/lte_cqi_generation.m	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,86 @@
+clear all;
+close all;
+
+%% LTE from theory to practice
+%% Table 22.7 Reference sensitivity.
+
+fdl = 2120e6;  % DL carrier freq Hz, EARFCN = 100
+ful = 1930e6;  % UL carrier freq Hz, EARFCN = 18100 
+
+nrbsControl = 25; % tx bandwidth configuration in number of RBs
+bwControl = nrbsControl * 180000; % bandwidth in Hz, note that this is smaller than
+		    % the nominal Channel Bandwdith, see TS 36.101 fig 5.6-1
+
+nrbsData = 12; % tx bandwidth configuration in number of RBs
+bwData = nrbsData * 180000; % bandwidth in Hz, note that this is smaller than
+		    % the nominal Channel Bandwdith, see TS 36.101 fig 5.6-1
+
+kT = -174; % noise PSD in dBm / Hz
+ndBmData = kT + 10*log10(bwData);  % noise power dBm
+ndBmControl = kT + 10*log10(bwControl);  % noise power dBm
+
+dlpdBm = 30;  % tx power dBm in DL
+dlp = 10.^((dlpdBm - 30)/10); %% tx pow in W in DL
+dlnf = 9; % receiver noise figure in dB in DL
+dlnControl = 10.^((ndBmControl-30+dlnf)/10); %% noise in W in DL
+dlnData = 10.^((ndBmData-30+dlnf)/10); %% noise in W in DL
+
+ulpdBm = 10;  % tx power dBm in UL
+ulp = 10.^((ulpdBm - 30)/10); %% tx pow in W in UL
+ulnf = 5; % receiver noise figure in dB in UL
+uln = 10.^((ndBmControl-30+ulnf)/10); %% noise in W in UL
+
+ber = 0.00005;
+gamma = -log (5*ber)./1.5;
+
+
+%% distances
+%%           d1                   d2  
+%%  eNB1-------------UE1-UE2-----------eNB2
+%%
+
+d1 = 500;
+d2 = 500;
+
+%% propagation gains (linear)
+%%           g11dl             g21dl 
+%%  eNB1-------------UE1-UE2-----------eNB2
+%%           g11ul             g21ul 
+%%              
+
+g11dl = gain_freespace (d1, fdl);
+g11ul = gain_freespace (d1, ful);
+g21dl = gain_freespace (d2, fdl);
+g21ul = gain_freespace (d2, ful);
+
+%% SINR (linear)
+privateRbDlsinr = dlp*g11dl / (dlnControl);
+privateRbUlsinr = ulp*g11ul / (ulp*g21ul + uln); %% new CQI generation approach is only for DL, so in UL CQI is the same
+commonRbDlsinr = dlp*g11dl*24 / (dlp*g21dl*12 + dlnData);
+commonRbUlsinr = ulp*g11ul / (ulp*g21ul + uln);
+
+%% SINR (dB)
+privateRbDlsinrdB = 10.*log10(privateRbDlsinr);
+privateRbUlsinrdB = 10.*log10(privateRbUlsinr);
+commonRbDlsinrdB = 10.*log10(commonRbDlsinr);
+commonRbUlsinrdB = 10.*log10(commonRbUlsinr);
+
+%% Spectal Efficiency
+privateRbDlse = log2(1 + privateRbDlsinr./gamma)
+privateRbUlse = log2(1 + privateRbUlsinr./gamma)
+commonRbDlse = log2(1 + commonRbDlsinr./gamma)
+commonRbUlse = log2(1 + commonRbUlsinr./gamma)
+
+%% to get the MCS, you need to do a manual lookup into 3GPP R1-081483
+%% starting from the spectral efficiency value.
+%% See the Testing section in the LTE module documentation for more info
+%% on how this is done. You might as well look into lte_amc.m
+
+commonRbDlMsc = 4;
+commonRbUlMsc = 2;
+
+privateRbDlMsc = 28;
+privateRbUlMsc = 2; %% new CQI generation approach is only for DL, so in UL CQI is the same
+
+printf("AddTestCase (new LteCqiGenerationTestCase (\"UsePdcchForCqiGeneration\", \"true\", %d, %d , ));\n", commonRbDlMsc, commonRbUlMsc)
+printf("AddTestCase (new LteCqiGenerationTestCase (\"UsePdcchForCqiGeneration\", \"false\", %d, %d , ));\n", privateRbDlMsc, commonRbUlMsc)
diff -Naur ns-3.20/src/lte/test/reference/lte_frequency_reuse.m ns-3.21/src/lte/test/reference/lte_frequency_reuse.m
--- ns-3.20/src/lte/test/reference/lte_frequency_reuse.m	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/reference/lte_frequency_reuse.m	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,73 @@
+clear all;
+close all;
+
+fdl = 2120e6;  % DL carrier freq Hz, EARFCN = 100
+ful = 1930e6;  % UL carrier freq Hz, EARFCN = 18100 
+nrbs = 25; % tx bandwidth configuration in number of RBs
+dlpdBm = 30;  % tx power dBm in DL, referenceSignalPower
+dlp = 10.^((dlpdBm - 30)/10); %% tx pow in W in DL
+
+
+%%DOWNLINK
+P_A = 0;   %% << change this value to simulate Downlink Power Allocation
+PdschPower = 10.^((dlpdBm+ P_A - 30)/10);
+printf("Expexted Pdsch Power: %f \n", PdschPower)
+
+
+%%UPLINK 
+%% Uplink Power Control Parameters
+Pcmax = 23;
+Pcmin = -40;
+MPusch = 6; %%number of RB used for UL transmission
+PoNominalPusch = -80;
+PoUePusch = 0;
+PsrsOffset = 7;
+alpha = 1;
+deltaTF = 0;
+PoPusch = PoNominalPusch + PoUePusch;
+
+%% Closed Loop Mode
+%% change fc value to simulate closed loop mode
+%%TS36.213 Table 5.1.1.1-2
+%%   TPC   |   Accumulated Mode  |  Absolute Mode
+%%------------------------------------------------
+%%    0    |         -1          |      -4
+%%    1    |          0          |      -1
+%%    2    |          1          |       1
+%%    3    |          3          |       4
+%%------------------------------------------------
+
+
+%% distances
+%%                d1  
+%%  eNB1---------------------UE1
+%%
+d1 = 200;
+fc = -1;
+
+%% different FR schemes have different minimal Uplink sub-bandwidth
+MPusch = 6;
+
+%% pathloss
+%%             pathloss  
+%%  eNB1---------------------UE1
+%%         
+
+pathloss = path_loss (d1, fdl);
+pathlossdB = 10.*log10(pathloss);
+pathlossdB = -pathlossdB;
+
+%% PUSCH TX POWER 
+PuschPowerdB = 10*log10(MPusch) + PoPusch + alpha * pathlossdB + deltaTF + fc;
+
+if (PuschPowerdB > Pcmax)
+  PuschPowerdB = Pcmax;
+endif
+
+if (PuschPowerdB < Pcmin) 
+  PuschPowerdB = Pcmin;
+endif
+
+PuschPower = 10.^((PuschPowerdB - 30 )/10);
+printf("Expexted Pusch Power: %f \n", PuschPower)
+
diff -Naur ns-3.20/src/lte/test/reference/lte_link_budget_interference_fr.m ns-3.21/src/lte/test/reference/lte_link_budget_interference_fr.m
--- ns-3.20/src/lte/test/reference/lte_link_budget_interference_fr.m	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/reference/lte_link_budget_interference_fr.m	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,73 @@
+clear all;
+close all;
+
+%% LTE from theory to practice
+%% Table 22.7 Reference sensitivity.
+
+fdl = 2120e6;  % DL carrier freq Hz, EARFCN = 100
+ful = 1930e6;  % UL carrier freq Hz, EARFCN = 18100 
+nrbs = 25; % tx bandwidth configuration in number of RBs
+bw = nrbs * 180000; % bandwidth in Hz, note that this is smaller than
+		    % the nominal Channel Bandwdith, see TS 36.101 fig 5.6-1
+kT = -174; % noise PSD in dBm / Hz
+ndBm = kT + 10*log10(bw);  % noise power dBm
+
+dlpdBm = 30;  % tx power dBm in DL
+dlp = 10.^((dlpdBm - 30)/10); %% tx pow in W in DL
+dlnf = 9; % receiver noise figure in dB in DL
+dln = 10.^((ndBm-30+dlnf)/10); %% noise in W in DL
+
+ulpdBm = 10;  % tx power dBm in UL
+ulp = 10.^((ulpdBm - 30)/10); %% tx pow in W in UL
+ulnf = 5; % receiver noise figure in dB in UL
+uln = 10.^((ndBm-30+ulnf)/10); %% noise in W in UL
+
+ber = 0.00005;
+gamma = -log (5*ber)./1.5;
+
+
+
+%% distances
+%%         d2  
+%%  UE1-----------eNB2
+%%   |             |
+%% d1|             |d1
+%%   |     d2      |
+%%  eNB1----------UE2
+%%
+
+d1 = 50;
+for d2 = [20 50 200 500]
+
+  %% propagation gains (linear)
+  %%             g21dl  
+  %%      UE1<----------eNB2
+  %%      ^ |              
+  %%g11dl1| |g11ul          
+  %%      | v            
+  %%      eNB1<---------UE2
+  %%             g21ul
+
+  g11dl = gain_freespace (d1, fdl);
+  g11ul = gain_freespace (d1, ful);
+  g21dl = gain_freespace (d2, fdl);
+  g21ul = gain_freespace (d2, ful);
+
+  %% SINR (linear)
+  privateRbDlsinr = dlp*g11dl / (dln);
+  privateRbUlsinr = ulp*g11ul / (uln);
+  commonRbDlsinr = dlp*g11dl / (dlp*g21dl + dln);
+  commonRbUlsinr = ulp*g11ul / (ulp*g21ul + uln);
+
+  %% SINR (dB)
+  privateRbDlsinrdB = 10.*log10(privateRbDlsinr);
+  privateRbUlsinrdB = 10.*log10(privateRbUlsinr);
+  commonRbDlsinrdB = 10.*log10(commonRbDlsinr);
+  commonRbUlsinrdB = 10.*log10(commonRbUlsinr);
+
+
+  %%printf("AddTestCase (new LteInterferenceHardFrTestCase (\"d1=%d, d2=%d\", % f, %f, %f, %f , ));\n", d1, d2, d1, d2, privateRbDlsinr, privateRbUlsinr)
+
+  printf("AddTestCase (new LteInterferenceStrictFrTestCase (\"d1=%d, d2=%d\", % f, %f, %f, %f , %f, %f , ));\n", d1, d2, d1, d2, commonRbDlsinr, commonRbUlsinr, privateRbDlsinr, privateRbUlsinr)
+  
+endfor
diff -Naur ns-3.20/src/lte/test/reference/lte_uplink_power_control.m ns-3.21/src/lte/test/reference/lte_uplink_power_control.m
--- ns-3.20/src/lte/test/reference/lte_uplink_power_control.m	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/reference/lte_uplink_power_control.m	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,135 @@
+clear all;
+close all;
+
+fdl = 2120e6;  % DL carrier freq Hz, EARFCN = 100
+nrbs = 25; % tx bandwidth configuration in number of RBs
+dlpdBm = 30;  % tx power dBm in DL, referenceSignalPower
+dlp = 10.^((dlpdBm - 30)/10); %% tx pow in W in DL ,referenceSignalPower
+
+%% Uplink Power Control Parameters
+Pcmax = 23;
+Pcmin = -40;
+MPusch = 25; %%number of RB used for UL transmission
+PoNominalPusch = -90;
+PoUePusch = 0;
+PsrsOffset = 9;
+alpha = 1;
+deltaTF = 0;
+PoPusch = PoNominalPusch + PoUePusch;
+accumulatedMode = false;
+
+%% Open Loop Power Control
+%%d1 = 1000;
+%%fc = 0;
+
+
+%% Closed Loop Mode
+%% change fc value to simulate closed loop mode
+%%TS36.213 Table 5.1.1.1-2
+%%   TPC   |   Accumulated Mode  |  Absolute Mode
+%%------------------------------------------------
+%%    0    |         -1          |      -4
+%%    1    |          0          |      -1
+%%    2    |          1          |       1
+%%    3    |          3          |       4
+%%------------------------------------------------
+
+%%Absolute Mode 
+d1 = 100;
+fc = -4;
+
+
+%%Accumulated Mode, steps to simulate fc current value
+%%d1 = 10;
+%%fc = 0;
+%%accumulatedMode = true;
+
+stepNumToExecute = 12;
+fcValueSequence = [
+		[0, 0]; 
+		[-1, 20]; 
+		[-1, 20];
+		[1, 1];
+		[3, 10];
+		[1, 15];
+		[3, 1];
+		[1, 10];
+		[1, 10];
+		[-1, 1];
+		[-1, 20];
+		[1, 5]
+                ];
+
+%% distances
+%%                d1  
+%%  eNB1---------------------UE1
+%%
+
+%% pathloss
+%%             pathloss  
+%%  eNB1---------------------UE1
+%%         
+%%
+
+pathloss = path_loss (d1, fdl);
+pathlossdB = 10.*log10(pathloss);
+pathlossdB = -pathlossdB;
+
+%% RSRP (dB)
+rsrqdB = dlpdBm - pathlossdB;
+rsrqdBm = rsrqdB;
+
+if (accumulatedMode) 
+  for i = 1:stepNumToExecute
+    curFcValue = fcValueSequence(i,1);
+    curFcNum = fcValueSequence(i,2);
+
+    for i = 1:curFcNum
+      PuschPower = 10*log10(MPusch) + PoPusch + alpha * pathlossdB + deltaTF + fc;
+      if ((PuschPower > Pcmax && curFcValue> 0) || (PuschPower < Pcmin && curFcValue < 0))
+        %% do not accumulate
+      else
+        fc = fc + curFcValue;
+      endif
+    endfor
+  endfor
+endif
+
+printf("TxPower: %f\n", dlpdBm)
+printf("Distance: %f\n", d1)
+printf("PathLoss: %f \n",pathlossdB)
+printf("RSRP [dBm]: %f \n", rsrqdBm)
+printf("fc: %f \n", fc)
+
+%% PUSCH TX POWER 
+PuschPower = 10*log10(MPusch) + PoPusch + alpha * pathlossdB + deltaTF + fc;
+
+if (PuschPower > Pcmax)
+  PuschPower = Pcmax;
+endif
+
+if (PuschPower < Pcmin) 
+  PuschPower = Pcmin;
+endif
+
+printf("PuschPower: %f \n", PuschPower)
+
+
+%% PUCCH TX POWER 
+PucchPower = PuschPower;
+printf("PucchPower: %f \n", PucchPower)
+
+
+%% SRS TX POWER 
+PsrsOffsetValue = -10.5 + PsrsOffset * 1.5;
+SrsPower = PsrsOffsetValue + 10*log10(nrbs) + PoPusch + alpha * pathlossdB + fc;
+
+if (SrsPower > Pcmax)
+  SrsPower = Pcmax;
+endif
+
+if (SrsPower < Pcmin) 
+  SrsPower = Pcmin;
+endif
+printf("SrsPower: %f \n", SrsPower)
+
diff -Naur ns-3.20/src/lte/test/reference/path_loss.m ns-3.21/src/lte/test/reference/path_loss.m
--- ns-3.20/src/lte/test/reference/path_loss.m	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/lte/test/reference/path_loss.m	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,18 @@
+function g = path_loss(d, f)
+
+  %%
+  %% function g = path_loss(d, c)
+  %%
+  %% returns the path-loss at d meters for channel c
+  
+  assert(isscalar(f));
+  assert(f > 0);
+
+  g = zeros(size(d));
+  c = 299792458.0;
+  g(find(d > 0)) = (c./(4.0.*pi.*f.*d(find(d > 0)))).^2;
+
+  g(find(d <= 0)) = 1;
+  
+       
+  
diff -Naur ns-3.20/src/lte/test/test-asn1-encoding.cc ns-3.21/src/lte/test/test-asn1-encoding.cc
--- ns-3.20/src/lte/test/test-asn1-encoding.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/test-asn1-encoding.cc	2014-09-17 20:03:14.000000000 -0700
@@ -150,6 +150,9 @@
   physicalConfigDedicated.haveAntennaInfoDedicated = true;
   physicalConfigDedicated.antennaInfo.transmissionMode = 2;
 
+  physicalConfigDedicated.havePdschConfigDedicated = true;
+  physicalConfigDedicated.pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
+
   rrd.physicalConfigDedicated = physicalConfigDedicated;
 
   return rrd;
@@ -236,6 +239,17 @@
                                  rrcd2.physicalConfigDedicated.antennaInfo.transmissionMode,
                                  "antennaInfo.transmissionMode");
         }
+
+      NS_TEST_ASSERT_MSG_EQ (rrcd1.physicalConfigDedicated.havePdschConfigDedicated,
+                             rrcd2.physicalConfigDedicated.havePdschConfigDedicated,
+                             "havePdschConfigDedicated");
+
+      if (rrcd1.physicalConfigDedicated.havePdschConfigDedicated)
+        {
+          NS_TEST_ASSERT_MSG_EQ (rrcd1.physicalConfigDedicated.pdschConfigDedicated.pa,
+                                 rrcd2.physicalConfigDedicated.pdschConfigDedicated.pa,
+                                 "pdschConfigDedicated.pa");
+        }
     }
 }
 
diff -Naur ns-3.20/src/lte/test/test-lte-antenna.cc ns-3.21/src/lte/test/test-lte-antenna.cc
--- ns-3.20/src/lte/test/test-lte-antenna.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/test-lte-antenna.cc	2014-09-17 20:03:14.000000000 -0700
@@ -99,6 +99,10 @@
   Config::SetDefault ("ns3::LteSpectrumPhy::CtrlErrorModelEnabled", BooleanValue (false));
   Config::SetDefault ("ns3::LteSpectrumPhy::DataErrorModelEnabled", BooleanValue (false));
   Config::SetDefault ("ns3::LteHelper::UseIdealRrc", BooleanValue (true));
+
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
 
   // use 0dB Pathloss, since we are testing only the antenna gain
@@ -145,11 +149,11 @@
   // Use testing chunk processor in the PHY layer
   // It will be used to test that the SNR is as intended
   Ptr<LtePhy> uePhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testDlSinr = Create<LteTestSinrChunkProcessor> (uePhy);
+  Ptr<LteTestSinrChunkProcessor> testDlSinr = Create<LteTestSinrChunkProcessor> ();
   uePhy->GetDownlinkSpectrumPhy ()->AddDataSinrChunkProcessor (testDlSinr);
 
   Ptr<LtePhy> enbphy = enbDevs.Get (0)->GetObject<LteEnbNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
-  Ptr<LteTestSinrChunkProcessor> testUlSinr = Create<LteTestSinrChunkProcessor> (enbphy);
+  Ptr<LteTestSinrChunkProcessor> testUlSinr = Create<LteTestSinrChunkProcessor> ();
   enbphy->GetUplinkSpectrumPhy ()->AddDataSinrChunkProcessor (testUlSinr);
 
 
diff -Naur ns-3.20/src/lte/test/test-lte-rrc.cc ns-3.21/src/lte/test/test-lte-rrc.cc
--- ns-3.20/src/lte/test/test-lte-rrc.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/test-lte-rrc.cc	2014-09-17 20:03:14.000000000 -0700
@@ -16,6 +16,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Nicola Baldo <nbaldo@cttc.es>
+ *         Budiarto Herman <budiarto.herman@magister.fi>
  */
 
 
@@ -36,35 +37,70 @@
    *
    * 
    * \param nUes number of UEs in the test
-   * \param tc connection time base value for all UEs in ms
+   * \param nBearers number of bearers to be setup in each connection
+   * \param tConnBase connection time base value for all UEs in ms
    * \param tConnIncrPerUe additional connection time increment for each UE index (0...nUes-1) in ms
    * \param delayDiscStart expected duration to perform connection establishment in ms
-   *
+   * \param errorExpected if true, test case will wait a bit longer to accomodate for transmission error
+   * \param useIdealRrc If set to false, real RRC protocol model will be used
+   * \param admitRrcConnectionRequest If set to false, eNb will not allow UE connections
+   * \param description additional description of the test case
    */
-  LteRrcConnectionEstablishmentTestCase (uint32_t nUes, uint32_t nBearers, uint32_t tc, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest);
+  LteRrcConnectionEstablishmentTestCase (uint32_t nUes,
+                                         uint32_t nBearers,
+                                         uint32_t tConnBase,
+                                         uint32_t tConnIncrPerUe,
+                                         uint32_t delayDiscStart,
+                                         bool errorExpected,
+                                         bool useIdealRrc,
+                                         bool admitRrcConnectionRequest,
+                                         std::string description = "");
+
+protected:
 
-private:
-  static std::string BuildNameString (uint32_t nUes, uint32_t nBearers, uint32_t tc, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest);
   virtual void DoRun (void);
+  uint32_t m_nUes; // number of UEs in the test
+
+  static std::string BuildNameString (uint32_t nUes,
+                                      uint32_t nBearers,
+                                      uint32_t tConnBase,
+                                      uint32_t tConnIncrPerUe,
+                                      uint32_t delayDiscStart,
+                                      bool useIdealRrc,
+                                      bool admitRrcConnectionRequest,
+                                      std::string description = "");
   void Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice);
   void CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice);
+  void CheckNotConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice);
+  void ConnectionEstablishedCallback (std::string context, uint64_t imsi,
+                                      uint16_t cellId, uint16_t rnti);
+  void ConnectionTimeoutCallback (std::string context, uint64_t imsi,
+                                  uint16_t cellId, uint16_t rnti);
 
-
-  uint32_t m_nUes; // number of UEs in the test
-  uint32_t m_nBearers; // number of UEs in the test
+  uint32_t m_nBearers; // number of bearers to be setup in each connection
   uint32_t m_tConnBase;  // connection time base value for all UEs in ms
   uint32_t m_tConnIncrPerUe; // additional connection time increment for each UE index (0...nUes-1) in ms
   uint32_t m_delayConnEnd;  // expected duration to perform connection establishment in ms
   uint32_t m_delayDiscStart;  // delay between connection completed and disconnection request in ms
   uint32_t m_delayDiscEnd; // expected duration to complete disconnection in ms
-  bool     m_useIdealRrc;
-  bool    m_admitRrcConnectionRequest; // If set to false, eNb will not allow ue connections
+  bool     m_useIdealRrc; // If set to false, real RRC protocol model will be used
+  bool     m_admitRrcConnectionRequest; // If set to false, eNb will not allow UE connections
   Ptr<LteHelper> m_lteHelper;
 
+  // key: IMSI
+  std::map<uint64_t, bool> m_isConnectionEstablished;
 };
 
 
-std::string LteRrcConnectionEstablishmentTestCase::BuildNameString (uint32_t nUes, uint32_t nBearers, uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest)
+std::string
+LteRrcConnectionEstablishmentTestCase::BuildNameString (uint32_t nUes,
+                                                        uint32_t nBearers,
+                                                        uint32_t tConnBase,
+                                                        uint32_t tConnIncrPerUe,
+                                                        uint32_t delayDiscStart,
+                                                        bool useIdealRrc,
+                                                        bool admitRrcConnectionRequest,
+                                                        std::string description)
 {
   std::ostringstream oss;
   oss << "nUes=" << nUes
@@ -72,6 +108,7 @@
       << ", tConnBase=" << tConnBase
       << ", tConnIncrPerUe=" << tConnIncrPerUe
       << ", delayDiscStart=" << delayDiscStart;
+
   if (useIdealRrc)
     {
       oss << ", ideal RRC";
@@ -80,6 +117,7 @@
     {
       oss << ", real RRC";
     }
+
   if (admitRrcConnectionRequest)
     {
       oss << ", admitRrcConnectionRequest = true";
@@ -88,11 +126,24 @@
     {
       oss << ", admitRrcConnectionRequest = false";
     }
+
+  if (!description.empty ())
+    {
+      oss << ", " << description;
+    }
+
   return oss.str ();
 }
 
-LteRrcConnectionEstablishmentTestCase::LteRrcConnectionEstablishmentTestCase (uint32_t nUes, uint32_t nBearers, uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart, bool useIdealRrc, bool admitRrcConnectionRequest)
-  : TestCase (BuildNameString (nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest)),
+LteRrcConnectionEstablishmentTestCase::LteRrcConnectionEstablishmentTestCase (
+    uint32_t nUes, uint32_t nBearers,
+    uint32_t tConnBase, uint32_t tConnIncrPerUe, uint32_t delayDiscStart,
+    bool errorExpected, bool useIdealRrc, bool admitRrcConnectionRequest,
+    std::string description)
+  : TestCase (BuildNameString (nUes, nBearers,
+                               tConnBase, tConnIncrPerUe, delayDiscStart,
+                               useIdealRrc, admitRrcConnectionRequest,
+                               description)),
     m_nUes (nUes),
     m_nBearers (nBearers),
     m_tConnBase (tConnBase),
@@ -103,6 +154,8 @@
     m_useIdealRrc (useIdealRrc),
     m_admitRrcConnectionRequest (admitRrcConnectionRequest)
 {
+  NS_LOG_FUNCTION (this << GetName ());
+
   // see the description of d^e in the LTE testing docs
   double dsi = 90;
   double nRaAttempts = 0;
@@ -115,9 +168,18 @@
       NS_ASSERT (nUes <= 50);
       nRaAttempts += 10;
     }
+
   nRaAttempts += std::ceil (nUes / 4.0);
   double dra = nRaAttempts * 7;
   double dce = 10.0 + (2.0 * nUes) / 4.0;
+  if (errorExpected)
+    {
+      /*
+       * If transmission error happens, the UE has to repeat again from
+       * acquiring system information.
+       */
+      dce += dsi + dce;
+    }
   double nCrs;
   if (nUes <= 2)
     {
@@ -142,7 +204,7 @@
   double dcr =  (10.0 + (2.0 * nUes) / 4.0) * (m_nBearers + nCrs);
 
   m_delayConnEnd = round (dsi + dra + dce + dcr);
-  NS_LOG_LOGIC (this << GetName () << " dsi=" << dsi << " dra=" << dra << " dce=" << dce << " dcr=" << dcr << " m_delayConnEnd=" << m_delayConnEnd);
+  NS_LOG_LOGIC (this << " " << GetName () << " dsi=" << dsi << " dra=" << dra << " dce=" << dce << " dcr=" << dcr << " m_delayConnEnd=" << m_delayConnEnd);
 }
 
 void
@@ -163,7 +225,7 @@
     {
       Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (160));
     }
-  else 
+  else
     {
       Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (320));
     }
@@ -173,21 +235,26 @@
   m_lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (m_useIdealRrc));
 
   NodeContainer enbNodes;
-  enbNodes.Create (1);
   NodeContainer ueNodes;
+
+
+  enbNodes.Create (1);
   ueNodes.Create (m_nUes);
 
+  // the following positions all nodes at (0, 0, 0)
   MobilityHelper mobility;
   mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
   mobility.Install (enbNodes);
-  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
   mobility.Install (ueNodes);
 
+  int64_t stream = 1;
   NetDeviceContainer enbDevs;
   enbDevs = m_lteHelper->InstallEnbDevice (enbNodes);
+  stream += m_lteHelper->AssignStreams (enbDevs, stream);
 
   NetDeviceContainer ueDevs;
   ueDevs = m_lteHelper->InstallUeDevice (ueNodes);
+  stream += m_lteHelper->AssignStreams (ueDevs, stream);
 
   // custom code used for testing purposes
   // instead of lteHelper->Attach () and lteHelper->ActivateXxx
@@ -198,7 +265,8 @@
        ++it)
     {
       Ptr<LteEnbRrc> enbRrc = (*it)->GetObject<LteEnbNetDevice> ()->GetRrc ();
-      enbRrc->SetAttribute ("AdmitRrcConnectionRequest", BooleanValue (m_admitRrcConnectionRequest));
+      enbRrc->SetAttribute ("AdmitRrcConnectionRequest",
+                            BooleanValue (m_admitRrcConnectionRequest));
     }
 
 
@@ -225,9 +293,19 @@
 
       // disconnection not supported yet
 
+      uint64_t imsi = ueLteDevice->GetImsi ();
+      m_isConnectionEstablished[imsi] = false;
+
       ++i;
     }
 
+  // Connect to trace sources in UEs
+  Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionEstablished",
+                   MakeCallback (&LteRrcConnectionEstablishmentTestCase::ConnectionEstablishedCallback,
+                                 this));
+  Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionTimeout",
+                   MakeCallback (&LteRrcConnectionEstablishmentTestCase::ConnectionTimeoutCallback,
+                                 this));
 
   Simulator::Stop (MilliSeconds (tmax + 1));
 
@@ -240,6 +318,7 @@
 void
 LteRrcConnectionEstablishmentTestCase::Connect (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice)
 {
+  NS_LOG_FUNCTION (this);
   m_lteHelper->Attach (ueDevice, enbDevice);
 
   for (uint32_t b = 0; b < m_nBearers; ++b)
@@ -249,32 +328,66 @@
       m_lteHelper->ActivateDataRadioBearer (ueDevice, bearer);
     }
 }
+
 void
 LteRrcConnectionEstablishmentTestCase::CheckConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice)
 {
   Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
   Ptr<LteUeRrc> ueRrc = ueLteDevice->GetRrc ();
+  const uint64_t imsi = ueLteDevice->GetImsi ();
+  const uint16_t rnti = ueRrc->GetRnti ();
+  NS_LOG_FUNCTION (this << imsi << rnti);
+  NS_ASSERT_MSG (m_isConnectionEstablished.find (imsi) != m_isConnectionEstablished.end (),
+                 "Invalid IMSI " << imsi);
 
   if (!m_admitRrcConnectionRequest)
     {
-      NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::IDLE_CAMPED_NORMALLY, "Wrong LteUeRrc state!");
+      NS_TEST_ASSERT_MSG_EQ (m_isConnectionEstablished[imsi], false,
+                             "Connection with RNTI " << rnti << " should have been rejected");
       return;
     }
 
-  NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY, "Wrong LteUeRrc state!");
+  /*
+   * Verifying UE state in UE RRC. Try to increase the test case duration if
+   * the following checks.
+   */
+  NS_TEST_ASSERT_MSG_EQ (m_isConnectionEstablished[imsi], true,
+                         "RNTI " << rnti << " fails to establish connection");
+  NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY,
+                         "RNTI " << rnti << " is not at CONNECTED_NORMALLY state");
+
+  // Verifying UE context state in eNodeB RRC.
 
   Ptr<LteEnbNetDevice> enbLteDevice = enbDevice->GetObject<LteEnbNetDevice> ();
   Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetRrc ();
-  uint16_t rnti = ueRrc->GetRnti ();
-  Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti);
-  NS_TEST_ASSERT_MSG_NE (ueManager, 0, "RNTI " << rnti << " not found in eNB");
+  const bool hasContext = enbRrc->HasUeManager (rnti);
+
+  if (hasContext)
+    {
+      Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti);
+      NS_ASSERT (ueManager != 0);
+      NS_TEST_ASSERT_MSG_EQ (ueManager->GetState (),
+                             UeManager::CONNECTED_NORMALLY,
+                             "The context of RNTI " << rnti << " is in invalid state");
+    }
+  else
+    {
+       NS_LOG_WARN (this << " RNTI " << rnti << " thinks that it has"
+                         << " established connection but the eNodeB thinks"
+                         << " that the UE has failed on connection setup.");
+       /*
+        * The standard specifies that this case would exceed the maximum
+        * retransmission limit at UE RLC (SRB1), which will then trigger an RLF.
+        * However, this behaviour is not implemented yet.
+        */
+    }
 
-  NS_TEST_ASSERT_MSG_EQ (ueManager->GetState (), UeManager::CONNECTED_NORMALLY, "Wrong UeManager state!");
+  // Verifying other attributes on both sides.
 
   uint16_t ueCellId = ueRrc->GetCellId ();
   uint16_t enbCellId = enbLteDevice->GetCellId ();
   uint16_t ueImsi = ueLteDevice->GetImsi ();
-  uint16_t enbImsi = ueManager->GetImsi ();
+
   uint8_t ueDlBandwidth = ueRrc->GetDlBandwidth ();
   uint8_t enbDlBandwidth = enbLteDevice->GetDlBandwidth ();
   uint8_t ueUlBandwidth = ueRrc->GetUlBandwidth ();
@@ -284,42 +397,278 @@
   uint8_t ueUlEarfcn = ueRrc->GetUlEarfcn ();
   uint8_t enbUlEarfcn = enbLteDevice->GetUlEarfcn ();
 
-
   NS_TEST_ASSERT_MSG_EQ (ueCellId, enbCellId, "inconsistent CellId");
-  NS_TEST_ASSERT_MSG_EQ (ueImsi, enbImsi, "inconsistent Imsi");
   NS_TEST_ASSERT_MSG_EQ (ueDlBandwidth, enbDlBandwidth, "inconsistent DlBandwidth");
   NS_TEST_ASSERT_MSG_EQ (ueUlBandwidth, enbUlBandwidth, "inconsistent UlBandwidth");
   NS_TEST_ASSERT_MSG_EQ (ueDlEarfcn, enbDlEarfcn, "inconsistent DlEarfcn");
   NS_TEST_ASSERT_MSG_EQ (ueUlEarfcn, enbUlEarfcn, "inconsistent UlEarfcn");
 
-  ObjectMapValue enbDataRadioBearerMapValue;
-  ueManager->GetAttribute ("DataRadioBearerMap", enbDataRadioBearerMapValue);
-  NS_TEST_ASSERT_MSG_EQ (enbDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at eNB");
-
-  ObjectMapValue ueDataRadioBearerMapValue;
-  ueRrc->GetAttribute ("DataRadioBearerMap", ueDataRadioBearerMapValue);
-  NS_TEST_ASSERT_MSG_EQ (ueDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at UE");
-
-  ObjectMapValue::Iterator enbBearerIt = enbDataRadioBearerMapValue.Begin ();
-  ObjectMapValue::Iterator ueBearerIt = ueDataRadioBearerMapValue.Begin ();
-  while (enbBearerIt != enbDataRadioBearerMapValue.End ()
-         && ueBearerIt != ueDataRadioBearerMapValue.End ())
-    {
-      Ptr<LteDataRadioBearerInfo> enbDrbInfo = enbBearerIt->second->GetObject<LteDataRadioBearerInfo> ();
-      Ptr<LteDataRadioBearerInfo> ueDrbInfo = ueBearerIt->second->GetObject<LteDataRadioBearerInfo> ();
-      //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_epsBearer, ueDrbInfo->m_epsBearer, "epsBearer differs");
-      NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_epsBearerIdentity, (uint32_t) ueDrbInfo->m_epsBearerIdentity, "epsBearerIdentity differs");
-      NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_drbIdentity, (uint32_t) ueDrbInfo->m_drbIdentity, "drbIdentity differs");
-      //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_rlcConfig, ueDrbInfo->m_rlcConfig, "rlcConfig differs");
-      NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_logicalChannelIdentity, (uint32_t) ueDrbInfo->m_logicalChannelIdentity, "logicalChannelIdentity differs");
-      //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_logicalChannelConfig, ueDrbInfo->m_logicalChannelConfig, "logicalChannelConfig differs");
+  if (hasContext)
+    {
+      Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti);
+      NS_ASSERT (ueManager != 0);
+      UeManager::State state = ueManager->GetState ();
+      uint16_t enbImsi = ueManager->GetImsi ();
+      NS_TEST_ASSERT_MSG_EQ (ueImsi, enbImsi, "inconsistent Imsi");
+
+      if (state == UeManager::CONNECTED_NORMALLY)
+        {
+          ObjectMapValue enbDataRadioBearerMapValue;
+          ueManager->GetAttribute ("DataRadioBearerMap", enbDataRadioBearerMapValue);
+          NS_TEST_ASSERT_MSG_EQ (enbDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at eNB");
+          ObjectMapValue ueDataRadioBearerMapValue;
+          ueRrc->GetAttribute ("DataRadioBearerMap", ueDataRadioBearerMapValue);
+          NS_TEST_ASSERT_MSG_EQ (ueDataRadioBearerMapValue.GetN (), m_nBearers, "wrong num bearers at UE");
+
+          ObjectMapValue::Iterator enbBearerIt = enbDataRadioBearerMapValue.Begin ();
+          ObjectMapValue::Iterator ueBearerIt = ueDataRadioBearerMapValue.Begin ();
+          while (enbBearerIt != enbDataRadioBearerMapValue.End ()
+                 && ueBearerIt != ueDataRadioBearerMapValue.End ())
+            {
+              Ptr<LteDataRadioBearerInfo> enbDrbInfo = enbBearerIt->second->GetObject<LteDataRadioBearerInfo> ();
+              Ptr<LteDataRadioBearerInfo> ueDrbInfo = ueBearerIt->second->GetObject<LteDataRadioBearerInfo> ();
+              //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_epsBearer, ueDrbInfo->m_epsBearer, "epsBearer differs");
+              NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_epsBearerIdentity, (uint32_t) ueDrbInfo->m_epsBearerIdentity, "epsBearerIdentity differs");
+              NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_drbIdentity, (uint32_t) ueDrbInfo->m_drbIdentity, "drbIdentity differs");
+              //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_rlcConfig, ueDrbInfo->m_rlcConfig, "rlcConfig differs");
+              NS_TEST_ASSERT_MSG_EQ ((uint32_t) enbDrbInfo->m_logicalChannelIdentity, (uint32_t) ueDrbInfo->m_logicalChannelIdentity, "logicalChannelIdentity differs");
+              //NS_TEST_ASSERT_MSG_EQ (enbDrbInfo->m_logicalChannelConfig, ueDrbInfo->m_logicalChannelConfig, "logicalChannelConfig differs");
+
+              ++enbBearerIt;
+              ++ueBearerIt;
+            }
+
+          NS_ASSERT_MSG (enbBearerIt == enbDataRadioBearerMapValue.End (), "too many bearers at eNB");
+          NS_ASSERT_MSG (ueBearerIt == ueDataRadioBearerMapValue.End (), "too many bearers at UE");
+        }
+    }
+}
+
+void
+LteRrcConnectionEstablishmentTestCase::CheckNotConnected (Ptr<NetDevice> ueDevice, Ptr<NetDevice> enbDevice)
+{
+  Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
+  Ptr<LteUeRrc> ueRrc = ueLteDevice->GetRrc ();
+  const uint64_t imsi = ueLteDevice->GetImsi ();
+  const uint16_t rnti = ueRrc->GetRnti ();
+  NS_LOG_FUNCTION (this << imsi << rnti);
+  NS_ASSERT_MSG (m_isConnectionEstablished.find (imsi) != m_isConnectionEstablished.end (),
+                 "Invalid IMSI " << imsi);
+
+  bool ueStateIsConnectedNormally = (LteUeRrc::CONNECTED_NORMALLY == ueRrc->GetState ());
+
+  Ptr<LteEnbNetDevice> enbLteDevice = enbDevice->GetObject<LteEnbNetDevice> ();
+  Ptr<LteEnbRrc> enbRrc = enbLteDevice->GetRrc ();
+  const bool hasContext = enbRrc->HasUeManager (rnti);
+  bool contextStateIsConnectedNormally = false;
+  if (hasContext)
+    {
+      Ptr<UeManager> ueManager = enbRrc->GetUeManager (rnti);
+      NS_ASSERT (ueManager != 0);
+      contextStateIsConnectedNormally = (UeManager::CONNECTED_NORMALLY == ueManager->GetState ());
+    }
+  NS_TEST_ASSERT_MSG_EQ ((!m_isConnectionEstablished[imsi]
+                          || !ueStateIsConnectedNormally
+                          || !hasContext
+                          || !contextStateIsConnectedNormally),
+                         true,
+                         "it should not happen that connection is completed both at the UE and at the eNB side");
+}
+
+void
+LteRrcConnectionEstablishmentTestCase::ConnectionEstablishedCallback (
+    std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this << imsi << cellId);
+  m_isConnectionEstablished[imsi] = true;
+}
+
+
+void
+LteRrcConnectionEstablishmentTestCase::ConnectionTimeoutCallback (
+    std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
+{
+  NS_LOG_FUNCTION (this << imsi << cellId);
+}
+
+
+
+class LteRrcConnectionEstablishmentErrorTestCase
+  : public LteRrcConnectionEstablishmentTestCase
+{
+public:
+  /**
+   *
+   *
+   * \param jumpAwayTime the time when all the UEs 'teleport' to a pre-defined
+   *                     high-interference position and stay there for 100 ms
+   * \param description additional description of the test case
+   */
+  LteRrcConnectionEstablishmentErrorTestCase (Time jumpAwayTime,
+                                              std::string description = "");
+protected:
+  virtual void DoRun (void);
+
+private:
+  void JumpAway ();
+  void JumpBack ();
+
+  Time m_jumpAwayTime;
+  Ptr<MobilityModel> m_ueMobility;
+};
+
+
+LteRrcConnectionEstablishmentErrorTestCase::LteRrcConnectionEstablishmentErrorTestCase (
+  Time jumpAwayTime, std::string description)
+  : LteRrcConnectionEstablishmentTestCase (1, 1, 0, 0, 1, true, false, true,
+                                           description),
+    m_jumpAwayTime (jumpAwayTime)
+{
+  NS_LOG_FUNCTION (this << GetName ());
+}
+
+
+void
+LteRrcConnectionEstablishmentErrorTestCase::DoRun ()
+{
+  NS_LOG_FUNCTION (this << GetName ());
+  Config::Reset ();
+
+  if (m_nUes < 25)
+    {
+      Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (40));
+    }
+  else if (m_nUes < 60)
+    {
+      Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (80));
+    }
+  else if (m_nUes < 120)
+    {
+      Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (160));
+    }
+  else
+    {
+      Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (320));
+    }
+
+  // normal code
+  m_lteHelper = CreateObject<LteHelper> ();
+  m_lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (m_useIdealRrc));
+
+  NodeContainer enbNodes;
+  NodeContainer ueNodes;
+
+
+  enbNodes.Create (4);
+  ueNodes.Create (1);
+
+  MobilityHelper mobility;
+  mobility.Install (ueNodes); // UE position at (0, 0, 0)
+  m_ueMobility = ueNodes.Get (0)->GetObject<MobilityModel> ();
+
+  Ptr<ListPositionAllocator> enbPosition = CreateObject<ListPositionAllocator> ();
+  enbPosition->Add (Vector (0, 0, 0));
+  enbPosition->Add (Vector (100.0, 0, 0));
+  enbPosition->Add (Vector (0, 100.0, 0));
+  enbPosition->Add (Vector (100.0, 100.0, 0));
+  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+  mobility.SetPositionAllocator (enbPosition);
+  mobility.Install (enbNodes);
+
+  int64_t stream = 1;
+  NetDeviceContainer enbDevs;
+  enbDevs = m_lteHelper->InstallEnbDevice (enbNodes);
+  stream += m_lteHelper->AssignStreams (enbDevs, stream);
+
+  NetDeviceContainer ueDevs;
+  ueDevs = m_lteHelper->InstallUeDevice (ueNodes);
+  stream += m_lteHelper->AssignStreams (ueDevs, stream);
+
+  // custom code used for testing purposes
+  // instead of lteHelper->Attach () and lteHelper->ActivateXxx
+
+  // Set AdmitConnectionRequest attribute
+  for (NetDeviceContainer::Iterator it = enbDevs.Begin ();
+       it != enbDevs.End ();
+       ++it)
+    {
+      Ptr<LteEnbRrc> enbRrc = (*it)->GetObject<LteEnbNetDevice> ()->GetRrc ();
+      enbRrc->SetAttribute ("AdmitRrcConnectionRequest",
+                            BooleanValue (m_admitRrcConnectionRequest));
+    }
+
+
+  uint32_t i = 0;
+  uint32_t tmax = 0;
+  for (NetDeviceContainer::Iterator it = ueDevs.Begin (); it != ueDevs.End (); ++it)
+    {
+      Ptr<NetDevice> ueDevice = *it;
+      Ptr<NetDevice> enbDevice = enbDevs.Get (0);
+      Ptr<LteUeNetDevice> ueLteDevice = ueDevice->GetObject<LteUeNetDevice> ();
+
+      uint32_t tc = m_tConnBase + m_tConnIncrPerUe * i; // time connection start
+      uint32_t tcc = tc + m_delayConnEnd; // time check connection completed;
+      uint32_t td =  tcc + m_delayDiscStart; // time disconnect start
+      uint32_t tcd = td + m_delayDiscEnd; // time check disconnection completed
+      tmax = std::max (tmax, tcd);
 
-      ++enbBearerIt;
-      ++ueBearerIt;
+      // trick to resolve overloading
+      //void (LteHelper::* overloadedAttachFunctionPointer) (Ptr<NetDevice>, Ptr<NetDevice>) = &LteHelper::Attach;
+      //Simulator::Schedule (MilliSeconds (tc), overloadedAttachFunctionPointer, lteHelper, *it, enbDevice);
+      Simulator::Schedule (MilliSeconds (tc), &LteRrcConnectionEstablishmentErrorTestCase::Connect, this, ueDevice, enbDevice);
+
+      Simulator::Schedule (MilliSeconds (tcc), &LteRrcConnectionEstablishmentErrorTestCase::CheckConnected, this, *it, enbDevice);
+
+      // disconnection not supported yet
+
+      uint64_t imsi = ueLteDevice->GetImsi ();
+      m_isConnectionEstablished[imsi] = false;
+
+      ++i;
     }
-  NS_ASSERT_MSG (enbBearerIt == enbDataRadioBearerMapValue.End (), "too many bearers at eNB");
-  NS_ASSERT_MSG (ueBearerIt == ueDataRadioBearerMapValue.End (), "too many bearers at UE");
 
+  // Connect to trace sources in UEs
+  Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionEstablished",
+                   MakeCallback (&LteRrcConnectionEstablishmentErrorTestCase::ConnectionEstablishedCallback,
+                                 this));
+  Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionTimeout",
+                   MakeCallback (&LteRrcConnectionEstablishmentErrorTestCase::ConnectionTimeoutCallback,
+                                 this));
+
+
+  Simulator::Schedule (m_jumpAwayTime,
+                       &LteRrcConnectionEstablishmentErrorTestCase::JumpAway,
+                       this);
+  Simulator::Schedule (m_jumpAwayTime + MilliSeconds (99),
+                       &LteRrcConnectionEstablishmentErrorTestCase::CheckNotConnected,
+                       this, ueDevs.Get (0), enbDevs.Get (0));
+  Simulator::Schedule (m_jumpAwayTime + MilliSeconds (100),
+                       &LteRrcConnectionEstablishmentErrorTestCase::JumpBack,
+                       this);
+
+  Simulator::Stop (MilliSeconds (tmax + 1));
+
+  Simulator::Run ();
+
+  Simulator::Destroy ();
+
+}
+
+
+void
+LteRrcConnectionEstablishmentErrorTestCase::JumpAway ()
+{
+  NS_LOG_FUNCTION (this);
+  // move to a really far away location so that transmission errors occur
+  m_ueMobility->SetPosition (Vector (100000.0, 100000.0, 0.0));
+}
+
+
+void
+LteRrcConnectionEstablishmentErrorTestCase::JumpBack ()
+{
+  NS_LOG_FUNCTION (this);
+  m_ueMobility->SetPosition (Vector (0.0, 0.0, 0.0));
 }
 
 
@@ -334,47 +683,68 @@
 LteRrcTestSuite::LteRrcTestSuite ()
   : TestSuite ("lte-rrc", SYSTEM)
 {
+//  LogComponentEnableAll (LOG_PREFIX_ALL);
+//  LogComponentEnable ("LteRrcTest", LOG_LEVEL_ALL);
+//  LogComponentEnable ("LteEnbRrc", LOG_INFO);
+//  LogComponentEnable ("LteUeRrc", LOG_INFO);
+
   NS_LOG_FUNCTION (this);
 
   for (uint32_t useIdealRrc = 0; useIdealRrc <= 1; ++useIdealRrc)
     {
       //         <----- all times in ms ----------------->
-      //                                                     nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        0,         0,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        0,       100,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        1,         0,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        1,       100,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        2,         0,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        2,       100,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        0,        20,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        0,        20,             10,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        0,        20,            100,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        1,        20,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        1,        20,             10,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        1,        20,            100,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        2,        20,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        2,        20,             10,             1, useIdealRrc, true), TestCase::QUICK);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        2,        20,            100,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  3,        0,        20,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  4,        0,        20,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  4,        0,        20,            300,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20,        0,        10,              1,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50,        0,         0,              0,             1, useIdealRrc, true), TestCase::EXTENSIVE);
-
-      //Test cases to check admitRrcConnectionRequest=false
-      //                                                     nUes, nBearers, tConnBase, tConnIncrPerUe, delayDiscStart, useIdealRrc, admitRrcConnectionRequest
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        0,         0,              0,             1, useIdealRrc, false), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,        2,       100,              0,             1, useIdealRrc, false), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        0,        20,              0,             1, useIdealRrc, false), TestCase::EXTENSIVE);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,        1,        20,              0,             1, useIdealRrc, false), TestCase::QUICK);
-      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  3,        0,        20,              0,             1, useIdealRrc, false), TestCase::EXTENSIVE);
-
-      //time consuming tests with a lot of UEs
-      // AddTestCase (new LteRrcConnectionEstablishmentTestCase (100,        0,        10,              0,             1, useIdealRrc, true), TestCase::TAKES_FOREVER);
-      // AddTestCase (new LteRrcConnectionEstablishmentTestCase (100,        0,        10,              1,             1, useIdealRrc, true), TestCase::TAKES_FOREVER);
-      // AddTestCase (new LteRrcConnectionEstablishmentTestCase (200,        0,        10,              0,             1, useIdealRrc, true), TestCase::TAKES_FOREVER);
-      // AddTestCase (new LteRrcConnectionEstablishmentTestCase (200,        0,        10,              1,             1, useIdealRrc, true), TestCase::TAKES_FOREVER);
-    }
+
+      //                                                     nUes      tConnBase            delayDiscStart         useIdealRrc
+      //                                                        nBearers       tConnIncrPerUe       errorExpected               admitRrcConnectionRequest
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     0,      0,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     0,    100,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     1,      0,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     1,    100,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     2,      0,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     2,    100,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     0,     20,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     0,     20,          10,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     0,     20,         100,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     1,     20,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     1,     20,          10,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     1,     20,         100,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     2,     20,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     2,     20,          10,           1, false, useIdealRrc, true), TestCase::QUICK);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     2,     20,         100,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  3,     0,     20,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  4,     0,     20,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  4,     0,     20,         300,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 20,     0,     10,           1,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase ( 50,     0,      0,           0,           1, false, useIdealRrc, true), TestCase::EXTENSIVE);
+
+      // Test cases to check admitRrcConnectionRequest=false
+      //                                                     nUes      tConnBase            delayDiscStart         useIdealRrc
+      //                                                        nBearers       tConnIncrPerUe       errorExpected               admitRrcConnectionRequest
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     0,      0,           0,           1, false, useIdealRrc, false), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  1,     2,    100,           0,           1, false, useIdealRrc, false), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     0,     20,           0,           1, false, useIdealRrc, false), TestCase::EXTENSIVE);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  2,     1,     20,           0,           1, false, useIdealRrc, false), TestCase::QUICK);
+      AddTestCase (new LteRrcConnectionEstablishmentTestCase (  3,     0,     20,           0,           1, false, useIdealRrc, false), TestCase::EXTENSIVE);
+    }
+
+  // Test cases with transmission error
+  AddTestCase (new LteRrcConnectionEstablishmentErrorTestCase (
+                   Seconds (0.020214),
+                   "failure at RRC Connection Request"),
+               TestCase::QUICK);
+  AddTestCase (new LteRrcConnectionEstablishmentErrorTestCase (
+                   Seconds (0.025),
+                   "failure at RRC Connection Setup"),
+               TestCase::QUICK);
+  /*
+   * The following test case is related to the Idle mode, which is an
+   * unsupported feature at the moment. See also Bug 1762 Comment #25.
+   */
+  // AddTestCase (new LteRrcConnectionEstablishmentErrorTestCase (
+  //                  Seconds (0.030),
+  //                  "failure at RRC Connection Setup Complete"),
+  //              TestCase::QUICK);
+
 }
 
 static LteRrcTestSuite g_lteRrcTestSuiteInstance;
diff -Naur ns-3.20/src/lte/test/test-lte-x2-handover.cc ns-3.21/src/lte/test/test-lte-x2-handover.cc
--- ns-3.20/src/lte/test/test-lte-x2-handover.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/test-lte-x2-handover.cc	2014-09-17 20:03:14.000000000 -0700
@@ -151,6 +151,9 @@
   Config::SetDefault ("ns3::UdpClient::MaxPackets", UintegerValue (1000000));  
   Config::SetDefault ("ns3::UdpClient::PacketSize", UintegerValue (m_udpClientPktSize));  
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
+
   int64_t stream = 1;
   
   m_lteHelper = CreateObject<LteHelper> ();
diff -Naur ns-3.20/src/lte/test/test-lte-x2-handover-measures.cc ns-3.21/src/lte/test/test-lte-x2-handover-measures.cc
--- ns-3.20/src/lte/test/test-lte-x2-handover-measures.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/test/test-lte-x2-handover-measures.cc	2014-09-17 20:03:14.000000000 -0700
@@ -197,6 +197,8 @@
   Config::SetDefault ("ns3::LteEnbRrc::HandoverJoiningTimeoutDuration", TimeValue (MilliSeconds (200)));
   Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (20));
 
+  //Disable Uplink Power Control
+  Config::SetDefault ("ns3::LteUePhy::EnableUplinkPowerControl", BooleanValue (false));
 
   int64_t stream = 1;
 
diff -Naur ns-3.20/src/lte/wscript ns-3.21/src/lte/wscript
--- ns-3.20/src/lte/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/lte/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,7 +2,10 @@
 
 def build(bld):
 
-    module = bld.create_ns3_module('lte', ['core', 'network', 'spectrum', 'stats', 'buildings', 'virtual-net-device','point-to-point','applications','internet','csma'])
+    lte_module_dependencies = ['core', 'network', 'spectrum', 'stats', 'buildings', 'virtual-net-device','point-to-point','applications','internet','csma']
+    if (bld.env['ENABLE_EMU']):
+        lte_module_dependencies.append('fd-net-device')
+    module = bld.create_ns3_module('lte', lte_module_dependencies)
     module.source = [
         'model/lte-common.cc',
         'model/lte-spectrum-phy.cc',
@@ -69,7 +72,7 @@
         'model/lte-ue-phy-sap.cc',
         'model/lte-ue-cphy-sap.cc',
         'model/lte-interference.cc',
-        'model/lte-sinr-chunk-processor.cc',
+        'model/lte-chunk-processor.cc',
         'model/pf-ff-mac-scheduler.cc',
         'model/fdmt-ff-mac-scheduler.cc',
         'model/tdmt-ff-mac-scheduler.cc',
@@ -107,6 +110,17 @@
         'model/no-op-handover-algorithm.cc',
         'model/lte-anr-sap.cc',
         'model/lte-anr.cc',
+        'model/lte-ffr-algorithm.cc',
+        'model/lte-ffr-sap.cc',
+        'model/lte-ffr-rrc-sap.cc',
+        'model/lte-fr-no-op-algorithm.cc',
+        'model/lte-fr-hard-algorithm.cc',
+        'model/lte-fr-strict-algorithm.cc',
+        'model/lte-fr-soft-algorithm.cc',
+        'model/lte-ffr-soft-algorithm.cc',
+        'model/lte-ffr-enhanced-algorithm.cc',
+        'model/lte-ffr-distributed-algorithm.cc',
+        'model/lte-ue-power-control.cc',
         ]
 
     module_test = bld.create_ns3_module_test_library('lte')
@@ -155,6 +169,13 @@
         'test/lte-test-cell-selection.cc',
         'test/test-lte-handover-delay.cc',
         'test/test-lte-handover-target.cc',
+        'test/lte-ffr-simple.cc',
+        'test/lte-test-downlink-power-control.cc',
+        'test/lte-test-uplink-power-control.cc',
+        'test/lte-test-frequency-reuse.cc',
+        'test/lte-test-interference-fr.cc',
+        'test/lte-test-cqi-generation.cc',
+        'test/lte-simple-spectrum-phy.cc',
         ]
 
     headers = bld(features='ns3header')
@@ -225,7 +246,7 @@
         'model/lte-ue-phy-sap.h',
         'model/lte-ue-cphy-sap.h',
         'model/lte-interference.h',
-        'model/lte-sinr-chunk-processor.h',
+        'model/lte-chunk-processor.h',
         'model/pf-ff-mac-scheduler.h',
         'model/fdmt-ff-mac-scheduler.h',
         'model/tdmt-ff-mac-scheduler.h',
@@ -263,8 +284,23 @@
         'model/no-op-handover-algorithm.h',
         'model/lte-anr-sap.h',
         'model/lte-anr.h',
+        'model/lte-ffr-algorithm.h',
+        'model/lte-ffr-sap.h',
+        'model/lte-ffr-rrc-sap.h',
+        'model/lte-fr-no-op-algorithm.h',
+        'model/lte-fr-hard-algorithm.h',
+        'model/lte-fr-strict-algorithm.h',
+        'model/lte-fr-soft-algorithm.h',
+        'model/lte-ffr-soft-algorithm.h',
+        'model/lte-ffr-enhanced-algorithm.h',
+        'model/lte-ffr-distributed-algorithm.h',     
+		'model/lte-ue-power-control.h',           
         ]
 
+    if (bld.env['ENABLE_EMU']):
+        module.source.append ('helper/emu-epc-helper.cc')
+        headers.source.append ('helper/emu-epc-helper.h')
+
     if (bld.env['ENABLE_EXAMPLES']):
       bld.recurse('examples')
 
diff -Naur ns-3.20/src/mesh/bindings/modulegen__gcc_ILP32.py ns-3.21/src/mesh/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/mesh/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -281,7 +281,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
@@ -3485,15 +3485,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4626,10 +4636,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4640,25 +4650,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4775,20 +4785,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6233,6 +6243,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6285,10 +6300,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6340,6 +6360,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
diff -Naur ns-3.20/src/mesh/bindings/modulegen__gcc_LP64.py ns-3.21/src/mesh/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/mesh/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -281,7 +281,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
@@ -3485,15 +3485,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4626,10 +4636,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4640,25 +4650,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4775,20 +4785,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6233,6 +6243,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6285,10 +6300,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6340,6 +6360,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
diff -Naur ns-3.20/src/mesh/helper/mesh-helper.cc ns-3.21/src/mesh/helper/mesh-helper.cc
--- ns-3.20/src/mesh/helper/mesh-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/helper/mesh-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -20,7 +20,10 @@
  */
 #include "mesh-helper.h"
 #include "ns3/simulator.h"
+#include "ns3/pointer.h"
 #include "ns3/mesh-point-device.h"
+#include "ns3/dca-txop.h"
+#include "ns3/edca-txop-n.h"
 #include "ns3/wifi-net-device.h"
 #include "ns3/minstrel-wifi-manager.h"
 #include "ns3/mesh-wifi-interface-mac.h"
@@ -243,6 +246,30 @@
                 {
                   currentStream += mac->AssignStreams (currentStream);
                 }
+              Ptr<RegularWifiMac> rmac = DynamicCast<RegularWifiMac> (mac);
+              if (rmac)
+                {
+                  PointerValue ptr;
+                  rmac->GetAttribute ("DcaTxop", ptr);
+                  Ptr<DcaTxop> dcaTxop = ptr.Get<DcaTxop> ();
+                  currentStream += dcaTxop->AssignStreams (currentStream);
+
+                  rmac->GetAttribute ("VO_EdcaTxopN", ptr);
+                  Ptr<EdcaTxopN> vo_edcaTxopN = ptr.Get<EdcaTxopN> ();
+                  currentStream += vo_edcaTxopN->AssignStreams (currentStream);
+
+                  rmac->GetAttribute ("VI_EdcaTxopN", ptr);
+                  Ptr<EdcaTxopN> vi_edcaTxopN = ptr.Get<EdcaTxopN> ();
+                  currentStream += vi_edcaTxopN->AssignStreams (currentStream);
+
+                  rmac->GetAttribute ("BE_EdcaTxopN", ptr);
+                  Ptr<EdcaTxopN> be_edcaTxopN = ptr.Get<EdcaTxopN> ();
+                  currentStream += be_edcaTxopN->AssignStreams (currentStream);
+
+                  rmac->GetAttribute ("BK_EdcaTxopN", ptr);
+                  Ptr<EdcaTxopN> bk_edcaTxopN = ptr.Get<EdcaTxopN> ();
+                  currentStream += bk_edcaTxopN->AssignStreams (currentStream);
+               }
             }
         }
     }
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression.cc ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression.cc
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -118,12 +118,12 @@
   mesh.SetMacType ("RandomStart", TimeValue (Seconds (0.1)));
   mesh.SetNumberOfInterfaces (1);
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
-  // Five devices, 4 streams per device 
+  // Five devices, 9 streams per device 
   streamsUsed += mesh.AssignStreams (meshDevices, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream mismatch");
   // No streams used here, by default
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream mismatch");
 
   // 3. setup TCP/IP
   InternetStackHelper internetStack;
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,55 +1,55 @@
-ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7            ?   ?   Ѐ<                    E                                 ت  ?   ?   Ј<                    E                                   ?   ?   Ј<                    E                                   E   E   Ѐ            0   D%                               A   A               @ k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                P J    $0H`l3         9 7          x        Ԁ               a  R   R   Ѐ<                `  J   $0H`l4mesh3         9 7          q        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                 Ԁ               JO A   A                 JO         $0H`l  4mesh        ) ?   ?   Ѐ<                p   E                                 + E   E   Ѐ               D%                             + ?   ?   Ѐ<                0   E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - ?   ?   Ј<                   E                              u. E   E   Ѐ            @   D%              /               F   F                         $0H`l
- O4mesh        j A   A               P j         $0H`l 4mesh         F   F                ?         $0H`l
- 4mesh       JO A   A               `          $0H`l @4mesh        F   F                         $0H`l
- !4mesh       j A   A               p 2         $0H`l 4mesh         F   F                         $0H`l
- 34mesh       JO A   A                         $0H`l 4mesh       ve ?   ?   Ѐ<                   E                                vf E   E   Ѐ               D%                            f ?   ?   Ѐ<                   E                                @g       Ԁ              g ?   ?   Ѐ<                   E                             vh E   E   Ѐ               D%              /             C ?   ?   Ѐ<                  E                                 E   E   Ѐ               D%                            > ?   ?   Ѐ<                   E                                       Ԁ              u ?   ?   Ѐ<                0  E                               E   E   Ѐ               D%              ,             4 ?   ?   Ј<                0  E                              L   L          @                    
+ò            i       B  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          a        Ԁ               H        Ԁ                  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                           $0H`l  4mesh        %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               JO A   A                 JO         $0H`l  4mesh        qu ?   ?   Ѐ<                P   E                                 Iw E   E   Ѐ            `   D%                             kw ?   ?   Ѐ<                0   E                                 x       Ԁ               x ?   ?   Ѐ<                p   E                              y ?   ?   Ј<                p   E                              "z E   E   Ѐ            @   D%              ,              +b F   F                a         $0H`l
+ 7O4mesh        j A   A               P j         $0H`l b4mesh         F   F                         $0H`l
+ 4mesh       JO A   A               `          $0H`l 4mesh       +b F   F                         $0H`l
+ z4mesh       j A   A               p 2         $0H`l 4mesh         ?   ?   Ѐ<                   E                                  F   F                E         $0H`l
+ 34mesh         ?   ?   Ј<                   E                                  E   E   Ѐ               D%                            A  ?   ?   Ѐ<                   E                                        Ԁ                ?   ?   Ѐ<                   E                             O  E   E   Ѐ               D%              ,             JO A   A                         $0H`l F4mesh       0 ?   ?   Ѐ<                   E                                1 E   E   Ѐ               D%                            2 ?   ?   Ѐ<                   E                                2       Ԁ              S3 ?   ?   Ѐ<                  E                             3 E   E   Ѐ               D%                           0 L   L                               
 
-        L   L   <                                       
+       [ L   L   <                                       
      
-       q       Ԁ               L   L                               
+              Ԁ              B L   L                               
 
-        L   L   <                P                     
+        L   L   <                0                     
      
-              Ԁ                     <                `              E      @  
+       x       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                                    Ԁ              > L   L                                
+ 	 l                                                                                                                    Ԁ              / L   L                                
 
-       j L   L          p                    
+       [ L   L          P                    
 
-              Ԁ              | L   L   <                                     
+              Ԁ              m L   L   <                `                     
      
-              Ԁ                     <                                E      @  
+       }       Ԁ                     <                                E      @  
 
- 	 l                                                                                                             #       Ԁ              R       <                              E      @  
+ 	 l                                                                                                                    Ԁ              U       <                p              E      @  
 
- 	 l                                                                                                              F   F               #'         $0H`l
- c&4mesh       j A   A               t'         $0H`l #'4mesh               Ԁ              F        <                              E     @  
+ 	 l                                                                                                             +b F   F               3&         $0H`l
+ &4mesh       j A   A               t'         $0H`l &4mesh               Ԁ              F        <                              E     @  
 
  	 l                                                                                                             V        Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ              [        <                              E     @  
 
- 	 l                                                                                                               F   F               +.         $0H`l
- .u'4mesh       JO A   A               0
-/         $0H`l .4mesh              Ԁ                     <                              E     @  
+ 	 l                                                                                                               F   F               S.         $0H`l
+ ].u'4mesh       JO A   A               0
+/         $0H`l .4mesh       7       Ԁ              f       <                              E     @  
 
- 	 l                                                                                                             &       Ԁ              }       <                @               E     @  
+ 	 l                                                                                                             v       Ԁ              ͦ       <                @               E     @  
 
- 	 l                                                                                                                    Ԁ              "       <                              E     @  
+ 	 l                                                                                                                    Ԁ              {       <                              E     @  
 
- 	 l                                                                                                              F   F                Ke6         $0H`l
- 5/4mesh       j A   A               P*6         $0H`l e64mesh       w        Ԁ                      <                              E     @  
+ 	 l                                                                                                             +b F   F               s(6         $0H`l
+ 5/4mesh       j A   A               P*6         $0H`l (64mesh               Ԁ              F        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                `               E     @  
+ 	 l                                                                                                             V        Ԁ                      <                `               E     @  
 
- 	 l                                                                                                             M        Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                               F   F               0k>         $0H`l
- F=64mesh       JO A   A               pJX>         $0H`l >4mesh         ?   ?   Ѐ<                @  E                                ! E   E   Ѐ            P  D%                            " ?   ?   Ѐ<                  E                                "       Ԁ              # ?   ?   Ѐ<                `  E                             # E   E   Ѐ              D%                             ?   ?   Ѐ<                p  E                                m ?   ?   Ј<                p  E                                m E   E   Ѐ              D%              h               ?   ?   Ѐ<                  E                                       Ԁ               ?   ?   Ѐ<                  E                              E   E   Ѐ              D%                                   Ԁ                     <                              E     @  
+ 	 l                                                                                                               F   F               =         $0H`l
+ =64mesh       JO A   A               pJX>         $0H`l =4mesh       | ?   ?   Ѐ<                   E                                } ?   ?   Ј<                   E                                ~ E   E   Ѐ            0  D%              n              /~ ?   ?   Ѐ<                  E                                ~       Ԁ              J ?   ?   Ѐ<                @  E                              E   E   Ѐ              D%                            q ?   ?   Ѐ<                P  E                                p E   E   Ѐ            `  D%                             ?   ?   Ѐ<                  E                                       Ԁ               ?   ?   Ѐ<                p  E                             ^ E   E   Ѐ              D%                                  Ԁ                     <                              E     @  
 
  	 l                                                                                                             &       Ԁ              }       <                               E     @  
 
- 	 l                                                                                                             m       Ԁ                     <                              E     @  
+ 	 l                                                                                                             m       Ԁ                     <                              E     @  
 
- 	 l                                                                                                              F   F               E         $0H`l
- DX>4mesh       j A   A               jE         $0H`l E4mesh    
\ No newline at end of file
+ 	 l                                                                                                             +b F   F               jE         $0H`l
+ @EX>4mesh       j A   A               jE         $0H`l kE4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,94 +1,94 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          o?        Ԁ               N@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ^@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          mA        Ԁ               B        Ԁ               9C  P   P   Ѐ<                0 J    $0H`l3         9 7          D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          YE        Ԁ               h  E   E   Ѐ            P   D%                                  ?   ?   Ѐ<                    E                                 l  ?   ?   Ј<                    E                                         Ԁ               3  ?   ?   Ј<                    E                                 ܬ        Ԁ               +  E   E   Ѐ            0   D%                             4        Ԁ               k  A   A               @ k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                P J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                `  J   $0H`l4mesh3         9 7                  Ԁ               C P   P   Ѐ<                 J     $0H`l3         9 7          S       Ԁ               O A   A                 JO         $0H`l  4mesh        5) E   E   Ѐ            `   D%                                W) ?   ?   Ѐ<                p   E                                  *       Ԁ               *       Ԁ               :+ E   E   Ѐ               D%                             <, ?   ?   Ѐ<                0   E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               }- ?   ?   Ј<                   E                              &.       Ԁ               . E   E   Ѐ            @   D%              /               F   F               p          $0H`l
-  ] 4mesh         F   F                         $0H`l
- O4mesh         A   A               P j         $0H`l 4mesh       =  F   F                         $0H`l
- 4mesh       k  F   F                ?         $0H`l
- 4mesh       O A   A               `          $0H`l @4mesh        F   F                          $0H`l
- @4mesh        F   F                         $0H`l
- !4mesh        A   A               p 2         $0H`l 4mesh       =  F   F                         $0H`l
- P4mesh       k  F   F                         $0H`l
- 34mesh       O A   A                         $0H`l 4mesh       d E   E   Ѐ               D%                               
-e ?   ?   Ѐ<                   E                                e       Ԁ              f E   E   Ѐ               D%                            g ?   ?   Ѐ<                   E                                g       Ԁ              ~g ?   ?   Ѐ<                   E                             &h       Ԁ              h E   E   Ѐ               D%              /             j       Ԁ               E   E   Ѐ               D%                                ?   ?   Ѐ<                  E                                       Ԁ              Y       Ԁ               E   E   Ѐ               D%                             ?   ?   Ѐ<                   E                                       Ԁ              	 ?   ?   Ѐ<                0  E                             u E   E   Ѐ               D%              ,              ?   ?   Ј<                0  E                             p       Ԁ              ަ L   L                               
+ò            i         E   E   Ѐ                D%                                %  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          >&        Ԁ               7'        Ԁ               '  P   P   Ѐ<                  J     $0H`l3         9 7            A   A               0 (          $0H`l $ 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               %  P   P   Ѐ<                @ J    $0H`l3         9 7          5        Ԁ                 R   R   Ѐ<                P  J   $0H`l4mesh3         9 7                  Ԁ               {  P   P   Ѐ<                 J     $0H`l3         9 7          <        Ԁ                 A   A                           $0H`l  4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ               	  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               t  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               O A   A                 JO         $0H`l  4mesh        t E   E   Ѐ            `   D%                                u ?   ?   Ѐ<                P   E                                 u       Ԁ               v       Ԁ               v E   E   Ѐ            `   D%                             w ?   ?   Ѐ<                0   E                                 w       Ԁ               6x ?   ?   Ѐ<                p   E                              x       Ԁ               *y ?   ?   Ј<                p   E                              y       Ԁ               z E   E   Ѐ            @   D%              ,              7 F   F               p H7         $0H`l
+  4mesh        a F   F                a         $0H`l
+ 7O4mesh         A   A               P j         $0H`l b4mesh         F   F                h         $0H`l
+ fb4mesh         F   F                         $0H`l
+ 4mesh       O A   A               `          $0H`l 4mesh       7 F   F                y         $0H`l
+ 4mesh       a F   F                         $0H`l
+ z4mesh        A   A               p 2         $0H`l 4mesh         F   F                         $0H`l
+ 4mesh         E   E   Ѐ               D%                               @  ?   ?   Ѐ<                   E                                  F   F                E         $0H`l
+ 34mesh         ?   ?   Ј<                   E                                \        Ԁ                E   E   Ѐ               D%                              ?   ?   Ѐ<                   E                                        Ԁ              5        Ԁ              W  ?   ?   Ѐ<                   E                                      Ԁ                E   E   Ѐ               D%              ,                     Ԁ              O A   A                         $0H`l F4mesh       b0 E   E   Ѐ               D%                               0 ?   ?   Ѐ<                   E                                -1       Ԁ              |1 E   E   Ѐ               D%                            2 ?   ?   Ѐ<                   E                                2       Ԁ              2 ?   ?   Ѐ<                  E                             3       Ԁ              S4 E   E   Ѐ               D%                           5       Ԁ               L   L                               
 
-       	 L   L          @                    
+        L   L                               
 
-       5 L   L   <                                       
+       ۬ L   L   <                                       
      
-       E       Ԁ               L   L                               
+              Ԁ              í L   L                               
 
-       l L   L   <                P                     
+       - L   L   <                0                     
      
-       (       Ԁ               L   L   <                                      
+              Ԁ               L   L   <                                      
      
-       L       Ԁ              {       <                               E      @  
+              Ԁ              <       <                               E      @  
 
- 	 l                                                                                                                    Ԁ                     <                `              E      @  
+ 	 l                                                                                                             L       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                             "       Ԁ               L   L                                
+ 	 l                                                                                                                    Ԁ               L   L                                
 
-        L   L          p                    
+        L   L          P                    
 
-        L   L                               
+        L   L                               
 
-              Ԁ               L   L   <                                     
+              Ԁ               L   L   <                                     
      
-              Ԁ               L   L   <                                     
+              Ԁ               L   L   <                `                     
      
-              Ԁ                     <                                E      @  
+              Ԁ                     <                                E      @  
 
- 	 l                                                                                                                    Ԁ              N       <                              E      @  
+ 	 l                                                                                                                    Ԁ              Q       <                p              E      @  
 
- 	 l                                                                                                                    Ԁ                     <                               E      @  
+ 	 l                                                                                                                    Ԁ              $       <                               E      @  
 
- 	 l                                                                                                              F   F               0
-c&         $0H`l
- 4mesh        F   F               #'         $0H`l
- c&4mesh        A   A               t'         $0H`l #'4mesh               Ԁ                      <                @              E     @  
+ 	 l                                                                                                             7 F   F               0Ȼ&         $0H`l
+ J&F4mesh       a F   F               3&         $0H`l
+ &4mesh        A   A               t'         $0H`l &4mesh               Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              A        <                              E     @  
+ 	 l                                                                                                                     Ԁ              A        <                              E     @  
 
  	 l                                                                                                                     Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ              {        <                              E     @  
+ 	 l                                                                                                                     Ԁ              W        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              	        <                P              E     @  
+ 	 l                                                                                                                     Ԁ              	        <                P              E     @  
 
- 	 l                                                                                                             =  F   F               `*.         $0H`l
- #'&4mesh       k  F   F               +.         $0H`l
- .u'4mesh       O A   A               0
-/         $0H`l .4mesh       {       Ԁ                     <                p              E     @  
+ 	 l                                                                                                               F   F               `\.         $0H`l
+ -&4mesh         F   F               S.         $0H`l
+ ].u'4mesh       O A   A               0
+/         $0H`l .4mesh       ˣ       Ԁ                     <                p              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                             
+       Ԁ              a       <                              E     @  
 
- 	 l                                                                                                             R       Ԁ                     <                @               E     @  
+ 	 l                                                                                                                    Ԁ              ѧ       <                @               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ              w       <                              E     @  
 
- 	 l                                                                                                             _       Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ              &       <                              E     @  
 
- 	 l                                                                                                              F   F               J5         $0H`l
- .4.4mesh        F   F                Ke6         $0H`l
- 5/4mesh        A   A               P*6         $0H`l e64mesh               Ԁ              :        <                              E     @  
+ 	 l                                                                                                             7 F   F               5         $0H`l
+ 5.4mesh       a F   F               s(6         $0H`l
+ 5/4mesh        A   A               P*6         $0H`l (64mesh               Ԁ                      <                              E     @  
 
- 	 l                                                                                                             J        Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ              A        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                `               E     @  
+ 	 l                                                                                                                     Ԁ                      <                `               E     @  
 
- 	 l                                                                                                             !        Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              9	        <                              E     @  
+ 	 l                                                                                                                     Ԁ              
+        <                              E     @  
 
- 	 l                                                                                                             =  F   F               jF=         $0H`l
- e654mesh       k  F   F               0k>         $0H`l
- F=64mesh       O A   A               pJX>         $0H`l >4mesh       h  E   E   Ѐ              D%                                 ?   ?   Ѐ<                @  E                                2!       Ԁ              ! E   E   Ѐ            P  D%                            h" ?   ?   Ѐ<                  E                                x"       Ԁ              " ?   ?   Ѐ<                `  E                             S#       Ԁ              &       Ԁ              5 E   E   Ѐ              D%                               W ?   ?   Ѐ<                p  E                                 ?   ?   Ј<                p  E                                       Ԁ               E   E   Ѐ              D%              h              ߢ ?   ?   Ѐ<                  E                                       Ԁ              > ?   ?   Ѐ<                  E                             ˣ       Ԁ               E   E   Ѐ              D%                                   Ԁ              {       Ԁ                     <                              E     @  
+ 	 l                                                                                                               F   F               (=         $0H`l
+ -=(64mesh         F   F               =         $0H`l
+ =64mesh       O A   A               pJX>         $0H`l =4mesh       { E   E   Ѐ              D%                               { ?   ?   Ѐ<                   E                                | ?   ?   Ј<                   E                                J}       Ԁ              } E   E   Ѐ            0  D%              n              ~ ?   ?   Ѐ<                  E                                ~       Ԁ              ~ ?   ?   Ѐ<                @  E                                    Ԁ              J E   E   Ѐ              D%                            &       Ԁ               E   E   Ѐ              D%                                ?   ?   Ѐ<                P  E                                       Ԁ               E   E   Ѐ            `  D%                             ?   ?   Ѐ<                  E                                       Ԁ              f ?   ?   Ѐ<                p  E                                    Ԁ               E   E   Ѐ              D%                           K       Ԁ              {       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
  	 l                                                                                                             R       Ԁ              1       <                               E     @  
 
- 	 l                                                                                                             A       Ԁ                     <                              E     @  
+ 	 l                                                                                                             A       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             Ѩ       Ԁ                      <                               E     @  
+ 	 l                                                                                                             E       Ԁ              t       <                               E     @  
 
- 	 l                                                                                                              F   F               D         $0H`l
- >v=4mesh        F   F               E         $0H`l
- DX>4mesh        A   A               jE         $0H`l E4mesh    
\ No newline at end of file
+ 	 l                                                                                                             7 F   F               H@E         $0H`l
+ D=4mesh       a F   F               jE         $0H`l
+ @EX>4mesh        A   A               jE         $0H`l kE4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,116 +1,115 @@
-ò            i         R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                       Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                 J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          @        Ԁ               1A  P   P   Ѐ<                 J     $0H`l3         9 7          AA        Ԁ               VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          fB        Ԁ               B  P   P   Ѐ<                0 J    $0H`l3         9 7          uC        Ԁ               C  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          -E        Ԁ               ]  F   F               @ ]          $0H`l
-  = 4mesh          E   E   Ѐ            P   D%                                  ?   ?   Ј<                P   E                                         Ԁ                 ?   ?   Ј<                    E                                         Ԁ                 E   E   Ѐ            0   D%                             j        Ԁ                 ?   ?   Ѐ<                p   E                                      Ԁ                 A   A               @ k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                P J    $0H`l3         9 7          a  R   R   Ѐ<                `  J   $0H`l4mesh3         9 7                 Ԁ               ( E   E   Ѐ            `   D%                                ) ?   ?   Ѐ<                p   E                                 )       Ԁ               * ?   ?   Ј<                   E                                 *       Ԁ               + E   E   Ѐ               D%                             y,       Ԁ               - ?   ?   Ѐ<                   E                              -       Ԁ               - ?   ?   Ј<                   E                              -       Ԁ                F   F               p          $0H`l
-  ] 4mesh         F   F                1         $0H`l
- 4mesh         F   F                         $0H`l
- O4mesh       j=  F   F                         $0H`l
- 4mesh       m  F   F                Q         $0H`l
- U4mesh         F   F                ?         $0H`l
- 4mesh        F   F                          $0H`l
- @4mesh        F   F                qP         $0H`l
- !4mesh        F   F                         $0H`l
- !4mesh       j=  F   F                         $0H`l
- P4mesh       m  F   F                         $0H`l
- 4mesh         F   F                         $0H`l
- 34mesh       sd E   E   Ѐ               D%                               ve ?   ?   Ѐ<                   E                                e       Ԁ              vf E   E   Ѐ               D%                            g ?   ?   Ј<                   E                                /g       Ԁ              g ?   ?   Ѐ<                   E                             g       Ԁ              h E   E   Ѐ               D%                            i       Ԁ              Bj ?   ?   Ѐ<                  E                             Rj       Ԁ              A E   E   Ѐ               D%                               C ?   ?   Ѐ<                  E                                S       Ԁ               ?   ?   Ј<                   E                                ,       Ԁ                     Ԁ              N ?   ?   Ј<                @  E                             ^       Ԁ              4 ?   ?   Ј<                0  E                             D       Ԁ              3 L   L          P                    
+ò            i       *  E   E   Ѐ                D%                                u$  <   <                 $          $0H`l 4mesh        $  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          \%        Ԁ               &  P   P   Ѐ<                 J     $0H`l3          9 7          &        Ԁ               &  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          
+'        Ԁ               a'  P   P   Ѐ<                  J     $0H`l3         9 7          "(        Ԁ               )        Ԁ               )  P   P   Ѐ<                0 J    $0H`l3         9 7          *  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          +        Ԁ               (  A   A               0 (          $0H`l $ 4mesh        B  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          R        Ԁ                 P   P   Ѐ<                @ J    $0H`l3         9 7          a        Ԁ                 R   R   Ѐ<                P  J   $0H`l4mesh3         9 7          H        Ԁ                  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ                 A   A                           $0H`l  4mesh                Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7            R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               nt E   E   Ѐ            `   D%                                qu ?   ?   Ѐ<                P   E                                 u       Ԁ               Jv ?   ?   Ј<                P   E                                 Zv       Ԁ               Iw E   E   Ѐ            `   D%                             x ?   ?   Ѐ<                p   E                              x       Ԁ               y ?   ?   Ј<                p   E                              y       Ԁ                F   F                -         $0H`l
+  4mesh        H7 F   F               p H7         $0H`l
+  4mesh        +b F   F                a         $0H`l
+ 7O4mesh       $  F   F                Mf         $0H`l
+ 7J4mesh       (  F   F                h         $0H`l
+ fb4mesh         F   F                         $0H`l
+ 4mesh        F   F                m         $0H`l
+ 4mesh       H7 F   F                y         $0H`l
+ 4mesh       +b F   F                         $0H`l
+ z4mesh       $  F   F                         $0H`l
+ z4mesh       (  F   F                         $0H`l
+ 4mesh         E   E   Ѐ               D%                                 F   F                E         $0H`l
+ 34mesh         ?   ?   Ј<                   E                                /        Ԁ                E   E   Ѐ               D%                              ?   ?   Ј<                   E                                	        Ԁ                ?   ?   Ѐ<                   E                                     Ԁ              A  E   E   Ѐ               D%                                    Ԁ                ?   ?   Ѐ<                   E                                     Ԁ              / E   E   Ѐ               D%                               0 ?   ?   Ѐ<                   E                                1       Ԁ              1 E   E   Ѐ               D%                            2 ?   ?   Ј<                   E                                2       Ԁ              S3 ?   ?   Ѐ<                  E                             c3       Ԁ              R4 E   E   Ѐ               D%              `             5       Ԁ              5 ?   ?   Ѐ<                  E                             5       Ԁ              ٪ L   L                               
 
-       ^ L   L                               
+        L   L                               
 
-        L   L          @                    
+       0 L   L                               
 
-       q       Ԁ               L   L   <                P                     
+              Ԁ               L   L   <                0                     
      
-              Ԁ               L   L   <                                      
+              Ԁ              A L   L   <                                      
      
-       X       Ԁ               L   L   <                `                     
+              Ԁ               L   L   <                0                     
      
-              Ԁ                     <                p              E      @  
+       P       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                                    Ԁ              v       <                               E      @  
+ 	 l                                                                                                             γ       Ԁ              7       <                               E      @  
 
- 	 l                                                                                                                    Ԁ                     <                `              E      @  
+ 	 l                                                                                                             x       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                             j L   L          p                    
+ 	 l                                                                                                              F   F               PI&         $0H`l
+ -&4mesh       [ L   L          P                    
 
-        L   L                               
+        L   L                               
 
-        L   L                              
+        L   L          `                    
 
-              Ԁ              \ L   L   <                                     
+              Ԁ               L   L   <                p                     
      
-       l       Ԁ               L   L   <                                     
+              Ԁ               L   L   <                                     
      
-              Ԁ              | L   L   <                                     
+              Ԁ              m L   L   <                `                     
      
-       #       Ԁ              R       <                              E      @  
+              Ԁ              U       <                p              E      @  
 
- 	 l                                                                                                             b       Ԁ                     <                               E      @  
+ 	 l                                                                                                             e       Ԁ                     <                               E      @  
 
- 	 l                                                                                                             '       Ԁ              V       <                              E      @  
+ 	 l                                                                                                             `       Ԁ                     <                              E      @  
 
- 	 l                                                                                                              F   F               0
-c&         $0H`l
- 4mesh        F   F               &         $0H`l
- 8&c&4mesh        F   F               #'         $0H`l
- c&4mesh       @        Ԁ              o        <                              E     @  
+ 	 l                                                                                                             H7 F   F               0Ȼ&         $0H`l
+ J&F4mesh       +b F   F               3&         $0H`l
+ &4mesh       @        Ԁ              o        <                              E     @  
 
  	 l                                                                                                                     Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              F        <                              E     @  
+ 	 l                                                                                                                     Ԁ              F        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ              [        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                P              E     @  
+ 	 l                                                                                                             k        Ԁ                      <                P              E     @  
 
- 	 l                                                                                                             0
-        Ԁ              _        <                              E     @  
+ 	 l                                                                                                             
+        Ԁ              2        <                              E     @  
 
- 	 l                                                                                                             j=  F   F               `*.         $0H`l
- #'&4mesh       m  F   F               3.         $0H`l
- -.4mesh         F   F               +.         $0H`l
- .u'4mesh       `       Ԁ              ?       <                              E     @  
+ 	 l                                                                                                             $  F   F               -         $0H`l
+ &-4mesh       (  F   F               `\.         $0H`l
+ -&4mesh         F   F               S.         $0H`l
+ ].u'4mesh       `       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             O       Ԁ                     <                p              E     @  
+ 	 l                                                                                                                    Ԁ                     <                p              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                             7       Ԁ              f       <                              E     @  
 
- 	 l                                                                                                                    Ԁ              "       <                              E     @  
+ 	 l                                                                                                                    Ԁ              {       <                              E     @  
 
- 	 l                                                                                                             2       Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ              !       <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                             b       Ԁ                     <                              E     @  
 
- 	 l                                                                                                              F   F               J5         $0H`l
- .4.4mesh        F   F               5         $0H`l
- z554mesh        F   F                Ke6         $0H`l
- 5/4mesh                Ԁ                      <                               E     @  
+ 	 l                                                                                                              F   F               5         $0H`l
+ ].o54mesh       H7 F   F               5         $0H`l
+ 5.4mesh       +b F   F               s(6         $0H`l
+ 5/4mesh       @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              6        <                              E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                             w        Ԁ                      <                              E     @  
+ 	 l                                                                                                                     Ԁ              F        <                              E     @  
 
- 	 l                                                                                                             M        Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              4        <                              E     @  
+ 	 l                                                                                                                     Ԁ              	        <                              E     @  
 
- 	 l                                                                                                             u	        Ԁ              
-        <                0              E     @  
+ 	 l                                                                                                             B
+        Ԁ              q        <                               E     @  
 
- 	 l                                                                                                             j=  F   F               jF=         $0H`l
- e654mesh       m  F   F               @v=         $0H`l
- =F=4mesh         F   F               0k>         $0H`l
- F=64mesh        E   E   Ѐ              D%                                 ?   ?   Ѐ<                @  E                                !       Ԁ              "       Ԁ              # ?   ?   Ѐ<                `  E                             &#       Ԁ              # ?   ?   Ј<                P  E                                #       Ԁ              V% E   E   Ѐ            `  D%              p              &       Ԁ              & ?   ?   Ѐ<                p  E                             &       Ԁ               E   E   Ѐ              D%                               m ?   ?   Ј<                p  E                                }       Ԁ              m E   E   Ѐ              D%              h                     Ԁ               ?   ?   Ѐ<                  E                                    Ԁ              v ?   ?   Ј<                  E                                       Ԁ              \ ?   ?   Ѐ<                  E                             l       Ԁ                     Ԁ              ?       <                              E     @  
+ 	 l                                                                                                             $  F   F               -=         $0H`l
+ 5=4mesh       (  F   F               (=         $0H`l
+ -=(64mesh         F   F               =         $0H`l
+ =64mesh       *{ E   E   Ѐ              D%                               } ?   ?   Ј<                   E                                }       Ԁ              ~ E   E   Ѐ            0  D%              n              ~       Ԁ              J ?   ?   Ѐ<                @  E                             Z       Ԁ              & ?   ?   Ј<                   E                                6       Ԁ               E   E   Ѐ            0  D%                            \       Ԁ               ?   ?   Ѐ<                @  E                                    Ԁ              n E   E   Ѐ              D%                               q ?   ?   Ѐ<                P  E                                       Ԁ              p E   E   Ѐ            `  D%                             ?   ?   Ј<                P  E                                       Ԁ               ?   ?   Ѐ<                p  E                                    Ԁ               E   E   Ѐ            `  D%                                   Ԁ               ?   ?   Ѐ<                p  E                                    Ԁ                     Ԁ              ?       <                              E     @  
 
  	 l                                                                                                             O       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ                     <                              E     @  
 
- 	 l                                                                                                             m       Ԁ                     <                              E     @  
+ 	 l                                                                                                             m       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ              o       <                               E     @  
 
- 	 l                                                                                                             <       Ԁ              k       <                              E     @  
+ 	 l                                                                                                                    Ԁ              ߫       <                              E     @  
 
- 	 l                                                                                                              F   F               D         $0H`l
- >v=4mesh        F   F               1E         $0H`l
- DD4mesh        F   F               E         $0H`l
- DX>4mesh    
\ No newline at end of file
+ 	 l                                                                                                              F   F               -D         $0H`l
+ =D4mesh       H7 F   F               H@E         $0H`l
+ D=4mesh       +b F   F               jE         $0H`l
+ @EX>4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,98 +1,95 @@
-ò            i         <   <                           $0H`l 4mesh        0  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          mA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B        Ԁ               9C  P   P   Ѐ<                0 J    $0H`l3         9 7          IC        Ԁ               D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          /D        Ԁ               D  P   P   Ѐ<                0 J    $0H`l3         9 7          YE        Ԁ               ]  F   F               @ ]          $0H`l
-  = 4mesh        h  E   E   Ѐ            P   D%                                  ?   ?   Ѐ<                P   E                                 l  ?   ?   Ј<                P   E                                 E  ?   ?   Ј<                P   E                                         Ԁ               ܬ        Ԁ               +  E   E   Ѐ            `   D%                             .  ?   ?   Ѐ<                0   E                                 >        Ԁ                 ?   ?   Ѐ<                p   E                              4        Ԁ                 E   E   Ѐ            @   D%              .              5) E   E   Ѐ            `   D%                                W) ?   ?   Ѐ<                   E                                  *       Ԁ               B* ?   ?   Ј<                   E                                 *       Ԁ               :+ E   E   Ѐ               D%                             <, ?   ?   Ѐ<                P   E                                 L,       Ԁ               , ?   ?   Ѐ<                   E                              D-       Ԁ               . E   E   Ѐ            `   D%              0              6 A   A               p Ƴ         $0H`l ] 4mesh         F   F               p          $0H`l
-  ] 4mesh        1 F   F                1         $0H`l
- 4mesh         A   A                T         $0H`l 4mesh       =  F   F                         $0H`l
- 4mesh       m  F   F                Q         $0H`l
- U4mesh       6 A   A                         $0H`l 4mesh        F   F                          $0H`l
- @4mesh       1 F   F                qP         $0H`l
- !4mesh         A   A                &         $0H`l P4mesh       =  F   F                         $0H`l
- P4mesh       m  F   F                         $0H`l
- 4mesh       d E   E   Ѐ               D%                               
-e ?   ?   Ѐ<                   E                                e       Ԁ              f ?   ?   Ј<                   E                                \g       Ԁ              &h       Ԁ              uh E   E   Ѐ               D%                            xi ?   ?   Ѐ<                   E                                i       Ԁ              i ?   ?   Ѐ<                  E                             j       Ԁ              Bk E   E   Ѐ               D%              8              E   E   Ѐ               D%                                ?   ?   Ѐ<                   E                                       Ԁ               ?   ?   Ј<                   E                                Y       Ԁ               E   E   Ѐ            0  D%                            ?   ?   Ѐ<                   E                                       Ԁ              	 ?   ?   Ѐ<                @  E                              ?   ?   Ј<                @  E                                    Ԁ              N E   E   Ѐ               D%                            L   L                                
+ò            i         E   E   Ѐ                D%                                $  <   <                 $          $0H`l 4mesh        %  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          /%        Ԁ               }%  P   P   Ѐ<                 J     $0H`l3          9 7          >&        Ԁ               r&  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          7'        Ԁ               '  P   P   Ѐ<                  J     $0H`l3         9 7          '        Ԁ               (  R   R   Ј<                   J   $0H`l4mesh3          9 7          (        Ԁ               <)  P   P   Ѐ<                0 J    $0H`l3         9 7          )        Ԁ               :*  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          *        Ԁ               +  P   P   Ѐ<                 J     $0H`l3         9 7          +        Ԁ               ?  A   A                 k?          $0H`l $ 4mesh          A   A               0 (          $0H`l $ 4mesh                Ԁ               %  P   P   Ѐ<                @ J    $0H`l3         9 7            R   R   Ѐ<                P  J   $0H`l4mesh3         9 7          <        Ԁ               t E   E   Ѐ            `   D%                                u ?   ?   Ѐ<                P   E                                 u       Ԁ               u ?   ?   Ј<                P   E                                 v       Ԁ               v E   E   Ѐ            `   D%                             w ?   ?   Ѐ<                0   E                                 w       Ԁ               6x ?   ?   Ѐ<                p   E                              x       Ԁ               y E   E   Ѐ            @   D%              -              y       Ԁ                A   A               P          $0H`l $ 4mesh        - F   F                -         $0H`l
+  4mesh        7 F   F               p H7         $0H`l
+  4mesh         A   A               ` I         $0H`l 4mesh       $  F   F                Mf         $0H`l
+ 7J4mesh         F   F                h         $0H`l
+ fb4mesh        A   A               p          $0H`l f4mesh       - F   F                m         $0H`l
+ 4mesh       7 F   F                y         $0H`l
+ 4mesh         A   A                         $0H`l 4mesh       $  F   F                         $0H`l
+ z4mesh         F   F                         $0H`l
+ 4mesh         E   E   Ѐ               D%                               @  ?   ?   Ѐ<                   E                                \        Ԁ                ?   ?   Ј<                   E                                  ?   ?   Ј<                   E                                5        Ԁ                       Ԁ                E   E   Ѐ               D%                              ?   ?   Ѐ<                   E                                        Ԁ              .  ?   ?   Ѐ<                   E                                     Ԁ                E   E   Ѐ               D%              B             b0 E   E   Ѐ               D%                               0 ?   ?   Ѐ<                   E                                -1       Ԁ              2 ?   ?   Ј<                   E                                2       Ԁ              3       Ԁ              3 E   E   Ѐ               D%              `             4 ?   ?   Ѐ<                   E                                4       Ԁ              ?5 ?   ?   Ѐ<                  E                             5       Ԁ              6 E   E   Ѐ               D%                            A   A                -&         $0H`l 4mesh       . L   L                                
 
-        L   L          P                    
+       Y L   L                               
 
-       ަ L   L                               
+        L   L                               
 
-       (       Ԁ               L   L   <                                      
+              Ԁ               L   L   <                                      
      
-       +       Ԁ               L   L   <                `                     
+       ѯ       Ԁ              ( L   L   <                0                     
      
-       ?       Ԁ              n       <                                E      @  
+              Ԁ                     <                                E      @  
 
- 	 l                                                                                                             ~       Ԁ                     <                p              E      @  
+ 	 l                                                                                                             $       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                             L       Ԁ              {       <                               E      @  
+ 	 l                                                                                                                    Ԁ              <       <                               E      @  
 
- 	 l                                                                                                             6 A   A               F8&         $0H`l 4mesh        L   L                               
+ 	 l                                                                                                             - F   F               PI&         $0H`l
+ -&4mesh        L   L                               
 
-       @ L   L                              
+       1 L   L          `                    
 
-       l L   L   <                                       
+       ] L   L   <                                       
      
-       |       Ԁ               L   L   <                                     
+       m       Ԁ               L   L   <                p                     
      
-              Ԁ               L   L   <                                     
+              Ԁ               L   L   <                                     
      
-       R L   L          0                    
+       U L   L                              
 
-              Ԁ                     <                               E      @  
+              Ԁ              $       <                               E      @  
 
- 	 l                                                                                                                    Ԁ              R       <                              E      @  
+ 	 l                                                                                                             4       Ԁ                     <                              E      @  
 
- 	 l                                                                                                                    Ԁ               F   F               0
-c&         $0H`l
- 4mesh       1 F   F               &         $0H`l
- 8&c&4mesh               <                @               E     @  
+ 	 l                                                                                                                    Ԁ              7 F   F               0Ȼ&         $0H`l
+ J&F4mesh               <                                E     @  
 
- 	 l                                                                                                                     Ԁ              k        <                              E     @  
+ 	 l                                                                                                                     Ԁ              k        <                              E     @  
 
  	 l                                                                                                                     Ԁ                      <                @              E     @  
 
- 	 l                                                                                                                     Ԁ              	        <                P              E     @  
+ 	 l                                                                                                               A   A               0+-         $0H`l J&4mesh               Ԁ              	        <                P              E     @  
 
- 	 l                                                                                                             
-        Ԁ              [
-        <                              E     @  
+ 	 l                                                                                                             	        Ԁ              .
+        <                              E     @  
 
- 	 l                                                                                                                     Ԁ                A   A               Pf-         $0H`l &4mesh       =  F   F               `*.         $0H`l
- #'&4mesh       m  F   F               3.         $0H`l
- -.4mesh       $       <                `               E     @  
+ 	 l                                                                                                             n        Ԁ              $  F   F               -         $0H`l
+ &-4mesh         F   F               `\.         $0H`l
+ -&4mesh       $       <                @               E     @  
 
- 	 l                                                                                                             4       Ԁ                     <                              E     @  
+ 	 l                                                                                                             4       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             {       Ԁ                     <                p              E     @  
+ 	 l                                                                                                             ˣ       Ԁ                     <                p              E     @  
 
- 	 l                                                                                                             _       Ԁ                     <                              E     @  
+ 	 l                                                                                                              A   A               PKo5         $0H`l -4mesh              Ԁ              &       <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                             6       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             P       Ԁ              6 A   A               pz5         $0H`l 4.4mesh        F   F               J5         $0H`l
- .4.4mesh       1 F   F               5         $0H`l
- z554mesh                <                               E     @  
+ 	 l                                                                                                             ͬ       Ԁ              - F   F               5         $0H`l
+ ].o54mesh       7 F   F               5         $0H`l
+ 5.4mesh               <                `               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ              k        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              :        <                              E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                                     Ԁ              9	        <                              E     @  
+ 	 l                                                                                                               A   A               pk=         $0H`l 54mesh               Ԁ              
+        <                              E     @  
 
- 	 l                                                                                                             I	        Ԁ              	        <                0              E     @  
+ 	 l                                                                                                             
+        Ԁ              m
+        <                               E     @  
 
- 	 l                                                                                                             
-        Ԁ                A   A               =         $0H`l 54mesh       =  F   F               jF=         $0H`l
- e654mesh       m  F   F               @v=         $0H`l
- =F=4mesh       h  E   E   Ѐ              D%                                 ?   ?   Ѐ<                P  E                                2!       Ԁ              ! ?   ?   Ј<                P  E                                S#       Ԁ              ~# ?   ?   Ј<                P  E                                &$       Ԁ              $ E   E   Ѐ            `  D%              p              % ?   ?   Ѐ<                  E                                %       Ԁ              && ?   ?   Ѐ<                p  E                             &       Ԁ              ' E   E   Ѐ              D%                            5 E   E   Ѐ              D%                               W ?   ?   Ѐ<                  E                                       Ԁ               E   E   Ѐ              D%                            ߢ ?   ?   Ѐ<                  E                                       Ԁ              ߣ E   E   Ѐ              D%                           
- ?   ?   Ј<                  E                                       Ԁ               ?   ?   Ѐ<                  E                                    Ԁ              ԡ       <                               E     @  
+ 	 l                                                                                                                     Ԁ              $  F   F               -=         $0H`l
+ 5=4mesh         F   F               (=         $0H`l
+ -=(64mesh       { E   E   Ѐ              D%                               { ?   ?   Ѐ<                   E                                J}       Ԁ              } ?   ?   Ј<                   E                                       Ԁ               ?   ?   Ј<                   E                                c       Ԁ              9 E   E   Ѐ            0  D%                             ?   ?   Ѐ<                  E                                /       Ԁ              } ?   ?   Ѐ<                @  E                             &       Ԁ               E   E   Ѐ              D%                            E   E   Ѐ              D%                                ?   ?   Ѐ<                P  E                                       Ԁ               ?   ?   Ј<                P  E                                D       Ԁ                     Ԁ              ^ E   E   Ѐ            `  D%                            E ?   ?   Ѐ<                  E                                U       Ԁ               ?   ?   Ѐ<                p  E                             K       Ԁ               E   E   Ѐ              D%                           ԡ       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              ;       <                              E     @  
+ 	 l                                                                                                                    Ԁ              ;       <                              E     @  
 
  	 l                                                                                                             {       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             Ѩ       Ԁ                      <                               E     @  
+ 	 l                                                                                                              A   A               D         $0H`l -=4mesh       E       Ԁ              t       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              g       <                              E     @  
+ 	 l                                                                                                                    Ԁ              ۪       <                              E     @  
 
- 	 l                                                                                                                    Ԁ              6 A   A               ƼD         $0H`l v=4mesh        F   F               D         $0H`l
- >v=4mesh       1 F   F               1E         $0H`l
- DD4mesh    
\ No newline at end of file
+ 	 l                                                                                                                    Ԁ              - F   F               -D         $0H`l
+ =D4mesh       7 F   F               H@E         $0H`l
+ D=4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,58 +1,56 @@
-ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               ~  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               |>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          O@  R   R   Ј<                   J   $0H`l4mesh3         9 7          VB  R   R   Ј<                   J   $0H`l4mesh3         9 7          uC        Ԁ               \D        Ԁ               E  P   P   Ѐ<                0 J    $0H`l3         9 7          ]  F   F               @ ]          $0H`l
-  = 4mesh          ?   ?   Ѐ<                P   E                                 ت  ?   ?   Ј<                P   E                                   ?   ?   Ј<                P   E                                   E   E   Ѐ            `   D%                               ?   ?   Ѐ<                0   E                                 j        Ԁ                 ?   ?   Ѐ<                p   E                                E   E   Ѐ            @   D%              .              ) ?   ?   Ѐ<                   E                                 * ?   ?   Ј<                   E                                 + E   E   Ѐ               D%                             + ?   ?   Ѐ<                P   E                                 y,       Ԁ               - ?   ?   Ѐ<                   E                              - E   E   Ѐ            `   D%              0              Ƴ A   A               p Ƴ         $0H`l ] 4mesh         F   F                1         $0H`l
- 4mesh         A   A                T         $0H`l 4mesh       m  F   F                Q         $0H`l
- U4mesh       Ƴ A   A                         $0H`l 4mesh        F   F                qP         $0H`l
- !4mesh         A   A                &         $0H`l P4mesh       m  F   F                         $0H`l
- 4mesh       ve ?   ?   Ѐ<                   E                                g ?   ?   Ј<                   E                                h E   E   Ѐ               D%                            i ?   ?   Ѐ<                   E                                i       Ԁ              Bj ?   ?   Ѐ<                  E                             j E   E   Ѐ               D%              8             C ?   ?   Ѐ<                   E                                 ?   ?   Ј<                   E                                 E   E   Ѐ            0  D%                           > ?   ?   Ѐ<                   E                                       Ԁ              u ?   ?   Ѐ<                @  E                             N ?   ?   Ј<                @  E                              E   E   Ѐ               D%                            L   L                                
+ò            i       u$  <   <                 $          $0H`l 4mesh        $  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          \%        Ԁ               &  P   P   Ѐ<                 J     $0H`l3          9 7          &  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          "(        Ԁ               V(  R   R   Ј<                   J   $0H`l4mesh3          9 7          )        Ԁ               )  P   P   Ѐ<                0 J    $0H`l3         9 7          )        Ԁ               *  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          *        Ԁ                +  P   P   Ѐ<                 J     $0H`l3         9 7          +        Ԁ               k?  A   A                 k?          $0H`l $ 4mesh        qu ?   ?   Ѐ<                P   E                                 Jv ?   ?   Ј<                P   E                                 Iw E   E   Ѐ            `   D%                             kw ?   ?   Ѐ<                0   E                                 x       Ԁ               x ?   ?   Ѐ<                p   E                              .y E   E   Ѐ            @   D%              -               A   A               P          $0H`l $ 4mesh         F   F                -         $0H`l
+  4mesh       k  A   A               ` I         $0H`l 4mesh       $  F   F                Mf         $0H`l
+ 7J4mesh        A   A               p          $0H`l f4mesh        F   F                m         $0H`l
+ 4mesh       k  A   A                         $0H`l 4mesh       $  F   F                         $0H`l
+ z4mesh         ?   ?   Ѐ<                   E                                  ?   ?   Ј<                   E                                  ?   ?   Ј<                   E                                A  E   E   Ѐ               D%                            c  ?   ?   Ѐ<                   E                                        Ԁ                ?   ?   Ѐ<                   E                             &  E   E   Ѐ               D%              B             0 ?   ?   Ѐ<                   E                                2 ?   ?   Ј<                   E                                R4 E   E   Ѐ               D%              `             t4 ?   ?   Ѐ<                   E                                5       Ԁ              5 ?   ?   Ѐ<                  E                             76 E   E   Ѐ               D%                            A   A                -&         $0H`l 4mesh        L   L                                
 
-       3 L   L          P                    
+       ٪ L   L                               
 
-       X       Ԁ               L   L   <                `                     
+              Ԁ               L   L   <                0                     
      
-              Ԁ              j       <                                E      @  
+              Ԁ                     <                                E      @  
 
- 	 l                                                                                                                    Ԁ                     <                p              E      @  
+ 	 l                                                                                                             P       Ԁ                     <                @              E      @  
 
- 	 l                                                                                                             Ƴ A   A               F8&         $0H`l 4mesh        L   L                              
+ 	 l                                                                                                              F   F               PI&         $0H`l
+ -&4mesh        L   L          `                    
 
-        L   L   <                                       
+        L   L   <                                       
      
-              Ԁ              \ L   L   <                                     
+              Ԁ               L   L   <                p                     
      
-        L   L          0                    
+        L   L                              
 
-       '       Ԁ              V       <                              E      @  
+       `       Ԁ                     <                              E      @  
 
- 	 l                                                                                                             f       Ԁ               F   F               &         $0H`l
- 8&c&4mesh                 <                @               E     @  
+ 	 l                                                                                                                    Ԁ                        <                                E     @  
 
- 	 l                                                                                                             @        Ԁ              o        <                              E     @  
+ 	 l                                                                                                             @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                             0
-        Ԁ              _        <                              E     @  
+ 	 l                                                                                                             k  A   A               0+-         $0H`l J&4mesh       
+        Ԁ              2        <                              E     @  
 
- 	 l                                                                                                             o        Ԁ                A   A               Pf-         $0H`l &4mesh       m  F   F               3.         $0H`l
- -.4mesh               <                `               E     @  
+ 	 l                                                                                                             B        Ԁ              $  F   F               -         $0H`l
+ &-4mesh               <                @               E     @  
 
- 	 l                                                                                                             `       Ԁ              ?       <                              E     @  
+ 	 l                                                                                                             `       Ԁ                     <                              E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                              A   A               PKo5         $0H`l -4mesh       b       Ԁ                     <                              E     @  
 
- 	 l                                                                                                             $       Ԁ              Ƴ A   A               pz5         $0H`l 4.4mesh        F   F               5         $0H`l
- z554mesh                 <                               E     @  
+ 	 l                                                                                                                    Ԁ               F   F               5         $0H`l
+ ].o54mesh                 <                `               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                               E     @  
+ 	 l                                                                                                             @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                             u	        Ԁ              
-        <                0              E     @  
+ 	 l                                                                                                             k  A   A               pk=         $0H`l 54mesh       B
+        Ԁ              q        <                               E     @  
 
- 	 l                                                                                                             
-        Ԁ                A   A               =         $0H`l 54mesh       m  F   F               @v=         $0H`l
- =F=4mesh         ?   ?   Ѐ<                P  E                                ! ?   ?   Ј<                P  E                                # ?   ?   Ј<                P  E                                V% E   E   Ѐ            `  D%              p              x% ?   ?   Ѐ<                  E                                &       Ԁ              & ?   ?   Ѐ<                p  E                             ' E   E   Ѐ              D%                            à ?   ?   Ѐ<                  E                                m E   E   Ѐ              D%                             ?   ?   Ѐ<                  E                                       Ԁ              k E   E   Ѐ              D%                           v ?   ?   Ј<                  E                                \ ?   ?   Ѐ<                  E                                     <                               E     @  
+ 	 l                                                                                                                     Ԁ              $  F   F               -=         $0H`l
+ 5=4mesh       ,| ?   ?   Ѐ<                   E                                ~ ?   ?   Ј<                   E                                & ?   ?   Ј<                   E                                 E   E   Ѐ            0  D%                            ρ ?   ?   Ѐ<                  E                                \       Ԁ               ?   ?   Ѐ<                @  E                             u E   E   Ѐ              D%                           q ?   ?   Ѐ<                P  E                                 ?   ?   Ј<                P  E                                 E   E   Ѐ            `  D%                             ?   ?   Ѐ<                  E                                       Ԁ               ?   ?   Ѐ<                p  E                              E   E   Ѐ              D%                                   <                               E     @  
 
- 	 l                                                                                                                    Ԁ              ?       <                              E     @  
+ 	 l                                                                                                                    Ԁ              ?       <                              E     @  
 
- 	 l                                                                                                             <       Ԁ              k       <                              E     @  
+ 	 l                                                                                                              A   A               D         $0H`l -=4mesh              Ԁ              ߫       <                              E     @  
 
- 	 l                                                                                                             {       Ԁ              Ƴ A   A               ƼD         $0H`l v=4mesh        F   F               1E         $0H`l
- DD4mesh    
\ No newline at end of file
+ 	 l                                                                                                                    Ԁ               F   F               -D         $0H`l
+ =D4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression.cc ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression.cc
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -118,9 +118,9 @@
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
   // Six devices, 4 streams per device
   streamsUsed += mesh.AssignStreams (meshDevices, streamsUsed);
-  NS_TEST_EXPECT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_EXPECT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  NS_TEST_EXPECT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_EXPECT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
 
   // 3. setup TCP/IP
   InternetStackHelper internetStack;
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,132 +1,76 @@
-ò            i       }>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          {?  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B  R   R   Ј<                   J   $0H`l4mesh3          9 7          C  R   R   Ј<                   J   $0H`l4mesh3          9 7          D  R   R   Ј<                   J   $0H`l4mesh3          9 7          [  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          t  R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7              A   A               0 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7            R   R   Ј<                   J   $0H`l4mesh3          9 7          '  R   R   Ј<                   J   $0H`l4mesh3          9 7          R R   R   Ј<                   J   $0H`l4mesh3          9 7          k R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          JO A   A                JO         $0H`l  4mesh        eP R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          uP       Ԁ               P P   P   Ѐ<                  J     $0H`l3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7           R   R   Ј<                0  J   $0H`l4mesh3          9 7          P R   R   Ј<                0  J   $0H`l4mesh3          9 7          W R   R   Ј<                0  J   $0H`l4mesh3          9 7                 Ԁ                2   2   Ѐ<                P J 4mesh 7                  Ԁ                2   2   Ѐ<                @ J 4mesh 7            2   2   Ј<                @ J 4mesh 7           v       Ԁ                R   R   Ѐ<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          ! R   R   Ј<                `  J   $0H`l4mesh3          9 7          f A   A               p f         $0H`l4mesh        g R   R   Ѐ<                P  J   $0H`l4mesh3          9 7          %h R   R   Ј<                P  J   $0H`l4mesh3          9 7          i R   R   Ј<                P  J   $0H`l4mesh3          9 7          <j R   R   Ј<                P  J   $0H`l4mesh3          9 7          1k R   R   Ј<                P  J   $0H`l4mesh3          9 7          8l R   R   Ј<                P  J   $0H`l4mesh3          9 7          Hm R   R   Ј<                P  J   $0H`l4mesh3          9 7          {s R   R   Ѐ<                  J   $0H`l4mesh3          9 7          t R   R   Ј<                  J   $0H`l4mesh3          9 7          u R   R   Ј<                  J   $0H`l4mesh3          9 7          v R   R   Ј<                  J   $0H`l4mesh3          9 7          x R   R   Ј<                  J   $0H`l4mesh3          9 7          y R   R   Ј<                  J   $0H`l4mesh3          9 7           {       Ԁ               j A   A               ` j         $0H`lf4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                p J    $0H`l3          9 7                 Ԁ               	 R   R   Ѐ<                  J   $0H`l4mesh3          9 7          	 R   R   Ј<                  J   $0H`l4mesh3          9 7          7		 R   R   Ј<                  J   $0H`l4mesh3          9 7          Y
-	 R   R   Ј<                  J   $0H`l4mesh3          9 7          i	 R   R   Ј<                  J   $0H`l4mesh3          9 7          p	 R   R   Ј<                  J   $0H`l4mesh3          9 7          	 R   R   Ј<                  J   $0H`l4mesh3          9 7           	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           r	       Ԁ               "s	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         3        Ԁ              4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         ܥ  A   A                         $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7         æ        Ԁ              i  P   P   Ѐ<                 J    $0H`l3         9 7         y        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         `        Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              JW A   A                         $0H`l4mesh       G F   F               ˈ         $0H`l
-4mesh       j A   A                :         $0H`l4mesh         L   L                
-               
+ò            i       C  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          b        Ԁ               [        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7            A   A                           $0H`l  4mesh        %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               JO A   A                 JO         $0H`l  4mesh        +b F   F               P a         $0H`l
+ 7O4mesh        j A   A               0 j         $0H`l b4mesh         F   F               `          $0H`l
+ 4mesh       JO A   A               @          $0H`l 4mesh       +b F   F               p          $0H`l
+ z4mesh       j A   A               P 2         $0H`l 4mesh         F   F                E         $0H`l
+ z34mesh       JO A   A               `          $0H`l E4mesh       +b F   F                3&         $0H`l
+ K4mesh       j A   A               p t'         $0H`l &4mesh       .  L   L                
+               
 
 
-         L   L                
-               
+       Y  L   L                
+               
 
 
-         E   E   Ѐ               D%                         
-             E   E   Ѐ            0  D%                      
-           ]        Ԁ                ?   ?   Ѐ<                @  E                  
-                  Ԁ              R  L   L   <                
-                       
+       (  E   E   Ѐ               D%                         
+           `  E   E   Ѐ               D%                      
+           
+        Ԁ              c  ?   ?   Ѐ<                   E                  
+          s        Ԁ                L   L   <                
+                       
      
 
-                Ԁ                 L   L   <                
-P                     
+       b  L   L   <                
+                       
      
 
-       '        Ԁ              (  `   `   <                `     
+               Ԁ                L   L   <                
+                      
+     
+
+               Ԁ                `   `   <                      
          E  0    @  
 
- 	                              (        Ԁ              84  L   L                               
-
-       d5  L   L          p                    
-
-       ;        Ԁ              ;  L   L   <                     
-                
-
-     
-       ;        Ԁ              )<  `   `   <                
-                E  0    @  
-
- 	                              <        Ԁ              	>  `   `   <                
-              E  0    @  
-
- 	                                F   F               )         $0H`l
-4mesh       U ,   ,   Ѐ<                  F                WW 2   2   Ѐ<                J 4mesh 7          gW       Ԁ              W A   A               0         $0H`l*4mesh       >X 2   2   Ѐ<                @J 4mesh 7          X       Ԁ              6 E   E   Ѐ            P  D%                         
-            E   E   Ѐ              D%         
-     g                  ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          G       Ԁ              aH 2   2   Ѐ<                 J 4mesh 7          jI       Ԁ              j <   <               `\'         $0H`l 4mesh       S R   R   Ј<                 J   $0H`l4mesh3          9 7         c       Ԁ               P   P   Ѐ<                pJ    $0H`l3          9 7         r       Ԁ               R   R   Ѐ<                 J   $0H`l4mesh3          9 7         t       Ԁ               P   P   Ј<                 J    $0H`l3         9 7         -       Ԁ              &	 6   6   Ј<                0  F              
-          &	       Ԁ               E   E   Ѐ              D%                         
-            E   E   Ѐ            @  D%                      
-           2  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         3        Ԁ              l4        Ԁ              5  P   P   Ј<                `J    $0H`l3         9 7           F   F               p+.         $0H`l
-]'-4mesh       J7 A   A               
-.         $0H`l.4mesh       o F   F               K56         $0H`l
-.54mesh       j A   A               *6         $0H`l564mesh       v	 E   E   Ѐ              D%                         
-           	 E   E   Ѐ              D%                      
-           	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
-          -	       Ԁ              	       Ԁ              .	 ?   ?   Ѐ<                  E           ^       
-          >	       Ԁ              V	       Ԁ              	 `   `   <                     
+ 	                                      Ԁ                      Ԁ              c  `   `   <                      
          E  0   @  
 
- 	                              )	       Ԁ              	 `   `   <                
-               E  0   @  
-
- 	                              U	       Ԁ              *	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                     
+ 	                              s        Ԁ                      Ԁ                `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ              A	 `   `   <                
-               E  0   @  
-
- 	                              	       Ԁ              <	 `   `   <                
-              E  0   @  
-
- 	                              a	 `   `   <                
-              E  0   @  
-
- 	                              }	 `   `   <                
-              E  0   @  
-
- 	                              7	       Ԁ              	 `   `   <                      
+ 	                                      Ԁ              B&  L   L                                
+
+       n'  L   L                              
+
+         F   F                S.         $0H`l
+ &u'4mesh       JO A   A                
+/         $0H`l .4mesh       R       Ԁ               `   `   <                0     
          E  0   @  
 
- 	                              
-	       Ԁ              a	 `   `   <                
-               E  0   @  
-
- 	                              Z	 `   `   <                
-               E  0   @  
-
- 	                              /	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                                      Ԁ              j  `   `   <                      
-         E  0   @  
-
- 	                              z        Ԁ                `   `   <                
-                E  0   @  
-
- 	                                      Ԁ                `   `   <                
-0              E  0   @  
-
- 	                                F   F               @k=         $0H`l
-6:=4mesh       J7 A   A               J@>         $0H`l=4mesh              Ԁ               `   `   <                P     
-         E  0   @  
-
- 	                              ƥ       Ԁ               `   `   <                
-                E  0   @  
-
- 	                                     Ԁ              3 `   `   <                
-`              E  0   @  
-
- 	                                     Ԁ              \ ,   ,   Ѐ<                p  F      
-          l       Ԁ              o F   F               wE         $0H`l
-@>D4mesh       j A   A               0jE         $0H`lxE4mesh         F   F               M         $0H`l
-E}L4mesh       J7 A   A               @M         $0H`lM4mesh       o F   F               ˹T         $0H`l
-MT4mesh       j A   A               P#U         $0H`lT4mesh         F   F               Z\         $0H`l
-$U[4mesh       J7 A   A               `\         $0H`l[\4mesh       o F   F               c         $0H`l
-\`c4mesh       j A   A               ped         $0H`lc4mesh         F   F               +k         $0H`l
-fdk4mesh       J7 A   A               
-l         $0H`lk4mesh       o F   F               K>s         $0H`l
-lr4mesh       j A   A               *s         $0H`l>s4mesh         F   F               kz         $0H`l
-lCz4mesh       5 2   2   Ѐ<                 J 4mesh 7          5       Ԁ              56 2   2   Ѐ<                J 4mesh 7          6       Ԁ              J7 A   A               JI{         $0H`lz4mesh       =8 R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	        M8       Ԁ              8 2   2   Ѐ<                J 4mesh 7 	         d9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              < 2   2   Ј<                 J 4mesh 7	          #<       Ԁ              O ,   ,   Ѐ<                0  F                n A   A               @         $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                PJ   	 $0H`l3         9 7
-         p       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
-        q       Ԁ              q P   P   Ѐ<                J    $0H`l3         9 7 
-        r       Ԁ              j A   A               jւ         $0H`l4mesh    	     F   F               p!         $0H`l
-	ւ4mesh    	   J# A   A                w         $0H`l"4mesh    	   o F   F                        $0H`l
-'	w4mesh    	   j A   A                        $0H`lÑ4mesh    
\ No newline at end of file
+ 	                              %       Ԁ              +b F   F               @s(6         $0H`l
+ ./4mesh       j A   A                *6         $0H`l (64mesh       3       Ԁ              {3 ,   ,   Ѐ<                P  F      
+          3       Ԁ                L   L                                
+
+         L   L          `                    
+
+         F   F               p=         $0H`l
+ ./4mesh         2   2   Ѐ<                J 4mesh 7                  Ԁ              K  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         B        Ԁ                2   2   Ѐ<                J 4mesh 7          M 2   2   Ѐ<                J 4mesh 7          M       Ԁ              5N 2   2   Ѐ<                 J 4mesh 7          N       Ԁ              JO A   A                JX>         $0H`l =4mesh       eP R   R   Ѐ<                 J   $0H`l4mesh3          9 7         uP       Ԁ              P 2   2   Ѐ<                J 4mesh 7          \Q       Ԁ              R 2   2   Ј<                J 4mesh 7          R       Ԁ              6 <   <               >E         $0H`l 4mesh       =6 R   R   Ѐ<                  J   $0H`l4mesh3          9 7         q7 R   R   Ј<                  J   $0H`l4mesh3          9 7         8 R   R   Ј<                  J   $0H`l4mesh3          9 7         9 R   R   Ј<                  J   $0H`l4mesh3          9 7         : R   R   Ј<                  J   $0H`l4mesh3          9 7         < R   R   Ј<                  J   $0H`l4mesh3          9 7         	= R   R   Ј<                  J   $0H`l4mesh3          9 7         kh R   R   Ѐ<                 J   $0H`l4mesh3          9 7         i       Ԁ              j A   A               0jE         $0H`l?E4mesh        R   R   Ѐ<                  J   $0H`l4mesh3          9 7                Ԁ               P   P   Ѐ<                @J    $0H`l3          9 7                Ԁ               R   R   Ѐ<                P J   $0H`l4mesh3          9 7         O R   R   Ј<                P J   $0H`l4mesh3          9 7         z R   R   Ј<                P J   $0H`l4mesh3          9 7          R   R   Ј<                P J   $0H`l4mesh3          9 7          R   R   Ј<                P J   $0H`l4mesh3          9 7          R   R   Ј<                P J   $0H`l4mesh3          9 7          R   R   Ј<                P J   $0H`l4mesh3          9 7         		 2   2   Ѐ<                J 4mesh 7          s	       Ԁ              r	 2   2   Ѐ<                 J 4mesh 7          r	       Ԁ              "s	 2   2   Ѐ<                `J 4mesh 7          s	       Ԁ                L   L          p                     
+
+         <   <               0M         $0H`l 4mesh         R   R   Ѐ<                 J   $0H`l4mesh3          9 7         6  R   R   Ј<                 J   $0H`l4mesh3          9 7         4  R   R   Ј<                 J   $0H`l4mesh3          9 7         _  R   R   Ј<                 J   $0H`l4mesh3          9 7         f  R   R   Ј<                 J   $0H`l4mesh3          9 7           R   R   Ј<                 J   $0H`l4mesh3          9 7                 Ԁ              r  P   P   Ѐ<                @J    $0H`l3          9 7           R   R   Ј<                 J   $0H`l4mesh3          9 7                 Ԁ              Z  R   R   Ѐ<                P J   $0H`l4mesh3          9 7         y        Ԁ              :  P   P   Ѐ<                `J    $0H`l3          9 7         J        Ԁ              <  R   R   Ѐ<                p J   $0H`l4mesh3          9 7         L        Ԁ                P   P   Ѐ<                J    $0H`l3         9 7         [        Ԁ              JW A   A               M         $0H`lM4mesh       + F   F               T         $0H`l
+TM4mesh       j A   A               CU         $0H`lT4mesh         L   L                               
+
+         L   L                              
+
+         F   F               v\         $0H`l
+<\DU4mesh       JW A   A               \         $0H`lv\4mesh       + F   F               3d         $0H`l
+cDU4mesh        2   2   Ѐ<                J 4mesh 7                 Ԁ              U 2   2   Ѐ<                J 4mesh 7                 Ԁ              j A   A               d         $0H`ld4mesh        R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	               Ԁ               2   2   Ѐ<                 J 4mesh 7 	         |       Ԁ               2   2   Ј<                J 4mesh 7	                 Ԁ                A   A               Sk         $0H`l~k4mesh       %  R   R   Ѐ<                 J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                 J   	 $0H`l3         9 7
+                 Ԁ                R   R   Ѐ<                 J   $0H`l4mesh3         9 7 
+                Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7 
+                Ԁ              J7 A   A               0
+l         $0H`lk4mesh       + F   F                sYs         $0H`l
+s	l4mesh       j A   A               @*s         $0H`lYs4mesh       J7 A   A               PJI{         $0H`lYs4mesh        2   2   Ѐ<                `J 4mesh 7 
+                Ԁ               2   2   Ј<                @J 4mesh 7
+                 Ԁ               F   F               P         $0H`l
+a	I{4mesh       ߊ R   R   Ѐ<                p J   $0H`l4mesh3          9 7                Ԁ              4 2   2   Ѐ<                `J 4mesh 7
+          D       Ԁ               2   2   Ѐ<                J 4mesh 7 
+         +       Ԁ              j A   A               jւ         $0H`l4mesh        R   R   Ѐ<                p J   $0H`l4mesh3         9 7                Ԁ               2   2   Ѐ<                J 4mesh 7          |       Ԁ               2   2   Ј<                J 4mesh 7                 Ԁ           	     A   A               <         $0H`l4mesh    	   %  R   R   Ѐ<                 J   $0H`l4mesh3          9 7      	     R   R   Ј<                 J   $0H`l4mesh3          9 7      	           Ԁ           	   x  P   P   Ѐ<                J    $0H`l3         9 7      	           Ԁ           	     A   A               ?         $0H`l=4mesh    	     R   R   Ѐ<                 J   $0H`l4mesh3         9 7      	   
+        Ԁ           	   a  P   P   Ѐ<                J    $0H`l3         9 7      	   "        Ԁ           	   + F   F               ݑ         $0H`l
+@4mesh    	   j A   A                        $0H`lޑ4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,195 +1,112 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >  R   R   Ј<                   J   $0H`l4mesh3          9 7          @  R   R   Ј<                   J   $0H`l4mesh3          9 7          	A  R   R   Ј<                   J   $0H`l4mesh3          9 7          +B  R   R   Ј<                   J   $0H`l4mesh3          9 7           C  R   R   Ј<                   J   $0H`l4mesh3          9 7          'D  R   R   Ј<                   J   $0H`l4mesh3          9 7          4^  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          S_        Ԁ                 R   R   Ѐ<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7            R   R   Ј<                  J   $0H`l4mesh3          9 7          /  R   R   Ј<                  J   $0H`l4mesh3          9 7          Z  R   R   Ј<                  J   $0H`l4mesh3          9 7          j  R   R   Ј<                  J   $0H`l4mesh3          9 7          z  R   R   Ј<                  J   $0H`l4mesh3          9 7            2   2   Ѐ<                  J 4mesh 7            #        Ԁ               k  A   A               0 k          $0H`l = 4mesh         2   2   Ѐ<                0 J 4mesh 7           	       Ԁ               O A   A                JO         $0H`l  4mesh        O R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          P       Ԁ               HQ P   P   Ѐ<                  J     $0H`l3          9 7          XQ       Ԁ                2   2   Ѐ<                P J 4mesh 7                   Ԁ               H 2   2   Ѐ<                P J 4mesh 7                  Ԁ               : 2   2   Ј<                @ J 4mesh 7           J       Ԁ                <   <               `          $0H`l 4mesh         R   R   Ѐ<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          = R   R   Ј<                `  J   $0H`l4mesh3          9 7          M R   R   Ј<                `  J   $0H`l4mesh3          9 7          x R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7           R   R   Ј<                `  J   $0H`l4mesh3          9 7          T R   R   Ѐ<                p  J   $0H`l4mesh3          9 7          s        Ԁ               f A   A               p f         $0H`l4mesh        r R   R   Ѐ<                  J   $0H`l4mesh3          9 7          &t R   R   Ј<                  J   $0H`l4mesh3          9 7          ?u R   R   Ј<                  J   $0H`l4mesh3          9 7          Xv R   R   Ј<                  J   $0H`l4mesh3          9 7          w R   R   Ј<                  J   $0H`l4mesh3          9 7          x P   P   Ѐ<                 J    $0H`l3         9 7          Xy R   R   Ј<                  J   $0H`l4mesh3          9 7          z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          z       Ԁ                A   A               ` j         $0H`lf4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ               h P   P   Ѐ<                p J    $0H`l3          9 7          x       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               hr	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ               s	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              1  A   A                s         $0H`l4mesh       1  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         w3        Ԁ              N4  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         ^4        Ԁ              4  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              k  A   A                         $0H`lt4mesh         R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7                 Ԁ              ǧ  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ              D  P   P   Ѐ<                 J    $0H`l3         9 7         T        Ԁ              W A   A                         $0H`l4mesh        F   F                         $0H`l
-4mesh       F F   F               ˈ         $0H`l
-4mesh         L   L               
-               
+ò            i        %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?&        Ԁ               8'        Ԁ               '  P   P   Ѐ<                 J     $0H`l3         9 7          (  P   P   Ј<                 J     $0H`l3         9 7            A   A                 (          $0H`l $ 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               %  P   P   Ѐ<                0 J    $0H`l3         9 7          5        Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          .        Ԁ               |  P   P   Ѐ<                 J     $0H`l3         9 7          =        Ԁ                 A   A                           $0H`l  4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ               
+  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               u  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               O A   A                 JO         $0H`l  4mesh        7 F   F               P H7         $0H`l
+  4mesh        a F   F               P a         $0H`l
+ 7O4mesh         A   A               0 j         $0H`l b4mesh         F   F               ` h         $0H`l
+ 6b4mesh         F   F               `          $0H`l
+ 4mesh       O A   A               @          $0H`l 4mesh       6       Ԁ              6 2   2   Ѐ<                p J 4mesh 7          7       Ԁ              L8 F   F                y         $0H`l
+ 4mesh       39       Ԁ              9 2   2   Ѐ<                 J 4mesh 7          :       Ԁ              a F   F               p          $0H`l
+ z4mesh        A   A               P 2         $0H`l 4mesh       (-  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         G.        Ԁ              I/        Ԁ              /  P   P   Ѐ<                 J    $0H`l3         9 7           F   F                E         $0H`l
+ z34mesh         F   F                J         $0H`l
+E4mesh       O A   A               `          $0H`l E4mesh       a F   F                3&         $0H`l
+ K4mesh       g F   F                &         $0H`l
+&R&4mesh        A   A               p t'         $0H`l &4mesh         L   L                
+               
 
 
-       6  L   L                
-               
+         L   L                
+               
 
 
-       %  E   E   Ѐ               D%                         
-           t  E   E   Ѐ            0  D%                      
-             E   E   Ѐ               D%              j       
-                   Ԁ              !  ?   ?   Ѐ<                0  E                  
-          1        Ԁ                ?   ?   Ѐ<                @  E                  
-          (        Ԁ                L   L   <                
-                       
-     
+         L   L                
+               
 
-               Ԁ              :   L   L   <                
-P                     
+
+         E   E   Ѐ               D%                         
+             E   E   Ѐ               D%                      
+           $  E   E   Ѐ               D%              ,       
+           
+        Ԁ              
+  ?   ?   Ѐ<                   E           )       
+          
+        Ԁ              
+  ?   ?   Ѐ<                   E                  
+                  Ԁ                L   L   <                
+                       
      
 
-                Ԁ              !  L   L   <                
-@                     
+               Ԁ              J  L   L   <                
+                      
      
 
-       &        Ԁ              '  `   `   <                P     
+               Ԁ                      Ԁ                `   `   <                      
          E  0    @  
 
- 	                              '        Ԁ              '  `   `   <                `     
+ 	                                      Ԁ              
+  `   `   <                      
          E  0    @  
 
- 	                              (        Ԁ              1  F   F               `         $0H`l
-P4mesh       4  L   L                               
-
-       4  L   L          p                    
-
-       6  L   L          p                    
-
-       0:        Ԁ              :  L   L   <                     
-                
-
-     
-       :        Ԁ              B;  L   L   <                     
-                
-
-     
-       ;        Ԁ              <  `   `   <                
-                E  0    @  
-
- 	                              <        Ԁ              q=  `   `   <                
-              E  0    @  
-
- 	                              F>        Ԁ              	?  `   `   <                
-              E  0    @  
-
- 	                              k  F   F               )         $0H`l
-4mesh       {U ,   ,   Ѐ<                  F                V       Ԁ              V ,   ,   Ѐ<                  F                V 2   2   Ѐ<                J 4mesh 7          W       Ԁ              X A   A               0         $0H`l*4mesh       X 2   2   Ѐ<                @J 4mesh 7          X       Ԁ              +7 E   E   Ѐ            P  D%                         
-           ߣ E   E   Ѐ              D%         
-                       . E   E   Ѐ              D%         
-     g                   F   F               
-W&         $0H`l
-4mesh        E 2   2   Ѐ<                J 4mesh 7          0E       Ԁ              ~E 2   2   Ѐ<                J 4mesh 7          F       Ԁ              F A   A               &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              H 2   2   Ѐ<                 J 4mesh 7          H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          =I       Ԁ               <   <               `\'         $0H`l 4mesh        R   R   Ѐ<                 J   $0H`l4mesh3          9 7          R   R   Ј<                 J   $0H`l4mesh3          9 7                Ԁ              6 P   P   Ѐ<                pJ    $0H`l3          9 7         F       Ԁ              8 R   R   Ѐ<                 J   $0H`l4mesh3          9 7         H       Ԁ               P   P   Ѐ<                 J    $0H`l3         9 7          P   P   Ј<                 J    $0H`l3         9 7         Z       Ԁ              {%	 6   6   Ѐ<                0  F              
-          H&	 6   6   Ј<                0  F              
-          &	       Ԁ              
- E   E   Ѐ               D%         
-                       + E   E   Ѐ              D%                         
-           z E   E   Ѐ            @  D%                      
-           1  A   A               *-         $0H`l&4mesh       1  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         w3        Ԁ              /4  R   R   Ѐ<                0 J   $0H`l4mesh3         9 7         ?4        Ԁ              4  P   P   Ѐ<                `J    $0H`l3         9 7         Z5  P   P   Ј<                `J    $0H`l3         9 7         6        Ԁ              k  F   F               p+.         $0H`l
-]'-4mesh       7 A   A               
-.         $0H`l.4mesh        F   F               @J5         $0H`l
-4..4mesh       n F   F               K56         $0H`l
-.54mesh        A   A               *6         $0H`l564mesh       	 E   E   Ѐ              D%                         
-           :	 E   E   Ѐ              D%                      
-           /	 E   E   Ѐ            `  D%              (       
-           S	 ?   ?   Ј<                P  E                    
-          c	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
-          Z	       Ԁ              	       Ԁ              d	 ?   ?   Ѐ<                p  E                  
-          t	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
-          k	       Ԁ              W	       Ԁ              	 `   `   <                     
+ 	                                      Ԁ                      Ԁ              d  `   `   <                0     
          E  0   @  
 
- 	                              *	       Ԁ              	 `   `   <                     
+ 	                              t        Ԁ                `   `   <                      
          E  0   @  
 
- 	                              V	       Ԁ              	 `   `   <                
-               E  0   @  
-
- 	                              )	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              y	 `   `   <                     
+ 	                                      Ԁ                      Ԁ                `   `   <                @     
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              B	 `   `   <                     
+ 	                                      Ԁ              %  `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-               E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              }	 `   `   <                
-              E  0   @  
-
- 	                              Q	 `   `   <                
-              E  0   @  
-
- 	                              8	       Ԁ              	 `   `   <                     
+ 	                                      Ԁ              &  L   L                                
+
+       &  L   L                              
+
+       (  L   L          P                    
+
+         F   F                S.         $0H`l
+ &u'4mesh         F   F               `.         $0H`l
+.-4mesh       O A   A                
+/         $0H`l .4mesh       S       Ԁ               `   `   <                p     
          E  0   @  
 
- 	                              	       Ԁ              b	 `   `   <                      
+ 	                              &       Ԁ              } `   `   <                0     
          E  0   @  
 
- 	                              7	       Ԁ              	 `   `   <                
-               E  0   @  
-
- 	                              	       Ԁ              Z	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                                      Ԁ              k  `   `   <                     
-         E  0   @  
-
- 	                              {        Ԁ                `   `   <                      
-         E  0   @  
-
- 	                                      Ԁ              j  `   `   <                
-                E  0   @  
-
- 	                              z        Ԁ                `   `   <                
-0              E  0   @  
-
- 	                                      Ԁ              	  `   `   <                
-              E  0   @  
-
- 	                              1  F   F                j:=         $0H`l
-5564mesh       k  F   F               @k=         $0H`l
-6:=4mesh       7 A   A               J@>         $0H`l=4mesh              Ԁ               `   `   <                     
-         E  0   @  
-
- 	                              Ǥ       Ԁ               `   `   <                P     
-         E  0   @  
-
- 	                                     Ԁ               `   `   <                
-                E  0   @  
-
- 	                              Ʀ       Ԁ               `   `   <                
-`              E  0   @  
-
- 	                               ,   ,   Ѐ<                   F      
-                 Ԁ               ,   ,   Ѐ<                p  F      
-                 Ԁ               `   `   <                
-`              E  0   @  
-
- 	                              q       Ԁ               F   F               0D         $0H`l
-v==4mesh       n F   F               wE         $0H`l
-@>D4mesh        A   A               0jE         $0H`lxE4mesh       1  F   F               @|L         $0H`l
-v=xE4mesh       k  2   2   Ѐ<                PJ 4mesh 7          m  2   2   Ј<                PJ 4mesh 7          n  2   2   Ј<                PJ 4mesh 7          o  2   2   Ј<                PJ 4mesh 7          tp  2   2   Ј<                PJ 4mesh 7          aq  2   2   Ј<                PJ 4mesh 7          k  F   F               M         $0H`l
-E}L4mesh       7 A   A               @M         $0H`lM4mesh        A   A               `T         $0H`lM4mesh       n F   F               ˹T         $0H`l
-MT4mesh        A   A               P#U         $0H`lT4mesh       1  A   A               p[         $0H`lT4mesh       k  F   F               Z\         $0H`l
-$U[4mesh       7 A   A               `\         $0H`l[\4mesh        A   A               
-`c         $0H`l[\4mesh       n F   F               c         $0H`l
-\`c4mesh        A   A               ped         $0H`lc4mesh       1  A   A               *k         $0H`lc4mesh       k  F   F               +k         $0H`l
-fdk4mesh       7 A   A               
-l         $0H`lk4mesh        A   A               Jr         $0H`lk4mesh       n F   F               K>s         $0H`l
-lr4mesh       1  A   A               jCz         $0H`l>s4mesh       k  F   F               kz         $0H`l
-lCz4mesh       {5 2   2   Ѐ<                 J 4mesh 7          6       Ԁ              6 2   2   Ѐ<                J 4mesh 7          6       Ԁ              7 A   A               JI{         $0H`lz4mesh       7 R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	        z8       Ԁ              9 2   2   Ј<                J 4mesh 7 	         9       Ԁ              (: 2   2   Ѐ<                 J 4mesh 7	          ; 2   2   Ј<                 J 4mesh 7	          ; 2   2   Ј<                 J 4mesh 7	          P<       Ԁ               ,   ,   Ѐ<                0  F                       Ԁ               A   A                        $0H`lz4mesh       n A   A               @         $0H`l4mesh       o R   R   Ѐ<                 J   $0H`l4mesh3          9 7         o       Ԁ              p P   P   Ѐ<                PJ   	 $0H`l3         9 7
-         p       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
-        q       Ԁ              mr P   P   Ѐ<                J    $0H`l3         9 7 
-        }r       Ԁ               A   A               jւ         $0H`l4mesh    	   1  A   A                        $0H`l4mesh    	   k  F   F               p!         $0H`l
-	ւ4mesh    	   # A   A                w         $0H`l"4mesh    	    A   A               &         $0H`l"4mesh    	   n F   F                        $0H`l
-'	w4mesh    	    A   A                        $0H`lÑ4mesh    
\ No newline at end of file
+ 	                              R       Ԁ              a F   F               @s(6         $0H`l
+ ./4mesh       R2       Ԁ              2 ,   ,   Ѐ<                  F      
+          2       Ԁ              &3 ,   ,   Ѐ<                P  F      
+          3       Ԁ              #  L   L                                
+
+       N  L   L          `                    
+
+       z  L   L                              
+
+         F   F               p=         $0H`l
+ ./4mesh       `  2   2   Ѐ<                J 4mesh 7                  Ԁ              w  2   2   Ѐ<                J 4mesh 7                  Ԁ                F   F               (=         $0H`l
+=	=4mesh         R   R   Ѐ<                 J   $0H`l4mesh3         9 7                 Ԁ                2   2   Ѐ<                J 4mesh 7                  Ԁ              c  2   2   Ѐ<                J 4mesh 7                  Ԁ              {M 2   2   Ѐ<                J 4mesh 7          N       Ԁ              N 2   2   Ѐ<                 J 4mesh 7          N       Ԁ              O A   A                JX>         $0H`l =4mesh       O R   R   Ѐ<                 J   $0H`l4mesh3          9 7         P       Ԁ               Q 2   2   Ѐ<                J 4mesh 7          0Q       Ԁ              Q 2   2   Ѐ<                J 4mesh 7          wR 2   2   Ј<                J 4mesh 7          S       Ԁ              } 6   6   Ѐ<                  F                        5 <   <               >E         $0H`l 4mesh       g F   F                HpE         $0H`l
+D?E4mesh       g R   R   Ѐ<                 J   $0H`l4mesh3          9 7         h       Ԁ              Mi P   P   Ѐ<                J    $0H`l3         9 7         ]i       Ԁ               A   A               0jE         $0H`l?E4mesh        R   R   Ѐ<                  J   $0H`l4mesh3          9 7                Ԁ              h P   P   Ѐ<                @J    $0H`l3          9 7         x       Ԁ              M		 2   2   Ѐ<                J 4mesh 7          		       Ԁ              6	 2   2   Ј<                0J 4mesh 7          F	       Ԁ              hr	 2   2   Ѐ<                 J 4mesh 7          s	       Ԁ              s	 2   2   Ѐ<                `J 4mesh 7          s	       Ԁ              #  L   L          p                     
+
+         <   <               0M         $0H`l 4mesh         R   R   Ј<                @ J   $0H`l4mesh3         9 7                 Ԁ                P   P   Ѐ<                @J    $0H`l3          9 7                 Ԁ              b  R   R   Ј<                 J   $0H`l4mesh3          9 7         r        Ԁ                R   R   Ѐ<                P J   $0H`l4mesh3          9 7                 Ԁ              =  P   P   Ѐ<                `J    $0H`l3         9 7         M        Ԁ                P   P   Ѐ<                `J    $0H`l3          9 7         w        Ԁ                R   R   Ѐ<                p J   $0H`l4mesh3          9 7         y        Ԁ                P   P   Ѐ<                J    $0H`l3         9 7         /        Ԁ              W A   A               M         $0H`lM4mesh       O F   F               pT         $0H`l
+/LM4mesh        F   F               T         $0H`l
+TM4mesh        A   A               CU         $0H`lT4mesh       $ 2   2   Ѐ<                J 4mesh 7          % 2   2   Ј<                J 4mesh 7          & 2   2   Ј<                J 4mesh 7          ' 2   2   Ј<                J 4mesh 7          ( 2   2   Ј<                J 4mesh 7          ) 2   2   Ј<                J 4mesh 7          * 2   2   Ј<                J 4mesh 7          #  L   L                               
+
+       N  L   L                              
+
+       z  L   L                              
+
+         A   A               ;\         $0H`lT4mesh         F   F               v\         $0H`l
+<\DU4mesh       O A   A               c         $0H`lv\4mesh        F   F               3d         $0H`l
+cDU4mesh        2   2   Ѐ<                J 4mesh 7          4       Ԁ               2   2   Ѐ<                J 4mesh 7                 Ԁ               A   A               d         $0H`ld4mesh        R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	               Ԁ              @ 2   2   Ѐ<                 J 4mesh 7 	         P       Ԁ               2   2   Ѐ<                J 4mesh 7	          p 2   2   Ј<                J 4mesh 7	          	       Ԁ                A   A               }k         $0H`ld4mesh         A   A               Sk         $0H`l~k4mesh         R   R   Ѐ<                 J   $0H`l4mesh3          9 7                 Ԁ                P   P   Ѐ<                 J   	 $0H`l3         9 7
+                 Ԁ                R   R   Ѐ<                 J   $0H`l4mesh3         9 7 
+                Ԁ              l  P   P   Ѐ<                 J    $0H`l3         9 7 
+        |        Ԁ              7 A   A               0
+l         $0H`lk4mesh       O A   A               s         $0H`lk4mesh        F   F                sYs         $0H`l
+s	l4mesh        A   A               @*s         $0H`lYs4mesh         A   A               (z         $0H`lYs4mesh         F   F               0z         $0H`l
+z	s4mesh       7 A   A               PJI{         $0H`lYs4mesh       O A   A               Ha         $0H`lz4mesh       H 2   2   Ѐ<                `J 4mesh 7 
+         X       Ԁ               2   2   Ѐ<                @J 4mesh 7
+           2   2   Ј<                @J 4mesh 7
+          ,       Ԁ              E F   F               P         $0H`l
+a	I{4mesh       h R   R   Ѐ<                p J   $0H`l4mesh3          9 7         x       Ԁ              ؋ 2   2   Ѐ<                `J 4mesh 7
+          q       Ԁ               2   2   Ѐ<                J 4mesh 7 
+                Ԁ               A   A               jւ         $0H`l4mesh        R   R   Ѐ<                p J   $0H`l4mesh3         9 7                Ԁ              @ 2   2   Ѐ<                J 4mesh 7          P       Ԁ               2   2   Ѐ<                J 4mesh 7          j 2   2   Ј<                J 4mesh 7                 Ԁ           	     A   A                h         $0H`l4mesh    	     A   A               <         $0H`l4mesh    	     R   R   Ј<                 J   $0H`l4mesh3          9 7      	           Ԁ           	     P   P   Ѐ<                J    $0H`l3         9 7      	           Ԁ           	   >  A   A               ?         $0H`l=4mesh    	   r  R   R   Ѐ<                 J   $0H`l4mesh3         9 7      	   7        Ԁ           	     P   P   Ѐ<                J    $0H`l3         9 7      	           Ԁ           	   O A   A                        $0H`l=4mesh    	    F   F               ݑ         $0H`l
+@4mesh    	   ې A   A                        $0H`lޑ4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,198 +1,137 @@
-ò            i         R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ       	                Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7          j=  <   <                 j=          $0H`l 4mesh        ]  F   F               0 ]          $0H`l
-  = 4mesh        ]  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          q^        Ԁ               _  P   P   Ѐ<                @ J    $0H`l3         9 7          '_        Ԁ                 2   2   Ѐ<                  J 4mesh 7                    Ԁ                 A   A               0 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7          )  R   R   Ј<                   J   $0H`l4mesh3          9 7          B  R   R   Ј<                   J   $0H`l4mesh3          9 7          [ R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           2   2   Ѐ<                0 J 4mesh 7           O       Ԁ                2   2   Ѐ<                ` J 4mesh 7                  Ԁ               eP R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          Q       Ԁ               ܝ R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          ў R   R   Ј<                @  J   $0H`l4mesh3          9 7          ϟ R   R   Ј<                @  J   $0H`l4mesh3          9 7          ߠ R   R   Ј<                @  J   $0H`l4mesh3          9 7          
- R   R   Ј<                @  J   $0H`l4mesh3          9 7          5 R   R   Ј<                @  J   $0H`l4mesh3          9 7          W R   R   Ј<                @  J   $0H`l4mesh3          9 7          U 2   2   Ѐ<                P J 4mesh 7                   Ԁ                2   2   Ѐ<                P J 4mesh 7           v       Ԁ                <   <               `          $0H`l 4mesh         F   F                1         $0H`l
- 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3          9 7                 Ԁ               7  P   P   Ѐ<                 J    $0H`l3         9 7          G        Ԁ               f A   A               p f         $0H`l4mesh        g R   R   Ѐ<                  J   $0H`l4mesh3          9 7          h R   R   Ј<                  J   $0H`l4mesh3          9 7          ,i R   R   Ј<                  J   $0H`l4mesh3          9 7          <j R   R   Ј<                  J   $0H`l4mesh3          9 7          ^k R   R   Ј<                  J   $0H`l4mesh3          9 7          \l R   R   Ј<                  J   $0H`l4mesh3          9 7          um R   R   Ј<                  J   $0H`l4mesh3          9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               7x P   P   Ѐ<                 J    $0H`l3         9 7          x       Ԁ               y R   R   Ј<                  J   $0H`l4mesh3          9 7          y       Ԁ               ?z P   P   Ѐ<                 J    $0H`l3         9 7           {       Ԁ                R   R   Ѐ<                  J   $0H`l4mesh3          9 7                 Ԁ               	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          1	 R   R   Ј<                  J   $0H`l4mesh3         9 7          &	 R   R   Ј<                  J   $0H`l4mesh3         9 7           	 2   2   Ѐ<                 J 4mesh 7           0	       Ԁ               ~	 2   2   Ѐ<                 J 4mesh 7           	       Ԁ               r	 2   2   Ѐ<                 J 4mesh 7           s	       Ԁ              j1  A   A                s         $0H`l4mesh       2  R   R   Ѐ<                  J   $0H`l4mesh3          9 7         2        Ԁ              2  P   P   Ѐ<                 J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         4        Ԁ              15  P   P   Ѐ<                 J    $0H`l3         9 7         A5        Ԁ              m  F   F                Q         $0H`l
- =t4mesh       ܥ  A   A                         $0H`lt4mesh       æ        Ԁ              P  R   R   Ѐ<                  J   $0H`l4mesh3         9 7                 Ԁ               F   F                         $0H`l
-4mesh        F   F                qP         $0H`l
- 4mesh       G F   F               ˈ         $0H`l
-4mesh       _  L   L                
+ò            i       u$  <   <                 $          $0H`l 4mesh        $  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          \%        Ԁ               &  P   P   Ѐ<                 J     $0H`l3          9 7          &        Ԁ               &  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          '        Ԁ               b'  P   P   Ѐ<                 J     $0H`l3         9 7          n(  P   P   Ј<                 J     $0H`l3         9 7          /)        Ԁ               ~@  R   R   Ѐ<      	          0  J   $0H`l4mesh3         9 7          A  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          B  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          C  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          E  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          F  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          JG  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          (  A   A                 (          $0H`l $ 4mesh        C  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          S        Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7          b        Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          [        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ                 A   A                           $0H`l  4mesh                Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7            R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               u  R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            2   2   Ѐ<      	          P J 4mesh 7             R   R   Ѐ<      	          `  J   $0H`l4mesh3         9 7          Ҫ R   R   Ј<      	          `  J   $0H`l4mesh3         9 7           R   R   Ј<      	          `  J   $0H`l4mesh3         9 7           R   R   Ј<      	          `  J   $0H`l4mesh3         9 7           R   R   Ј<      	          `  J   $0H`l4mesh3         9 7            R   R   Ј<      	          `  J   $0H`l4mesh3         9 7           R   R   Ј<      	          `  J   $0H`l4mesh3         9 7           F   F               p -         $0H`l
+  4mesh               Ԁ       	        2 P   P   Ѐ<      	           J    $0H`l3         9 7          H7 F   F               P H7         $0H`l
+  4mesh        |I R   R   Ѐ<      	            J   $0H`l4mesh3         9 7          zJ R   R   Ј<      	            J   $0H`l4mesh3         9 7          K R   R   Ј<      	            J   $0H`l4mesh3         9 7          L R   R   Ј<      	            J   $0H`l4mesh3         9 7          M R   R   Ј<      	            J   $0H`l4mesh3         9 7          N R   R   Ј<      	            J   $0H`l4mesh3         9 7          P R   R   Ј<      	            J   $0H`l4mesh3         9 7          +b F   F               P a         $0H`l
+ 7O4mesh        g       Ԁ       	        Ih 2   2   Ѐ<      	           J 4mesh 7            R   R   Ѐ<      	            J   $0H`l4mesh3         9 7           R   R   Ј<      	            J   $0H`l4mesh3         9 7            R   R   Ј<      	            J   $0H`l4mesh3         9 7          " R   R   Ј<      	            J   $0H`l4mesh3         9 7          6 F   F                M6         $0H`l
+ 74mesh        7       Ԁ       	        R8 P   P   Ѐ<      	           J    $0H`l3         9 7         \|  R   R   Ѐ<      	            J   $0H`l4mesh3         9 7         Q}  R   R   Ј<      	            J   $0H`l4mesh3         9 7         |~  R   R   Ј<      	            J   $0H`l4mesh3         9 7           R   R   Ј<      	            J   $0H`l4mesh3         9 7           R   R   Ј<      	            J   $0H`l4mesh3         9 7           R   R   Ј<      	            J   $0H`l4mesh3         9 7         ł  R   R   Ј<      	            J   $0H`l4mesh3         9 7         (  F   F               ` h         $0H`l
+ 6b4mesh               Ԁ       	         2   2   Ѐ<      	           J 4mesh 7            F   F               `          $0H`l
+ 4mesh       U R   R   Ѐ<      	            J   $0H`l4mesh3         9 7         V       Ԁ       	       W       Ԁ       	       \X P   P   Ѐ<      	          J    $0H`l3         9 7          F   F                m         $0H`l
+ 74mesh       5 2   2   Ѐ<                0J 4mesh 7          5       Ԁ              ;6 2   2   Ѐ<                p J 4mesh 7          6       Ԁ              7 2   2   Ј<                0J 4mesh 7          7       Ԁ              7 F   F                y         $0H`l
+ 4mesh       8 R   R   Ѐ<                @ J   $0H`l4mesh3         9 7         9       Ԁ              U9 2   2   Ѐ<                 J 4mesh 7          9       Ԁ              u: 2   2   Ѐ<                PJ 4mesh 7          :       Ԁ              +b F   F               p          $0H`l
+ z4mesh       $  L   L          `     
                
 
 
-         L   L               
-               
+       },  A   A               p         $0H`l84mesh       ,  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         d-        Ԁ              
+.  P   P   Ѐ<                J    $0H`l3         9 7         .        Ԁ              /  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         /        Ԁ              j/  P   P   Ѐ<                 J    $0H`l3         9 7         +0        Ԁ                F   F                E         $0H`l
+ z34mesh       (  F   F                J         $0H`l
+E4mesh        F   F               Q&         $0H`l
+%K4mesh       +b F   F                3&         $0H`l
+ K4mesh       Hg F   F                &         $0H`l
+&R&4mesh         L   L               
+               
 
 
-         L   L                
-               
+         L   L                
+               
 
 
-         E   E   Ѐ            0  D%                      
-           7  E   E   Ѐ               D%              j       
-           o  E   E   Ѐ               D%              e       
-                   Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
-          f        Ԁ                ?   ?   Ѐ<                0  E                  
-          ]        Ԁ                ?   ?   Ѐ<                @  E                  
-                   Ԁ                 L   L   <                
-P                     
+       .  L   L                
+               
+
+
+       `  E   E   Ѐ               D%                      
+             E   E   Ѐ               D%              ,       
+             E   E   Ѐ              D%                     
+           	  ?   ?   Ѐ<                  E                  
+          	        Ԁ              ,
+  ?   ?   Ѐ<                   E           )       
+          
+        Ԁ              c  ?   ?   Ѐ<                   E                  
+                  Ԁ                L   L   <                
+                      
      
 
-                Ԁ              !!  L   L   <                
-@                     
+               Ԁ              1  L   L   <                
+                     
      
 
-       !        Ԁ              "  L   L   <      	          
-                      
+               Ԁ                L   L   <      	          
+                     
      
 
-       %        Ԁ       	       &  `   `   <                     
+               Ԁ       	         `   `   <                     
          E  0    @  
 
- 	                              &        Ԁ              &  `   `   <                P     
+ 	                                      Ԁ              
+  `   `   <                      
          E  0    @  
 
- 	                              '        Ԁ              (  `   `   <                `     
+ 	                                      Ԁ                `   `   <                      
          E  0    @  
 
- 	                              j1  F   F               `         $0H`l
-P4mesh       d5  L   L          p                    
-
-       5  L   L          p                    
-
-       6  L   L                               
-
-       H9        Ԁ       	       9  L   L   <                0     
-                
-
-     
-       :        Ԁ              Z:  L   L   <                     
-                
-
-     
-       ;        Ԁ              ;  L   L   <                     
-                
-
-     
-       <        Ԁ              	>  `   `   <                
-              E  0    @  
-
- 	                              >        Ԁ              p>  `   `   <                
-              E  0    @  
-
- 	                              E?        Ԁ              @  `   `   <      	          
-@              E  0    @  
-
- 	                              m  F   F               P         $0H`l
- 4mesh       U ,   ,   Ѐ<                  F                U       Ԁ              -V ,   ,   Ѐ<                  F                V       Ԁ              X       Ԁ               E   E   Ѐ            p  D%         
-     ,                  j E   E   Ѐ              D%         
-                        E   E   Ѐ              D%         
-     g                   F   F               
-W&         $0H`l
-4mesh        F   F               &         $0H`l
-  &W&4mesh       D 2   2   Ѐ<                J 4mesh 7          ]E       Ԁ              E 2   2   Ѐ<                J 4mesh 7          E       Ԁ              F A   A               &         $0H`lW&4mesh       G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         G       Ԁ              aH 2   2   Ѐ<                 J 4mesh 7          qH       Ԁ              H 2   2   Ѐ<                J 4mesh 7          jI       Ԁ              S R   R   Ј<                 J   $0H`l4mesh3          9 7         r       Ԁ              t       Ԁ               P   P   Ѐ<                 J    $0H`l3         9 7          P   P   Ј<                 J    $0H`l3         9 7         %	 6   6   Ѐ<                0  F              
-          &	 6   6   Ј<                0  F              
-          
- E   E   Ѐ              D%         
-     ,                  j
- E   E   Ѐ               D%         
-                        E   E   Ѐ            @  D%                      
-           j1  A   A               *-         $0H`l&4mesh       2  R   R   Ѐ<                P J   $0H`l4mesh3         9 7         2        Ԁ              2  P   P   Ѐ<                 J    $0H`l3         9 7         3        Ԁ              3  R   R   Ѐ<                0 J   $0H`l4mesh3         9 7         l4        Ԁ              5  P   P   Ј<                `J    $0H`l3         9 7         5        Ԁ              m  F   F               3.         $0H`l
- --4mesh         F   F               p+.         $0H`l
-]'-4mesh        F   F               @J5         $0H`l
-4..4mesh        F   F               5         $0H`l
- b554mesh       o F   F               K56         $0H`l
-.54mesh       	 E   E   Ѐ              D%                      
-           	 ?   ?   Ѐ<                P  E                    
-          	 E   E   Ѐ            `  D%              (       
-           b	 ?   ?   Ј<                P  E                    
-          	 E   E   Ѐ              D%                     
-           	 ?   ?   Ј<                P  E                    
-          	       Ԁ              	 ?   ?   Ѐ<                  E           ^       
-          	       Ԁ       	       	 ?   ?   Ѐ<                  E           ,       
-          	       Ԁ              	 ?   ?   Ѐ<                p  E                  
-          	       Ԁ              .	 ?   ?   Ѐ<                  E           ^       
-          W	       Ԁ       	       	 `   `   <                     
+ 	                                      Ԁ       	       d  `   `   <                      
          E  0   @  
 
- 	                              *	       Ԁ              	 `   `   <                     
+ 	                              t        Ԁ                `   `   <                0     
          E  0   @  
 
- 	                              V	       Ԁ              	 `   `   <                     
+ 	                                      Ԁ              c  `   `   <                      
          E  0   @  
 
- 	                              	       Ԁ       	       y	 `   `   <                      
+ 	                                      Ԁ       	         `   `   <                     
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                     
+ 	                                      Ԁ              %  `   `   <                @     
          E  0   @  
 
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              }	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                      
+ 	                                      Ԁ                `   `   <                      
+         E  0   @  
+
+ 	                              n'  L   L                              
+
+       '  L   L          P                    
+
+       ,  F   F                -         $0H`l
+z-&4mesh         F   F                S.         $0H`l
+ &u'4mesh       (  F   F               `.         $0H`l
+.-4mesh       S       Ԁ       	        `   `   <                0     
          E  0   @  
 
- 	                              	       Ԁ              b	 `   `   <                     
+ 	                              &       Ԁ              } `   `   <                p     
          E  0   @  
 
- 	                              7	       Ԁ              /	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ               
- `   `   <      	          
-@              E  0   @  
-
- 	                                      Ԁ       	       k  `   `   <                P     
-         E  0   @  
-
- 	                              {        Ԁ                `   `   <                     
-         E  0   @  
-
- 	                                      Ԁ              j  `   `   <                      
-         E  0   @  
-
- 	                                      Ԁ                `   `   <                
-0              E  0   @  
-
- 	                                      Ԁ                `   `   <                
-              E  0   @  
-
- 	                              	        Ԁ              
-  `   `   <      	          
-`              E  0   @  
-
- 	                              j1  F   F                j:=         $0H`l
-5564mesh       m  F   F               pv=         $0H`l
- =:=4mesh         F   F               @k=         $0H`l
-6:=4mesh              Ԁ       	        `   `   <                     
-         E  0   @  
-
- 	                              ǣ       Ԁ               `   `   <                     
-         E  0   @  
-
- 	                                     Ԁ                     Ԁ               ,   ,   Ј<                  F      
-                 Ԁ              U ,   ,   Ѐ<                   F      
-                 Ԁ              \ ,   ,   Ѐ<                p  F      
-          4 `   `   <                
-`              E  0   @  
-
- 	                              D       Ԁ               F   F               0D         $0H`l
-v==4mesh       o F   F               wE         $0H`l
-@>D4mesh       j1  F   F               @|L         $0H`l
-v=xE4mesh       Jk  2   2   Ѐ<                PJ 4mesh 7          Il  2   2   Ј<                PJ 4mesh 7          Qm  2   2   Ј<                PJ 4mesh 7          Gn  2   2   Ј<                PJ 4mesh 7          Fo  2   2   Ј<                PJ 4mesh 7          p  2   2   Ј<                PJ 4mesh 7          q  2   2   Ј<                PJ 4mesh 7            F   F               M         $0H`l
-E}L4mesh        A   A               `T         $0H`lM4mesh       o F   F               ˹T         $0H`l
-MT4mesh       j1  A   A               p[         $0H`lT4mesh         F   F               Z\         $0H`l
-$U[4mesh        A   A               
-`c         $0H`l[\4mesh       o F   F               c         $0H`l
-\`c4mesh       j1  A   A               *k         $0H`lc4mesh         F   F               +k         $0H`l
-fdk4mesh        A   A               Jr         $0H`lk4mesh       o F   F               K>s         $0H`l
-lr4mesh       j1  A   A               jCz         $0H`l>s4mesh         F   F               kz         $0H`l
-lCz4mesh       5 2   2   Ѐ<                 J 4mesh 7          6       Ԁ              9       Ԁ              < 2   2   Ј<                 J 4mesh 7	          O ,   ,   Ѐ<                0  F                _       Ԁ               A   A                        $0H`lz4mesh       n A   A               @         $0H`l4mesh       o       Ԁ              q R   R   Ѐ<                ` J   $0H`l4mesh3         9 7 
-        r       Ԁ           	   j1  A   A                        $0H`l4mesh    	     F   F               p!         $0H`l
-	ւ4mesh    	    A   A               &         $0H`l"4mesh    	   o F   F                        $0H`l
-'	w4mesh    
\ No newline at end of file
+ 	                              R       Ԁ               `   `   <                0     
+         E  0   @  
+
+ 	                               F   F               @5         $0H`l
+z-.4mesh       +b F   F               @s(6         $0H`l
+ ./4mesh       Hg F   F               .6         $0H`l
+(654mesh       @ 2   2   Ѐ<      	          PJ 4mesh 7                 Ԁ       	       2 R   R   Ѐ<      	          ` J   $0H`l4mesh3         9 7         ;       Ԁ       	        2   2   Ѐ<      	          pJ 4mesh 7          2 6   6   Ј<                  F      	        
+          &2       Ԁ              t2 ,   ,   Ѐ<                  F      
+          3       Ԁ              {3 ,   ,   Ѐ<                P  F      
+             F   F               	=         $0H`l
+.6<4mesh         L   L          `                    
+
+         L   L                              
+
+       %  L   L                              
+
+         F   F               p=         $0H`l
+ ./4mesh         2   2   Ѐ<                J 4mesh 7                  Ԁ                2   2   Ѐ<                J 4mesh 7                  Ԁ              (  F   F               (=         $0H`l
+=	=4mesh       K  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         [        Ԁ                2   2   Ѐ<                J 4mesh 7          B        Ԁ                2   2   Ѐ<                J 4mesh 7                  Ԁ              M 2   2   Ѐ<                J 4mesh 7          N       Ԁ              eP R   R   Ѐ<                 J   $0H`l4mesh3          9 7         \Q       Ԁ              R 2   2   Ј<                J 4mesh 7           6   6   Ѐ<                  F                               Ԁ              U R   R   Ѐ<      	           J   $0H`l4mesh3         9 7 	        X R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        Y R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        Z R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        1[ R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         F   F               -D         $0H`l
+=^D4mesh              Ԁ       	       , P   P   Ѐ<      	          J    $0H`l3         9 7	          R   R   Ѐ<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        (       Ԁ       	       C) 2   2   Ѐ<      	          J 4mesh 7	          6 <   <               >E         $0H`l 4mesh       =6 R   R   Ѐ<                 J   $0H`l4mesh3         9 7         %7 R   R   Ј<                 J   $0H`l4mesh3         9 7         P8 R   R   Ј<                 J   $0H`l4mesh3         9 7         `9 R   R   Ј<                 J   $0H`l4mesh3         9 7         : R   R   Ј<                 J   $0H`l4mesh3         9 7         ; R   R   Ј<                 J   $0H`l4mesh3         9 7         < R   R   Ј<                 J   $0H`l4mesh3         9 7         Hg F   F                HpE         $0H`l
+D?E4mesh       kh R   R   Ѐ<                 J   $0H`l4mesh3          9 7         {h       Ԁ              h P   P   Ѐ<                J    $0H`l3         9 7         i       Ԁ               R   R   Ѐ<                  J   $0H`l4mesh3          9 7                Ԁ               R   R   Ѐ<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7         ; R   R   Ј<                  J   $0H`l4mesh3         9 7         T R   R   Ј<                  J   $0H`l4mesh3         9 7         d R   R   Ј<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7         		 2   2   Ѐ<                J 4mesh 7          		       Ԁ              
+	 2   2   Ѐ<                0J 4mesh 7          
+	 2   2   Ј<                0J 4mesh 7          s	       Ԁ              r	 2   2   Ѐ<                 J 4mesh 7          s	       Ԁ               R   R   Ѐ<      	            J   $0H`l4mesh3         9 7 
+               Ԁ       	              Ԁ       	        P   P   Ѐ<      	          J   	 $0H`l3         9 7
+ 
+        & F   F                M/L         $0H`l
+=	K4mesh         <   <               0M         $0H`l 4mesh         R   R   Ѐ<                @ J   $0H`l4mesh3         9 7         $  R   R   Ј<                @ J   $0H`l4mesh3         9 7           R   R   Ј<                @ J   $0H`l4mesh3         9 7         )  R   R   Ј<                @ J   $0H`l4mesh3         9 7         ]  R   R   Ј<                @ J   $0H`l4mesh3         9 7         I  F   F               PhM         $0H`l
+/LM4mesh         R   R   Ј<                @ J   $0H`l4mesh3         9 7                 Ԁ              r  P   P   Ѐ<                @J    $0H`l3          9 7                 Ԁ                      Ԁ              Z  R   R   Ѐ<                P J   $0H`l4mesh3          9 7         j        Ԁ                P   P   Ѐ<                `J    $0H`l3         9 7         y        Ԁ              <  R   R   Ѐ<                p J   $0H`l4mesh3          9 7         [        Ԁ              HO F   F               pT         $0H`l
+/LM4mesh       + F   F               T         $0H`l
+TM4mesh       $ 2   2   Ѐ<                J 4mesh 7          % 2   2   Ј<                J 4mesh 7          & 2   2   Ј<                J 4mesh 7          ^' 2   2   Ј<                J 4mesh 7          K( 2   2   Ј<                J 4mesh 7          8) 2   2   Ј<                J 4mesh 7          7* 2   2   Ј<                J 4mesh 7            L   L                              
+
+         L   L                              
+
+       (  A   A               ;\         $0H`lT4mesh         F   F               v\         $0H`l
+<\DU4mesh       HO A   A               c         $0H`lv\4mesh       + F   F               3d         $0H`l
+cDU4mesh        2   2   Ѐ<                J 4mesh 7                 Ԁ               R   R   Ѐ<                 J   $0H`l4mesh3         9 7 	        |       Ԁ               2   2   Ѐ<                J 4mesh 7	           2   2   Ј<                J 4mesh 7	          (  A   A               }k         $0H`ld4mesh         A   A               Sk         $0H`l~k4mesh               Ԁ                P   P   Ѐ<                 J   	 $0H`l3         9 7
+           R   R   Ѐ<                 J   $0H`l4mesh3         9 7 
+                Ԁ              HO A   A               s         $0H`lk4mesh       + F   F                sYs         $0H`l
+s	l4mesh       (  A   A               (z         $0H`lYs4mesh         F   F               0z         $0H`l
+z	s4mesh       HO A   A               Ha         $0H`lz4mesh              Ԁ               2   2   Ѐ<                @J 4mesh 7
+           2   2   Ј<                @J 4mesh 7
+           F   F               P         $0H`l
+a	I{4mesh              Ԁ              4 2   2   Ѐ<                `J 4mesh 7
+          +       Ԁ               R   R   Ѐ<                p J   $0H`l4mesh3         9 7         |       Ԁ               2   2   Ј<                J 4mesh 7       	   (  A   A                h         $0H`l4mesh    	     A   A               <         $0H`l4mesh    	           Ԁ           	   x  P   P   Ѐ<                J    $0H`l3         9 7      	     R   R   Ѐ<                 J   $0H`l4mesh3         9 7      	   "        Ԁ           	   HO A   A                        $0H`l=4mesh    	   + F   F               ݑ         $0H`l
+@4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,225 +1,153 @@
-ò            i       =  R   R   Ѐ<      
-     	     	   J   $0H`l4mesh3          9 7          \        Ԁ       
-        ^        Ԁ       
-          P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7            A   A          	     	            $0H`l  4mesh        8  R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          >  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          $A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          'D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F               0 ]          $0H`l
-  = 4mesh        4^  R   R   Ѐ<                  J   $0H`l4mesh3          9 7          D^        Ԁ               ^  P   P   Ѐ<                @ J    $0H`l3         9 7          S_        Ԁ                 R   R   Ѐ<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7             R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7          M  R   R   Ј<                P  J   $0H`l4mesh3         9 7          #        Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7            R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7           R   R   Ј<                   J   $0H`l4mesh3          9 7          ' R   R   Ј<                   J   $0H`l4mesh3          9 7          7 R   R   Ј<                   J   $0H`l4mesh3          9 7           2   2   Ѐ<                0 J 4mesh 7           "       Ԁ               p 2   2   Ѐ<                ` J 4mesh 7           	       Ԁ               d R   R   Ѐ<                @  J   $0H`l4mesh3          9 7          Y R   R   Ј<                @  J   $0H`l4mesh3          9 7          W R   R   Ј<                @  J   $0H`l4mesh3          9 7          g R   R   Ј<                @  J   $0H`l4mesh3          9 7           R   R   Ј<                @  J   $0H`l4mesh3          9 7           R   R   Ј<                @  J   $0H`l4mesh3          9 7          ߤ R   R   Ј<                @  J   $0H`l4mesh3          9 7           2   2   Ѐ<                P J 4mesh 7            > F   F          	     	P ƛ         $0H`l
-  ] 4mesh         <   <               `          $0H`l 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3         9 7          - R   R   Ј<                p  J   $0H`l4mesh3         9 7          O R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          x R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          1 F   F                1         $0H`l
- 4mesh        T R   R   Ѐ<                p  J   $0H`l4mesh3          9 7          d       Ԁ                P   P   Ѐ<                 J    $0H`l3         9 7          s        Ԁ               g R   R   Ѐ<                  J   $0H`l4mesh3          9 7          h R   R   Ј<                  J   $0H`l4mesh3          9 7          j R   R   Ј<                  J   $0H`l4mesh3          9 7          k R   R   Ј<                  J   $0H`l4mesh3          9 7          l R   R   Ј<                  J   $0H`l4mesh3          9 7          r R   R   Ѐ<                  J   $0H`l4mesh3         9 7          s R   R   Ј<                  J   $0H`l4mesh3         9 7          t R   R   Ј<                  J   $0H`l4mesh3         9 7          v R   R   Ј<                  J   $0H`l4mesh3         9 7           w R   R   Ј<                  J   $0H`l4mesh3         9 7          w       Ԁ               x P   P   Ѐ<                 J    $0H`l3         9 7          x       Ԁ               z       Ԁ               z P   P   Ѐ<                 J    $0H`l3         9 7          	 R   R   Ѐ<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          		 R   R   Ј<                  J   $0H`l4mesh3         9 7          
-	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          	 R   R   Ј<                  J   $0H`l4mesh3         9 7          \	       Ԁ               	 2   2   Ѐ<                 J 4mesh 7           ^= F   F          	     	` <         $0H`l
- 4mesh       1  A   A                s         $0H`l4mesh       2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         m5        Ԁ              m  F   F                Q         $0H`l
- =t4mesh       > F   F          	     	p          $0H`l
- F4mesh        F   F                         $0H`l
-4mesh       1 F   F                qP         $0H`l
- 4mesh       ^= F   F          	     	 &         $0H`l
- P4mesh         L   L          	      
+ò            i       $  <   <                 $          $0H`l 4mesh         %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          0%        Ԁ               ~%  P   P   Ѐ<                 J     $0H`l3          9 7          ?&        Ԁ               s&  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          8'        Ԁ               (  P   P   Ј<                 J     $0H`l3         9 7          )        Ԁ               ?  <   <          	     	  k?          $0H`l 4mesh        ?  R   R   Ѐ<      	          0  J   $0H`l4mesh3         9 7          *A  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          UB  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          JC  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          ~D  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          E  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7          F  R   R   Ј<      	          0  J   $0H`l4mesh3         9 7            A   A                 (          $0H`l $ 4mesh                Ԁ               %  P   P   Ѐ<                0 J    $0H`l3         9 7            R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          =        Ԁ                 R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7            R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7                  Ԁ       
+          R   R   Ѐ<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7            R   R   Ј<      	          @  J   $0H`l4mesh3         9 7          (  R   R   Ј<      	          @  J   $0H`l4mesh3         9 7          A  R   R   Ј<      	          @  J   $0H`l4mesh3         9 7          H  R   R   Ј<      	          @  J   $0H`l4mesh3         9 7          j  R   R   Ј<      	          @  J   $0H`l4mesh3         9 7          q  2   2   Ѐ<      	          P J 4mesh 7            
+        Ԁ               k 2   2   Ѐ<      
+     	     	  J 4mesh 7           k       Ԁ       
+         <   <          	     	0          $0H`l 4mesh         R   R   Ѐ<      	          `  J   $0H`l4mesh3         9 7          J R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          c R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          a R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          _ R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          x R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          v R   R   Ј<      	          `  J   $0H`l4mesh3         9 7          - F   F               p -         $0H`l
+  4mesh        P R   R   Ѐ<           	     	@  J   $0H`l4mesh3          9 7          `       Ԁ       	         P   P   Ѐ<      	           J    $0H`l3         9 7          o       Ԁ               7 F   F               P H7         $0H`l
+  4mesh        H R   R   Ѐ<      	            J   $0H`l4mesh3         9 7          I R   R   Ј<      	            J   $0H`l4mesh3         9 7          K R   R   Ј<      	            J   $0H`l4mesh3         9 7          -L R   R   Ј<      	            J   $0H`l4mesh3         9 7          OM R   R   Ј<      	            J   $0H`l4mesh3         9 7          _N R   R   Ј<      	            J   $0H`l4mesh3         9 7          O R   R   Ј<      	            J   $0H`l4mesh3         9 7          3Q       Ԁ       
+        g 2   2   Ѐ<           	     	P J 4mesh 7           g       Ԁ       	        g 2   2   Ѐ<      	           J 4mesh 7           h       Ԁ               č R   R   Ѐ<      
+     	     	`  J   $0H`l4mesh3          9 7                 Ԁ       
+        K 2   2   Ѐ<      
+     	     	p J 4mesh 7            <   <          	     	          $0H`l 4mesh        6 R   R   Ѐ<      	            J   $0H`l4mesh3         9 7          O R   R   Ј<      	            J   $0H`l4mesh3         9 7          h  R   R   Ј<      	            J   $0H`l4mesh3         9 7          ! R   R   Ј<      	            J   $0H`l4mesh3         9 7          " R   R   Ј<      	            J   $0H`l4mesh3         9 7          # R   R   Ј<      	            J   $0H`l4mesh3         9 7          $ R   R   Ј<      	            J   $0H`l4mesh3         9 7          M6 F   F                M6         $0H`l
+ 74mesh        p7 R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7          7       Ԁ       	        7 P   P   Ѐ<      	           J    $0H`l3         9 7          8       Ԁ              {  R   R   Ѐ<      	            J   $0H`l4mesh3         9 7         |  R   R   Ј<      	            J   $0H`l4mesh3         9 7         }  R   R   Ј<      	            J   $0H`l4mesh3         9 7           R   R   Ј<      	            J   $0H`l4mesh3         9 7         8  R   R   Ј<      	            J   $0H`l4mesh3         9 7         -  R   R   Ј<      	            J   $0H`l4mesh3         9 7         =  R   R   Ј<      	            J   $0H`l4mesh3         9 7                 Ԁ       
+       J  2   2   Ј<           	     	 J 4mesh 7          Z        Ԁ       	         2   2   Ѐ<      	           J 4mesh 7          A        Ԁ                R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7                 Ԁ       
+       "  2   2   Ѐ<      
+     	     	 J 4mesh 7          T <   <          	     	 ˖         $0H`l 4mesh       U R   R   Ѐ<      	            J   $0H`l4mesh3         9 7         U       Ԁ              V P   P   Ѐ<           	     	 J    $0H`l3          9 7         V       Ԁ       	       zW R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7         W       Ԁ       	       W P   P   Ѐ<      	          J    $0H`l3         9 7         X       Ԁ              - F   F                m         $0H`l
+ 74mesh       5 2   2   Ѐ<                0J 4mesh 7          6 2   2   Ѐ<                p J 4mesh 7          6       Ԁ              "7 2   2   Ј<                0J 4mesh 7          7       Ԁ              L8 F   F                y         $0H`l
+ 4mesh       n8 R   R   Ѐ<                @ J   $0H`l4mesh3         9 7         39       Ԁ              9 2   2   Ѐ<                 J 4mesh 7          9       Ԁ              : 2   2   Ѐ<                PJ 4mesh 7          :       Ԁ               A   A          	     	 7         $0H`l4mesh              Ԁ       
+        P   P   Ѐ<      
+     	     	J    $0H`l3         9 7          R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3         9 7                Ԁ       
+       T$  L   L          	0     
                
 
 
-         L   L                
+       $  L   L          `     
                
 
 
-         L   L               
-               
+       ,  A   A               p         $0H`l84mesh       (-  R   R   Ѐ<                  J   $0H`l4mesh3         9 7         8-        Ԁ              -  P   P   Ѐ<                J    $0H`l3         9 7         G.        Ԁ              .  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         I/        Ԁ              /  P   P   Ѐ<                 J    $0H`l3         9 7         /        Ԁ                F   F                J         $0H`l
+E4mesh       U F   F          	     	@%         $0H`l
+4mesh       - F   F               Q&         $0H`l
+%K4mesh       g F   F                &         $0H`l
+&R&4mesh       $ F   F          	     	P+z-         $0H`l
+R&!'4mesh       ,  L   L          	`     
+               
 
 
-         E   E   Ѐ               D%              j       
-             E   E   Ѐ               D%              e       
-           3  E   E   Ѐ       	     	   D%                     
-                   Ԁ       
-         ?   ?   Ѐ<           	     	   E                   
-                  Ԁ       	         ?   ?   Ѐ<                   E           ,       
-                  Ԁ              !  ?   ?   Ѐ<                0  E                  
-                   Ԁ              !  L   L   <                
-@                     
+       W  L   L               
+               
+
+
+         L   L                
+               
+
+
+       $  E   E   Ѐ               D%              ,       
+           s  E   E   Ѐ              D%                     
+             E   E   Ѐ       	     	p  D%                     
+           v        Ԁ       
+       	  ?   ?   Ѐ<           	     	  E                   
+          	        Ԁ       	       b	  ?   ?   Ѐ<                  E                  
+          
+        Ԁ              
+  ?   ?   Ѐ<                   E           )       
+                  Ԁ                L   L   <                
+                     
      
 
-       !        Ԁ              	"  L   L   <      	          
-                      
+               Ԁ                L   L   <      	          
+                     
      
 
-       "        Ԁ              q#  L   L   <      
+               Ԁ                L   L   <      
      	     
-                      
+                     
      
 
-       $        Ԁ       
-       %  `   `   <           	           
+               Ԁ       
+         `   `   <           	          
          E  0    @  
 
- 	                              %        Ԁ       	       %  `   `   <                     
+ 	                                      Ԁ       	         `   `   <                     
          E  0    @  
 
- 	                              &        Ԁ              1  F   F               `         $0H`l
-P4mesh       6  L   L          p                    
-
-       ;6  L   L                               
-
-       g7  L   L          	                     
-
-       O8        Ԁ       
-       9  L   L   <           	           
-                
-
-     
-       9        Ԁ       	       s9  L   L   <                0     
-                
-
-     
-       0:        Ԁ              :  L   L   <                     
-                
-
-     
-       F>        Ԁ              	?  `   `   <                
-              E  0    @  
-
- 	                              ?        Ԁ              p?  `   `   <      	          
-@              E  0    @  
-
- 	                              E@        Ԁ              A  `   `   <      
-     	     
-               E  0    @  
-
- 	                              m  F   F               P         $0H`l
- 4mesh       V       Ԁ              V ,   ,   Ѐ<                  F                V       Ԁ              V ,   ,   Ѐ<      	          `  F                qW       Ԁ              W ,   ,   Ѐ<      
-     	     	  F                > F   F          	     	 F &         $0H`l
- 4mesh       X E   E   Ѐ       	     	0  D%         
-                         E   E   Ѐ            p  D%         
-     ,                  ߣ E   E   Ѐ              D%         
-                        F   F               
-W&         $0H`l
-4mesh       1 F   F               &         $0H`l
-  &W&4mesh        E 2   2   Ѐ<                J 4mesh 7          F       Ԁ              G R   R   Ѐ<                 J   $0H`l4mesh3         9 7         H       Ԁ              -I 2   2   Ѐ<                J 4mesh 7          X
- E   E   Ѐ       	     	@  D%         
-                        
- E   E   Ѐ              D%         
-     ,                  
- E   E   Ѐ               D%         
-                       ^= F   F          	     	Pf-         $0H`l
- *&&4mesh       1  A   A               *-         $0H`l&4mesh       2        Ԁ              g3  P   P   Ѐ<                 J    $0H`l3         9 7         6        Ԁ              m  F   F               3.         $0H`l
- --4mesh        E   E   Ѐ       	     	`  D%         
-                        g E   E   Ѐ              D%         
-     ,                  > F   F          	     	pb5         $0H`l
- -4.4mesh        F   F               @J5         $0H`l
-4..4mesh       1 F   F               5         $0H`l
- b554mesh       /	 E   E   Ѐ            `  D%              (       
-           >	 E   E   Ѐ              D%                     
-           A	       Ԁ       
-       	 ?   ?   Ѐ<           	     	  E                   
-          	       Ԁ       	       -	 ?   ?   Ѐ<                  E           ,       
-          	       Ԁ              d	 ?   ?   Ѐ<                p  E                  
-          X	       Ԁ       
-       	 `   `   <           	          
+ 	                                      Ԁ                `   `   <                      
+         E  0    @  
+
+ 	                                      Ԁ       
+       e  `   `   <           	          
          E  0   @  
 
- 	                              +	       Ԁ       	       	 `   `   <                     
+ 	                              u        Ԁ       	         `   `   <                      
          E  0   @  
 
- 	                              W	       Ԁ              	 `   `   <                     
-         E  0   @  
-
- 	                              	       Ԁ       
-       	 `   `   <           	          
+ 	                                      Ԁ                      Ԁ       
+         `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       	 `   `   <                      
+ 	                                      Ԁ       	       &  `   `   <                     
          E  0   @  
 
- 	                              	 `   `   <                      
-         E  0   @  
-
- 	                              	       Ԁ              y	 `   `   <                     
+ 	                                      Ԁ                `   `   <                @     
          E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              0	 `   `   <      	          
-              E  0   @  
-
- 	                              	 `   `   <      	          
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <           	          
+ 	                              ,  F   F                -         $0H`l
+z-&4mesh         F   F               `.         $0H`l
+.-4mesh       T       Ԁ       
+        `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       B	 `   `   <                      
-         E  0   @  
-
- 	                              	 `   `   <      
-     	     
-              E  0   @  
-
- 	                              	 `   `   <                      
-         E  0   @  
-
- 	                              Q	 `   `   <                
-              E  0   @  
-
- 	                              a	       Ԁ              c	 `   `   <                      
+ 	                              '       Ԁ       	       ~ `   `   <                0     
          E  0   @  
 
- 	                              8	       Ԁ              	 `   `   <                     
+ 	                              S       Ԁ               `   `   <                p     
          E  0   @  
 
- 	                              	 `   `   <      	          
-0              E  0   @  
-
- 	                              	       Ԁ              	       Ԁ              	 `   `   <                
-              E  0   @  
-
- 	                              	       Ԁ              	 `   `   <      	          
-@              E  0   @  
-
- 	                               
-       Ԁ              
- `   `   <      
-     	     
-              E  0   @  
-
- 	                              ^= F   F          	     	 =         $0H`l
- l554mesh                Ԁ       
-       l  `   `   <           	          
-         E  0   @  
-
- 	                              |        Ԁ       	         `   `   <                P     
-         E  0   @  
-
- 	                                      Ԁ              k  `   `   <                     
-         E  0   @  
-
- 	                                      Ԁ              	  `   `   <                
-              E  0   @  
-
- 	                              	        Ԁ              	  `   `   <      	          
-`              E  0   @  
-
- 	                              
-        Ԁ                `   `   <      
-     	     
-               E  0   @  
-
- 	                              1  F   F                j:=         $0H`l
-5564mesh       m  F   F               pv=         $0H`l
- =:=4mesh       > F   F          	     	0ƤD         $0H`l
- l5v=4mesh              Ԁ       
-        `   `   <           	     @     
-         E  0   @  
-
- 	                              Ȣ       Ԁ       	        `   `   <                     
-         E  0   @  
-
- 	                                     Ԁ              F ,   ,   Ј<           	     	P  F      
-          V       Ԁ       	        ,   ,   Ѐ<                  F      
-          ئ 2   2   Ѐ<      
-     	     	`J 4mesh 7          H ,   ,   Ј<                  F      
-          ٧       Ԁ              q       Ԁ               F   F               0D         $0H`l
-v==4mesh       1 F   F               1E         $0H`l
- DD4mesh       V= A   A          	     	pEL         $0H`lE4mesh       =>       Ԁ       
-       @ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         A       Ԁ       
-       m  F   F               QL         $0H`l
- FLD4mesh        6   6   Ѐ<      	            F                         6   6   Ј<      	            F                         6   6   Ј<      	            F                        h 6   6   Ј<      	            F                        t 6   6   Ј<      	            F                        e 6   6   Ј<      	            F                        ; 6   6   Ј<      	            F                         2   2   Ѐ<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7           2   2   Ј<                J 4mesh 7          1 F   F               qYT         $0H`l
- FLD4mesh       ; 2   2   Ѐ<      	          J 4mesh 7          ; 2   2   Ј<      	          J 4mesh 7          < 2   2   Ј<      	          J 4mesh 7          = 2   2   Ј<      	          J 4mesh 7          > 2   2   Ј<      	          J 4mesh 7          ? 2   2   Ј<      	          J 4mesh 7          @ 2   2   Ј<      	          J 4mesh 7          m  A   A                [         $0H`l FL4mesh       1 <   <               c         $0H`l 4mesh         <   <                lk         $0H`l 4mesh       1^ <   <               0-s         $0H`l 4mesh         <   <               @z         $0H`l 4mesh       1v <   <               P1         $0H`l 4mesh    	     <   <               `Q=         $0H`l 4mesh    	   1j <   <               pq         $0H`l 4mesh    
\ No newline at end of file
+ 	                              - F   F               @5         $0H`l
+z-.4mesh       g F   F               .6         $0H`l
+(654mesh        2   2   Ѐ<      	          PJ 4mesh 7          }       Ԁ               6   6   Ѐ<      
+     	     	  F                         2   2   Ѐ<           	     	 J 4mesh 7                 Ԁ       	        F   F          	     	k<         $0H`l
+5c64mesh        R   R   Ѐ<      	          ` J   $0H`l4mesh3         9 7         o       Ԁ               2   2   Ѐ<           	     	 J 4mesh 7                 Ԁ       	       ] 2   2   Ѐ<      	          pJ 4mesh 7                 Ԁ               1 6   6   Ѐ<                  F      	        
+          1 6   6   Ј<                  F      	        
+          R2       Ԁ              2 ,   ,   Ѐ<                  F      
+             F   F               	=         $0H`l
+.6<4mesh       z  L   L                              
+
+         L   L                              
+
+               Ԁ              w  2   2   Ѐ<                J 4mesh 7            F   F               (=         $0H`l
+=	=4mesh               Ԁ                      Ԁ              } 6   6   Ѐ<                  F                               Ԁ              8! E   E   Ѐ       	     	0  D%         
+     h                   ]S       Ԁ       
+       S 2   2   Ѐ<      
+     	     	@J 4mesh 7          T 2   2   Ј<      
+     	     	@J 4mesh 7          RU A   A          	     	P]D         $0H`l>4mesh       tU R   R   Ѐ<      	           J   $0H`l4mesh3         9 7 	        V R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        W R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        X R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        ~Y R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        Z R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        [ R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        - F   F               -D         $0H`l
+=^D4mesh       J R   R   Ј<           	     	` J   $0H`l4mesh3          9 7         Z       Ԁ       	        P   P   Ѐ<      	          J    $0H`l3         9 7	         i       Ԁ              R R   R   Ѐ<      	           J   $0H`l4mesh3         9 7 	        P R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        N R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        g R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	         R   R   Ј<      	           J   $0H`l4mesh3         9 7 	        I       Ԁ       
+       ( 2   2   Ѐ<           	     	pJ 4mesh 7 	         (       Ԁ       	       ( 2   2   Ѐ<      	          J 4mesh 7	          )       Ԁ              7 R   R   Ј<                 J   $0H`l4mesh3         9 7         9 R   R   Ј<                 J   $0H`l4mesh3         9 7         ; R   R   Ј<                 J   $0H`l4mesh3         9 7         -< R   R   Ј<                 J   $0H`l4mesh3         9 7         a= R   R   Ј<                 J   $0H`l4mesh3         9 7         e R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7 	        f       Ԁ       
+       h       Ԁ              Mi P   P   Ѐ<                J    $0H`l3         9 7          R   R   Ѐ<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7          R   R   Ј<                  J   $0H`l4mesh3         9 7         		       Ԁ              d
+	 2   2   Ѐ<                0J 4mesh 7           <   <          	     	K         $0H`l 4mesh       6 R   R   Ѐ<      	            J   $0H`l4mesh3         9 7 
+               Ԁ               P   P   Ѐ<           	     	J   	 $0H`l3          9 7
+ 
+               Ԁ       	        R   R   Ѐ<           	     	 J   $0H`l4mesh3          9 7 
+               Ԁ       	        P   P   Ѐ<      	          J   	 $0H`l3         9 7
+ 
+               Ԁ              M& F   F                M/L         $0H`l
+=	K4mesh       `  2   2   Ѐ<                0J 4mesh 7          D  2   2   Ј<                0J 4mesh 7          C  2   2   Ј<                0J 4mesh 7            2   2   Ј<                0J 4mesh 7            2   2   Ј<                0J 4mesh 7            2   2   Ј<                0J 4mesh 7            2   2   Ј<                0J 4mesh 7          - A   A               @mS         $0H`l	K4mesh        2   2   Ѐ<      	          PJ 4mesh 7
+ 
+          2   2   Ј<      	          PJ 4mesh 7
+ 
+          2   2   Ј<      	          PJ 4mesh 7
+ 
+          2   2   Ј<      	          PJ 4mesh 7
+ 
+         v 2   2   Ј<      	          PJ 4mesh 7
+ 
+         Q 2   2   Ј<      	          PJ 4mesh 7
+ 
+         Y 2   2   Ј<      	          PJ 4mesh 7
+ 
+         M> A   A               `[         $0H`l	K4mesh       -i <   <               pb         $0H`l 4mesh       M> <   <               j         $0H`l 4mesh       - <   <               Tr         $0H`l 4mesh       M" <   <               y         $0H`l 4mesh       - <   <               -         $0H`l 4mesh       M* <   <               M<         $0H`l 4mesh    	   -q <   <               mŐ         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,404 +1,260 @@
-ò            i         <   <          
+ò            i       \%        Ԁ               &  P   P   Ѐ<                 J     $0H`l3          9 7          &  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          /)        Ԁ               k?  <   <          	     	  k?          $0H`l 4mesh          A   A          
      
-  *          $0H`l 4mesh          R   R   Ѐ<      
-     	     	   J   $0H`l4mesh3          9 7          y        Ԁ       	          P   P   Ѐ<      	     
-     
- J     $0H`l3          9 7          /        Ԁ       
-        !  R   R   Ѐ<      	     
-     
-   J   $0H`l4mesh3          9 7          1        Ԁ       
-          P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7          @        Ԁ       	          A   A          	     	            $0H`l  4mesh          R   R   Ѐ<      	             J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7                  Ԁ       	          R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ       	          P   P   Ѐ<      	           J     $0H`l3         9 7                  Ԁ               }>  R   R   Ѐ<                   J   $0H`l4mesh3         9 7          ?  R   R   Ј<                   J   $0H`l4mesh3         9 7          @  R   R   Ј<                   J   $0H`l4mesh3         9 7          A  R   R   Ј<                   J   $0H`l4mesh3         9 7          B  R   R   Ј<                   J   $0H`l4mesh3         9 7          C  R   R   Ј<                   J   $0H`l4mesh3         9 7          D  R   R   Ј<                   J   $0H`l4mesh3         9 7          ]  F   F               0 ]          $0H`l
-  = 4mesh        q^        Ԁ               _  P   P   Ѐ<                @ J    $0H`l3         9 7          [  R   R   Ѐ<                P  J   $0H`l4mesh3         9 7          t  R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7            R   R   Ј<                P  J   $0H`l4mesh3         9 7          O       Ԁ                2   2   Ѐ<                ` J 4mesh 7           ƛ F   F          	     	P ƛ         $0H`l
-  ] 4mesh         A   A          
-     
-0 J         $0H`l 4mesh         R   R   Ѐ<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7           R   R   Ј<                p  J   $0H`l4mesh3         9 7          , R   R   Ј<                p  J   $0H`l4mesh3         9 7          * R   R   Ј<                p  J   $0H`l4mesh3         9 7           F   F                1         $0H`l
- 4mesh               Ԁ               7  P   P   Ѐ<                 J    $0H`l3         9 7          {s R   R   Ѐ<                  J   $0H`l4mesh3         9 7          pt R   R   Ј<                  J   $0H`l4mesh3         9 7          u R   R   Ј<                  J   $0H`l4mesh3         9 7          w R   R   Ј<                  J   $0H`l4mesh3         9 7          x       Ԁ               < F   F          	     	` <         $0H`l
- 4mesh         A   A          
-     
-@ jF         $0H`l =4mesh       m  F   F                Q         $0H`l
- =t4mesh       ƛ F   F          	     	p          $0H`l
- F4mesh        A   A          
-     
-P          $0H`l 4mesh        F   F                qP         $0H`l
- 4mesh       < F   F          	     	 &         $0H`l
- P4mesh         A   A          
-     
-`          $0H`l 4mesh         L   L          
-p      
+           $0H`l ? 4mesh          R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7          =  R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7                  Ԁ       	          P   P   Ѐ<      	     
+     
+  J     $0H`l3          9 7                  Ԁ       
+          2   2   Ѐ<      	          P J 4mesh 7                    Ԁ               j 2   2   Ѐ<      
+     	     	  J 4mesh 7           Ak       Ԁ       	        k 2   2   Ѐ<      	     
+     
+@ J 4mesh 7           k       Ԁ       
+         <   <          	     	0          $0H`l 4mesh         F   F               p -         $0H`l
+  4mesh         R   R   Ѐ<           	     	@  J   $0H`l4mesh3          9 7                 Ԁ       	        2 P   P   Ѐ<      	           J    $0H`l3         9 7          B       Ԁ               P 2   2   Ѐ<      	     
+     
+p J 4mesh 7            Q       Ԁ       
+        2g 2   2   Ѐ<           	     	P J 4mesh 7           g       Ԁ       	        Ih 2   2   Ѐ<      	           J 4mesh 7           Yh       Ԁ                A   A          
+     
+          $0H`l4mesh        ; R   R   Ѐ<      
+     	     	`  J   $0H`l4mesh3          9 7                  Ԁ       	        ~ 2   2   Ѐ<      	     
+     
+ J 4mesh 7                  Ԁ       
+         2   2   Ѐ<      
+     	     	p J 4mesh 7                  Ԁ       	         <   <          	     	          $0H`l 4mesh        6 F   F                M6         $0H`l
+ 74mesh        6 R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7          7       Ԁ       	        R8 P   P   Ѐ<      	           J    $0H`l3         9 7          b8       Ԁ              O  2   2   Ѐ<      	     
+     
+ J 4mesh 7           _        Ԁ       
+         2   2   Ѐ<           	     	 J 4mesh 7            2   2   Ј<           	     	 J 4mesh 7                  Ԁ       	         2   2   Ѐ<      	           J 4mesh 7                  Ԁ                A   A          
+     
+ 1         $0H`l4mesh         R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7                 Ԁ       	       ^  2   2   Ѐ<      	     
+     
+ J 4mesh 7          n        Ԁ       
+         2   2   Ѐ<      
+     	     	 J 4mesh 7          ^        Ԁ       	       T <   <          	     	 ˖         $0H`l 4mesh       U R   R   Ѐ<      	            J   $0H`l4mesh3         9 7         U       Ԁ              U P   P   Ѐ<           	     	 J    $0H`l3          9 7         V       Ԁ       	       V R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7         W       Ԁ       	       \X P   P   Ѐ<      	          J    $0H`l3         9 7         lX       Ԁ               F   F                m         $0H`l
+ 74mesh       5 2   2   Ѐ<                0J 4mesh 7          6       Ԁ              7 2   2   Ј<                0J 4mesh 7          8 R   R   Ѐ<                @ J   $0H`l4mesh3         9 7         9       Ԁ              u: 2   2   Ѐ<                PJ 4mesh 7           A   A          	     	 7         $0H`l4mesh        R   R   Ѐ<      	     
+     
+  J   $0H`l4mesh3          9 7                Ԁ       
+       $ P   P   Ѐ<      
+     	     	J    $0H`l3         9 7                Ԁ       	        R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3         9 7                Ԁ       	        P   P   Ѐ<      	     
+     
+J    $0H`l3         9 7                Ԁ       
+       #  L   L          
+      
                 
 
 
-       3  L   L          	      
+       #  L   L          	0     
                
 
 
-       _  L   L                
+       $  L   L          `     
                
 
 
-       o  E   E   Ѐ               D%              e       
-             E   E   Ѐ       	     	   D%                     
-             ?   ?   Ѐ<      	     
-     
-   E                      
-                  Ԁ       
-         ?   ?   Ѐ<           	     	   E                   
-                  Ԁ       	       V  ?   ?   Ѐ<                   E           ,       
-          !        Ԁ              "  L   L   <      	          
-                      
+       },  A   A               p         $0H`l84mesh       d-        Ԁ              
+.  P   P   Ѐ<                J    $0H`l3         9 7         /  R   R   Ѐ<                 J   $0H`l4mesh3         9 7         +0        Ԁ                A   A          
+     
+0	         $0H`l84mesh       T F   F          	     	@%         $0H`l
+4mesh        F   F               Q&         $0H`l
+%K4mesh        A   A          
+     
+@)!'         $0H`l%4mesh        F   F          	     	P+z-         $0H`l
+R&!'4mesh          L   L          
+P     
+                
+
+
+          L   L          	`     
+               
+
+
+         E   E   Ѐ              D%                     
+           6  E   E   Ѐ       	     	p  D%                     
+           9  ?   ?   Ѐ<      	     
+     
+`  E                      
+          I        Ԁ       
+         ?   ?   Ѐ<           	     	  E                   
+          @	        Ԁ       	       	  ?   ?   Ѐ<                  E                  
+                  Ԁ                L   L   <      	          
+                     
      
 
-       "        Ԁ              "  L   L   <      
+               Ԁ                 L   L   <      
      	     
-                      
+                     
      
 
-       #        Ԁ       	       p$  `   `   <      	     
-           
+               Ԁ       	         `   `   <      	     
+     p     
           E  0    @  
 
- 	                              $        Ԁ       
-       $  `   `   <           	           
+ 	                                      Ԁ       
+         `   `   <           	          
          E  0    @  
 
- 	                              %        Ԁ       	       &  `   `   <                     
-         E  0    @  
-
- 	                              6  L   L                               
-
-       6  L   L          	                     
-
-       8  L   L   <      	     
-           
-                 
-
-     
-       "8        Ԁ       
-       8  L   L   <           	           
-                
-
-     
-       H9        Ԁ       	       E?        Ԁ              @  `   `   <      	          
-@              E  0    @  
-
- 	                              @        Ԁ              o@  `   `   <      
-     	     
-               E  0    @  
-
- 	                              DA        Ԁ       	       m  F   F               P         $0H`l
- 4mesh       V       Ԁ              4W ,   ,   Ѐ<      	          `  F                DW       Ԁ              W ,   ,   Ѐ<      
-     	     	  F                #X       Ԁ       	       ƛ F   F          	     	 F &         $0H`l
- 4mesh        E   E   Ѐ       
-     
-   D%           
-                          E   E   Ѐ       	     	0  D%         
-                         E   E   Ѐ            p  D%         
-     ,                   A   A          
-     
- )&         $0H`l  &4mesh        F   F               &         $0H`l
-  &W&4mesh       
- E   E   Ѐ       
-     
-   D%           
-                         
- E   E   Ѐ       	     	@  D%         
-                        
- E   E   Ѐ              D%         
-     ,                  < F   F          	     	Pf-         $0H`l
- *&&4mesh         A   A          
-     
- -         $0H`l -4mesh       m  F   F               3.         $0H`l
- --4mesh       T E   E   Ѐ       
-     
-   D%           
-                          E   E   Ѐ       	     	`  D%         
-                         E   E   Ѐ              D%         
-     ,                  ƛ F   F          	     	pb5         $0H`l
- -4.4mesh        A   A          
-     
-
-l5         $0H`l b54mesh        F   F               5         $0H`l
- b554mesh       	 E   E   Ѐ              D%                     
-           	 E   E   Ѐ       	     	  D%              d       
-           	 ?   ?   Ѐ<      	     
-     
-   E                      
-          	       Ԁ       
-       b	 ?   ?   Ѐ<           	     	  E                   
-          	       Ԁ       	       	 `   `   <      	     
-     0     
+ 	                                      Ԁ       	       e  `   `   <      	     
+          
           E  0   @  
 
- 	                              +	       Ԁ       
-       	 `   `   <           	          
+ 	                              u        Ԁ       
+         `   `   <           	          
          E  0   @  
 
- 	                              W	       Ԁ       	       	 `   `   <      	     
-     @     
+ 	                                      Ԁ       	         `   `   <      	     
+          
           E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <           	          
+ 	                                      Ԁ       
+       &  `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       	 `   `   <      	     
-     P     
-          E  0   @  
-
- 	                              	       Ԁ       
-       6	 `   `   <           	          
-         E  0   @  
+ 	                                      Ԁ       	         `   `   <                     
+         E  0   @  
 
- 	                              	       Ԁ              0	 `   `   <           	          
-         E  0   @  
-
- 	                              	 `   `   <           	          
-         E  0   @  
+ 	                              ,  F   F                -         $0H`l
+z-&4mesh         A   A          
+     
+I.         $0H`lz-4mesh       T F   F          	     	K5         $0H`l
+-.4mesh        `   `   <      	     
+          
+          E  0   @  
 
- 	                              	 `   `   <      	          
-              E  0   @  
-
- 	                              	       Ԁ              '	 `   `   <           	          
+ 	                              '       Ԁ       
+       ~ `   `   <           	          
          E  0   @  
 
- 	                              	       Ԁ       	       	 `   `   <                      
+ 	                              S       Ԁ       	        `   `   <                0     
          E  0   @  
 
- 	                              J	 `   `   <      
-     	     
-              E  0   @  
-
- 	                              	       Ԁ       	       	       Ԁ              	 `   `   <                      
-         E  0   @  
-
- 	                              T	 `   `   <      	          
-0              E  0   @  
-
- 	                              d	       Ԁ              	 `   `   <      
-     	     
-              E  0   @  
-
- 	                              	       Ԁ       	       	       Ԁ               
- `   `   <      	          
-@              E  0   @  
-
- 	                               
-       Ԁ               
- `   `   <      
-     	     
-              E  0   @  
-
- 	                              
-       Ԁ       	       < F   F          	     	 =         $0H`l
- l554mesh          `   `   <      	     
-     `     
-          E  0   @  
-
- 	                                       Ԁ       
-          `   `   <           	          
-         E  0   @  
-
- 	                                `   `   <           	          
-         E  0   @  
-
- 	                                      Ԁ       	       	        Ԁ              
-  `   `   <      	          
-`              E  0   @  
-
- 	                              
-        Ԁ              
-  `   `   <      
-     	     
-               E  0   @  
-
- 	                                      Ԁ       	       m  F   F               pv=         $0H`l
- =:=4mesh       ƛ F   F          	     	0ƤD         $0H`l
- l5v=4mesh        `   `   <      	     
-          
-          E  0   @  
-
- 	                              ȡ       Ԁ       
-        `   `   <           	     @     
-         E  0   @  
-
- 	                                     Ԁ       	        `   `   <                     
-         E  0   @  
-
- 	                               ,   ,   Ѐ<           	     	P  F      
-           ,   ,   Ј<           	     	P  F      
-                 Ԁ       	       { 2   2   Ѐ<      
-     	     	`J 4mesh 7                 Ԁ       	       v 2   2   Ј<      	     
-     
-J 4mesh 7                 Ԁ       
-        F   F               1E         $0H`l
- DD4mesh       < A   A          	     	pEL         $0H`lE4mesh       > R   R   Ѐ<      	     
-     
- J   $0H`l4mesh3          9 7         >       Ԁ       
-       _> P   P   Ѐ<      
-     	     	J    $0H`l3         9 7         G? P   P   Ј<      
-     	     	J    $0H`l3         9 7         @       Ԁ       	       *@ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
-     
-J    $0H`l3         9 7         A       Ԁ       
-       ,  A   A          
-     
-jwL         $0H`lFL4mesh       t  E   E   Ѐ       
-     
-  D%           
-                           ?   ?   Ѐ<      
-     	     	  E        
-     d                 ?!       Ԁ       	       " `   `   <      	     
-           
-          E  0   @  
-
- 	                              "       Ԁ       
-       i" `   `   <           	          
-         E  0   @  
-
- 	                              # E   E   Ѐ       	     	  D%         
-                        $ `   `   <           	          
-         E  0   @  
-
- 	                              m' `   `   <           	          
-         E  0   @  
-
- 	                              * `   `   <           	          
-         E  0   @  
-
- 	                              (- `   `   <           	          
-         E  0   @  
-
- 	                              5 `   `   <           	          
-         E  0   @  
-
- 	                              	I `   `   <           	          
-         E  0   @  
-
- 	                              ƛ F   F          	     	S         $0H`l
-EwL4mesh        `   `   <      	     
-          
-          E  0   @  
-
- 	                                     Ԁ       
-       [ `   `   <           	          
-         E  0   @  
-
- 	                              r `   `   <           	          
-         E  0   @  
-
- 	                              ֨ `   `   <           	          
-         E  0   @  
-
- 	                               `   `   <           	          
-         E  0   @  
-
- 	                              Ȱ `   `   <           	          
-         E  0   @  
-
- 	                              ^ `   `   <           	          
-         E  0   @  
-
- 	                              O `   `   <           	          
-         E  0   @  
-
- 	                              T 2   2   Ѐ<           	     	J 4mesh 7          & 2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7           A   A          
+ 	                               F   F               @5         $0H`l
+z-.4mesh        A   A          
      
- DT         $0H`lS4mesh       : 6   6   Ѐ<      
-     	     	   F                        5 6   6   Ј<      
-     	     	   F                               Ԁ       	       t E   E   Ѐ       
+ic6         $0H`l54mesh       @ 2   2   Ѐ<      	          PJ 4mesh 7          P       Ԁ               6   6   Ѐ<      
+     	     	  F                        ;       Ԁ       	       ] 2   2   Ѐ<           	     	 J 4mesh 7                 Ԁ       	        F   F          	     	k<         $0H`l
+5c64mesh       2 R   R   Ѐ<      	          ` J   $0H`l4mesh3         9 7         B       Ԁ               2   2   Ѐ<           	     	 J 4mesh 7          ;       Ԁ       	        2   2   Ѐ<      	          pJ 4mesh 7                 Ԁ              2 6   6   Ј<                  F      	        
+          %  L   L                              
+
+         A   A          
      
-0  D%           
-	                         À E   E   Ѐ       	     	  D%         
-	                        < A   A          	     	 &[         $0H`lDT4mesh       X  A   A          
+>         $0H`l54mesh              Ԁ              t  E   E   Ѐ       
      
-@[         $0H`l[4mesh       ƛ A   A          	     	0F)c         $0H`l[4mesh       4	 E   E   Ѐ       
+  D%           
+                           E   E   Ѐ       	     	0  D%         
+     h                    S 2   2   Ѐ<      	     
+     
+ J 4mesh 7          0S       Ԁ       
+       ~S 2   2   Ѐ<      
+     	     	@J 4mesh 7          /T 2   2   Ј<      
+     	     	@J 4mesh 7          T       Ԁ       	       T A   A          	     	P]D         $0H`l>4mesh        F   F               -D         $0H`l
+=^D4mesh       ǅ R   R   Ѐ<           	     	` J   $0H`l4mesh3          9 7          R   R   Ј<           	     	` J   $0H`l4mesh3          9 7                Ԁ       	       , P   P   Ѐ<      	          J    $0H`l3         9 7	         <       Ԁ               2   2   Ѐ<      	     
+     
+0J 4mesh 7                  Ԁ       
+       ,( 2   2   Ѐ<           	     	pJ 4mesh 7 	         (       Ԁ       	       C) 2   2   Ѐ<      	          J 4mesh 7	          S)       Ԁ              e A   A          
+     
+@mE         $0H`l^D4mesh       ;e R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7 	         f       Ԁ       	       ~f 2   2   Ѐ<      	     
+     
+PJ 4mesh 7 	         f       Ԁ       
+       f 2   2   Ѐ<      
+     	     	J 4mesh 7	          g       Ԁ       	       t E   E   Ѐ       
+     
+`  D%           
+                          <   <          	     	K         $0H`l 4mesh        R   R   Ѐ<      	            J   $0H`l4mesh3         9 7 
+               Ԁ               P   P   Ѐ<           	     	J   	 $0H`l3          9 7
+ 
+               Ԁ       	        R   R   Ѐ<           	     	 J   $0H`l4mesh3          9 7 
+               Ԁ       	        P   P   Ѐ<      	          J   	 $0H`l3         9 7
+ 
+               Ԁ              & F   F                M/L         $0H`l
+=	K4mesh         <   <          
+     
+pL         $0H`l 4mesh         R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3         9 7         ؜        Ԁ       	       ~  P   P   Ѐ<      	     
+     
+J    $0H`l3          9 7                 Ԁ       
+       e  R   R   Ѐ<      	     
+     
+ J   $0H`l4mesh3          9 7         u        Ԁ       
+       ՞  P   P   Ѐ<      
+     	     	J   
+ $0H`l3         9 7                 Ԁ       	       T F   F          	     	˟S         $0H`l
+	/L
+L4mesh       = A   A          
+     
+T         $0H`lS4mesh       4	 E   E   Ѐ       
+     
+  D%           
+                         	 E   E   Ѐ       	     	   D%         
+                         F   F          	     	@[         $0H`l
+	/L
+T4mesh       $ 2   2   Ѐ<           	     	 J 4mesh 7
+ 
+         W% 2   2   Ј<           	     	 J 4mesh 7
+ 
+         )& 2   2   Ј<           	     	 J 4mesh 7
+ 
+         & 2   2   Ј<           	     	 J 4mesh 7
+ 
+         ( 2   2   Ј<           	     	 J 4mesh 7
+ 
+         ( 2   2   Ј<           	     	 J 4mesh 7
+ 
+         ) 2   2   Ј<           	     	 J 4mesh 7
+ 
+           A   A          
+     
+	)\         $0H`lA[4mesh       T A   A          	     	0b         $0H`l
+)\4mesh       = A   A          
+     
+)c         $0H`lb4mesh        A   A          	     	@+j         $0H`l
+c4mesh       t   E   E   Ѐ       
+     
+  D%           
+                            E   E   Ѐ       	     	P  D%         
+                          A   A          
+     
+Ikk         $0H`lj4mesh       t  E   E   Ѐ       
+     
+   D%           
+                           E   E   Ѐ       	     	`  D%         
+                        T A   A          	     	pK$r         $0H`l
+kk4mesh       = A   A          
+     
+is         $0H`l$r4mesh       t E   E   Ѐ       
+     
+   D%           
+	                         À E   E   Ѐ       	     	  D%         
+	                         A   A          	     	ky         $0H`l
+s4mesh       T A   A          	     	f         $0H`l
+s4mesh       : 2   2   Ѐ<      
+     	     	J 4mesh 7          r;       Ԁ       	       ; 2   2   Ѐ<      	     
+     
+@J 4mesh 7           <       Ԁ       
+       = A   A          
+     
+PN         $0H`lf4mesh       ;= R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7          >       Ԁ       	       ~> 2   2   Ѐ<      	     
+     
+`J 4mesh 7          >       Ԁ       
+       > 2   2   Ѐ<      
+     	     	J 4mesh 7          u?       Ԁ       	       4	 E   E   Ѐ       
      
-`  D%           
+p  D%           
 
-                         	 E   E   Ѐ       	     	@  D%         
-
-                        < A   A          	     	Pfj         $0H`l[4mesh       ZV  2   2   Ѐ<      
-     	     	`J 4mesh 7          V        Ԁ       	       qW  2   2   Ѐ<      	     
-     
-pJ 4mesh 7          W        Ԁ       
-       X  A   A          
-     
-'k         $0H`l)c4mesh       X  R   R   Ѐ<      
-     	     	p J   $0H`l4mesh3          9 7         Y        Ԁ       	       Y  2   2   Ѐ<      	     
-     
-J 4mesh 7          Z        Ԁ       
-       ]Z  2   2   Ѐ<      
-     	     	J 4mesh 7          Z        Ԁ       	       w <   <          	     	Gr         $0H`l 4mesh       x R   R   Ѐ<      	     
-     
- J   $0H`l4mesh3          9 7         x       Ԁ       
-       7y P   P   Ѐ<      
-     	     	J    $0H`l3          9 7         y       Ԁ       	       5z R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
-     
-J    $0H`l3         9 7         {       Ԁ       
-       ! A   A          
-     
-
-r         $0H`lGr4mesh        A   A          	     	y         $0H`lr4mesh       t   E   E   Ѐ       
-     
-  D%           
-                            E   E   Ѐ       	     	  D%         
-                          A   A          
-     
-*z         $0H`lGr4mesh       t  E   E   Ѐ       
-     
-  D%   	        
-                           E   E   Ѐ       	     	  D% 	        
-                        Kv 2   2   Ѐ<      	     
-     
- J 4mesh 7          [v       Ԁ       
-       v 2   2   Ѐ<      
-     	     	J 4mesh 7          Bw       Ԁ       	       w A   A          	     	 Ɖ         $0H`lz4mesh       x R   R   Ѐ<      	     
-     
- J   $0H`l4mesh3          9 7         x       Ԁ       
-       ?y 2   2   Ѐ<      
-     	     	J 4mesh 7          y       Ԁ       	       | R   R   Ј<      	     
-     
- J   $0H`l4mesh3          9 7         |       Ԁ       
-       o} 2   2   Ѐ<      	     
-     
- J 4mesh 7          }       Ԁ       
-       u <   <          
-     
-0J         $0H`l 4mesh       u R   R   Ѐ<      
-     	     	  J   $0H`l4mesh3          9 7         v R   R   Ј<      
-     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       ax P   P   Ѐ<      	     
-     
-@J    $0H`l3          9 7         qx       Ԁ       
-       Qy R   R   Ѐ<      	     
-     
-P J   $0H`l4mesh3          9 7         ay       Ԁ       
-       y P   P   Ѐ<      
-     	     	0J    $0H`l3         9 7         pz       Ԁ       	       t E   E   Ѐ       
-     
-`  D%   
-        
-                         À E   E   Ѐ       	     	@  D% 
-        
-     l                     A   A          	     	P         $0H`l4mesh    	     A   A          
-     
-pj(         $0H`l4mesh    	   _ A   A          	     	`         $0H`l(4mesh    	   u A   A          
-     
-ɑ         $0H`l4mesh    	   4	 E   E   Ѐ       
+                          <   <          	     	         $0H`l 4mesh        R   R   Ѐ<      	     
      
-  D%           
-                      	   	 E   E   Ѐ       	     	p  D%         
-     l                	   s 2   2   Ѐ<      	     
+ J   $0H`l4mesh3          9 7                Ԁ       
+        P   P   Ѐ<      
+     	     	J    $0H`l3          9 7                Ԁ       	        R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7          R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7                Ԁ       	       q P   P   Ѐ<      	     
      
-J 4mesh 7       	          Ԁ       
-    	    2   2   Ѐ<      
-     	     	J 4mesh 7       	     2   2   Ј<      
-     	     	J 4mesh 7       	          Ԁ       	    	   4 A   A          	     	&U         $0H`lɑ4mesh    	   O R   R   Ѐ<      	     
+J    $0H`l3         9 7                Ԁ       
+    	     A   A          
      
- J   $0H`l4mesh3          9 7      	   _       Ԁ       
-    	    2   2   Ѐ<      
-     	     	J 4mesh 7       	   a       Ԁ       	    	    2   2   Ѐ<      	     
+         $0H`l 4mesh    	   L A   A          	     	ˠ         $0H`l4mesh    	   Q A   A          
      
-J 4mesh 7       	          Ԁ       
-    
\ No newline at end of file
+餑         $0H`l4mesh    	    A   A          	     	 A         $0H`l4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,373 +1,357 @@
-ò            i       *  <   <          
+ò            i       ?  <   <          	     	  k?          $0H`l 4mesh        ?  R   R   Ѐ<      	     
      
-  *          $0H`l 4mesh        =  R   R   Ѐ<      
-     	     	   J   $0H`l4mesh3          9 7          M        Ԁ       	          P   P   Ѐ<      	     
+   J   $0H`l4mesh3          9 7          @  R   R   Ј<      	     
      
- J     $0H`l3          9 7          \        Ԁ       
-          R   R   Ѐ<      	     
+   J   $0H`l4mesh3          9 7          B  R   R   Ј<      	     
      
-   J   $0H`l4mesh3          9 7          ^        Ԁ       
-          P   P   Ѐ<      
-     	     	 J     $0H`l3         9 7                  Ԁ       	          A   A          	     	            $0H`l  4mesh                Ԁ                 P   P   Ѐ<           	     	0 J    $0H`l3         9 7            R   R   Ѐ<           	     	@  J   $0H`l4mesh3         9 7                  Ԁ               > F   F          	     	P ƛ         $0H`l
-  ] 4mesh        J A   A          
+   J   $0H`l4mesh3          9 7          AC  R   R   Ј<      	     
      
-0 J         $0H`l 4mesh        ^= F   F          	     	` <         $0H`l
- 4mesh       *  A   A          
+   J   $0H`l4mesh3          9 7          cD  R   R   Ј<      	     
      
-@ jF         $0H`l =4mesh       > F   F          	     	p          $0H`l
- F4mesh       J A   A          
+   J   $0H`l4mesh3          9 7          aE  R   R   Ј<      	     
      
-P          $0H`l 4mesh       ^= F   F          	     	 &         $0H`l
- P4mesh       *  A   A          
+   J   $0H`l4mesh3          9 7          _F  R   R   Ј<      	     
      
-`          $0H`l 4mesh         L   L          
-p      
+   J   $0H`l4mesh3          9 7            A   A          
+     
+           $0H`l ? 4mesh          R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7                  Ԁ       	        $  P   P   Ѐ<      	     
+     
+  J     $0H`l3          9 7                  Ԁ       
+          R   R   Ѐ<      	     
+     
+0  J   $0H`l4mesh3          9 7            R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7            R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7            R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7          8  R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7          -  R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7          a  R   R   Ј<      	     
+     
+0  J   $0H`l4mesh3          9 7          
+        Ԁ               k 2   2   Ѐ<      
+     	     	  J 4mesh 7           k       Ԁ       	        ck 2   2   Ѐ<      	     
+     
+@ J 4mesh 7           k       Ԁ       
+         <   <          	     	0          $0H`l 4mesh         R   R   Ѐ<      	     
+     
+P  J   $0H`l4mesh3          9 7          A R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          H R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          = R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          D R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          K R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          [ R   R   Ј<      	     
+     
+P  J   $0H`l4mesh3          9 7          P R   R   Ѐ<           	     	@  J   $0H`l4mesh3          9 7          o       Ԁ               H R   R   Ѐ<      	     
+     
+`  J   $0H`l4mesh3          9 7          J R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          JK R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          cL R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          M R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          N R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          O R   R   Ј<      	     
+     
+`  J   $0H`l4mesh3          9 7          P 2   2   Ѐ<      	     
+     
+p J 4mesh 7            3Q       Ԁ       
+        g 2   2   Ѐ<           	     	P J 4mesh 7           h       Ԁ                A   A          
+     
+          $0H`l4mesh        č R   R   Ѐ<      
+     	     	`  J   $0H`l4mesh3          9 7          ԍ       Ԁ       	        " 2   2   Ѐ<      	     
+     
+ J 4mesh 7                  Ԁ       
+        K 2   2   Ѐ<      
+     	     	p J 4mesh 7           [       Ԁ       	         <   <          	     	          $0H`l 4mesh        6 R   R   Ѐ<      	     
+     
+  J   $0H`l4mesh3          9 7          F R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          z  R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          ! R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          " R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          # R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          $ R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7          p7 R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7          8       Ԁ              {  R   R   Ѐ<      	     
+     
+  J   $0H`l4mesh3          9 7         |  R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7         }  R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7         ~  R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7           R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7           R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7           R   R   Ј<      	     
+     
+  J   $0H`l4mesh3          9 7           2   2   Ѐ<      	     
+     
+ J 4mesh 7                   Ԁ       
+       o  2   2   Ѐ<           	     	 J 4mesh 7          J  2   2   Ј<           	     	 J 4mesh 7          A        Ԁ                A   A          
+     
+ 1         $0H`l4mesh         R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3          9 7                 Ԁ       	         2   2   Ѐ<      	     
+     
+ J 4mesh 7                  Ԁ       
+       "  2   2   Ѐ<      
+     	     	 J 4mesh 7          2        Ԁ       	       U       Ԁ              V P   P   Ѐ<           	     	 J    $0H`l3          9 7         zW R   R   Ѐ<           	     	  J   $0H`l4mesh3          9 7         X       Ԁ              d <   <          
+     
+          $0H`l 4mesh        A   A          	     	 7         $0H`l4mesh       > R   R   Ѐ<      	     
+     
+  J   $0H`l4mesh3          9 7                Ԁ       
+        P   P   Ѐ<      
+     	     	J    $0H`l3         9 7                Ԁ       	        R   R   Ѐ<      
+     	     	  J   $0H`l4mesh3         9 7                Ԁ       	       	 P   P   Ѐ<      	     
+     
+J    $0H`l3         9 7                Ԁ       
+       (#  L   L          
+      
                 
 
 
-         L   L          	      
+       T$  L   L          	0     
                
 
 
-       3  E   E   Ѐ       	     	   D%                     
-           U  ?   ?   Ѐ<      	     
+         A   A          
+     
+0	         $0H`l84mesh       U F   F          	     	@%         $0H`l
+4mesh        A   A          
+     
+@)!'         $0H`l%4mesh       $ F   F          	     	P+z-         $0H`l
+R&!'4mesh           L   L          
+P     
+                
+
+
+       ,  L   L          	`     
+               
+
+
+         E   E   Ѐ       	     	p  D%                     
+             ?   ?   Ѐ<      	     
      
-   E                      
-                  Ԁ       
-         ?   ?   Ѐ<           	     	   E                   
-          "        Ԁ              q#  L   L   <      
+`  E                      
+          v        Ԁ       
+       	  ?   ?   Ѐ<           	     	  E                   
+                  Ԁ                L   L   <      
      	     
-                      
+                     
      
 
-       #        Ԁ       	       #  `   `   <      	     
-           
+               Ԁ       	         `   `   <      	     
+     p     
           E  0    @  
 
- 	                              $        Ԁ       
-       %  `   `   <           	           
+ 	                                      Ԁ       
+         `   `   <           	          
          E  0    @  
 
- 	                              g7  L   L          	                     
-
-       7  L   L   <      	     
-           
-                 
-
-     
-       O8        Ԁ       
-       9  L   L   <           	           
-                
-
-     
-       9  L   L          
-                     
-
-       E@        Ԁ              A  `   `   <      
-     	     
-               E  0    @  
-
- 	                              A        Ԁ       	       qW       Ԁ              W ,   ,   Ѐ<      
-     	     	  F                W       Ԁ       	       > F   F          	     	 F &         $0H`l
- 4mesh         E   E   Ѐ       
-     
-   D%           
-                         X E   E   Ѐ       	     	0  D%         
-                        J A   A          
-     
- )&         $0H`l  &4mesh        
- E   E   Ѐ       
-     
-   D%           
-                         X
- E   E   Ѐ       	     	@  D%         
-                        ^= F   F          	     	Pf-         $0H`l
- *&&4mesh       *  A   A          
-     
- -         $0H`l -4mesh        E   E   Ѐ       
-     
-   D%           
-                          E   E   Ѐ       	     	`  D%         
-                        > F   F          	     	pb5         $0H`l
- -4.4mesh       J A   A          
-     
-
-l5         $0H`l b54mesh       v	 E   E   Ѐ       	     	  D%              d       
-           	 ?   ?   Ѐ<      	     
-     
-   E                      
-          A	       Ԁ       
-       	 ?   ?   Ѐ<           	     	  E                   
-          6	 `   `   <      	     
-     0     
+ 	                              n  `   `   <      	     
+          
           E  0   @  
 
- 	                              	 `   `   <      	     
-     0     
+ 	                                `   `   <      	     
+          
           E  0   @  
 
- 	                              X	       Ԁ       
-       	 `   `   <           	          
+ 	                                      Ԁ       
+       e  `   `   <           	          
          E  0   @  
 
- 	                              	 `   `   <      	     
-     @     
+ 	                              /  `   `   <      	     
+          
           E  0   @  
 
- 	                              	 `   `   <      	     
-     @     
+ 	                              '  `   `   <      	     
+          
           E  0   @  
 
- 	                              	       Ԁ       
-       U	 `   `   <      	     
-     P     
-          E  0   @  
-
- 	                              	 `   `   <      	     
-     P     
+ 	                                      Ԁ       
+         `   `   <           	          
+         E  0   @  
+
+ 	                                A   A          
+     
+I.         $0H`lz-4mesh       U F   F          	     	K5         $0H`l
+-.4mesh         `   `   <      	     
+          
           E  0   @  
 
- 	                              7	 `   `   <      	     
-     P     
+ 	                               `   `   <      	     
+          
           E  0   @  
 
- 	                              	       Ԁ       
-       	 `   `   <           	          
-         E  0   @  
-
- 	                              	 `   `   <           	          
+ 	                              T       Ԁ       
+        `   `   <           	          
          E  0   @  
 
- 	                              :	 `   `   <           	          
-         E  0   @  
-
- 	                              	       Ԁ              	 `   `   <           	          
-         E  0   @  
-
- 	                              	 `   `   <      
-     	     
-              E  0   @  
-
- 	                              	       Ԁ       	       	       Ԁ              T	 `   `   <      
-     	     
-              E  0   @  
-
- 	                              d	       Ԁ       	        
-       Ԁ              
- `   `   <      
-     	     
-              E  0   @  
-
- 	                              
-       Ԁ       	       ^= F   F          	     	 =         $0H`l
- l554mesh           `   `   <      	     
-     `     
-          E  0   @  
-
- 	                                       Ԁ       
-       l  `   `   <           	          
-         E  0   @  
-
- 	                              *  A   A          
+ 	                               A   A          
      
-p*=         $0H`l =4mesh       
-        Ԁ                `   `   <      
-     	     
-               E  0   @  
-
- 	                                      Ԁ       	       > F   F          	     	0ƤD         $0H`l
- l5v=4mesh         `   `   <      	     
-          
-          E  0   @  
-
- 	                                     Ԁ       
-        `   `   <           	     @     
-         E  0   @  
-
- 	                              j ,   ,   Ѐ<           	     	P  F      
-          F ,   ,   Ј<           	     	P  F      
-           A   A          
+ic6         $0H`l54mesh       }       Ԁ               6   6   Ѐ<      
+     	     	  F                               Ԁ       	        2   2   Ѐ<           	     	 J 4mesh 7          o       Ԁ               2   2   Ѐ<           	     	 J 4mesh 7                 Ԁ                  E   E   Ѐ       
      
-JD         $0H`l D4mesh       ئ 2   2   Ѐ<      
-     	     	`J 4mesh 7                 Ԁ       	       6 2   2   Ѐ<      	     
+  D%           
+                           A   A          
      
-J 4mesh 7           2   2   Ј<      	     
+>         $0H`l54mesh          E   E   Ѐ       
      
-J 4mesh 7                 Ԁ       
-       V= A   A          	     	pEL         $0H`lE4mesh       x= R   R   Ѐ<      	     
+  D%           
+                         8! E   E   Ѐ       	     	0  D%         
+     h                   R 2   2   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         =>       Ԁ       
-       ? P   P   Ј<      
-     	     	J    $0H`l3         9 7         ?       Ԁ       	       @ R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3         9 7         @       Ԁ       	       A P   P   Ѐ<      	     
+ J 4mesh 7          ]S       Ԁ       
+       T 2   2   Ј<      
+     	     	@J 4mesh 7          T       Ԁ       	       RU A   A          	     	P]D         $0H`l>4mesh       }U R   R   Ѐ<      	     
      
-J    $0H`l3         9 7         A       Ԁ       
-           E   E   Ѐ       
+ J   $0H`l4mesh3          9 7         V R   R   Ј<      	     
      
-  D%           
-                         *,  A   A          
+ J   $0H`l4mesh3          9 7         W R   R   Ј<      	     
      
-jwL         $0H`lFL4mesh          E   E   Ѐ       
+ J   $0H`l4mesh3          9 7         X R   R   Ј<      	     
      
-  D%           
-                         ! ?   ?   Ѐ<      
-     	     	  E        
-     d                 !       Ԁ       	       j! `   `   <      	     
-           
-          E  0   @  
-
- 	                              ?"       Ԁ       
-       # `   `   <           	          
-         E  0   @  
-
- 	                              $ E   E   Ѐ       	     	  D%         
-                        ~% `   `   <           	          
-         E  0   @  
-
- 	                              ( `   `   <           	          
-         E  0   @  
-
- 	                              '+ `   `   <           	          
-         E  0   @  
-
- 	                              - `   `   <           	          
-         E  0   @  
-
- 	                              6 `   `   <           	          
-         E  0   @  
-
- 	                              I `   `   <           	          
-         E  0   @  
-
- 	                              > F   F          	     	S         $0H`l
-EwL4mesh         `   `   <      	     
-          
-          E  0   @  
-
- 	                              7 `   `   <      	     
-          
-          E  0   @  
-
- 	                              \ `   `   <      	     
-          
-          E  0   @  
-
- 	                              1       Ԁ       
-        `   `   <           	          
-         E  0   @  
-
- 	                              o `   `   <           	          
-         E  0   @  
-
- 	                              Z `   `   <           	          
-         E  0   @  
-
- 	                              a `   `   <           	          
-         E  0   @  
-
- 	                               `   `   <           	          
-         E  0   @  
-
- 	                               2   2   Ѐ<           	     	J 4mesh 7           2   2   Ј<           	     	J 4mesh 7          y 2   2   Ј<           	     	J 4mesh 7          B 2   2   Ј<           	     	J 4mesh 7          J 2   2   Ј<           	     	J 4mesh 7          I 2   2   Ј<           	     	J 4mesh 7          $ 2   2   Ј<           	     	J 4mesh 7          J A   A          
+ J   $0H`l4mesh3          9 7         Y R   R   Ј<      	     
      
- DT         $0H`lS4mesh        6   6   Ѐ<      
-     	     	   F                               Ԁ       	        6   6   Ј<      
-     	     	   F                               Ԁ       	         E   E   Ѐ       
+ J   $0H`l4mesh3          9 7         Z R   R   Ј<      	     
      
-0  D%           
-	                         8 E   E   Ѐ       	     	  D%         
-	                        V= A   A          	     	 &[         $0H`lDT4mesh       *X  A   A          
+ J   $0H`l4mesh3          9 7         %\ R   R   Ј<      	     
      
-@[         $0H`l[4mesh       6 A   A          	     	0F)c         $0H`l[4mesh       J A   A          
+ J   $0H`l4mesh3          9 7         J R   R   Ј<           	     	` J   $0H`l4mesh3          9 7         i       Ԁ              R R   R   Ѐ<      	     
      
-Pʆc         $0H`l)c4mesh       	 E   E   Ѐ       
+  J   $0H`l4mesh3          9 7         G R   R   Ј<      	     
      
-`  D%           
-
-                         	 E   E   Ѐ       	     	@  D%         
-
-                        V  2   2   Ѐ<      
-     	     	`J 4mesh 7          V        Ԁ       	       W  2   2   Ѐ<      	     
+  J   $0H`l4mesh3          9 7         { R   R   Ј<      	     
      
-pJ 4mesh 7          W        Ԁ       
-       *X  A   A          
+  J   $0H`l4mesh3          9 7          R   R   Ј<      	     
      
-'k         $0H`l)c4mesh       EY  R   R   Ѐ<      
-     	     	p J   $0H`l4mesh3          9 7         UY        Ԁ       	       Y  2   2   Ѐ<      	     
+  J   $0H`l4mesh3          9 7         w R   R   Ј<      	     
      
-J 4mesh 7          <Z        Ԁ       
-       Z  2   2   Ѐ<      
-     	     	J 4mesh 7          Z        Ԁ       	       .x <   <          	     	Gr         $0H`l 4mesh       Px R   R   Ѐ<      	     
+  J   $0H`l4mesh3          9 7         u R   R   Ј<      	     
      
- J   $0H`l4mesh3          9 7         y       Ԁ       
-       y P   P   Ѐ<      
-     	     	J    $0H`l3          9 7         y       Ԁ       	       z R   R   Ѐ<      
-     	     	 J   $0H`l4mesh3          9 7         z       Ԁ       	       { P   P   Ѐ<      	     
+  J   $0H`l4mesh3          9 7          R   R   Ј<      	     
      
-J    $0H`l3         9 7         {       Ԁ       
-       J! A   A          
+  J   $0H`l4mesh3          9 7          2   2   Ѐ<      	     
      
-
-r         $0H`lGr4mesh           E   E   Ѐ       
+0J 4mesh 7           I       Ԁ       
+       ( 2   2   Ѐ<           	     	pJ 4mesh 7 	         )       Ԁ              d A   A          
      
-  D%           
-                         8  E   E   Ѐ       	     	  D%         
-                        *  A   A          
+@mE         $0H`l^D4mesh       e R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7 	        e       Ԁ       	       "f 2   2   Ѐ<      	     
      
-*z         $0H`lGr4mesh          E   E   Ѐ       
+PJ 4mesh 7 	         f       Ԁ       
+       Tg 2   2   Ѐ<      
+     	     	J 4mesh 7	          dg       Ԁ       	         E   E   Ѐ       
      
-  D%   	        
-                         8! E   E   Ѐ       	     	  D% 	        
-                        u 2   2   Ѐ<      	     
+`  D%           
+                                Ԁ               P   P   Ѐ<           	     	J   	 $0H`l3          9 7
+ 
+         R   R   Ѐ<           	     	 J   $0H`l4mesh3          9 7 
+               Ԁ                <   <          
      
- J 4mesh 7          v       Ԁ       
-       w 2   2   Ѐ<      
-     	     	J 4mesh 7          w       Ԁ       	       6x A   A          	     	 Ɖ         $0H`lz4mesh       Xx R   R   Ѐ<      	     
+pL         $0H`l 4mesh         R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3         9 7                 Ԁ       	         P   P   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         y 2   2   Ѐ<      
-     	     	J 4mesh 7          y       Ԁ       	       z R   R   Ј<      	     
+J    $0H`l3          9 7                 Ԁ       
+       ݝ  R   R   Ѐ<      	     
      
- J   $0H`l4mesh3          9 7         -{ R   R   Ј<      	     
+ J   $0H`l4mesh3          9 7                 Ԁ       
+       Z  P   P   Ѐ<      
+     	     	J   
+ $0H`l3         9 7         j        Ԁ       	       U F   F          	     	˟S         $0H`l
+	/L
+L4mesh       < A   A          
      
- J   $0H`l4mesh3          9 7         +| R   R   Ј<      	     
+T         $0H`lS4mesh       	 E   E   Ѐ       
      
- J   $0H`l4mesh3          9 7         |       Ԁ       
-       } 2   2   Ѐ<      	     
+  D%           
+                         	 E   E   Ѐ       	     	   D%         
+                        $ F   F          	     	@[         $0H`l
+	/L
+T4mesh       $ 2   2   Ѐ<           	     	 J 4mesh 7
+ 
+         % 2   2   Ј<           	     	 J 4mesh 7
+ 
+         & 2   2   Ј<           	     	 J 4mesh 7
+ 
+         X' 2   2   Ј<           	     	 J 4mesh 7
+ 
+         `( 2   2   Ј<           	     	 J 4mesh 7
+ 
+         2) 2   2   Ј<           	     	 J 4mesh 7
+ 
+         * 2   2   Ј<           	     	 J 4mesh 7
+ 
+           A   A          
      
- J 4mesh 7          }       Ԁ       
-       Ju <   <          
+	)\         $0H`lA[4mesh       T A   A          	     	0b         $0H`l
+)\4mesh       < A   A          
      
-0J         $0H`l 4mesh       w R   R   Ј<      
-     	     	  J   $0H`l4mesh3          9 7         w       Ԁ       	       w P   P   Ѐ<      	     
+)c         $0H`lb4mesh        A   A          	     	@+j         $0H`l
+c4mesh           E   E   Ѐ       
      
-@J    $0H`l3          9 7         x       Ԁ       
-       x R   R   Ѐ<      	     
+  D%           
+                         8  E   E   Ѐ       	     	P  D%         
+                          A   A          
      
-P J   $0H`l4mesh3          9 7         y       Ԁ       
-       4z P   P   Ѐ<      
-     	     	0J    $0H`l3         9 7         Dz       Ԁ       	         E   E   Ѐ       
+Ikk         $0H`lj4mesh          E   E   Ѐ       
      
-`  D%   
-        
-                         8 E   E   Ѐ       	     	@  D% 
-        
-     l                   V A   A          	     	P         $0H`l4mesh    	   *  A   A          
+   D%           
+                         8! E   E   Ѐ       	     	`  D%         
+                        T A   A          	     	pK$r         $0H`l
+kk4mesh       < A   A          
      
-pj(         $0H`l4mesh    	   Ju A   A          
+is         $0H`l$r4mesh         E   E   Ѐ       
      
-ɑ         $0H`l4mesh    	   	 E   E   Ѐ       
+   D%           
+	                         8 E   E   Ѐ       	     	  D%         
+	                         A   A          	     	ky         $0H`l
+s4mesh         A   A          
+     
+0z         $0H`ly4mesh       T A   A          	     	f         $0H`l
+s4mesh       6; 2   2   Ѐ<      
+     	     	J 4mesh 7          F;       Ԁ       	       ; 2   2   Ѐ<      	     
+     
+@J 4mesh 7          -<       Ԁ       
+       < A   A          
+     
+PN         $0H`lf4mesh       = R   R   Ѐ<      
+     	     	 J   $0H`l4mesh3          9 7         =       Ԁ       	       "> 2   2   Ѐ<      	     
+     
+`J 4mesh 7          >       Ԁ       
+       9? 2   2   Ѐ<      
+     	     	J 4mesh 7          I?       Ԁ       	       	 E   E   Ѐ       
+     
+p  D%           
+
+                          <   <          	     	         $0H`l 4mesh       6 R   R   Ѐ<      	     
      
-  D%           
-                      	   	 E   E   Ѐ       	     	p  D%         
-     l                	    2   2   Ѐ<      	     
+ J   $0H`l4mesh3          9 7                Ԁ       
+        P   P   Ѐ<      
+     	     	J    $0H`l3          9 7                Ԁ       	        R   R   Ј<      
+     	     	  J   $0H`l4mesh3          9 7                Ԁ       	        P   P   Ѐ<      	     
      
-J 4mesh 7       	          Ԁ       
-    	     2   2   Ј<      
-     	     	J 4mesh 7       	           Ԁ       	    	    A   A          	     	&U         $0H`lɑ4mesh    	    R   R   Ѐ<      	     
+J    $0H`l3         9 7                Ԁ       
+    	     A   A          
      
- J   $0H`l4mesh3          9 7      	          Ԁ       
-    	   $ 2   2   Ѐ<      
-     	     	J 4mesh 7       	   4       Ԁ       	    	    2   2   Ѐ<      	     
+         $0H`l 4mesh    	   L A   A          	     	ˠ         $0H`l4mesh    	   P A   A          
      
-J 4mesh 7       	          Ԁ       
-    
\ No newline at end of file
+餑         $0H`l4mesh    	    A   A          	     	 A         $0H`l4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression.cc ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression.cc
--- ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -127,11 +127,11 @@
   mesh.SetMacType ("RandomStart", TimeValue (Seconds (0.1)));
   mesh.SetNumberOfInterfaces (1);
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
-  // Two devices, four streams per mesh device
+  // Two devices, nine streams per mesh device
   streamsUsed += mesh.AssignStreams (meshDevices, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
 
   // 3. setup TCP/IP
   InternetStackHelper internetStack;
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,24 +1,25 @@
-ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                 J     $0H`l3          9 7          o        Ԁ               `  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          p        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          ~       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh        j A   A               0 j         $0H`l 4mesh         A   A               @ ?         $0H`l 4mesh       JO A   A               @          $0H`l @4mesh        A   A               P          $0H`l 4mesh       j A   A               P 2         $0H`l 4mesh         L   L          `                      
+ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               JO A   A                 JO         $0H`l  4mesh        #j A   A               0 i         $0H`l O4mesh        j A   A               0 j         $0H`l j4mesh         A   A               @ 
+         $0H`l 4mesh       JO A   A               @          $0H`l 4mesh       #j A   A               P          $0H`l 4mesh       j A   A               P 2         $0H`l 4mesh         L   L          `                      
 
-         L   L          `                     
+         L   L          `                     
 
-         E   E   Ѐ            p   D%                                      ?   ?   Ѐ<                p   E                                        Ԁ              h  L   L   <                                       
+          E   E   Ѐ            p   D%                                    !  ?   ?   Ѐ<                p   E                                !        Ԁ              #"  L   L   <                                       
      
-       $        Ԁ              S         <                                E      @  
+       "        Ԁ              )$        <                                E      @  
 
- 	 l                                                                                                             c         Ԁ              {C  L   L                                
+ 	 l                                                                                                             9$        Ԁ              QG  L   L                                
 
-       D  L   L   <                                       
+       |H  L   L   <                                       
      
-       D        Ԁ              E        <                                E      @  
-
- 	 l                                                                                                             F        Ԁ              G  L   L                               
+       H        Ԁ              I  L   L                               
 
-       T        <                                E     @  
+       J        <                                E      @  
+
+ 	 l                                                                                                             UK        Ԁ              T        <                                E     @  
 
  	 l                                                                                                             d        Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ                A   A                         $0H`l 34mesh       JO A   A                         $0H`l 4mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ                A   A                M         $0H`l 34mesh       JO A   A                         $0H`l M4mesh              <                                E     @  
 
  	 l                                                                                                                    Ԁ                     <                                E     @  
 
@@ -60,7 +61,7 @@
 
  	 l                                                                                                             4e       Ԁ              e       <                `               E     @  
 
- 	 l                                                                                                             {f       Ԁ               A   A               p#'         $0H`l 4mesh       j A   A               pt'         $0H`l #'4mesh       t(	       <                               E     @  
+ 	 l                                                                                                             {f       Ԁ              #j A   A               p3&         $0H`l 4mesh       j A   A               pt'         $0H`l &4mesh       t(	       <                               E     @  
 
  	 l                                                                                                             (	       Ԁ              (	       <                               E     @  
 
@@ -104,8 +105,8 @@
 
  	 l                                                                                                                     Ԁ              C        <                               E     @  
 
- 	 l                                                                                                                     Ԁ                A   A                +.         $0H`l u'4mesh       JO A   A                
-/         $0H`l .4mesh       ,       <                0               E     @  
+ 	 l                                                                                                                     Ԁ                A   A                S.         $0H`l u'4mesh       JO A   A                
+/         $0H`l .4mesh       ,       <                0               E     @  
 
  	 l                                                                                                             <       Ԁ                     <                0               E     @  
 
@@ -145,7 +146,7 @@
 
  	 l                                                                                                             d       Ԁ              ;e       <                               E     @  
 
- 	 l                                                                                                             e       Ԁ               A   A               Ke6         $0H`l /4mesh       j A   A               *6         $0H`l e64mesh       $(	       <                               E      @  
+ 	 l                                                                                                             e       Ԁ              #j A   A               s06         $0H`l /4mesh       j A   A               *6         $0H`l 064mesh       $(	       <                               E      @  
 
  	 l                                                                                                             4(	       Ԁ              (	       <                               E      @  
 
@@ -189,7 +190,7 @@
 
  	 l                                                                                                                     Ԁ                      <                p               E   )  @  
 
- 	 l                                                                                                                     Ԁ                A   A               k>         $0H`l 64mesh       JO A   A               JX>         $0H`l >4mesh              <                               E   *  @  
+ 	 l                                                                                                                     Ԁ                A   A               =         $0H`l 64mesh       JO A   A               JX>         $0H`l =4mesh              <                               E   *  @  
 
  	 l                                                                                                                     Ԁ              W       <                               E   *  @  
 
@@ -229,7 +230,7 @@
 
  	 l                                                                                                             d       Ԁ              e       <                                E   3  @  
 
- 	 l                                                                                                             e       Ԁ               A   A               0E         $0H`l X>4mesh       j A   A               0jE         $0H`l E4mesh       '	       <                @               E   4  @  
+ 	 l                                                                                                             e       Ԁ              #j A   A               0rE         $0H`l X>4mesh       j A   A               0jE         $0H`l sE4mesh       '	       <                @               E   4  @  
 
  	 l                                                                                                             (	       Ԁ              c(	       <                @               E   4  @  
 
@@ -273,7 +274,7 @@
 
  	 l                                                                                                                     Ԁ                      <                               E   =  @  
 
- 	 l                                                                                                             [        Ԁ                A   A               HM         $0H`l E4mesh       JO A   A               M         $0H`l IM4mesh       Ԇ       <                               E   >  @  
+ 	 l                                                                                                             [        Ԁ                A   A               M         $0H`l E4mesh       JO A   A               M         $0H`l M4mesh       Ԇ       <                               E   >  @  
 
  	 l                                                                                                                    Ԁ              ;       <                               E   >  @  
 
@@ -313,7 +314,7 @@
 
  	 l                                                                                                             d       Ԁ              e       <                               E   G  @  
 
- 	 l                                                                                                             se       Ԁ               A   A               T         $0H`l M4mesh       j A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
+ 	 l                                                                                                             se       Ԁ              #j A   A               T         $0H`l M4mesh       j A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
 
  	 l                                                                                                              (	       Ԁ              W(	       <                               E   H  @  
 
@@ -357,7 +358,7 @@
 
  	 l                                                                                                                     Ԁ                      <                0               E   Q  @  
 
- 	 l                                                                                                             S        Ԁ                A   A               @\         $0H`l <U4mesh       JO A   A               @\         $0H`l \4mesh       І       <                P               E   R  @  
+ 	 l                                                                                                             S        Ԁ                A   A               @V\         $0H`l <U4mesh       JO A   A               @\         $0H`l V\4mesh       І       <                P               E   R  @  
 
  	 l                                                                                                                    Ԁ              7       <                P               E   R  @  
 
@@ -397,7 +398,7 @@
 
  	 l                                                                                                             d       Ԁ              e       <                               E   [  @  
 
- 	 l                                                                                                             se       Ԁ               A   A               ,d         $0H`l \4mesh       j A   A               }d         $0H`l ,d4mesh       '	       <                                E   \  @  
+ 	 l                                                                                                             se       Ԁ              #j A   A               3c         $0H`l \4mesh       j A   A               }d         $0H`l c4mesh       '	       <                                E   \  @  
 
  	 l                                                                                                              (	       Ԁ              W(	       <                                E   \  @  
 
@@ -441,8 +442,8 @@
 
  	 l                                                                                                                     Ԁ                      <                               E   e  @  
 
- 	 l                                                                                                             S        Ԁ                A   A               +k         $0H`l ~d4mesh       JO A   A               
-l         $0H`l k4mesh       І       <                               E   f  @  
+ 	 l                                                                                                             S        Ԁ                A   A               Sk         $0H`l ~d4mesh       JO A   A               
+l         $0H`l k4mesh       І       <                               E   f  @  
 
  	 l                                                                                                                    Ԁ              7       <                               E   f  @  
 
@@ -482,7 +483,7 @@
 
  	 l                                                                                                             d       Ԁ              e       <                P               E   o  @  
 
- 	 l                                                                                                             se       Ԁ               A   A               `Kns         $0H`l l4mesh       j A   A               `*s         $0H`l ns4mesh       '	       <                p               E   p  @  
+ 	 l                                                                                                             se       Ԁ              #j A   A               `s9s         $0H`l l4mesh       j A   A               `*s         $0H`l 9s4mesh       '	       <                p               E   p  @  
 
  	 l                                                                                                              (	       Ԁ              W(	       <                p               E   p  @  
 
@@ -526,7 +527,7 @@
 
  	 l                                                                                                                     Ԁ                      <                 	               E   y  @  
 
- 	 l                                                                                                             S        Ԁ                A   A               	k{         $0H`l s4mesh       JO A   A               	Ja{         $0H`l {4mesh       І       <                 	               E   z  @  
+ 	 l                                                                                                             S        Ԁ                A   A               	z         $0H`l s4mesh       JO A   A               	Ja{         $0H`l z4mesh       І       <                 	               E   z  @  
 
  	 l                                                                                                                    Ԁ              7       <                 	               E   z  @  
 
@@ -566,7 +567,7 @@
 
  	 l                                                                                                             d       Ԁ              e       <                	               E     @  
 
- 	 l                                                                                                             se       Ԁ               A   A               	         $0H`l a{4mesh       j A   A               	j         $0H`l 4mesh       '	       <                	               E     @  
+ 	 l                                                                                                             se       Ԁ              #j A   A               	{         $0H`l a{4mesh       j A   A               	j         $0H`l |4mesh       '	       <                	               E     @  
 
  	 l                                                                                                              (	       Ԁ              W(	       <                	               E     @  
 
@@ -624,9 +625,9 @@
  	 l                                                                                                          	           Ԁ           	           <                `
                E     @  
 
- 	 l                                                                                                          	   S        Ԁ           	     A   A               p
-Q         $0H`l 4mesh    	   JO A   A               p
-         $0H`l R4mesh    	   І       <                
+ 	 l                                                                                                          	   S        Ԁ           	     A   A               p
+         $0H`l 4mesh    	   JO A   A               p
+         $0H`l 4mesh    	   І       <                
                E     @  
 
  	 l                                                                                                          	          Ԁ           	   7       <                
@@ -682,7 +683,7 @@
 
  	 l                                                                                                          	   d       Ԁ           	   e       <                               E     @  
 
- 	 l                                                                                                          	   se       Ԁ           	    A   A                         $0H`l 4mesh    	   j A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
+ 	 l                                                                                                          	   se       Ԁ           	   #j A   A                         $0H`l 4mesh    	   j A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
 
  	 l                                                                                                          	    (	       Ԁ           	   W(	       <                0               E     @  
 
@@ -719,13 +720,13 @@
  	 l                                                                                                          	   0       Ԁ           	          <                               E     @  
 
  	 l                                                                                                          	          Ԁ           
-   JO A   A                        $0H`l 4mesh    
-    2   2   Ѐ<                J 4mesh 7       
-    2   2   Ј<                J 4mesh 7       
-   K 2   2   Ј<                J 4mesh 7       
-   ؞ 2   2   Ј<                J 4mesh 7       
-    2   2   Ј<                J 4mesh 7       
-   : 2   2   Ј<                J 4mesh 7       
-   Ǡ 2   2   Ј<                J 4mesh 7       
-   j A   A               ꆡ         $0H`l 4mesh       J/ <   <               
+   JO A   A                        $0H`l 4mesh    
+   g 2   2   Ѐ<                J 4mesh 7       
+   h 2   2   Ј<                J 4mesh 7       
+   ai 2   2   Ј<                J 4mesh 7       
+   $j 2   2   Ј<                J 4mesh 7       
+   j 2   2   Ј<                J 4mesh 7       
+   k 2   2   Ј<                J 4mesh 7       
+   [l 2   2   Ј<                J 4mesh 7       
+   j A   A               ꆡ         $0H`l 4mesh       J/ <   <               
          $0H`l 4mesh       j <   <               *Ѱ         $0H`l 4mesh       J7 <   <                JR         $0H`l 4mesh       j <   <               j߿         $0H`l 4mesh       J  <   <                H         $0H`l 4mesh       j <   <               0         $0H`l 4mesh       J  <   <               @ʒ         $0H`l 4mesh       j <   <               PK         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,24 +1,25 @@
-ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               B P   P   Ѐ<                 J     $0H`l3         9 7          R       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh         A   A               0 j         $0H`l 4mesh       k  A   A               @ ?         $0H`l 4mesh       O A   A               @          $0H`l @4mesh        A   A               P          $0H`l 4mesh        A   A               P 2         $0H`l 4mesh       X  L   L          `                      
+ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               a  P   P   Ѐ<                 J     $0H`l3         9 7          q        Ԁ               O A   A                 JO         $0H`l  4mesh        i A   A               0 i         $0H`l O4mesh         A   A               0 j         $0H`l j4mesh         A   A               @ 
+         $0H`l 4mesh       O A   A               @          $0H`l 4mesh       i A   A               P          $0H`l 4mesh        A   A               P 2         $0H`l 4mesh       @  L   L          `                      
 
-         L   L          `                     
+       k   L   L          `                     
 
-       F  E   E   Ѐ            p   D%                                    h  ?   ?   Ѐ<                p   E                                        Ԁ                L   L   <                                       
+       .!  E   E   Ѐ            p   D%                                    P!  ?   ?   Ѐ<                p   E                                !        Ԁ              "  L   L   <                                       
      
-               Ԁ              O        <                                E      @  
+       "        Ԁ              %#        <                                E      @  
 
- 	 l                                                                                                                      Ԁ              C  L   L                                
+ 	 l                                                                                                             e$        Ԁ              G  L   L                                
 
-       &D  L   L   <                                       
+       G  L   L   <                                       
      
-       D        Ԁ              F        <                                E      @  
-
- 	 l                                                                                                             F        Ԁ              F  L   L                               
+       H        Ԁ              "I  L   L                               
 
-       P        <                                E     @  
+       K        <                                E      @  
+
+ 	 l                                                                                                             )K        Ԁ              P        <                                E     @  
 
  	 l                                                                                                                     Ԁ                      <                                E     @  
 
- 	 l                                                                                                                     Ԁ              k  A   A                         $0H`l 34mesh       O A   A                         $0H`l 4mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ                A   A                M         $0H`l 34mesh       O A   A                         $0H`l M4mesh              <                                E     @  
 
  	 l                                                                                                                    Ԁ                     <                                E     @  
 
@@ -60,7 +61,7 @@
 
  	 l                                                                                                             `e       Ԁ              ?f       <                `               E     @  
 
- 	 l                                                                                                             Of       Ԁ               A   A               p#'         $0H`l 4mesh        A   A               pt'         $0H`l #'4mesh       '	       <                               E     @  
+ 	 l                                                                                                             Of       Ԁ              i A   A               p3&         $0H`l 4mesh        A   A               pt'         $0H`l &4mesh       '	       <                               E     @  
 
  	 l                                                                                                             (	       Ԁ              )	       <                               E     @  
 
@@ -104,8 +105,8 @@
 
  	 l                                                                                                                     Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ              k  A   A                +.         $0H`l u'4mesh       O A   A                
-/         $0H`l .4mesh              <                0               E     @  
+ 	 l                                                                                                                     Ԁ                A   A                S.         $0H`l u'4mesh       O A   A                
+/         $0H`l .4mesh              <                0               E     @  
 
  	 l                                                                                                             h       Ԁ                     <                0               E     @  
 
@@ -145,7 +146,7 @@
 
  	 l                                                                                                             e       Ԁ              e       <                               E     @  
 
- 	 l                                                                                                             e       Ԁ               A   A               Ke6         $0H`l /4mesh        A   A               *6         $0H`l e64mesh       '	       <                               E      @  
+ 	 l                                                                                                             e       Ԁ              i A   A               s06         $0H`l /4mesh        A   A               *6         $0H`l 064mesh       '	       <                               E      @  
 
  	 l                                                                                                             `(	       Ԁ              (	       <                               E      @  
 
@@ -189,7 +190,7 @@
 
  	 l                                                                                                                     Ԁ              W        <                p               E   )  @  
 
- 	 l                                                                                                             g        Ԁ              k  A   A               k>         $0H`l 64mesh       O A   A               JX>         $0H`l >4mesh              <                               E   *  @  
+ 	 l                                                                                                             g        Ԁ                A   A               =         $0H`l 64mesh       O A   A               JX>         $0H`l =4mesh              <                               E   *  @  
 
  	 l                                                                                                             ,       Ԁ                     <                               E   *  @  
 
@@ -229,7 +230,7 @@
 
  	 l                                                                                                             d       Ԁ              Oe       <                                E   3  @  
 
- 	 l                                                                                                             _e       Ԁ               A   A               0E         $0H`l X>4mesh        A   A               0jE         $0H`l E4mesh       '	       <                @               E   4  @  
+ 	 l                                                                                                             _e       Ԁ              i A   A               0rE         $0H`l X>4mesh        A   A               0jE         $0H`l sE4mesh       '	       <                @               E   4  @  
 
  	 l                                                                                                             8(	       Ԁ              (	       <                @               E   4  @  
 
@@ -273,7 +274,7 @@
 
  	 l                                                                                                                     Ԁ                      <                               E   =  @  
 
- 	 l                                                                                                             /        Ԁ              k  A   A               HM         $0H`l E4mesh       O A   A               M         $0H`l IM4mesh              <                               E   >  @  
+ 	 l                                                                                                             /        Ԁ                A   A               M         $0H`l E4mesh       O A   A               M         $0H`l M4mesh              <                               E   >  @  
 
  	 l                                                                                                                    Ԁ              o       <                               E   >  @  
 
@@ -313,7 +314,7 @@
 
  	 l                                                                                                             d       Ԁ              7e       <                               E   G  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A               T         $0H`l M4mesh        A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
+ 	 l                                                                                                             Ge       Ԁ              i A   A               T         $0H`l M4mesh        A   A               ;U         $0H`l T4mesh       '	       <                               E   H  @  
 
  	 l                                                                                                             ,(	       Ԁ              (	       <                               E   H  @  
 
@@ -357,7 +358,7 @@
 
  	 l                                                                                                                     Ԁ                      <                0               E   Q  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A               @\         $0H`l <U4mesh       O A   A               @\         $0H`l \4mesh              <                P               E   R  @  
+ 	 l                                                                                                             '        Ԁ                A   A               @V\         $0H`l <U4mesh       O A   A               @\         $0H`l V\4mesh              <                P               E   R  @  
 
  	 l                                                                                                                    Ԁ              g       <                P               E   R  @  
 
@@ -397,7 +398,7 @@
 
  	 l                                                                                                             d       Ԁ              7e       <                               E   [  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A               ,d         $0H`l \4mesh        A   A               }d         $0H`l ,d4mesh       '	       <                                E   \  @  
+ 	 l                                                                                                             Ge       Ԁ              i A   A               3c         $0H`l \4mesh        A   A               }d         $0H`l c4mesh       '	       <                                E   \  @  
 
  	 l                                                                                                             ,(	       Ԁ              (	       <                                E   \  @  
 
@@ -441,8 +442,8 @@
 
  	 l                                                                                                                     Ԁ                      <                               E   e  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A               +k         $0H`l ~d4mesh       O A   A               
-l         $0H`l k4mesh              <                               E   f  @  
+ 	 l                                                                                                             '        Ԁ                A   A               Sk         $0H`l ~d4mesh       O A   A               
+l         $0H`l k4mesh              <                               E   f  @  
 
  	 l                                                                                                                    Ԁ              g       <                               E   f  @  
 
@@ -482,7 +483,7 @@
 
  	 l                                                                                                             d       Ԁ              7e       <                P               E   o  @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A               `Kns         $0H`l l4mesh        A   A               `*s         $0H`l ns4mesh       '	       <                p               E   p  @  
+ 	 l                                                                                                             Ge       Ԁ              i A   A               `s9s         $0H`l l4mesh        A   A               `*s         $0H`l 9s4mesh       '	       <                p               E   p  @  
 
  	 l                                                                                                             ,(	       Ԁ              (	       <                p               E   p  @  
 
@@ -526,7 +527,7 @@
 
  	 l                                                                                                                     Ԁ                      <                 	               E   y  @  
 
- 	 l                                                                                                             '        Ԁ              k  A   A               	k{         $0H`l s4mesh       O A   A               	Ja{         $0H`l {4mesh              <                 	               E   z  @  
+ 	 l                                                                                                             '        Ԁ                A   A               	z         $0H`l s4mesh       O A   A               	Ja{         $0H`l z4mesh              <                 	               E   z  @  
 
  	 l                                                                                                                    Ԁ              g       <                 	               E   z  @  
 
@@ -566,7 +567,7 @@
 
  	 l                                                                                                             d       Ԁ              7e       <                	               E     @  
 
- 	 l                                                                                                             Ge       Ԁ               A   A               	         $0H`l a{4mesh        A   A               	j         $0H`l 4mesh       '	       <                	               E     @  
+ 	 l                                                                                                             Ge       Ԁ              i A   A               	{         $0H`l a{4mesh        A   A               	j         $0H`l |4mesh       '	       <                	               E     @  
 
  	 l                                                                                                             ,(	       Ԁ              (	       <                	               E     @  
 
@@ -624,9 +625,9 @@
  	 l                                                                                                          	           Ԁ           	           <                `
                E     @  
 
- 	 l                                                                                                          	   '        Ԁ           	   k  A   A               p
-Q         $0H`l 4mesh    	   O A   A               p
-         $0H`l R4mesh    	          <                
+ 	 l                                                                                                          	   '        Ԁ           	     A   A               p
+         $0H`l 4mesh    	   O A   A               p
+         $0H`l 4mesh    	          <                
                E     @  
 
  	 l                                                                                                          	          Ԁ           	   g       <                
@@ -682,7 +683,7 @@
 
  	 l                                                                                                          	   d       Ԁ           	   7e       <                               E     @  
 
- 	 l                                                                                                          	   Ge       Ԁ           	    A   A                         $0H`l 4mesh    	    A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
+ 	 l                                                                                                          	   Ge       Ԁ           	   i A   A                         $0H`l 4mesh    	    A   A                D         $0H`l 4mesh    	   '	       <                0               E     @  
 
  	 l                                                                                                          	   ,(	       Ԁ           	   (	       <                0               E     @  
 
@@ -722,55 +723,55 @@
              <                               E     @  
 
  	 l                                                                                                          
-            <                               E     @  
+            <                               E     @  
 
  	 l                                                                                                          
-           <                               E     @  
+   U        <                               E     @  
 
  	 l                                                                                                          
-           <                               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-   *	        <                               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-           <                               E     @  
+   ~        <                               E     @  
 
  	 l                                                                                                          
-   6        <                               E     @  
+   a.        <                               E     @  
 
  	 l                                                                                                          
    P        <                               E     @  
 
  	 l                                                                                                          
-   C        <                               E     @  
+           <                               E     @  
 
  	 l                                                                                                          
-   S        <                               E     @  
+   "        <                               E     @  
 
  	 l                                                                                                          
-   *        <                               E     @  
+     A   A               _         $0H`l E4mesh    
+           <                               E     @  
 
  	 l                                                                                                          
-   /        <                               E     @  
+   $        <                               E     @  
 
  	 l                                                                                                          
-           <                               E     @  
+   [        <                               E     @  
 
  	 l                                                                                                          
-           <                               E     @  
+   K        <                               E     @  
 
  	 l                                                                                                          
-     2   2   Ѐ<                J 4mesh 7       
-     2   2   Ј<                J 4mesh 7       
-     2   2   Ј<                J 4mesh 7       
-     A   A               듙         $0H`l E4mesh    
-   G  2   2   Ј<                J 4mesh 7       
-     2   2   Ј<                J 4mesh 7       
-     2   2   Ј<                J 4mesh 7       
-     2   2   Ј<                J 4mesh 7       
+   l  2   2   Ѐ<                J 4mesh 7       
+   k  2   2   Ј<                J 4mesh 7       
+   j  2   2   Ј<                J 4mesh 7       
+   N  2   2   Ј<                J 4mesh 7       
+   D  2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
+     2   2   Ј<                J 4mesh 7       
     E   E   Ѐ              D%                                 
     E   E   Ѐ               D%                                 
-   f <   <                        $0H`l 4mesh    
-    E   E   Ѐ               D%                                    k  <   <               0+~         $0H`l 4mesh       n <   <               @KG         $0H`l 4mesh       `D E   E   Ѐ            P  D%                                    k  <   <               `kܷ         $0H`l 4mesh        <   <               p         $0H`l 4mesh        5 E   E   Ѐ              D%                                      E   E   Ѐ              D%           	                         k  <   <                        $0H`l 4mesh       6 <   <               ˓         $0H`l 4mesh       r	 E   E   Ѐ              D%           
-                         k]  <   <                        $0H`l 4mesh        E   E   Ѐ              D%   	                                  <   <               f         $0H`l 4mesh    
\ No newline at end of file
+   a <   <               3         $0H`l 4mesh    
+    E   E   Ѐ               D%                                      <   <               0Sm         $0H`l 4mesh       a <   <               @s:         $0H`l 4mesh       `D E   E   Ѐ            P  D%                                      <   <               `         $0H`l 4mesh       u <   <               p         $0H`l 4mesh        5 E   E   Ѐ              D%                                      E   E   Ѐ              D%           	                           <   <               Y         $0H`l 4mesh        <   <                        $0H`l 4mesh       r	 E   E   Ѐ              D%           
+                           <   <                        $0H`l 4mesh        E   E   Ѐ              D%   	                                 u <   <               3         $0H`l 4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression.cc ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression.cc
--- ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -134,11 +134,11 @@
   mesh.SetMacType ("RandomStart", TimeValue (Seconds (0.1)));
   mesh.SetNumberOfInterfaces (1);
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
-  // Four devices, four streams per mac
+  // Four devices, nine streams per mac
   streamsUsed += mesh.AssignStreams (meshDevices, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
 
   // 3. setup TCP/IP
   InternetStackHelper internetStack;
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,108 +1,110 @@
-ò            i       |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ?        Ԁ               @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               h  P   P   Ѐ<                0 J    $0H`l3         9 7          x        Ԁ               X  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          h        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          v       Ԁ               JO A   A                 JO         $0H`l  4mesh         F   F               P          $0H`l
- O4mesh        j A   A               0 j         $0H`l 4mesh         F   F               ` ?         $0H`l
- 4mesh       JO A   A               @          $0H`l @4mesh        F   F               p          $0H`l
- !4mesh       j A   A               P 2         $0H`l 4mesh         L   L                               
+ò            i       B  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          a        Ԁ               H        Ԁ                  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                           $0H`l  4mesh        %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               JO A   A                 JO         $0H`l  4mesh        +b F   F               P a         $0H`l
+ 7O4mesh        j A   A               0 j         $0H`l b4mesh         F   F               `          $0H`l
+ 4mesh       JO A   A               @          $0H`l 4mesh       +b F   F               p          $0H`l
+ z4mesh       j A   A               P 2         $0H`l 4mesh         L   L                               
 
-         L   L          `                     
+         L   L          `                     
 
-         E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                         Ԁ              m  ?   ?   Ѐ<                   E                             }        Ԁ                L   L   <                                       
+         E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                         Ԁ              U  ?   ?   Ѐ<                   E                             e        Ԁ                L   L   <                                       
      
-               Ԁ              {  L   L   <                                      
+       y        Ԁ              $  L   L   <                                      
      
-       #        Ԁ                      <                               E      @  
+               Ԁ              L        <                               E      @  
 
- 	 l                                                                                                                     Ԁ              8  L   L                                
+ 	 l                                                                                                             \        Ԁ              8  L   L                                
 
-       9  L   L                               
+       9  L   L                               
 
-       :        Ԁ              ;  L   L   <                                      
+       :        Ԁ              w;  L   L   <                                      
      
-       ;        Ԁ              ;        <                                E      @  
+       ;        Ԁ              <        <                                E      @  
 
- 	 l                                                                                                             1=        Ԁ              5?        <                               E      @  
+ 	 l                                                                                                             %>        Ԁ              T?        <                               E      @  
 
- 	 l                                                                                                               F   F                         $0H`l
- 34mesh       JO A   A                         $0H`l 4mesh       x L   L                               
+ 	 l                                                                                                               F   F                E         $0H`l
+ 34mesh       JO A   A                         $0H`l E4mesh       x L   L                               
 
         L   L   <                                       
      
-       _       Ԁ               L   L                               
-
-              <                                E      @  
+        L   L   <                                       
+     
+       l       Ԁ                     <                                E      @  
 
- 	 l                                                                                                                    Ԁ              7 L   L                                
+ 	 l                                                                                                                    Ԁ              J L   L                               
+
+       O L   L                                
 
-       9 L   L   <                0                      
+       {  L   L   <                0                      
      
-       9       Ԁ              v9       <                                E     @  
-
- 	 l                                                                                                             :       Ԁ              ; L   L          @                    
+               Ԁ              ! L   L          @                    
 
-       O" L   L                                
+       "       <                                E      @  
+
+ 	 l                                                                                                             #       Ԁ              5 L   L                                
 
-       {# L   L          P                    
+       7 L   L          P                    
 
-       I(       Ԁ              ( L   L   <                `                     
+       ;       Ԁ              F= E   E   Ѐ            `  D%              ,                  h= ?   ?   Ѐ<                  E                                >       Ԁ              > ?   ?   Ѐ<                p  E                             Z@ L   L   <                                     
      
-       )       Ԁ              ) E   E   Ѐ              D%                                     F   F               p#'         $0H`l
- c&4mesh       j A   A                t'         $0H`l #'4mesh       H	 E   E   Ѐ            0  D%                                    ,J	 E   E   Ѐ              D%                                 J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 K	       Ԁ              K	       <                @               E     @  
+       j@       Ԁ              @       <                                E      @  
 
  
- l                                                                                                             ,M	       Ԁ              [N	       <                              E     @  
+ l                                                                                                             B       Ԁ              C       <                              E      @  
 
  
- l                                                                                                             [R	       Ԁ              R	 ?   ?   Ѐ<                  E           ,                 R	       Ԁ              i	 L   L                              
+ l                                                                                                             Ib L   L                              
 
-       8i	 L   L   <                P                      
+       tb L   L   <                0                      
      
-       i	       Ԁ              j	 L   L   <                                     
+       0c       Ԁ              c L   L   <                                     
      
-       :l	 L   L          `                    
+       d L   L          @                    
 
-       {o	       Ԁ              Zp	       <                              E      @  
+       -i       Ԁ              \j       <                              E      @  
 
  
- l                                                                                                             jp	       Ԁ              @        Ԁ                      <                              E     @  
+ l                                                                                                             lj       Ԁ              +b F   F               3&         $0H`l
+ &4mesh       j A   A               Pt'         $0H`l &4mesh       @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                             /        Ԁ                      <                p               E     @  
+ 	 l                                                                                                                     Ԁ                      <                `               E     @  
 
- 	 l                                                                                                                     Ԁ              #        <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                               F   F               +.         $0H`l
- .u'4mesh       JO A   A               
-/         $0H`l .4mesh              <                                E     @  
+ 	 l                                                                                                               F   F                S.         $0H`l
+ ].u'4mesh       JO A   A               p
+/         $0H`l .4mesh              <                               E     @  
 
- 	 l                                                                                                                    Ԁ              [       <                               E     @  
+ 	 l                                                                                                                    Ԁ              [       <                               E     @  
 
- 	 l                                                                                                                    Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
  
- l                                                                                                             p       Ԁ                     <                0              E     @  
+ l                                                                                                                    Ԁ                     <                               E     @  
 
  
- l                                                                                                             K!       Ԁ              *"       <                @              E     @  
+ l                                                                                                             !       Ԁ              "       <                0              E     @  
 
  
- l                                                                                                             :"       Ԁ               F   F               PKe6         $0H`l
- 5/4mesh       j A   A               *6         $0H`l e64mesh                Ԁ                      <                `              E     @  
+ l                                                                                                             "       Ԁ              +b F   F               @s(6         $0H`l
+ 5/4mesh       j A   A               *6         $0H`l (64mesh       @        Ԁ                      <                P              E     @  
 
- 	 l                                                                                                                     Ԁ              6        <                               E     @  
+ 	 l                                                                                                             /        Ԁ                      <                               E     @  
 
- 	 l                                                                                                             '        Ԁ                      <                p              E     @  
+ 	 l                                                                                                                     Ԁ                      <                `              E     @  
 
- 	 l                                                                                                               F   F               k>         $0H`l
- F=64mesh       JO A   A               JX>         $0H`l >4mesh              <                               E     @  
+ 	 l                                                                                                               F   F               p=         $0H`l
+ =64mesh       JO A   A               JX>         $0H`l =4mesh              <                               E     @  
 
- 	 l                                                                                                                    Ԁ              [       <                               E     @  
+ 	 l                                                                                                                    Ԁ              [       <                               E     @  
 
- 	 l                                                                                                             K       Ԁ                     <                               E     @  
+ 	 l                                                                                                                    Ԁ                     <                               E     @  
 
  
- l                                                                                                             p       Ԁ                     <                              E     @  
+ l                                                                                                             p       Ԁ              O       <                              E     @  
 
  
- l                                                                                                             !       Ԁ              !       <                              E     @  
+ l                                                                                                                     Ԁ              !       <                              E     @  
 
  
- l                                                                                                             !       Ԁ               F   F               E         $0H`l
- DX>4mesh       j A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ l                                                                                                             !       Ԁ              +b F   F               jE         $0H`l
+ @EX>4mesh       j A   A               jE         $0H`l kE4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,160 +1,157 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          o?        Ԁ               W@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          g@        Ԁ               @  P   P   Ѐ<                 J     $0H`l3         9 7          vA        Ԁ               B        Ԁ               'C  P   P   Ѐ<                0 J    $0H`l3         9 7          D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          GE        Ԁ               k  A   A                 k          $0H`l = 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               : P   P   Ѐ<                 J     $0H`l3         9 7          J       Ԁ               O A   A                 JO         $0H`l  4mesh         F   F               P          $0H`l
-  ] 4mesh         F   F               P          $0H`l
- O4mesh         A   A               0 j         $0H`l 4mesh       =  F   F               `          $0H`l
- 4mesh       k  F   F               ` ?         $0H`l
- 4mesh       O A   A               @          $0H`l @4mesh        F   F               p           $0H`l
- @4mesh        F   F               p          $0H`l
- !4mesh        A   A               P 2         $0H`l 4mesh       8  L   L                                
+ò            i       %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >&        Ԁ               7'        Ԁ               '  P   P   Ѐ<                 J     $0H`l3         9 7            A   A                 (          $0H`l $ 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               %  P   P   Ѐ<                0 J    $0H`l3         9 7          5        Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               {  P   P   Ѐ<                 J     $0H`l3         9 7          <        Ԁ                 A   A                           $0H`l  4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7                  Ԁ               	  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ               t  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               O A   A                 JO         $0H`l  4mesh        7 F   F               P H7         $0H`l
+  4mesh        a F   F               P a         $0H`l
+ 7O4mesh         A   A               0 j         $0H`l b4mesh         F   F               ` h         $0H`l
+ fb4mesh         F   F               `          $0H`l
+ 4mesh       O A   A               @          $0H`l 4mesh       7 F   F               p y         $0H`l
+ 4mesh       a F   F               p          $0H`l
+ z4mesh        A   A               P 2         $0H`l 4mesh          L   L                                
 
-       c  L   L                               
+       K  L   L                               
 
-         L   L          `                     
+       v  L   L          `                     
 
-       Q  E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                   ?   ?   Ѐ<                   E                                        Ԁ                ?   ?   Ѐ<                   E                                     Ԁ                L   L   <                                       
+       9  E   E   Ѐ            p   D%                                      E   E   Ѐ               D%                                   ?   ?   Ѐ<                   E                                        Ԁ                ?   ?   Ѐ<                   E                                     Ԁ              =  L   L   <                                       
      
-               Ԁ                L   L   <                                      
+       M        Ԁ                L   L   <                                      
      
-               Ԁ                      <                                E      @  
+       `        Ԁ                      <                                E      @  
 
- 	 l                                                                                                                     Ԁ                      <                               E      @  
+ 	 l                                                                                                                     Ԁ              G        <                               E      @  
 
- 	 l                                                                                                                     Ԁ              09  L   L                                
+ 	 l                                                                                                                     Ԁ              9  L   L                                
 
-       [9  L   L                               
+       79  L   L                               
 
-       :  L   L   <                                       
+       c:  L   L   <                                       
      
-       :        Ԁ               ;  L   L   <                                      
+       s:        Ԁ              :  L   L   <                                      
      
-       ;        Ԁ              <        <                                E      @  
+       ;        Ԁ              <  L   L                               
+
+       =        <                                E      @  
 
- 	 l                                                                                                             =        Ԁ              =  F   F                         $0H`l
- P4mesh       1>        <                               E      @  
+ 	 l                                                                                                             =        Ԁ              P>        <                               E      @  
 
- 	 l                                                                                                             r?        Ԁ              8@  L   L                               
-
-       k  F   F                         $0H`l
- 34mesh       O A   A                         $0H`l 4mesh        L   L                               
+ 	 l                                                                                                             ?        Ԁ                F   F                         $0H`l
+ 4mesh         F   F                E         $0H`l
+ 34mesh       O A   A                         $0H`l E4mesh        L   L                               
 
-       # L   L   <                                       
+       0 L   L   <                                       
      
-       3       Ԁ               L   L                               
-
-              <                                E      @  
+       @       Ԁ                     <                                E      @  
 
- 	 l                                                                                                                    Ԁ              c8 L   L                                
+ 	 l                                                                                                                    Ԁ               L   L                               
+
+        L   L                                
 
-       8 L   L   <                0                      
+        L   L   <                0                      
      
-       K9       Ԁ              z:       <                                E     @  
-
- 	 l                                                                                                             :       Ԁ              V; L   L          @                    
+               Ԁ              !! L   L          @                    
 
-       < L   L                               
+       M" L   L                               
 
-       " L   L                                
+       #       <                                E      @  
+
+ 	 l                                                                                                             #       Ԁ              X6 L   L                                
 
-       " L   L          P                    
+       6 L   L          P                    
 
-       &$ L   L                               
+       7 L   L                               
 
-       #& ?   ?   Ѐ<                  E             ,                 b'       Ԁ              ( L   L   <                                      
+       9 ?   ?   Ѐ<                  E             ,                 :       Ԁ              ; L   L   <                                      
      
-       (       Ԁ              t( L   L   <                `                     
+       ;       Ԁ              < E   E   Ѐ            0  D%                                 < E   E   Ѐ            `  D%              ,                  = ?   ?   Ѐ<                  E                                =       Ԁ              2> ?   ?   Ѐ<                p  E                             >       Ԁ              i? ?   ?   Ѐ<                @  E           ,                 ? L   L   <                                     
      
-       0)       Ԁ               F   F               @
-c&         $0H`l
- 4mesh        F   F               p#'         $0H`l
- c&4mesh        A   A                t'         $0H`l #'4mesh       hI	 E   E   Ѐ            0  D%                                    I	 E   E   Ѐ              D%                                 J	 ?   ?   Ѐ<                P  E                               J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 K	       Ԁ              L	       <                @               E     @  
+       @       Ԁ              A       <                                E      @  
 
  
- l                                                                                                              M	       Ԁ              WM	       <                              E     @  
+ l                                                                                                             A       Ԁ              B       <                              E      @  
 
  
- l                                                                                                             N	       Ԁ              O	       <                `              E     @  
+ l                                                                                                             C       Ԁ              E       <                P              E      @  
 
  
- l                                                                                                             P	 E   E   Ѐ            p  D%              ,                  Q	       Ԁ              R	 ?   ?   Ѐ<                  E                             /R	       Ԁ              }R	 ?   ?   Ѐ<                  E           ,                 %S	       Ԁ              bh	 L   L                              
+ l                                                                                                             a L   L          `                    
 
-       h	 L   L                              
+       a L   L                              
 
-       i	 L   L   <                P                      
+       b L   L   <                0                      
      
-       i	       Ԁ              Mj	 L   L   <                                     
+       c       Ԁ              vc L   L   <                                     
      
-       	k	       Ԁ              k	 L   L   <                                     
-     
-       l	 L   L          `                    
+       3d       Ԁ              e L   L          @                    
 
-       m	       Ԁ              ?o	       <                              E      @  
+       e L   L   <                p                     
+     
+       zg       Ԁ              h       <                              E      @  
 
  
- l                                                                                                             Oo	       Ԁ              o	       <                              E      @  
+ l                                                                                                             i       Ԁ              Xi       <                              E      @  
 
  
- l                                                                                                             p	       Ԁ                      <                               E     @  
+ l                                                                                                             j       Ԁ              7 F   F               Ȼ&         $0H`l
+ J&E4mesh       a F   F               3&         $0H`l
+ &4mesh        A   A               Pt'         $0H`l &4mesh               <                               E     @  
 
- 	 l                                                                                                                     Ԁ              k        <                              E     @  
+ 	 l                                                                                                                     Ԁ              k        <                              E     @  
 
- 	 l                                                                                                             [        Ԁ                      <                p               E     @  
+ 	 l                                                                                                                     Ԁ                      <                `               E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                             _        Ԁ              =  F   F               *.         $0H`l
- #'&4mesh       k  F   F               +.         $0H`l
- .u'4mesh       O A   A               
-/         $0H`l .4mesh       @       <                                E     @  
+ 	 l                                                                                                             	        Ԁ                F   F               \.         $0H`l
+ -&4mesh         F   F                S.         $0H`l
+ ].u'4mesh       O A   A               p
+/         $0H`l .4mesh       @       <                               E     @  
 
- 	 l                                                                                                             0       Ԁ              _       <                               E     @  
+ 	 l                                                                                                             0       Ԁ              _       <                               E     @  
 
- 	 l                                                                                                             o       Ԁ              4       <                               E     @  
+ 	 l                                                                                                             o       Ԁ                     <                               E     @  
 
  
- l                                                                                                             D       Ԁ                     <                0              E     @  
+ l                                                                                                                    Ԁ                     <                               E     @  
 
  
- l                                                                                                                    Ԁ              
-       <                              E     @  
+ l                                                                                                             +       Ԁ              Z       <                              E     @  
 
  
- l                                                                                                                    Ԁ              !       <                              E     @  
+ l                                                                                                                     Ԁ              C!       <                              E     @  
 
  
- l                                                                                                             !       Ԁ              v!       <                @              E     @  
+ l                                                                                                             S!       Ԁ              !       <                0              E     @  
 
  
- l                                                                                                             g"       Ԁ               F   F                J5         $0H`l
- .4.4mesh        F   F               PKe6         $0H`l
- 5/4mesh        A   A               *6         $0H`l e64mesh                <                               E     @  
+ l                                                                                                             "       Ԁ              7 F   F               5         $0H`l
+ 5.4mesh       a F   F               @s(6         $0H`l
+ 5/4mesh        A   A               *6         $0H`l (64mesh               <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                `              E     @  
+ 	 l                                                                                                                     Ԁ              k        <                P              E     @  
 
- 	 l                                                                                                                     Ԁ                      <                               E     @  
+ 	 l                                                                                                             [        Ԁ                      <                               E     @  
 
- 	 l                                                                                                                     Ԁ                      <                p              E     @  
+ 	 l                                                                                                                     Ԁ                      <                `              E     @  
 
- 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
- e654mesh       k  F   F               k>         $0H`l
- F=64mesh       O A   A               JX>         $0H`l >4mesh       @       <                               E     @  
+ 	 l                                                                                                             V        Ԁ                F   F                (=         $0H`l
+ -=(64mesh         F   F               p=         $0H`l
+ =64mesh       O A   A               JX>         $0H`l =4mesh       @       <                               E     @  
 
- 	 l                                                                                                             0       Ԁ                     <                               E     @  
+ 	 l                                                                                                             0       Ԁ              _       <                               E     @  
 
- 	 l                                                                                                                    Ԁ              4       <                               E     @  
+ 	 l                                                                                                             o       Ԁ              4       <                               E     @  
 
  
- l                                                                                                             D       Ԁ                     <                              E     @  
+ l                                                                                                             D       Ԁ                     <                              E     @  
 
  
- l                                                                                                                    Ԁ              
-       <                0              E     @  
+ l                                                                                                                    Ԁ                     <                              E     @  
 
  
- l                                                                                                                    Ԁ                      <                @              E     @  
+ l                                                                                                             b       Ԁ              S        <                               E     @  
 
  
- l                                                                                                                     Ԁ              .!       <                              E     @  
+ l                                                                                                             c        Ԁ              !       <                              E     @  
 
  
- l                                                                                                             "       Ԁ               F   F               PD         $0H`l
- >v=4mesh        F   F               E         $0H`l
- DX>4mesh        A   A                jE         $0H`l E4mesh    
\ No newline at end of file
+ l                                                                                                             !       Ԁ              7 F   F               0H@E         $0H`l
+ D=4mesh       a F   F               jE         $0H`l
+ @EX>4mesh        A   A               jE         $0H`l kE4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-2-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,141 +1,141 @@
-ò            i       j=  <   <                 j=          $0H`l 4mesh        |>  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               >  P   P   Ѐ<                 J     $0H`l3          9 7          ?        Ԁ               ?  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          @        Ԁ               :A  P   P   Ѐ<                 J     $0H`l3         9 7          JA        Ԁ               DB  R   R   Ј<                   J   $0H`l4mesh3          9 7          TB        Ԁ               B  P   P   Ѐ<                0 J    $0H`l3         9 7          cC        Ԁ               C  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          JD        Ԁ               E  P   P   Ѐ<                 J     $0H`l3         9 7          E        Ԁ               ]  A   A                 ]          $0H`l = 4mesh          A   A                 k          $0H`l = 4mesh                Ԁ               h  P   P   Ѐ<                0 J    $0H`l3         9 7          X  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          v       Ԁ                F   F               P          $0H`l
-  ] 4mesh         A   A               0 1         $0H`l 4mesh         F   F               P          $0H`l
- O4mesh       j=  F   F               `          $0H`l
- 4mesh       m  A   A               @ Q         $0H`l 4mesh         F   F               ` ?         $0H`l
- 4mesh        F   F               p           $0H`l
- @4mesh        A   A               P qP         $0H`l !4mesh        F   F               p          $0H`l
- !4mesh         L   L                                
+ò            i       u$  <   <                 $          $0H`l 4mesh        $  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          \%        Ԁ               &  P   P   Ѐ<                 J     $0H`l3          9 7          &        Ԁ               &  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          
+'        Ԁ               a'  P   P   Ѐ<                 J     $0H`l3         9 7          "(        Ԁ               (  A   A                 (          $0H`l $ 4mesh        B  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          R        Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7          a        Ԁ                 R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          H        Ԁ                  P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ                 A   A                           $0H`l  4mesh                Ԁ                 P   P   Ѐ<                0 J    $0H`l3         9 7            R   R   Ѐ<                @  J   $0H`l4mesh3         9 7                  Ԁ                A   A               0 -         $0H`l  4mesh        H7 F   F               P H7         $0H`l
+  4mesh        +b F   F               P a         $0H`l
+ 7O4mesh       }$  A   A               @ Mf         $0H`l 74mesh       (  F   F               ` h         $0H`l
+ fb4mesh         F   F               `          $0H`l
+ 4mesh        A   A               P m         $0H`l 4mesh       H7 F   F               p y         $0H`l
+ 4mesh       +b F   F               p          $0H`l
+ z4mesh         L   L                                
 
-         L   L                               
+         L   L                               
 
-         E   E   Ѐ               D%                                 7  ?   ?   Ѐ<                   E                                        Ԁ              m  ?   ?   Ѐ<                   E                                     Ԁ              {  L   L   <                                      
+         E   E   Ѐ               D%                                   ?   ?   Ѐ<                   E                                        Ԁ              U  ?   ?   Ѐ<                   E                             y        Ԁ              $  L   L   <                                      
      
-               Ԁ                      <                                E      @  
+       4        Ԁ                      <                                E      @  
 
- 	 l                                                                                                             #        Ԁ                      <                               E      @  
+ 	 l                                                                                                                     Ԁ              L        <                               E      @  
 
- 	 l                                                                                                             9  L   L                               
+ 	 l                                                                                                             }$  A   A               p          $0H`l z4mesh       9  L   L                               
 
-       :  L   L   <                                       
+       9  L   L   <                                       
      
-       :        Ԁ              ;  L   L   <                                      
+       :        Ԁ              w;  L   L   <                                      
      
-       1=        Ԁ              j=  F   F                         $0H`l
- P4mesh       5?        <                               E      @  
-
- 	 l                                                                                                             E?        Ԁ              ?  L   L                               
+       <  L   L                               
 
-       @  L   L          p                     
+       7=  L   L                               
 
-       m  A   A                         $0H`l 4mesh         F   F                         $0H`l
- 34mesh       x L   L                               
+       %>        Ԁ              T?        <                               E      @  
+
+ 	 l                                                                                                             d?        Ԁ              (  F   F                         $0H`l
+ 4mesh         F   F                E         $0H`l
+ 34mesh       x L   L                               
 
         L   L                               
 
-       _       Ԁ               L   L                               
+        L   L                               
 
-              <                                E      @  
+       l       Ԁ                     <                                E      @  
 
- 	 l                                                                                                             9 L   L   <                0                      
+ 	 l                                                                                                             {  L   L   <                0                      
      
-       :       Ԁ              ; L   L          @                    
+       ! L   L          @                    
 
-       < L   L                               
+       ! L   L                               
 
-       -= L   L                               
+       " L   L                               
 
-       {# L   L          P                    
+       #       Ԁ              7 L   L          P                    
 
-       # L   L                               
+       .7 L   L                               
 
-       $ L   L                               
+       Z8 L   L                               
 
-       % E   E   Ѐ               D%                                    % ?   ?   Ѐ<                  E             ,                 _&       Ԁ              %' L   L   <                                       
+       9 E   E   Ѐ               D%                                    ?9 ?   ?   Ѐ<                  E             ,                 9       Ԁ              : L   L   <                                       
      
-       5'       Ԁ              ' L   L   <                                      
+       :       Ԁ              ; L   L   <                                      
      
-       I(       Ԁ              ( L   L   <                `                     
+       ;       Ԁ              < E   E   Ѐ            0  D%                                 F= E   E   Ѐ            `  D%              ,                  >       Ԁ              > ?   ?   Ѐ<                p  E                             >       Ԁ              > ?   ?   Ѐ<                @  E           ,                 ?       Ԁ              Z@ L   L   <                                     
      
-       ) E   E   Ѐ            0  D%                                  F   F               @
-c&         $0H`l
- 4mesh        A   A                &         $0H`l c&4mesh        F   F               p#'         $0H`l
- c&4mesh       ,J	 E   E   Ѐ              D%                                 NJ	 ?   ?   Ѐ<                P  E                               J	       Ԁ              K	 ?   ?   Ѐ<                  E           ,                 ,M	       Ԁ              [N	       <                              E     @  
+       B       Ԁ              C       <                              E      @  
 
  
- l                                                                                                             kN	       Ԁ              N	       <                `              E     @  
+ l                                                                                                             C       Ԁ              D       <                P              E      @  
 
  
- l                                                                                                             P	       Ԁ              RP	 E   E   Ѐ            p  D%              ,                  TQ	 ?   ?   Ѐ<                   E                                dQ	       Ԁ              Q	 ?   ?   Ѐ<                  E                             [R	       Ԁ              R	 ?   ?   Ѐ<                  E           ,                 g	 L   L                                
+ l                                                                                                             VE       Ԁ              ` L   L                                
 
-       g	 L   L                              
+       a L   L          `                    
 
-       i	 L   L                              
+       Ib L   L                              
 
-       i	       Ԁ              j	 L   L   <                                     
+       0c       Ԁ              c L   L   <                                     
      
-       j	       Ԁ              jk	 L   L   <                                     
+       d       Ԁ              Re L   L   <                p                     
      
-       'l	       Ԁ              Vm	       <                               E      @  
+       f       Ԁ              =g       <                                E      @  
 
  
- l                                                                                                             fm	       Ԁ              ;n	       <                              E      @  
+ l                                                                                                             Mg       Ԁ              g       <                              E      @  
 
  
- l                                                                                                             {o	       Ԁ              Zp	       <                              E      @  
+ l                                                                                                             -i       Ԁ              \j       <                              E      @  
 
  
- l                                                                                                                       <                               E     @  
+ l                                                                                                              A   A                I&         $0H`l 4mesh       H7 F   F               Ȼ&         $0H`l
+ J&E4mesh       +b F   F               3&         $0H`l
+ &4mesh                 <                               E     @  
 
- 	 l                                                                                                             @        Ԁ                      <                              E     @  
+ 	 l                                                                                                             @        Ԁ              o        <                              E     @  
 
- 	 l                                                                                                                     Ԁ              #        <                               E     @  
+ 	 l                                                                                                                     Ԁ                      <                              E     @  
 
- 	 l                                                                                                             3        Ԁ              j=  F   F               *.         $0H`l
- #'&4mesh       m  A   A                3.         $0H`l .4mesh         F   F               +.         $0H`l
- .u'4mesh              <                                E     @  
+ 	 l                                                                                                                     Ԁ              }$  A   A               -         $0H`l &4mesh       (  F   F               \.         $0H`l
+ -&4mesh         F   F                S.         $0H`l
+ ].u'4mesh              <                               E     @  
 
- 	 l                                                                                                                    Ԁ              p       Ԁ                     <                0              E     @  
+ 	 l                                                                                                                    Ԁ                     Ԁ                     <                               E     @  
 
  
- l                                                                                                                    Ԁ                     <                              E     @  
+ l                                                                                                                    Ԁ              V       <                              E     @  
 
  
- l                                                                                                             G       Ԁ              v       <                0               E     @  
+ l                                                                                                                    Ԁ                     <                                E     @  
 
  
- l                                                                                                                    Ԁ              [        <                              E     @  
+ l                                                                                                                    Ԁ              ?        <                              E     @  
 
  
- l                                                                                                             K!       Ԁ              *"       <                @              E     @  
+ l                                                                                                             !       Ԁ              "       <                0              E     @  
 
  
- l                                                                                                              F   F                J5         $0H`l
- .4.4mesh        A   A               @5         $0H`l 54mesh        F   F               PKe6         $0H`l
- 5/4mesh                 <                               E     @  
+ l                                                                                                              A   A               05         $0H`l ].4mesh       H7 F   F               5         $0H`l
+ 5.4mesh       +b F   F               @s(6         $0H`l
+ 5/4mesh                 <                               E     @  
 
- 	 l                                                                                                                      Ԁ                      <                `              E     @  
+ 	 l                                                                                                             @        Ԁ                      <                P              E     @  
 
- 	 l                                                                                                             '        Ԁ                      <                p              E     @  
+ 	 l                                                                                                                     Ԁ                      <                `              E     @  
 
- 	 l                                                                                                                     Ԁ              j=  F   F                jF=         $0H`l
- e654mesh       m  A   A               Pv=         $0H`l F=4mesh         F   F               k>         $0H`l
- F=64mesh              <                               E     @  
+ 	 l                                                                                                             *        Ԁ              }$  A   A               @-=         $0H`l 54mesh       (  F   F                (=         $0H`l
+ -=(64mesh         F   F               p=         $0H`l
+ =64mesh              <                               E     @  
 
- 	 l                                                                                                             K       Ԁ              p       Ԁ                     <                              E     @  
+ 	 l                                                                                                                    Ԁ              p       Ԁ              O       <                              E     @  
 
  
- l                                                                                                                    Ԁ                     <                0              E     @  
+ l                                                                                                             _       Ԁ                     <                              E     @  
 
  
- l                                                                                                             G       Ԁ              v       <                `               E     @  
+ l                                                                                                                    Ԁ              &       <                P               E     @  
 
  
- l                                                                                                                    Ԁ                      <                @              E     @  
+ l                                                                                                             6       Ԁ                     <                               E     @  
 
  
- l                                                                                                             !       Ԁ              !       <                              E     @  
+ l                                                                                                                     Ԁ              !       <                              E     @  
 
  
- l                                                                                                              F   F               PD         $0H`l
- >v=4mesh        A   A               p1E         $0H`l D4mesh        F   F               E         $0H`l
- DX>4mesh    
\ No newline at end of file
+ l                                                                                                              A   A               `-D         $0H`l =4mesh       H7 F   F               0H@E         $0H`l
+ D=4mesh       +b F   F               jE         $0H`l
+ @EX>4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap
--- ns-3.20/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/hwmp-target-flags-regression-test-3-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,78 +1,75 @@
-ò            i       =  <   <                 j=          $0H`l 4mesh        =  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          >        Ԁ               _?  P   P   Ѐ<                 J     $0H`l3          9 7          W@  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          vA        Ԁ               A  R   R   Ј<                   J   $0H`l4mesh3          9 7          B        Ԁ               'C  P   P   Ѐ<                0 J    $0H`l3         9 7          7C        Ԁ               D  R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          D        Ԁ               D  P   P   Ѐ<                 J     $0H`l3         9 7          GE        Ԁ               ]  A   A                 ]          $0H`l = 4mesh         F   F               P          $0H`l
-  ] 4mesh        1 A   A               0 1         $0H`l 4mesh       =  F   F               `          $0H`l
- 4mesh       m  A   A               @ Q         $0H`l 4mesh        F   F               p           $0H`l
- @4mesh       1 A   A               P qP         $0H`l !4mesh       8  L   L                                
+ò            i       $  <   <                 $          $0H`l 4mesh        %  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          /%        Ԁ               }%  P   P   Ѐ<                 J     $0H`l3          9 7          >&        Ԁ               r&  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          7'        Ԁ               '  P   P   Ѐ<                 J     $0H`l3         9 7          '        Ԁ                 A   A                 (          $0H`l $ 4mesh                Ԁ               %  P   P   Ѐ<                0 J    $0H`l3         9 7            R   R   Ѐ<                @  J   $0H`l4mesh3         9 7          <        Ԁ               - A   A               0 -         $0H`l  4mesh        7 F   F               P H7         $0H`l
+  4mesh       $  A   A               @ Mf         $0H`l 74mesh         F   F               ` h         $0H`l
+ fb4mesh       - A   A               P m         $0H`l 4mesh       7 F   F               p y         $0H`l
+ 4mesh          L   L                                
 
-       c  L   L          `                     
+       K  L   L          `                     
 
-         ?   ?   Ѐ<                   E                                        Ԁ                      <                                E      @  
+         ?   ?   Ѐ<                   E                                `        Ԁ                      <                                E      @  
 
- 	 l                                                                                                             :  L   L   <                                       
+ 	 l                                                                                                             $  A   A               p          $0H`l z4mesh       c:  L   L   <                                       
      
-       =  F   F                         $0H`l
- P4mesh       r?        Ԁ              8@  L   L                               
+       <  L   L                               
 
-       c@  L   L          p                     
+       <  L   L                               
 
-       m  A   A                         $0H`l 4mesh       # L   L                               
+       ?        Ԁ                F   F                         $0H`l
+ 4mesh       # L   L                               
 
-        L   L                               
+       N L   L                               
 
-       < L   L                               
+       M" L   L                               
 
-       < L   L                               
+       x" L   L                               
 
-       &$ L   L                               
+       7 L   L                               
 
-       Q$ L   L                               
+       7 L   L                               
 
-        % E   E   Ѐ               D%                                    #& ?   ?   Ѐ<                  E             ,                 3&       Ԁ              & L   L   <                                       
+       8 E   E   Ѐ               D%                                    9 ?   ?   Ѐ<                  E             ,                 9       Ԁ              : L   L   <                                       
      
-       b'       Ԁ              ( L   L   <                                      
+       :       Ԁ              ; L   L   <                                      
      
-       ) E   E   Ѐ            0  D%                                  F   F               @
-c&         $0H`l
- 4mesh       1 A   A                &         $0H`l c&4mesh       J	 ?   ?   Ѐ<                P  E                               N	       Ԁ              O	       <                `              E     @  
+       < E   E   Ѐ            0  D%                                 >       Ԁ              i? ?   ?   Ѐ<                @  E           ,                 y?       Ԁ              C       Ԁ              E       <                P              E      @  
 
  
- l                                                                                                             O	       Ԁ              P	 E   E   Ѐ            p  D%              ,                  P	 ?   ?   Ѐ<                   E                                Q	       Ԁ              R	 ?   ?   Ѐ<                  E                             6g	 L   L                                
+ l                                                                                                             *E       Ԁ              r` L   L                                
 
-       bh	 L   L                              
+       a L   L          `                    
 
-       	k	       Ԁ              k	 L   L   <                                     
+       3d       Ԁ              e L   L   <                p                     
      
-       k	       Ԁ              Ql	       <                               E      @  
+       e       Ԁ              9f       <                                E      @  
 
  
- l                                                                                                             m	       Ԁ              ?o	       <                              E      @  
+ l                                                                                                             zg       Ԁ              h       <                              E      @  
 
  
- l                                                                                                                     <                               E     @  
+ l                                                                                                             - A   A                I&         $0H`l 4mesh       7 F   F               Ȼ&         $0H`l
+ J&E4mesh               <                               E     @  
 
- 	 l                                                                                                             _        Ԁ              =  F   F               *.         $0H`l
- #'&4mesh       m  A   A                3.         $0H`l .4mesh              Ԁ              
-       <                              E     @  
+ 	 l                                                                                                             	        Ԁ              $  A   A               -         $0H`l &4mesh         F   F               \.         $0H`l
+ -&4mesh       +       Ԁ              Z       <                              E     @  
 
  
- l                                                                                                                    Ԁ              q       <                0               E     @  
+ l                                                                                                             j       Ԁ                     <                                E     @  
 
  
- l                                                                                                                    Ԁ              !       <                              E     @  
+ l                                                                                                                     Ԁ              C!       <                              E     @  
 
  
- l                                                                                                              F   F                J5         $0H`l
- .4.4mesh       1 A   A               @5         $0H`l 54mesh                <                               E     @  
+ l                                                                                                             - A   A               05         $0H`l ].4mesh       7 F   F               5         $0H`l
+ 5.4mesh               <                               E     @  
 
- 	 l                                                                                                                     Ԁ              =  F   F                jF=         $0H`l
- e654mesh       m  A   A               Pv=         $0H`l F=4mesh              Ԁ              
-       <                0              E     @  
+ 	 l                                                                                                             V        Ԁ              $  A   A               @-=         $0H`l 54mesh         F   F                (=         $0H`l
+ -=(64mesh              Ԁ                     <                              E     @  
 
  
- l                                                                                                                    Ԁ              q       <                `               E     @  
+ l                                                                                                                    Ԁ              !       <                P               E     @  
 
  
- l                                                                                                                    Ԁ                      <                @              E     @  
+ l                                                                                                             b       Ԁ              S        <                               E     @  
 
  
- l                                                                                                              F   F               PD         $0H`l
- >v=4mesh       1 A   A               p1E         $0H`l D4mesh    
\ No newline at end of file
+ l                                                                                                             - A   A               `-D         $0H`l =4mesh       7 F   F               0H@E         $0H`l
+ D=4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/pmp-regression.cc ns-3.21/src/mesh/test/dot11s/pmp-regression.cc
--- ns-3.20/src/mesh/test/dot11s/pmp-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/pmp-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -99,11 +99,11 @@
   mesh.SetMacType ("RandomStart", TimeValue (Seconds (0.1)));
   mesh.SetNumberOfInterfaces (1);
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
-  // Two devices, four streams per device (one for mac, one for phy, 
-  // two for plugins)
+  // Two devices, nine streams per device (one for mac, one for phy, 
+  // two for plugins, five for regular mac wifi DCF)
   streamsUsed += mesh.AssignStreams (meshDevices, 0);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 4), "Stream assignment mismatch");
-  wifiChannel.AssignStreams (chan, streamsUsed);
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 9), "Stream assignment mismatch");
+  streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
   // 3. write PCAP if needed
   wifiPhy.EnablePcapAll (CreateTempDirFilename (PREFIX));
 }
diff -Naur ns-3.20/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap ns-3.21/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/pmp-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò            i         <   <                 k          $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               _  P   P   Ѐ<                 J     $0H`l3          9 7          o        Ԁ               N  R   R   Ѐ<                   J   $0H`l4mesh3          9 7          ^        Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7          l       Ԁ               JO A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh        j A   A               0 j         $0H`l 4mesh    
\ No newline at end of file
+ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3         9 7                  Ԁ               JO A   A                 JO         $0H`l  4mesh        #j A   A               0 i         $0H`l O4mesh        j A   A               0 j         $0H`l j4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap ns-3.21/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/dot11s/pmp-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò            i       k  <   <                 k          $0H`l 4mesh        }  R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               0 P   P   Ѐ<                 J     $0H`l3         9 7          @       Ԁ               O A   A                 JO         $0H`l  4mesh         A   A               0          $0H`l O4mesh         A   A               0 j         $0H`l 4mesh    
\ No newline at end of file
+ò            i         <   <                           $0H`l 4mesh          R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ                 P   P   Ѐ<                 J     $0H`l3          9 7                  Ԁ                 R   R   Ѐ<                   J   $0H`l4mesh3          9 7                  Ԁ               a  P   P   Ѐ<                 J     $0H`l3         9 7          q        Ԁ               O A   A                 JO         $0H`l  4mesh        i A   A               0 i         $0H`l O4mesh         A   A               0 j         $0H`l j4mesh    
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/flame/flame-regression.cc ns-3.21/src/mesh/test/flame/flame-regression.cc
--- ns-3.20/src/mesh/test/flame/flame-regression.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/flame/flame-regression.cc	2014-09-17 20:03:14.000000000 -0700
@@ -105,11 +105,12 @@
   mesh.SetMacType ("RandomStart", TimeValue (Seconds (0.1)));
   mesh.SetNumberOfInterfaces (1);
   NetDeviceContainer meshDevices = mesh.Install (wifiPhy, *m_nodes);
-  // Three devices, two streams per device
+  // Three devices, seven streams per device
   streamsUsed += mesh.AssignStreams (meshDevices, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 2), "Stream assignment unexpected value");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 7), "Stream assignment unexpected value");
+  // No further streams used in the default wifi channel configuration
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 2), "Stream assignment unexpected value");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (meshDevices.GetN () * 7), "Stream assignment unexpected value");
   // 3. setup TCP/IP
   InternetStackHelper internetStack;
   internetStack.Install (*m_nodes);
diff -Naur ns-3.20/src/mesh/test/flame/flame-regression-test-0-1.pcap ns-3.21/src/mesh/test/flame/flame-regression-test-0-1.pcap
--- ns-3.20/src/mesh/test/flame/flame-regression-test-0-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/flame/flame-regression-test-0-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,85 +1,78 @@
-ò            i        X   X                    @@               
+ò            i      L  X   X                    @@               
 
-       /  X   X   <                          @@                     
+       w  X   X   <                          @@                     
      
-               Ԁ              K  X   X                   @@               
-
-         X   X   <                         @@                    
+       D        Ԁ                X   X   <                         @@                    
      
-               Ԁ                l   l   <                          @@             E  0    @  
+         X   X                   @@               
+
+               Ԁ              n  l   l   <                          @@             E  0    @  
 
- 	                              )        Ԁ                <   <                    @@                   <   <          0         @@                A5  X   X          0         @@                
+ 	                              ~        Ԁ                <   <                    @@                 "	  <   <          0         @@                >  X   X          0         @@                
 
-       6  X   X          @         @@               
+         X   X          @         @@               
 
-       7        Ԁ              M9  X   X   <                P         @@                    
+               Ԁ              n  X   X   <                P         @@                    
      
-       ]9        Ԁ              9  l   l   <                @         @@              E  0    @  
+       ~        Ԁ                l   l   <                @         @@              E  0    @  
 
- 	                              :        Ԁ              l;  l   l   <                `         @@             E  0    @  
+ 	                                      Ԁ                l   l   <                `         @@             E  0    @  
 
- 	                                     Ԁ              X l   l   <                p         @@             E  0   @  
+ 	                                     Ԁ              X l   l   <                p         @@             E  0   @  
 
  	                              h       Ԁ               l   l   <                P         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              %       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              %       Ԁ               l   l   <                         @@             E  0   @  
 
  	                                     Ԁ              _ l   l   <                `         @@              E  0   @  
 
- 	                              D       Ԁ              h l   l   <                         @@             E  0   @  
+ 	                              D       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
 
  	                                     Ԁ               l   l   <                p         @@              E  0   @  
 
- 	                                     Ԁ              e       Ԁ              q l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              S l   l   <                         @@             E  0   @  
+
+ 	                              e       Ԁ              8 l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@              E  0   @  
+ 	                              H       Ԁ               l   l   <                         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              W l   l   <                         @@             E  0   @  
 
- 	                               l   l                        @@             E  0   @  
+ 	                                     Ԁ              آ l   l   <                         @@  	           E  0   @  
 
- 	                              Ǣ <   <                   @@   	              l l   l   <                         @@   
-           E  0   @  
+ 	                                     Ԁ              ? l   l   <                         @@   	           E  0   @  
 
- 	                              Q       Ԁ              H l   l   <                         @@  
-           E  0   @  
+ 	                              $       Ԁ              Q l   l   <                         @@  	           E  0   @  
 
- 	                              (	       Ԁ              x)	 l   l   <                        @@  	           E  0   @  
+ 	                              <)	 l   l                       @@  
+           E  0   @  
 
- 	                              )	       Ԁ              )	 l   l   <                         @@              E  0   @  
+ 	                              g)	 <   <                   @@   
+              )	 l   l   <                         @@              E  0   @  
 
- 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
+ 	                              *	       Ԁ              +	 <   <                   @@  
+              *-	 l   l   <                0        @@             E  0   @  
 
  	                              E
        Ԁ              
- l   l   <                0        @@  
-           E  0   @  
+ l   l   <                @        @@             E  0   @  
 
  	                              (
        Ԁ              
  l   l   <                         @@              E  0   @  
 
- 	                              
- l   l   <                         @@              E  0   @  
-
- 	                              P
- l   l   <                         @@              E  0   @  
-
- 	                              
- l   l   <                         @@              E  0   @  
-
- 	                              Ź
-       Ԁ              
- l   l   <                @        @@             E  0   @  
+ 	                              d
+       Ԁ              @
+ l   l   <                P        @@             E  0   @  
 
- 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
+ 	                           	   5       Ԁ           	   6 l   l   <                `        @@             E  0   @  
 
  	                           	   6       Ԁ           	   7 l   l   <                         @@              E  0   @  
 
- 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
+ 	                           	   8       Ԁ           	   9 l   l   <                p        @@             E  0   @  
 
  	                           
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/flame/flame-regression-test-1-1.pcap ns-3.21/src/mesh/test/flame/flame-regression-test-1-1.pcap
--- ns-3.20/src/mesh/test/flame/flame-regression-test-1-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/flame/flame-regression-test-1-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,107 +1,106 @@
-ò            i      H  X   X                    @@                
+ò            i         X   X                   @@                
 
-       s  X   X                    @@               
+          X   X                    @@               
 
-         X   X   <                          @@                     
+         X   X   <                          @@                     
      
-               Ԁ                X   X                   @@               
-
-       !  X   X   <                         @@                    
+               Ԁ                X   X   <                         @@                    
      
-               Ԁ                l   l   <                         @@              E  0    @  
+       V        Ԁ              ^  l   l   <                          @@              E  0    @  
 
- 	                                      Ԁ              p  l   l   <                          @@             E  0    @  
+ 	                              n        Ԁ                l   l   <                          @@             E  0    @  
 
- 	                              U        Ԁ                <   <                    @@                   <   <          0         @@                  <   <                    @@                5  X   X          0         @@                
+ 	                                      Ԁ              =  <   <                    @@                   <   <          0         @@                	  <   <          0         @@                  X   X          0         @@                
 
-       5  X   X          @         @@               
+         X   X          @         @@               
 
-       H7  X   X   <                0         @@                     
+       E  X   X   <                @         @@                     
      
-       X7        Ԁ              [8  X   X          @         @@               
+       U        Ԁ              O  X   X          P         @@               
 
-       8  X   X   <                P         @@                    
+         X   X   <                P         @@                    
      
-       9        Ԁ              \:  l   l   <                @         @@              E  0    @  
+               Ԁ              }  l   l   <                @         @@              E  0    @  
 
- 	                              l:        Ԁ              :  l   l   <                `         @@             E  0    @  
+ 	                                      Ԁ                l   l   <                `         @@             E  0    @  
 
- 	                              ;        Ԁ              H l   l   <                P         @@              E  0   @  
+ 	                                      Ԁ              H l   l   <                `         @@              E  0   @  
 
- 	                              X       Ԁ               l   l   <                p         @@             E  0   @  
+ 	                              X       Ԁ               l   l   <                p         @@             E  0   @  
 
  	                                     Ԁ              g l   l   <                P         @@              E  0   @  
 
- 	                              w       Ԁ              C l   l   <                         @@             E  0   @  
+ 	                              w       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              (       Ԁ               l   l   <                `         @@              E  0   @  
+ 	                              ׊       Ԁ               l   l   <                p         @@              E  0   @  
 
- 	                                     Ԁ              O l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              O l   l   <                         @@             E  0   @  
 
  	                              4       Ԁ               l   l   <                `         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              n l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                p         @@              E  0   @  
+ 	                              S       Ԁ               l   l   <                         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
  	                              ԕ       Ԁ               l   l   <                p         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              h l   l   <                         @@             E  0   @  
 
- 	                              q       Ԁ              ( l   l   <                         @@              E  0   @  
-
- 	                              8       Ԁ               l   l   <                         @@             E  0   @  
+ 	                               l   l   <                         @@             E  0   @  
+
+ 	                                     Ԁ              ( l   l   <                         @@              E  0   @  
 
- 	                               l   l   <                         @@             E  0   @  
+ 	                              8       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@              E  0   @  
+ 	                              t       Ԁ              G l   l   <                         @@              E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                              W       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              ȡ l   l                        @@              E  0   @  
+ 	                                     Ԁ              ȡ l   l   <                         @@   	           E  0   @  
 
- 	                               l   l                        @@             E  0   @  
+ 	                              ء       Ԁ              / l   l   <                         @@  	           E  0   @  
 
- 	                               l   l   <                         @@   
-           E  0   @  
+ 	                                     Ԁ               l   l   <                         @@   	           E  0   @  
 
- 	                              $       Ԁ               l   l   <                         @@  
-           E  0   @  
+ 	                                     Ԁ               l   l   <                         @@  	           E  0   @  
 
- 	                                     Ԁ              h(	 l   l   <                         @@   	           E  0   @  
+ 	                                     Ԁ              h(	 l   l                        @@   
+           E  0   @  
 
- 	                              x(	       Ԁ              (	 l   l   <                        @@  	           E  0   @  
+ 	                              (	 l   l                       @@  
+           E  0   @  
 
- 	                              )	       Ԁ              *	 l   l   <                         @@              E  0   @  
+ 	                              )	 <   <                   @@   
+              *	 l   l   <                         @@              E  0   @  
 
- 	                              *	       Ԁ              c+	 l   l   <                         @@             E  0   @  
+ 	                              *	       Ԁ              ?+	 <   <                   @@  
+              ;,	 <   <                   @@  
+              ,	 l   l   <                0        @@             E  0   @  
 
- 	                              H,	       Ԁ              
- l   l   <                         @@   
-           E  0   @  
+ 	                              f-	       Ԁ              
+ l   l   <                         @@              E  0   @  
 
  	                              
        Ԁ              o
- l   l   <                0        @@  
-           E  0   @  
+ l   l   <                @        @@             E  0   @  
 
  	                              T
-       Ԁ              
- l   l   <                         @@              E  0   @  
+       Ԁ              '
+ l   l   <                         @@              E  0   @  
 
- 	                              
-       Ԁ              
- l   l   <                @        @@             E  0   @  
+ 	                              7
+       Ԁ              
+ l   l   <                P        @@             E  0   @  
 
- 	                              Ժ
-       Ԁ           	   5 l   l   <                         @@              E  0   @  
+ 	                              |
+       Ԁ           	   5 l   l   <                         @@              E  0   @  
 
- 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
+ 	                           	   5       Ԁ           	   6 l   l   <                `        @@             E  0   @  
 
  	                           	   6       Ԁ           	   7 l   l   <                         @@              E  0   @  
 
- 	                           	   7       Ԁ           	   78 l   l   <                `        @@             E  0   @  
+ 	                           	   7       Ԁ           	   m8 l   l   <                p        @@             E  0   @  
 
- 	                           	   9       Ԁ           
\ No newline at end of file
+ 	                           	   R9       Ԁ           
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/flame/flame-regression-test-2-1.pcap ns-3.21/src/mesh/test/flame/flame-regression-test-2-1.pcap
--- ns-3.20/src/mesh/test/flame/flame-regression-test-2-1.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/flame/flame-regression-test-2-1.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,72 +1,83 @@
-ò            i        X   X                    @@                
+ò            i      X  X   X                    @@                
 
-         X   X                    @@               
+           X   X                   @@                
 
-               Ԁ                X   X   <                         @@                    
+       L  X   X                    @@               
+
+       D        Ԁ                X   X   <                         @@                    
      
-               Ԁ                l   l   <                         @@              E  0    @  
+       *        Ԁ                l   l   <                          @@              E  0    @  
+
+ 	                                l   l   <                          @@              E  0    @  
 
- 	                                      Ԁ                l   l   <                          @@             E  0    @  
+ 	                                      Ԁ              n  l   l   <                          @@             E  0    @  
 
- 	                                <   <          0         @@                %  <   <                    @@                6  X   X          @         @@               
+ 	                              "	  <   <          0         @@                M	  <   <          0         @@                  X   X          @         @@               
 
-       6  X   X   <                0         @@                     
+         X   X   <                @         @@                     
      
-       7        Ԁ              7  X   X          @         @@               
+               Ԁ                X   X          P         @@               
 
-       M9  X   X   <                P         @@                    
+       n  X   X   <                P         @@                    
      
-       :        Ԁ              l;  l   l   <                `         @@             E  0    @  
+               Ԁ                l   l   <                `         @@             E  0    @  
 
- 	                              |;        Ԁ               l   l   <                P         @@              E  0   @  
+ 	                                      Ԁ               l   l   <                `         @@              E  0   @  
 
- 	                                     Ԁ                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              X l   l   <                p         @@             E  0   @  
+
+ 	                                     Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              @ l   l   <                `         @@              E  0   @  
+ 	                                     Ԁ              @ l   l   <                p         @@              E  0   @  
 
- 	                              %       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              %       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              D       Ԁ              h l   l   <                         @@             E  0   @  
+ 	                              D       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                              x       Ԁ               l   l   <                p         @@              E  0   @  
+ 	                              '       Ԁ               l   l   <                         @@              E  0   @  
 
- 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
+ 	                              Ŕ       Ԁ               l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ              5 l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              S l   l   <                         @@             E  0   @  
 
- 	                              E       Ԁ               l   l   <                         @@              E  0   @  
+ 	                              c       Ԁ               l   l   <                         @@              E  0   @  
 
- 	                              e       Ԁ              8 l   l   <                         @@             E  0   @  
+ 	                              e       Ԁ              8 l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ               l   l   <                         @@             E  0   @  
+ 	                                     Ԁ              W l   l   <                         @@             E  0   @  
 
- 	                                     Ԁ                l   l                        @@              E  0   @  
+ 	                              g       Ԁ                l   l   <                         @@   	           E  0   @  
 
- 	                               l   l                        @@             E  0   @  
+ 	                                     Ԁ              آ l   l   <                         @@  	           E  0   @  
 
- 	                              Q       Ԁ              H l   l   <                         @@  
-           E  0   @  
+ 	                              $       Ԁ              Q l   l   <                         @@  	           E  0   @  
 
- 	                              X       Ԁ              '	 l   l   <                         @@   	           E  0   @  
+ 	                              a       Ԁ              '	 l   l                        @@   
+           E  0   @  
 
- 	                              (	       Ԁ              x)	 l   l   <                        @@  	           E  0   @  
+ 	                              <)	 l   l                       @@  
+           E  0   @  
 
- 	                              *	       Ԁ              ,	 l   l   <                         @@             E  0   @  
+ 	                              *	       Ԁ              +	 <   <                   @@  
+              +	 <   <                   @@  
+              *-	 l   l   <                0        @@             E  0   @  
 
- 	                              ,	       Ԁ              `
- l   l   <                         @@   
-           E  0   @  
+ 	                              :-	       Ԁ              `
+ l   l   <                         @@              E  0   @  
 
  	                              E
-       Ԁ              Ź
-       Ԁ              
- l   l   <                @        @@             E  0   @  
+       Ԁ              
+ l   l   <                @        @@             E  0   @  
+
+ 	                              d
+       Ԁ              @
+ l   l   <                P        @@             E  0   @  
 
- 	                              
-       Ԁ           	    5 l   l   <                         @@              E  0   @  
+ 	                              P
+       Ԁ           	    5 l   l   <                         @@              E  0   @  
 
- 	                           	   5       Ԁ           	   6 l   l   <                P        @@             E  0   @  
+ 	                           	   5       Ԁ           	   6 l   l   <                `        @@             E  0   @  
 
- 	                           	   8       Ԁ           	   8 l   l   <                `        @@             E  0   @  
+ 	                           	   8       Ԁ           	   9 l   l   <                p        @@             E  0   @  
 
- 	                           	   8       Ԁ           
\ No newline at end of file
+ 	                           	   &9       Ԁ           
\ No newline at end of file
diff -Naur ns-3.20/src/mesh/test/mesh-information-element-vector-test-suite.cc ns-3.21/src/mesh/test/mesh-information-element-vector-test-suite.cc
--- ns-3.20/src/mesh/test/mesh-information-element-vector-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/test/mesh-information-element-vector-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -40,7 +40,7 @@
 struct MeshInformationElementVectorBist : public TestCase
 {
   MeshInformationElementVectorBist () :
-    TestCase ("Serializarion test for all mesh information elements")
+    TestCase ("Serialization test for all mesh information elements")
   {
   };
   void DoRun ();
diff -Naur ns-3.20/src/mesh/wscript ns-3.21/src/mesh/wscript
--- ns-3.20/src/mesh/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mesh/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_module('mesh', ['internet', 'wifi', 'bridge', 'applications'])
+    obj = bld.create_ns3_module('mesh', ['internet', 'wifi', 'applications'])
 
     obj.source = [
         'model/mesh-information-element-vector.cc',
diff -Naur ns-3.20/src/mobility/bindings/modulegen__gcc_ILP32.py ns-3.21/src/mobility/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/mobility/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mobility/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -2250,10 +2250,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2264,25 +2264,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2399,20 +2399,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/mobility/bindings/modulegen__gcc_LP64.py ns-3.21/src/mobility/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/mobility/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mobility/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -2250,10 +2250,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2264,25 +2264,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2399,20 +2399,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/mobility/test/mobility-test-suite.cc ns-3.21/src/mobility/test/mobility-test-suite.cc
--- ns-3.20/src/mobility/test/mobility-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/mobility/test/mobility-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,372 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright 2010 University of Washington
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/*
+ * This test suite is intended to test mobility use cases in general,
+ * as typically used by user programs (i.e. with the helper layer
+ * involved).
+ */
+
+#include "ns3/test.h"
+#include "ns3/boolean.h"
+#include "ns3/simulator.h"
+#include "ns3/scheduler.h"
+#include "ns3/vector.h"
+#include "ns3/mobility-model.h"
+#include "ns3/waypoint-mobility-model.h"
+#include "ns3/mobility-helper.h"
+
+using namespace ns3;
+
+// Test whether course change notifications occur regardless of calls
+// to Update() position (which are triggered by calls to GetPosition())
+class WaypointLazyNotifyFalse : public TestCase
+{
+public:
+  WaypointLazyNotifyFalse ();
+  virtual ~WaypointLazyNotifyFalse ();
+
+private:
+  void TestXPosition (double expectedXPos);
+  void CourseChangeCallback (std::string path, Ptr<const MobilityModel> model);
+  virtual void DoRun (void);
+  Ptr<Node> m_node;
+  Ptr<WaypointMobilityModel> m_mob;
+  int m_courseChanges;
+};
+
+WaypointLazyNotifyFalse::WaypointLazyNotifyFalse ()
+  : TestCase ("Test behavior when LazyNotify is false"),
+    m_courseChanges (0)
+{
+}
+
+WaypointLazyNotifyFalse::~WaypointLazyNotifyFalse ()
+{
+}
+
+void
+WaypointLazyNotifyFalse::TestXPosition (double expectedXPos)
+{
+  Vector pos = m_mob->GetPosition ();
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
+}
+
+void
+WaypointLazyNotifyFalse::CourseChangeCallback (std::string path, Ptr<const MobilityModel> model)
+{
+  // All waypoints (at 10 second intervals) should trigger a course change
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (m_courseChanges * 10.0, Simulator::Now ().GetSeconds (), 0.001, "Course change not notified correctly", __FILE__, __LINE__);
+  m_courseChanges++;
+}
+
+void
+WaypointLazyNotifyFalse::DoRun (void)
+{
+  m_node = CreateObject<Node> ();
+  m_mob = CreateObject<WaypointMobilityModel> ();
+  // LazyNotify should by default be false
+  m_node->AggregateObject (m_mob);
+  Waypoint wpt (Seconds (0.0), Vector (0.0, 0.0, 0.0));
+  m_mob->AddWaypoint (wpt);
+  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
+  m_mob->AddWaypoint (wpt2);
+  Waypoint wpt3 (Seconds (20.0), Vector (20.0, 20.0, 20.0));
+  m_mob->AddWaypoint (wpt3);
+
+  Simulator::Schedule (Seconds (5.0), &WaypointLazyNotifyFalse::TestXPosition, this, 5);
+  Simulator::Run ();
+  Simulator::Destroy ();
+}
+
+class WaypointLazyNotifyTrue : public TestCase
+{
+public:
+  WaypointLazyNotifyTrue ();
+  virtual ~WaypointLazyNotifyTrue ();
+
+private:
+  void TestXPosition (double expectedXPos);
+  void CourseChangeCallback (std::string path, Ptr<const MobilityModel> model);
+  virtual void DoRun (void);
+  Ptr<Node> m_node;
+  Ptr<WaypointMobilityModel> m_mob;
+};
+
+WaypointLazyNotifyTrue::WaypointLazyNotifyTrue ()
+  : TestCase ("Test behavior when LazyNotify is true")
+{
+}
+
+WaypointLazyNotifyTrue::~WaypointLazyNotifyTrue ()
+{
+}
+
+void
+WaypointLazyNotifyTrue::TestXPosition (double expectedXPos)
+{
+  Vector pos = m_mob->GetPosition ();
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
+}
+
+void
+WaypointLazyNotifyTrue::CourseChangeCallback (std::string path, Ptr<const MobilityModel> model)
+{
+  // This should trigger at time 15 only, since that is the first time that
+  // position is updated due to LazyNotify
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (15, Simulator::Now ().GetSeconds (), 0.001, "Course change not notified correctly", __FILE__, __LINE__);
+}
+
+void
+WaypointLazyNotifyTrue::DoRun (void)
+{
+  m_node = CreateObject<Node> ();
+  m_mob = CreateObject<WaypointMobilityModel> ();
+  m_mob->SetAttributeFailSafe ("LazyNotify", BooleanValue (true));
+  m_node->AggregateObject (m_mob);
+  Waypoint wpt (Seconds (0.0), Vector (0.0, 0.0, 0.0));
+  m_mob->AddWaypoint (wpt);
+  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
+  m_mob->AddWaypoint (wpt2);
+  Waypoint wpt3 (Seconds (20.0), Vector (20.0, 20.0, 20.0));
+  m_mob->AddWaypoint (wpt3);
+
+  Simulator::Schedule (Seconds (15.0), &WaypointLazyNotifyTrue::TestXPosition, this, 15);
+  Simulator::Run ();
+  Simulator::Destroy ();
+}
+
+class WaypointInitialPositionIsWaypoint : public TestCase
+{
+public:
+  WaypointInitialPositionIsWaypoint ();
+  virtual ~WaypointInitialPositionIsWaypoint ();
+
+private:
+  void TestXPosition (Ptr<const WaypointMobilityModel> model, double expectedXPos);
+  void TestNumWaypoints (Ptr<const WaypointMobilityModel> model, uint32_t num);
+  virtual void DoRun (void);
+  Ptr<WaypointMobilityModel> m_mob1;
+  Ptr<WaypointMobilityModel> m_mob2;
+  Ptr<WaypointMobilityModel> m_mob3;
+  Ptr<WaypointMobilityModel> m_mob4;
+  Ptr<WaypointMobilityModel> m_mob5;
+};
+
+WaypointInitialPositionIsWaypoint::WaypointInitialPositionIsWaypoint ()
+  : TestCase ("Test behavior of Waypoint InitialPositionIsWaypoint")
+{
+}
+
+WaypointInitialPositionIsWaypoint::~WaypointInitialPositionIsWaypoint ()
+{
+}
+
+void
+WaypointInitialPositionIsWaypoint::TestXPosition (Ptr<const WaypointMobilityModel> model, double expectedXPos)
+{
+  Vector pos = model->GetPosition ();
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
+}
+
+void
+WaypointInitialPositionIsWaypoint::TestNumWaypoints (Ptr<const WaypointMobilityModel> model, uint32_t num)
+{
+  NS_TEST_EXPECT_MSG_EQ (model->WaypointsLeft (), num, "Unexpected number of waypoints left");
+}
+
+void
+WaypointInitialPositionIsWaypoint::DoRun (void)
+{
+  // Case 1:  InitialPositionIsWaypoint == false, and we call SetPosition
+  // without any waypoints added.  There should be no waypoints after
+  // time 0
+  m_mob1 = CreateObject<WaypointMobilityModel> ();
+  m_mob1->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (false));
+  m_mob1->SetPosition (Vector (10.0, 10.0, 10.0));
+  // At time 1s, there should be no waypoints
+  Simulator::Schedule (Seconds (1.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob1, 0);
+  // At time 15s, the model should still be at x position 10.0
+  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob1, 10.0);
+
+  // Case 2:  InitialPositionIsWaypoint == false, and we call SetPosition
+  // after adding a waypoint.
+  m_mob2 = CreateObject<WaypointMobilityModel> ();
+  m_mob2->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (false));
+  Waypoint wpt21 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
+  m_mob2->AddWaypoint (wpt21);
+  Waypoint wpt22 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
+  m_mob2->AddWaypoint (wpt22);
+  m_mob2->SetPosition (Vector (10.0, 10.0, 10.0));
+  // At time 3, no waypoints have been hit, so position should be 10 and
+  // numWaypoints should be 2, or 1 excluding the next one
+  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob2, 10.0);
+  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob2, 1);
+  // At time 8, check that X position is 18 (i.e. position is interpolating
+  // between 15 and 20) and there is one waypoint left, but we exclude
+  // the next one so we test for zero waypoints
+  Simulator::Schedule (Seconds (8.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob2, 18.0);
+  Simulator::Schedule (Seconds (8.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob2, 0);
+
+  // Case 3:  InitialPositionIsWaypoint == true, and we call SetPosition
+  // without any waypoints added.
+  m_mob3 = CreateObject<WaypointMobilityModel> ();
+  m_mob3->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
+  m_mob3->SetPosition (Vector (10.0, 10.0, 10.0));
+  // At time 1s, there should be zero waypoints not counting the next one
+  Simulator::Schedule (Seconds (1.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob3, 0);
+  // At time 15s, the model should still be at x position 10.0
+  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob3, 10.0);
+
+  // Case 4:  InitialPositionIsWaypoint == true, and we call SetPosition
+  // after adding a waypoint.
+  m_mob4 = CreateObject<WaypointMobilityModel> ();
+  m_mob4->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
+  Waypoint wpt41 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
+  m_mob4->AddWaypoint (wpt41);
+  Waypoint wpt42 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
+  m_mob4->AddWaypoint (wpt42);
+  // Here, SetPosition() is called after waypoints have been added.  In
+  // this case, the initial position is set until the time of the first
+  // waypoint, at which time it jumps to the waypoint and begins moving
+  m_mob4->SetPosition (Vector (10.0, 10.0, 10.0));
+  // At time 3, position should be fixed still at 10
+  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 10.0);
+  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob4, 1);
+  // At time 6, we should be moving between 15 and 20
+  Simulator::Schedule (Seconds (6.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 16.0);
+  // At time 15, we should be fixed at 20
+  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 20.0);
+
+  // case 5:  If waypoint and SetPosition both called at time 0,
+  // SetPosition takes precedence
+  m_mob5 = CreateObject<WaypointMobilityModel> ();
+  m_mob5->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
+  // Note:  The below statement would result in a crash, because it would
+  // violate the rule that waypoints must increase in start time
+  // m_mob5->SetPosition (Vector (10.0, 10.0, 10.0));
+  Waypoint wpt51 (Seconds (0.0), Vector (200.0, 200.0, 200.0));
+  m_mob5->AddWaypoint (wpt51);
+  Waypoint wpt52 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
+  m_mob5->AddWaypoint (wpt52);
+  Waypoint wpt53 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
+  m_mob5->AddWaypoint (wpt53);
+  // Here, since waypoints already exist, the below SetPosition will cancel
+  // out wpt51 above, and model will stay at initial position until time 5
+  m_mob5->SetPosition (Vector (10.0, 10.0, 10.0));
+  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob5, 10.0);
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+}
+
+class WaypointMobilityModelViaHelper : public TestCase
+{
+public:
+  WaypointMobilityModelViaHelper ();
+  virtual ~WaypointMobilityModelViaHelper ();
+
+private:
+  void TestXPosition (Ptr<const WaypointMobilityModel> mob, double expectedXPos);
+  virtual void DoRun (void);
+};
+
+WaypointMobilityModelViaHelper::WaypointMobilityModelViaHelper ()
+  : TestCase ("Test behavior using MobilityHelper and PositionAllocator")
+{
+}
+
+WaypointMobilityModelViaHelper::~WaypointMobilityModelViaHelper ()
+{
+}
+
+void
+WaypointMobilityModelViaHelper::TestXPosition (Ptr<const WaypointMobilityModel> mob, double expectedXPos)
+{
+  Vector pos = mob->GetPosition ();
+  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
+}
+
+// WaypointMobilityModel tests using the helper
+void
+WaypointMobilityModelViaHelper::DoRun (void)
+{
+  NodeContainer c;
+  c.Create (1);
+  MobilityHelper mobility;
+  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
+  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
+  mobility.SetPositionAllocator (positionAlloc);
+  // When InitialPositionIsWaypoint is false (default), the position
+  // set by the position allocator is ignored.  The first waypoint set will
+  // set the initial position (with velocity 0 until first waypoint time)
+  mobility.SetMobilityModel ("ns3::WaypointMobilityModel",
+                             "InitialPositionIsWaypoint", BooleanValue (false));
+  mobility.Install (c);
+
+  // Get back a pointer to this
+  Ptr<WaypointMobilityModel> mob = c.Get (0)->GetObject<WaypointMobilityModel> ();
+  // Waypoint added at time 0 will override initial position
+  Waypoint wpt (Seconds (5.0), Vector (20.0, 20.0, 20.0));
+  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
+  mob->AddWaypoint (wpt);
+  mob->AddWaypoint (wpt2);
+  // At time 3 (before first waypoint, position is 20
+  Simulator::Schedule (Seconds (3), &WaypointMobilityModelViaHelper::TestXPosition, this, mob, 20);
+  // At time 7.5 (midway between points 1 and 2, position is 15
+  Simulator::Schedule (Seconds (7.5), &WaypointMobilityModelViaHelper::TestXPosition, this, mob, 15);
+
+  // When InitialPositionIsWaypoint is true, the position allocator creates
+  // the first waypoint, and movement occurs between this origin and the
+  // initial waypoint below at 5 seconds
+  NodeContainer c2;
+  c2.Create (1);
+  MobilityHelper mobility2;
+  Ptr<ListPositionAllocator> positionAlloc2 = CreateObject<ListPositionAllocator> ();
+  positionAlloc2->Add (Vector (0.0, 0.0, 0.0));
+  mobility2.SetPositionAllocator (positionAlloc2);
+  mobility2.SetMobilityModel ("ns3::WaypointMobilityModel",
+                              "InitialPositionIsWaypoint", BooleanValue (true));
+  mobility2.Install (c2);
+  Ptr<WaypointMobilityModel> mob2 = c2.Get (0)->GetObject<WaypointMobilityModel> ();
+  Waypoint wpt3 (Seconds (5.0), Vector (20.0, 20.0, 20.0));
+  mob2->AddWaypoint (wpt3);
+  // Move to position 12 at 3 seconds
+  Simulator::Schedule (Seconds (3), &WaypointMobilityModelViaHelper::TestXPosition, this, mob2, 12);
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+}
+
+class MobilityTestSuite : public TestSuite
+{
+public:
+  MobilityTestSuite ();
+};
+
+MobilityTestSuite::MobilityTestSuite ()
+  : TestSuite ("mobility", UNIT)
+{
+  AddTestCase (new WaypointLazyNotifyFalse, TestCase::QUICK);
+  AddTestCase (new WaypointLazyNotifyTrue, TestCase::QUICK);
+  AddTestCase (new WaypointInitialPositionIsWaypoint, TestCase::QUICK);
+  AddTestCase (new WaypointMobilityModelViaHelper, TestCase::QUICK);
+}
+
+static MobilityTestSuite mobilityTestSuite;
diff -Naur ns-3.20/src/mobility/wscript ns-3.21/src/mobility/wscript
--- ns-3.20/src/mobility/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mobility/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -25,6 +25,7 @@
 
     mobility_test = bld.create_ns3_module_test_library('mobility')
     mobility_test.source = [
+        'test/mobility-test-suite.cc',
         'test/mobility-trace-test-suite.cc',
         'test/ns2-mobility-helper-test-suite.cc',
         'test/steady-state-random-waypoint-mobility-model-test.cc',
diff -Naur ns-3.20/src/mpi/bindings/modulegen__gcc_ILP32.py ns-3.21/src/mpi/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/mpi/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mpi/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -1684,10 +1684,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1698,25 +1698,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1833,20 +1833,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/mpi/bindings/modulegen__gcc_LP64.py ns-3.21/src/mpi/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/mpi/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mpi/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -1684,10 +1684,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1698,25 +1698,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1833,20 +1833,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/mpi/model/distributed-simulator-impl.cc ns-3.21/src/mpi/model/distributed-simulator-impl.cc
--- ns-3.20/src/mpi/model/distributed-simulator-impl.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mpi/model/distributed-simulator-impl.cc	2014-09-17 20:03:14.000000000 -0700
@@ -76,7 +76,7 @@
   return m_isFinished;
 }
 
-Time DistributedSimulatorImpl::m_lookAhead = Seconds (0);
+Time DistributedSimulatorImpl::m_lookAhead = Seconds (-1);
 
 TypeId
 DistributedSimulatorImpl::GetTypeId (void)
@@ -167,14 +167,15 @@
 #ifdef NS3_MPI
   if (MpiInterface::GetSize () <= 1)
     {
-      DistributedSimulatorImpl::m_lookAhead = Seconds (0);
-      m_grantedTime = Seconds (0);
+      m_lookAhead = Seconds (0);
     }
   else
     {
-      DistributedSimulatorImpl::m_lookAhead = GetMaximumSimulationTime ();
-
-      m_grantedTime = GetMaximumSimulationTime ();
+      if (m_lookAhead == Seconds (-1))
+        {
+          m_lookAhead = GetMaximumSimulationTime ();
+        }
+      // else it was already set by SetLookAhead
 
       NodeContainer c = NodeContainer::GetGlobal ();
       for (NodeContainer::Iterator iter = c.Begin (); iter != c.End (); ++iter)
@@ -221,15 +222,17 @@
               TimeValue delay;
               channel->GetAttribute ("Delay", delay);
 
-              if (delay.Get ().GetSeconds () < DistributedSimulatorImpl::m_lookAhead.GetSeconds ())
+              if (delay.Get () < m_lookAhead)
                 {
-                  DistributedSimulatorImpl::m_lookAhead = delay.Get ();
-                  m_grantedTime = delay.Get ();
+                  m_lookAhead = delay.Get ();
                 }
             }
         }
     }
 
+  // m_lookAhead is now set
+  m_grantedTime = m_lookAhead;
+
   /*
    * Compute the maximum inter-task latency and use that value
    * for tasks with no inter-task links.
@@ -278,6 +281,20 @@
 }
 
 void
+DistributedSimulatorImpl::SetMaximumLookAhead (const Time lookAhead)
+{
+  if (lookAhead > 0)
+    {
+      NS_LOG_FUNCTION (this << lookAhead);
+      m_lookAhead = lookAhead;
+    }
+  else
+    {
+      NS_LOG_WARN ("attempted to set look ahead negative: " << lookAhead);
+    }
+}
+
+void
 DistributedSimulatorImpl::SetScheduler (ObjectFactory schedulerFactory)
 {
   NS_LOG_FUNCTION (this << schedulerFactory);
diff -Naur ns-3.20/src/mpi/model/distributed-simulator-impl.h ns-3.21/src/mpi/model/distributed-simulator-impl.h
--- ns-3.20/src/mpi/model/distributed-simulator-impl.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/mpi/model/distributed-simulator-impl.h	2014-09-17 20:03:14.000000000 -0700
@@ -122,6 +122,7 @@
   virtual Time Now (void) const;
   virtual Time GetDelayLeft (const EventId &id) const;
   virtual Time GetMaximumSimulationTime (void) const;
+  virtual void SetMaximumLookAhead (const Time lookAhead);
   virtual void SetScheduler (ObjectFactory schedulerFactory);
   virtual uint32_t GetSystemId (void) const;
   virtual uint32_t GetContext (void) const;
diff -Naur ns-3.20/src/netanim/examples/dumbbell-animation.cc ns-3.21/src/netanim/examples/dumbbell-animation.cc
--- ns-3.20/src/netanim/examples/dumbbell-animation.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/examples/dumbbell-animation.cc	2014-09-17 20:03:14.000000000 -0700
@@ -95,6 +95,7 @@
   // Create the animation object and configure for specified output
   AnimationInterface anim (animFile);
   anim.EnablePacketMetadata (); // Optional
+  anim.EnableIpv4L3ProtocolCounters (Seconds (0), Seconds (10)); // Optional
   
   // Set up the acutal simulation
   Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
diff -Naur ns-3.20/src/netanim/examples/dynamic_linknode.cc ns-3.21/src/netanim/examples/dynamic_linknode.cc
--- ns-3.20/src/netanim/examples/dynamic_linknode.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/examples/dynamic_linknode.cc	2014-09-17 20:03:14.000000000 -0700
@@ -58,12 +58,6 @@
   pAnim->UpdateLinkDescription (1, 10, oss.str ());
   pAnim->UpdateLinkDescription (1, 11, oss.str ());
   
-  // After 5 seconds mark node 3 as invisible 
-  if (Simulator::Now ().GetSeconds () > 5)
-  {
-    pAnim->ShowNode (3, false);
-  }
-
   // Every update change the node description for node 2
   std::ostringstream node0Oss;
   node0Oss << "-----Node:" << Simulator::Now ().GetSeconds ();
diff -Naur ns-3.20/src/netanim/examples/resources_demo.cc ns-3.21/src/netanim/examples/resources_demo.cc
--- ns-3.20/src/netanim/examples/resources_demo.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/examples/resources_demo.cc	2014-09-17 20:03:14.000000000 -0700
@@ -64,12 +64,6 @@
   pAnim->UpdateLinkDescription (1, 10, oss.str ());
   pAnim->UpdateLinkDescription (1, 11, oss.str ());
   
-  // After 5 seconds mark node 3 as invisible 
-  if (Simulator::Now ().GetSeconds () > 5)
-  {
-    pAnim->ShowNode (3, false);
-  }
-
   // Every update change the node description for node 2
   std::ostringstream node0Oss;
   node0Oss << "-----Node:" << Simulator::Now ().GetSeconds ();
diff -Naur ns-3.20/src/netanim/examples/wireless-animation.cc ns-3.21/src/netanim/examples/wireless-animation.cc
--- ns-3.20/src/netanim/examples/wireless-animation.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/examples/wireless-animation.cc	2014-09-17 20:03:14.000000000 -0700
@@ -164,17 +164,28 @@
 
   Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
   Simulator::Stop (Seconds (15.0));
-  AnimationInterface::SetNodeDescription (wifiApNode, "AP"); // Optional
-  AnimationInterface::SetNodeDescription (wifiStaNodes, "STA"); //b Optional
-  AnimationInterface::SetNodeDescription (csmaNodes, "CSMA"); // Optional
-  AnimationInterface::SetNodeColor (wifiApNode, 0, 255, 0); // Optional
-  AnimationInterface::SetNodeColor (wifiStaNodes, 255, 0, 0); // Optional
-  AnimationInterface::SetNodeColor (csmaNodes, 0, 0, 255); // Optional
 
   AnimationInterface anim ("wireless-animation.xml"); // Mandatory
+  for (uint32_t i = 0; i < wifiStaNodes.GetN (); ++i)
+    {
+      anim.UpdateNodeDescription (wifiStaNodes.Get (i), "STA"); // Optional
+      anim.UpdateNodeColor (wifiStaNodes.Get (i), 255, 0, 0); // Optional
+    }
+  for (uint32_t i = 0; i < wifiApNode.GetN (); ++i)
+    {
+      anim.UpdateNodeDescription (wifiApNode.Get (i), "AP"); // Optional
+      anim.UpdateNodeColor (wifiApNode.Get (i), 0, 255, 0); // Optional
+    }
+  for (uint32_t i = 0; i < csmaNodes.GetN (); ++i)
+    {
+      anim.UpdateNodeDescription (csmaNodes.Get (i), "CSMA"); // Optional
+      anim.UpdateNodeColor (csmaNodes.Get (i), 0, 0, 255); // Optional 
+    }
 
   anim.EnablePacketMetadata (); // Optional
   anim.EnableIpv4RouteTracking ("routingtable-wireless.xml", Seconds (0), Seconds (5), Seconds (0.25)); //Optional
+  anim.EnableWifiMacCounters (Seconds (0), Seconds (10)); //Optional
+  anim.EnableWifiPhyCounters (Seconds (0), Seconds (10)); //Optional
   Simulator::Run ();
   Simulator::Destroy ();
   return 0;
diff -Naur ns-3.20/src/netanim/helper/animation-interface-helper.cc ns-3.21/src/netanim/helper/animation-interface-helper.cc
--- ns-3.20/src/netanim/helper/animation-interface-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/helper/animation-interface-helper.cc	1969-12-31 16:00:00.000000000 -0800
@@ -1,97 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: John Abraham<john.abraham@gatech.edu>
- */
-
-// Animation Interface helpers
-
-#include "ns3/animation-interface-helper.h"
-#include "ns3/log.h"
-
-#include <iostream>
-
-NS_LOG_COMPONENT_DEFINE ("AnimationInterfaceHelper");
-
-namespace ns3 {
-AnimPacketInfo::AnimPacketInfo()
-  : m_txnd (0), m_fbTx (0), m_lbTx (0), 
-    m_txLoc (Vector (0,0,0))
-{
-}
-
-AnimPacketInfo::AnimPacketInfo(Ptr <const NetDevice> txnd, const Time& fbTx, 
-  const Time& lbTx, Vector txLoc, uint32_t txNodeId)
-  : m_txnd (txnd), m_fbTx (fbTx.GetSeconds ()), m_lbTx (lbTx.GetSeconds ()), 
-    m_txLoc (txLoc)
-{
-  if (!m_txnd)
-    m_txNodeId = txNodeId;
-}
-
-void AnimPacketInfo::ProcessRxBegin (Ptr<const NetDevice> nd, const Time& fbRx)
-{
-  m_rx[nd->GetNode ()->GetId ()] = AnimRxInfo (fbRx, nd, 0);
-}
-
-bool AnimPacketInfo::ProcessRxEnd (Ptr<const NetDevice> nd, const Time& lbRx, Vector rxLoc)
-{
-  uint32_t NodeId = nd->GetNode ()->GetId (); 
-  // Find the RxInfo
-  if (m_rx.find (NodeId) == m_rx.end ())
-    {
-      return false;
-    } 
-  AnimRxInfo& rxInfo = m_rx[NodeId];
-  // Check if the NetDevice matches. A node may have several NetDevices
-  if (rxInfo.m_rxnd != nd) 
-    {
-      return false; 
-    }
-  rxInfo.rxRange = CalculateDistance (m_txLoc, rxLoc);
-  rxInfo.m_lbRx = lbRx.GetSeconds ();
-  rxInfo.SetPhyRxComplete ();
-  firstlastbitDelta = rxInfo.m_lbRx - rxInfo.m_fbRx;
-  return true;
-}
-
-AnimRxInfo AnimPacketInfo::GetRxInfo (Ptr<const NetDevice> nd)
-{
-  uint32_t NodeId = nd->GetNode ()->GetId (); 
-  NS_ASSERT (m_rx.find (NodeId) != m_rx.end ()); 
-  return m_rx[NodeId];
-}
-
-void AnimPacketInfo::RemoveRxInfo (Ptr<const NetDevice> nd)
-{
-  uint32_t NodeId = nd->GetNode ()->GetId (); 
-  m_rx.erase (m_rx.find (NodeId));
-}
-
-void AnimPacketInfo::ProcessRxDrop (Ptr<const NetDevice> nd)
-{
-}
-
-bool AnimRxInfo::IsPhyRxComplete ()
-{
-  return m_PhyRxComplete;
-}
-
-void AnimRxInfo::SetPhyRxComplete ()
-{
-  m_PhyRxComplete = true; 
-}
-
-} // namespace ns3
diff -Naur ns-3.20/src/netanim/helper/animation-interface-helper.h ns-3.21/src/netanim/helper/animation-interface-helper.h
--- ns-3.20/src/netanim/helper/animation-interface-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/helper/animation-interface-helper.h	1969-12-31 16:00:00.000000000 -0800
@@ -1,243 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: John Abraham <john.abraham@gatech.edu>
- */
-
-// Animation Interface helpers
-
-#ifndef _ANIMATION_INTERFACE_HELPER_H_
-#define _ANIMATION_INTERFACE_HELPER_H_
-
-#include "ns3/node.h"
-#include "ns3/mobility-model.h"
-#include "ns3/packet.h"
-#include "ns3/simulator.h"
-#include <vector>
-#include <map>
-
-namespace ns3 {
-
-
-/**
- * \ingroup netanim
- *
- * \brief AnimRxInfo helper class 
- *
- * This helper class keeps of wireless packets received
- * including info about the first bit received time,
- * last bit received time and NetDevice received on
- * It is intended only for use by the AnimationInterface
- * class.
- * 
- */
-
-class AnimRxInfo
-{
-public:
-
-  /**
-   * \brief Default constructor
-   *
-   */
-  AnimRxInfo () {};
-
-  /**
-   * \brief Constructor
-   * \param fbRx First-bit Receive time
-   * \param nd NetDevice where packet was received
-   * \param rxRange Reception range 
-   *
-   */
-  AnimRxInfo (const Time& fbRx, Ptr <const NetDevice> nd ,double rxRange)
-    : m_fbRx (fbRx.GetSeconds ()), m_lbRx (0), m_rxnd (nd), rxRange (rxRange), m_PhyRxComplete (false){}
-
-  /** 
-   * \brief First bit receive time
-   * \param m_fbRx First bit receive time
-   *
-   */
-  double m_fbRx;            
-  
-  /** 
-   * \brief Last bit receive time
-   * \param m_lbRx Last bit receive time
-   *
-   */
-  double m_lbRx;             
-
-  /**
-   * \brief Ptr to receiving NetDevice
-   * \param m_rxnd Ptr to receiving NetDevice
-   *
-   */
-  Ptr <const NetDevice> m_rxnd;
-
-  /** 
-   * \brief Reception range
-   * \param rxRange Reception range
-   *
-   */
-  double rxRange;
-  
-  /**
-   * \brief Check if Wifi Phy Rx is Complete
-   * \returns true if Wifi Phy Rx is complete
-   *
-   */
-  bool IsPhyRxComplete ();
-
-  /**
-   * \brief Set Wifi Phy Rx Complete
-   *
-   */
-  void SetPhyRxComplete ();
-
-private:
-  bool m_PhyRxComplete;
-
-};
-
-/**
- * \ingroup netanim
- *
- * \brief AnimPacketInfo helper class
- *
- * This helper class keeps of wireless packets transmitted and
- * received
- * including info about the last bit transmit time, first bit 
- * transmit time, location of the transmitter and
- * NetDevice transmited on
- * It is intended only for use by the AnimationInterface
- * class.
- *
- */
-
-class AnimPacketInfo
-
-{
-public:
-
-  /**
-   * \brief Default constructor
-   *
-   */
-  AnimPacketInfo ();
-  
-  /**
-   * \brief Constructor
-   * \param tx_nd Ptr to NetDevice that is transmitting
-   * \param fbTx First bit transmit time
-   * \param lbTx Last bit transmit time
-   * \param txLoc Transmitter Location
-   * \param txNodeId Tx Node Id if NetDevice is unknown
-   *
-   */
-  AnimPacketInfo(Ptr <const NetDevice> tx_nd, const Time& fbTx, const Time& lbTx,Vector txLoc, uint32_t txNodeId = 0);
-  
-  /**
-   * \brief Ptr to NetDevice that is transmitting
-   * \param m_txnd NetDevice that is transmitting
-   *
-   */ 
-  Ptr <const NetDevice> m_txnd;
-
-  /**
-   * \brief Tx Node Id if NetDevice is unknown
-   * \param m_txNodeId Tx Node Id if NetDevice is unknown
-   *
-   */
-  uint32_t m_txNodeId;
-
-  /** 
-   * \brief First bit transmission time
-   * \param m_fbTx First bit transmission time
-   *
-   */
-  double   m_fbTx;     
-
-  /**
-   * \brief Last bit transmission time
-   * \param m_lbTx Last bit transmission time
-   *
-   */
-  double   m_lbTx;     
-
-  /**
-   * \brief Transmitter's location
-   * \param m_txLoc Transmitter's Location
-   *
-   */
-  Vector   m_txLoc;
-
-
-  /**
-   * \brief Collection of receivers
-   * \param m_rx Collection of receivers
-   *
-   */
-  std::map<uint32_t,AnimRxInfo> m_rx;
-
-  /**
-   * \brief Process RxBegin notifications
-   * \param nd Ptr to NetDevice where packet was received
-   * \param fbRx First bit receive time
-   *
-   */
-  void ProcessRxBegin (Ptr <const NetDevice> nd, const Time& fbRx);
-
-  /**
-   * \brief Process RxEnd notifications
-   * \param nd Ptr to NetDevice where packet was received
-   * \param fbRx First bit receive time
-   * \param rxLoc Location of receiver
-   * \returns true if RxEnd notification was expected and processed
-   *
-   */
-  bool ProcessRxEnd (Ptr <const NetDevice> nd, const Time& fbRx, Vector rxLoc);
-
-  /**
-   * \brief Process RxDrop notifications
-   * \param nd Ptr to NetDevice where packet was dropped on reception
-   *
-   */
-  void ProcessRxDrop (Ptr <const NetDevice> nd);
-  
-  /**
-   * \brief GetRxInfo
-   * \param nd Ptr to NetDevice where packet was received
-   * \returns AnimRxInfo object
-   *
-   */ 
-  AnimRxInfo GetRxInfo (Ptr <const NetDevice> nd);
-
-  /**
-   * \brief RemoveRxInfo
-   * \param nd Ptr to NetDevice where packet was received
-   *
-   */ 
-  void RemoveRxInfo (Ptr <const NetDevice> nd);
-
-  /**
-   * \brief Time delta between First bit Rx and Last bit Rx
-   * \param firstlastbitDelta Time delta between First bit Rx and Last bit Rx
-   */
-   double firstlastbitDelta;
-
-};
-
-} // namespace ns3
-
-#endif
diff -Naur ns-3.20/src/netanim/model/animation-interface.cc ns-3.21/src/netanim/model/animation-interface.cc
--- ns-3.20/src/netanim/model/animation-interface.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/model/animation-interface.cc	2014-09-17 20:03:14.000000000 -0700
@@ -18,9 +18,18 @@
  * Contributions: Eugene Kalishenko <ydginster@gmail.com> (Open Source and Linux Laboratory http://dev.osll.ru/)
  */
 
-// Interface between ns3 and the network animator
+// Interface between ns-3 and the network animator
 
 
+
+#include <cstdio>
+#include <unistd.h>
+#include <sstream>
+#include <fstream>
+#include <string>
+#include <iomanip>
+#include <map>
+
 // ns3 includes
 #include "ns3/animation-interface.h"
 #include "ns3/channel.h"
@@ -29,7 +38,6 @@
 #include "ns3/mobility-model.h"
 #include "ns3/packet.h"
 #include "ns3/simulator.h"
-#include "ns3/animation-interface-helper.h"
 #include "ns3/wifi-mac-header.h"
 #include "ns3/wimax-mac-header.h"
 #include "ns3/wifi-net-device.h"
@@ -43,38 +51,35 @@
 #include "ns3/ipv4-routing-protocol.h"
 #include "ns3/energy-source-container.h"
 
-#include <cstdio>
-#include <unistd.h>
-#include <sstream>
-#include <fstream>
-#include <string>
-#include <iomanip>
-#include <map>
-
 NS_LOG_COMPONENT_DEFINE ("AnimationInterface");
 
 namespace ns3 {
 
-#define PURGE_INTERVAL 5
+// Globals
 
 static bool initialized = false;
-std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
-std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
-std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
 
 
-AnimationInterface::AnimationInterface (const std::string fn, bool enable3105, uint64_t maxPktsPerFile)
-  : m_routingF (0), m_mobilityPollInterval (Seconds (0.25)), 
+// Public methods
+
+AnimationInterface::AnimationInterface (const std::string fn)
+  : m_f (0),
+    m_routingF (0),
+    m_mobilityPollInterval (Seconds (0.25)), 
     m_outputFileName (fn),
-    m_outputFileSet (false), gAnimUid (0), m_randomPosition (true),
-    m_writeCallback (0), m_started (false), 
-    m_enablePacketMetadata (false), m_startTime (Seconds (0)), m_stopTime (Seconds (3600 * 1000)),
-    m_maxPktsPerFile (maxPktsPerFile), m_originalFileName (fn),
-    m_routingStopTime (Seconds (0)), m_routingFileName (""),
-    m_routingPollInterval (Seconds (5)), m_enable3105 (enable3105),
+    gAnimUid (0), 
+    m_writeCallback (0), 
+    m_started (false), 
+    m_enablePacketMetadata (false), 
+    m_startTime (Seconds (0)), 
+    m_stopTime (Seconds (3600 * 1000)),
+    m_maxPktsPerFile (MAX_PKTS_PER_TRACE_FILE), 
+    m_originalFileName (fn),
+    m_routingStopTime (Seconds (0)), 
+    m_routingFileName (""),
+    m_routingPollInterval (Seconds (5)), 
     m_trackPackets (true)
 {
-  m_uniformRandomVariable = CreateObject<UniformRandomVariable> ();
   initialized = true;
   StartAnimation ();
 }
@@ -84,2010 +89,2018 @@
   StopAnimation ();
 }
 
-void AnimationInterface::SkipPacketTracing ()
+void 
+AnimationInterface::SkipPacketTracing ()
 {
   m_trackPackets = false;
 }
 
-AnimationInterface & AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval)
-{
-  m_routingFileName = fileName;
-  SetRoutingOutputFile (m_routingFileName);
-  m_routingStopTime = stopTime;
-  m_routingPollInterval = pollInterval;
-  WriteN (GetXMLOpen_anim (0), m_routingF); 
-  Simulator::Schedule (startTime, &AnimationInterface::TrackIpv4Route, this);
-  return *this;
-}
-
-AnimationInterface & AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval)
-{
-  m_routingNc = nc;
-  return EnableIpv4RouteTracking (fileName, startTime, stopTime, pollInterval);
-}
-
-std::string AnimationInterface::GetIpv4RoutingTable (Ptr <Node> n)
+void
+AnimationInterface::EnableWifiPhyCounters (Time startTime, Time stopTime, Time pollInterval)
 {
-
-  NS_ASSERT (n);
-  Ptr <ns3::Ipv4> ipv4 = n->GetObject <ns3::Ipv4> ();
-  if (!ipv4)
+  m_wifiPhyCountersStopTime = stopTime;
+  m_wifiPhyCountersPollInterval = pollInterval;
+  m_wifiPhyTxDropCounterId = AddNodeCounter ("WifiPhy TxDrop", AnimationInterface::DOUBLE_COUNTER);
+  m_wifiPhyRxDropCounterId = AddNodeCounter ("WifiPhy RxDrop", AnimationInterface::DOUBLE_COUNTER);
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_WARN ("Node " << n->GetId () << " Does not have an Ipv4 object");
-      return "";
+      Ptr<Node> n = *i;
+      m_nodeWifiPhyTxDrop[n->GetId ()] = 0;
+      m_nodeWifiPhyRxDrop[n->GetId ()] = 0;
+      UpdateNodeCounter (m_wifiPhyTxDropCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_wifiPhyRxDropCounterId, n->GetId (), 0);
     }
-  std::stringstream stream;
-  Ptr<OutputStreamWrapper> routingstream = Create<OutputStreamWrapper> (&stream);
-  ipv4->GetRoutingProtocol ()->PrintRoutingTable (routingstream);
-  return stream.str ();
-
+  Simulator::Schedule (startTime, &AnimationInterface::TrackWifiPhyCounters, this);
+ 
 }
 
-void AnimationInterface::RecursiveIpv4RoutePathSearch (std::string from, std::string to, Ipv4RoutePathElements & rpElements)
+void
+AnimationInterface::EnableWifiMacCounters (Time startTime, Time stopTime, Time pollInterval)
 {
-  NS_LOG_INFO ("RecursiveIpv4RoutePathSearch from:" << from.c_str () << " to:" << to.c_str ());
-  if ((from == "0.0.0.0") || (from == "127.0.0.1"))
-    {
-      NS_LOG_INFO ("Got " << from.c_str () << " End recursion");
-      return;
-    }
-  Ptr <Node> fromNode = NodeList::GetNode (m_ipv4ToNodeIdMap[from]);
-  Ptr <Node> toNode = NodeList::GetNode (m_ipv4ToNodeIdMap[to]);
-  if (fromNode->GetId () == toNode->GetId ())
-    {
-      Ipv4RoutePathElement elem = { fromNode->GetId (), "L" };
-      rpElements.push_back (elem);
-      return;
-    }
-  if (!fromNode)
-    {
-      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[from] << " Not found");
-      return;
-    }
-  if (!toNode)
-    {
-      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[to] << " Not found");
-      return;
-    }
-  Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
-  if (!ipv4)
-    {
-      NS_LOG_WARN ("ipv4 object not found");
-      return;
-    }
-  Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
-  if (!rp)
-    {
-      NS_LOG_WARN ("Routing protocol object not found");
-      return;
-    }
-  Ptr<Packet> pkt = Create<Packet> ();
-  Ipv4Header header;
-  header.SetDestination (Ipv4Address (to.c_str ()));
-  Socket::SocketErrno sockerr;
-  Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
-  if (!rt)
-    {
-      return;
-    }
-  NS_LOG_DEBUG ("Node: " << fromNode->GetId () << " G:" << rt->GetGateway ());
-  std::ostringstream oss;
-  oss << rt->GetGateway ();
-  if (oss.str () == "0.0.0.0" && (sockerr != Socket::ERROR_NOROUTETOHOST))
+  m_wifiMacCountersStopTime = stopTime;
+  m_wifiMacCountersPollInterval = pollInterval;
+  m_wifiMacTxCounterId = AddNodeCounter ("WifiMac Tx", AnimationInterface::DOUBLE_COUNTER);
+  m_wifiMacTxDropCounterId = AddNodeCounter ("WifiMac TxDrop", AnimationInterface::DOUBLE_COUNTER);
+  m_wifiMacRxCounterId = AddNodeCounter ("WifiMac Rx", AnimationInterface::DOUBLE_COUNTER);
+  m_wifiMacRxDropCounterId = AddNodeCounter ("WifiMac RxDrop", AnimationInterface::DOUBLE_COUNTER);
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_INFO ("Null gw");
-      Ipv4RoutePathElement elem = { fromNode->GetId (), "C" };
-      rpElements.push_back (elem);
-      if ( m_ipv4ToNodeIdMap.find (to) != m_ipv4ToNodeIdMap.end ())
-        {
-          Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[to], "L" };
-          rpElements.push_back (elem2);
-        }
-      return;
+      Ptr<Node> n = *i;
+      m_nodeWifiMacTx[n->GetId ()] = 0;
+      m_nodeWifiMacTxDrop[n->GetId ()] = 0;
+      m_nodeWifiMacRx[n->GetId ()] = 0;
+      m_nodeWifiMacRxDrop[n->GetId ()] = 0;
+      UpdateNodeCounter (m_wifiMacTxCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_wifiMacTxDropCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_wifiMacRxCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_wifiMacRxDropCounterId, n->GetId (), 0);
     }
-  NS_LOG_INFO ("Node:" << fromNode->GetId () << "-->" << rt->GetGateway ()); 
-  Ipv4RoutePathElement elem = { fromNode->GetId (), oss.str () };
-  rpElements.push_back (elem);
-  RecursiveIpv4RoutePathSearch (oss.str (), to, rpElements);
-
+  Simulator::Schedule (startTime, &AnimationInterface::TrackWifiMacCounters, this);
 }
 
-void AnimationInterface::TrackIpv4RoutePaths ()
+void
+AnimationInterface::EnableQueueCounters (Time startTime, Time stopTime, Time pollInterval)
 {
-  if (m_ipv4RouteTrackElements.empty ())
-    {
-      return;
-    }
-  for (std::vector <Ipv4RouteTrackElement>::const_iterator i = m_ipv4RouteTrackElements.begin ();
-       i != m_ipv4RouteTrackElements.end ();
-       ++i)
+  m_queueCountersStopTime = stopTime;
+  m_queueCountersPollInterval = pollInterval;
+  m_queueEnqueueCounterId = AddNodeCounter ("Enqueue", AnimationInterface::DOUBLE_COUNTER);
+  m_queueDequeueCounterId = AddNodeCounter ("Dequeue", AnimationInterface::DOUBLE_COUNTER);
+  m_queueDropCounterId = AddNodeCounter ("Queue Drop", AnimationInterface::DOUBLE_COUNTER);
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      Ipv4RouteTrackElement trackElement = *i;
-      Ptr <Node> fromNode = NodeList::GetNode (trackElement.fromNodeId);
-      if (!fromNode)
-        {
-          NS_FATAL_ERROR ("Node: " << trackElement.fromNodeId << " Not found");
-          continue;
-        }
-      Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
-      if (!ipv4)
-        {
-          NS_LOG_WARN ("ipv4 object not found");
-          continue;
-        }
-      Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
-      if (!rp)
-        {
-          NS_LOG_WARN ("Routing protocol object not found");
-          continue;
-        }
-      NS_LOG_INFO ("Begin Track Route for: " << trackElement.destination.c_str () << " From:" << trackElement.fromNodeId);
-      Ptr<Packet> pkt = Create<Packet> ();
-      Ipv4Header header;
-      header.SetDestination (Ipv4Address (trackElement.destination.c_str ()));
-      Socket::SocketErrno sockerr;
-      Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
-      Ipv4RoutePathElements rpElements;
-      if (!rt)
-        {
-          NS_LOG_INFO ("No route to :" << trackElement.destination.c_str ());
-          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
-          rpElements.push_back (elem);
-          WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
-          continue;
-        }
-      std::ostringstream oss;
-      oss << rt->GetGateway ();
-      NS_LOG_INFO ("Node:" << trackElement.fromNodeId << "-->" << rt->GetGateway ()); 
-      if (rt->GetGateway () == "0.0.0.0")
-        {
-          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "C" };
-          rpElements.push_back (elem);
-          if ( m_ipv4ToNodeIdMap.find (trackElement.destination) != m_ipv4ToNodeIdMap.end ())
-            {
-              Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[trackElement.destination], "L" };
-              rpElements.push_back (elem2);
-            }
-        }
-      else if (rt->GetGateway () == "127.0.0.1")
-        {
-          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
-          rpElements.push_back (elem);
-        }
-      else
-        {
-          Ipv4RoutePathElement elem = { trackElement.fromNodeId, oss.str () };
-          rpElements.push_back (elem);
-        }
-      RecursiveIpv4RoutePathSearch (oss.str (), trackElement.destination, rpElements);
-      WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
+      Ptr<Node> n = *i;
+      m_nodeQueueEnqueue[n->GetId ()] = 0;
+      m_nodeQueueDequeue[n->GetId ()] = 0;
+      m_nodeQueueDrop[n->GetId ()] = 0;
+      UpdateNodeCounter (m_queueEnqueueCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_queueDequeueCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_queueDropCounterId, n->GetId (), 0);
     }
-
+  Simulator::Schedule (startTime, &AnimationInterface::TrackQueueCounters, this);
 }
 
-void AnimationInterface::TrackIpv4Route ()
+void
+AnimationInterface::EnableIpv4L3ProtocolCounters (Time startTime, Time stopTime, Time pollInterval)
 {
-  if (Simulator::Now () > m_routingStopTime)
-  {
-    NS_LOG_INFO ("TrackIpv4Route completed");
-    return;
-  }
-  if (m_routingNc.GetN ())
-    {
-      for (NodeContainer::Iterator i = m_routingNc.Begin (); i != m_routingNc.End (); ++i)
-        {
-          Ptr <Node> n = *i;
-          WriteN (GetXMLOpenClose_routing (n->GetId (), GetIpv4RoutingTable (n)), m_routingF);
-        }
-    }
-  else
+  m_ipv4L3ProtocolCountersStopTime = stopTime;
+  m_ipv4L3ProtocolCountersPollInterval = pollInterval;
+  m_ipv4L3ProtocolTxCounterId = AddNodeCounter ("Ipv4 Tx", AnimationInterface::DOUBLE_COUNTER);
+  m_ipv4L3ProtocolRxCounterId = AddNodeCounter ("Ipv4 Rx", AnimationInterface::DOUBLE_COUNTER);
+  m_ipv4L3ProtocolDropCounterId = AddNodeCounter ("Ipv4 Drop", AnimationInterface::DOUBLE_COUNTER);
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-        {
-          Ptr <Node> n = *i;
-          WriteN (GetXMLOpenClose_routing (n->GetId (), GetIpv4RoutingTable (n)), m_routingF);
-        }
+      Ptr<Node> n = *i;
+      m_nodeIpv4Tx[n->GetId ()] = 0;
+      m_nodeIpv4Rx[n->GetId ()] = 0;
+      m_nodeIpv4Drop[n->GetId ()] = 0;
+      UpdateNodeCounter (m_ipv4L3ProtocolTxCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_ipv4L3ProtocolRxCounterId, n->GetId (), 0);
+      UpdateNodeCounter (m_ipv4L3ProtocolDropCounterId, n->GetId (), 0);
     }
-  TrackIpv4RoutePaths ();
-  Simulator::Schedule (m_routingPollInterval, &AnimationInterface::TrackIpv4Route, this);
+  Simulator::Schedule (startTime, &AnimationInterface::TrackIpv4L3ProtocolCounters, this);
 }
 
-
-void AnimationInterface::StartNewTraceFile ()
+AnimationInterface & 
+AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval)
 {
-  static int i = 0;
-  std::ostringstream oss;
-  oss << i;
-  ++m_currentPktCount;
-  if (m_currentPktCount <= m_maxPktsPerFile)
-    {
-      return;
-    }
-  StopAnimation (true);
-  m_outputFileName = m_originalFileName + "-" + oss.str ();
-  StartAnimation (true);
-  ++i;
+  SetOutputFile (fileName, true);
+  m_routingStopTime = stopTime;
+  m_routingPollInterval = pollInterval;
+  WriteXmlAnim (true);
+  Simulator::Schedule (startTime, &AnimationInterface::TrackIpv4Route, this);
+  return *this;
+}
 
+AnimationInterface & 
+AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval)
+{
+  m_routingNc = nc;
+  return EnableIpv4RouteTracking (fileName, startTime, stopTime, pollInterval);
 }
 
-std::string AnimationInterface::GetNetAnimVersion ()
+AnimationInterface & 
+AnimationInterface::AddSourceDestination (uint32_t fromNodeId, std::string ipv4Address)
 {
-  return "netanim-3.105";
+  Ipv4RouteTrackElement element = { ipv4Address, fromNodeId };
+  m_ipv4RouteTrackElements.push_back (element);
+  return *this;
 }
 
-void AnimationInterface::SetStartTime (Time t)
+void 
+AnimationInterface::SetStartTime (Time t)
 {
   m_startTime = t;
 }
 
-void AnimationInterface::SetStopTime (Time t)
+void 
+AnimationInterface::SetStopTime (Time t)
 {
   m_stopTime = t;
 }
 
-uint32_t AnimationInterface::AddNodeCounter (std::string counterName, CounterType counterType)
+void 
+AnimationInterface::SetMaxPktsPerTraceFile (uint64_t maxPacketsPerFile)
+{
+  m_maxPktsPerFile = maxPacketsPerFile;
+}
+
+uint32_t 
+AnimationInterface::AddNodeCounter (std::string counterName, CounterType counterType)
 {
   m_nodeCounters.push_back (counterName);
-  uint32_t counterId = m_nodeCounters.size () -1;
-  std::ostringstream oss;
-  oss << GetXMLOpenCloseAddNodeCounter (counterId, counterName, counterType);
-  WriteN (oss.str (), m_f);
+  uint32_t counterId = m_nodeCounters.size () - 1; // counter ID is zero-indexed
+  WriteXmlAddNodeCounter (counterId, counterName, counterType);
   return counterId; 
 }
 
-uint32_t AnimationInterface::AddResource (std::string resourcePath)
+uint32_t 
+AnimationInterface::AddResource (std::string resourcePath)
 {
   m_resources.push_back (resourcePath);
-  uint32_t resourceId = m_resources.size () -1;
-  std::ostringstream oss;
-  oss << GetXMLOpenCloseAddResource (resourceId, resourcePath);
-  WriteN (oss.str (), m_f);
+  uint32_t resourceId = m_resources.size () -  1; // resource ID is zero-indexed
+  WriteXmlAddResource (resourceId, resourcePath);
   return resourceId; 
 }
 
-bool AnimationInterface::SetOutputFile (const std::string& fn)
-{
-  if (m_outputFileSet)
-    {
-      return true;
-    }
-  NS_LOG_INFO ("Creating new trace file:" << fn.c_str ());
-  m_f = std::fopen (fn.c_str (), "w");
-  if (!m_f)
-    {
-      NS_FATAL_ERROR ("Unable to open Animation output file");
-      return false; // Can't open
-    }
-  m_outputFileName = fn;
-  m_outputFileSet = true;
-  return true;
-}
-
-bool AnimationInterface::SetRoutingOutputFile (const std::string& fn)
-{
-  if (m_routingF)
-    {
-      NS_FATAL_ERROR ("SetRoutingOutputFile already used once");
-      return false;
-    }
-  m_routingF = std::fopen (fn.c_str (), "w");
-  if (!m_routingF)
-    {
-      NS_FATAL_ERROR ("Unable to open Animation Routing output file");
-      return false;
-    }
-  return true;
-}
-
-void AnimationInterface::EnablePacketMetadata (bool enable)
+void 
+AnimationInterface::EnablePacketMetadata (bool enable)
 {
    m_enablePacketMetadata = enable;
    if (enable)
-     Packet::EnablePrinting ();
+     {
+       Packet::EnablePrinting ();
+     }
 }
 
-bool AnimationInterface::IsInitialized ()
+bool 
+AnimationInterface::IsInitialized ()
 {
   return initialized;
 }
 
-bool AnimationInterface::IsStarted ()
+bool 
+AnimationInterface::IsStarted ()
 {
   return m_started;
-
 }
 
-void AnimationInterface::SetAnimWriteCallback (AnimWriteCallback cb)
+void 
+AnimationInterface::SetAnimWriteCallback (AnimWriteCallback cb)
 {
   m_writeCallback = cb;
 }
 
-void AnimationInterface::ResetAnimWriteCallback ()
+void 
+AnimationInterface::ResetAnimWriteCallback ()
 {
   m_writeCallback = 0;
 }
 
-bool AnimationInterface::IsInTimeWindow ()
+void 
+AnimationInterface::SetMobilityPollInterval (Time t)
 {
-  if ((Simulator::Now () >= m_startTime) && 
-      (Simulator::Now () <= m_stopTime))
-    return true;
-  else
-    return false;
+  m_mobilityPollInterval = t;
 }
 
-bool AnimationInterface::UanPacketIsPending (uint64_t AnimUid)
-{
-  return (m_pendingUanPackets.find (AnimUid) != m_pendingUanPackets.end ());
-}
 
-bool AnimationInterface::WifiPacketIsPending (uint64_t AnimUid)
+void 
+AnimationInterface::SetConstantPosition (Ptr <Node> n, double x, double y, double z)
 {
-  return (m_pendingWifiPackets.find (AnimUid) != m_pendingWifiPackets.end ());
+  NS_ASSERT (n);
+  Ptr<ConstantPositionMobilityModel> loc =  n->GetObject<ConstantPositionMobilityModel> ();
+  if (loc == 0)
+    {
+      loc = CreateObject<ConstantPositionMobilityModel> ();
+      n->AggregateObject (loc);
+    }
+  Vector hubVec (x, y, z);
+  loc->SetPosition (hubVec);
+  NS_LOG_INFO ("Node:" << n->GetId () << " Position set to:(" << x << "," << y << "," << z << ")");
+
 }
 
-bool AnimationInterface::CsmaPacketIsPending (uint64_t AnimUid)
+void 
+AnimationInterface::UpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
 {
-  return (m_pendingCsmaPackets.find (AnimUid) != m_pendingCsmaPackets.end ());
+  NS_LOG_INFO ("Setting node image for Node Id:" << nodeId);
+  if (resourceId > (m_resources.size ()-1))
+    {
+      NS_FATAL_ERROR ("Resource Id:" << resourceId << " not found. Did you use AddResource?");
+    }
+  WriteXmlUpdateNodeImage (nodeId, resourceId);
 }
 
+void 
+AnimationInterface::UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter)
+{
+  if (nodeCounterId > (m_nodeCounters.size () - 1))
+    {
+      NS_FATAL_ERROR ("NodeCounter Id:" << nodeCounterId << " not found. Did you use AddNodeCounter?");
+    }
+  WriteXmlUpdateNodeCounter (nodeCounterId, nodeId, counter);
+}
 
-bool AnimationInterface::WimaxPacketIsPending (uint64_t AnimUid)
+void 
+AnimationInterface::SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
 {
-  return (m_pendingWimaxPackets.find (AnimUid) != m_pendingWimaxPackets.end ());
+  if ((opacity < 0) || (opacity > 1))
+    {
+      NS_FATAL_ERROR ("Opacity must be between 0.0 and 1.0");
+    }
+  WriteXmlUpdateBackground (fileName, x, y, scaleX, scaleY, opacity);
 }
 
-bool AnimationInterface::LtePacketIsPending (uint64_t AnimUid)
+void 
+AnimationInterface::UpdateNodeSize (uint32_t nodeId, double width, double height)
 {
-  return (m_pendingLtePackets.find (AnimUid) != m_pendingLtePackets.end ());
+  AnimationInterface::NodeSize s = { width, height };
+  m_nodeSizes[nodeId] = s;
+  WriteXmlUpdateNodeSize (nodeId, s.width, s.height);
 }
 
-void AnimationInterface::SetMobilityPollInterval (Time t)
+void 
+AnimationInterface::UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
 {
-  m_mobilityPollInterval = t;
+  UpdateNodeColor (n->GetId (), r, g, b);
 }
 
-void AnimationInterface::SetRandomPosition (bool setRandPos)
+void 
+AnimationInterface::UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
 {
-  m_randomPosition = setRandPos;
+  NS_ASSERT (NodeList::GetNode (nodeId));
+  NS_LOG_INFO ("Setting node color for Node Id:" << nodeId); 
+  Rgb rgb = {r, g, b};
+  m_nodeColors[nodeId] = rgb;
+  WriteXmlUpdateNodeColor (nodeId, r, g, b);
 }
 
-Vector AnimationInterface::UpdatePosition (Ptr <Node> n)
+void 
+AnimationInterface::UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
+                                                std::string linkDescription)
 {
-  Ptr<MobilityModel> loc = n->GetObject<MobilityModel> ();
-  if (loc)
-    {
-      m_nodeLocation[n->GetId ()] = loc->GetPosition ();
-    }
-  else
-   {
-     NS_LOG_UNCOND ( "AnimationInterface WARNING:Node:" << n->GetId () << " Does not have a mobility model. Use SetConstantPosition if it is stationary");
-     Vector deterministicVector (100,100,0);
-     Vector randomVector (m_uniformRandomVariable->GetValue (0, m_topoMaxX - m_topoMinX), m_uniformRandomVariable->GetValue (0, m_topoMaxY - m_topoMinY), 0);
-     if (m_randomPosition)
-       {
-         m_nodeLocation[n->GetId ()] = randomVector;
-       }
-     else
-       {
-         m_nodeLocation[n->GetId ()] = deterministicVector;
-       }
-   }
-  return m_nodeLocation[n->GetId ()];
+  WriteXmlUpdateLink (fromNode, toNode, linkDescription);
 }
 
-Vector AnimationInterface::UpdatePosition (Ptr <Node> n, Vector v)
+void 
+AnimationInterface::UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
+                                                std::string linkDescription)
 {
-  m_nodeLocation[n->GetId ()] = v;
-  return v;
+  NS_ASSERT (fromNode);
+  NS_ASSERT (toNode);
+  WriteXmlUpdateLink (fromNode->GetId (), toNode->GetId (), linkDescription);
 }
 
-Vector AnimationInterface::GetPosition (Ptr <Node> n)
+void 
+AnimationInterface::UpdateNodeDescription (Ptr <Node> n, std::string descr)
 {
-  #ifdef NS_LOG
-  if (m_nodeLocation.find (n->GetId ()) == m_nodeLocation.end ())
-    {
-      NS_FATAL_ERROR ("Node:" <<n->GetId () << " not found in Location table");
-    }  
-  #endif
-  return m_nodeLocation[n->GetId ()];
+  UpdateNodeDescription (n->GetId (), descr);
+}
+
+void 
+AnimationInterface::UpdateNodeDescription (uint32_t nodeId, std::string descr)
+{
+  NS_ASSERT (NodeList::GetNode (nodeId));
+  m_nodeDescriptions[nodeId] = descr;
+  WriteXmlUpdateNodeDescription (nodeId);
+}
+
+// Private methods
+
+
+double 
+AnimationInterface::GetNodeEnergyFraction (Ptr <const Node> node) const
+{
+  const EnergyFractionMap::const_iterator fractionIter = m_nodeEnergyFraction.find (node->GetId ());
+  NS_ASSERT (fractionIter != m_nodeEnergyFraction.end ());
+  return fractionIter->second;
 }
 
-void AnimationInterface::PurgePendingWifi ()
+void 
+AnimationInterface::MobilityCourseChangeTrace (Ptr <const MobilityModel> mobility)
 {
-  if (m_pendingWifiPackets.empty ())
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
-  std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWifiPackets.begin ();
-       i != m_pendingWifiPackets.end ();
-       ++i)
+  Ptr <Node> n = mobility->GetObject <Node> ();
+  NS_ASSERT (n);
+  Vector v ;
+  if (!mobility)
     {
-     
-      AnimPacketInfo pktInfo = i->second; 
-      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
-      if (delta > PURGE_INTERVAL)
-        {
-          purgeList.push_back (i->first);
-        }
+      v = GetPosition (n);
+    } 
+  else
+    {
+      v = mobility->GetPosition ();
     }
+  UpdatePosition (n, v);
+  WriteXmlUpdateNodePosition (n->GetId (), v.x, v.y);
+}
 
-  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
-       i != purgeList.end ();
-       ++i)
+bool 
+AnimationInterface::NodeHasMoved (Ptr <Node> n, Vector newLocation)
+{
+  Vector oldLocation = GetPosition (n);
+  if ((ceil (oldLocation.x) == ceil (newLocation.x)) &&
+    (ceil (oldLocation.y) == ceil (newLocation.y)))
     {
-      m_pendingWifiPackets.erase (*i);
+      return false;
+    }
+  else
+    {
+      return true;
     }
-
 }
 
-void AnimationInterface::PurgePendingWimax ()
+void 
+AnimationInterface::MobilityAutoCheck ()
 {
-  if (m_pendingWimaxPackets.empty ())
+  if (!m_started || !IsInTimeWindow ())
     return;
-  std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWimaxPackets.begin ();
-       i != m_pendingWimaxPackets.end ();
-       ++i)
+  std::vector <Ptr <Node> > MovedNodes = GetMovedNodes ();
+  for (uint32_t i = 0; i < MovedNodes.size (); i++)
     {
-
-      AnimPacketInfo pktInfo = i->second;
-      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
-      if (delta > PURGE_INTERVAL)
-        {
-          purgeList.push_back (i->first);
-        }
+      Ptr <Node> n = MovedNodes [i];
+      NS_ASSERT (n);
+      Vector v = GetPosition (n);
+      WriteXmlUpdateNodePosition (n->GetId () , v.x, v.y);
     }
-
-  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
-       i != purgeList.end ();
-       ++i)
+  if (!Simulator::IsFinished ())
     {
-      m_pendingWimaxPackets.erase (*i);
+      PurgePendingPackets (AnimationInterface::WIFI);
+      PurgePendingPackets (AnimationInterface::WIMAX);
+      PurgePendingPackets (AnimationInterface::LTE);
+      PurgePendingPackets (AnimationInterface::CSMA);
+      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
     }
-
 }
 
-
-void AnimationInterface::PurgePendingLte ()
+std::vector <Ptr <Node> >  
+AnimationInterface::GetMovedNodes ()
 {
-  if (m_pendingLtePackets.empty ())
-    return;
-  std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingLtePackets.begin ();
-       i != m_pendingLtePackets.end ();
-       ++i)
+  std::vector < Ptr <Node> > movedNodes;
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-
-      AnimPacketInfo pktInfo = i->second;
-      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
-      if (delta > PURGE_INTERVAL)
+      Ptr<Node> n = *i;
+      NS_ASSERT (n);
+      Ptr <MobilityModel> mobility = n->GetObject <MobilityModel> ();
+      Vector newLocation;
+      if (!mobility)
         {
-          purgeList.push_back (i->first);
+          newLocation = GetPosition (n);
+        }
+      else
+        {
+          newLocation = mobility->GetPosition ();
+        }
+      if (!NodeHasMoved (n, newLocation))
+        {
+          continue; //Location has not changed
+        }
+      else
+        {
+          UpdatePosition (n, newLocation);
+          movedNodes.push_back (n);
         }
     }
+  return movedNodes;
+}
 
-  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
-       i != purgeList.end ();
-       ++i)
+int 
+AnimationInterface::WriteN (const std::string& st, FILE * f)
+{
+  if (!f)
+    return 0;
+  if (m_writeCallback)
     {
-      m_pendingLtePackets.erase (*i);
+      m_writeCallback (st.c_str ());
     }
+  return WriteN (st.c_str (), st.length (), f);
 }
 
-void AnimationInterface::PurgePendingCsma ()
-{
-  if (m_pendingCsmaPackets.empty ())
-    return;
-  std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingCsmaPackets.begin ();
-       i != m_pendingCsmaPackets.end ();
-       ++i)
+int 
+AnimationInterface::WriteN (const char* data, uint32_t count, FILE * f)
+{ 
+  if (!f)
+    return 0;
+  // Write count bytes to h from data
+  uint32_t    nLeft   = count;
+  const char* p       = data;
+  uint32_t    written = 0;
+  while (nLeft)
     {
-    
-      AnimPacketInfo pktInfo = i->second;
-      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
-      if (delta > PURGE_INTERVAL)
-        { 
-          purgeList.push_back (i->first);
+      int n = std::fwrite (p, 1,  nLeft, f);
+      if (n <= 0) 
+        {
+          return written;
         }
+      written += n;
+      nLeft -= n;
+      p += n;
     }
+  return written;
+}
 
-  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
-       i != purgeList.end ();
+void 
+AnimationInterface::WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
+{
+  NS_LOG_INFO ("Writing Route Path From :" << nodeId << " To: " << destination.c_str ());
+  WriteXmlRp (nodeId, destination, rpElements);
+  /*for (Ipv4RoutePathElements::const_iterator i = rpElements.begin ();
+       i != rpElements.end ();
        ++i)
     {
-      m_pendingCsmaPackets.erase (*i);
+      Ipv4RoutePathElement rpElement = *i;
+      NS_LOG_INFO ("Node:" << rpElement.nodeId << "-->" << rpElement.nextHop.c_str ());
+      WriteN (GetXmlRp (rpElement.node, GetIpv4RoutingTable (n)), m_routingF);
+
     }
+  */
+}
 
+void 
+AnimationInterface::WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
+{
+  WriteXmlNonP2pLinkProperties (id, ipv4Address, channelType);
 }
 
-std::string AnimationInterface::GetMacAddress (Ptr <NetDevice> nd)
+const std::vector<std::string> 
+AnimationInterface::GetElementsFromContext (const std::string& context) const
 {
-  Address nodeAddr = nd->GetAddress ();
-  std::ostringstream oss;
-  oss << nodeAddr;
-  return oss.str ().substr (6); // Skip the first 6 chars to get the Mac
+  std::vector <std::string> elements;
+  size_t pos1=0, pos2;
+  while (pos1 != context.npos)
+  {
+    pos1 = context.find ("/",pos1);
+    pos2 = context.find ("/",pos1+1);
+    elements.push_back (context.substr (pos1+1,pos2-(pos1+1)));
+    pos1 = pos2; 
+    pos2 = context.npos;
+  }
+  return elements;
 }
 
-std::string AnimationInterface::GetIpv4Address (Ptr <NetDevice> nd)
+Ptr <Node>
+AnimationInterface::GetNodeFromContext (const std::string& context) const
 {
-  Ptr<Ipv4> ipv4 = NodeList::GetNode (nd->GetNode ()->GetId ())->GetObject <Ipv4> ();
-  if (!ipv4)
+  // Use "NodeList/*/ as reference
+  // where element [1] is the Node Id
+
+  std::vector <std::string> elements = GetElementsFromContext (context);
+  Ptr <Node> n = NodeList::GetNode (atoi (elements.at (1).c_str ()));
+  NS_ASSERT (n);
+
+  return n;
+}
+
+Ptr <NetDevice>
+AnimationInterface::GetNetDeviceFromContext (std::string context)
+{
+  // Use "NodeList/*/DeviceList/*/ as reference
+  // where element [1] is the Node Id
+  // element [2] is the NetDevice Id
+
+  std::vector <std::string> elements = GetElementsFromContext (context);
+  Ptr <Node> n = GetNodeFromContext (context);
+
+  return n->GetDevice (atoi (elements.at (3).c_str ()));
+}
+
+uint64_t 
+AnimationInterface::GetAnimUidFromPacket (Ptr <const Packet> p)
+{
+  AnimByteTag tag;
+  TypeId tid = tag.GetInstanceTypeId ();
+  ByteTagIterator i = p->GetByteTagIterator ();
+  bool found = false;
+  while (i.HasNext ())
     {
-      NS_LOG_WARN ("Node: " << nd->GetNode ()->GetId () << " No ipv4 object found");
-      return "0.0.0.0";
+      ByteTagIterator::Item item = i.Next ();
+      if (tid == item.GetTypeId ())
+        {
+          item.GetTag (tag);
+          found = true;
+        }
     }
-  int32_t ifIndex = ipv4->GetInterfaceForDevice (nd);
-  if (ifIndex == -1)
+  if (found)
     {
-      NS_LOG_WARN ("Node :" << nd->GetNode ()->GetId () << " Could not find index of NetDevice");
-      return "0.0.0.0";
+      return tag.Get ();
+    }
+  else
+    {
+      return 0;
     }
-  Ipv4InterfaceAddress addr = ipv4->GetAddress (ifIndex, 0);
-  std::ostringstream oss;
-  oss << addr.GetLocal ();
-  return oss.str ();
 }
 
-void AnimationInterface::StartAnimation (bool restart)
+void 
+AnimationInterface::AddByteTag (uint64_t animUid, Ptr<const Packet> p)
 {
-  m_currentPktCount = 0;
-  m_started = true;
-  SetOutputFile (m_outputFileName);
-
-  // Find the min/max x/y for the xml topology element
-  m_topoMinX = -2;
-  m_topoMinY = -2;
-  m_topoMaxX = 2;
-  m_topoMaxY = 2;
-  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-    {
-      Ptr<Node> n = *i;
-      NS_LOG_INFO ("Update Position for Node: " << n->GetId ());
-      Vector v = UpdatePosition (n); 
-      m_topoMinX = std::min (m_topoMinX, v.x);
-      m_topoMinY = std::min (m_topoMinY, v.y);
-      m_topoMaxX = std::max (m_topoMaxX, v.x);
-      m_topoMaxY = std::max (m_topoMaxY, v.y);
-      struct Rgb rgb = {255, 0, 0};
-      if (nodeColors.find (n->GetId ()) == nodeColors.end ())
-      {
-        nodeColors[n->GetId ()] = rgb;
-      }
-    }
+  AnimByteTag tag;
+  tag.Set (animUid);
+  p->AddByteTag (tag);
+}
 
-  
-  std::ostringstream oss;
-  oss << GetXMLOpen_anim (0);
-  WriteN (oss.str (), m_f);
-  NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes");
-  // Dump the topology
-  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-    {
-      Ptr<Node> n = *i;
-      std::ostringstream oss;
-      Vector v = GetPosition (n);
-      struct Rgb rgb = nodeColors[n->GetId ()];
-      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, rgb);
-      WriteN (oss.str (), m_f);
-    }
-  NS_LOG_INFO ("Setting p2p links");
-  // Now dump the p2p links
-  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-    {
-      Ptr<Node> n = *i;
-      uint32_t n1Id = n->GetId ();
-      uint32_t nDev = n->GetNDevices ();  // Number of devices
-      for (uint32_t i = 0; i < nDev; ++i)
-        {
-          Ptr<NetDevice> dev = n->GetDevice (i);
- 	  NS_ASSERT (dev);
-          Ptr<Channel>   ch = dev->GetChannel ();
-          if (!ch) 
-            {
-	      NS_LOG_DEBUG ("No channel can't be a p2p device");
-              // Try to see if it is an LTE NetDevice, which does not return a channel
-              if ((dev->GetInstanceTypeId ().GetName () == "ns3::LteUeNetDevice") || 
-                  (dev->GetInstanceTypeId ().GetName () == "ns3::LteEnbNetDevice")||
-                  (dev->GetInstanceTypeId ().GetName () == "ns3::VirtualNetDevice"))
-                {
-                  WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), dev->GetInstanceTypeId ().GetName ());
-                  AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
-                }
-              continue;
-            }
-          std::string channelType = ch->GetInstanceTypeId ().GetName ();
-          NS_LOG_DEBUG ("Got ChannelType" << channelType);
-          if (channelType == std::string ("ns3::PointToPointChannel"))
-            { // Since these are duplex links, we only need to dump
-              // if srcid < dstid
-              uint32_t nChDev = ch->GetNDevices ();
-              for (uint32_t j = 0; j < nChDev; ++j)
-                {
-                  Ptr<NetDevice> chDev = ch->GetDevice (j);
-                  uint32_t n2Id = chDev->GetNode ()->GetId ();
-                  if (n1Id < n2Id)
-                    { 
-                      // ouptut the p2p link
-                      NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << ":" << GetMacAddress (dev) << "----" << GetIpv4Address (chDev) << ":" << GetMacAddress (chDev) );
-                      SetLinkDescription (n1Id, n2Id, "", GetIpv4Address (dev) + "~" + GetMacAddress (dev), GetIpv4Address (chDev) + "~" + GetMacAddress (chDev));
-                      AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n1Id);
-                      AddToIpv4AddressNodeIdTable (GetIpv4Address (chDev), n2Id);
-                      std::ostringstream oss;
-                      oss << GetXMLOpenClose_link (0, n1Id, 0, n2Id);
-                      WriteN (oss.str (), m_f);
-                    }
-                }
-            }
-          else
-            {
-              NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << " Channel Type:" << channelType << " Mac: " << GetMacAddress (dev));
-              WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), channelType); 
-              AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
-            }
-        }
-    }
-  linkProperties.clear ();
-  if (m_enable3105)
-    {
-      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-        {
-          Ptr<Node> n = *i;
-          NS_LOG_INFO ("Update Size for Node: " << n->GetId ());
-          struct NodeSize s = { 1, 1 };
-          m_nodeSizes[n->GetId ()] = s;
-          UpdateNodeSize (n->GetId (), s.width, s.height);
-        }
-    }
-  if (!restart)
-    {
-      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
-    }
-  if (!restart)
-    ConnectCallbacks ();
-  if (m_enable3105)
-    {
-      m_remainingEnergyCounterId = AddNodeCounter ("RemainingEnergy", AnimationInterface::DOUBLE_COUNTER);
-      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-        {
-          Ptr<Node> n = *i;
-          if (NodeList::GetNode (n->GetId ())->GetObject<EnergySource> ())
-            {
-              UpdateNodeCounter (m_remainingEnergyCounterId, n->GetId (), 1);
-            }
-        }
-    }
+void 
+AnimationInterface::RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy)
+{
+  if (!m_started || !IsInTimeWindow ())
+    return;
+
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  const uint32_t nodeId = node->GetId ();
+
+  NS_LOG_INFO ("Remaining energy on one of sources on node " << nodeId << ": " << currentEnergy);
+
+  const Ptr<EnergySource> energySource = node->GetObject<EnergySource> ();
+
+  NS_ASSERT (energySource);
+  // Don't call GetEnergyFraction () because of recursion
+  const double energyFraction = currentEnergy / energySource->GetInitialEnergy ();
+
+  NS_LOG_INFO ("Total energy fraction on node " << nodeId << ": " << energyFraction);
+
+  m_nodeEnergyFraction[nodeId] = energyFraction;
+  UpdateNodeCounter (m_remainingEnergyCounterId, nodeId, energyFraction);
 }
 
-void AnimationInterface::AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId)
+void
+AnimationInterface::WifiPhyTxDropTrace (std::string context, Ptr<const Packet> p)
 {
-  m_ipv4ToNodeIdMap[ipv4Address] = nodeId;
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiPhyTxDrop[node->GetId ()];
 }
 
-AnimationInterface & AnimationInterface::AddSourceDestination (uint32_t fromNodeId, std::string ipv4Address)
+void
+AnimationInterface::WifiPhyRxDropTrace (std::string context, Ptr<const Packet> p)
 {
-  Ipv4RouteTrackElement element = { ipv4Address, fromNodeId };
-  m_ipv4RouteTrackElements.push_back (element);
-  return *this;
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiPhyRxDrop[node->GetId ()];
 }
 
+void
+AnimationInterface::WifiMacTxTrace (std::string context, Ptr<const Packet> p)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiMacTx[node->GetId ()];
+}
 
-void AnimationInterface::ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex)
+void
+AnimationInterface::WifiMacTxDropTrace (std::string context, Ptr<const Packet> p)
 {
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiMacTxDrop[node->GetId ()];
+}
 
-  Ptr<LteEnbPhy> lteEnbPhy = nd->GetPhy ();
-  Ptr<LteSpectrumPhy> dlPhy = lteEnbPhy->GetDownlinkSpectrumPhy ();
-  Ptr<LteSpectrumPhy> ulPhy = lteEnbPhy->GetUplinkSpectrumPhy ();
-  std::ostringstream oss;
-  //NodeList/*/DeviceList/*/
-  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
-  if (dlPhy)
-    {
-      dlPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
-      dlPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
-    }
-  if (ulPhy)
-    {
-      ulPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
-      ulPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
-    }
+void
+AnimationInterface::WifiMacRxTrace (std::string context, Ptr<const Packet> p)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiMacRx[node->GetId ()];
+}
+
+void
+AnimationInterface::WifiMacRxDropTrace (std::string context, Ptr<const Packet> p)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeWifiMacRxDrop[node->GetId ()];
+}
+
+void
+AnimationInterface::Ipv4TxTrace (std::string context, Ptr<const Packet> p, Ptr<Ipv4> ipv4, uint32_t interfaceIndex)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeIpv4Tx[node->GetId ()];
+}
+ 
+void
+AnimationInterface::Ipv4RxTrace (std::string context, Ptr<const Packet> p, Ptr<Ipv4> ipv4, uint32_t interfaceIndex)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeIpv4Rx[node->GetId ()];
 }
 
+void
+AnimationInterface::Ipv4DropTrace (std::string context, 
+                                   const Ipv4Header & ipv4Header, 
+                                   Ptr<const Packet> p, 
+                                   Ipv4L3Protocol::DropReason dropReason, 
+                                   Ptr<Ipv4> ipv4, 
+                                   uint32_t)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeIpv4Drop[node->GetId ()];
+}
 
+void
+AnimationInterface::EnqueueTrace (std::string context,
+                                  Ptr<const Packet> p)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeQueueEnqueue[node->GetId ()];
+}
 
-void AnimationInterface::ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex)
+void
+AnimationInterface::DequeueTrace (std::string context,
+                                  Ptr<const Packet> p)
 {
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeQueueDequeue[node->GetId ()];
+}
 
-  Ptr<LteUePhy> lteUePhy = nd->GetPhy ();
-  Ptr<LteSpectrumPhy> dlPhy = lteUePhy->GetDownlinkSpectrumPhy ();
-  Ptr<LteSpectrumPhy> ulPhy = lteUePhy->GetUplinkSpectrumPhy ();
-  std::ostringstream oss;
-  //NodeList/*/DeviceList/*/
-  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
-  if (dlPhy)
-    {
-      dlPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
-      dlPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
-    }
-  if (ulPhy)
-    {
-       ulPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
-       ulPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
-    }
+void
+AnimationInterface::QueueDropTrace (std::string context,
+                                  Ptr<const Packet> p)
+{
+  const Ptr <const Node> node = GetNodeFromContext (context);
+  ++m_nodeQueueDrop[node->GetId ()];
 }
 
-void AnimationInterface::ConnectLte ()
+void 
+AnimationInterface::DevTxTrace (std::string context, 
+                                     Ptr<const Packet> p,
+                                     Ptr<NetDevice> tx, 
+                                     Ptr<NetDevice> rx,
+                                     Time txTime, 
+                                     Time rxTime)
 {
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  NS_ASSERT (tx);
+  NS_ASSERT (rx);
+  Time now = Simulator::Now ();
+  double fbTx = now.GetSeconds ();
+  double lbTx = (now + txTime).GetSeconds ();
+  double fbRx = (now + rxTime - txTime).GetSeconds ();
+  double lbRx = (now + rxTime).GetSeconds ();
+  CheckMaxPktsPerTraceFile ();
+  WriteXmlP ("p", 
+             tx->GetNode ()->GetId (), 
+             fbTx, 
+             lbTx, 
+             rx->GetNode ()->GetId (), 
+             fbRx, 
+             lbRx, 
+             m_enablePacketMetadata? GetPacketMetadata (p):"");
+}
 
-  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
-    {
-      Ptr<Node> n = *i;
-      NS_ASSERT (n);
-      uint32_t nDevices = n->GetNDevices ();
-      for (uint32_t devIndex = 0; devIndex < nDevices; ++devIndex)
-        {
-          Ptr <NetDevice> nd = n->GetDevice (devIndex);
-          if (!nd)
-            continue;
-          Ptr<LteUeNetDevice> lteUeNetDevice = DynamicCast<LteUeNetDevice> (nd);
-          if (lteUeNetDevice)
-            {
-              ConnectLteUe (n, lteUeNetDevice, devIndex);
-              continue;
-            }
-          Ptr<LteEnbNetDevice> lteEnbNetDevice = DynamicCast<LteEnbNetDevice> (nd);
-          if (lteEnbNetDevice)
-            ConnectLteEnb (n, lteEnbNetDevice, devIndex);
-        }
+void 
+AnimationInterface::UanPhyGenTxTrace (std::string context, Ptr<const Packet> p)
+{
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  ++gAnimUid;
+  NS_LOG_INFO ("Uan TxBeginTrace for packet:" << gAnimUid);
+  AddByteTag (gAnimUid, p);
+  AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
+  AddPendingPacket (AnimationInterface::UAN, gAnimUid, pktInfo);
+  OutputWirelessPacketTxInfo (p, m_pendingUanPackets[gAnimUid], gAnimUid);
+}
 
+void 
+AnimationInterface::UanPhyGenRxTrace (std::string context, Ptr<const Packet> p)
+{
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  NS_LOG_INFO ("UanPhyGenRxTrace for packet:" << animUid);
+  if (!IsPacketPending (animUid, AnimationInterface::UAN))
+    {
+      NS_LOG_WARN ("UanPhyGenRxBeginTrace: unknown Uid");
+      return;
     }
+  m_pendingUanPackets[animUid].ProcessRxBegin (ndev, Simulator::Now ());
+  m_pendingUanPackets[animUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
+  OutputWirelessPacketRxInfo (p, m_pendingUanPackets[animUid].GetRxInfo (ndev), animUid);
 }
 
-void AnimationInterface::ConnectCallbacks ()
+
+void 
+AnimationInterface::WifiPhyTxBeginTrace (std::string context,
+                                          Ptr<const Packet> p)
 {
-  // Connect the callbacks
-  Config::Connect ("/ChannelList/*/TxRxPointToPoint",
-                   MakeCallback (&AnimationInterface::DevTxTrace, this));
-  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyTxBegin",
-                   MakeCallback (&AnimationInterface::WifiPhyTxBeginTrace, this));
-  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyRxBegin",
-                   MakeCallback (&AnimationInterface::WifiPhyRxBeginTrace, this));
-  Config::ConnectWithoutContext ("/NodeList/*/$ns3::MobilityModel/CourseChange",
-                   MakeCallback (&AnimationInterface::MobilityCourseChangeTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Tx",
-                   MakeCallback (&AnimationInterface::WimaxTxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Rx",
-                   MakeCallback (&AnimationInterface::WimaxRxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Tx",
-                   MakeCallback (&AnimationInterface::LteTxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Rx",
-                   MakeCallback (&AnimationInterface::LteRxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxBegin",
-                   MakeCallback (&AnimationInterface::CsmaPhyTxBeginTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxEnd",
-                   MakeCallback (&AnimationInterface::CsmaPhyTxEndTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyRxEnd",
-                   MakeCallback (&AnimationInterface::CsmaPhyRxEndTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/MacRx",
-                   MakeCallback (&AnimationInterface::CsmaMacRxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyTxBegin",
-                   MakeCallback (&AnimationInterface::UanPhyGenTxTrace, this));
-  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyRxBegin",
-                   MakeCallback (&AnimationInterface::UanPhyGenRxTrace, this));
-  Config::Connect ("/NodeList/*/$ns3::BasicEnergySource/RemainingEnergy",
-                   MakeCallback (&AnimationInterface::RemainingEnergyTrace, this));
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context); 
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  ++gAnimUid;
+  NS_LOG_INFO ("Wifi TxBeginTrace for packet:" << gAnimUid);
+  AddByteTag (gAnimUid, p);
+  AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
+  AddPendingPacket (AnimationInterface::WIFI, gAnimUid, pktInfo);
+  Ptr<WifiNetDevice> netDevice = DynamicCast<WifiNetDevice> (ndev);
+  Mac48Address nodeAddr = netDevice->GetMac ()->GetAddress ();
+  std::ostringstream oss; 
+  oss << nodeAddr;
+  m_macToNodeIdMap[oss.str ()] = n->GetId ();
+  NS_LOG_INFO ("Added Mac" << oss.str () << " node:" <<m_macToNodeIdMap[oss.str ()]);
+  OutputWirelessPacketTxInfo (p, m_pendingWifiPackets[gAnimUid], gAnimUid);
+}
+
+void 
+AnimationInterface::WifiPhyRxBeginTrace (std::string context,
+                                              Ptr<const Packet> p)
+{
+  //NS_LOG_UNCOND ("Context:" << context.c_str ());
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  NS_LOG_INFO ("Wifi RxBeginTrace for packet:" << animUid);
+  if (!IsPacketPending (animUid, AnimationInterface::WIFI))
+    {
+      NS_ASSERT (0);
+      NS_LOG_WARN ("WifiPhyRxBeginTrace: unknown Uid");
+      std::ostringstream oss;
+      WifiMacHeader hdr;
+      if (!p->PeekHeader (hdr))
+      { 
+        NS_LOG_WARN ("WifiMacHeader not present");
+        return;
+      }
+      oss << hdr.GetAddr2 ();
+      if (m_macToNodeIdMap.find (oss.str ()) == m_macToNodeIdMap.end ()) 
+      {
+        NS_LOG_WARN ("Transmitter Mac address " << oss.str () << " never seen before. Skipping");
+        return;
+      }
+      Ptr <Node> txNode = NodeList::GetNode (m_macToNodeIdMap[oss.str ()]);
+      AnimPacketInfo pktInfo (0, Simulator::Now (), Simulator::Now (), UpdatePosition (txNode), m_macToNodeIdMap[oss.str ()]);
+      AddPendingPacket (AnimationInterface::WIFI, animUid, pktInfo);
+      NS_LOG_WARN ("WifiPhyRxBegin: unknown Uid, but we are adding a wifi packet");
+    }
+  /// \todo NS_ASSERT (WifiPacketIsPending (animUid) == true);
+  m_pendingWifiPackets[animUid].ProcessRxBegin (ndev, Simulator::Now ());
+  m_pendingWifiPackets[animUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
+  OutputWirelessPacketRxInfo (p, m_pendingWifiPackets[animUid].GetRxInfo (ndev), animUid);
+}
 
-  ConnectLte ();
+void 
+AnimationInterface::WimaxTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+{
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  ++gAnimUid;
+  NS_LOG_INFO ("WimaxTxTrace for packet:" << gAnimUid);
+  AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+  /// \todo 0.0001 is used until Wimax implements TxBegin and TxEnd traces
+  AddByteTag (gAnimUid, p);
+  AddPendingPacket (AnimationInterface::WIMAX, gAnimUid, pktInfo);
+  OutputWirelessPacketTxInfo (p, pktInfo, gAnimUid);
+}
 
+
+void 
+AnimationInterface::WimaxRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+{
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  NS_LOG_INFO ("WimaxRxTrace for packet:" << animUid);
+  NS_ASSERT (IsPacketPending (animUid, AnimationInterface::WIMAX) == true);
+  AnimPacketInfo& pktInfo = m_pendingWimaxPackets[animUid];
+  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
+  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+  /// \todo 0.001 is used until Wimax implements RxBegin and RxEnd traces
+  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
+  OutputWirelessPacketRxInfo (p, pktrxInfo, animUid);
+}
+
+void 
+AnimationInterface::LteTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+{
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  ++gAnimUid;
+  NS_LOG_INFO ("LteTxTrace for packet:" << gAnimUid);
+  AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+  /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
+  AddByteTag (gAnimUid, p);
+  AddPendingPacket (AnimationInterface::LTE, gAnimUid, pktInfo);
+  OutputWirelessPacketTxInfo (p, pktInfo, gAnimUid);
 }
 
 
-void AnimationInterface::StopAnimation (bool onlyAnimation)
+void 
+AnimationInterface::LteRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
 {
-  m_started = false;
-  NS_LOG_INFO ("Stopping Animation");
-  ResetAnimWriteCallback ();
-  if (m_f) 
-    {
-      // Terminate the anim element
-      WriteN (GetXMLClose ("anim"), m_f);
-      std::fclose (m_f);
-    }
-    m_outputFileSet = false;
-  if (onlyAnimation)
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  NS_LOG_INFO ("LteRxTrace for packet:" << gAnimUid);
+  if (!IsPacketPending (animUid, AnimationInterface::LTE))
     {
+      NS_LOG_WARN ("LteRxTrace: unknown Uid");
       return;
     }
-  if (m_routingF)
-    {
-      WriteN (GetXMLClose ("anim"), m_routingF);
-      std::fclose (m_routingF);
-    }
+  AnimPacketInfo& pktInfo = m_pendingLtePackets[animUid];
+  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
+  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+  /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
+  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
+  OutputWirelessPacketRxInfo (p, pktrxInfo, animUid);
 }
 
-int AnimationInterface::WriteN (const std::string& st, FILE * f)
+void 
+AnimationInterface::LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb)
 {
-  if (m_writeCallback)
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  if (!pb) 
     {
-      m_writeCallback (st.c_str ());
+      NS_LOG_WARN ("pb == 0. Not yet supported");
+      return;
     }
-  return WriteN (st.c_str (), st.length (), f);
-}
+  context = "/" + context;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
 
-std::vector <Ptr <Node> >  AnimationInterface::RecalcTopoBounds ()
-{
-  std::vector < Ptr <Node> > MovedNodes;
-  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
+  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
+       i != pbList.end ();
+       ++i)
     {
-      Ptr<Node> n = *i;
-      NS_ASSERT (n);
-      Ptr <MobilityModel> mobility = n->GetObject <MobilityModel> ();
-      Vector newLocation;
-      if (!mobility)
-        {
-          newLocation = GetPosition (n);
-        }
-      else
-        {
-          newLocation = mobility->GetPosition ();
-        }
-      if (!NodeHasMoved (n, newLocation))
-        {
-          continue; //Location has not changed
-        }
-      else
-        {
-          UpdatePosition (n, newLocation);
-          RecalcTopoBounds (newLocation);
-          MovedNodes.push_back (n);
-        }
+      Ptr <Packet> p = *i;
+      ++gAnimUid;
+      NS_LOG_INFO ("LteSpectrumPhyTxTrace for packet:" << gAnimUid);
+      AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+      /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
+      AddByteTag (gAnimUid, p);
+      AddPendingPacket (AnimationInterface::LTE, gAnimUid, pktInfo);
+      OutputWirelessPacketTxInfo (p, pktInfo, gAnimUid);
     }
-  return MovedNodes;
 }
 
-void AnimationInterface::RecalcTopoBounds (Vector v)
+void 
+AnimationInterface::LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb)
 {
-  m_topoMinX = std::min (m_topoMinX, v.x);
-  m_topoMinY = std::min (m_topoMinY, v.y);
-  m_topoMaxX = std::max (m_topoMaxX, v.x);
-  m_topoMaxY = std::max (m_topoMaxY, v.y);
-  
-}
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  if (!pb) 
+    {
+      NS_LOG_WARN ("pb == 0. Not yet supported");
+      return;
+    }
+  context = "/" + context;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
 
-int AnimationInterface::WriteN (const char* data, uint32_t count, FILE * f)
-{ 
-  // Write count bytes to h from data
-  uint32_t    nLeft   = count;
-  const char* p       = data;
-  uint32_t    written = 0;
-  while (nLeft)
+  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
+  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
+       i != pbList.end ();
+       ++i)
     {
-      int n = std::fwrite (p, 1,  nLeft, f);
-      if (n <= 0) 
+      Ptr <Packet> p = *i;
+      uint64_t animUid = GetAnimUidFromPacket (p);
+      NS_LOG_INFO ("LteSpectrumPhyRxTrace for packet:" << gAnimUid);
+      if (!IsPacketPending (animUid, AnimationInterface::LTE))
         {
-          return written;
+          NS_LOG_WARN ("LteSpectrumPhyRxTrace: unknown Uid");
+          return;
         }
-      written += n;
-      nLeft -= n;
-      p += n;
+      AnimPacketInfo& pktInfo = m_pendingLtePackets[animUid];
+      pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
+      pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
+      /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
+      AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
+      OutputWirelessPacketRxInfo (p, pktrxInfo, animUid);
     }
-  return written;
 }
 
-void AnimationInterface::WriteDummyPacket ()
+void 
+AnimationInterface::CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p)
 {
-  Time now = Simulator::Now ();
-  std::ostringstream oss;
-  double fbTx = now.GetSeconds ();
-  double lbTx = now.GetSeconds ();
-  double fbRx = now.GetSeconds ();
-  double lbRx = now.GetSeconds ();
-  oss << GetXMLOpenClose_p ("p", 0, fbTx, lbTx, 0, fbRx, lbRx, "", "DummyPktIgnoreThis");
-  WriteN (oss.str (), m_f);
-
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  ++gAnimUid;
+  NS_LOG_INFO ("CsmaPhyTxBeginTrace for packet:" << gAnimUid);
+  AddByteTag (gAnimUid, p);
+  AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
+  AddPendingPacket (AnimationInterface::CSMA, gAnimUid, pktInfo);
 
 }
 
-void AnimationInterface::WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
+void 
+AnimationInterface::CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p)
 {
-  NS_LOG_INFO ("Writing Route Path From :" << nodeId << " To: " << destination.c_str ());
-  WriteN (GetXMLOpenClose_rp (nodeId, destination, rpElements), m_routingF);
-  /*for (Ipv4RoutePathElements::const_iterator i = rpElements.begin ();
-       i != rpElements.end ();
-       ++i)
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  NS_LOG_INFO ("CsmaPhyTxEndTrace for packet:" << animUid);
+  if (!IsPacketPending (animUid, AnimationInterface::CSMA))
     {
-      Ipv4RoutePathElement rpElement = *i;
-      NS_LOG_INFO ("Node:" << rpElement.nodeId << "-->" << rpElement.nextHop.c_str ());
-      WriteN (GetXMLOpenClose_rp (rpElement.node, GetIpv4RoutingTable (n)), m_routingF);
-
+      NS_LOG_WARN ("CsmaPhyTxEndTrace: unknown Uid"); 
+      NS_FATAL_ERROR ("CsmaPhyTxEndTrace: unknown Uid"); 
+      AnimPacketInfo pktInfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
+      AddPendingPacket (AnimationInterface::CSMA, animUid, pktInfo);
+      NS_LOG_WARN ("Unknown Uid, but adding Csma Packet anyway");
     }
-  */
+  /// \todo NS_ASSERT (IsPacketPending (AnimUid) == true);
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[animUid];
+  pktInfo.m_lbTx = Simulator::Now ().GetSeconds ();
 }
 
-void AnimationInterface::WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
+void 
+AnimationInterface::CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p)
 {
-  std::ostringstream oss;
-  oss << GetXMLOpenClose_NonP2pLinkProperties (id, ipv4Address, channelType);
-  WriteN (oss.str (), m_f);
+  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
+    return;
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  if (!IsPacketPending (animUid, AnimationInterface::CSMA))
+    {
+      NS_LOG_WARN ("CsmaPhyRxEndTrace: unknown Uid"); 
+      return;
+    }
+  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[animUid];
+  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
+  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
+  NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << animUid);
+  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
+  if (pktrxInfo.IsPhyRxComplete ())
+    {
+      NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << animUid << " complete");
+      OutputCsmaPacket (p, pktInfo, pktrxInfo);
+    }
 }
 
-void AnimationInterface::DevTxTrace (std::string context, Ptr<const Packet> p,
-                                     Ptr<NetDevice> tx, Ptr<NetDevice> rx,
-                                     Time txTime, Time rxTime)
+void 
+AnimationInterface::CsmaMacRxTrace (std::string context,
+                                         Ptr<const Packet> p)
 {
   if (!m_started || !IsInTimeWindow () || !m_trackPackets)
     return;
-  NS_ASSERT (tx);
-  NS_ASSERT (rx);
-  Time now = Simulator::Now ();
-  std::ostringstream oss;
-  double fbTx = now.GetSeconds ();
-  double lbTx = (now + txTime).GetSeconds ();
-  double fbRx = (now + rxTime - txTime).GetSeconds ();
-  double lbRx = (now + rxTime).GetSeconds ();
-  oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), 
-         fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
-  StartNewTraceFile ();
-  ++m_currentPktCount;
-  WriteN (oss.str (), m_f);
+  NS_LOG_FUNCTION (this);
+  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
+  NS_ASSERT (ndev);
+  Ptr <Node> n = ndev->GetNode ();
+  NS_ASSERT (n);
+  uint64_t animUid = GetAnimUidFromPacket (p);
+  if (!IsPacketPending (animUid, AnimationInterface::CSMA))
+    {
+      NS_LOG_WARN ("CsmaMacRxTrace: unknown Uid"); 
+      return;
+    }
+  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[animUid];
+  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
+  if (pktrxInfo.IsPhyRxComplete ())
+    {
+      NS_LOG_INFO ("MacRxTrace for packet:" << animUid << " complete");
+      OutputCsmaPacket (p, pktInfo, pktrxInfo);
+    }
 }
 
+void
+AnimationInterface::OutputWirelessPacketTxInfo (Ptr<const Packet> p, AnimPacketInfo &pktInfo, uint64_t animUid)
+{
+  CheckMaxPktsPerTraceFile ();
+  uint32_t nodeId = 0;
+  if (pktInfo.m_txnd)
+    nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
+  else
+    nodeId = pktInfo.m_txNodeId;
+  double lbTx = pktInfo.m_firstLastBitDelta + pktInfo.m_fbTx;
+  WriteXmlPRef (animUid, nodeId, pktInfo.m_fbTx, lbTx, m_enablePacketMetadata? GetPacketMetadata (p):"");
+
+}
 
-Ptr <Node>
-AnimationInterface::GetNodeFromContext (const std::string& context) const
+void 
+AnimationInterface::OutputWirelessPacketRxInfo (Ptr<const Packet> p, AnimRxInfo pktrxInfo, uint64_t animUid)
 {
-  // Use "NodeList/*/ as reference
-  // where element [1] is the Node Id
+  CheckMaxPktsPerTraceFile ();
+  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
+  WriteXmlP (animUid, "wpr", rxId, pktrxInfo.m_fbRx, pktrxInfo.m_lbRx);
+}
 
-  std::vector <std::string> elements = GetElementsFromContext (context);
-  Ptr <Node> n = NodeList::GetNode (atoi (elements.at (1).c_str ()));
-  NS_ASSERT (n);
+void 
+AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
+{
+  CheckMaxPktsPerTraceFile ();
+  NS_ASSERT (pktInfo.m_txnd);
+  uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
+  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
 
-  return n;
+  WriteXmlP ("p", 
+             nodeId, 
+             pktInfo.m_fbTx, 
+             pktInfo.m_lbTx, 
+             rxId,
+             pktrxInfo.m_fbRx, 
+             pktrxInfo.m_lbRx, 
+             m_enablePacketMetadata? GetPacketMetadata (p):"");
 }
 
-Ptr <NetDevice>
-AnimationInterface::GetNetDeviceFromContext (std::string context)
+void 
+AnimationInterface::AddPendingPacket (ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo)
 {
-  // Use "NodeList/*/DeviceList/*/ as reference
-  // where element [1] is the Node Id
-  // element [2] is the NetDevice Id
+  AnimUidPacketInfoMap * pendingPackets = ProtocolTypeToPendingPackets (protocolType);
+  NS_ASSERT (pendingPackets);
+  pendingPackets->insert (AnimUidPacketInfoMap::value_type (animUid, pktInfo));
+}
 
-  std::vector <std::string> elements = GetElementsFromContext (context);
-  Ptr <Node> n = GetNodeFromContext (context);
+bool 
+AnimationInterface::IsPacketPending (uint64_t animUid, AnimationInterface::ProtocolType protocolType)
+{
+  AnimUidPacketInfoMap * pendingPackets = ProtocolTypeToPendingPackets (protocolType);
+  NS_ASSERT (pendingPackets);
+  return (pendingPackets->find (animUid) != pendingPackets->end ());
+}
 
-  return n->GetDevice (atoi (elements.at (3).c_str ()));
+void 
+AnimationInterface::PurgePendingPackets (AnimationInterface::ProtocolType protocolType)
+{
+  AnimUidPacketInfoMap * pendingPackets = ProtocolTypeToPendingPackets (protocolType);
+  NS_ASSERT (pendingPackets);
+  if (pendingPackets->empty ())
+    return;
+  std::vector <uint64_t> purgeList;
+  for (AnimUidPacketInfoMap::iterator i = pendingPackets->begin ();
+       i != pendingPackets->end ();
+       ++i)
+    {
+     
+      AnimPacketInfo pktInfo = i->second; 
+      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
+      if (delta > PURGE_INTERVAL)
+        {
+          purgeList.push_back (i->first);
+        }
+    }
+  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
+       i != purgeList.end ();
+       ++i)
+    {
+      pendingPackets->erase (*i);
+    }
 }
 
-void AnimationInterface::AddPendingUanPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
+AnimationInterface::AnimUidPacketInfoMap * 
+AnimationInterface::ProtocolTypeToPendingPackets (AnimationInterface::ProtocolType protocolType)
 {
-  m_pendingUanPackets[AnimUid] = pktinfo;
-}
+  AnimUidPacketInfoMap * pendingPackets = 0;
+  switch (protocolType)
+    {
+      case AnimationInterface::WIFI:
+        {
+          pendingPackets = &m_pendingWifiPackets;
+          break;
+        }
+      case AnimationInterface::UAN:
+        {
+          pendingPackets = &m_pendingUanPackets;
+          break;
+        }
+      case AnimationInterface::CSMA:
+        {
+          pendingPackets = &m_pendingCsmaPackets;
+          break;
+        }
+      case AnimationInterface::WIMAX:
+        {
+          pendingPackets = &m_pendingWimaxPackets;
+          break;
+        }
+      case AnimationInterface::LTE:
+        {
+          pendingPackets = &m_pendingLtePackets;
+          break;
+        }
+    }
+  return pendingPackets;
 
-                                  
-void AnimationInterface::AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
-{
-  m_pendingWifiPackets[AnimUid] = pktinfo;
 }
 
-void AnimationInterface::AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
+// Counters
+
+std::string 
+AnimationInterface::CounterTypeToString (CounterType counterType)
 {
-  NS_ASSERT (pktinfo.m_txnd);
-  m_pendingWimaxPackets[AnimUid] = pktinfo;
+  std::string typeString = "unknown";
+  switch (counterType)
+    {
+      case UINT32_COUNTER:
+        {
+          typeString = "UINT32";
+          break;
+        } 
+      case DOUBLE_COUNTER:
+        {
+          typeString = "DOUBLE";
+          break;
+        } 
+    }
+  return typeString;
 }
 
-void AnimationInterface::AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
+// General
+
+std::string 
+AnimationInterface::GetPacketMetadata (Ptr<const Packet> p)
 {
-  NS_ASSERT (pktinfo.m_txnd);
-  m_pendingLtePackets[AnimUid] = pktinfo;
+  std::ostringstream oss;
+  p->Print (oss);
+  return oss.str ();
 }
 
-void AnimationInterface::AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
+uint64_t 
+AnimationInterface::GetTracePktCount ()
 {
-  NS_ASSERT (pktinfo.m_txnd);
-  m_pendingCsmaPackets[AnimUid] = pktinfo;
+  return m_currentPktCount;
 }
 
-uint64_t AnimationInterface::GetAnimUidFromPacket (Ptr <const Packet> p)
+void 
+AnimationInterface::StopAnimation (bool onlyAnimation)
 {
-  AnimByteTag tag;
-  TypeId tid = tag.GetInstanceTypeId ();
-  ByteTagIterator i = p->GetByteTagIterator ();
-  bool found = false;
-  while (i.HasNext ())
+  m_started = false;
+  NS_LOG_INFO ("Stopping Animation");
+  ResetAnimWriteCallback ();
+  if (m_f) 
     {
-      ByteTagIterator::Item item = i.Next ();
-      if (tid == item.GetTypeId ())
-        {
-          item.GetTag (tag);
-          found = true;
-        }
+      // Terminate the anim element
+      WriteXmlClose ("anim");
+      std::fclose (m_f);
+      m_f = 0;
     }
-  if (found)
+  if (onlyAnimation)
     {
-      return tag.Get ();
+      return;
     }
-  else
+  if (m_routingF)
     {
-      return 0;
+      WriteXmlClose ("anim", true);
+      std::fclose (m_routingF);
+      m_routingF = 0;
     }
 }
 
-void AnimationInterface::UanPhyGenTxTrace (std::string context, Ptr<const Packet> p)
-{
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  gAnimUid++;
-  NS_LOG_INFO ("Uan TxBeginTrace for packet:" << gAnimUid);
-  AnimByteTag tag;
-  tag.Set (gAnimUid);
-  p->AddByteTag (tag);
-  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
-  AddPendingUanPacket (gAnimUid, pktinfo);
-
-
-}
-
-void AnimationInterface::UanPhyGenRxTrace (std::string context, Ptr<const Packet> p)
+void 
+AnimationInterface::StartAnimation (bool restart)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("UanPhyGenRxTrace for packet:" << AnimUid);
-  if (!UanPacketIsPending (AnimUid))
+  m_currentPktCount = 0;
+  m_started = true;
+  SetOutputFile (m_outputFileName);
+  WriteXmlAnim ();
+  WriteNodes ();
+  WriteNodeColors ();
+  WriteLinkProperties ();
+  WriteNodeSizes ();
+  WriteNodeEnergies ();
+  if (!restart)
     {
-      NS_LOG_WARN ("UanPhyGenRxBeginTrace: unknown Uid");
-      return;
+      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
+      ConnectCallbacks ();
     }
-  m_pendingUanPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
-  m_pendingUanPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
-  OutputWirelessPacket (p, m_pendingUanPackets[AnimUid], m_pendingUanPackets[AnimUid].GetRxInfo (ndev));
-
 }
 
-void AnimationInterface::RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy)
+void 
+AnimationInterface::AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId)
 {
-  if (!m_started || !IsInTimeWindow ())
-    return;
-
-  const Ptr <const Node> node = GetNodeFromContext (context);
-  const uint32_t nodeId = node->GetId ();
-
-  NS_LOG_INFO ("Remaining energy on one of sources on node " << nodeId << ": " << currentEnergy);
-
-  const Ptr<EnergySource> energySource = node->GetObject<EnergySource> ();
+  m_ipv4ToNodeIdMap[ipv4Address] = nodeId;
+}
 
-  NS_ASSERT (energySource);
-  // Don't call GetEnergyFraction () because of recursion
-  const double energyFraction = currentEnergy / energySource->GetInitialEnergy ();
 
-  NS_LOG_INFO ("Total energy fraction on node " << nodeId << ": " << energyFraction);
+// Callbacks
+void 
+AnimationInterface::ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex)
+{
 
-  m_nodeEnergyFraction[nodeId] = energyFraction;
-  if (!m_enable3105)
+  Ptr<LteEnbPhy> lteEnbPhy = nd->GetPhy ();
+  Ptr<LteSpectrumPhy> dlPhy = lteEnbPhy->GetDownlinkSpectrumPhy ();
+  Ptr<LteSpectrumPhy> ulPhy = lteEnbPhy->GetUplinkSpectrumPhy ();
+  std::ostringstream oss;
+  //NodeList/*/DeviceList/*/
+  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
+  if (dlPhy)
     {
-      WriteNodeUpdate (nodeId);
+      dlPhy->TraceConnect ("TxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
+      dlPhy->TraceConnect ("RxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
     }
-  else
+  if (ulPhy)
     {
-      UpdateNodeCounter (m_remainingEnergyCounterId, nodeId, energyFraction);
+      ulPhy->TraceConnect ("TxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
+      ulPhy->TraceConnect ("RxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
     }
 }
 
-void AnimationInterface::WifiPhyTxBeginTrace (std::string context,
-                                          Ptr<const Packet> p)
-{
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context); 
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  // Add a new pending wireless
-  gAnimUid++;
-  NS_LOG_INFO ("Wifi TxBeginTrace for packet:" << gAnimUid);
-  AnimByteTag tag;
-  tag.Set (gAnimUid);
-  p->AddByteTag (tag);
-  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
-  AddPendingWifiPacket (gAnimUid, pktinfo);
-  Ptr<WifiNetDevice> netDevice = DynamicCast<WifiNetDevice> (ndev);
-  Mac48Address nodeAddr = netDevice->GetMac ()->GetAddress ();
-  std::ostringstream oss; 
-  oss << nodeAddr;
-  m_macToNodeIdMap[oss.str ()] = n->GetId ();
-  NS_LOG_INFO ("Added Mac" << oss.str () << " node:" <<m_macToNodeIdMap[oss.str ()]);
-}
 
-void AnimationInterface::WifiPhyTxEndTrace (std::string context,
-                                            Ptr<const Packet> p)
-{
-}
 
-void AnimationInterface::WifiPhyTxDropTrace (std::string context,
-                                             Ptr<const Packet> p)
+void 
+AnimationInterface::ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  // Erase pending wifi
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("TxDropTrace for packet:" << AnimUid);
-  NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  m_pendingWifiPackets.erase (m_pendingWifiPackets.find (AnimUid));
-}
 
-
-void AnimationInterface::WifiPhyRxBeginTrace (std::string context,
-                                              Ptr<const Packet> p)
-{
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("Wifi RxBeginTrace for packet:" << AnimUid);
-  if (!WifiPacketIsPending (AnimUid))
+  Ptr<LteUePhy> lteUePhy = nd->GetPhy ();
+  Ptr<LteSpectrumPhy> dlPhy = lteUePhy->GetDownlinkSpectrumPhy ();
+  Ptr<LteSpectrumPhy> ulPhy = lteUePhy->GetUplinkSpectrumPhy ();
+  std::ostringstream oss;
+  //NodeList/*/DeviceList/*/
+  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
+  if (dlPhy)
     {
-      NS_LOG_WARN ("WifiPhyRxBeginTrace: unknown Uid");
-      std::ostringstream oss;
-      WifiMacHeader hdr;
-      if (!p->PeekHeader (hdr))
-      { 
-        NS_LOG_WARN ("WifiMacHeader not present");
-        return;
-      }
-      oss << hdr.GetAddr2 ();
-      if (m_macToNodeIdMap.find (oss.str ()) == m_macToNodeIdMap.end ()) 
-      {
-        //NS_LOG_UNCOND (oss.str ());
-        return;
-      }
-      Ptr <Node> txNode = NodeList::GetNode (m_macToNodeIdMap[oss.str ()]);
-      AnimPacketInfo pktinfo (0, Simulator::Now (), Simulator::Now (), UpdatePosition (txNode), m_macToNodeIdMap[oss.str ()]);
-      AddPendingWifiPacket (AnimUid, pktinfo);
-      NS_LOG_WARN ("WifiPhyRxBegin: unknown Uid, but we are adding a wifi packet");
+      dlPhy->TraceConnect ("TxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
+      dlPhy->TraceConnect ("RxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
+    }
+  if (ulPhy)
+    {
+       ulPhy->TraceConnect ("TxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
+       ulPhy->TraceConnect ("RxStart", oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
     }
-  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  m_pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
-  m_pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
-  OutputWirelessPacket (p, m_pendingWifiPackets[AnimUid], m_pendingWifiPackets[AnimUid].GetRxInfo (ndev));
 }
 
-
-void AnimationInterface::WifiPhyRxEndTrace (std::string context,
-                                            Ptr<const Packet> p)
+void 
+AnimationInterface::ConnectLte ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  if (!WifiPacketIsPending (AnimUid))
-    {
-      NS_LOG_WARN ("WifiPhyRxEndTrace: unknown Uid");
-      AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
-      AddPendingWifiPacket (AnimUid, pktinfo);
-    }
-  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
-  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  if (pktrxInfo.IsPhyRxComplete ())
+
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
-      OutputWirelessPacket (p, pktInfo, pktrxInfo);
+      Ptr<Node> n = *i;
+      NS_ASSERT (n);
+      uint32_t nDevices = n->GetNDevices ();
+      for (uint32_t devIndex = 0; devIndex < nDevices; ++devIndex)
+        {
+          Ptr <NetDevice> nd = n->GetDevice (devIndex);
+          if (!nd)
+            continue;
+          Ptr<LteUeNetDevice> lteUeNetDevice = DynamicCast<LteUeNetDevice> (nd);
+          if (lteUeNetDevice)
+            {
+              ConnectLteUe (n, lteUeNetDevice, devIndex);
+              continue;
+            }
+          Ptr<LteEnbNetDevice> lteEnbNetDevice = DynamicCast<LteEnbNetDevice> (nd);
+          if (lteEnbNetDevice)
+            ConnectLteEnb (n, lteEnbNetDevice, devIndex);
+        }
+
     }
 }
 
-void AnimationInterface::WifiMacRxTrace (std::string context,
-                                         Ptr<const Packet> p)
+void 
+AnimationInterface::ConnectCallbacks ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  if (!WifiPacketIsPending (AnimUid))
-    {
-      NS_LOG_WARN ("WifiMacRxTrace: unknown Uid");
-      return;
-    }
-  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  if (pktrxInfo.IsPhyRxComplete ())
-    {
-      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
-      OutputWirelessPacket (p, pktInfo, pktrxInfo);
-    }
+  // Connect the callbacks
+  Config::Connect ("/ChannelList/*/TxRxPointToPoint",
+                   MakeCallback (&AnimationInterface::DevTxTrace, this));
+  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyTxBegin",
+                   MakeCallback (&AnimationInterface::WifiPhyTxBeginTrace, this));
+  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyRxBegin",
+                   MakeCallback (&AnimationInterface::WifiPhyRxBeginTrace, this));
+  Config::ConnectWithoutContext ("/NodeList/*/$ns3::MobilityModel/CourseChange",
+                   MakeCallback (&AnimationInterface::MobilityCourseChangeTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Tx",
+                   MakeCallback (&AnimationInterface::WimaxTxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Rx",
+                   MakeCallback (&AnimationInterface::WimaxRxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Tx",
+                   MakeCallback (&AnimationInterface::LteTxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Rx",
+                   MakeCallback (&AnimationInterface::LteRxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxBegin",
+                   MakeCallback (&AnimationInterface::CsmaPhyTxBeginTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxEnd",
+                   MakeCallback (&AnimationInterface::CsmaPhyTxEndTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyRxEnd",
+                   MakeCallback (&AnimationInterface::CsmaPhyRxEndTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/MacRx",
+                   MakeCallback (&AnimationInterface::CsmaMacRxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyTxBegin",
+                   MakeCallback (&AnimationInterface::UanPhyGenTxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyRxBegin",
+                   MakeCallback (&AnimationInterface::UanPhyGenRxTrace, this));
+  Config::Connect ("/NodeList/*/$ns3::BasicEnergySource/RemainingEnergy",
+                   MakeCallback (&AnimationInterface::RemainingEnergyTrace, this));
 
-}
-void AnimationInterface::WifiPhyRxDropTrace (std::string context,
-                                             Ptr<const Packet> p)
-{
+  ConnectLte ();
+
+  Config::Connect ("/NodeList/*/$ns3::Ipv4L3Protocol/Tx",
+                   MakeCallback (&AnimationInterface::Ipv4TxTrace, this));
+  Config::Connect ("/NodeList/*/$ns3::Ipv4L3Protocol/Rx",
+                   MakeCallback (&AnimationInterface::Ipv4RxTrace, this));
+  Config::Connect ("/NodeList/*/$ns3::Ipv4L3Protocol/Drop",
+                   MakeCallback (&AnimationInterface::Ipv4DropTrace, this));
+
+  // Queue Enqueues
+
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::AlohaNoackNetDevice/Queue/Enqueue",
+                   MakeCallback (&AnimationInterface::EnqueueTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/TxQueue/Enqueue",
+                   MakeCallback (&AnimationInterface::EnqueueTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/TxQueue/Enqueue",
+                   MakeCallback (&AnimationInterface::EnqueueTrace, this));
+
+  // Queue Dequeues
+
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::AlohaNoackNetDevice/Queue/Dequeue",
+                   MakeCallback (&AnimationInterface::DequeueTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/TxQueue/Dequeue",
+                   MakeCallback (&AnimationInterface::DequeueTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/TxQueue/Dequeue",
+                   MakeCallback (&AnimationInterface::DequeueTrace, this));
+
+  // Queue Drops 
+
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::AlohaNoackNetDevice/Queue/Drop",
+                   MakeCallback (&AnimationInterface::QueueDropTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/TxQueue/Drop",
+                   MakeCallback (&AnimationInterface::QueueDropTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/TxQueue/Drop",
+                   MakeCallback (&AnimationInterface::QueueDropTrace, this));
+
+
+  // Wifi Mac
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/MacTx",
+                   MakeCallback (&AnimationInterface::WifiMacTxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/MacTxDrop",
+                   MakeCallback (&AnimationInterface::WifiMacTxDropTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/MacRx",
+                   MakeCallback (&AnimationInterface::WifiMacRxTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/MacRxDrop",
+                   MakeCallback (&AnimationInterface::WifiMacRxDropTrace, this));
+
+  // Wifi Phy
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyTxDrop",
+                   MakeCallback (&AnimationInterface::WifiPhyTxDropTrace, this));
+  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyRxDrop",
+                   MakeCallback (&AnimationInterface::WifiPhyRxDropTrace, this));
 }
 
-void AnimationInterface::WimaxTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+Vector 
+AnimationInterface::UpdatePosition (Ptr <Node> n)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  gAnimUid++;
-  NS_LOG_INFO ("WimaxTxTrace for packet:" << gAnimUid);
-  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-  /// \todo 0.0001 is used until Wimax implements TxBegin and TxEnd traces
-  AnimByteTag tag;
-  tag.Set (gAnimUid);
-  p->AddByteTag (tag);
-  AddPendingWimaxPacket (gAnimUid, pktinfo);
+  Ptr<MobilityModel> loc = n->GetObject<MobilityModel> ();
+  if (loc)
+    {
+      m_nodeLocation[n->GetId ()] = loc->GetPosition ();
+    }
+  else
+   {
+     NS_LOG_UNCOND ( "AnimationInterface WARNING:Node:" << n->GetId () << " Does not have a mobility model. Use SetConstantPosition if it is stationary");
+     m_nodeLocation[n->GetId ()] = Vector (0, 0, 0);
+   }
+  return m_nodeLocation[n->GetId ()];
 }
 
-
-void AnimationInterface::WimaxRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+Vector 
+AnimationInterface::UpdatePosition (Ptr <Node> n, Vector v)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("WimaxRxTrace for packet:" << AnimUid);
-  NS_ASSERT (WimaxPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingWimaxPackets[AnimUid];
-  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
-  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-  /// \todo 0.001 is used until Wimax implements RxBegin and RxEnd traces
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  OutputWirelessPacket (p, pktInfo, pktrxInfo);
+  m_nodeLocation[n->GetId ()] = v;
+  return v;
 }
 
-void AnimationInterface::LteTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+Vector 
+AnimationInterface::GetPosition (Ptr <Node> n)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  gAnimUid++;
-  NS_LOG_INFO ("LteTxTrace for packet:" << gAnimUid);
-  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-  /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
-  AnimByteTag tag;
-  tag.Set (gAnimUid);
-  p->AddByteTag (tag);
-  AddPendingLtePacket (gAnimUid, pktinfo);
+  if (m_nodeLocation.find (n->GetId ()) == m_nodeLocation.end ())
+    {
+      NS_FATAL_ERROR ("Node:" <<n->GetId () << " not found in Location table");
+    }  
+  return m_nodeLocation[n->GetId ()];
 }
 
 
-void AnimationInterface::LteRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
+std::string 
+AnimationInterface::GetMacAddress (Ptr <NetDevice> nd)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("LteRxTrace for packet:" << gAnimUid);
-  if (!LtePacketIsPending (AnimUid))
-    {
-      NS_LOG_WARN ("LteRxTrace: unknown Uid");
-      return;
-    }
-  AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
-  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
-  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-  /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  OutputWirelessPacket (p, pktInfo, pktrxInfo);
+  Address nodeAddr = nd->GetAddress ();
+  std::ostringstream oss;
+  oss << nodeAddr;
+  return oss.str ().substr (6); // Skip the first 6 chars to get the Mac
 }
 
-void AnimationInterface::LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb)
+std::string 
+AnimationInterface::GetIpv4Address (Ptr <NetDevice> nd)
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  if (!pb) 
+  Ptr<Ipv4> ipv4 = NodeList::GetNode (nd->GetNode ()->GetId ())->GetObject <Ipv4> ();
+  if (!ipv4)
     {
-      NS_LOG_WARN ("pb == 0. Not yet supported");
-      return;
+      NS_LOG_WARN ("Node: " << nd->GetNode ()->GetId () << " No ipv4 object found");
+      return "0.0.0.0";
     }
-  context = "/" + context;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-
-  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
-  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
-       i != pbList.end ();
-       ++i)
-  {
-    Ptr <Packet> p = *i;
-    gAnimUid++;
-    NS_LOG_INFO ("LteSpectrumPhyTxTrace for packet:" << gAnimUid);
-    AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-    /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
-    AnimByteTag tag;
-    tag.Set (gAnimUid);
-    p->AddByteTag (tag);
-    AddPendingLtePacket (gAnimUid, pktinfo);
-  }
-}
-
-void AnimationInterface::LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb)
-{
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  if (!pb) 
+  int32_t ifIndex = ipv4->GetInterfaceForDevice (nd);
+  if (ifIndex == -1)
     {
-      NS_LOG_WARN ("pb == 0. Not yet supported");
-      return;
+      NS_LOG_WARN ("Node :" << nd->GetNode ()->GetId () << " Could not find index of NetDevice");
+      return "0.0.0.0";
     }
-  context = "/" + context;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-
-  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
-  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
-       i != pbList.end ();
-       ++i)
-  {
-    Ptr <Packet> p = *i;
-    uint64_t AnimUid = GetAnimUidFromPacket (p);
-    NS_LOG_INFO ("LteSpectrumPhyRxTrace for packet:" << gAnimUid);
-    if (!LtePacketIsPending (AnimUid))
-      {
-        NS_LOG_WARN ("LteSpectrumPhyRxTrace: unknown Uid");
-        return;
-      }
-    AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
-    pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
-    pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
-    /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
-    AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-    OutputWirelessPacket (p, pktInfo, pktrxInfo);
-  }
-}
-
-void AnimationInterface::CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p)
-{
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  gAnimUid++;
-  NS_LOG_INFO ("CsmaPhyTxBeginTrace for packet:" << gAnimUid);
-  AnimByteTag tag;
-  tag.Set (gAnimUid);
-  p->AddByteTag (tag);
-  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
-  AddPendingCsmaPacket (gAnimUid, pktinfo);
-
+  Ipv4InterfaceAddress addr = ipv4->GetAddress (ifIndex, 0);
+  std::ostringstream oss;
+  oss << addr.GetLocal ();
+  return oss.str ();
 }
 
-void AnimationInterface::CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p)
+void 
+AnimationInterface::WriteLinkProperties ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  NS_LOG_INFO ("CsmaPhyTxEndTrace for packet:" << AnimUid);
-  if (!CsmaPacketIsPending (AnimUid))
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_WARN ("CsmaPhyTxEndTrace: unknown Uid"); 
-      AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
-      AddPendingCsmaPacket (AnimUid, pktinfo);
-      NS_LOG_WARN ("Unknown Uid, but adding Csma Packet anyway");
+      Ptr<Node> n = *i;
+      UpdatePosition (n);
+      uint32_t n1Id = n->GetId ();
+      uint32_t nDev = n->GetNDevices ();  // Number of devices
+      for (uint32_t i = 0; i < nDev; ++i)
+        {
+          Ptr<NetDevice> dev = n->GetDevice (i);
+ 	  NS_ASSERT (dev);
+          Ptr<Channel>   ch = dev->GetChannel ();
+          if (!ch) 
+            {
+	      NS_LOG_DEBUG ("No channel can't be a p2p device");
+              // Try to see if it is an LTE NetDevice, which does not return a channel
+              if ((dev->GetInstanceTypeId ().GetName () == "ns3::LteUeNetDevice") || 
+                  (dev->GetInstanceTypeId ().GetName () == "ns3::LteEnbNetDevice")||
+                  (dev->GetInstanceTypeId ().GetName () == "ns3::VirtualNetDevice"))
+                {
+                  WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), dev->GetInstanceTypeId ().GetName ());
+                  AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
+                }
+              continue;
+            }
+          std::string channelType = ch->GetInstanceTypeId ().GetName ();
+          NS_LOG_DEBUG ("Got ChannelType" << channelType);
+          if (channelType == std::string ("ns3::PointToPointChannel"))
+            { // Since these are duplex links, we only need to dump
+              // if srcid < dstid
+              uint32_t nChDev = ch->GetNDevices ();
+              for (uint32_t j = 0; j < nChDev; ++j)
+                {
+                  Ptr<NetDevice> chDev = ch->GetDevice (j);
+                  uint32_t n2Id = chDev->GetNode ()->GetId ();
+                  if (n1Id < n2Id)
+                    { 
+                      // ouptut the p2p link
+                      NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << ":" << GetMacAddress (dev) << "----" << GetIpv4Address (chDev) << ":" << GetMacAddress (chDev) );
+                      AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n1Id);
+                      AddToIpv4AddressNodeIdTable (GetIpv4Address (chDev), n2Id);
+                      WriteXmlLink (n1Id, 0, n2Id);
+                    }
+                }
+            }
+          else
+            {
+              NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << " Channel Type:" << channelType << " Mac: " << GetMacAddress (dev));
+              WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), channelType); 
+              AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
+            }
+        }
     }
-  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
-  pktInfo.m_lbTx = Simulator::Now ().GetSeconds ();
+  m_linkProperties.clear ();
 }
 
-void AnimationInterface::CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p)
+void
+AnimationInterface::WriteNodes ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  if (!CsmaPacketIsPending (AnimUid))
-    {
-      NS_LOG_WARN ("CsmaPhyRxEndTrace: unknown Uid"); 
-      return;
-    }
-  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
-  m_pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
-  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
-  NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid);
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  if (pktrxInfo.IsPhyRxComplete ())
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid << " complete");
-      OutputCsmaPacket (p, pktInfo, pktrxInfo);
+      Ptr<Node> n = *i;
+      NS_LOG_INFO ("Update Position for Node: " << n->GetId ());
+      Vector v = UpdatePosition (n);
+      WriteXmlNode (n->GetId (), n->GetSystemId (), v.x, v.y);
     }
 }
 
-
-void AnimationInterface::CsmaMacRxTrace (std::string context,
-                                         Ptr<const Packet> p)
+void 
+AnimationInterface::WriteNodeColors ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  NS_LOG_FUNCTION (this);
-  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
-  NS_ASSERT (ndev);
-  Ptr <Node> n = ndev->GetNode ();
-  NS_ASSERT (n);
-  uint64_t AnimUid = GetAnimUidFromPacket (p);
-  if (!CsmaPacketIsPending (AnimUid))
-    {
-      NS_LOG_WARN ("CsmaMacRxTrace: unknown Uid"); 
-      return;
-    }
-  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
-  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
-  if (pktrxInfo.IsPhyRxComplete ())
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
-      OutputCsmaPacket (p, pktInfo, pktrxInfo);
+      Ptr<Node> n = *i;
+      Rgb rgb = {255, 0, 0};
+      if (m_nodeColors.find (n->GetId ()) == m_nodeColors.end ())
+      {
+        m_nodeColors[n->GetId ()] = rgb;
+      }
+      UpdateNodeColor (n, rgb.r, rgb.g, rgb.b);
     }
 }
 
-
-void AnimationInterface::MobilityCourseChangeTrace (Ptr <const MobilityModel> mobility)
-
+void 
+AnimationInterface::WriteNodeSizes ()
 {
-  if (!m_started || !IsInTimeWindow () || !m_trackPackets)
-    return;
-  Ptr <Node> n = mobility->GetObject <Node> ();
-  NS_ASSERT (n);
-  Vector v ;
-  if (!mobility)
-    {
-      v = GetPosition (n);
-    } 
-  else
-    {
-      v = mobility->GetPosition ();
-    }
-  UpdatePosition (n,v);
-  RecalcTopoBounds (v);
-  std::ostringstream oss; 
-  if (!m_enable3105)
-    {
-      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]);
-    }
-  else
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-      oss << GetXMLOpenCloseUpdateNodePosition (n->GetId (), v.x, v.y);
+      Ptr<Node> n = *i;
+      NS_LOG_INFO ("Update Size for Node: " << n->GetId ());
+      AnimationInterface::NodeSize s = { 1, 1 };
+      m_nodeSizes[n->GetId ()] = s;
+      UpdateNodeSize (n->GetId (), s.width, s.height);
     }
-  WriteN (oss.str (), m_f);
-  WriteDummyPacket ();
 }
 
-bool AnimationInterface::NodeHasMoved (Ptr <Node> n, Vector newLocation)
+void 
+AnimationInterface::WriteNodeEnergies ()
 {
-  Vector oldLocation = GetPosition (n);
-  if ((ceil (oldLocation.x) == ceil (newLocation.x)) &&
-    (ceil (oldLocation.y) == ceil (newLocation.y)))
+  m_remainingEnergyCounterId = AddNodeCounter ("RemainingEnergy", AnimationInterface::DOUBLE_COUNTER);
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
-     
-      return false;
+      Ptr<Node> n = *i;
+      if (NodeList::GetNode (n->GetId ())->GetObject<EnergySource> ())
+        {
+          UpdateNodeCounter (m_remainingEnergyCounterId, n->GetId (), 1);
+        }
     }
+}
+
+bool 
+AnimationInterface::IsInTimeWindow ()
+{
+  if ((Simulator::Now () >= m_startTime) && 
+      (Simulator::Now () <= m_stopTime))
+    return true;
   else
-    {
-      return true;
-    }
+    return false;
 }
 
-void AnimationInterface::MobilityAutoCheck ()
+void 
+AnimationInterface::SetOutputFile (const std::string& fn, bool routing)
 {
-  if (!m_started || !IsInTimeWindow ())
-    return;
-  std::vector <Ptr <Node> > MovedNodes = RecalcTopoBounds ();
-  std::ostringstream oss;
-  for (uint32_t i = 0; i < MovedNodes.size (); i++)
+  if (!routing && m_f)
     {
-      Ptr <Node> n = MovedNodes [i];
-      NS_ASSERT (n);
-      Vector v = GetPosition (n);
-      if (!m_enable3105)
-        {
-          oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y);
-        }
-      else
-        {
-          oss << GetXMLOpenCloseUpdateNodePosition (n->GetId () , v.x, v.y);
-        }
+      return;
     }
-  if (!m_enable3105)
+  if (routing && m_routingF)
     {
-      WriteDummyPacket ();
+      NS_FATAL_ERROR ("SetRoutingOutputFile already used once");
+      return;
     }
-  else
+
+  NS_LOG_INFO ("Creating new trace file:" << fn.c_str ());
+  FILE * f = 0;
+  f = std::fopen (fn.c_str (), "w");
+  if (!f)
     {
-      WriteN (oss.str (), m_f);
+      NS_FATAL_ERROR ("Unable to open output file:" << fn.c_str ());
+      return; // Can't open output file
     }
-  if (!Simulator::IsFinished ())
+  if (routing)
     {
-      PurgePendingWifi ();
-      PurgePendingWimax ();
-      PurgePendingLte ();
-      PurgePendingCsma ();
-      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
+      m_routingF = f;
+      m_routingFileName = fn;
     }
+  else
+    {
+      m_f = f;
+      m_outputFileName = fn;
+    }
+  return;
 }
 
-void AnimationInterface::UpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
+void 
+AnimationInterface::CheckMaxPktsPerTraceFile ()
 {
-  NS_LOG_INFO ("Setting node image for Node Id:" << nodeId);
-  if (resourceId > (m_resources.size ()-1))
+  // Start a new trace file if the current packet count exceeded nax packets per file
+  ++m_currentPktCount;
+  if (m_currentPktCount <= m_maxPktsPerFile)
     {
-      NS_FATAL_ERROR ("Resource Id:" << resourceId << " not found. Did you use AddResource?");
-    } 
-  std::ostringstream oss;
-  oss << GetXMLOpenCloseUpdateNodeImage (nodeId, resourceId);
-  WriteN (oss.str (), m_f);
+      return;
+    }
+  NS_LOG_UNCOND ("Max Packets per trace file exceeded");
+  StopAnimation (true);
 }
 
-
-std::string AnimationInterface::GetPacketMetadata (Ptr<const Packet> p)
+std::string 
+AnimationInterface::GetNetAnimVersion ()
 {
-  std::ostringstream oss;
-  p->Print (oss);
-  return oss.str ();
+  return NETANIM_VERSION; 
 }
 
-uint64_t AnimationInterface::GetTracePktCount ()
-{
-  return m_currentPktCount;
-}
 
-double AnimationInterface::GetNodeEnergyFraction (Ptr <const Node> node) const
+// Routing
+
+void 
+AnimationInterface::TrackIpv4RoutePaths ()
 {
-  const EnergyFractionMap::const_iterator fractionIter = m_nodeEnergyFraction.find (node->GetId ());
+  if (m_ipv4RouteTrackElements.empty ())
+    {
+      return;
+    }
+  for (std::vector <Ipv4RouteTrackElement>::const_iterator i = m_ipv4RouteTrackElements.begin ();
+       i != m_ipv4RouteTrackElements.end ();
+       ++i)
+    {
+      Ipv4RouteTrackElement trackElement = *i;
+      Ptr <Node> fromNode = NodeList::GetNode (trackElement.fromNodeId);
+      if (!fromNode)
+        {
+          NS_FATAL_ERROR ("Node: " << trackElement.fromNodeId << " Not found");
+          continue;
+        }
+      Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
+      if (!ipv4)
+        {
+          NS_LOG_WARN ("ipv4 object not found");
+          continue;
+        }
+      Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
+      if (!rp)
+        {
+          NS_LOG_WARN ("Routing protocol object not found");
+          continue;
+        }
+      NS_LOG_INFO ("Begin Track Route for: " << trackElement.destination.c_str () << " From:" << trackElement.fromNodeId);
+      Ptr<Packet> pkt = Create<Packet> ();
+      Ipv4Header header;
+      header.SetDestination (Ipv4Address (trackElement.destination.c_str ()));
+      Socket::SocketErrno sockerr;
+      Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
+      Ipv4RoutePathElements rpElements;
+      if (!rt)
+        {
+          NS_LOG_INFO ("No route to :" << trackElement.destination.c_str ());
+          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
+          rpElements.push_back (elem);
+          WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
+          continue;
+        }
+      std::ostringstream oss;
+      oss << rt->GetGateway ();
+      NS_LOG_INFO ("Node:" << trackElement.fromNodeId << "-->" << rt->GetGateway ()); 
+      if (rt->GetGateway () == "0.0.0.0")
+        {
+          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "C" };
+          rpElements.push_back (elem);
+          if ( m_ipv4ToNodeIdMap.find (trackElement.destination) != m_ipv4ToNodeIdMap.end ())
+            {
+              Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[trackElement.destination], "L" };
+              rpElements.push_back (elem2);
+            }
+        }
+      else if (rt->GetGateway () == "127.0.0.1")
+        {
+          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
+          rpElements.push_back (elem);
+        }
+      else
+        {
+          Ipv4RoutePathElement elem = { trackElement.fromNodeId, oss.str () };
+          rpElements.push_back (elem);
+        }
+      RecursiveIpv4RoutePathSearch (oss.str (), trackElement.destination, rpElements);
+      WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
+    }
 
-  NS_ASSERT (fractionIter != m_nodeEnergyFraction.end ());
-  return fractionIter->second;
 }
 
-int64_t
-AnimationInterface::AssignStreams (int64_t stream)
+void
+AnimationInterface::TrackQueueCounters ()
 {
-  NS_LOG_FUNCTION (this << stream);
-  m_uniformRandomVariable->SetStream (stream);
-  return 1;
+  if (Simulator::Now () > m_queueCountersStopTime)
+    {
+      NS_LOG_INFO ("TrackQueueCounters Completed");
+      return;
+    }
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+    {
+      uint32_t nodeId = Ptr <Node> (*i)->GetId ();
+      UpdateNodeCounter (m_queueEnqueueCounterId, nodeId, m_nodeQueueEnqueue[nodeId]);
+      UpdateNodeCounter (m_queueDequeueCounterId, nodeId, m_nodeQueueDequeue[nodeId]);
+      UpdateNodeCounter (m_queueDropCounterId, nodeId, m_nodeQueueDrop[nodeId]);
+    }
+  Simulator::Schedule (m_queueCountersPollInterval, &AnimationInterface::TrackQueueCounters, this);
 }
 
-// Helper to output a wireless packet.
-// For now, only the XML interface is supported
-std::string AnimationInterface::CounterTypeToString (CounterType counterType)
+void
+AnimationInterface::TrackWifiMacCounters ()
 {
-  std::string typeString = "unknown";
-  switch (counterType)
+  if (Simulator::Now () > m_wifiMacCountersStopTime)
     {
-      case UINT32_COUNTER:
-        {
-          typeString = "UINT32";
-          break;
-        } 
-      case DOUBLE_COUNTER:
-        {
-          typeString = "DOUBLE";
-          break;
-        } 
+      NS_LOG_INFO ("TrackWifiMacCounters Completed");
+      return;
     }
-  return typeString;
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+    {
+      uint32_t nodeId = Ptr <Node> (*i)->GetId ();
+      UpdateNodeCounter (m_wifiMacTxCounterId, nodeId, m_nodeWifiMacTx[nodeId]);
+      UpdateNodeCounter (m_wifiMacTxDropCounterId, nodeId, m_nodeWifiMacTxDrop[nodeId]);
+      UpdateNodeCounter (m_wifiMacRxCounterId, nodeId, m_nodeWifiMacRx[nodeId]);
+      UpdateNodeCounter (m_wifiMacRxDropCounterId, nodeId, m_nodeWifiMacRxDrop[nodeId]);
+    }
+  Simulator::Schedule (m_wifiMacCountersPollInterval, &AnimationInterface::TrackWifiMacCounters, this);
 }
 
-
-std::string AnimationInterface::GetPreamble ()
+void
+AnimationInterface::TrackWifiPhyCounters ()
 {
-  std::string s = 
-    "<information><!-- \n\
-    Description of attributes:\n\
-    =========================\n\
-    anim\n\
-    * ver = Current version\n\
-    topology\n\
-    * minX = minimum X coordinate of the canvas\n\
-    * minY = minimum Y coordinate of the canvas\n\
-    * maxX = maximum X coordinate of the canvas\n\
-    * maxY = maximum Y coordinate of the canvas\n\
-    node\n\
-    * id = Node Id\n\
-    * locX = X coordinate\n\
-    * locY = Y coordinate\n\
-    * r = Red component\n\
-    * g = Green component\n\
-    * b = Blue component\n\
-    link\n\
-    * fromId = From Node Id\n\
-    * toId   = To Node Id\n\
-    * fd = From Node description (for IP Address)\n\
-    * td = To Node description (for IP Address)\n\
-    * ld = Link description (for Bandwidth, delay etc)\n\
-    linkupdate\n\
-    * t = Simulation time\n\
-    * ld = Link description (for Bandwidth, delay etc)\n\
-    nodeupdate\n\
-    * t = Simulation time\n\
-    * descr = Node description\n\
-    * r = Red component\n\
-    * g = Green component\n\
-    * b = Blue component\n\
-    * visible = Node visibility\n\
-    * rc = Residual energy (between 0 and 1)\n\
-    p\n\
-    * fId = From Node Id\n\
-    * fbTx = First bit transmit time\n\
-    * lbTx = Last bit transmit time\n\
-    * tId = To Node Id\n\
-    * fbRx = First bit Rx Time\n\
-    * lbRx = Last bit Rx\n\
-    * meta-info = Packet meta data\n\
-    wp\n\
-    * fId = From Node Id\n\
-    * fbTx = First bit transmit time\n\
-    * lbTx = Last bit transmit time\n\
-    * range = Reception range\n\
-    * tId = To Node Id\n\
-    * fbRx = First bit Rx time\n\
-    * meta-info = Packet meta data\n\
-    * lbRx = Last bit Rx time-->\n\
-    </information>\n";
-return s;
+  if (Simulator::Now () > m_wifiPhyCountersStopTime)
+    {
+      NS_LOG_INFO ("TrackWifiPhyCounters Completed");
+      return;
+    }
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+    {
+      uint32_t nodeId = Ptr <Node> (*i)->GetId ();
+      UpdateNodeCounter (m_wifiPhyTxDropCounterId, nodeId, m_nodeWifiPhyTxDrop[nodeId]);
+      UpdateNodeCounter (m_wifiPhyRxDropCounterId, nodeId, m_nodeWifiPhyRxDrop[nodeId]);
+    }
+  Simulator::Schedule (m_wifiPhyCountersPollInterval, &AnimationInterface::TrackWifiPhyCounters, this);
 }
 
-void AnimationInterface::OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
+void
+AnimationInterface::TrackIpv4L3ProtocolCounters ()
 {
-  StartNewTraceFile ();
-  std::ostringstream oss;
-  uint32_t nodeId =  0;
-  if (pktInfo.m_txnd)
-    nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
-  else
-    nodeId = pktInfo.m_txNodeId;
-
-  double lbTx = pktInfo.firstlastbitDelta + pktInfo.m_fbTx;
-  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
-
-  oss << GetXMLOpenClose_p ("wp", nodeId, pktInfo.m_fbTx, lbTx, rxId,
-                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
-  WriteN (oss.str (), m_f);
+  if (Simulator::Now () > m_ipv4L3ProtocolCountersStopTime)
+    {
+      NS_LOG_INFO ("TrackIpv4L3ProtocolCounters Completed");
+      return;
+    }
+  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+    {
+      uint32_t nodeId = Ptr <Node> (*i)->GetId ();
+      UpdateNodeCounter (m_ipv4L3ProtocolTxCounterId, nodeId, m_nodeIpv4Tx[nodeId]);
+      UpdateNodeCounter (m_ipv4L3ProtocolRxCounterId, nodeId, m_nodeIpv4Rx[nodeId]);
+      UpdateNodeCounter (m_ipv4L3ProtocolDropCounterId, nodeId, m_nodeIpv4Drop[nodeId]);
+    }
+  Simulator::Schedule (m_ipv4L3ProtocolCountersPollInterval, &AnimationInterface::TrackIpv4L3ProtocolCounters, this);
 }
 
-void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
+void 
+AnimationInterface::TrackIpv4Route ()
 {
-  StartNewTraceFile ();
-  std::ostringstream oss;
-  NS_ASSERT (pktInfo.m_txnd);
-  uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
-  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
-
-  oss << GetXMLOpenClose_p ("p", nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx, rxId,
-                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
-  WriteN (oss.str (), m_f);
+  if (Simulator::Now () > m_routingStopTime)
+    {
+      NS_LOG_INFO ("TrackIpv4Route completed");
+      return;
+    }
+  if (m_routingNc.GetN ())
+    {
+      for (NodeContainer::Iterator i = m_routingNc.Begin (); i != m_routingNc.End (); ++i)
+        {
+          Ptr <Node> n = *i;
+          WriteXmlRouting (n->GetId (), GetIpv4RoutingTable (n));
+        }
+    }
+  else
+    {
+      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
+        {
+          Ptr <Node> n = *i;
+          WriteXmlRouting (n->GetId (), GetIpv4RoutingTable (n));
+        }
+    }
+  TrackIpv4RoutePaths ();
+  Simulator::Schedule (m_routingPollInterval, &AnimationInterface::TrackIpv4Route, this);
 }
 
-void AnimationInterface::SetConstantPosition (Ptr <Node> n, double x, double y, double z)
+std::string 
+AnimationInterface::GetIpv4RoutingTable (Ptr <Node> n)
 {
+
   NS_ASSERT (n);
-  Ptr<ConstantPositionMobilityModel> hubLoc =  n->GetObject<ConstantPositionMobilityModel> ();
-  if (hubLoc == 0)
+  Ptr <ns3::Ipv4> ipv4 = n->GetObject <ns3::Ipv4> ();
+  if (!ipv4)
     {
-      hubLoc = CreateObject<ConstantPositionMobilityModel> ();
-      n->AggregateObject (hubLoc);
+      NS_LOG_WARN ("Node " << n->GetId () << " Does not have an Ipv4 object");
+      return "";
     }
-  Vector hubVec (x, y, z);
-  hubLoc->SetPosition (hubVec);
-  NS_LOG_INFO ("Node:" << n->GetId () << " Position set to:(" << x << "," << y << "," << z << ")");
+  std::stringstream stream;
+  Ptr<OutputStreamWrapper> routingstream = Create<OutputStreamWrapper> (&stream);
+  ipv4->GetRoutingProtocol ()->PrintRoutingTable (routingstream);
+  return stream.str ();
 
 }
 
-void AnimationInterface::UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter)
+void 
+AnimationInterface::RecursiveIpv4RoutePathSearch (std::string from, std::string to, Ipv4RoutePathElements & rpElements)
 {
-  if (nodeCounterId > (m_nodeCounters.size ()-1))
+  NS_LOG_INFO ("RecursiveIpv4RoutePathSearch from:" << from.c_str () << " to:" << to.c_str ());
+  if ((from == "0.0.0.0") || (from == "127.0.0.1"))
+    {
+      NS_LOG_INFO ("Got " << from.c_str () << " End recursion");
+      return;
+    }
+  Ptr <Node> fromNode = NodeList::GetNode (m_ipv4ToNodeIdMap[from]);
+  Ptr <Node> toNode = NodeList::GetNode (m_ipv4ToNodeIdMap[to]);
+  if (fromNode->GetId () == toNode->GetId ())
+    {
+      Ipv4RoutePathElement elem = { fromNode->GetId (), "L" };
+      rpElements.push_back (elem);
+      return;
+    }
+  if (!fromNode)
+    {
+      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[from] << " Not found");
+      return;
+    }
+  if (!toNode)
+    {
+      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[to] << " Not found");
+      return;
+    }
+  Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
+  if (!ipv4)
+    {
+      NS_LOG_WARN ("ipv4 object not found");
+      return;
+    }
+  Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
+  if (!rp)
+    {
+      NS_LOG_WARN ("Routing protocol object not found");
+      return;
+    }
+  Ptr<Packet> pkt = Create<Packet> ();
+  Ipv4Header header;
+  header.SetDestination (Ipv4Address (to.c_str ()));
+  Socket::SocketErrno sockerr;
+  Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
+  if (!rt)
     {
-      NS_FATAL_ERROR ("NodeCounter Id:" << nodeCounterId << " not found. Did you use AddNodeCounter?");
+      return;
     }
+  NS_LOG_DEBUG ("Node: " << fromNode->GetId () << " G:" << rt->GetGateway ());
   std::ostringstream oss;
-  oss << GetXMLOpenCloseUpdateNodeCounter (nodeCounterId, nodeId, counter);
-  WriteN (oss.str (), m_f);
-}
-
-void AnimationInterface::SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
-{
-  if ((opacity < 0) || (opacity > 1))
+  oss << rt->GetGateway ();
+  if (oss.str () == "0.0.0.0" && (sockerr != Socket::ERROR_NOROUTETOHOST))
     {
-      NS_FATAL_ERROR ("Opacity must be between 0.0 and 1.0");
+      NS_LOG_INFO ("Null gw");
+      Ipv4RoutePathElement elem = { fromNode->GetId (), "C" };
+      rpElements.push_back (elem);
+      if ( m_ipv4ToNodeIdMap.find (to) != m_ipv4ToNodeIdMap.end ())
+        {
+          Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[to], "L" };
+          rpElements.push_back (elem2);
+        }
+      return;
     }
-  std::ostringstream oss;
-  oss << GetXMLOpenCloseUpdateBackground (fileName, x, y, scaleX, scaleY, opacity);
-  WriteN (oss.str (), m_f);
-}
-
+  NS_LOG_INFO ("Node:" << fromNode->GetId () << "-->" << rt->GetGateway ()); 
+  Ipv4RoutePathElement elem = { fromNode->GetId (), oss.str () };
+  rpElements.push_back (elem);
+  RecursiveIpv4RoutePathSearch (oss.str (), to, rpElements);
 
-void AnimationInterface::SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
-{
-  if (initialized)
-    NS_FATAL_ERROR ("SetNodeColor must be used prior to creating the AnimationInterface object");
-  NS_ASSERT (n);
-  NS_LOG_INFO ("Setting node color for Node Id:" << n->GetId ());
-  struct Rgb rgb = {r, g, b};
-  nodeColors[n->GetId ()] = rgb;
 }
 
-void AnimationInterface::ShowNode (uint32_t nodeId, bool show)
-{
-  NS_ASSERT (NodeList::GetNode (nodeId));
-  NS_LOG_INFO ("Setting node visibility for Node Id:" << nodeId); 
-  WriteNodeUpdate (nodeId);
-}
 
-void AnimationInterface::ShowNode (Ptr <Node> n, bool show)
-{
-  ShowNode (n, show);
-}
+// XML 
 
-void AnimationInterface::WriteNodeUpdate (uint32_t nodeId)
+AnimationInterface::AnimXmlElement::AnimXmlElement (std::string tagName):
+                                m_tagName (tagName)
 {
-  std::ostringstream oss;
-  oss << GetXMLOpenClose_nodeupdate (nodeId);
-  WriteN (oss.str (), m_f);
+  m_elementString = "<" + tagName + " ";
 }
 
-void AnimationInterface::UpdateNodeSize (uint32_t nodeId, double width, double height)
+template <typename T>
+void
+AnimationInterface::AnimXmlElement::AddAttribute (std::string attribute, T value)
 {
-  NodeSize s = { width, height };
-  m_nodeSizes[nodeId] = s;
   std::ostringstream oss;
-  oss << GetXMLOpenCloseUpdateNodeSize (nodeId, s.width, s.height);
-  WriteN (oss.str (), m_f);
-}
-
-
-void AnimationInterface::UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
-{
-  UpdateNodeColor (n->GetId (), r, g, b);
-}
-
-void AnimationInterface::UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
-{
-  NS_ASSERT (NodeList::GetNode (nodeId));
-  NS_LOG_INFO ("Setting node color for Node Id:" << nodeId); 
-  struct Rgb rgb = {r, g, b};
-  nodeColors[nodeId] = rgb;
-  if (!m_enable3105)
-    {
-      WriteNodeUpdate (nodeId);
-    }
-  else
-    {
-      std::ostringstream oss;
-      oss << GetXMLOpenCloseUpdateNodeColor (nodeId, r, g, b);
-      WriteN (oss.str (), m_f);
-    }
+  oss << std::setprecision (10);
+  oss << value;
+  m_elementString += attribute.c_str ();
+  m_elementString += "=\"" + oss.str () + "\" ";
 }
 
-
-
-void AnimationInterface::SetNodeColor (NodeContainer nc, uint8_t r, uint8_t g, uint8_t b)
+void
+AnimationInterface::AnimXmlElement::Close ()
 {
-  for (uint32_t i = 0; i < nc.GetN (); ++i)
-    {
-      Ptr <Node> n = nc.Get (i);
-      NS_ASSERT (n);
-      SetNodeColor (n, r, g, b);
-    }
+  m_elementString += ">\n";
 }
 
-
-void AnimationInterface::UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
-                                                std::string linkDescription)
+void
+AnimationInterface::AnimXmlElement::CloseTag ()
 {
-  std::ostringstream oss;
-  oss << GetXMLOpenClose_linkupdate (fromNode, toNode, linkDescription);
-  WriteN (oss.str (), m_f);
+  m_elementString += ">";
 }
 
-void AnimationInterface::UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
-                                                std::string linkDescription)
+void
+AnimationInterface::AnimXmlElement::AddLineBreak ()
 {
-  NS_ASSERT (fromNode);
-  NS_ASSERT (toNode);
-  std::ostringstream oss;
-  oss << GetXMLOpenClose_linkupdate (fromNode->GetId (), toNode->GetId (), linkDescription);
-  WriteN (oss.str (), m_f);
-}
-
-void AnimationInterface::SetLinkDescription (uint32_t fromNode, uint32_t toNode, 
-                                             std::string linkDescription,
-                                             std::string fromNodeDescription,
-                                             std::string toNodeDescription)
-{
-
-  P2pLinkNodeIdPair p2pPair;
-  p2pPair.fromNode = fromNode;
-  p2pPair.toNode = toNode;
-  LinkProperties lp = { fromNodeDescription, toNodeDescription, linkDescription };
-  linkProperties[p2pPair] = lp;
-  /* DEBUG */
-  /*
-  for (std::map <P2pLinkNodeIdPair, LinkProperties>::const_iterator i = linkProperties.begin ();
-	i != linkProperties.end (); ++i)
-   {
-    P2pLinkNodeIdPair ppair = i->first;
-    LinkProperties l = i->second;
-    NS_LOG_UNCOND ("A:" << ppair.fromNode << " B:" << ppair.toNode << " ad:" << l.fromNodeDescription << " bd:" << l.toNodeDescription << " ld:" << l.linkDescription);
-     
-   }
-   */
+  m_elementString += "\n";
 }
 
-void AnimationInterface::SetLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
-                                             std::string linkDescription,
-                                             std::string fromNodeDescription,
-                                             std::string toNodeDescription)
+void
+AnimationInterface::AnimXmlElement::Add (AnimXmlElement e)
 {
-  NS_ASSERT (fromNode);
-  NS_ASSERT (toNode);
-  SetLinkDescription (fromNode->GetId (), toNode->GetId (), linkDescription, fromNodeDescription, toNodeDescription);
+  m_elementString += e.GetElementString ();
 }
 
-
-void AnimationInterface::SetNodeDescription (Ptr <Node> n, std::string descr) 
+std::string
+AnimationInterface::AnimXmlElement::GetElementString ()
 {
-  if (initialized)
-    NS_FATAL_ERROR ("SetNodeDescription must be used prior to creating the AnimationInterface object");
-  NS_ASSERT (n);
-  nodeDescriptions[n->GetId ()] = descr;
+  return m_elementString;
 }
 
-void AnimationInterface::UpdateNodeDescription (Ptr <Node> n, std::string descr)
-{
-  UpdateNodeDescription (n->GetId (), descr);
-}
 
-void AnimationInterface::UpdateNodeDescription (uint32_t nodeId, std::string descr)
+void 
+AnimationInterface::WriteXmlAnim (bool routing)
 {
-  NS_ASSERT (NodeList::GetNode (nodeId));
-  nodeDescriptions[nodeId] = descr;
-  std::ostringstream oss;
-  if (!m_enable3105)
+  AnimXmlElement element ("anim");
+  element.AddAttribute ("ver", GetNetAnimVersion ());
+  element.Close ();
+  if (!routing)
     {
-      oss << GetXMLOpenClose_nodeupdate (nodeId);
+      WriteN (element.GetElementString (), m_f);
     }
   else
     {
-      oss << GetXMLOpenCloseUpdateNodeDescription (nodeId);
+      WriteN (element.GetElementString (), m_routingF);
     }
-  WriteN (oss.str (), m_f);
 }
 
-
-
-void AnimationInterface::SetNodeDescription (NodeContainer nc, std::string descr)
+void 
+AnimationInterface::WriteXmlClose (std::string name, bool routing) 
 {
-  if (initialized)
-    NS_FATAL_ERROR ("SetNodeDescription must be used prior to creating the AnimationInterface object");
-  for (uint32_t i = 0; i < nc.GetN (); ++i)
+  std::string closeString = "</" + name + ">\n"; 
+  if (!routing)
     {
-      Ptr <Node> n = nc.Get (i);
-      NS_ASSERT (n);
-      nodeDescriptions[n->GetId ()] = descr;
+      WriteN (closeString, m_f);
     }
-}
-
-
-// XML Private Helpers
-
-std::string AnimationInterface::GetXMLOpen_anim (uint32_t lp)
-{
-  std::ostringstream oss;
-  oss <<"<anim ver=\"" << GetNetAnimVersion () << "\">\n";
-  return oss.str ();
-}
-
-std::string AnimationInterface::GetXMLOpenClose_nodeupdate (uint32_t id, bool visible)
-{
-  std::ostringstream oss;
-  oss << "<nodeupdate id=\"" << id << "\"";
-  oss << " t=\"" << Simulator::Now ().GetSeconds () << "\"";
-  if (visible)
-    oss << " visible=\"" << 1 << "\"";
   else
-    oss << " visible=\"" << 0 << "\"";
-  AppendXMLNodeDescription (oss, id);
-  AppendXMLNodeColor (oss, nodeColors[id]);
-  AppendXMLRemainingEnergy (oss, id);
-
-  oss  <<"/>\n";
-
-  return oss.str ();
-
-}
-
-std::string AnimationInterface::GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY)
-{
-  std::ostringstream oss;
-  oss <<"<node id=\"" << id << "\""; 
-  AppendXMLNodeDescription (oss, id);
-  oss << " locX = \"" << locX << "\" " << "locY = \"" << locY << "\"";
-  AppendXMLRemainingEnergy (oss, id);
-
-  oss  <<"/>\n";
-
-  return oss.str ();
+    {
+      WriteN (closeString, m_routingF);
+    }
 }
 
-std::string AnimationInterface::GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY, struct Rgb rgb)
+void 
+AnimationInterface::WriteXmlNode (uint32_t id, uint32_t sysId, double locX, double locY)
 {
-  std::ostringstream oss;
-  oss <<"<node id = \"" << id << "\"";
-  AppendXMLNodeDescription (oss, id);
-  oss << " locX=\"" << locX << "\" " << "locY=\"" << locY << "\"";
-  AppendXMLNodeColor (oss, rgb);
-  AppendXMLRemainingEnergy (oss, id);
-
-  oss  <<"/>\n";
-
-  return oss.str ();
+  AnimXmlElement element ("node");
+  element.AddAttribute ("id", id);
+  element.AddAttribute ("sysId", sysId);
+  element.AddAttribute ("locX", locX);
+  element.AddAttribute ("locY", locY);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenClose_linkupdate (uint32_t fromId, uint32_t toId, std::string linkDescription)
+void 
+AnimationInterface::WriteXmlUpdateLink (uint32_t fromId, uint32_t toId, std::string linkDescription)
 {
-  std::ostringstream oss;
-  oss << "<linkupdate t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " fromId=\"" << fromId
-      << "\" toId=\"" << toId
-      << "\" ";
-
-  oss << " ld=\"" << linkDescription << "\""
-      << " />\n";
-  return oss.str ();
-
+  AnimXmlElement element ("linkupdate");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("fromId", fromId);
+  element.AddAttribute ("toId", toId);
+  element.AddAttribute ("ld", linkDescription);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenClose_link (uint32_t fromLp, uint32_t fromId, uint32_t toLp, uint32_t toId)
+void 
+AnimationInterface::WriteXmlLink (uint32_t fromId, uint32_t toLp, uint32_t toId)
 {
-  std::ostringstream oss;
-  oss << "<link fromId=\"" << fromId
-      << "\" toId=\"" << toId
-      << "\" ";
+  AnimXmlElement element ("link");
+  element.AddAttribute ("fromId", fromId);
+  element.AddAttribute ("toId", toId);
 
   LinkProperties lprop ;
   lprop.fromNodeDescription = "";
@@ -2096,287 +2109,229 @@
 
   P2pLinkNodeIdPair p1 = { fromId, toId };
   P2pLinkNodeIdPair p2 = { toId, fromId };
-  if (linkProperties.find (p1) != linkProperties.end ())
+  if (m_linkProperties.find (p1) != m_linkProperties.end ())
     {
-      lprop = linkProperties[p1];
+      lprop = m_linkProperties[p1];
     }
-  else if (linkProperties.find (p2) != linkProperties.end ())
+  else if (m_linkProperties.find (p2) != m_linkProperties.end ())
     {
-      lprop = linkProperties[p2];
+      lprop = m_linkProperties[p2];
     }
-   
-  oss << " fd=\"" << lprop.fromNodeDescription << "\""
-      << " td=\"" << lprop.toNodeDescription << "\""
-      << " ld=\"" << lprop.linkDescription << "\""
-      << " />\n";
-  return oss.str ();
-}
-
-
-std::string AnimationInterface::GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo)
-{
-  std::ostringstream oss;
-  oss << std::setprecision (10);
-  oss << "<p fId=\"" << fromId
-      << "\" fbTx=\"" << fbTx
-      << "\" lbTx=\"" << lbTx
-      << (auxInfo.empty ()?"":"\" aux=\"") << auxInfo.c_str () << "\">";
-  return oss.str ();
-}
-
-std::string AnimationInterface::GetXMLOpenClose_routing (uint32_t nodeId, std::string routingInfo)
-{
-  std::ostringstream oss;
-  oss << "<" << "rt" << " t=\"" << Simulator::Now ().GetSeconds () << "\"" 
-      << " id=\"" << nodeId << "\""
-      << " info=\"" << routingInfo.c_str () << "\""
-      << "/>" << std::endl;
-  return oss.str ();
-}
-
-std::string AnimationInterface::GetXMLOpenClose_rp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
-{
-  std::ostringstream oss;
-  oss << "<" << "rp" << " t =\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\"" << " d=\"" << destination.c_str () << "\""
-      << " c=\""  << rpElements.size () << "\"" << ">" << std::endl;
+  
+  element.AddAttribute ("fd", lprop.fromNodeDescription); 
+  element.AddAttribute ("td", lprop.toNodeDescription); 
+  element.AddAttribute ("ld", lprop.linkDescription); 
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
+}
+
+void 
+AnimationInterface::WriteXmlRouting (uint32_t nodeId, std::string routingInfo)
+{
+  AnimXmlElement element ("rt");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("info", routingInfo.c_str ());
+  element.Close ();
+  WriteN (element.GetElementString (), m_routingF);
+}
+
+void 
+AnimationInterface::WriteXmlRp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
+{
+  AnimXmlElement element ("rp");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("d", destination.c_str ());
+  element.AddAttribute ("c", rpElements.size ());
+  element.CloseTag ();
+  element.AddLineBreak ();
   for (Ipv4RoutePathElements::const_iterator i = rpElements.begin ();
        i != rpElements.end ();
        ++i)
     {
       Ipv4RoutePathElement rpElement = *i;
-      oss << "<rpe" << " n=\"" << rpElement.nodeId << "\"" << " nH=\"" << rpElement.nextHop.c_str () << "\"" << "/>" << std::endl;
+      AnimXmlElement rpeElement ("rpe");
+      rpeElement.AddAttribute ("n", rpElement.nodeId);
+      rpeElement.AddAttribute ("nH", rpElement.nextHop.c_str ());
+      rpeElement.Close ();
+      element.Add (rpeElement);
     }
-  oss << "</rp>" << std::endl;
-  return oss.str ();
+  WriteN (element.GetElementString (),  m_routingF);
 }
 
 
-std::string AnimationInterface::GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, 
-                                                   uint32_t tId, double fbRx, double lbRx, std::string metaInfo, 
-                                                   std::string auxInfo)
+void 
+AnimationInterface::WriteXmlPRef (uint64_t animUid, uint32_t fId, double fbTx, double lbTx, std::string metaInfo)
 {
-  std::ostringstream oss;
-  oss << std::setprecision (10);
-  oss << "<" << pktType << " fId=\"" << fId
-      << "\" fbTx=\"" << fbTx
-      << "\" lbTx=\"" << lbTx << "\"";
-  if (!auxInfo.empty ())
-    {
-      oss << " aux=\"" << auxInfo.c_str () << "\"";
-    }
+  AnimXmlElement element ("pr");
+  element.AddAttribute ("uId", animUid);
+  element.AddAttribute ("fId", fId);
+  element.AddAttribute ("fbTx", fbTx);
+  element.AddAttribute ("lbTx", lbTx);
   if (!metaInfo.empty ())
     {
-      oss << " meta-info=\"" << metaInfo.c_str () << "\"";
+      element.AddAttribute ("meta-info", metaInfo.c_str ());
     }
-  oss << " tId=\"" << tId << "\" fbRx=\"" << fbRx << "\" lbRx=\"" << lbRx << "\">" << std::endl;
-  return oss.str ();
-}
-
-
-
-std::string AnimationInterface::GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range)
-{
-  std::ostringstream oss;
-  oss << std::setprecision (10);
-  oss << "<wpacket fromId=\"" << fromId
-      << "\" fbTx=\"" << fbTx
-      << "\" lbTx=\"" << lbTx
-      << "\" range=\"" << range << "\">" << std::endl;
-  return oss.str ();
-
+  element.Close ();
+  WriteN (element.GetElementString (),  m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenClose_rx (uint32_t toLp, uint32_t toId, double fbRx, double lbRx)
+void 
+AnimationInterface::WriteXmlP (uint64_t animUid, std::string pktType, uint32_t tId, double fbRx, double lbRx)
 {
-  std::ostringstream oss;
-  oss << std::setprecision (10);
-  oss << "<rx toId=\"" << toId
-      << "\" fbRx=\"" << fbRx
-      << "\" lbRx=\"" << lbRx
-      << "\"/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element (pktType);
+  element.AddAttribute ("uId", animUid);
+  element.AddAttribute ("tId", tId);
+  element.AddAttribute ("fbRx", fbRx);
+  element.AddAttribute ("lbRx", lbRx);
+  element.Close ();
+  WriteN (element.GetElementString (),  m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenClose_meta (std::string metaInfo)
+void 
+AnimationInterface::WriteXmlP (std::string pktType, uint32_t fId, double fbTx, double lbTx, 
+                                                   uint32_t tId, double fbRx, double lbRx, std::string metaInfo)
 {
-  std::ostringstream oss;
-  oss << "<meta info=\""
-      << metaInfo << "\" />" << std::endl;
-  return oss.str ();      
+  AnimXmlElement element (pktType);
+  element.AddAttribute ("fId", fId);
+  element.AddAttribute ("fbTx", fbTx);
+  element.AddAttribute ("lbTx", lbTx);
+  if (!metaInfo.empty ())
+    {
+      element.AddAttribute ("meta-info", metaInfo.c_str ());
+    }
+  element.AddAttribute ("tId", tId);
+  element.AddAttribute ("fbRx", fbRx);
+  element.AddAttribute ("lbRx", lbRx);
+  element.Close ();
+  WriteN (element.GetElementString (),  m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseAddNodeCounter (uint32_t nodeCounterId, std::string counterName, CounterType counterType)
+void 
+AnimationInterface::WriteXmlAddNodeCounter (uint32_t nodeCounterId, std::string counterName, CounterType counterType)
 {
-  std::ostringstream oss;
-  oss << "<ncs ncId=\"" << nodeCounterId << "\""
-      << " n=\"" << counterName << "\""
-      << " t=\"" << CounterTypeToString (counterType) << "\""
-      << " />" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("ncs");
+  element.AddAttribute ("ncId", nodeCounterId);
+  element.AddAttribute ("n", counterName);
+  element.AddAttribute ("t", CounterTypeToString (counterType));
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseAddResource (uint32_t resourceId, std::string resourcePath)
+void 
+AnimationInterface::WriteXmlAddResource (uint32_t resourceId, std::string resourcePath)
 {
-  std::ostringstream oss;
-  oss << "<res rid=\"" << resourceId << "\""
-      << " p=\"" << resourcePath << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("res");
+  element.AddAttribute ("rid", resourceId);
+  element.AddAttribute ("p", resourcePath);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
+void 
+AnimationInterface::WriteXmlUpdateNodeImage (uint32_t nodeId, uint32_t resourceId)
 {
-  std::ostringstream oss;
-  oss << "<nu p=\"i\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\""
-      << " rid=\"" << resourceId << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("nu");
+  element.AddAttribute ("p", "i");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("rid", resourceId);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodeSize (uint32_t nodeId, double width, double height)
+void 
+AnimationInterface::WriteXmlUpdateNodeSize (uint32_t nodeId, double width, double height)
 {
-  std::ostringstream oss;
-  oss << std::setprecision (10);
-  oss << "<nu p=\"s\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\""
-      << " w=\"" << width << "\""
-      << " h=\"" << height << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("nu");
+  element.AddAttribute ("p", "s");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("w", width);
+  element.AddAttribute ("h", height);
+  element.Close ();
+  WriteN (element.GetElementString (),  m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodePosition (uint32_t nodeId, double x, double y)
+void 
+AnimationInterface::WriteXmlUpdateNodePosition (uint32_t nodeId, double x, double y)
 {
-  std::ostringstream oss;
-  oss << "<nu p=\"p\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\""
-      << " x=\"" << x << "\""
-      << " y=\"" << y << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("nu");
+  element.AddAttribute ("p", "p");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("x", x);
+  element.AddAttribute ("y", y);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
+void 
+AnimationInterface::WriteXmlUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
 {
-  std::ostringstream oss;
-  oss << "<nu p=\"c\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\""
-      << " r=\"" << (uint32_t)r << "\""
-      << " g=\"" << (uint32_t)g << "\""
-      << " b=\"" << (uint32_t)b << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  AnimXmlElement element ("nu");
+  element.AddAttribute ("p", "c");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  element.AddAttribute ("r", (uint32_t) r);
+  element.AddAttribute ("g", (uint32_t) g);
+  element.AddAttribute ("b", (uint32_t) b);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodeDescription (uint32_t nodeId)
+void 
+AnimationInterface::WriteXmlUpdateNodeDescription (uint32_t nodeId)
 {
-  std::ostringstream oss;
-  oss << "<nu p=\"d\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " id=\"" << nodeId << "\"";
-  if (nodeDescriptions.find (nodeId) != nodeDescriptions.end ())
-    {
-      oss << " descr=\""<< nodeDescriptions[nodeId] << "\"";
-    }
-  else
+  AnimXmlElement element ("nu");
+  element.AddAttribute ("p", "d");
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("id", nodeId);
+  if (m_nodeDescriptions.find (nodeId) != m_nodeDescriptions.end ())
     {
-      oss << " descr=\"\"";
+      element.AddAttribute ("descr", m_nodeDescriptions[nodeId]); 
     }
-
-  oss << "/>" << std::endl;
-  return oss.str ();
-}
-
-
-std::string AnimationInterface::GetXMLOpenCloseUpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counterValue)
-{
-  std::ostringstream oss;
-  oss << "<nc c=\"" << nodeCounterId << "\""
-      << " i=\"" << nodeId << "\""
-      << " t=\"" << Simulator::Now ().GetSeconds () << "\""
-      << " v=\"" << counterValue << "\""
-      << " />" << std::endl;
-  return oss.str ();
-}
-
-std::string AnimationInterface::GetXMLOpenCloseUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
-{
-  std::ostringstream oss;
-  oss << "<bg f=\"" << fileName << "\""
-      << " x=\"" << x << "\""
-      << " y=\"" << y << "\""
-      << " sx=\"" << scaleX << "\""
-      << " sy=\"" << scaleY << "\""
-      << " o=\"" << opacity << "\""
-      << "/>" << std::endl;
-  return oss.str ();
-}
-
-
-std::string AnimationInterface::GetXMLOpenClose_NonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
-{
-  std::ostringstream oss;
-  oss << "<nonp2plinkproperties id=\""
-      << id << "\""
-      << " ipv4Address=\"" << ipv4Address << "\""
-      << " channelType=\"" << channelType << "\""
-      << "/>" << std::endl;
-  return oss.str ();
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
 
-const std::vector<std::string> AnimationInterface::GetElementsFromContext (const std::string& context) const
-{
-  std::vector <std::string> elements;
-  size_t pos1=0, pos2;
-  while (pos1 != context.npos)
-  {
-    pos1 = context.find ("/",pos1);
-    pos2 = context.find ("/",pos1+1);
-    elements.push_back (context.substr (pos1+1,pos2-(pos1+1)));
-    pos1 = pos2; 
-    pos2 = context.npos;
-  }
-  return elements;
-}
-
-void AnimationInterface::AppendXMLNodeDescription (std::ostream& ostream, uint32_t id) const
+void 
+AnimationInterface::WriteXmlUpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counterValue)
 {
-  if (nodeDescriptions.find (id) != nodeDescriptions.end ())
-    {
-      ostream << " descr=\""<< nodeDescriptions[id] << "\"";
-    }
-  else
-    {
-      ostream << " descr=\"\"";
-    }
+  AnimXmlElement element ("nc");
+  element.AddAttribute ("c", nodeCounterId);
+  element.AddAttribute ("i", nodeId);
+  element.AddAttribute ("t", Simulator::Now ().GetSeconds ());
+  element.AddAttribute ("v", counterValue);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-void AnimationInterface::AppendXMLNodeColor (std::ostream& ostream, const Rgb& color) const
+void 
+AnimationInterface::WriteXmlUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
 {
-  const uint8_t r = color.r;
-  const uint8_t g = color.g;
-  const uint8_t b = color.b;
-
-  ostream << " r=\"" << (uint32_t)r << "\" "
-          << " g=\"" << (uint32_t)g << "\" "
-          << " b=\"" << (uint32_t)b <<"\" ";
+  AnimXmlElement element ("bg");
+  element.AddAttribute ("f", fileName);
+  element.AddAttribute ("x", x);
+  element.AddAttribute ("y", y);
+  element.AddAttribute ("sx", scaleX);
+  element.AddAttribute ("sy", scaleY);
+  element.AddAttribute ("o", opacity);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
-void AnimationInterface::AppendXMLRemainingEnergy (std::ostream& ostream, uint32_t id) const
+void 
+AnimationInterface::WriteXmlNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
 {
-  const EnergyFractionMap::const_iterator fractionIter = m_nodeEnergyFraction.find (id);
-
-  if (fractionIter != m_nodeEnergyFraction.end ())
-    ostream << "rc = \"" << fractionIter->second <<"\" ";
-  else if (NodeList::GetNode (id)->GetObject<EnergySource>())
-    ostream << "rc = \"1\" ";
+  AnimXmlElement element ("nonp2plinkproperties");
+  element.AddAttribute ("id", id);
+  element.AddAttribute ("ipv4Address", ipv4Address);
+  element.AddAttribute ("channelType", channelType);
+  element.Close ();
+  WriteN (element.GetElementString (), m_f);
 }
 
 TypeId
@@ -2388,6 +2343,7 @@
   ;
   return tid;
 }
+
 TypeId
 AnimByteTag::GetInstanceTypeId (void) const
 {
@@ -2399,21 +2355,25 @@
 {
   return sizeof (uint64_t);
 }
+
 void
 AnimByteTag::Serialize (TagBuffer i) const
 {
   i.WriteU64 (m_AnimUid);
 }
+
 void
 AnimByteTag::Deserialize (TagBuffer i)
 {
   m_AnimUid = i.ReadU64 ();
 }
+
 void
 AnimByteTag::Print (std::ostream &os) const
 {
   os << "AnimUid=" << m_AnimUid;
 }
+
 void
 AnimByteTag::Set (uint64_t AnimUid)
 {
@@ -2426,5 +2386,100 @@
   return m_AnimUid;
 }
 
+AnimationInterface::AnimPacketInfo::AnimPacketInfo ()
+  : m_txnd (0), 
+    m_txNodeId (0),
+    m_fbTx (0), 
+    m_lbTx (0), 
+    m_txLoc (Vector (0,0,0)), 
+    m_firstLastBitDelta (0)
+{
+}
+
+AnimationInterface::AnimPacketInfo::AnimPacketInfo (const AnimPacketInfo & pInfo)
+{
+  m_txnd = pInfo.m_txnd;
+  m_txNodeId = pInfo.m_txNodeId;
+  m_fbTx = pInfo.m_fbTx;
+  m_lbTx = pInfo.m_lbTx;
+  m_txLoc = pInfo.m_txLoc;
+  m_firstLastBitDelta = pInfo.m_firstLastBitDelta;
+}
+
+AnimationInterface::AnimPacketInfo::AnimPacketInfo (Ptr <const NetDevice> txnd, 
+                                const Time fbTx, 
+                                const Time lbTx, 
+                                Vector txLoc, 
+                                uint32_t txNodeId)
+  : m_txnd (txnd), 
+    m_txNodeId (0),
+    m_fbTx (fbTx.GetSeconds ()), 
+    m_lbTx (lbTx.GetSeconds ()), 
+    m_txLoc (txLoc),
+    m_firstLastBitDelta (0)
+{
+  if (!m_txnd)
+    m_txNodeId = txNodeId;
+}
+
+void 
+AnimationInterface::AnimPacketInfo::ProcessRxBegin (Ptr<const NetDevice> nd, const Time fbRx)
+{
+  m_rx[nd->GetNode ()->GetId ()] = AnimRxInfo (fbRx, nd, 0);
+}
+
+bool 
+AnimationInterface::AnimPacketInfo::ProcessRxEnd (Ptr<const NetDevice> nd, const Time lbRx, Vector rxLoc)
+{
+  uint32_t NodeId = nd->GetNode ()->GetId (); 
+  // Find the RxInfo
+  if (m_rx.find (NodeId) == m_rx.end ())
+    {
+      return false;
+    } 
+  AnimRxInfo& rxInfo = m_rx[NodeId];
+  // Check if the NetDevice matches. A node may have several NetDevices
+  if (rxInfo.m_rxnd != nd) 
+    {
+      return false; 
+    }
+  rxInfo.rxRange = CalculateDistance (m_txLoc, rxLoc);
+  rxInfo.m_lbRx = lbRx.GetSeconds ();
+  rxInfo.SetPhyRxComplete ();
+  m_firstLastBitDelta = rxInfo.m_lbRx - rxInfo.m_fbRx;
+  return true;
+}
+
+AnimationInterface::AnimRxInfo 
+AnimationInterface::AnimPacketInfo::GetRxInfo (Ptr<const NetDevice> nd)
+{
+  uint32_t NodeId = nd->GetNode ()->GetId (); 
+  NS_ASSERT (m_rx.find (NodeId) != m_rx.end ()); 
+  return m_rx[NodeId];
+}
+
+void 
+AnimationInterface::AnimPacketInfo::RemoveRxInfo (Ptr<const NetDevice> nd)
+{
+  uint32_t NodeId = nd->GetNode ()->GetId (); 
+  m_rx.erase (m_rx.find (NodeId));
+}
+
+void 
+AnimationInterface::AnimPacketInfo::ProcessRxDrop (Ptr<const NetDevice> nd)
+{
+}
+
+bool 
+AnimationInterface::AnimRxInfo::IsPhyRxComplete ()
+{
+  return m_PhyRxComplete;
+}
+
+void 
+AnimationInterface::AnimRxInfo::SetPhyRxComplete ()
+{
+  m_PhyRxComplete = true; 
+}
 
 } // namespace ns3
diff -Naur ns-3.20/src/netanim/model/animation-interface.h ns-3.21/src/netanim/model/animation-interface.h
--- ns-3.20/src/netanim/model/animation-interface.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/model/animation-interface.h	2014-09-17 20:03:14.000000000 -0700
@@ -25,6 +25,7 @@
 #include <string>
 #include <cstdio>
 #include <map>
+
 #include "ns3/ptr.h"
 #include "ns3/net-device.h"
 #include "ns3/node-container.h"
@@ -34,62 +35,22 @@
 #include "ns3/random-variable-stream.h"
 #include "ns3/simulator.h"
 #include "ns3/config.h"
-#include "ns3/animation-interface-helper.h"
 #include "ns3/mac48-address.h"
 #include "ns3/lte-ue-net-device.h"
 #include "ns3/lte-enb-net-device.h"
 #include "ns3/uan-phy-gen.h"
 #include "ns3/rectangle.h"
+#include "ns3/ipv4.h"
+#include "ns3/ipv4-l3-protocol.h"
 
 namespace ns3 {
 
 #define MAX_PKTS_PER_TRACE_FILE 100000
-struct Rgb;
-struct NodeSize;
-typedef struct 
-{
-  uint32_t fromNode;
-  uint32_t toNode;
-} P2pLinkNodeIdPair;
-
-typedef struct
-{
-  std::string fromNodeDescription;
-  std::string toNodeDescription;
-  std::string linkDescription;
-} LinkProperties;
+#define PURGE_INTERVAL 5
+#define NETANIM_VERSION "netanim-3.105"
 
 
-struct LinkPairCompare
-{
-  bool operator () (P2pLinkNodeIdPair first, P2pLinkNodeIdPair second) const
-    {
-      //Check if they are the same node pairs but flipped
-      if (  ((first.fromNode == second.fromNode) && (first.toNode == second.toNode)) ||
-            ((first.fromNode == second.toNode) && (first.toNode == second.fromNode)) )
-        {
-          return false;
-        }
-      std::ostringstream oss1;
-      oss1 << first.fromNode << first.toNode;
-      std::ostringstream oss2;
-      oss2 << second.fromNode << second.toNode;
-      return oss1.str () < oss2.str ();
-    }
-   
-};
-
-struct Ipv4RouteTrackElement {
-  std::string destination;
-  uint32_t fromNodeId;
-};
-
-
-typedef struct {
-  uint32_t nodeId;
-  std::string nextHop;
-  
-} Ipv4RoutePathElement;
+struct NodeSize;
 
 /**
  * \defgroup netanim Network Animation
@@ -112,16 +73,9 @@
   /**
    * \brief Constructor
    * \param filename The Filename for the trace file used by the Animator
-   * \param enable3105 Enables 3.105 behavior. This flag will be made obsolete after
-   *        the transition period
-   * \param maxPktsPerFile The maximum number of packets per trace file.
-	    AnimationInterface will create trace files with the following 
-            filenames : filename, filename-1, filename-2..., filename-N
-	    where each file contains packet info for 'maxPktPerFile' number of packets
    *
    */
-  AnimationInterface (const std::string filename, bool enable3105 = true, 
-	uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE);
+  AnimationInterface (const std::string filename);
 
   /**
    * Counter Types 
@@ -133,12 +87,63 @@
     } CounterType;
 
   /**
+   * \brief typedef for WriteCallBack used for listening to AnimationInterface
+   * write messages
+   * 
+   */
+  typedef void (*AnimWriteCallback) (const char * str);
+
+  /**
    * \brief Destructor for the animator interface.
    *
    */
   ~AnimationInterface ();
 
   /**
+   * \brief Enable tracking of Ipv4 L3 Protocol Counters such as Tx, Rx, Drop
+   *
+   * \param startTime Start Time for capturing values
+   * \param stopTime Stop Time for capturing values
+   * \param pollInterval The periodic interval at which the counters are written to the trace file
+   *        Default: 1s
+   * \returns none
+   */
+  void EnableIpv4L3ProtocolCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
+
+  /**
+   * \brief Enable tracking of Queue Counters such as Enqueue, Dequeue, Queue Drops
+   *
+   * \param startTime Start Time for capturing values
+   * \param stopTime Stop Time for capturing values
+   * \param pollInterval The periodic interval at which the counters are written to the trace file
+   *        Default: 1s
+   * \returns none
+   */
+  void EnableQueueCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
+
+  /**
+   * \brief Enable tracking of Wifi Mac Counters such as Tx, TxDrop, Rx, RxDrop
+   *
+   * \param startTime Start Time for capturing values
+   * \param stopTime Stop Time for capturing values
+   * \param pollInterval The periodic interval at which the counters are written to the trace file
+   *        Default: 1s
+   * \returns none
+   */
+  void EnableWifiMacCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
+
+  /**
+   * \brief Enable tracking of Wifi Phy Counters such as TxDrop, RxDrop
+   *
+   * \param startTime Start Time for capturing values
+   * \param stopTime Stop Time for capturing values
+   * \param pollInterval The periodic interval at which the counters are written to the trace file
+   *        Default: 1s
+   * \returns none
+   */
+  void EnableWifiPhyCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
+
+  /**
    * \brief Enable tracking of the Ipv4 routing table for all Nodes
    *
    * \param fileName Trace file for storing routing table information 
@@ -167,6 +172,7 @@
 
   /**
    * \brief Check if AnimationInterface is initialized
+   *
    * \returns true if AnimationInterface was already initialized
    *
    */
@@ -191,42 +197,40 @@
   void SetStopTime (Time t);
 
   /**
+   * \brief Set Max packets per trace file
+   * \param maxPktsPerFile The maximum number of packets per trace file.
+	    AnimationInterface will create trace files with the following 
+            filenames : filename, filename-1, filename-2..., filename-N
+	    where each file contains packet info for 'maxPktsPerFile' number of packets
+   *
+   * \returns none
+   */
+  void SetMaxPktsPerTraceFile (uint64_t maxPktsPerFile);
+
+  /**
    * \brief Set mobility poll interval:WARNING: setting a low interval can 
    * cause slowness
    *
    * \param t Time interval between fetching mobility/position information
    * Default: 0.25s
    *
+   * \returns none
    */
   void SetMobilityPollInterval (Time t);
 
   /**
-   * \brief Set random position if a Mobility Model does not exists for the node
-   *
-   * \param setRandPos True if a random position can be set for a node without a
-   * Mobililty model
-   *
-   */
-  void SetRandomPosition (bool setRandPos);
-
-  /**
-   * \brief typedef for WriteCallBack used for listening to AnimationInterface
-   * write messages
-   * 
-   */
-  typedef void (*AnimWriteCallback) (const char * str);
-
-  /**
    * \brief Set a callback function to listen to AnimationInterface write events
    *
    * \param cb Address of callback function
    *
+   * \returns none
    */
   void SetAnimWriteCallback (AnimWriteCallback cb);
 
   /**
    * \brief Reset the write callback function
    *
+   * \returns none
    */
   void ResetAnimWriteCallback ();
 
@@ -237,22 +241,16 @@
    * \param y Y co-ordinate of the node
    * \param z Z co-ordinate of the node
    *
+   * \returns none
    */
   static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
 
   /**
-   * \brief Helper function to set a brief description for a given node
-   * \param n Ptr to the node
-   * \param descr A string to briefly describe the node
-   *
-   */
-  static void SetNodeDescription (Ptr <Node> n, std::string descr);
-
-  /**
    * \brief Helper function to update the description for a given node
    * \param n Ptr to the node
    * \param descr A string to briefly describe the node
    *
+   * \returns none
    */
   void UpdateNodeDescription (Ptr <Node> n, std::string descr);
 
@@ -261,56 +259,26 @@
    * \param nodeId Id of the node
    * \param descr A string to briefly describe the node
    *
+   * \returns none
    */
   void UpdateNodeDescription (uint32_t nodeId, std::string descr);
 
- /**
-  * \brief Helper function to show/hide a node
-  * \param nodeId Id of the node
-  * \param show Set to true to show node, set to false to hide
-  *
-  */
-  void ShowNode (uint32_t nodeId, bool show = true);
-
- /**
-  * \brief Helper function to show/hide a node
-  * \param n Ptr to the node
-  * \param show Set to true to show node, set to false to hide
-  *
-  */
-  void ShowNode (Ptr <Node> n, bool show = true);
-
-  /**
-   * \brief Helper function to set a brief description for nodes in a Node Container
-   * \param nc NodeContainer containing the nodes
-   * \param descr A string to briefly describe the nodes
-   *
-   */
-  static void SetNodeDescription (NodeContainer nc, std::string descr);
-
-  /**
-   * \brief Helper function to set the node color
-   * \param n Ptr to the node
-   * \param r Red component value (0-255)
-   * \param g Green component value (0-255)
-   * \param b Blue component value (0-255)
-   *
-   */
-  static void SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b);
-
   /**
    * \brief Helper function to update the image of a node
    * \param nodeId Id of the node
    * \param resourceId Id of the image resource that was previously added
    *
+   * \returns none
    */
   void UpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
+
   /**
    * \brief Helper function to update the size of a node
    * \param nodeId Id of the node
    * \param width Width of the node
    * \param height Height of the node
    *
+   * \returns none
    */
   void UpdateNodeSize (uint32_t nodeId, double width, double height); 
 
@@ -321,6 +289,7 @@
    * \param g Green component value (0-255)
    * \param b Blue component value (0-255)
    *
+   * \returns none
    */
   void UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b);
 
@@ -331,27 +300,17 @@
    * \param g Green component value (0-255)
    * \param b Blue component value (0-255)
    *
+   * \returns none
    */
   void UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
 
-
-  /**
-   * \brief Helper function to set the color of nodes in a container
-   * \param nc A Node Container of Nodes 
-   * \param r Red component value (0-255)
-   * \param g Green component value (0-255)
-   * \param b Blue component value (0-255)
-   *
-   */
-  static void SetNodeColor (NodeContainer nc, uint8_t r, uint8_t g, uint8_t b);
-
-
   /**
    * \brief Helper function to update a node's counter referenced by the nodeCounterId
    * \param nodeCounterId The counter Id obtained from AddNodeCounter
    * \param nodeId Node Id of the node
    * \param counter Current value of the counter
    *
+   * \returns none
    */
   void UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter);
 
@@ -364,37 +323,10 @@
    * \param scaleY Y scale of the image
    * \param opacity Opacity of the background: A value between 0.0 and 1.0. 0.0 is transparent,
    *        1.0 is opaque
-   */
-  void SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity); 
-
-  /**
-   * \brief Helper function to set the description for a link
-   * \param fromNode Node Id of the "from Node" of the p2p link
-   * \param toNode Node Id of the "to Node" of the p2p link
-   * \param linkDescription Description of the link such as link bandwidth
-   * \param fromNodeDescription Description at the "from Node" end such as IP address
-   * \param toNodeDescription Description at the "to Node" end such as Ip address
-   *
-   */
-  static void SetLinkDescription (uint32_t fromNode, uint32_t toNode, 
-                                  std::string linkDescription,
-                                  std::string fromNodeDescription = "",
-                                  std::string toNodeDescription = "");
-
-  /**
-   * \brief Helper function to set the description for a link
-   * \param fromNode Ptr to the "from Node" of the p2p link
-   * \param toNode Ptr the "to Node" of the p2p link
-   * \param linkDescription Description of the link such as link bandwidth
-   * \param fromNodeDescription Description at the "from Node" end such as IP address
-   * \param toNodeDescription Description at the "to Node" end such as Ip address
    *
+   * \returns none
    */
-  static void SetLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
-                                  std::string linkDescription,
-                                  std::string fromNodeDescription = "",
-                                  std::string toNodeDescription = "");
-
+  void SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity); 
 
   /**
    * \brief Helper function to update the description for a link
@@ -402,6 +334,7 @@
    * \param toNode Node Id of the "to Node" of the p2p link
    * \param linkDescription Description of the link such as link bandwidth
    *
+   * \returns none
    */
   void UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
                               std::string linkDescription);
@@ -412,6 +345,7 @@
    * \param toNode Ptr to the "to Node" of the p2p link
    * \param linkDescription Description of the link such as link bandwidth
    *
+   * \returns none
    */
   void UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
                               std::string linkDescription);
@@ -427,14 +361,15 @@
 
   /**
    * \brief Is AnimationInterface started
-   * \returns true if AnimationInterface was started
    *
+   * \returns true if AnimationInterface was started
    */
   bool IsStarted (void);
 
   /**
    * \brief Do not trace packets. This helps reduce the trace file size if AnimationInterface is solely
    *        used for tracking mobility, routing paths and counters
+   * \returns none
    */
   void SkipPacketTracing ();
 
@@ -443,6 +378,8 @@
    * \brief Enable Packet metadata
    * \param enable if true enables writing the packet metadata to the XML trace file
    *        if false disables writing the packet metadata
+   *
+   * \returns none
    */
   void EnablePacketMetadata (bool enable = true);
 
@@ -451,7 +388,6 @@
    * \brief Get trace file packet count (This used only for testing)
    *
    * returns Number of packets recorded in the current trace file
-   *
    */
   uint64_t GetTracePktCount ();
 
@@ -471,7 +407,6 @@
    * \param resourcePath Absolute Path to an image/resource
    * 
    * returns a number identifying the resource
-   *
    */
   uint32_t AddResource (std::string resourcePath);
 
@@ -480,30 +415,153 @@
    * \brief Get node's energy fraction (This used only for testing)
    *
    * returns current node's remaining energy (between [0, 1])
-   *
    */
   double GetNodeEnergyFraction (Ptr <const Node> node) const;
 
- /**
-  * Assign a fixed random variable stream number to the random variables
-  * used by this model.  Return the number of streams (possibly zero) that
-  * have been assigned.
-  *
-  * \param stream first stream index to use
-  * \return the number of stream indices assigned by this model
-  */
-  int64_t AssignStreams (int64_t stream);
-
 private:
+
+
+  // ##### typedef #####
+  class AnimRxInfo
+  {
+  public:
+    AnimRxInfo () {}
+    AnimRxInfo (const Time& fbRx, Ptr <const NetDevice> nd ,double rxRange)
+      : m_fbRx (fbRx.GetSeconds ()), m_lbRx (0), m_rxnd (nd), rxRange (rxRange), m_PhyRxComplete (false) {}
+    double m_fbRx;            
+    double m_lbRx;             
+    Ptr <const NetDevice> m_rxnd;
+    double rxRange;
+    bool IsPhyRxComplete ();
+    void SetPhyRxComplete ();
+  private:
+    bool m_PhyRxComplete;
+  };
+
+  class AnimPacketInfo
+  
+  {
+  public:
+    AnimPacketInfo ();
+    AnimPacketInfo (const AnimPacketInfo & pInfo);
+    AnimPacketInfo(Ptr <const NetDevice> tx_nd, const Time fbTx, const Time lbTx, Vector txLoc, uint32_t txNodeId = 0);
+    Ptr <const NetDevice> m_txnd;
+    uint32_t m_txNodeId;
+    double m_fbTx;     
+    double m_lbTx;     
+    Vector m_txLoc;
+    double m_firstLastBitDelta;
+    std::map<uint32_t,AnimRxInfo> m_rx;
+    void ProcessRxBegin (Ptr <const NetDevice> nd, const Time fbRx);
+    bool ProcessRxEnd (Ptr <const NetDevice> nd, const Time fbRx, Vector rxLoc);
+    void ProcessRxDrop (Ptr <const NetDevice> nd);
+    AnimRxInfo GetRxInfo (Ptr <const NetDevice> nd);
+    void RemoveRxInfo (Ptr <const NetDevice> nd);
+  
+  };
+
+  typedef struct
+    {
+      uint8_t r;
+      uint8_t g;
+      uint8_t b;
+    } Rgb;
+
+  typedef struct
+  {
+    uint32_t fromNode;
+    uint32_t toNode;
+  } P2pLinkNodeIdPair;
+
+  typedef struct
+  {
+    std::string fromNodeDescription;
+    std::string toNodeDescription;
+    std::string linkDescription;
+  } LinkProperties;
+
+  struct LinkPairCompare
+  {
+    bool operator () (P2pLinkNodeIdPair first, P2pLinkNodeIdPair second) const
+      {
+        //Check if they are the same node pairs but flipped
+        if (  ((first.fromNode == second.fromNode) && (first.toNode == second.toNode)) ||
+              ((first.fromNode == second.toNode) && (first.toNode == second.fromNode)) )
+          {
+            return false;
+          }
+        std::ostringstream oss1;
+        oss1 << first.fromNode << first.toNode;
+        std::ostringstream oss2;
+        oss2 << second.fromNode << second.toNode;
+        return oss1.str () < oss2.str ();
+      }
+
+  };
+
+  typedef struct 
+    {
+      std::string destination;
+      uint32_t fromNodeId;
+    } Ipv4RouteTrackElement;
+
+  typedef struct 
+    {
+      uint32_t nodeId;
+      std::string nextHop;
+    } Ipv4RoutePathElement;
+
+  typedef enum
+    {
+      UAN,
+      LTE,
+      WIFI,
+      WIMAX,
+      CSMA
+    } ProtocolType;
+
+  typedef struct
+    {
+      double width;
+      double height;
+    } NodeSize;
+  typedef std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> LinkPropertiesMap;
+  typedef std::map <uint32_t, std::string> NodeDescriptionsMap;
+  typedef std::map <uint32_t, Rgb> NodeColorsMap;
+  typedef std::map<uint64_t, AnimPacketInfo> AnimUidPacketInfoMap;
+  typedef std::map <uint32_t, double> EnergyFractionMap;
+  typedef std::vector <Ipv4RoutePathElement> Ipv4RoutePathElements;
+
+
+  // Node Counters
+  typedef std::map <uint32_t, uint64_t> NodeCounterMap64;
+
+
+  class AnimXmlElement
+  {
+    public:
+    AnimXmlElement (std::string tagName);
+    template <typename T>
+    void AddAttribute (std::string attribute, T value);
+    void Close ();
+    void CloseTag ();
+    void AddLineBreak ();
+    void Add (AnimXmlElement e);
+    std::string GetElementString ();
+  private:
+    std::string m_tagName;
+    std::string m_elementString;
+
+  };
+
+
+  // ##### State #####
+
   FILE * m_f; // File handle for output (0 if none)
   FILE * m_routingF; // File handle for routing table output (0 if None);
-  // Write specified amount of data to the specified handle
-  int WriteN (const char*, uint32_t, FILE * f);
   Time m_mobilityPollInterval;
   std::string m_outputFileName;
-  bool m_outputFileSet;
-  uint64_t gAnimUid ;    // Packet unique identifier used by Animtion
-  bool m_randomPosition;
+  uint64_t gAnimUid ;    // Packet unique identifier used by AnimationInterface
   AnimWriteCallback m_writeCallback;
   bool m_started;
   bool m_enablePacketMetadata; 
@@ -515,53 +573,136 @@
   std::string m_routingFileName;
   Time m_routingPollInterval;
   NodeContainer m_routingNc;
+  Time m_ipv4L3ProtocolCountersStopTime;
+  Time m_ipv4L3ProtocolCountersPollInterval;
+  Time m_queueCountersStopTime;
+  Time m_queueCountersPollInterval;
+  Time m_wifiMacCountersStopTime;
+  Time m_wifiMacCountersPollInterval;
+  Time m_wifiPhyCountersStopTime;
+  Time m_wifiPhyCountersPollInterval;
+  static Rectangle * userBoundary;
+  bool m_trackPackets;
+
+  // Counter ID
+  uint32_t m_remainingEnergyCounterId;
   
-  void TrackIpv4Route ();
-  void TrackIpv4RoutePaths ();
-  std::string GetIpv4RoutingTable (Ptr <Node> n);
+  uint32_t m_ipv4L3ProtocolTxCounterId;
+  uint32_t m_ipv4L3ProtocolRxCounterId;
+  uint32_t m_ipv4L3ProtocolDropCounterId;
+
+  uint32_t m_queueEnqueueCounterId;
+  uint32_t m_queueDequeueCounterId;
+  uint32_t m_queueDropCounterId;
+
+  uint32_t m_wifiMacTxCounterId;
+  uint32_t m_wifiMacTxDropCounterId;
+  uint32_t m_wifiMacRxCounterId;
+  uint32_t m_wifiMacRxDropCounterId;
+ 
+  uint32_t m_wifiPhyTxDropCounterId;
+  uint32_t m_wifiPhyRxDropCounterId;
+  
+  AnimUidPacketInfoMap m_pendingWifiPackets;
+  AnimUidPacketInfoMap m_pendingWimaxPackets;
+  AnimUidPacketInfoMap m_pendingLtePackets;
+  AnimUidPacketInfoMap m_pendingCsmaPackets;
+  AnimUidPacketInfoMap m_pendingUanPackets;
+  std::map<uint32_t, Vector> m_nodeLocation;
+  std::map <std::string, uint32_t> m_macToNodeIdMap;
+  std::map <std::string, uint32_t> m_ipv4ToNodeIdMap;
+  NodeColorsMap m_nodeColors;
+  NodeDescriptionsMap m_nodeDescriptions;
+  LinkPropertiesMap m_linkProperties;
+  EnergyFractionMap m_nodeEnergyFraction;
+  uint64_t m_currentPktCount;
+  std::vector <Ipv4RouteTrackElement> m_ipv4RouteTrackElements;
+  std::map <uint32_t, NodeSize> m_nodeSizes;
+  std::vector <std::string> m_resources;
+  std::vector <std::string> m_nodeCounters;
 
-  /**
-   * \brief Specify that animation commands are to be written
-   * to the specified output file.
-   *
-   * This call is used to write the animation information to a text
-   * file that can later be used as input to the network animator tool.
-   *
-   * \param fn The name of the output file.
-   * \returns true if successful open.
-   *
-   */
-  bool SetOutputFile (const std::string& fn);
-  bool SetRoutingOutputFile (const std::string& fn);
+  NodeCounterMap64 m_nodeIpv4Drop;
+  NodeCounterMap64 m_nodeIpv4Tx;
+  NodeCounterMap64 m_nodeIpv4Rx;
+  NodeCounterMap64 m_nodeQueueEnqueue;
+  NodeCounterMap64 m_nodeQueueDequeue;
+  NodeCounterMap64 m_nodeQueueDrop;
+  NodeCounterMap64 m_nodeWifiMacTx;
+  NodeCounterMap64 m_nodeWifiMacTxDrop;
+  NodeCounterMap64 m_nodeWifiMacRx;
+  NodeCounterMap64 m_nodeWifiMacRxDrop;
+  NodeCounterMap64 m_nodeWifiPhyTxDrop;
+  NodeCounterMap64 m_nodeWifiPhyRxDrop;
 
-  /**
-   * \brief Specify that animation commands are to be written
-   * in XML format.
-   *
-   * \returns none
-   *
-   */
-  void SetXMLOutput ();
-
-  /**
-   * \brief Writes the topology information and sets up the appropriate
-   *  animation packet tx callback
-   *
-   * Writes the topology information to the appropriate output, depending
-   * on prior calls to SetOutputFile, SetServerPort, or SetInternalAnimation.
-   * Then creates the callbacks needed for the animator to start processing
-   * packets.
-   *
-   * \param restart True when restarting animation
-   */
+  const std::vector<std::string> GetElementsFromContext (const std::string& context) const;
+  Ptr <Node> GetNodeFromContext (const std::string& context) const;
+  Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
+  
+  // ##### General #####
   void StartAnimation (bool restart = false);
-
-  /**
-   * \brief Closes the interface to the animator.
-   *
-   */
+  void SetOutputFile (const std::string& fn, bool routing = false);
   void StopAnimation (bool onlyAnimation = false);
+  std::string CounterTypeToString (CounterType counterType);
+  std::string GetPacketMetadata (Ptr<const Packet> p);
+  void AddByteTag (uint64_t animUid, Ptr<const Packet> p);
+  int WriteN (const char*, uint32_t, FILE * f);
+  int WriteN (const std::string&, FILE * f);
+  std::string GetMacAddress (Ptr <NetDevice> nd);
+  std::string GetIpv4Address (Ptr <NetDevice> nd);
+  std::string GetNetAnimVersion ();
+  void MobilityAutoCheck ();
+  bool IsPacketPending (uint64_t animUid, ProtocolType protocolType);
+  void PurgePendingPackets (ProtocolType protocolType);
+  AnimUidPacketInfoMap * ProtocolTypeToPendingPackets (ProtocolType protocolType);
+  void AddPendingPacket (ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo);
+  uint64_t GetAnimUidFromPacket (Ptr <const Packet>);
+  void AddToIpv4AddressNodeIdTable (std::string, uint32_t);
+  bool IsInTimeWindow ();
+  void CheckMaxPktsPerTraceFile ();
+
+  void TrackWifiPhyCounters ();
+  void TrackWifiMacCounters ();
+  void TrackIpv4L3ProtocolCounters ();
+  void TrackQueueCounters ();
+  // ##### Routing #####
+  void TrackIpv4Route ();
+  void TrackIpv4RoutePaths ();
+  std::string GetIpv4RoutingTable (Ptr <Node> n);
+  void RecursiveIpv4RoutePathSearch (std::string fromIpv4, std::string toIpv4, Ipv4RoutePathElements &);
+  void WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
+
 
+  // ##### Trace #####
+  void EnqueueTrace (std::string context,
+                     Ptr<const Packet>);
+  void DequeueTrace (std::string context,
+                     Ptr<const Packet>);
+  void QueueDropTrace (std::string context,
+                     Ptr<const Packet>);
+  void Ipv4TxTrace (std::string context,
+                    Ptr<const Packet>, Ptr<Ipv4>,  
+                    uint32_t);
+  void Ipv4RxTrace (std::string context,
+                    Ptr<const Packet>, Ptr<Ipv4>,
+                    uint32_t);
+  void Ipv4DropTrace (std::string context,
+                      const Ipv4Header &, 
+                      Ptr<const Packet>, 
+                      Ipv4L3Protocol::DropReason, Ptr<Ipv4>, 
+                      uint32_t);
+
+  void WifiMacTxTrace (std::string context,
+                       Ptr<const Packet>);
+  void WifiMacTxDropTrace (std::string context,
+                           Ptr<const Packet>);
+  void WifiMacRxTrace (std::string context,
+                       Ptr<const Packet>);
+  void WifiMacRxDropTrace (std::string context,
+                           Ptr<const Packet>);
+  void WifiPhyTxDropTrace (std::string context,
+                       Ptr<const Packet>);
+  void WifiPhyRxDropTrace (std::string context,
+                       Ptr<const Packet>);
   void DevTxTrace (std::string context,
                    Ptr<const Packet> p,
                    Ptr<NetDevice> tx,
@@ -570,18 +711,8 @@
                    Time rxTime);
   void WifiPhyTxBeginTrace (std::string context,
                             Ptr<const Packet> p);
-  void WifiPhyTxEndTrace (std::string context,
-                          Ptr<const Packet> p);
-  void WifiPhyTxDropTrace (std::string context,
-                           Ptr<const Packet> p);
   void WifiPhyRxBeginTrace (std::string context,
                             Ptr<const Packet> p);
-  void WifiPhyRxEndTrace (std::string context,
-                          Ptr<const Packet> p);
-  void WifiMacRxTrace (std::string context,
-                       Ptr<const Packet> p);
-  void WifiPhyRxDropTrace (std::string context,
-                           Ptr<const Packet> p);
   void WimaxTxTrace (std::string context,
                      Ptr<const Packet> p,
 		     const Mac48Address &);
@@ -596,187 +727,81 @@
                           Ptr<const Packet> p);
   void CsmaMacRxTrace (std::string context,
                        Ptr<const Packet> p);
-
   void LteTxTrace (std::string context,
                       Ptr<const Packet> p,
                       const Mac48Address &);
-
   void LteRxTrace (std::string context,
                       Ptr<const Packet> p,
                       const Mac48Address &);
-
   void LteSpectrumPhyTxStart (std::string context,
                       Ptr<const PacketBurst> pb);
   void LteSpectrumPhyRxStart (std::string context,
                       Ptr<const PacketBurst> pb);
-
   void UanPhyGenTxTrace (std::string context,
                          Ptr<const Packet>);
   void UanPhyGenRxTrace (std::string context,
                          Ptr<const Packet>);
-
   void RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy);
 
-  void MobilityCourseChangeTrace (Ptr <const MobilityModel> mob);
-
-  // Write a string to the specified handle;
-  int  WriteN (const std::string&, FILE * f);
-
-  void OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo);
-  void OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo);
-  void MobilityAutoCheck ();
   
-
-  std::map<uint64_t, AnimPacketInfo> m_pendingWifiPackets;
-  void AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo&);
-  bool WifiPacketIsPending (uint64_t AnimUid); 
-
-  std::map<uint64_t, AnimPacketInfo> m_pendingWimaxPackets;
-  void AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo&);
-  bool WimaxPacketIsPending (uint64_t AnimUid); 
-
-  std::map<uint64_t, AnimPacketInfo> m_pendingLtePackets;
-  void AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo&);
-  bool LtePacketIsPending (uint64_t AnimUid);
-
-  std::map<uint64_t, AnimPacketInfo> m_pendingCsmaPackets;
-  void AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo&);
-  bool CsmaPacketIsPending (uint64_t AnimUid);
-
-  std::map<uint64_t, AnimPacketInfo> m_pendingUanPackets;
-  void AddPendingUanPacket (uint64_t AnimUid, AnimPacketInfo&);
-  bool UanPacketIsPending (uint64_t AnimUid);
-
-  uint64_t GetAnimUidFromPacket (Ptr <const Packet>);
-
-  std::map<uint32_t, Vector> m_nodeLocation;
-  Vector GetPosition (Ptr <Node> n);
-  Vector UpdatePosition (Ptr <Node> n);
-  Vector UpdatePosition (Ptr <Node> n, Vector v);
-  void WriteDummyPacket ();
-  bool NodeHasMoved (Ptr <Node> n, Vector newLocation);
-
-  void PurgePendingWifi ();
-  void PurgePendingWimax ();
-  void PurgePendingLte ();
-  void PurgePendingCsma ();
-
-  // Recalculate topology bounds
-  void RecalcTopoBounds (Vector v);
-  std::vector < Ptr <Node> > RecalcTopoBounds ();
-
   void ConnectCallbacks ();
   void ConnectLte ();
   void ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex);
   void ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex);
 
-  
-  std::map <std::string, uint32_t> m_macToNodeIdMap;
-  std::map <std::string, uint32_t> m_ipv4ToNodeIdMap;
-  void AddToIpv4AddressNodeIdTable (std::string, uint32_t);
-  std::vector <Ipv4RouteTrackElement> m_ipv4RouteTrackElements;
-  typedef std::vector <Ipv4RoutePathElement> Ipv4RoutePathElements;
-  void RecursiveIpv4RoutePathSearch (std::string fromIpv4, std::string toIpv4, Ipv4RoutePathElements &);
-  void WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
-  bool IsInTimeWindow ();
-
-  // Path helper
-  const std::vector<std::string> GetElementsFromContext (const std::string& context) const;
-  Ptr <Node> GetNodeFromContext (const std::string& context) const;
-  Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
 
-  typedef std::map <uint32_t, double> EnergyFractionMap;
+  // ##### Mobility #####
+  Vector GetPosition (Ptr <Node> n);
+  Vector UpdatePosition (Ptr <Node> n);
+  Vector UpdatePosition (Ptr <Node> n, Vector v);
+  bool NodeHasMoved (Ptr <Node> n, Vector newLocation);
+  std::vector < Ptr <Node> > GetMovedNodes ();
+  void MobilityCourseChangeTrace (Ptr <const MobilityModel> mob);
 
-  static std::map <uint32_t, Rgb> nodeColors;
-  static std::map <uint32_t, std::string> nodeDescriptions;
-  static std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> linkProperties;
-  EnergyFractionMap m_nodeEnergyFraction;
-  uint64_t m_currentPktCount;
 
-  std::map <uint32_t, NodeSize> m_nodeSizes;
-  std::vector <std::string> m_resources;
-  std::vector <std::string> m_nodeCounters;
-  void StartNewTraceFile ();
+  // ##### XML Helpers ##### 
 
-  std::string GetMacAddress (Ptr <NetDevice> nd);
-  std::string GetIpv4Address (Ptr <NetDevice> nd);
   void WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
-
   void WriteNodeUpdate (uint32_t nodeId);
+  void OutputWirelessPacketTxInfo (Ptr<const Packet> p, AnimPacketInfo& pktInfo, uint64_t animUid);
+  void OutputWirelessPacketRxInfo (Ptr<const Packet> p, AnimRxInfo pktrxInfo, uint64_t animUid);
+  void OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo);
+  void WriteLinkProperties ();
+  void WriteNodes ();
+  void WriteNodeColors ();
+  void WriteNodeSizes ();
+  void WriteNodeEnergies ();
+  void WriteXmlAnim (bool routing = false);
+  void WriteXmlUpdateNodePosition (uint32_t nodeId, double x, double y);
+  void WriteXmlUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
+  void WriteXmlUpdateNodeDescription (uint32_t nodeId);
+  void WriteXmlUpdateNodeSize (uint32_t nodeId, double width, double height);
+  void WriteXmlAddResource (uint32_t resourceId, std::string resourcePath);
+  void WriteXmlAddNodeCounter (uint32_t counterId, std::string counterName, CounterType counterType);
+  void WriteXmlUpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
+  void WriteXmlUpdateNodeCounter (uint32_t counterId, uint32_t nodeId, double value);
+  void WriteXmlNode (uint32_t id, uint32_t sysId, double locX, double locY);
+  void WriteXmlLink (uint32_t fromId, uint32_t toLp, uint32_t toId);
+  void WriteXmlUpdateLink (uint32_t fromId, uint32_t toId, std::string);
+  void WriteXmlP (std::string pktType, 
+                                 uint32_t fId, 
+                                 double fbTx, 
+                                 double lbTx, 
+                                 uint32_t tId, 
+                                 double fbRx, 
+                                 double lbRx,
+                                 std::string metaInfo = ""); 
+  void WriteXmlP (uint64_t animUid, std::string pktType, uint32_t fId, double fbTx, double lbTx);
+  void WriteXmlPRef (uint64_t animUid, uint32_t fId, double fbTx, double lbTx, std::string metaInfo = "");
+  void WriteXmlClose (std::string name, bool routing = false);
+  void WriteXmlNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
+  void WriteXmlRouting (uint32_t id, std::string routingInfo);
+  void WriteXmlRp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
+  void WriteXmlUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
 
-  std::string GetNetAnimVersion ();
-
-  // XML helpers
-  std::string GetPreamble (void);
-  std::string CounterTypeToString (CounterType counterType);
-  // Topology element dimensions
-  double m_topoMinX;
-  double m_topoMinY;
-  double m_topoMaxX;
-  double m_topoMaxY;
-
-  bool m_enable3105;
-  bool m_trackPackets;
-  uint32_t m_remainingEnergyCounterId;
-  std::string GetPacketMetadata (Ptr<const Packet> p);
-
-  std::string GetXMLOpen_anim (uint32_t lp);
-  std::string GetXMLOpenCloseUpdateNodePosition (uint32_t nodeId, double x, double y);
-  std::string GetXMLOpenCloseUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
-  std::string GetXMLOpenCloseUpdateNodeDescription (uint32_t nodeId);
-  std::string GetXMLOpenCloseUpdateNodeSize (uint32_t nodeId, double width, double height);
-  std::string GetXMLOpenCloseAddResource (uint32_t resourceId, std::string resourcePath);
-  std::string GetXMLOpenCloseAddNodeCounter (uint32_t counterId, std::string counterName, CounterType counterType);
-  std::string GetXMLOpenCloseUpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
-  std::string GetXMLOpenCloseUpdateNodeCounter (uint32_t counterId, uint32_t nodeId, double value);
-  std::string GetXMLOpen_topology (double minX, double minY, double maxX, double maxY);
-  std::string GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY);
-  std::string GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY, struct Rgb rgb);
-  std::string GetXMLOpenClose_nodeupdate (uint32_t id, bool visible = true);
-  std::string GetXMLOpenClose_link (uint32_t fromLp, uint32_t fromId, uint32_t toLp, uint32_t toId);
-  std::string GetXMLOpenClose_linkupdate (uint32_t fromId, uint32_t toId, std::string);
-  std::string GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo = "");
-  std::string GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, uint32_t tId, double fbRx, double lbRx,
-                                 std::string metaInfo = "", std::string auxInfo = "");
-  std::string GetXMLOpenClose_rx (uint32_t toLp, uint32_t toId, double fbRx, double lbRx);
-  std::string GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range);
-  std::string GetXMLClose (std::string name) {return "</" + name + ">\n"; }
-  std::string GetXMLOpenClose_meta (std::string metaInfo);
-  std::string GetXMLOpenClose_NonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
-  std::string GetXMLOpenClose_routing (uint32_t id, std::string routingInfo);
-  std::string GetXMLOpenClose_rp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
-  std::string GetXMLOpenCloseUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
-
-  void AppendXMLNodeDescription (std::ostream& ostream, uint32_t id) const;
-  void AppendXMLNodeColor (std::ostream& ostream, const Rgb& color) const;
-  void AppendXMLRemainingEnergy (std::ostream& ostream, uint32_t id) const;
-
-  /// Provides uniform random variables.
-  Ptr<UniformRandomVariable> m_uniformRandomVariable;  
 };
 
-/**
- * \ingroup netanim
- * \brief A structure to store red, blue and green components for entities such as nodes
- *
- */
-struct Rgb 
-{
-  uint8_t r;
-  uint8_t g;
-  uint8_t b;
-};
 
-/**
- * \ingroup netanim
- * \brief A structure to store the width and height of a node` 
- *
- */
-struct NodeSize 
-{
-  double width;
-  double height;
-};
 
 
 /**
@@ -854,6 +879,8 @@
   uint64_t m_AnimUid;
 };
 
+
+
 }
 #endif
 
diff -Naur ns-3.20/src/netanim/test/netanim-test.cc ns-3.21/src/netanim/test/netanim-test.cc
--- ns-3.20/src/netanim/test/netanim-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/test/netanim-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -166,7 +166,7 @@
 void
 AnimationInterfaceTestCase::CheckLogic (void)
 {
-  NS_TEST_ASSERT_MSG_EQ (m_anim->GetTracePktCount (), 32, "Expected 32 packets traced");
+  NS_TEST_ASSERT_MSG_EQ (m_anim->GetTracePktCount (), 16, "Expected 16 packets traced");
 }
 
 class AnimationRemainingEnergyTestCase : public AbstractAnimationInterfaceTestCase
diff -Naur ns-3.20/src/netanim/wscript ns-3.21/src/netanim/wscript
--- ns-3.20/src/netanim/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/netanim/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -11,7 +11,6 @@
 	module.includes = '.'
 	module.source = [
 			  'model/animation-interface.cc',
-			  'helper/animation-interface-helper.cc',
 		        ]
     	netanim_test = bld.create_ns3_module_test_library('netanim')
     	netanim_test.source = [
@@ -22,7 +21,6 @@
 	headers.module = 'netanim'
 	headers.source = [
 			  'model/animation-interface.h',
-			  'helper/animation-interface-helper.h',
   			 ]
 
 	if (bld.env['ENABLE_EXAMPLES']) :
diff -Naur ns-3.20/src/network/bindings/modulegen__gcc_ILP32.py ns-3.21/src/network/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/network/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -152,6 +152,8 @@
     module.add_class('SequenceNumber32')
     ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned short, short> [class]
     module.add_class('SequenceNumber16')
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper [class]
+    module.add_class('SimpleNetDeviceHelper')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simulator.h (module 'core'): ns3::Simulator [class]
@@ -406,8 +408,12 @@
     module.add_class('PacketSizeMinMaxAvgTotalCalculator', parent=root_module['ns3::MinMaxAvgTotalCalculator< unsigned int >'])
     ## packet-socket.h (module 'network'): ns3::PacketSocket [class]
     module.add_class('PacketSocket', parent=root_module['ns3::Socket'])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient [class]
+    module.add_class('PacketSocketClient', parent=root_module['ns3::Application'])
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory [class]
     module.add_class('PacketSocketFactory', parent=root_module['ns3::SocketFactory'])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer [class]
+    module.add_class('PacketSocketServer', parent=root_module['ns3::Application'])
     ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## packetbb.h (module 'network'): ns3::PbbAddressBlock [class]
@@ -606,6 +612,7 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
     register_Ns3SequenceNumber16_methods(root_module, root_module['ns3::SequenceNumber16'])
+    register_Ns3SimpleNetDeviceHelper_methods(root_module, root_module['ns3::SimpleNetDeviceHelper'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
@@ -722,7 +729,9 @@
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
     register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, root_module['ns3::PacketSizeMinMaxAvgTotalCalculator'])
     register_Ns3PacketSocket_methods(root_module, root_module['ns3::PacketSocket'])
+    register_Ns3PacketSocketClient_methods(root_module, root_module['ns3::PacketSocketClient'])
     register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
+    register_Ns3PacketSocketServer_methods(root_module, root_module['ns3::PacketSocketServer'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3PbbAddressBlock_methods(root_module, root_module['ns3::PbbAddressBlock'])
     register_Ns3PbbAddressBlockIpv4_methods(root_module, root_module['ns3::PbbAddressBlockIpv4'])
@@ -3215,6 +3224,53 @@
                    is_const=True)
     return
 
+def register_Ns3SimpleNetDeviceHelper_methods(root_module, cls):
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper(ns3::SimpleNetDeviceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleNetDeviceHelper const &', 'arg0')])
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper() [constructor]
+    cls.add_constructor([])
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannel(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode(bool pointToPointMode) [member function]
+    cls.add_method('SetNetDevicePointToPointMode', 
+                   'void', 
+                   [param('bool', 'pointToPointMode')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    return
+
 def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -5360,10 +5416,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5374,25 +5430,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5509,20 +5565,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -7912,6 +7968,37 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3PacketSocketClient_methods(root_module, cls):
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient(ns3::PacketSocketClient const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketClient const &', 'arg0')])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-client.h (module 'network'): static ns3::TypeId ns3::PacketSocketClient::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::SetRemote(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetRemote', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory::PacketSocketFactory(ns3::PacketSocketFactory const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PacketSocketFactory const &', 'arg0')])
@@ -7929,6 +8016,37 @@
                    is_static=True)
     return
 
+def register_Ns3PacketSocketServer_methods(root_module, cls):
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer(ns3::PacketSocketServer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketServer const &', 'arg0')])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-server.h (module 'network'): static ns3::TypeId ns3::PacketSocketServer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::SetLocal(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -9160,6 +9278,11 @@
                    'ns3::Ptr< ns3::Node >', 
                    [], 
                    is_const=True, is_virtual=True)
+    ## simple-net-device.h (module 'network'): ns3::Ptr<ns3::Queue> ns3::SimpleNetDevice::GetQueue() const [member function]
+    cls.add_method('GetQueue', 
+                   'ns3::Ptr< ns3::Queue >', 
+                   [], 
+                   is_const=True)
     ## simple-net-device.h (module 'network'): static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -9238,6 +9361,10 @@
                    'void', 
                    [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
                    is_virtual=True)
+    ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
     cls.add_method('SetReceiveCallback', 
                    'void', 
diff -Naur ns-3.20/src/network/bindings/modulegen__gcc_LP64.py ns-3.21/src/network/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/network/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -152,6 +152,8 @@
     module.add_class('SequenceNumber32')
     ## sequence-number.h (module 'network'): ns3::SequenceNumber<unsigned short, short> [class]
     module.add_class('SequenceNumber16')
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper [class]
+    module.add_class('SimpleNetDeviceHelper')
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## simulator.h (module 'core'): ns3::Simulator [class]
@@ -406,8 +408,12 @@
     module.add_class('PacketSizeMinMaxAvgTotalCalculator', parent=root_module['ns3::MinMaxAvgTotalCalculator< unsigned int >'])
     ## packet-socket.h (module 'network'): ns3::PacketSocket [class]
     module.add_class('PacketSocket', parent=root_module['ns3::Socket'])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient [class]
+    module.add_class('PacketSocketClient', parent=root_module['ns3::Application'])
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory [class]
     module.add_class('PacketSocketFactory', parent=root_module['ns3::SocketFactory'])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer [class]
+    module.add_class('PacketSocketServer', parent=root_module['ns3::Application'])
     ## random-variable-stream.h (module 'core'): ns3::ParetoRandomVariable [class]
     module.add_class('ParetoRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## packetbb.h (module 'network'): ns3::PbbAddressBlock [class]
@@ -606,6 +612,7 @@
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
     register_Ns3SequenceNumber32_methods(root_module, root_module['ns3::SequenceNumber32'])
     register_Ns3SequenceNumber16_methods(root_module, root_module['ns3::SequenceNumber16'])
+    register_Ns3SimpleNetDeviceHelper_methods(root_module, root_module['ns3::SimpleNetDeviceHelper'])
     register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
     register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
     register_Ns3StatisticalSummary_methods(root_module, root_module['ns3::StatisticalSummary'])
@@ -722,7 +729,9 @@
     register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
     register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, root_module['ns3::PacketSizeMinMaxAvgTotalCalculator'])
     register_Ns3PacketSocket_methods(root_module, root_module['ns3::PacketSocket'])
+    register_Ns3PacketSocketClient_methods(root_module, root_module['ns3::PacketSocketClient'])
     register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
+    register_Ns3PacketSocketServer_methods(root_module, root_module['ns3::PacketSocketServer'])
     register_Ns3ParetoRandomVariable_methods(root_module, root_module['ns3::ParetoRandomVariable'])
     register_Ns3PbbAddressBlock_methods(root_module, root_module['ns3::PbbAddressBlock'])
     register_Ns3PbbAddressBlockIpv4_methods(root_module, root_module['ns3::PbbAddressBlockIpv4'])
@@ -3215,6 +3224,53 @@
                    is_const=True)
     return
 
+def register_Ns3SimpleNetDeviceHelper_methods(root_module, cls):
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper(ns3::SimpleNetDeviceHelper const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleNetDeviceHelper const &', 'arg0')])
+    ## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper::SimpleNetDeviceHelper() [constructor]
+    cls.add_constructor([])
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): ns3::NetDeviceContainer ns3::SimpleNetDeviceHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::SimpleChannel> channel) const [member function]
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::SimpleChannel >', 'channel')], 
+                   is_const=True)
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannel(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue const &', 'v1')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode(bool pointToPointMode) [member function]
+    cls.add_method('SetNetDevicePointToPointMode', 
+                   'void', 
+                   [param('bool', 'pointToPointMode')])
+    ## simple-net-device-helper.h (module 'network'): void ns3::SimpleNetDeviceHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue const &', 'v1', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue const &', 'v2', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue const &', 'v3', default_value='ns3::EmptyAttributeValue()'), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue const &', 'v4', default_value='ns3::EmptyAttributeValue()')])
+    return
+
 def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
     ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
     cls.add_constructor([])
@@ -5360,10 +5416,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5374,25 +5430,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5509,20 +5565,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -7912,6 +7968,37 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3PacketSocketClient_methods(root_module, cls):
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient(ns3::PacketSocketClient const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketClient const &', 'arg0')])
+    ## packet-socket-client.h (module 'network'): ns3::PacketSocketClient::PacketSocketClient() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-client.h (module 'network'): static ns3::TypeId ns3::PacketSocketClient::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::SetRemote(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetRemote', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-client.h (module 'network'): void ns3::PacketSocketClient::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
     ## packet-socket-factory.h (module 'network'): ns3::PacketSocketFactory::PacketSocketFactory(ns3::PacketSocketFactory const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::PacketSocketFactory const &', 'arg0')])
@@ -7929,6 +8016,37 @@
                    is_static=True)
     return
 
+def register_Ns3PacketSocketServer_methods(root_module, cls):
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer(ns3::PacketSocketServer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PacketSocketServer const &', 'arg0')])
+    ## packet-socket-server.h (module 'network'): ns3::PacketSocketServer::PacketSocketServer() [constructor]
+    cls.add_constructor([])
+    ## packet-socket-server.h (module 'network'): static ns3::TypeId ns3::PacketSocketServer::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::SetLocal(ns3::PacketSocketAddress addr) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::PacketSocketAddress', 'addr')])
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StartApplication() [member function]
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## packet-socket-server.h (module 'network'): void ns3::PacketSocketServer::StopApplication() [member function]
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    return
+
 def register_Ns3ParetoRandomVariable_methods(root_module, cls):
     ## random-variable-stream.h (module 'core'): static ns3::TypeId ns3::ParetoRandomVariable::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
@@ -9160,6 +9278,11 @@
                    'ns3::Ptr< ns3::Node >', 
                    [], 
                    is_const=True, is_virtual=True)
+    ## simple-net-device.h (module 'network'): ns3::Ptr<ns3::Queue> ns3::SimpleNetDevice::GetQueue() const [member function]
+    cls.add_method('GetQueue', 
+                   'ns3::Ptr< ns3::Queue >', 
+                   [], 
+                   is_const=True)
     ## simple-net-device.h (module 'network'): static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -9238,6 +9361,10 @@
                    'void', 
                    [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet const >, unsigned short, ns3::Address const &, ns3::Address const &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >', 'cb')], 
                    is_virtual=True)
+    ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## simple-net-device.h (module 'network'): void ns3::SimpleNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet const>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> cb) [member function]
     cls.add_method('SetReceiveCallback', 
                    'void', 
diff -Naur ns-3.20/src/network/doc/packets.rst ns-3.21/src/network/doc/packets.rst
--- ns-3.20/src/network/doc/packets.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/doc/packets.rst	2014-09-17 20:03:14.000000000 -0700
@@ -37,7 +37,7 @@
 pretty-print the packet headers without context. The packet metadata describes
 the type of the headers and trailers which were serialized in the byte buffer.
 The maintenance of metadata is optional and disabled by default. To enable it,
-you must call Packet::EnableMetadata() and this will allow you to get non-empty
+you must call Packet::EnablePrinting() and this will allow you to get non-empty
 output from Packet::Print and Packet::Print.
 
 Also, developers often want to store data in packet objects that is not found
diff -Naur ns-3.20/src/network/examples/packet-socket-apps.cc ns-3.21/src/network/examples/packet-socket-apps.cc
--- ns-3.20/src/network/examples/packet-socket-apps.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/examples/packet-socket-apps.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,98 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+// Network topology
+//
+//       n0              n1
+//       |               |
+//       =================
+//         SimpleChannel
+//
+// - Packets flows from n0 to n1
+//
+// This example shows how to use the SimpleServer and SimpleClient
+// to send non-IP packets over a SimpleNetDevice
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+
+using namespace ns3;
+
+
+int main (int argc, char *argv[])
+{
+  bool verbose = false;
+
+  CommandLine cmd;
+  cmd.AddValue ("verbose", "turn on log components", verbose);
+  cmd.Parse(argc, argv);
+
+  if (verbose)
+    {
+      LogComponentEnable ("PacketSocketServer", LOG_LEVEL_ALL);
+      LogComponentEnable ("PacketSocketClient", LOG_LEVEL_ALL);
+      LogComponentEnable ("SimpleNetDevice", LOG_LEVEL_ALL);
+    }
+
+  NodeContainer nodes;
+  nodes.Create (2);
+
+  ns3::PacketMetadata::Enable();
+
+  PacketSocketHelper packetSocket;
+
+  // give packet socket powers to nodes.
+  packetSocket.Install (nodes);
+
+  Ptr<SimpleNetDevice> txDev;
+  txDev = CreateObject<SimpleNetDevice> ();
+  nodes.Get (0)->AddDevice (txDev);
+
+  Ptr<SimpleNetDevice> rxDev;
+  rxDev = CreateObject<SimpleNetDevice> ();
+  nodes.Get (1)->AddDevice (rxDev);
+
+  Ptr<SimpleChannel> channel = CreateObject<SimpleChannel> ();
+  txDev->SetChannel (channel);
+  rxDev->SetChannel (channel);
+  txDev->SetNode (nodes.Get (0));
+  rxDev->SetNode (nodes.Get (1));
+
+
+  PacketSocketAddress socketAddr;
+  socketAddr.SetSingleDevice (txDev->GetIfIndex ());
+  socketAddr.SetPhysicalAddress (rxDev->GetAddress ());
+  // Arbitrary protocol type.
+  // Note: PacketSocket doesn't have any L4 multiplexing or demultiplexing
+  //       The only mux/demux is based on the protocol field
+  socketAddr.SetProtocol (1);
+
+  Ptr<PacketSocketClient> client = CreateObject<PacketSocketClient> ();
+  client->SetRemote (socketAddr);
+  nodes.Get (0)->AddApplication (client);
+
+  Ptr<PacketSocketServer> server = CreateObject<PacketSocketServer> ();
+  server->SetLocal (socketAddr);
+  nodes.Get (1)->AddApplication (server);
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+  return 0;
+}
diff -Naur ns-3.20/src/network/examples/wscript ns-3.21/src/network/examples/wscript
--- ns-3.20/src/network/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -15,3 +15,6 @@
 
     obj = bld.create_ns3_program('droptail_vs_red', ['point-to-point', 'point-to-point-layout', 'internet', 'applications'])
     obj.source = 'droptail_vs_red.cc'
+
+    obj = bld.create_ns3_program('packet-socket-apps', ['core', 'network'])
+    obj.source = 'packet-socket-apps.cc'
diff -Naur ns-3.20/src/network/helper/simple-net-device-helper.cc ns-3.21/src/network/helper/simple-net-device-helper.cc
--- ns-3.20/src/network/helper/simple-net-device-helper.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/helper/simple-net-device-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,143 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/abort.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/object-factory.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/simple-channel.h"
+#include "ns3/config.h"
+#include "ns3/packet.h"
+#include "ns3/names.h"
+#include "ns3/boolean.h"
+
+#include "ns3/trace-helper.h"
+#include "simple-net-device-helper.h"
+
+#include <string>
+
+NS_LOG_COMPONENT_DEFINE ("SimpleNetDeviceHelper");
+
+namespace ns3 {
+
+SimpleNetDeviceHelper::SimpleNetDeviceHelper ()
+{
+  m_queueFactory.SetTypeId ("ns3::DropTailQueue");
+  m_deviceFactory.SetTypeId ("ns3::SimpleNetDevice");
+  m_channelFactory.SetTypeId ("ns3::SimpleChannel");
+  m_pointToPointMode = false;
+}
+
+void 
+SimpleNetDeviceHelper::SetQueue (std::string type,
+                                 std::string n1, const AttributeValue &v1,
+                                 std::string n2, const AttributeValue &v2,
+                                 std::string n3, const AttributeValue &v3,
+                                 std::string n4, const AttributeValue &v4)
+{
+  m_queueFactory.SetTypeId (type);
+  m_queueFactory.Set (n1, v1);
+  m_queueFactory.Set (n2, v2);
+  m_queueFactory.Set (n3, v3);
+  m_queueFactory.Set (n4, v4);
+}
+
+void
+SimpleNetDeviceHelper::SetChannel (std::string type,
+                                   std::string n1, const AttributeValue &v1,
+                                   std::string n2, const AttributeValue &v2,
+                                   std::string n3, const AttributeValue &v3,
+                                   std::string n4, const AttributeValue &v4)
+{
+  m_channelFactory.SetTypeId (type);
+  m_channelFactory.Set (n1, v1);
+  m_channelFactory.Set (n2, v2);
+  m_channelFactory.Set (n3, v3);
+  m_channelFactory.Set (n4, v4);
+}
+
+void
+SimpleNetDeviceHelper::SetDeviceAttribute (std::string n1, const AttributeValue &v1)
+{
+  m_deviceFactory.Set (n1, v1);
+}
+
+void
+SimpleNetDeviceHelper::SetChannelAttribute (std::string n1, const AttributeValue &v1)
+{
+  m_channelFactory.Set (n1, v1);
+}
+
+void
+SimpleNetDeviceHelper::SetNetDevicePointToPointMode (bool pointToPointMode)
+{
+  m_pointToPointMode = pointToPointMode;
+}
+
+NetDeviceContainer
+SimpleNetDeviceHelper::Install (Ptr<Node> node) const
+{
+  Ptr<SimpleChannel> channel = m_channelFactory.Create<SimpleChannel> ();
+  return Install (node, channel);
+}
+
+NetDeviceContainer
+SimpleNetDeviceHelper::Install (Ptr<Node> node, Ptr<SimpleChannel> channel) const
+{
+  return NetDeviceContainer (InstallPriv (node, channel));
+}
+
+NetDeviceContainer 
+SimpleNetDeviceHelper::Install (const NodeContainer &c) const
+{
+  Ptr<SimpleChannel> channel = m_channelFactory.Create<SimpleChannel> ();
+
+  return Install (c, channel);
+}
+
+NetDeviceContainer 
+SimpleNetDeviceHelper::Install (const NodeContainer &c, Ptr<SimpleChannel> channel) const
+{
+  NetDeviceContainer devs;
+
+  for (NodeContainer::Iterator i = c.Begin (); i != c.End (); i++)
+    {
+      devs.Add (InstallPriv (*i, channel));
+    }
+
+  return devs;
+}
+
+Ptr<NetDevice>
+SimpleNetDeviceHelper::InstallPriv (Ptr<Node> node, Ptr<SimpleChannel> channel) const
+{
+  Ptr<SimpleNetDevice> device = m_deviceFactory.Create<SimpleNetDevice> ();
+  device->SetAttribute ("PointToPointMode", BooleanValue (m_pointToPointMode));
+  device->SetAddress (Mac48Address::Allocate ());
+  node->AddDevice (device);
+  device->SetChannel (channel);
+  Ptr<Queue> queue = m_queueFactory.Create<Queue> ();
+  device->SetQueue (queue);
+  NS_ASSERT_MSG (!m_pointToPointMode || (channel->GetNDevices () <= 2), "Device set to PointToPoint and more than 2 devices on the channel.");
+  return device;
+}
+
+} // namespace ns3
diff -Naur ns-3.20/src/network/helper/simple-net-device-helper.h ns-3.21/src/network/helper/simple-net-device-helper.h
--- ns-3.20/src/network/helper/simple-net-device-helper.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/helper/simple-net-device-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,191 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+#ifndef SIMPLE_NETDEVICE_HELPER_H
+#define SIMPLE_NETDEVICE_HELPER_H
+
+#include <string>
+
+#include "ns3/attribute.h"
+#include "ns3/object-factory.h"
+#include "ns3/net-device-container.h"
+#include "ns3/node-container.h"
+#include "ns3/simple-channel.h"
+#include "ns3/deprecated.h"
+
+namespace ns3 {
+
+/**
+ * \brief build a set of SimpleNetDevice objects
+ */
+class SimpleNetDeviceHelper
+{
+public:
+  /**
+   * Construct a SimpleNetDeviceHelper.
+   */
+  SimpleNetDeviceHelper ();
+  virtual ~SimpleNetDeviceHelper () {}
+
+  /**
+   * Each net device must have a queue to pass packets through.
+   * This method allows one to set the type of the queue that is automatically
+   * created when the device is created and attached to a node.
+   *
+   * \param type the type of queue
+   * \param n1 the name of the attribute to set on the queue
+   * \param v1 the value of the attribute to set on the queue
+   * \param n2 the name of the attribute to set on the queue
+   * \param v2 the value of the attribute to set on the queue
+   * \param n3 the name of the attribute to set on the queue
+   * \param v3 the value of the attribute to set on the queue
+   * \param n4 the name of the attribute to set on the queue
+   * \param v4 the value of the attribute to set on the queue
+   *
+   * Set the type of queue to create and associated to each
+   * SimpleNetDevice created through SimpleNetDeviceHelper::Install.
+   */
+  void SetQueue (std::string type,
+                 std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
+                 std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
+                 std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
+                 std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue ());
+
+  /**
+   * Each net device must have a channel to pass packets through.
+   * This method allows one to set the type of the channel that is automatically
+   * created when the device is created and attached to a node.
+   *
+   * \param type the type of queue
+   * \param n1 the name of the attribute to set on the queue
+   * \param v1 the value of the attribute to set on the queue
+   * \param n2 the name of the attribute to set on the queue
+   * \param v2 the value of the attribute to set on the queue
+   * \param n3 the name of the attribute to set on the queue
+   * \param v3 the value of the attribute to set on the queue
+   * \param n4 the name of the attribute to set on the queue
+   * \param v4 the value of the attribute to set on the queue
+   *
+   * Set the type of channel to create and associated to each
+   * SimpleNetDevice created through SimpleNetDeviceHelper::Install.
+   */
+  void SetChannel (std::string type,
+                   std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
+                   std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
+                   std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
+                   std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue ());
+
+
+  /**
+   * \param n1 the name of the attribute to set
+   * \param v1 the value of the attribute to set
+   *
+   * Set these attributes on each ns3::SimpleNetDevice created
+   * by SimpleNetDeviceHelper::Install
+   */
+  void SetDeviceAttribute (std::string n1, const AttributeValue &v1);
+
+  /**
+   * \param n1 the name of the attribute to set
+   * \param v1 the value of the attribute to set
+   *
+   * Set these attributes on each ns3::CsmaChannel created
+   * by SimpleNetDeviceHelper::Install
+   */
+  void SetChannelAttribute (std::string n1, const AttributeValue &v1);
+
+  /**
+   * SimpleNetDevice is Broadcast capable and ARP needing. This function
+   * limits the number of SimpleNetDevices on one channel to two, disables
+   * Broadcast and ARP and enables PointToPoint mode.
+   *
+   * \warning It must be used before installing a NetDevice on a node.
+   *
+   * \param pointToPointMode True for PointToPoint SimpleNetDevice
+   */
+  void SetNetDevicePointToPointMode (bool pointToPointMode);
+
+  /**
+   * This method creates an ns3::SimpleChannel with the attributes configured by
+   * SimpleNetDeviceHelper::SetChannelAttribute, an ns3::SimpleNetDevice with the attributes
+   * configured by SimpleNetDeviceHelper::SetDeviceAttribute and then adds the device
+   * to the node and attaches the channel to the device.
+   *
+   * \param node The node to install the device in
+   * \returns A container holding the added net device.
+   */
+  NetDeviceContainer Install (Ptr<Node> node) const;
+
+  /**
+   * This method creates an ns3::SimpleNetDevice with the attributes configured by
+   * SimpleNetDeviceHelper::SetDeviceAttribute and then adds the device to the node and
+   * attaches the provided channel to the device.
+   *
+   * \param node The node to install the device in
+   * \param channel The channel to attach to the device.
+   * \returns A container holding the added net device.
+   */
+  NetDeviceContainer Install (Ptr<Node> node, Ptr<SimpleChannel> channel) const;
+
+  /**
+   * This method creates an ns3::SimpleChannel with the attributes configured by
+   * SimpleNetDeviceHelper::SetChannelAttribute.  For each Ptr<node> in the provided
+   * container: it creates an ns3::SimpleNetDevice (with the attributes
+   * configured by SimpleNetDeviceHelper::SetDeviceAttribute); adds the device to the
+   * node; and attaches the channel to the device.
+   *
+   * \param c The NodeContainer holding the nodes to be changed.
+   * \returns A container holding the added net devices.
+   */
+  NetDeviceContainer Install (const NodeContainer &c) const;
+
+  /**
+   * For each Ptr<node> in the provided container, this method creates an
+   * ns3::SimpleNetDevice (with the attributes configured by
+   * SimpleNetDeviceHelper::SetDeviceAttribute); adds the device to the node; and attaches
+   * the provided channel to the device.
+   *
+   * \param c The NodeContainer holding the nodes to be changed.
+   * \param channel The channel to attach to the devices.
+   * \returns A container holding the added net devices.
+   */
+  NetDeviceContainer Install (const NodeContainer &c, Ptr<SimpleChannel> channel) const;
+
+private:
+  /**
+   * This method creates an ns3::SimpleNetDevice with the attributes configured by
+   * SimpleNetDeviceHelper::SetDeviceAttribute and then adds the device to the node and
+   * attaches the provided channel to the device.
+   *
+   * \param node The node to install the device in
+   * \param channelName The name of the channel to attach to the device.
+   * \returns The new net device.
+   */
+  Ptr<NetDevice> InstallPriv (Ptr<Node> node, Ptr<SimpleChannel> channel) const;
+
+  ObjectFactory m_queueFactory; //!< Queue factory
+  ObjectFactory m_deviceFactory; //!< NetDevice factory
+  ObjectFactory m_channelFactory; //!< Channel factory
+  bool m_pointToPointMode; //!< Install PointToPoint SimpleNetDevice or Broadcast ones
+
+};
+
+} // namespace ns3
+
+#endif /* SIMPLE_NETDEVICE_HELPER_H */
diff -Naur ns-3.20/src/network/model/header.h ns-3.21/src/network/model/header.h
--- ns-3.20/src/network/model/header.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/model/header.h	2014-09-17 20:03:14.000000000 -0700
@@ -70,7 +70,7 @@
   virtual void Serialize (Buffer::Iterator start) const = 0;
   /**
    * \param start an iterator which points to where the header should
-   *        written.
+   *        read from.
    * \returns the number of bytes read.
    *
    * This method is used by Packet::RemoveHeader to
@@ -78,6 +78,12 @@
    * The data read is expected to
    * match bit-for-bit the representation of this header in real
    * networks.
+   *
+   * Note that data is not actually removed from the buffer to 
+   * which the iterator points.  Both Packet::RemoveHeader() and
+   * Packet::PeekHeader() call Deserialize(), but only the RemoveHeader()
+   * has additional statements to remove the header bytes from the
+   * underlying buffer and associated metadata.
    */
   virtual uint32_t Deserialize (Buffer::Iterator start) = 0;
   /**
diff -Naur ns-3.20/src/network/model/net-device.h ns-3.21/src/network/model/net-device.h
--- ns-3.20/src/network/model/net-device.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/model/net-device.h	2014-09-17 20:03:14.000000000 -0700
@@ -293,12 +293,14 @@
    * \returns true if the callback could handle the packet successfully, false
    *          otherwise.
    */
-  typedef Callback<bool,Ptr<NetDevice>,Ptr<const Packet>,uint16_t,const Address &> ReceiveCallback;
+  typedef Callback< bool, Ptr<NetDevice>, Ptr<const Packet>, uint16_t, const Address & > ReceiveCallback;
 
   /**
    * \param cb callback to invoke whenever a packet has been received and must
    *        be forwarded to the higher layers.
    *
+   * Set the callback to be used to notify higher layers when a packet has been
+   * received.
    */
   virtual void SetReceiveCallback (ReceiveCallback cb) = 0;
 
diff -Naur ns-3.20/src/network/model/node.h ns-3.21/src/network/model/node.h
--- ns-3.20/src/network/model/node.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/model/node.h	2014-09-17 20:03:14.000000000 -0700
@@ -84,19 +84,18 @@
   uint32_t GetSystemId (void) const;
 
   /**
+   * \brief Associate a NetDevice to this node.
+   *
    * \param device NetDevice to associate to this node.
    * \returns the index of the NetDevice into the Node's list of
    *          NetDevice.
-   *
-   * Associate this device to this node.
    */
   uint32_t AddDevice (Ptr<NetDevice> device);
   /**
-   * \param index the index of the requested NetDevice
-   * \returns the requested NetDevice associated to this Node.
+   * \brief Retrieve the index-th NetDevice associated to this node.
    *
-   * The indexes used by the GetDevice method start at one and
-   * end at GetNDevices ()
+   * \param index the index of the requested NetDevice
+   * \returns the requested NetDevice.
    */
   Ptr<NetDevice> GetDevice (uint32_t index) const;
   /**
@@ -106,22 +105,23 @@
   uint32_t GetNDevices (void) const;
 
   /**
+   * \brief Associate an Application to this Node.
+   *
    * \param application Application to associate to this node.
    * \returns the index of the Application within the Node's list
    *          of Application.
-   *
-   * Associated this Application to this Node. 
    */
   uint32_t AddApplication (Ptr<Application> application);
   /**
-   * \param index
-   * \returns the application associated to this requested index
-   *          within this Node.
+   * \brief Retrieve the index-th Application associated to this node.
+   *
+   * \param index the index of the requested Application
+   * \returns the requested Application.
    */
   Ptr<Application> GetApplication (uint32_t index) const;
 
   /**
-   * \returns the number of applications associated to this Node.
+   * \returns the number of Application instances associated to this Node.
    */
   uint32_t GetNApplications (void) const;
 
diff -Naur ns-3.20/src/network/model/socket.h ns-3.21/src/network/model/socket.h
--- ns-3.20/src/network/model/socket.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/model/socket.h	2014-09-17 20:03:14.000000000 -0700
@@ -576,6 +576,9 @@
    * is also possible to bind to mismatching device and address, even if
    * the socket can not receive any packets as a result.
    *
+   * \warning BindToNetDevice should be used \a after Bind. Otherwise
+   * it will perform a Bind itself.
+   *
    * \param netdevice Pointer to Netdevice of desired interface
    * \returns nothing
    */
diff -Naur ns-3.20/src/network/test/packet-socket-apps-test-suite.cc ns-3.21/src/network/test/packet-socket-apps-test-suite.cc
--- ns-3.20/src/network/test/packet-socket-apps-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/test/packet-socket-apps-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,126 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/test.h"
+#include "ns3/simulator.h"
+#include "ns3/uinteger.h"
+#include "ns3/traced-callback.h"
+#include "ns3/packet.h"
+#include "ns3/packet-socket-helper.h"
+#include "ns3/packet-socket-client.h"
+#include "ns3/packet-socket-server.h"
+#include "ns3/simple-net-device.h"
+#include "ns3/simple-channel.h"
+
+using namespace ns3;
+
+
+class PacketSocketAppsTest : public TestCase
+{
+  uint32_t m_receivedPacketSize;
+  uint32_t m_receivedPacketNumber;
+
+public:
+  virtual void DoRun (void);
+  PacketSocketAppsTest ();
+
+  void ReceivePkt (Ptr<const Packet> packet, const Address &from);
+};
+
+PacketSocketAppsTest::PacketSocketAppsTest ()
+  : TestCase ("Packet Socket Apps test")
+{
+  m_receivedPacketSize = 0;
+  m_receivedPacketNumber = 0;
+}
+
+void PacketSocketAppsTest::ReceivePkt (Ptr<const Packet> packet, const Address &from)
+{
+  if (packet)
+    {
+      m_receivedPacketSize = packet->GetSize ();
+      m_receivedPacketNumber++;
+    }
+}
+
+
+void
+PacketSocketAppsTest::DoRun (void)
+{
+  // Create topology
+
+  NodeContainer nodes;
+  nodes.Create (2);
+
+  PacketSocketHelper packetSocket;
+
+  // give packet socket powers to nodes.
+  packetSocket.Install (nodes);
+
+  Ptr<SimpleNetDevice> txDev;
+  txDev = CreateObject<SimpleNetDevice> ();
+  nodes.Get (0)->AddDevice (txDev);
+
+  Ptr<SimpleNetDevice> rxDev;
+  rxDev = CreateObject<SimpleNetDevice> ();
+  nodes.Get (1)->AddDevice (rxDev);
+
+  Ptr<SimpleChannel> channel = CreateObject<SimpleChannel> ();
+  txDev->SetChannel (channel);
+  rxDev->SetChannel (channel);
+  txDev->SetNode (nodes.Get (0));
+  rxDev->SetNode (nodes.Get (1));
+
+
+  PacketSocketAddress socketAddr;
+  socketAddr.SetSingleDevice (txDev->GetIfIndex ());
+  socketAddr.SetPhysicalAddress (rxDev->GetAddress ());
+  socketAddr.SetProtocol (1);
+
+  Ptr<PacketSocketClient> client = CreateObject<PacketSocketClient> ();
+  client->SetRemote (socketAddr);
+  client->SetAttribute ("PacketSize", UintegerValue (1000));
+  client->SetAttribute ("MaxPackets", UintegerValue (3));
+  nodes.Get (0)->AddApplication (client);
+
+  Ptr<PacketSocketServer> server = CreateObject<PacketSocketServer> ();
+  server->TraceConnectWithoutContext ("Rx", MakeCallback (&PacketSocketAppsTest::ReceivePkt, this));
+  server->SetLocal (socketAddr);
+  nodes.Get (1)->AddApplication (server);
+
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacketNumber, 3, "Number of packet received");
+  NS_TEST_EXPECT_MSG_EQ (m_receivedPacketSize, 1000, "Size of packet received");
+}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+class PacketSocketAppsTestSuite : public TestSuite
+{
+public:
+  PacketSocketAppsTestSuite () : TestSuite ("packet-socket-apps", UNIT)
+  {
+    AddTestCase (new PacketSocketAppsTest, TestCase::QUICK);
+  }
+} g_packetSocketAppsTestSuite;
diff -Naur ns-3.20/src/network/utils/packet-socket-client.cc ns-3.21/src/network/utils/packet-socket-client.cc
--- ns-3.20/src/network/utils/packet-socket-client.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/utils/packet-socket-client.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,155 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/log.h"
+#include "ns3/nstime.h"
+#include "ns3/packet-socket-address.h"
+#include "ns3/packet-socket.h"
+#include "ns3/packet-socket-factory.h"
+#include "ns3/socket.h"
+#include "ns3/simulator.h"
+#include "ns3/socket-factory.h"
+#include "ns3/packet.h"
+#include "ns3/uinteger.h"
+#include "ns3/abort.h"
+#include "packet-socket-client.h"
+#include <cstdlib>
+#include <cstdio>
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("PacketSocketClient");
+NS_OBJECT_ENSURE_REGISTERED (PacketSocketClient);
+
+TypeId
+PacketSocketClient::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::PacketSocketClient")
+    .SetParent<Application> ()
+    .AddConstructor<PacketSocketClient> ()
+    .AddAttribute ("MaxPackets",
+                   "The maximum number of packets the application will send (zero means infinite)",
+                   UintegerValue (100),
+                   MakeUintegerAccessor (&PacketSocketClient::m_maxPackets),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddAttribute ("Interval",
+                   "The time to wait between packets", TimeValue (Seconds (1.0)),
+                   MakeTimeAccessor (&PacketSocketClient::m_interval),
+                   MakeTimeChecker ())
+    .AddAttribute ("PacketSize",
+                   "Size of packets generated (bytes).",
+                   UintegerValue (1024),
+                   MakeUintegerAccessor (&PacketSocketClient::m_size),
+                   MakeUintegerChecker<uint32_t> ())
+    .AddTraceSource ("Tx", "A packet has been sent",
+                     MakeTraceSourceAccessor (&PacketSocketClient::m_txTrace))
+  ;
+  return tid;
+}
+
+PacketSocketClient::PacketSocketClient ()
+{
+  NS_LOG_FUNCTION (this);
+  m_sent = 0;
+  m_socket = 0;
+  m_sendEvent = EventId ();
+  m_peerAddressSet = false;
+}
+
+PacketSocketClient::~PacketSocketClient ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+PacketSocketClient::SetRemote (PacketSocketAddress addr)
+{
+  NS_LOG_FUNCTION (this << addr);
+  m_peerAddress = addr;
+  m_peerAddressSet = true;
+}
+
+void
+PacketSocketClient::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+  Application::DoDispose ();
+}
+
+void
+PacketSocketClient::StartApplication (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT_MSG (m_peerAddressSet, "Peer address not set");
+
+  if (m_socket == 0)
+    {
+      TypeId tid = TypeId::LookupByName ("ns3::PacketSocketFactory");
+      m_socket = Socket::CreateSocket (GetNode (), tid);
+
+      m_socket->Bind (m_peerAddress);
+      m_socket->Connect (m_peerAddress);
+    }
+
+  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
+  m_sendEvent = Simulator::ScheduleNow (&PacketSocketClient::Send, this);
+}
+
+void
+PacketSocketClient::StopApplication (void)
+{
+  NS_LOG_FUNCTION (this);
+  Simulator::Cancel (m_sendEvent);
+  m_socket->Close ();
+}
+
+void
+PacketSocketClient::Send (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT (m_sendEvent.IsExpired ());
+
+  Ptr<Packet> p = Create<Packet> (m_size);
+
+  std::stringstream peerAddressStringStream;
+  peerAddressStringStream << PacketSocketAddress::ConvertFrom (m_peerAddress);
+
+  if ((m_socket->Send (p)) >= 0)
+    {
+      NS_LOG_INFO ("TraceDelay TX " << m_size << " bytes to "
+                                    << peerAddressStringStream.str () << " Uid: "
+                                    << p->GetUid () << " Time: "
+                                    << (Simulator::Now ()).GetSeconds ());
+    }
+  else
+    {
+      NS_LOG_INFO ("Error while sending " << m_size << " bytes to "
+                                          << peerAddressStringStream.str ());
+    }
+  m_sent++;
+
+  if ((m_sent < m_maxPackets) || (m_maxPackets == 0))
+    {
+      m_txTrace (p, m_peerAddress);
+      m_sendEvent = Simulator::Schedule (m_interval, &PacketSocketClient::Send, this);
+    }
+}
+
+} // Namespace ns3
diff -Naur ns-3.20/src/network/utils/packet-socket-client.h ns-3.21/src/network/utils/packet-socket-client.h
--- ns-3.20/src/network/utils/packet-socket-client.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/utils/packet-socket-client.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,100 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#ifndef PACKET_SOCKET_CLIENT_H
+#define PACKET_SOCKET_CLIENT_H
+
+#include "ns3/application.h"
+#include "ns3/event-id.h"
+#include "ns3/ptr.h"
+#include "ns3/packet-socket-address.h"
+
+namespace ns3 {
+
+class Socket;
+class Packet;
+
+/**
+ * \ingroup socket
+ *
+ * \brief A simple client.
+ *
+ * Sends packets using PacketSocket. It does not require (or use) IP.
+ *
+ * Packets are sent as soon as PacketSocketClient::Start is called.
+ * The application has the same requirements as the PacketSocket for
+ * what concerns the underlying NetDevice and the Address scheme.
+ * It is meant to be used in ns-3 tests.
+ *
+ * The application will send `MaxPackets' packets, one every `Interval'
+ * time. Packet size (`PacketSize') can be configured.
+ * Provides a "Tx" Traced Callback (transmitted packets, source address).
+ *
+ * Note: packets larger than the NetDevice MTU will not be sent.
+ */
+class PacketSocketClient : public Application
+{
+public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  PacketSocketClient ();
+
+  virtual ~PacketSocketClient ();
+
+  /**
+   * \brief set the remote address and protocol to be used
+   * \param addr remote address
+   */
+  void SetRemote (PacketSocketAddress addr);
+
+protected:
+  virtual void DoDispose (void);
+
+private:
+
+  virtual void StartApplication (void);
+  virtual void StopApplication (void);
+
+  /**
+   * \brief Send a packet
+   */
+  void Send (void);
+
+  uint32_t m_maxPackets; //!< Maximum number of packets the application will send
+  Time m_interval;       //!< Packet inter-send time
+  uint32_t m_size;       //!< Size of the sent packet
+
+  uint32_t m_sent;       //!< Counter for sent packets
+  Ptr<Socket> m_socket;  //!< Socket
+  PacketSocketAddress m_peerAddress; //!< Remote peer address
+  bool m_peerAddressSet; //!< Sanity check
+  EventId m_sendEvent;   //!< Event to send the next packet
+
+  /// Traced Callback: sent packets, source address.
+  TracedCallback<Ptr<const Packet>, const Address &> m_txTrace;
+};
+
+} // namespace ns3
+
+#endif /* PACKET_SOCKET_CLIENT_H */
diff -Naur ns-3.20/src/network/utils/packet-socket-server.cc ns-3.21/src/network/utils/packet-socket-server.cc
--- ns-3.20/src/network/utils/packet-socket-server.cc	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/utils/packet-socket-server.cc	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,129 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#include "ns3/log.h"
+#include "ns3/nstime.h"
+#include "ns3/packet-socket-address.h"
+#include "ns3/packet-socket.h"
+#include "ns3/packet-socket-factory.h"
+#include "ns3/socket.h"
+#include "ns3/simulator.h"
+#include "ns3/socket-factory.h"
+#include "ns3/packet.h"
+#include "ns3/uinteger.h"
+#include "ns3/abort.h"
+#include "packet-socket-server.h"
+#include <cstdlib>
+#include <cstdio>
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("PacketSocketServer");
+NS_OBJECT_ENSURE_REGISTERED (PacketSocketServer);
+
+TypeId
+PacketSocketServer::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::PacketSocketServer")
+    .SetParent<Application> ()
+    .AddConstructor<PacketSocketServer> ()
+    .AddTraceSource ("Rx", "A packet has been received",
+                     MakeTraceSourceAccessor (&PacketSocketServer::m_rxTrace))
+  ;
+  return tid;
+}
+
+PacketSocketServer::PacketSocketServer ()
+{
+  NS_LOG_FUNCTION (this);
+  m_pktRx = 0;
+  m_bytesRx = 0;
+  m_socket = 0;
+  m_localAddressSet = false;
+}
+
+PacketSocketServer::~PacketSocketServer ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+PacketSocketServer::DoDispose (void)
+{
+  NS_LOG_FUNCTION (this);
+  Application::DoDispose ();
+}
+
+void
+PacketSocketServer::StartApplication (void)
+{
+  NS_LOG_FUNCTION (this);
+  NS_ASSERT_MSG (m_localAddressSet, "Local address not set");
+
+  if (m_socket == 0)
+    {
+      TypeId tid = TypeId::LookupByName ("ns3::PacketSocketFactory");
+      m_socket = Socket::CreateSocket (GetNode (), tid);
+      m_socket->Bind (m_localAddress);
+    }
+
+  m_socket->SetRecvCallback (MakeCallback (&PacketSocketServer::HandleRead, this));
+}
+
+void
+PacketSocketServer::StopApplication (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
+  m_socket->Close ();
+}
+
+void
+PacketSocketServer::SetLocal (PacketSocketAddress addr)
+{
+  NS_LOG_FUNCTION (this << addr);
+  m_localAddress = addr;
+  m_localAddressSet = true;
+}
+
+void
+PacketSocketServer::HandleRead (Ptr<Socket> socket)
+{
+  NS_LOG_FUNCTION (this << socket);
+  Ptr<Packet> packet;
+  Address from;
+  while ((packet = socket->RecvFrom (from)))
+    {
+      if (PacketSocketAddress::IsMatchingType (from))
+        {
+          m_pktRx ++;
+          m_bytesRx += packet->GetSize ();
+          NS_LOG_INFO ("At time " << Simulator::Now ().GetSeconds ()
+                       << "s packet sink received "
+                       << packet->GetSize () << " bytes from "
+                       << PacketSocketAddress::ConvertFrom (from)
+                       << " total Rx " << m_pktRx << " packets"
+                       << " and " << m_bytesRx << " bytes");
+          m_rxTrace (packet, from);
+        }
+    }
+}
+
+} // Namespace ns3
diff -Naur ns-3.20/src/network/utils/packet-socket-server.h ns-3.21/src/network/utils/packet-socket-server.h
--- ns-3.20/src/network/utils/packet-socket-server.h	1969-12-31 16:00:00.000000000 -0800
+++ ns-3.21/src/network/utils/packet-socket-server.h	2014-09-17 20:03:14.000000000 -0700
@@ -0,0 +1,92 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
+ */
+
+#ifndef PACKET_SOCKET_SERVER_H
+#define PACKET_SOCKET_SERVER_H
+
+#include "ns3/application.h"
+#include "ns3/event-id.h"
+#include "ns3/ptr.h"
+#include "ns3/packet-socket-address.h"
+
+namespace ns3 {
+
+class Socket;
+class Packet;
+
+/**
+ * \ingroup socket
+ *
+ * \brief A server using PacketSocket.
+ *
+ * Receives packets using PacketSocket. It does not require (or use) IP.
+ * The application has the same requirements as the PacketSocket for
+ * what concerns the underlying NetDevice and the Address scheme.
+ * It is meant to be used in ns-3 tests.
+ *
+ * Provides a "Rx" Traced Callback (received packets, source address)
+ */
+class PacketSocketServer : public Application
+{
+public:
+  /**
+   * \brief Get the type ID.
+   * \return the object TypeId
+   */
+  static TypeId GetTypeId (void);
+
+  PacketSocketServer ();
+
+  virtual ~PacketSocketServer ();
+
+  /**
+   * \brief set the local address and protocol to be used
+   * \param addr local address
+   */
+  void SetLocal (PacketSocketAddress addr);
+
+protected:
+  virtual void DoDispose (void);
+
+private:
+
+  virtual void StartApplication (void);
+  virtual void StopApplication (void);
+
+  /**
+   * \brief Handle a packet received by the application
+   * \param socket the receiving socket
+   */
+  void HandleRead (Ptr<Socket> socket);
+
+  uint32_t m_pktRx;    //!< The number of received packets
+  uint32_t m_bytesRx;  //!< Total bytes received
+
+  Ptr<Socket> m_socket; //!< Socket
+  PacketSocketAddress m_localAddress; //!< Local address
+  bool m_localAddressSet; //!< Sanity check
+
+  /// Traced Callback: received packets, source address.
+  TracedCallback<Ptr<const Packet>, const Address &> m_rxTrace;
+};
+
+} // namespace ns3
+
+#endif /* PACKET_SOCKET_SERVER_H */
diff -Naur ns-3.20/src/network/utils/simple-channel.cc ns-3.21/src/network/utils/simple-channel.cc
--- ns-3.20/src/network/utils/simple-channel.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/utils/simple-channel.cc	2014-09-17 20:03:14.000000000 -0700
@@ -36,6 +36,10 @@
   static TypeId tid = TypeId ("ns3::SimpleChannel")
     .SetParent<Channel> ()
     .AddConstructor<SimpleChannel> ()
+    .AddAttribute ("Delay", "Transmission delay through the channel",
+                   TimeValue (Seconds (0)),
+                   MakeTimeAccessor (&SimpleChannel::m_delay),
+                   MakeTimeChecker ())
   ;
   return tid;
 }
@@ -58,7 +62,7 @@
         {
           continue;
         }
-      Simulator::ScheduleWithContext (tmp->GetNode ()->GetId (), Seconds (0),
+      Simulator::ScheduleWithContext (tmp->GetNode ()->GetId (), m_delay,
                                       &SimpleNetDevice::Receive, tmp, p->Copy (), protocol, to, from);
     }
 }
diff -Naur ns-3.20/src/network/utils/simple-channel.h ns-3.21/src/network/utils/simple-channel.h
--- ns-3.20/src/network/utils/simple-channel.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/utils/simple-channel.h	2014-09-17 20:03:14.000000000 -0700
@@ -21,6 +21,7 @@
 #define SIMPLE_CHANNEL_H
 
 #include "ns3/channel.h"
+#include "ns3/nstime.h"
 #include "mac48-address.h"
 #include <vector>
 
@@ -31,7 +32,15 @@
 
 /**
  * \ingroup channel
- * \brief A simple channel, for simple things and testing
+ * \brief A simple channel, for simple things and testing.
+ *
+ * This channel doesn't check for packet collisions and it
+ * does not introduce any error.
+ * By default, it does not add any delay to the packets.
+ * Furthermore, it assumes that the associated NetDevices
+ * are using 48-bit MAC addresses.
+ *
+ * This channel is meant to be used by ns3::SimpleNetDevices.
  */
 class SimpleChannel : public Channel
 {
@@ -70,6 +79,7 @@
   virtual Ptr<NetDevice> GetDevice (uint32_t i) const;
 
 private:
+  Time m_delay; //!< The assigned speed-of-light delay of the channel
   std::vector<Ptr<SimpleNetDevice> > m_devices; //!< devices connected by the channel
 };
 
diff -Naur ns-3.20/src/network/utils/simple-net-device.cc ns-3.21/src/network/utils/simple-net-device.cc
--- ns-3.20/src/network/utils/simple-net-device.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/utils/simple-net-device.cc	2014-09-17 20:03:14.000000000 -0700
@@ -25,11 +25,132 @@
 #include "ns3/pointer.h"
 #include "ns3/error-model.h"
 #include "ns3/trace-source-accessor.h"
+#include "ns3/boolean.h"
+#include "ns3/tag.h"
+#include "ns3/simulator.h"
+#include "ns3/drop-tail-queue.h"
 
 NS_LOG_COMPONENT_DEFINE ("SimpleNetDevice");
 
 namespace ns3 {
 
+/**
+ * \brief Internal tag to store source, destination and protocol of each packet.
+ */
+class SimpleTag : public Tag {
+public:
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer i) const;
+  virtual void Deserialize (TagBuffer i);
+
+  void SetSrc (Mac48Address src);
+  Mac48Address GetSrc (void) const;
+
+  void SetDst (Mac48Address dst);
+  Mac48Address GetDst (void) const;
+
+  void SetProto (uint16_t proto);
+  uint16_t GetProto (void) const;
+
+  void Print (std::ostream &os) const;
+
+private:
+  Mac48Address m_src;
+  Mac48Address m_dst;
+  uint16_t m_protocolNumber;
+};
+
+
+NS_OBJECT_ENSURE_REGISTERED (SimpleTag);
+
+TypeId
+SimpleTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("SimpleTag")
+    .SetParent<Tag> ()
+    .AddConstructor<SimpleTag> ()
+  ;
+  return tid;
+}
+TypeId
+SimpleTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+uint32_t
+SimpleTag::GetSerializedSize (void) const
+{
+  return 8+8+2;
+}
+void
+SimpleTag::Serialize (TagBuffer i) const
+{
+  uint8_t mac[6];
+  m_src.CopyTo (mac);
+  i.Write (mac, 6);
+  m_dst.CopyTo (mac);
+  i.Write (mac, 6);
+  i.WriteU16 (m_protocolNumber);
+}
+void
+SimpleTag::Deserialize (TagBuffer i)
+{
+  uint8_t mac[6];
+  i.Read (mac, 6);
+  m_src.CopyFrom (mac);
+  i.Read (mac, 6);
+  m_dst.CopyFrom (mac);
+  m_protocolNumber = i.ReadU16 ();
+}
+
+void
+SimpleTag::SetSrc (Mac48Address src)
+{
+  m_src = src;
+}
+
+Mac48Address
+SimpleTag::GetSrc (void) const
+{
+  return m_src;
+}
+
+void
+SimpleTag::SetDst (Mac48Address dst)
+{
+  m_dst = dst;
+}
+
+Mac48Address
+SimpleTag::GetDst (void) const
+{
+  return m_dst;
+}
+
+void
+SimpleTag::SetProto (uint16_t proto)
+{
+  m_protocolNumber = proto;
+}
+
+uint16_t
+SimpleTag::GetProto (void) const
+{
+  return m_protocolNumber;
+}
+
+void
+SimpleTag::Print (std::ostream &os) const
+{
+  os << "src=" << m_src << " dst=" << m_dst << " proto=" << m_protocolNumber;
+}
+
+
+
 NS_OBJECT_ENSURE_REGISTERED (SimpleNetDevice);
 
 TypeId 
@@ -43,6 +164,21 @@
                    PointerValue (),
                    MakePointerAccessor (&SimpleNetDevice::m_receiveErrorModel),
                    MakePointerChecker<ErrorModel> ())
+    .AddAttribute ("PointToPointMode",
+                   "The device is configured in Point to Point mode",
+                   BooleanValue (false),
+                   MakeBooleanAccessor (&SimpleNetDevice::m_pointToPointMode),
+                   MakeBooleanChecker ())
+    .AddAttribute ("TxQueue",
+                   "A queue to use as the transmit queue in the device.",
+                   PointerValue (CreateObject<DropTailQueue> ()),
+                   MakePointerAccessor (&SimpleNetDevice::m_queue),
+                   MakePointerChecker<Queue> ())
+    .AddAttribute ("DataRate",
+                   "The default data rate for point to point links. Zero means infinite",
+                   DataRateValue (DataRate ("0b/s")),
+                   MakeDataRateAccessor (&SimpleNetDevice::m_bps),
+                   MakeDataRateChecker ())
     .AddTraceSource ("PhyRxDrop",
                      "Trace source indicating a packet has been dropped by the device during reception",
                      MakeTraceSourceAccessor (&SimpleNetDevice::m_phyRxDropTrace))
@@ -54,7 +190,8 @@
   : m_channel (0),
     m_node (0),
     m_mtu (0xffff),
-    m_ifIndex (0)
+    m_ifIndex (0),
+    m_linkUp (false)
 {
   NS_LOG_FUNCTION (this);
 }
@@ -78,7 +215,7 @@
     }
   else if (to.IsBroadcast ())
     {
-      packetType = NetDevice::PACKET_HOST;
+      packetType = NetDevice::PACKET_BROADCAST;
     }
   else if (to.IsGroup ())
     {
@@ -88,7 +225,12 @@
     {
       packetType = NetDevice::PACKET_OTHERHOST;
     }
-  m_rxCallback (this, packet, protocol, from);
+
+  if (packetType != NetDevice::PACKET_OTHERHOST)
+    {
+      m_rxCallback (this, packet, protocol, from);
+    }
+
   if (!m_promiscCallback.IsNull ())
     {
       m_promiscCallback (this, packet, protocol, from, to, packetType);
@@ -101,6 +243,22 @@
   NS_LOG_FUNCTION (this << channel);
   m_channel = channel;
   m_channel->Add (this);
+  m_linkUp = true;
+  m_linkChangeCallbacks ();
+}
+
+Ptr<Queue>
+SimpleNetDevice::GetQueue () const
+{
+  NS_LOG_FUNCTION (this);
+  return m_queue;
+}
+
+void
+SimpleNetDevice::SetQueue (Ptr<Queue> q)
+{
+  NS_LOG_FUNCTION (this << q);
+  m_queue = q;
 }
 
 void
@@ -160,17 +318,22 @@
 SimpleNetDevice::IsLinkUp (void) const
 {
   NS_LOG_FUNCTION (this);
-  return true;
+  return m_linkUp;
 }
 void 
 SimpleNetDevice::AddLinkChangeCallback (Callback<void> callback)
 {
  NS_LOG_FUNCTION (this << &callback);
+ m_linkChangeCallbacks.ConnectWithoutContext (callback);
 }
 bool 
 SimpleNetDevice::IsBroadcast (void) const
 {
   NS_LOG_FUNCTION (this);
+  if (m_pointToPointMode)
+    {
+      return false;
+    }
   return true;
 }
 Address
@@ -183,7 +346,11 @@
 SimpleNetDevice::IsMulticast (void) const
 {
   NS_LOG_FUNCTION (this);
-  return false;
+  if (m_pointToPointMode)
+    {
+      return false;
+    }
+  return true;
 }
 Address 
 SimpleNetDevice::GetMulticast (Ipv4Address multicastGroup) const
@@ -202,6 +369,10 @@
 SimpleNetDevice::IsPointToPoint (void) const
 {
   NS_LOG_FUNCTION (this);
+  if (m_pointToPointMode)
+    {
+      return true;
+    }
   return false;
 }
 
@@ -216,20 +387,87 @@
 SimpleNetDevice::Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber)
 {
   NS_LOG_FUNCTION (this << packet << dest << protocolNumber);
-  Mac48Address to = Mac48Address::ConvertFrom (dest);
-  m_channel->Send (packet, protocolNumber, to, m_address, this);
-  return true;
+
+  return SendFrom (packet, m_address, dest, protocolNumber);
 }
-bool 
-SimpleNetDevice::SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
+
+bool
+SimpleNetDevice::SendFrom (Ptr<Packet> p, const Address& source, const Address& dest, uint16_t protocolNumber)
 {
-  NS_LOG_FUNCTION (this << packet << source << dest << protocolNumber);
+  NS_LOG_FUNCTION (this << p << source << dest << protocolNumber);
+  if (p->GetSize () > GetMtu ())
+    {
+      return false;
+    }
+  Ptr<Packet> packet = p->Copy ();
+
   Mac48Address to = Mac48Address::ConvertFrom (dest);
   Mac48Address from = Mac48Address::ConvertFrom (source);
+
+  SimpleTag tag;
+  tag.SetSrc (from);
+  tag.SetDst (to);
+  tag.SetProto (protocolNumber);
+
+  p->AddPacketTag (tag);
+
+  if (m_queue->Enqueue (p))
+    {
+      if (m_queue->GetNPackets () == 1)
+        {
+          p = m_queue->Dequeue ();
+          p->RemovePacketTag (tag);
+          Time txTime = Time (0);
+          if (m_bps > DataRate (0))
+            {
+              txTime = Seconds (m_bps.CalculateTxTime (packet->GetSize ()));
+            }
+          m_channel->Send (p, protocolNumber, to, from, this);
+          TransmitCompleteEvent = Simulator::Schedule (txTime, &SimpleNetDevice::TransmitComplete, this);
+        }
+      return true;
+    }
+
+
   m_channel->Send (packet, protocolNumber, to, from, this);
   return true;
 }
 
+
+void
+SimpleNetDevice::TransmitComplete ()
+{
+  NS_LOG_FUNCTION (this);
+
+  if (m_queue->GetNPackets () == 0)
+    {
+      return;
+    }
+
+  Ptr<Packet> packet = m_queue->Dequeue ();
+
+  SimpleTag tag;
+  packet->RemovePacketTag (tag);
+
+  Mac48Address src = tag.GetSrc ();
+  Mac48Address dst = tag.GetDst ();
+  uint16_t proto = tag.GetProto ();
+
+  m_channel->Send (packet, proto, dst, src, this);
+
+  if (m_queue->GetNPackets ())
+    {
+      Time txTime = Time (0);
+      if (m_bps > DataRate (0))
+        {
+          txTime = Seconds (m_bps.CalculateTxTime (packet->GetSize ()));
+        }
+      TransmitCompleteEvent = Simulator::Schedule (txTime, &SimpleNetDevice::TransmitComplete, this);
+    }
+
+  return;
+}
+
 Ptr<Node> 
 SimpleNetDevice::GetNode (void) const
 {
@@ -246,7 +484,11 @@
 SimpleNetDevice::NeedsArp (void) const
 {
   NS_LOG_FUNCTION (this);
-  return false;
+  if (m_pointToPointMode)
+    {
+      return false;
+    }
+  return true;
 }
 void 
 SimpleNetDevice::SetReceiveCallback (NetDevice::ReceiveCallback cb)
@@ -262,6 +504,11 @@
   m_channel = 0;
   m_node = 0;
   m_receiveErrorModel = 0;
+  m_queue->DequeueAll ();
+  if (TransmitCompleteEvent.IsRunning ())
+    {
+      TransmitCompleteEvent.Cancel ();
+    }
   NetDevice::DoDispose ();
 }
 
diff -Naur ns-3.20/src/network/utils/simple-net-device.h ns-3.21/src/network/utils/simple-net-device.h
--- ns-3.20/src/network/utils/simple-net-device.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/utils/simple-net-device.h	2014-09-17 20:03:14.000000000 -0700
@@ -20,11 +20,17 @@
 #ifndef SIMPLE_NET_DEVICE_H
 #define SIMPLE_NET_DEVICE_H
 
-#include "ns3/net-device.h"
-#include "mac48-address.h"
 #include <stdint.h>
 #include <string>
+
 #include "ns3/traced-callback.h"
+#include "ns3/net-device.h"
+#include "ns3/queue.h"
+#include "ns3/data-rate.h"
+#include "ns3/data-rate.h"
+#include "ns3/event-id.h"
+
+#include "mac48-address.h"
 
 namespace ns3 {
 
@@ -35,11 +41,15 @@
 /**
  * \ingroup netdevice
  *
- * This device does not have a helper and assumes 48-bit mac addressing;
- * the default address assigned to each device is zero, so you must 
- * assign a real address to use it.  There is also the possibility to
+ * This device assumes 48-bit mac addressing; there is also the possibility to
  * add an ErrorModel if you want to force losses on the device.
  * 
+ * The device can be installed on a node through the SimpleNetDeviceHelper.
+ * In case of manual creation, the user is responsible for assigning an unique
+ * address to the device.
+ *
+ * By default the device is in Broadcast mode, with infinite bandwidth.
+ *
  * \brief simple net device for simple things and testing
  */
 class SimpleNetDevice : public NetDevice
@@ -65,7 +75,6 @@
   void Receive (Ptr<Packet> packet, uint16_t protocol, Mac48Address to, Mac48Address from);
   
   /**
-   *
    * Attach a channel to this net device.  This will be the 
    * channel the net device sends on
    * 
@@ -75,6 +84,20 @@
   void SetChannel (Ptr<SimpleChannel> channel);
 
   /**
+   * Attach a queue to the SimpleNetDevice.
+   *
+   * \param queue Ptr to the new queue.
+   */
+  void SetQueue (Ptr<Queue> queue);
+
+  /**
+   * Get a copy of the attached Queue.
+   *
+   * \returns Ptr to the queue.
+   */
+  Ptr<Queue> GetQueue (void) const;
+
+  /**
    * Attach a receive ErrorModel to the SimpleNetDevice.
    *
    * The SimpleNetDevice may optionally include an ErrorModel in
@@ -124,6 +147,7 @@
   uint32_t m_ifIndex; //!< Interface index
   Mac48Address m_address; //!< MAC address
   Ptr<ErrorModel> m_receiveErrorModel; //!< Receive error model.
+
   /**
    * The trace source fired when the phy layer drops a packet it has received
    * due to the error model being active.  Although SimpleNetDevice doesn't 
@@ -133,6 +157,29 @@
    * \see class CallBackTraceSource
    */
   TracedCallback<Ptr<const Packet> > m_phyRxDropTrace;
+
+  /**
+   * The TransmitComplete method is used internally to finish the process
+   * of sending a packet out on the channel.
+   */
+  void TransmitComplete (void);
+
+  bool m_linkUp; //!< Flag indicating whether or not the link is up
+
+  /**
+   * Flag indicating whether or not the NetDevice is a Point to Point model.
+   * Enabling this will disable Broadcast and Arp.
+   */
+  bool m_pointToPointMode;
+
+  Ptr<Queue> m_queue; //!< The Queue for outgoing packets.
+  DataRate m_bps; //!< The device nominal Data rate. Zero means infinite
+  EventId TransmitCompleteEvent; //!< the Tx Complete event
+
+  /**
+   * List of callbacks to fire if the link changes state (up or down).
+   */
+  TracedCallback<> m_linkChangeCallbacks;
 };
 
 } // namespace ns3
diff -Naur ns-3.20/src/network/wscript ns-3.21/src/network/wscript
--- ns-3.20/src/network/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/network/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -53,6 +53,8 @@
         'utils/red-queue.cc',
         'utils/simple-channel.cc',
         'utils/simple-net-device.cc',
+        'utils/packet-socket-client.cc',
+        'utils/packet-socket-server.cc',
         'utils/packet-data-calculators.cc',
         'utils/packet-probe.cc',
         'helper/application-container.cc',
@@ -61,6 +63,7 @@
         'helper/packet-socket-helper.cc',
         'helper/trace-helper.cc',
         'helper/delay-jitter-estimation.cc',
+        'helper/simple-net-device-helper.cc',
         ]
 
     network_test = bld.create_ns3_module_test_library('network')
@@ -75,6 +78,7 @@
         'test/pcap-file-test-suite.cc',
         'test/red-queue-test-suite.cc',
         'test/sequence-number-test-suite.cc',
+        'test/packet-socket-apps-test-suite.cc',
         ]
 
     headers = bld(features='ns3header')
@@ -134,6 +138,8 @@
         'utils/sgi-hashmap.h',
         'utils/simple-channel.h',
         'utils/simple-net-device.h',
+        'utils/packet-socket-client.h',
+        'utils/packet-socket-server.h',
         'utils/pcap-test.h',
         'utils/packet-data-calculators.h',
         'utils/packet-probe.h',
@@ -143,6 +149,7 @@
         'helper/packet-socket-helper.h',
         'helper/trace-helper.h',
         'helper/delay-jitter-estimation.h',
+        'helper/simple-net-device-helper.h',
         ]
 
     if (bld.env['ENABLE_EXAMPLES']):
diff -Naur ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py ns-3.21/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/nix-vector-routing/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3694,10 +3694,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3708,25 +3708,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3843,20 +3843,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py ns-3.21/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/nix-vector-routing/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3694,10 +3694,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3708,25 +3708,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3843,20 +3843,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/olsr/bindings/modulegen__gcc_ILP32.py ns-3.21/src/olsr/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/olsr/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -4003,10 +4003,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4017,25 +4017,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4152,20 +4152,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/olsr/bindings/modulegen__gcc_LP64.py ns-3.21/src/olsr/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/olsr/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -4003,10 +4003,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4017,25 +4017,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4152,20 +4152,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/olsr/model/olsr-routing-protocol.cc ns-3.21/src/olsr/model/olsr-routing-protocol.cc
--- ns-3.20/src/olsr/model/olsr-routing-protocol.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/model/olsr-routing-protocol.cc	2014-09-17 20:03:14.000000000 -0700
@@ -2425,9 +2425,8 @@
                 << "s: OLSR Node " << m_mainAddress
                 << " LinkTuple " << tuple << " REMOVED.");
 
-  m_state.EraseLinkTuple (tuple);
   m_state.EraseNeighborTuple (GetMainAddress (tuple.neighborIfaceAddr));
-
+  m_state.EraseLinkTuple (tuple);
 }
 
 ///
diff -Naur ns-3.20/src/olsr/test/bug780-0-0.pcap ns-3.21/src/olsr/test/bug780-0-0.pcap
--- ns-3.20/src/olsr/test/bug780-0-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/test/bug780-0-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -282,20 +282,19 @@
  $     
     
   
-    2     @   @                          
+    2     @   @                          
 
-    2   S  @   @   :                          
+    2   k  @   @   :                          
      
-    2   ]        Ԁ           2   +  x   x   :                   E  T    @  
+    2   u        Ԁ           2   C  x   x   :                   E  T    @  
 
-                                                                   2           Ԁ           2   7  @   @                          
+                                                                   2           Ԁ           2   0  @   @                          
 
-    2   8  @   @   :                          
+    2   ?0  @   @   :                          
      
-    2   
-<        Ԁ           2   tB  x   x   :                   E  T    @  
+    2   :4        Ԁ           2   :  x   x   :                   E  T    @  
 
-                                                                    2   ~B        Ԁ           2   B |   |                    E  X   @  
+                                                                    2   :        Ԁ           2   B |   |                    E  X   @  
 
  D   <  
   !   
@@ -1322,25 +1321,25 @@
  ,   $ ?  
   ?    
   
-       @  @   @                          
+         @   @                          
 
-       $  @   @   :                           
+       k  @   @   :                           
      
-       $        Ԁ              '  x   x   :                	    E  T M  @  
+       u        Ԁ                x   x   :                	    E  T M  @  
 
-      M                                                               [-        Ԁ              >  @   @                          
+      M                                                                       Ԁ              >  @   @                          
 
        B        Ԁ              dH  x   x   :                    E  T M  ?  
 
-      M                                                               Q  @   @   :               0           
+      M                                                               ?q  @   @   :               0           
      
-       ~[        Ԁ              l  @   @               @           
+       z        Ԁ                @   @               @           
 
-       l  @   @   :               	           
+       Η  @   @   :               	           
      
-       p        Ԁ              u  x   x   :               P    E  T I  ?  
+       ɛ        Ԁ              ߠ  x   x   :               P    E  T I  ?  
 
-       M                                                               u        Ԁ                  x   x   :                	    E  T N  @  
+       M                                                                       Ԁ                  x   x   :                	    E  T N  @  
 
       N                                                                       Ԁ              m
   x   x   :               `    E  T N  ?  
diff -Naur ns-3.20/src/olsr/test/bug780-1-0.pcap ns-3.21/src/olsr/test/bug780-1-0.pcap
--- ns-3.20/src/olsr/test/bug780-1-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/test/bug780-1-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -408,19 +408,20 @@
  $     
     
   
-    2   `  @   @                          
+    2   x  @   @                          
 
-    2     @   @   :                          
+    2     @   @   :                          
      
-    2           Ԁ           2     x   x   :                   E  T    @  
+    2           Ԁ           2     x   x   :                   E  T    @  
 
-                                                                   2           Ԁ           2   5  @   @                          
+                                                                   2           Ԁ           2   L-  @   @                          
 
-    2   :  @   @   :                          
+    2    3  @   @   :                          
      
-    2   :        Ԁ           2   =  x   x   :                   E  T    @  
+    2   
+3        Ԁ           2   $6  x   x   :                   E  T    @  
 
-                                                                    2   C        Ԁ           2   > |   |                    E  X   @  
+                                                                    2   ;        Ԁ           2   > |   |                    E  X   @  
 
  D   <  
   !   
@@ -1318,23 +1319,23 @@
  ,   $ G  
   O    
   
-       $  @   @   :                           
+       k  @   @   :                           
      
-       Z-        Ԁ              >  @   @                          
+               Ԁ              >  @   @                          
 
        >  @   @   :               0	           
      
        B        Ԁ              cH  x   x   :                    E  T M  ?  
 
-      M                                                               mH        Ԁ              KL  @   @               @	           
+      M                                                               mH        Ԁ              k  @   @               @	           
 
-       Q  @   @   :               0           
+       >q  @   @   :               0           
      
-       R        Ԁ              U  x   x   :               P	    E  T I  @  
+       Hq        Ԁ              u  x   x   :               P	    E  T I  @  
 
-       M                                                               }[        Ԁ              l  @   @               @           
+       M                                                               z        Ԁ                @   @               @           
 
-       p        Ԁ              u  x   x   :               P    E  T I  ?  
+       ɛ        Ԁ              ߠ  x   x   :               P    E  T I  ?  
 
        M                                                                       Ԁ              m
   x   x   :               `    E  T N  ?  
diff -Naur ns-3.20/src/olsr/test/bug780-2-0.pcap ns-3.21/src/olsr/test/bug780-2-0.pcap
--- ns-3.20/src/olsr/test/bug780-2-0.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/test/bug780-2-0.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -282,12 +282,11 @@
  $     
     
   
-    2   S  @   @   :                          
+    2   k  @   @   :                          
      
-    2           Ԁ           2   7  @   @                          
+    2           Ԁ           2   0  @   @                          
 
-    2   
-<        Ԁ           2   tB  x   x   :                   E  T    @  
+    2   :4        Ԁ           2   :  x   x   :                   E  T    @  
 
                                                                     2   B |   |                    E  X   @  
 
@@ -1203,31 +1202,31 @@
  ,   $ G  
   O    
   
-        "  @   @                          
+       x  @   @                          
 
-       2"  @   @   :                           
+         @   @   :                           
      
-       .&        Ԁ               ,  x   x   :                	    E  T M  @  
+               Ԁ                x   x   :                	    E  T M  @  
 
-      M                                                               *,        Ԁ              ;  @   @                          
+      M                                                                       Ԁ              ;  @   @                          
 
        sA  @   @   :               0	           
      
        }A        Ԁ              C  x   x   :                    E  T M  ?  
 
-      M                                                               I        Ԁ              O  @   @               @	           
+      M                                                               I        Ԁ              Ln  @   @               @	           
 
-       >O  @   @   :               0           
+       ~n  @   @   :               0           
      
-       9S        Ԁ              CZ  x   x   :               P	    E  T I  @  
+       yr        Ԁ              y  x   x   :               P	    E  T I  @  
 
-       M                                                               MZ        Ԁ              i  @   @               @           
+       M                                                               y        Ԁ              ۔  @   @               @           
 
-       o  @   @   :               	           
+         @   @   :               	           
      
-       o        Ԁ              fq  x   x   :               P    E  T I  ?  
+               Ԁ              ^  x   x   :               P    E  T I  ?  
 
-       M                                                               "w        Ԁ                x   x   :                	    E  T N  @  
+       M                                                                       Ԁ                x   x   :                	    E  T N  @  
 
       N                                                                       Ԁ                x   x   :               `    E  T N  ?  
 
diff -Naur ns-3.20/src/olsr/test/bug780-test.cc ns-3.21/src/olsr/test/bug780-test.cc
--- ns-3.20/src/olsr/test/bug780-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/test/bug780-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -15,6 +15,12 @@
  *
  */
 
+// OLSR was observed to not converge in simple 3-nodes varying topology.
+// https://www.nsnam.org/bugzilla/show_bug.cgi?id=780
+// tcpdump -r bug780-0-0.pcap -nn -tt icmp | wc  
+// should show about 395 packets; there is a ping outage from time
+// 123-127 due to the mobility.
+
 #include <fstream>
 #include <iostream>
 
@@ -127,7 +133,7 @@
   // Assign 6 streams per Wifi device
   NS_TEST_ASSERT_MSG_EQ (streamsUsed, (adhocDevices.GetN () * 6), "Stream assignment mismatch");
   streamsUsed += wifiChannel.AssignStreams (chan, streamsUsed);
-  // Assign 0 streams per channel for this configuration 
+  // Assign 0 additional streams per channel for this configuration 
   NS_TEST_ASSERT_MSG_EQ (streamsUsed, (adhocDevices.GetN () * 6), "Stream assignment mismatch");
 
   OlsrHelper olsr;
@@ -135,8 +141,12 @@
   InternetStackHelper internet;
   internet.SetRoutingHelper (olsr);
   internet.Install (adhocNodes);
+  // Assign 3 streams per node to internet stack for this configuration
+  streamsUsed += internet.AssignStreams (adhocNodes, streamsUsed);
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, (adhocDevices.GetN () * 6) + (adhocNodes.GetN () * 3), "Stream assignment mismatch");
+  // Olsr uses one additional stream per wifi device for this configuration
   streamsUsed += olsr.AssignStreams (adhocNodes, 0);
-  NS_TEST_ASSERT_MSG_EQ (streamsUsed, ((adhocDevices.GetN () * 6) + nWifis), "Should have assigned 3 streams");
+  NS_TEST_ASSERT_MSG_EQ (streamsUsed, ((adhocDevices.GetN () * 6) + (adhocDevices.GetN () * 3) + nWifis), "Should have assigned 3 streams");
 
   Ipv4AddressHelper addressAdhoc;
   addressAdhoc.SetBase ("10.1.1.0", "255.255.255.0");
diff -Naur ns-3.20/src/olsr/wscript ns-3.21/src/olsr/wscript
--- ns-3.20/src/olsr/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/olsr/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('olsr', ['internet', 'config-store', 'point-to-point', 'wifi', 'mobility', 'applications', 'csma'])
+    module = bld.create_ns3_module('olsr', ['internet', 'config-store', 'point-to-point', 'wifi', 'applications'])
     module.includes = '.'
     module.source = [
         'model/olsr-header.cc',
diff -Naur ns-3.20/src/openflow/model/openflow-switch-net-device.cc ns-3.21/src/openflow/model/openflow-switch-net-device.cc
--- ns-3.20/src/openflow/model/openflow-switch-net-device.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/openflow/model/openflow-switch-net-device.cc	2014-09-17 20:03:14.000000000 -0700
@@ -18,6 +18,8 @@
 #ifdef NS3_OPENFLOW
 
 #include "openflow-switch-net-device.h"
+#include "ns3/udp-l4-protocol.h"
+#include "ns3/tcp-l4-protocol.h"
 
 NS_LOG_COMPONENT_DEFINE ("OpenFlowSwitchNetDevice");
 
@@ -517,36 +519,40 @@
         }
     }
 
-  TcpHeader tcp_hd;
-  if (packet->PeekHeader (tcp_hd))
-    {
-      buffer->l4 = new tcp_header;
-      tcp_header* tcp_h = (tcp_header*)buffer->l4;
-      tcp_h->tcp_src = htons (tcp_hd.GetSourcePort ());         // Source Port
-      tcp_h->tcp_dst = htons (tcp_hd.GetDestinationPort ());    // Destination Port
-      tcp_h->tcp_seq = tcp_hd.GetSequenceNumber ().GetValue (); // Sequence Number
-      tcp_h->tcp_ack = tcp_hd.GetAckNumber ().GetValue ();      // ACK Number
-      tcp_h->tcp_ctl = TCP_FLAGS (tcp_hd.GetFlags ());  // Data Offset + Reserved + Flags
-      tcp_h->tcp_winsz = tcp_hd.GetWindowSize ();       // Window Size
-      tcp_h->tcp_urg = tcp_hd.GetUrgentPointer ();      // Urgent Pointer
-      tcp_h->tcp_csum = csum (&tcp_h, sizeof tcp_h);    // Header Checksum
-      NS_LOG_INFO ("Parsed TcpHeader");
-
-      l4_length = TCP_HEADER_LEN;
-    }
-  else
+  if (protocol == Ipv4L3Protocol::PROT_NUMBER)
     {
-      UdpHeader udp_hd;
-      if (packet->PeekHeader (udp_hd))
+      ip_header* ip_h = (ip_header*)buffer->l3;
+      if (ip_h->ip_proto == TcpL4Protocol::PROT_NUMBER)
         {
-          buffer->l4 = new udp_header;
-          udp_header* udp_h = (udp_header*)buffer->l4;
-          udp_h->udp_src = htons (udp_hd.GetSourcePort ());     // Source Port
-          udp_h->udp_dst = htons (udp_hd.GetDestinationPort ()); // Destination Port
-          udp_h->udp_len = htons (UDP_HEADER_LEN + packet->GetSize ());
+          TcpHeader tcp_hd;
+          if (packet->PeekHeader (tcp_hd))
+            {
+              buffer->l4 = new tcp_header;
+              tcp_header* tcp_h = (tcp_header*)buffer->l4;
+              tcp_h->tcp_src = htons (tcp_hd.GetSourcePort ());         // Source Port
+              tcp_h->tcp_dst = htons (tcp_hd.GetDestinationPort ());    // Destination Port
+              tcp_h->tcp_seq = tcp_hd.GetSequenceNumber ().GetValue (); // Sequence Number
+              tcp_h->tcp_ack = tcp_hd.GetAckNumber ().GetValue ();      // ACK Number
+              tcp_h->tcp_ctl = TCP_FLAGS (tcp_hd.GetFlags ());  // Data Offset + Reserved + Flags
+              tcp_h->tcp_winsz = tcp_hd.GetWindowSize ();       // Window Size
+              tcp_h->tcp_urg = tcp_hd.GetUrgentPointer ();      // Urgent Pointer
+              tcp_h->tcp_csum = csum (&tcp_h, sizeof tcp_h);    // Header Checksum
+              NS_LOG_INFO ("Parsed TcpHeader");
 
-          if (protocol == Ipv4L3Protocol::PROT_NUMBER)
+              l4_length = TCP_HEADER_LEN;
+            }
+        }
+      else if (ip_h->ip_proto == UdpL4Protocol::PROT_NUMBER)
+        {
+          UdpHeader udp_hd;
+          if (packet->PeekHeader (udp_hd))
             {
+              buffer->l4 = new udp_header;
+              udp_header* udp_h = (udp_header*)buffer->l4;
+              udp_h->udp_src = htons (udp_hd.GetSourcePort ());     // Source Port
+              udp_h->udp_dst = htons (udp_hd.GetDestinationPort ()); // Destination Port
+              udp_h->udp_len = htons (UDP_HEADER_LEN + packet->GetSize ());
+
               ip_header* ip_h = (ip_header*)buffer->l3;
               uint32_t udp_csum = csum_add32 (0, ip_h->ip_src);
               udp_csum = csum_add32 (udp_csum, ip_h->ip_dst);
@@ -554,14 +560,10 @@
               udp_csum = csum_add16 (udp_csum, udp_h->udp_len);
               udp_csum = csum_continue (udp_csum, udp_h, sizeof udp_h);
               udp_h->udp_csum = csum_finish (csum_continue (udp_csum, buffer->data, buffer->size)); // Header Checksum
-            }
-          else
-            {
-              udp_h->udp_csum = htons (0);
-            }
-          NS_LOG_INFO ("Parsed UdpHeader");
+              NS_LOG_INFO ("Parsed UdpHeader");
 
-          l4_length = UDP_HEADER_LEN;
+              l4_length = UDP_HEADER_LEN;
+            }
         }
     }
 
diff -Naur ns-3.20/src/point-to-point/bindings/modulegen__gcc_ILP32.py ns-3.21/src/point-to-point/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/point-to-point/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3307,10 +3307,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3321,25 +3321,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3456,20 +3456,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/point-to-point/bindings/modulegen__gcc_LP64.py ns-3.21/src/point-to-point/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/point-to-point/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3307,10 +3307,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3321,25 +3321,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3456,20 +3456,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/point-to-point/examples/main-attribute-value.cc ns-3.21/src/point-to-point/examples/main-attribute-value.cc
--- ns-3.20/src/point-to-point/examples/main-attribute-value.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point/examples/main-attribute-value.cc	2014-09-17 20:03:14.000000000 -0700
@@ -58,7 +58,10 @@
 
   // Allow the user to override any of the defaults and the above
   // SetDefaults() at run-time, via command-line arguments
+  // For example, via "--ns3::DropTailQueue::MaxPackets=80"
   CommandLine cmd;
+  // This provides yet another way to set the value from the command line:
+  cmd.AddValue ("maxPackets", "ns3::DropTailQueue::MaxPackets");
   cmd.Parse (argc, argv);
 
   // Now, we will create a few objects using the low-level API
diff -Naur ns-3.20/src/point-to-point/model/point-to-point-net-device.cc ns-3.21/src/point-to-point/model/point-to-point-net-device.cc
--- ns-3.20/src/point-to-point/model/point-to-point-net-device.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point/model/point-to-point-net-device.cc	2014-09-17 20:03:14.000000000 -0700
@@ -155,13 +155,13 @@
 
 PointToPointNetDevice::~PointToPointNetDevice ()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 }
 
 void
 PointToPointNetDevice::AddHeader (Ptr<Packet> p, uint16_t protocolNumber)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this << p << protocolNumber);
   PppHeader ppp;
   ppp.SetProtocol (EtherToPpp (protocolNumber));
   p->AddHeader (ppp);
@@ -170,7 +170,7 @@
 bool
 PointToPointNetDevice::ProcessHeader (Ptr<Packet> p, uint16_t& param)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this << p << param);
   PppHeader ppp;
   p->RemoveHeader (ppp);
   param = PppToEther (ppp.GetProtocol ());
@@ -180,7 +180,7 @@
 void
 PointToPointNetDevice::DoDispose ()
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   m_node = 0;
   m_channel = 0;
   m_receiveErrorModel = 0;
@@ -191,14 +191,14 @@
 void
 PointToPointNetDevice::SetDataRate (DataRate bps)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   m_bps = bps;
 }
 
 void
 PointToPointNetDevice::SetInterframeGap (Time t)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this << t.GetSeconds ());
   m_tInterframeGap = t;
 }
 
@@ -235,7 +235,7 @@
 void
 PointToPointNetDevice::TransmitComplete (void)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
 
   //
   // This function is called to when we're all done transmitting a packet.
@@ -353,13 +353,14 @@
 Ptr<Queue>
 PointToPointNetDevice::GetQueue (void) const
 { 
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   return m_queue;
 }
 
 void
 PointToPointNetDevice::NotifyLinkUp (void)
 {
+  NS_LOG_FUNCTION (this);
   m_linkUp = true;
   m_linkChangeCallbacks ();
 }
@@ -367,6 +368,7 @@
 void
 PointToPointNetDevice::SetIfIndex (const uint32_t index)
 {
+  NS_LOG_FUNCTION (this);
   m_ifIndex = index;
 }
 
@@ -391,6 +393,7 @@
 void
 PointToPointNetDevice::SetAddress (Address address)
 {
+  NS_LOG_FUNCTION (this << address);
   m_address = Mac48Address::ConvertFrom (address);
 }
 
@@ -403,12 +406,14 @@
 bool
 PointToPointNetDevice::IsLinkUp (void) const
 {
+  NS_LOG_FUNCTION (this);
   return m_linkUp;
 }
 
 void
 PointToPointNetDevice::AddLinkChangeCallback (Callback<void> callback)
 {
+  NS_LOG_FUNCTION (this);
   m_linkChangeCallbacks.ConnectWithoutContext (callback);
 }
 
@@ -419,6 +424,7 @@
 bool
 PointToPointNetDevice::IsBroadcast (void) const
 {
+  NS_LOG_FUNCTION (this);
   return true;
 }
 
@@ -430,18 +436,21 @@
 Address
 PointToPointNetDevice::GetBroadcast (void) const
 {
+  NS_LOG_FUNCTION (this);
   return Mac48Address ("ff:ff:ff:ff:ff:ff");
 }
 
 bool
 PointToPointNetDevice::IsMulticast (void) const
 {
+  NS_LOG_FUNCTION (this);
   return true;
 }
 
 Address
 PointToPointNetDevice::GetMulticast (Ipv4Address multicastGroup) const
 {
+  NS_LOG_FUNCTION (this);
   return Mac48Address ("01:00:5e:00:00:00");
 }
 
@@ -455,12 +464,14 @@
 bool
 PointToPointNetDevice::IsPointToPoint (void) const
 {
+  NS_LOG_FUNCTION (this);
   return true;
 }
 
 bool
 PointToPointNetDevice::IsBridge (void) const
 {
+  NS_LOG_FUNCTION (this);
   return false;
 }
 
@@ -470,7 +481,7 @@
   const Address &dest, 
   uint16_t protocolNumber)
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this << packet << dest << protocolNumber);
   NS_LOG_LOGIC ("p=" << packet << ", dest=" << &dest);
   NS_LOG_LOGIC ("UID is " << packet->GetUid ());
 
@@ -521,6 +532,7 @@
                                  const Address &dest, 
                                  uint16_t protocolNumber)
 {
+  NS_LOG_FUNCTION (this << packet << source << dest << protocolNumber);
   return false;
 }
 
@@ -533,12 +545,14 @@
 void
 PointToPointNetDevice::SetNode (Ptr<Node> node)
 {
+  NS_LOG_FUNCTION (this);
   m_node = node;
 }
 
 bool
 PointToPointNetDevice::NeedsArp (void) const
 {
+  NS_LOG_FUNCTION (this);
   return false;
 }
 
@@ -557,18 +571,21 @@
 bool
 PointToPointNetDevice::SupportsSendFrom (void) const
 {
+  NS_LOG_FUNCTION (this);
   return false;
 }
 
 void
 PointToPointNetDevice::DoMpiReceive (Ptr<Packet> p)
 {
+  NS_LOG_FUNCTION (this << p);
   Receive (p);
 }
 
 Address 
 PointToPointNetDevice::GetRemote (void) const
 {
+  NS_LOG_FUNCTION (this);
   NS_ASSERT (m_channel->GetNDevices () == 2);
   for (uint32_t i = 0; i < m_channel->GetNDevices (); ++i)
     {
@@ -594,13 +611,14 @@
 uint16_t
 PointToPointNetDevice::GetMtu (void) const
 {
-  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_FUNCTION (this);
   return m_mtu;
 }
 
 uint16_t
 PointToPointNetDevice::PppToEther (uint16_t proto)
 {
+  NS_LOG_FUNCTION_NOARGS();
   switch(proto)
     {
     case 0x0021: return 0x0800;   //IPv4
@@ -613,6 +631,7 @@
 uint16_t
 PointToPointNetDevice::EtherToPpp (uint16_t proto)
 {
+  NS_LOG_FUNCTION_NOARGS();
   switch(proto)
     {
     case 0x0800: return 0x0021;   //IPv4
diff -Naur ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py ns-3.21/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point-layout/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -4771,10 +4771,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4785,25 +4785,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4920,20 +4920,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py ns-3.21/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point-layout/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -4771,10 +4771,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4785,25 +4785,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4920,20 +4920,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/point-to-point-layout/wscript ns-3.21/src/point-to-point-layout/wscript
--- ns-3.20/src/point-to-point-layout/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/point-to-point-layout/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('point-to-point-layout', ['internet', 'point-to-point', 'mobility', 'netanim'])
+    module = bld.create_ns3_module('point-to-point-layout', ['internet', 'point-to-point', 'mobility'])
     module.includes = '.'
     module.source = [
         'model/point-to-point-dumbbell.cc',
diff -Naur ns-3.20/src/propagation/bindings/modulegen__gcc_ILP32.py ns-3.21/src/propagation/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/propagation/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/propagation/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -1219,10 +1219,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1233,25 +1233,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1368,20 +1368,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/propagation/bindings/modulegen__gcc_LP64.py ns-3.21/src/propagation/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/propagation/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/propagation/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -1219,10 +1219,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1233,25 +1233,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1368,20 +1368,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/sixlowpan/bindings/modulegen__gcc_ILP32.py ns-3.21/src/sixlowpan/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/sixlowpan/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/sixlowpan/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3300,10 +3300,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3314,25 +3314,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3449,20 +3449,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/sixlowpan/bindings/modulegen__gcc_LP64.py ns-3.21/src/sixlowpan/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/sixlowpan/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/sixlowpan/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3300,10 +3300,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3314,25 +3314,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3449,20 +3449,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/sixlowpan/examples/wscript ns-3.21/src/sixlowpan/examples/wscript
--- ns-3.20/src/sixlowpan/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/sixlowpan/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -5,9 +5,9 @@
         return;
 
     obj = bld.create_ns3_program('example-sixlowpan',
-                                 ['network', 'sixlowpan', 'internet', 'csma'])
+                                 ['network', 'sixlowpan', 'internet', 'csma', 'applications'])
     obj.source = 'example-sixlowpan.cc'
     
     obj = bld.create_ns3_program('example-ping-lr-wpan',
-                                 ['network', 'sixlowpan', 'internet', 'lr-wpan'])
+                                 ['network', 'sixlowpan', 'internet', 'lr-wpan', 'applications'])
     obj.source = 'example-ping-lr-wpan.cc'
diff -Naur ns-3.20/src/sixlowpan/model/sixlowpan-net-device.cc ns-3.21/src/sixlowpan/model/sixlowpan-net-device.cc
--- ns-3.20/src/sixlowpan/model/sixlowpan-net-device.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/sixlowpan/model/sixlowpan-net-device.cc	2014-09-17 20:03:14.000000000 -0700
@@ -944,14 +944,14 @@
           // The address takes the form ffXX::00XX:XXXX.
           //                            ffXX:0000:0000:0000:0000:0000:00XX:XXXX.
           else if ( (addressBuf[0] == multicastAddrCheckerBuf[0])
-                    && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 11) ) )
+                    && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 11) == 0) )
             {
               iphcHeader.SetDam (SixLowPanIphc::HC_COMPR_16);
             }
           // The address takes the form ffXX::00XX:XXXX:XXXX.
           //                            ffXX:0000:0000:0000:0000:00XX:XXXX:XXXX.
           else if ( (addressBuf[0] == multicastAddrCheckerBuf[0])
-                    && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 9) ) )
+                    && (memcmp (addressBuf + 2, multicastAddrCheckerBuf + 2, 9) == 0) )
             {
               iphcHeader.SetDam (SixLowPanIphc::HC_COMPR_64);
             }
diff -Naur ns-3.20/src/sixlowpan/test/sixlowpan-fragmentation-test.cc ns-3.21/src/sixlowpan/test/sixlowpan-fragmentation-test.cc
--- ns-3.20/src/sixlowpan/test/sixlowpan-fragmentation-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/sixlowpan/test/sixlowpan-fragmentation-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -257,12 +257,17 @@
 {
   // Create topology
 
+  Packet::EnablePrinting ();
+
   // Receiver Node
   Ptr<Node> serverNode = CreateObject<Node> ();
   AddInternetStack (serverNode);
   Ptr<SimpleNetDevice> serverDev;
   Ptr<BinaryErrorSixlowModel> serverDevErrorModel = CreateObject<BinaryErrorSixlowModel> ();
   {
+    Ptr<Icmpv6L4Protocol> icmpv6l4 = serverNode->GetObject<Icmpv6L4Protocol> ();
+    icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
+
     serverDev = CreateObject<SimpleNetDevice> ();
     serverDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
     serverDev->SetMtu (1500);
@@ -282,8 +287,6 @@
     ipv6->AddAddress (netdev_idx, ipv6Addr);
     ipv6->SetUp (netdev_idx);
 
-    Ptr<Icmpv6L4Protocol> icmpv6l4 = serverNode->GetObject<Icmpv6L4Protocol> ();
-    icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
   }
   StartServer (serverNode);
 
@@ -293,6 +296,9 @@
   Ptr<SimpleNetDevice> clientDev;
   Ptr<BinaryErrorSixlowModel> clientDevErrorModel = CreateObject<BinaryErrorSixlowModel> ();
   {
+    Ptr<Icmpv6L4Protocol> icmpv6l4 = clientNode->GetObject<Icmpv6L4Protocol> ();
+    icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
+
     clientDev = CreateObject<SimpleNetDevice> ();
     clientDev->SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
     clientDev->SetMtu (150);
@@ -302,7 +308,7 @@
 
     Ptr<SixLowPanNetDevice> clientSix = CreateObject<SixLowPanNetDevice> ();
     clientSix->SetAttribute ("ForceEtherType", BooleanValue (true) );
-    serverNode->AddDevice (clientSix);
+    clientNode->AddDevice (clientSix);
     clientSix->SetNetDevice (clientDev);
 
     Ptr<Ipv6> ipv6 = clientNode->GetObject<Ipv6> ();
@@ -311,9 +317,6 @@
     Ipv6InterfaceAddress ipv6Addr = Ipv6InterfaceAddress (Ipv6Address ("2001:0100::2"), Ipv6Prefix (64));
     ipv6->AddAddress (netdev_idx, ipv6Addr);
     ipv6->SetUp (netdev_idx);
-
-    Ptr<Icmpv6L4Protocol> icmpv6l4 = clientNode->GetObject<Icmpv6L4Protocol> ();
-    icmpv6l4->SetAttribute ("DAD", BooleanValue (false));
   }
   StartClient (clientNode);
 
diff -Naur ns-3.20/src/spectrum/bindings/modulegen__gcc_ILP32.py ns-3.21/src/spectrum/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/spectrum/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -3894,10 +3894,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3908,25 +3908,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4043,20 +4043,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/spectrum/bindings/modulegen__gcc_LP64.py ns-3.21/src/spectrum/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/spectrum/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -3894,10 +3894,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3908,25 +3908,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4043,20 +4043,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/spectrum/doc/spectrum.rst ns-3.21/src/spectrum/doc/spectrum.rst
--- ns-3.20/src/spectrum/doc/spectrum.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/doc/spectrum.rst	2014-09-17 20:03:14.000000000 -0700
@@ -20,7 +20,7 @@
 The Spectrum module aims at providing support for modeling the frequency-dependent 
 aspects of communications in |ns3|. 
 The model was first introduced in
-[Baldo2009]_, and has been enhanced and refined over the years. 
+[Baldo2009Spectrum]_, and has been enhanced and refined over the years. 
 
 
 
@@ -84,7 +84,7 @@
 one ``SpectrumModel`` to another.
 
 For a more formal mathematical description of the signal model just
-described, the reader is referred to [Baldo2009]_.
+described, the reader is referred to [Baldo2009Spectrum]_.
 
 The ``SpectrumSignalParameters`` class is meant to include only
 information that is valid for all signals; as such, it is not meant to
@@ -168,7 +168,7 @@
  * ``HalfDuplexIdealPhy``: a basic PHY model using a gaussian
    interference model (implemented in ``SpectrumInterference``)
    together with an error model based on Shannon capacity (described
-   in [Baldo2009]_ and implemented in ``SpectrumErrorModel``. This PHY
+   in [Baldo2009Spectrum]_ and implemented in ``SpectrumErrorModel``. This PHY
    uses the ``GenericPhy`` interface. Its addditional custom signal
    parameters are defined in ``HalfDuplexIdealPhySignalParameters``.
 
@@ -194,7 +194,7 @@
 References
 ==========
 
-.. [Baldo2009] N. Baldo and M. Miozzo, "Spectrum-aware Channel and PHY layer modeling for ns3", 
+.. [Baldo2009Spectrum] N. Baldo and M. Miozzo, "Spectrum-aware Channel and PHY layer modeling for ns3", 
    Proceedings of ICST NSTools 2009, Pisa, Italy
 
 
@@ -275,8 +275,7 @@
 
 
 The helpers provided in ``src/spectrum/helpers`` are mainly intended
-for the example implementations described in :ref:`Example model
-implementations`. 
+for the example implementations described in :ref:`sec-example-model-implementations`. 
 If you are developing your custom model based on the
 spectrum framework, you will probably prefer to define your own
 helpers.
diff -Naur ns-3.20/src/spectrum/examples/wscript ns-3.21/src/spectrum/examples/wscript
--- ns-3.20/src/spectrum/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,15 +2,15 @@
 
 def build(bld):
     obj = bld.create_ns3_program('adhoc-aloha-ideal-phy',
-                                 ['spectrum', 'mobility'])
+                                 ['spectrum', 'mobility', 'internet', 'applications'])
     obj.source = 'adhoc-aloha-ideal-phy.cc'
 
     obj = bld.create_ns3_program('adhoc-aloha-ideal-phy-matrix-propagation-loss-model',
-                                 ['spectrum', 'mobility'])
+                                 ['spectrum', 'mobility', 'internet', 'applications'])
     obj.source = 'adhoc-aloha-ideal-phy-matrix-propagation-loss-model.cc'
 
     obj = bld.create_ns3_program('adhoc-aloha-ideal-phy-with-microwave-oven',
-                                 ['spectrum', 'mobility'])
+                                 ['spectrum', 'mobility', 'internet', 'applications'])
     obj.source = 'adhoc-aloha-ideal-phy-with-microwave-oven.cc'
 
 
diff -Naur ns-3.20/src/spectrum/model/spectrum-value.cc ns-3.21/src/spectrum/model/spectrum-value.cc
--- ns-3.20/src/spectrum/model/spectrum-value.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/model/spectrum-value.cc	2014-09-17 20:03:14.000000000 -0700
@@ -46,6 +46,12 @@
   return m_values.at (index);
 }
 
+const double&
+SpectrumValue:: operator[] (size_t index) const
+{
+  return m_values.at (index);
+}
+
 
 SpectrumModelUid_t
 SpectrumValue::GetSpectrumModelUid () const
diff -Naur ns-3.20/src/spectrum/model/spectrum-value.h ns-3.21/src/spectrum/model/spectrum-value.h
--- ns-3.20/src/spectrum/model/spectrum-value.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/model/spectrum-value.h	2014-09-17 20:03:14.000000000 -0700
@@ -89,6 +89,14 @@
    */
   double& operator[] (size_t index);
 
+  /**
+   * Access value at given frequency index
+   *
+   * @param index the given frequency index
+   *
+   * @return const reference to the value
+   */
+  const double& operator[] (size_t index) const;
 
 
   /**
diff -Naur ns-3.20/src/spectrum/model/waveform-generator.cc ns-3.21/src/spectrum/model/waveform-generator.cc
--- ns-3.20/src/spectrum/model/waveform-generator.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/model/waveform-generator.cc	2014-09-17 20:03:14.000000000 -0700
@@ -194,7 +194,7 @@
   NS_LOG_FUNCTION (this);
 
   Ptr<SpectrumSignalParameters> txParams = Create<SpectrumSignalParameters> ();
-  txParams->duration = Time (m_period * m_dutyCycle);
+  txParams->duration = Time (m_period.GetTimeStep () * m_dutyCycle);
   txParams->psd = m_txPowerSpectralDensity;
   txParams->txPhy = GetObject<SpectrumPhy> ();
   txParams->txAntenna = m_antenna;
diff -Naur ns-3.20/src/spectrum/test/spectrum-ideal-phy-test.cc ns-3.21/src/spectrum/test/spectrum-ideal-phy-test.cc
--- ns-3.20/src/spectrum/test/spectrum-ideal-phy-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/test/spectrum-ideal-phy-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -46,7 +46,7 @@
 #include <ns3/uinteger.h>
 #include <ns3/packet-socket-helper.h>
 #include <ns3/packet-socket-address.h>
-#include <ns3/on-off-helper.h>
+#include <ns3/packet-socket-client.h>
 #include <ns3/config.h>
 
 
@@ -179,13 +179,14 @@
   socket.SetPhysicalAddress (devices.Get (1)->GetAddress ());
   socket.SetProtocol (1);
 
-  OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetConstantRate (DataRate (static_cast<uint64_t> (1.2*phyRate)));
-  onoff.SetAttribute ("PacketSize", UintegerValue (pktSize));
-
-  ApplicationContainer apps = onoff.Install (c.Get (0));
-  apps.Start (Seconds (0.0));
-  apps.Stop (Seconds (testDuration));
+  Ptr<PacketSocketClient> client = CreateObject<PacketSocketClient> ();
+  client->SetRemote (socket);
+  client->SetAttribute ("Interval", TimeValue (Seconds (double (pktSize*8) / (1.2*double (phyRate)))));
+  client->SetAttribute ("PacketSize", UintegerValue (pktSize));
+  client->SetAttribute ("MaxPackets", UintegerValue (0));
+  client->SetStartTime(Seconds (0.0));
+  client->SetStopTime(Seconds (testDuration));
+  c.Get (0)->AddApplication (client);
 
   Config::Connect ("/NodeList/*/DeviceList/*/Phy/RxEndOk", MakeCallback (&PhyRxEndOkTrace));
 
diff -Naur ns-3.20/src/spectrum/wscript ns-3.21/src/spectrum/wscript
--- ns-3.20/src/spectrum/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/spectrum/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,7 +2,7 @@
 
 def build(bld):
 
-    module = bld.create_ns3_module('spectrum', ['internet', 'propagation', 'antenna', 'applications'])
+    module = bld.create_ns3_module('spectrum', ['propagation', 'antenna'])
     module.source = [
         'model/spectrum-model.cc',
         'model/spectrum-value.cc',
diff -Naur ns-3.20/src/stats/bindings/modulegen__gcc_ILP32.py ns-3.21/src/stats/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/stats/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/stats/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -1695,10 +1695,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1709,25 +1709,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1844,20 +1844,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/stats/bindings/modulegen__gcc_LP64.py ns-3.21/src/stats/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/stats/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/stats/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -1695,10 +1695,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1709,25 +1709,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1844,20 +1844,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/stats/doc/data-collection.rst ns-3.21/src/stats/doc/data-collection.rst
--- ns-3.20/src/stats/doc/data-collection.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/stats/doc/data-collection.rst	2014-09-17 20:03:14.000000000 -0700
@@ -32,6 +32,5 @@
    collector.rst
    aggregator.rst
    adaptor.rst
-   statistics.rst
    scope-and-limitations.rst
 
diff -Naur ns-3.20/src/tap-bridge/bindings/modulegen__gcc_ILP32.py ns-3.21/src/tap-bridge/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/tap-bridge/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/tap-bridge/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -2532,10 +2532,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2546,25 +2546,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2681,20 +2681,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/tap-bridge/bindings/modulegen__gcc_LP64.py ns-3.21/src/tap-bridge/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/tap-bridge/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/tap-bridge/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -2532,10 +2532,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -2546,25 +2546,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -2681,20 +2681,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/tap-bridge/examples/wscript ns-3.21/src/tap-bridge/examples/wscript
--- ns-3.20/src/tap-bridge/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/tap-bridge/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -11,5 +11,5 @@
         obj = bld.create_ns3_program('tap-wifi-virtual-machine', ['csma', 'tap-bridge', 'internet', 'wifi', 'mobility'])
         obj.source = 'tap-wifi-virtual-machine.cc'
         bld.register_ns3_script('tap-wifi-virtual-machine.py', ['csma', 'tap-bridge', 'internet', 'wifi', 'mobility'])
-        obj = bld.create_ns3_program('tap-wifi-dumbbell', ['wifi', 'csma', 'point-to-point', 'tap-bridge', 'internet'])
+        obj = bld.create_ns3_program('tap-wifi-dumbbell', ['wifi', 'csma', 'point-to-point', 'tap-bridge', 'internet', 'applications'])
         obj.source = 'tap-wifi-dumbbell.cc'
diff -Naur ns-3.20/src/tap-bridge/wscript ns-3.21/src/tap-bridge/wscript
--- ns-3.20/src/tap-bridge/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/tap-bridge/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -28,7 +28,7 @@
     if not bld.env['ENABLE_TAP']:
         return
 
-    module = bld.create_ns3_module('tap-bridge', ['network', 'internet'])
+    module = bld.create_ns3_module('tap-bridge', ['network'])
     module.source = [
         'model/tap-bridge.cc',
         'model/tap-encode-decode.cc',
diff -Naur ns-3.20/src/test/global-routing-test-suite.cc ns-3.21/src/test/global-routing-test-suite.cc
--- ns-3.20/src/test/global-routing-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/global-routing-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
@@ -1,403 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <vector>
-#include "ns3/boolean.h"
-#include "ns3/config.h"
-#include "ns3/csma-helper.h"
-#include "ns3/flow-monitor.h"
-#include "ns3/flow-monitor-helper.h"
-#include "ns3/inet-socket-address.h"
-#include "ns3/internet-stack-helper.h"
-#include "ns3/ipv4-address-helper.h"
-#include "ns3/ipv4-global-routing-helper.h"
-#include "ns3/ipv4-static-routing-helper.h"
-#include "ns3/node.h"
-#include "ns3/node-container.h"
-#include "ns3/on-off-helper.h"
-#include "ns3/packet.h"
-#include "ns3/packet-sink-helper.h"
-#include "ns3/packet-sink.h"
-#include "ns3/packet-socket-helper.h"
-#include "ns3/packet-socket-address.h"
-#include "ns3/csma-net-device.h"
-#include "ns3/point-to-point-helper.h"
-#include "ns3/pointer.h"
-#include "ns3/simple-channel.h"
-#include "ns3/simulator.h"
-#include "ns3/string.h"
-#include "ns3/test.h"
-#include "ns3/uinteger.h"
-#include "ns3/ipv4-packet-info-tag.h"
-
-using namespace ns3;
-
-class DynamicGlobalRoutingTestCase : public TestCase
-{
-public:
-  DynamicGlobalRoutingTestCase ();
-  virtual ~DynamicGlobalRoutingTestCase ();
-
-private:
-  void SinkRx (std::string path, Ptr<const Packet> p, const Address &address);
-  void HandleRead (Ptr<Socket>);
-  virtual void DoRun (void);
-  int m_count;
-  std::vector<uint8_t> m_firstInterface;
-  std::vector<uint8_t> m_secondInterface;
-};
-
-// Add some help text to this case to describe what it is intended to test
-DynamicGlobalRoutingTestCase::DynamicGlobalRoutingTestCase ()
-  : TestCase ("Dynamic global routing example"), m_count (0)
-{
-  m_firstInterface.resize (16);
-  m_secondInterface.resize (16);
-}
-
-DynamicGlobalRoutingTestCase::~DynamicGlobalRoutingTestCase ()
-{
-}
-
-void
-DynamicGlobalRoutingTestCase::SinkRx (std::string path, Ptr<const Packet> p, const Address& address)
-{
-  Ipv4PacketInfoTag tag;
-  bool found;
-  found = p->PeekPacketTag (tag);
-  uint8_t now = static_cast<uint8_t> (Simulator::Now ().GetSeconds ());
-  if (found)
-    {
-      ;
-    }
-  m_firstInterface[now]++;
-  m_count++;
-}
-
-void 
-DynamicGlobalRoutingTestCase::HandleRead (Ptr<Socket> socket)
-{
-  Ptr<Packet> packet;
-  Address from;
-  while ((packet = socket->RecvFrom (from)))
-    {
-      if (packet->GetSize () == 0)
-        { //EOF
-          break;
-        }
-      Ipv4PacketInfoTag tag;
-      bool found;
-      found = packet->PeekPacketTag (tag);
-      uint8_t now = static_cast<uint8_t> (Simulator::Now ().GetSeconds ());
-      if (found)
-        {
-          if (tag.GetRecvIf () == 1)
-            {
-              m_firstInterface[now]++;
-            }
-          if (tag.GetRecvIf () == 2)
-            {
-              m_secondInterface[now]++;
-            }
-          m_count++;
-        }
-    }
-}
-
-// Test derived from examples/routing/dynamic-global-routing.cc
-//
-// Network topology
-//
-//  n0
-//     \ p-p
-//      \          (shared csma/cd)
-//       n2 -------------------------n3
-//      /            |        | 
-//     / p-p        n4        n5 ---------- n6
-//   n1                             p-p
-//   |                                      |
-//   ----------------------------------------
-//                p-p
-//
-// Test that for node n6, the interface facing n5 receives packets at
-// times (1-2), (4-6), (8-10), (11-12), (14-16) and the interface
-// facing n1 receives packets at times (2-4), (6-8), (12-13)
-//
-void
-DynamicGlobalRoutingTestCase::DoRun (void)
-{
-  // The below value configures the default behavior of global routing.
-  // By default, it is disabled.  To respond to interface events, set to true
-  Config::SetDefault ("ns3::Ipv4GlobalRouting::RespondToInterfaceEvents", BooleanValue (true));
-
-  NodeContainer c;
-  c.Create (7);
-  NodeContainer n0n2 = NodeContainer (c.Get (0), c.Get (2));
-  NodeContainer n1n2 = NodeContainer (c.Get (1), c.Get (2));
-  NodeContainer n5n6 = NodeContainer (c.Get (5), c.Get (6));
-  NodeContainer n1n6 = NodeContainer (c.Get (1), c.Get (6));
-  NodeContainer n2345 = NodeContainer (c.Get (2), c.Get (3), c.Get (4), c.Get (5));
-
-  InternetStackHelper internet;
-  internet.Install (c);
-
-  // We create the channels first without any IP addressing information
-  PointToPointHelper p2p;
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
-  NetDeviceContainer d0d2 = p2p.Install (n0n2);
-  NetDeviceContainer d1d6 = p2p.Install (n1n6);
-
-  NetDeviceContainer d1d2 = p2p.Install (n1n2);
-
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("1500kbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("10ms"));
-  NetDeviceContainer d5d6 = p2p.Install (n5n6);
-
-  // We create the channels first without any IP addressing information
-  CsmaHelper csma;
-  csma.SetChannelAttribute ("DataRate", StringValue ("5Mbps"));
-  csma.SetChannelAttribute ("Delay", StringValue ("2ms"));
-  NetDeviceContainer d2345 = csma.Install (n2345);
-
-  // Later, we add IP addresses.
-  Ipv4AddressHelper ipv4;
-  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
-  ipv4.Assign (d0d2);
-
-  ipv4.SetBase ("10.1.2.0", "255.255.255.0");
-  ipv4.Assign (d1d2);
-
-  ipv4.SetBase ("10.1.3.0", "255.255.255.0");
-  Ipv4InterfaceContainer i5i6 = ipv4.Assign (d5d6);
-
-  ipv4.SetBase ("10.250.1.0", "255.255.255.0");
-  ipv4.Assign (d2345);
-
-  ipv4.SetBase ("172.16.1.0", "255.255.255.0");
-  Ipv4InterfaceContainer i1i6 = ipv4.Assign (d1d6);
-
-  // Create router nodes, initialize routing database and set up the routing
-  // tables in the nodes.
-  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
-
-  // Create the OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s
-  uint16_t port = 9;   // Discard port (RFC 863)
-  OnOffHelper onoff ("ns3::UdpSocketFactory",
-                     InetSocketAddress (i5i6.GetAddress (1), port));
-  onoff.SetConstantRate (DataRate ("2kbps"));
-  onoff.SetAttribute ("PacketSize", UintegerValue (50));
-
-  ApplicationContainer apps = onoff.Install (c.Get (1));
-  apps.Start (Seconds (1.0));
-  apps.Stop (Seconds (10.0));
-
-  // Create a second OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s
-  OnOffHelper onoff2 ("ns3::UdpSocketFactory",
-                      InetSocketAddress (i1i6.GetAddress (1), port));
-  onoff2.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
-  onoff2.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
-  onoff2.SetAttribute ("DataRate", StringValue ("2kbps"));
-  onoff2.SetAttribute ("PacketSize", UintegerValue (50));
-
-  ApplicationContainer apps2 = onoff2.Install (c.Get (1));
-  apps2.Start (Seconds (11.0));
-  apps2.Stop (Seconds (16.0));
-
-  // Create an optional packet sink to receive these packets
-  TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
-  Ptr<Socket> sink2 = Socket::CreateSocket (c.Get (6), tid);
-  sink2->Bind (Address (InetSocketAddress (Ipv4Address::GetAny (), port)));
-  sink2->Listen ();
-  sink2->ShutdownSend ();
-
-  sink2->SetRecvPktInfo (true);
-  sink2->SetRecvCallback (MakeCallback (&DynamicGlobalRoutingTestCase::HandleRead, this));
-
-  Ptr<Node> n1 = c.Get (1);
-  Ptr<Ipv4> ipv41 = n1->GetObject<Ipv4> ();
-  // The first ifIndex is 0 for loopback, then the first p2p is numbered 1,
-  // then the next p2p is numbered 2
-  uint32_t ipv4ifIndex1 = 2;
-
-  // Trace receptions
-  Config::Connect ("/NodeList/6/ApplicationList/*/$ns3::PacketSink/Rx",
-                   MakeCallback (&DynamicGlobalRoutingTestCase::SinkRx, this));
-
-  Simulator::Schedule (Seconds (2),&Ipv4::SetDown,ipv41, ipv4ifIndex1);
-  Simulator::Schedule (Seconds (4),&Ipv4::SetUp,ipv41, ipv4ifIndex1);
-
-  Ptr<Node> n6 = c.Get (6);
-  Ptr<Ipv4> ipv46 = n6->GetObject<Ipv4> ();
-  // The first ifIndex is 0 for loopback, then the first p2p is numbered 1,
-  // then the next p2p is numbered 2
-  uint32_t ipv4ifIndex6 = 2;
-  Simulator::Schedule (Seconds (6),&Ipv4::SetDown,ipv46, ipv4ifIndex6);
-  Simulator::Schedule (Seconds (8),&Ipv4::SetUp,ipv46, ipv4ifIndex6);
-
-  Simulator::Schedule (Seconds (12),&Ipv4::SetDown,ipv41, ipv4ifIndex1);
-  Simulator::Schedule (Seconds (14),&Ipv4::SetUp,ipv41, ipv4ifIndex1);
-
-  Simulator::Run ();
-
-  NS_TEST_ASSERT_MSG_EQ (m_count, 68, "Dynamic global routing did not deliver all packets");
-// Test that for node n6, the interface facing n5 receives packets at
-// times (1-2), (4-6), (8-10), (11-12), (14-16) and the interface
-// facing n1 receives packets at times (2-4), (6-8), (12-13)
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[1], 4, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[2], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[3], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[4], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[5], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[6], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[7], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[8], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[9], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[10], 0, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[11], 4, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[12], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_secondInterface[13], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[14], 5, "Dynamic global routing did not deliver all packets");
-  NS_TEST_ASSERT_MSG_EQ (m_firstInterface[15], 5, "Dynamic global routing did not deliver all packets");
-  Simulator::Destroy ();
-}
-
-class GlobalRoutingSlash32TestCase : public TestCase
-{
-public:
-  GlobalRoutingSlash32TestCase ();
-  virtual ~GlobalRoutingSlash32TestCase ();
-
-private:
-  virtual void DoRun (void);
-};
-
-// Add some help text to this case to describe what it is intended to test
-GlobalRoutingSlash32TestCase::GlobalRoutingSlash32TestCase ()
-  : TestCase ("Slash 32 global routing example")
-{
-}
-
-GlobalRoutingSlash32TestCase::~GlobalRoutingSlash32TestCase ()
-{
-}
-
-// Test program for this 3-router scenario, using global routing
-//
-// (a.a.a.a/32)A<--x.x.x.0/30-->B<--y.y.y.0/30-->C(c.c.c.c/32)
-//
-void
-GlobalRoutingSlash32TestCase::DoRun (void)
-{
-  Ptr<Node> nA = CreateObject<Node> ();
-  Ptr<Node> nB = CreateObject<Node> ();
-  Ptr<Node> nC = CreateObject<Node> ();
-
-  NodeContainer c = NodeContainer (nA, nB, nC);
-
-  InternetStackHelper internet;
-  internet.Install (c);
-
-  // Point-to-point links
-  NodeContainer nAnB = NodeContainer (nA, nB);
-  NodeContainer nBnC = NodeContainer (nB, nC);
-
-  // We create the channels first without any IP addressing information
-  PointToPointHelper p2p;
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
-  NetDeviceContainer dAdB = p2p.Install (nAnB);
-
-  NetDeviceContainer dBdC = p2p.Install (nBnC);;
-
-  Ptr<CsmaNetDevice> deviceA = CreateObject<CsmaNetDevice> ();
-  deviceA->SetAddress (Mac48Address::Allocate ());
-  nA->AddDevice (deviceA);
-
-  Ptr<CsmaNetDevice> deviceC = CreateObject<CsmaNetDevice> ();
-  deviceC->SetAddress (Mac48Address::Allocate ());
-  nC->AddDevice (deviceC);
-
-  // Later, we add IP addresses.
-  Ipv4AddressHelper ipv4;
-  ipv4.SetBase ("10.1.1.0", "255.255.255.252");
-  Ipv4InterfaceContainer iAiB = ipv4.Assign (dAdB);
-
-  ipv4.SetBase ("10.1.1.4", "255.255.255.252");
-  Ipv4InterfaceContainer iBiC = ipv4.Assign (dBdC);
-
-  Ptr<Ipv4> ipv4A = nA->GetObject<Ipv4> ();
-  Ptr<Ipv4> ipv4C = nC->GetObject<Ipv4> ();
-
-  int32_t ifIndexA = ipv4A->AddInterface (deviceA);
-  int32_t ifIndexC = ipv4C->AddInterface (deviceC);
-
-  Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("255.255.255.255"));
-  ipv4A->AddAddress (ifIndexA, ifInAddrA);
-  ipv4A->SetMetric (ifIndexA, 1);
-  ipv4A->SetUp (ifIndexA);
-
-  Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("255.255.255.255"));
-  ipv4C->AddAddress (ifIndexC, ifInAddrC);
-  ipv4C->SetMetric (ifIndexC, 1);
-  ipv4C->SetUp (ifIndexC);
-
-  // Create router nodes, initialize routing database and set up the routing
-  // tables in the nodes.
-  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
-
-  // Create the OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s
-  uint16_t port = 9;   // Discard port (RFC 863)
-  OnOffHelper onoff ("ns3::UdpSocketFactory",
-                     Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetConstantRate (DataRate (6000));
-  ApplicationContainer apps = onoff.Install (nA);
-  apps.Start (Seconds (1.0));
-  apps.Stop (Seconds (10.0));
-
-  // Create a packet sink to receive these packets
-  PacketSinkHelper sink ("ns3::UdpSocketFactory",
-                         Address (InetSocketAddress (Ipv4Address::GetAny (), port)));
-  apps = sink.Install (nC);
-  apps.Start (Seconds (1.0));
-  apps.Stop (Seconds (10.0));
-
-  Simulator::Run ();
-  // Check that we received 13 * 512 = 6656 bytes
-  Ptr<PacketSink> sinkPtr = DynamicCast <PacketSink> (apps.Get (0));
-  NS_TEST_ASSERT_MSG_EQ (sinkPtr->GetTotalRx (), 6656, "Static routing with /32 did not deliver all packets");
-  Simulator::Destroy ();
-}
-
-
-class GlobalRoutingTestSuite : public TestSuite
-{
-public:
-  GlobalRoutingTestSuite ();
-};
-
-GlobalRoutingTestSuite::GlobalRoutingTestSuite ()
-  : TestSuite ("global-routing", UNIT)
-{
-  AddTestCase (new DynamicGlobalRoutingTestCase, TestCase::QUICK);
-  AddTestCase (new GlobalRoutingSlash32TestCase, TestCase::QUICK);
-}
-
-// Do not forget to allocate an instance of this TestSuite
-static GlobalRoutingTestSuite globalRoutingTestSuite;
diff -Naur ns-3.20/src/test/mobility-test-suite.cc ns-3.21/src/test/mobility-test-suite.cc
--- ns-3.20/src/test/mobility-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/mobility-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
@@ -1,372 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright 2010 University of Washington
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- * This test suite is intended to test mobility use cases in general,
- * as typically used by user programs (i.e. with the helper layer
- * involved).
- */
-
-#include "ns3/test.h"
-#include "ns3/boolean.h"
-#include "ns3/simulator.h"
-#include "ns3/scheduler.h"
-#include "ns3/vector.h"
-#include "ns3/mobility-model.h"
-#include "ns3/waypoint-mobility-model.h"
-#include "ns3/mobility-helper.h"
-
-using namespace ns3;
-
-// Test whether course change notifications occur regardless of calls
-// to Update() position (which are triggered by calls to GetPosition())
-class WaypointLazyNotifyFalse : public TestCase
-{
-public:
-  WaypointLazyNotifyFalse ();
-  virtual ~WaypointLazyNotifyFalse ();
-
-private:
-  void TestXPosition (double expectedXPos);
-  void CourseChangeCallback (std::string path, Ptr<const MobilityModel> model);
-  virtual void DoRun (void);
-  Ptr<Node> m_node;
-  Ptr<WaypointMobilityModel> m_mob;
-  int m_courseChanges;
-};
-
-WaypointLazyNotifyFalse::WaypointLazyNotifyFalse ()
-  : TestCase ("Test behavior when LazyNotify is false"),
-    m_courseChanges (0)
-{
-}
-
-WaypointLazyNotifyFalse::~WaypointLazyNotifyFalse ()
-{
-}
-
-void
-WaypointLazyNotifyFalse::TestXPosition (double expectedXPos)
-{
-  Vector pos = m_mob->GetPosition ();
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
-}
-
-void
-WaypointLazyNotifyFalse::CourseChangeCallback (std::string path, Ptr<const MobilityModel> model)
-{
-  // All waypoints (at 10 second intervals) should trigger a course change
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (m_courseChanges * 10.0, Simulator::Now ().GetSeconds (), 0.001, "Course change not notified correctly", __FILE__, __LINE__);
-  m_courseChanges++;
-}
-
-void
-WaypointLazyNotifyFalse::DoRun (void)
-{
-  m_node = CreateObject<Node> ();
-  m_mob = CreateObject<WaypointMobilityModel> ();
-  // LazyNotify should by default be false
-  m_node->AggregateObject (m_mob);
-  Waypoint wpt (Seconds (0.0), Vector (0.0, 0.0, 0.0));
-  m_mob->AddWaypoint (wpt);
-  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
-  m_mob->AddWaypoint (wpt2);
-  Waypoint wpt3 (Seconds (20.0), Vector (20.0, 20.0, 20.0));
-  m_mob->AddWaypoint (wpt3);
-
-  Simulator::Schedule (Seconds (5.0), &WaypointLazyNotifyFalse::TestXPosition, this, 5);
-  Simulator::Run ();
-  Simulator::Destroy ();
-}
-
-class WaypointLazyNotifyTrue : public TestCase
-{
-public:
-  WaypointLazyNotifyTrue ();
-  virtual ~WaypointLazyNotifyTrue ();
-
-private:
-  void TestXPosition (double expectedXPos);
-  void CourseChangeCallback (std::string path, Ptr<const MobilityModel> model);
-  virtual void DoRun (void);
-  Ptr<Node> m_node;
-  Ptr<WaypointMobilityModel> m_mob;
-};
-
-WaypointLazyNotifyTrue::WaypointLazyNotifyTrue ()
-  : TestCase ("Test behavior when LazyNotify is true")
-{
-}
-
-WaypointLazyNotifyTrue::~WaypointLazyNotifyTrue ()
-{
-}
-
-void
-WaypointLazyNotifyTrue::TestXPosition (double expectedXPos)
-{
-  Vector pos = m_mob->GetPosition ();
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
-}
-
-void
-WaypointLazyNotifyTrue::CourseChangeCallback (std::string path, Ptr<const MobilityModel> model)
-{
-  // This should trigger at time 15 only, since that is the first time that
-  // position is updated due to LazyNotify
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (15, Simulator::Now ().GetSeconds (), 0.001, "Course change not notified correctly", __FILE__, __LINE__);
-}
-
-void
-WaypointLazyNotifyTrue::DoRun (void)
-{
-  m_node = CreateObject<Node> ();
-  m_mob = CreateObject<WaypointMobilityModel> ();
-  m_mob->SetAttributeFailSafe ("LazyNotify", BooleanValue (true));
-  m_node->AggregateObject (m_mob);
-  Waypoint wpt (Seconds (0.0), Vector (0.0, 0.0, 0.0));
-  m_mob->AddWaypoint (wpt);
-  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
-  m_mob->AddWaypoint (wpt2);
-  Waypoint wpt3 (Seconds (20.0), Vector (20.0, 20.0, 20.0));
-  m_mob->AddWaypoint (wpt3);
-
-  Simulator::Schedule (Seconds (15.0), &WaypointLazyNotifyTrue::TestXPosition, this, 15);
-  Simulator::Run ();
-  Simulator::Destroy ();
-}
-
-class WaypointInitialPositionIsWaypoint : public TestCase
-{
-public:
-  WaypointInitialPositionIsWaypoint ();
-  virtual ~WaypointInitialPositionIsWaypoint ();
-
-private:
-  void TestXPosition (Ptr<const WaypointMobilityModel> model, double expectedXPos);
-  void TestNumWaypoints (Ptr<const WaypointMobilityModel> model, uint32_t num);
-  virtual void DoRun (void);
-  Ptr<WaypointMobilityModel> m_mob1;
-  Ptr<WaypointMobilityModel> m_mob2;
-  Ptr<WaypointMobilityModel> m_mob3;
-  Ptr<WaypointMobilityModel> m_mob4;
-  Ptr<WaypointMobilityModel> m_mob5;
-};
-
-WaypointInitialPositionIsWaypoint::WaypointInitialPositionIsWaypoint ()
-  : TestCase ("Test behavior of Waypoint InitialPositionIsWaypoint")
-{
-}
-
-WaypointInitialPositionIsWaypoint::~WaypointInitialPositionIsWaypoint ()
-{
-}
-
-void
-WaypointInitialPositionIsWaypoint::TestXPosition (Ptr<const WaypointMobilityModel> model, double expectedXPos)
-{
-  Vector pos = model->GetPosition ();
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
-}
-
-void
-WaypointInitialPositionIsWaypoint::TestNumWaypoints (Ptr<const WaypointMobilityModel> model, uint32_t num)
-{
-  NS_TEST_EXPECT_MSG_EQ (model->WaypointsLeft (), num, "Unexpected number of waypoints left");
-}
-
-void
-WaypointInitialPositionIsWaypoint::DoRun (void)
-{
-  // Case 1:  InitialPositionIsWaypoint == false, and we call SetPosition
-  // without any waypoints added.  There should be no waypoints after
-  // time 0
-  m_mob1 = CreateObject<WaypointMobilityModel> ();
-  m_mob1->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (false));
-  m_mob1->SetPosition (Vector (10.0, 10.0, 10.0));
-  // At time 1s, there should be no waypoints
-  Simulator::Schedule (Seconds (1.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob1, 0);
-  // At time 15s, the model should still be at x position 10.0
-  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob1, 10.0);
-
-  // Case 2:  InitialPositionIsWaypoint == false, and we call SetPosition
-  // after adding a waypoint.
-  m_mob2 = CreateObject<WaypointMobilityModel> ();
-  m_mob2->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (false));
-  Waypoint wpt21 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
-  m_mob2->AddWaypoint (wpt21);
-  Waypoint wpt22 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
-  m_mob2->AddWaypoint (wpt22);
-  m_mob2->SetPosition (Vector (10.0, 10.0, 10.0));
-  // At time 3, no waypoints have been hit, so position should be 10 and
-  // numWaypoints should be 2, or 1 excluding the next one
-  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob2, 10.0);
-  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob2, 1);
-  // At time 8, check that X position is 18 (i.e. position is interpolating
-  // between 15 and 20) and there is one waypoint left, but we exclude
-  // the next one so we test for zero waypoints
-  Simulator::Schedule (Seconds (8.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob2, 18.0);
-  Simulator::Schedule (Seconds (8.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob2, 0);
-
-  // Case 3:  InitialPositionIsWaypoint == true, and we call SetPosition
-  // without any waypoints added.
-  m_mob3 = CreateObject<WaypointMobilityModel> ();
-  m_mob3->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
-  m_mob3->SetPosition (Vector (10.0, 10.0, 10.0));
-  // At time 1s, there should be zero waypoints not counting the next one
-  Simulator::Schedule (Seconds (1.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob3, 0);
-  // At time 15s, the model should still be at x position 10.0
-  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob3, 10.0);
-
-  // Case 4:  InitialPositionIsWaypoint == true, and we call SetPosition
-  // after adding a waypoint.
-  m_mob4 = CreateObject<WaypointMobilityModel> ();
-  m_mob4->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
-  Waypoint wpt41 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
-  m_mob4->AddWaypoint (wpt41);
-  Waypoint wpt42 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
-  m_mob4->AddWaypoint (wpt42);
-  // Here, SetPosition() is called after waypoints have been added.  In
-  // this case, the initial position is set until the time of the first
-  // waypoint, at which time it jumps to the waypoint and begins moving
-  m_mob4->SetPosition (Vector (10.0, 10.0, 10.0));
-  // At time 3, position should be fixed still at 10
-  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 10.0);
-  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestNumWaypoints, this, m_mob4, 1);
-  // At time 6, we should be moving between 15 and 20
-  Simulator::Schedule (Seconds (6.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 16.0);
-  // At time 15, we should be fixed at 20
-  Simulator::Schedule (Seconds (15.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob4, 20.0);
-
-  // case 5:  If waypoint and SetPosition both called at time 0,
-  // SetPosition takes precedence
-  m_mob5 = CreateObject<WaypointMobilityModel> ();
-  m_mob5->SetAttributeFailSafe ("InitialPositionIsWaypoint", BooleanValue (true));
-  // Note:  The below statement would result in a crash, because it would
-  // violate the rule that waypoints must increase in start time
-  // m_mob5->SetPosition (Vector (10.0, 10.0, 10.0));
-  Waypoint wpt51 (Seconds (0.0), Vector (200.0, 200.0, 200.0));
-  m_mob5->AddWaypoint (wpt51);
-  Waypoint wpt52 (Seconds (5.0), Vector (15.0, 15.0, 15.0));
-  m_mob5->AddWaypoint (wpt52);
-  Waypoint wpt53 (Seconds (10.0), Vector (20.0, 20.0, 20.0));
-  m_mob5->AddWaypoint (wpt53);
-  // Here, since waypoints already exist, the below SetPosition will cancel
-  // out wpt51 above, and model will stay at initial position until time 5
-  m_mob5->SetPosition (Vector (10.0, 10.0, 10.0));
-  Simulator::Schedule (Seconds (3.0), &WaypointInitialPositionIsWaypoint::TestXPosition, this, m_mob5, 10.0);
-
-  Simulator::Run ();
-  Simulator::Destroy ();
-}
-
-class WaypointMobilityModelViaHelper : public TestCase
-{
-public:
-  WaypointMobilityModelViaHelper ();
-  virtual ~WaypointMobilityModelViaHelper ();
-
-private:
-  void TestXPosition (Ptr<const WaypointMobilityModel> mob, double expectedXPos);
-  virtual void DoRun (void);
-};
-
-WaypointMobilityModelViaHelper::WaypointMobilityModelViaHelper ()
-  : TestCase ("Test behavior using MobilityHelper and PositionAllocator")
-{
-}
-
-WaypointMobilityModelViaHelper::~WaypointMobilityModelViaHelper ()
-{
-}
-
-void
-WaypointMobilityModelViaHelper::TestXPosition (Ptr<const WaypointMobilityModel> mob, double expectedXPos)
-{
-  Vector pos = mob->GetPosition ();
-  NS_TEST_EXPECT_MSG_EQ_TOL_INTERNAL (pos.x, expectedXPos, 0.001, "Position not equal", __FILE__, __LINE__);
-}
-
-// WaypointMobilityModel tests using the helper
-void
-WaypointMobilityModelViaHelper::DoRun (void)
-{
-  NodeContainer c;
-  c.Create (1);
-  MobilityHelper mobility;
-  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
-  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
-  mobility.SetPositionAllocator (positionAlloc);
-  // When InitialPositionIsWaypoint is false (default), the position
-  // set by the position allocator is ignored.  The first waypoint set will
-  // set the initial position (with velocity 0 until first waypoint time)
-  mobility.SetMobilityModel ("ns3::WaypointMobilityModel",
-                             "InitialPositionIsWaypoint", BooleanValue (false));
-  mobility.Install (c);
-
-  // Get back a pointer to this
-  Ptr<WaypointMobilityModel> mob = c.Get (0)->GetObject<WaypointMobilityModel> ();
-  // Waypoint added at time 0 will override initial position
-  Waypoint wpt (Seconds (5.0), Vector (20.0, 20.0, 20.0));
-  Waypoint wpt2 (Seconds (10.0), Vector (10.0, 10.0, 10.0));
-  mob->AddWaypoint (wpt);
-  mob->AddWaypoint (wpt2);
-  // At time 3 (before first waypoint, position is 20
-  Simulator::Schedule (Seconds (3), &WaypointMobilityModelViaHelper::TestXPosition, this, mob, 20);
-  // At time 7.5 (midway between points 1 and 2, position is 15
-  Simulator::Schedule (Seconds (7.5), &WaypointMobilityModelViaHelper::TestXPosition, this, mob, 15);
-
-  // When InitialPositionIsWaypoint is true, the position allocator creates
-  // the first waypoint, and movement occurs between this origin and the
-  // initial waypoint below at 5 seconds
-  NodeContainer c2;
-  c2.Create (1);
-  MobilityHelper mobility2;
-  Ptr<ListPositionAllocator> positionAlloc2 = CreateObject<ListPositionAllocator> ();
-  positionAlloc2->Add (Vector (0.0, 0.0, 0.0));
-  mobility2.SetPositionAllocator (positionAlloc2);
-  mobility2.SetMobilityModel ("ns3::WaypointMobilityModel",
-                              "InitialPositionIsWaypoint", BooleanValue (true));
-  mobility2.Install (c2);
-  Ptr<WaypointMobilityModel> mob2 = c2.Get (0)->GetObject<WaypointMobilityModel> ();
-  Waypoint wpt3 (Seconds (5.0), Vector (20.0, 20.0, 20.0));
-  mob2->AddWaypoint (wpt3);
-  // Move to position 12 at 3 seconds
-  Simulator::Schedule (Seconds (3), &WaypointMobilityModelViaHelper::TestXPosition, this, mob2, 12);
-
-  Simulator::Run ();
-  Simulator::Destroy ();
-}
-
-class MobilityTestSuite : public TestSuite
-{
-public:
-  MobilityTestSuite ();
-};
-
-MobilityTestSuite::MobilityTestSuite ()
-  : TestSuite ("mobility", UNIT)
-{
-  AddTestCase (new WaypointLazyNotifyFalse, TestCase::QUICK);
-  AddTestCase (new WaypointLazyNotifyTrue, TestCase::QUICK);
-  AddTestCase (new WaypointInitialPositionIsWaypoint, TestCase::QUICK);
-  AddTestCase (new WaypointMobilityModelViaHelper, TestCase::QUICK);
-}
-
-static MobilityTestSuite mobilityTestSuite;
diff -Naur ns-3.20/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc ns-3.21/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc
--- ns-3.20/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -516,7 +516,7 @@
   
   
   const uint32_t MSS = 536;
-  const uint32_t N_EVENTS = 41;
+  const uint32_t N_EVENTS = 37;
 
   CwndEvent event;
 
@@ -531,24 +531,23 @@
 
   VerifyCwndRun (11, 13, 9 * MSS, MSS);
   
-  //Partial ack will end up modifying cwnd 2X due to how code is written
-  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (15).m_newCwnd, 9 * MSS, "Wrong new cwnd value in cwnd change event " << 15);
+  // partial ack, cwnd reset to 9
+  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (14).m_newCwnd, 9 * MSS, "Wrong new cwnd value in cwnd change event " << 14);
+
+  // partial ack, cwnd reset to 8 
+  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (16).m_newCwnd, 8 * MSS, "Wrong new cwnd value in cwnd change event " << 16);
 
   //DUP ACKS in fast recovery
-  VerifyCwndRun (16, 17, 10 * MSS, MSS);
+  VerifyCwndRun (17, 18, 9 * MSS, MSS);
 
-  //Partial ack will end up modifying cwnd 2X due to how code is written, therefore eat 18 and 19
-  VerifyCwndRun (19, 20, 9 * MSS, MSS);
-  
+  VerifyCwndRun (19, 22, 8 * MSS, MSS);
   
-  VerifyCwndRun(22, 25, 8 * MSS, MSS);
- 
   //Leaving fast recovery
-  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (26).m_newCwnd, 5 * MSS, "Wrong new cwnd value in cwnd change event " << 26);  
+  NS_TEST_ASSERT_MSG_EQ (m_responses.Get (23).m_newCwnd, 5 * MSS, "Wrong new cwnd value in cwnd change event " << 23);  
   
   uint32_t cwnd = 5 * MSS;
   //In CongAvoid each event will increase cwnd by (MSS * MSS / cwnd)
-  for (uint32_t i = 27; i < N_EVENTS; ++i)
+  for (uint32_t i = 24; i < N_EVENTS; ++i)
     {
       double adder = static_cast<double> (MSS * MSS) / cwnd;
       adder = std::max (1.0, adder);
@@ -558,7 +557,7 @@
     
   for (uint32_t i = 0; i < N_EVENTS; ++i)
   {
-    std::cout << "i: " << m_responses.Get(i).m_newCwnd << "  " << m_responses.Get(i).m_oldCwnd << std::endl;
+    std::cout << "i: " << i << " newCwnd: " << m_responses.Get(i).m_newCwnd << " newCwnd segments " << static_cast<double> (m_responses.Get(i).m_newCwnd)/MSS << std::endl;
   }
 }
 
diff -Naur ns-3.20/src/test/ns3tcp/ns3tcp-loss-test-suite.cc ns-3.21/src/test/ns3tcp/ns3tcp-loss-test-suite.cc
--- ns-3.20/src/test/ns3tcp/ns3tcp-loss-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/ns3tcp-loss-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -302,13 +302,13 @@
 
   Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1000));
   Config::SetDefault ("ns3::TcpSocket::DelAckCount", UintegerValue (1));
+  Config::SetDefault ("ns3::TcpSocketBase::Timestamp", BooleanValue (false));
 
   if (m_writeLogging)
     {
       LogComponentEnableAll (LOG_PREFIX_FUNC);
-      LogComponentEnable ("TcpLossResponse", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ns3TcpLossTest", LOG_LEVEL_ALL);
       LogComponentEnable ("ErrorModel", LOG_LEVEL_DEBUG);
-      LogComponentEnable ("TcpLossResponse", LOG_LEVEL_ALL);
       LogComponentEnable ("TcpWestwood", LOG_LEVEL_ALL);
       LogComponentEnable ("TcpNewReno", LOG_LEVEL_INFO);
       LogComponentEnable ("TcpReno", LOG_LEVEL_INFO);
diff -Naur ns-3.20/src/test/ns3tcp/ns3tcp-state-test-suite.cc ns-3.21/src/test/ns3tcp/ns3tcp-state-test-suite.cc
--- ns-3.20/src/test/ns3tcp/ns3tcp-state-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/ns3tcp-state-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -26,6 +26,7 @@
 #include "ns3/config.h"
 #include "ns3/string.h"
 #include "ns3/uinteger.h"
+#include "ns3/boolean.h"
 #include "ns3/data-rate.h"
 #include "ns3/inet-socket-address.h"
 #include "ns3/point-to-point-helper.h"
@@ -50,7 +51,7 @@
 const uint32_t PCAP_SNAPLEN   = 64;         // Don't bother to save much data
 
 // ===========================================================================
-// Tests of TCP implementation loss behavior
+// Tests of TCP implementation state machine behavior
 // ===========================================================================
 //
 
@@ -273,13 +274,13 @@
   Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1000));
   Config::SetDefault ("ns3::TcpSocket::DelAckCount", UintegerValue (1));
   Config::SetDefault ("ns3::DropTailQueue::MaxPackets", UintegerValue (20));
+  Config::SetDefault ("ns3::TcpSocketBase::Timestamp", BooleanValue (false));
 
   if (m_writeLogging)
     {
       LogComponentEnableAll (LOG_PREFIX_FUNC);
-      LogComponentEnable ("TcpTestCases", LOG_LEVEL_ALL);
       LogComponentEnable ("ErrorModel", LOG_LEVEL_DEBUG);
-      LogComponentEnable ("TcpTestCases", LOG_LEVEL_ALL);
+      LogComponentEnable ("Ns3TcpStateTest", LOG_LEVEL_DEBUG);
       LogComponentEnable ("TcpNewReno", LOG_LEVEL_INFO);
       LogComponentEnable ("TcpReno", LOG_LEVEL_INFO);
       LogComponentEnable ("TcpTahoe", LOG_LEVEL_INFO);
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-interop-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-interop-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-interop-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-interop-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,5 +1,138 @@
-ò          @   F   3        ^    g'P       F+        ^   i'P       l        ^   m?P       l        ^   q?P       l       ^   u?P       lK       ^   y?P       l       ^   }?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   ?P       l	       ^   ?P       lK	       ^   ?P       l	       ^   ?P       l	       ^   ?P       l
-       ^   ?P       lK
-       ^   	?P       l
-       ^   ?P       l
-       ^   ?P       l       ^   ?P       lK       ^   ?P       l       ^   ?P       l       ^   !?P       l       ^   %?P       lK       ^   )?P       l       ^   -?P       l       ^   1?P       l       ^   5?P       lK       ^   9?P       l       ^   =?P       l       ^   A?P       l       ^   E?P       lK       ^   I?P       l       ^   M?P       l       ^   Q?P       l       ^   U?P       ,	        ^   Y?P       )       ^   ['P       ,i        ^   _?P       ,        ^   c?P       ,        ^   g?P       ,)       ^   k?P       ,i       ^   o?P       ,       ^   s?P       ,       ^   w?P       ,)       ^   {?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)       ^   ?P       ,i       ^   ?P       ,       ^   ?P       ,       ^   ?P       ,)	       ^   ?P       I	       ^   (P       I	       ^   (P    
\ No newline at end of file
+ò          @   F   3  $   $   ^    g'     
+          Y+          ^   i'    
+         l          ^   m3}    
+         l          ^   q3}    
+         l         ^   u3}    
+         lK         ^   y3}    
+  $  "     l         ^   }3}    
+  5  3     l         ^   3}    
+  E  C     l         ^   3}    
+  U  T     lK         ^   3}    
+  f  d     l         ^   3}    
+  v  t     l         ^   3}    
+         l         ^   3}    
+         lK         ^   3}    
+         l         ^   3}    
+         l         ^   3}    
+         l         ^   3}    
+         lK         ^   3}    
+         l         ^   3}    
+         l         ^   3}    
+  	
+  	     l         ^   3}    
+  	  	     lK         ^   3}    
+  	*  	)     l         ^   3}    
+  	;  	9     l         ^   3}    
+  	K  	I     l         ^   3}    
+  	\  	Z     lK         ^   3}    
+  	l  	j     l         ^   3}    
+  	|  	z     l         ^   3}    
+  	  	     l         ^   3}    
+  	  	     lK         ^   3}    
+  	  	     l         ^   3}    
+  	  	     l         ^   3}    
+  	  	     l         ^   3}    
+  	  	     lK         ^   3}    
+  	  	     l         ^   3}    
+  	  	     l         ^   3}    
+  
+  
+     l	         ^   3}    
+  
+   
+     lK	         ^   3}    
+  
+1  
+/     l	         ^   3}    
+  
+A  
+?     l	         ^   3}    
+  
+Q  
+O     l
+         ^   3}    
+  
+b  
+`     lK
+         ^   	3}    
+  
+r  
+p     l
+         ^   3}    
+  
+  
+     l
+         ^   3}    
+  
+  
+     l         ^   3}    
+  
+  
+     lK         ^   3}    
+  
+  
+     l         ^   3}    
+  
+  
+     l         ^   !3}    
+  
+  
+     l         ^   %3}    
+  
+  
+     lK         ^   )3}    
+  
+  
+     l         ^   -3}    
+         l         ^   13}    
+         l         ^   53}    
+  &  $     lK         ^   93}    
+  7  5     l         ^   =3}    
+  G  E     l         ^   A3}    
+  X  V     l         ^   E3}    
+  h  f     lK         ^   I3}    
+  x  v     l         ^   M3}    
+         l         ^   Q3}    
+         l         ^   U3}    
+         ,	          ^   Y3}    
+         )         ^   ['     
+         ,i          ^   _3}    
+         ,          ^   c3}    
+         ,          ^   g3}    
+         ,)         ^   k3}    
+         ,i         ^   o3}    
+         ,         ^   s3}    
+    
+     ,         ^   w3}    
+         ,)         ^   {3}    
+  -  +     ,i         ^   3}    
+  =  <     ,         ^   3}    
+  N  L     ,         ^   3}    
+  ^  \     ,)         ^   3}    
+  o  m     ,i         ^   3}    
+    }     ,         ^   3}    
+         ,         ^   3}    
+         ,)         ^   3}    
+         ,i         ^   3}    
+         ,         ^   3}    
+         ,         ^   3}    
+         ,)         ^   3}    
+         ,i         ^   3}    
+          ,         ^   3}    
+         ,         ^   3}    
+  #  !     ,)         ^   3}    
+  3  1     ,i         ^   3}    
+  D  B     ,         ^   3}    
+  T  R     ,         ^   3}    
+  d  b     ,)         ^   3}    
+  u  s     ,i         ^   3}    
+         ,         ^   3}    
+         ,         ^   3}    
+         ,)         ^   3}    
+         ,i         ^   3}    
+         ,         ^   3}    
+         ,         ^   3}    
+         ,)	         ^   3}    
+         I	         ^   (    
+          I	         ^   (     
+       
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                   M' @     P     P                                                   M' @     P     P                                                   P @     P     P                                                   P @     P     P                                                   x @     P     P                                                   x @     P  q   P                                                   i @     P  Y   P                                                   i @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9D @     P     P                                                   9D @     P     P                                                   l @     P  i   P                                                   l @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   U @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   	 @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   q8 @     P  y   P                                                   q8 @     P  a   P                                                   %a @     P  I   P                                                   %a @     P  1   P                                                   5; @     P     P                                                   5; @     P     P                                                   c @     P     P                                                   c @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Q @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   m/ @     P $   P                                                   m/ @     P (   P                                                   !X @     P ,   P                                                   !X @     P 0   P                                                   Հ @     P 4   P                                                   Հ @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   = @     P D9   P                                                   = @     P H!   P                                                    @     P L	   P                                                    @     P O   P                                                   #	 @     P S   P                                                   #	 @     P W   P                                                   YL	 @     P [   P                                                   YL	 @     P _   P                                                   u	 @     P cy   P                                                   u	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   u	 @     P s   P                                                   u	 @     P w   P                                                   )	 @     P z   P                                                   )	 @     P ~   P                                                   
- @     P    P                                                   
- @     P    P                                                   @
- @     P    P                                                   @
- @     P q   P                                                   Ei
- @     P Y   P                                                   Ei
- @     P A   P                                                   
- @     P )   P                                                   
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   a
- @     P    P                                                   a
- @     P    P                                                    @     P    P                                                    @     P    P                                                   4 @     P i   P                                                   4 @     P Q   P                                                   }] @     P 9   P                                                   }] @     P !   P                                                   1 @     P 	   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   M  @     P y   P                                                   M  @     P a   P                                                   ) @     P I   P                                                   ) @     P 1   P                                                   Q @     P    P                                                   Q @     P    P                                                   iz @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                   E @     P q   P                                                   n @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                   q @     P    P                                                   %: @     P "   P                                                   b @     P &   P                                                    @     P *   P                                                   A @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   ]. @     P :Q   P                                                     @     P >9   P                                                   =  @     P B!   P                                                   9f  @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                   U  @     P Q   P                                                   		 @     P U   P                                                   1 @     P Y   P                                                   qZ @     P ]y   P                                                   % @     P aa   P                                                   ٫ @     P eI   P                                                    @     P i1   P                                                   A @     P m   P                                                   % @     P q   P                                                   N @     P t   P                                                   ]w @     P x   P                                                    @     P |   P                                                    @     P    P                                                   y @     P    P                                                   - @     P q   P                                                   B @     P Y   P                                                   k @     P A   P                                                   I @     P )   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                   7 @     P    P                                                   _ @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   Q+ @     P 9   P                                                   T @     P !   P                                                   | @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   =H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   Y @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   u< @     P    P                                                   )e @     P    P                                                   ݍ @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   0 @     P q   P                                                   aY @     P 	Y   P                                                   yn       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    A @     P  qI   P                                                    A @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    ' @     P     P                                                    ' @     P     P                                                    YP @     P     P                                                    YP @     P     P                                                    y @     P     P                                                    y @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    u @     P  )   P                                                    u @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                     @     P     P                                                     @     P     P                                                    D @     P     P                                                    D @     P     P                                                    Em @     P  i   P                                                    Em @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    a @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    8 @     P  y   P                                                    8 @     P  a   P                                                    }a @     P  I   P                                                    }a @     P  1   P                                                    ; @     P     P                                                    ; @     P     P                                                    Ad @     P     P                                                    Ad @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    / @     P $   P                                                    / @     P (   P                                                    yX @     P ,   P                                                    yX @     P 0   P                                                    - @     P 4   P                                                    - @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    I @     P L	   P                                                    I @     P O   P                                                    #	 @     P S   P                                                    #	 @     P W   P                                                    L	 @     P [   P                                                    L	 @     P _   P                                                    eu	 @     P cy   P                                                    eu	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    	 @     P w   P                                                    	 @     P z   P                                                    	 @     P ~   P                                                    5
+ @     P    P                                                    5
+ @     P    P                                                    @
+ @     P    P                                                    @
+ @     P q   P                                                    i
+ @     P Y   P                                                    i
+ @     P A   P                                                    Q
+ @     P )   P                                                    Q
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    m @     P    P                                                    m @     P    P                                                    !5 @     P i   P                                                    !5 @     P Q   P                                                    ] @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    = @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                      @     P y   P                                                      @     P a   P                                                    Y) @     P I   P                                                    Y) @     P 1   P                                                    R @     P    P                                                    R @     P    P                                                    z @     P    P                                                    z @     P    P                                                    u @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P q   P                                                    EF @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    a @     P    P                                                     @     P    P                                                     @     P "   P                                                    }: @     P &   P                                                    1c @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    M @     P 6i   P                                                     @     P :Q   P                                                    . @     P >9   P                                                    )  @     P B!   P                                                    =  @     P F	   P                                                    f  @     P I   P                                                    E  @     P M   P                                                      @     P Q   P                                                      @     P U   P                                                    a	 @     P Y   P                                                    2 @     P ]y   P                                                    Z @     P aa   P                                                    } @     P eI   P                                                    1 @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    M& @     P t   P                                                    O @     P x   P                                                    w @     P |   P                                                    i @     P    P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    9C @     P A   P                                                    k @     P )   P                                                     @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q7 @     P    P                                                    %` @     P    P                                                    و @     P    P                                                     @     P i   P                                                    A @     P Q   P                                                     @     P 9   P                                                    + @     P !   P                                                    ]T @     P 	   P                                                    } @     P    P                                                    ť @     P    P                                                    y @     P    P                                                    - @     P ҩ   P                                                     @     P ֑   P                                                    H @     P y   P                                                    Iq @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                    < @     P    P                                                    e @     P    P                                                    5 @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P q   P                                                    1 @     P 	Y   P                                                    n       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,14 +1,15 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   P @     P  6   P                                                   9D @     P  qI   P                                                   l @     P  u1   P                                                    @     P  y   P                                                   U @     P  }   P                                                   	 @     P     P                                                    @     P     P                                                    @     P     P                                                   Հ @     P     P                                                    @     P     P                                                   = @     P  q   P                                                   = @     P  Y   P                                                    @     P  A   P                                                   #	 @     P  )   P                                                   YL	 @     P     P                                                   9
- @     P     P                                                   q @     P     P                                                   % @     P     P                                                    @     P     P                                                   7 @     P     P                                                   A` @     P     P                                                   A` @     P  i   P                                                    @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                    @     P  	   P                                                   " @     P     P                                                   5	  @     P     P                                                   1  @     P     P                                                   Z  @     P  ީ   P                                                   Q  @     P     P                                                   Q  @     P  y   P                                                     @     P  a   P                                                     @     P  I   P                                                   1  @     P  1   P                                                   i @     P     P                                                    @     P     P                                                   E @     P     P                                                   n @     P    P                                                   9 @     P    P                                                    @     P 	   P                                                    @     P    P                                                   U @     P q   P                                                   U @     P Y   P                                                   	: @     P A   P                                                   < @     P )   P                                                   1 @     P !   P                                                   Y @     P $   P                                                   m @     P (   P                                                   ! @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   =% @     P 8   P                                                   M @     P <i   P                                                   v @     P @Q   P                                                   v @     P D9   P                                                   Y @     P H!   P                                                   iy @     P L	   P                                                   m	 @     P O   P                                                   U	 @     P S   P                                                   		 @     P W   P                                                   	 @     P [   P                                                   q
- @     P _   P                                                   %9
- @     P cy   P                                                   a
- @     P ga   P                                                   
- @     P kI   P                                                   A
- @     P o1   P                                                   
- @     P s   P                                                    @     P w   P                                                    @     P z   P                                                    @     P ~   P                                                   = @     P    P                                                    @     P    P                                                    @     P    P                                                   Y$ @     P q   P                                                   M @     P Y   P                                                   u @     P A   P                                                   u @     P )   P                                                   ) @     P    P                                                    @     P    P                                                    @     P    P                                                   EA @     P    P                                                   i @     P    P                                                   i @     P    P                                                    @     P    P                                                     @     P i   P                                                   M  @     P Q   P                                                     @     P 9   P                                                    @     P !   P                                                   iG @     P 	   P                                                   p @     P    P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P ة   P                                                    @     P ܑ   P                                                   ; @     P y   P                                                   Ud @     P a   P                                                   	 @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   5 @     P    P                                                   	 @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P    P                                                   m @     P q   P                                                   ! @     P Y   P                                                   & @     P A   P                                                   O @     P )   P                                                   =x @     P    P                                                    @     P    P                                                    @     P "   P                                                   ) @     P &   P                                                   MR @     P *   P                                                    @     P .   P                                                    @     P 2   P                                                   F @     P 6i   P                                                   9o @     P :Q   P                                                    @     P >9   P                                                    @     P B!   P                                                   U @     P F	   P                                                   	 @     P I   P                                                   : @     P M   P                                                   qc @     P Q   P                                                   % @     P U   P                                                   ٴ @     P Y   P                                                    @     P ]y   P                                                   A	 @     P aa   P                                                   5f	 @     P eI   P                                                   	 @     P i1   P                                                   mZ
- @     P m   P                                                   !
- @     P q   P                                                   !
- @     P t   P                                                   ի
- @     P x   P                                                   
- @     P |   P                                                   =
- @     P    P                                                   % @     P    P                                                   N @     P q   P                                                   Yw @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   u @     P    P                                                   ) @     P    P                                                   B @     P    P                                                   k @     P    P                                                   Ѣ @     P    P                                                    @     P    P                                                   	 @     P    P                                                    @     P i   P                                                   q @     P Q   P                                                   % @     P 9   P                                                   % @     P !   P                                                   9 @     P 	   P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   ] @     P ֑   P                                                   . @     P y   P                                                     @     P a   P                                                   9=  @     P I   P                                                   e  @     P 1   P                                                     @     P    P                                                   U  @     P    P                                                   	  @     P    P                                                   e @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   54 @     P q   P                                                   54 @     P 	Y   P                                                   )       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    YP @     P  6   P                                                    D @     P  qI   P                                                    Em @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    a @     P     P                                                     @     P     P                                                     @     P     P                                                    - @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                    I @     P  A   P                                                    #	 @     P  )   P                                                    L	 @     P     P                                                    
+ @     P     P                                                    ɽ @     P     P                                                    } @     P     P                                                    1 @     P     P                                                    7 @     P     P                                                    ` @     P     P                                                    ` @     P  i   P                                                    M @     P  Q   P                                                     @     P  9   P                                                    - @     P  !   P                                                    e @     P  	   P                                                    # @     P     P                                                    	  @     P     P                                                    A2  @     P     P                                                    Z  @     P  ީ   P                                                      @     P     P                                                      @     P  y   P                                                    ]  @     P  a   P                                                      @     P  I   P                                                      @     P  1   P                                                     @     P     P                                                    u @     P     P                                                    )F @     P     P                                                    n @     P    P                                                     @     P    P                                                    E @     P 	   P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    a: @     P A   P                                                    %= @     P )   P                                                    ]1 @     P !   P                                                    Z @     P $   P                                                    ł @     P (   P                                                    y @     P ,   P                                                    - @     P 0   P                                                     @     P 4   P                                                    % @     P 8   P                                                    IN @     P <i   P                                                    v @     P @Q   P                                                    v @     P D9   P                                                     @     P H!   P                                                    y @     P L	   P                                                    m	 @     P O   P                                                    	 @     P S   P                                                    a	 @     P W   P                                                    	 @     P [   P                                                    
+ @     P _   P                                                    }9
+ @     P cy   P                                                    1b
+ @     P ga   P                                                    
+ @     P kI   P                                                    
+ @     P o1   P                                                    M
+ @     P s   P                                                     @     P w   P                                                     @     P z   P                                                    ] @     P ~   P                                                     @     P    P                                                    I @     P    P                                                     @     P    P                                                    $ @     P q   P                                                    eM @     P Y   P                                                    v @     P A   P                                                    ͞ @     P )   P                                                     @     P    P                                                    5 @     P    P                                                     @     P    P                                                    A @     P    P                                                    Qj @     P    P                                                    Qj @     P    P                                                     @     P    P                                                      @     P i   P                                                      @     P Q   P                                                    Y  @     P 9   P                                                     @     P !   P                                                    G @     P 	   P                                                    up @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P ة   P                                                    E @     P ܑ   P                                                    ; @     P y   P                                                    d @     P a   P                                                    a @     P I   P                                                    U @     P 1   P                                                    U @     P    P                                                     @     P    P                                                    A
+ @     P    P                                                    2 @     P    P                                                    [ @     P    P                                                    ] @     P    P                                                     @     P    P                                                     @     P q   P                                                    y @     P Y   P                                                    -' @     P A   P                                                    O @     P )   P                                                    x @     P    P                                                    I @     P    P                                                     @     P "   P                                                    ) @     P &   P                                                    R @     P *   P                                                    ) @     P .   P                                                    ) @     P 2   P                                                    F @     P 6i   P                                                    o @     P :Q   P                                                    E @     P >9   P                                                     @     P B!   P                                                     @     P F	   P                                                    a @     P I   P                                                    ; @     P M   P                                                    c @     P Q   P                                                    } @     P U   P                                                    1 @     P Y   P                                                     @     P ]y   P                                                    	 @     P aa   P                                                    f	 @     P eI   P                                                    A	 @     P i1   P                                                    Z
+ @     P m   P                                                    y
+ @     P q   P                                                    y
+ @     P t   P                                                    -
+ @     P x   P                                                    
+ @     P |   P                                                    
+ @     P    P                                                    I& @     P    P                                                    N @     P q   P                                                    w @     P Y   P                                                    e @     P A   P                                                     @     P )   P                                                     @     P    P                                                     @     P    P                                                    5C @     P    P                                                    k @     P    P                                                    ) @     P    P                                                     @     P    P                                                    a @     P    P                                                     @     P i   P                                                     @     P Q   P                                                    } @     P 9   P                                                    } @     P !   P                                                    1: @     P 	   P                                                    b @     P    P                                                     @     P    P                                                    M @     P    P                                                     @     P ҩ   P                                                     @     P ֑   P                                                    i. @     P y   P                                                      @     P a   P                                                    =  @     P I   P                                                    Ef  @     P 1   P                                                      @     P    P                                                      @     P    P                                                    a  @     P    P                                                     @     P    P                                                    q @     P    P                                                    % @     P    P                                                     @     P    P                                                    4 @     P q   P                                                    4 @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,14 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                   l @     P  qI   P                                                    @     P  u1   P                                                   U @     P  y   P                                                   	 @     P  }   P                                                    @     P     P                                                   Q @     P  :   P                                                   Q @     P     P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P  q   P                                                   YL	 @     P  Y   P                                                   
- @     P  A   P                                                    @     P  )   P                                                   % @     P     P                                                    @     P     P                                                    @     P     P                                                   7 @     P     P                                                   A` @     P     P                                                    @     P     P                                                   . @     P     P                                                   =W @     P  i   P                                                   " @     P  Q   P                                                   5	  @     P  9   P                                                   1  @     P  !   P                                                   Z  @     P  	   P                                                   Z  @     P     P                                                   Q  @     P     P                                                     @     P     P                                                   ( @     P  ީ   P                                                   Q @     P     P                                                    @     P  y   P                                                   E @     P  a   P                                                   n @     P  I   P                                                   9 @     P  1   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   U @     P    P                                                   e @     P    P                                                   5 @     P 	   P                                                   Y @     P    P                                                   m @     P q   P                                                   ! @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   =% @     P !   P                                                   M @     P $   P                                                   M @     P (   P                                                   v @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   U	 @     P 8   P                                                   		 @     P <i   P                                                   	 @     P @Q   P                                                   q
- @     P D9   P                                                   %9
- @     P H!   P                                                   a
- @     P L	   P                                                   
- @     P O   P                                                   A
- @     P S   P                                                   A
- @     P W   P                                                   
- @     P [   P                                                    @     P _   P                                                   m @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                   Y$ @     P o1   P                                                   M @     P s   P                                                   u @     P w   P                                                   u @     P z   P                                                   ) @     P ~   P                                                    @     P    P                                                    @     P    P                                                   EA @     P    P                                                   EA @     P q   P                                                   U @     P Y   P                                                     @     P A   P                                                   M  @     P )   P                                                     @     P    P                                                    @     P    P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P i   P                                                   ; @     P Q   P                                                   Ud @     P 9   P                                                   Ud @     P !   P                                                    @     P 	   P                                                   e> @     P    P                                                   	 @     P    P                                                   2 @     P    P                                                   Q[ @     P ة   P                                                    @     P ܑ   P                                                    @     P y   P                                                   m @     P a   P                                                   ! @     P I   P                                                   & @     P 1   P                                                   O @     P    P                                                   =x @     P    P                                                    @     P    P                                                    @     P    P                                                   MR @     P    P                                                   MR @     P    P                                                   { @     P    P                                                   F @     P q   P                                                   9o @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P "   P                                                   qc @     P &   P                                                   % @     P *   P                                                   ٴ @     P .   P                                                    @     P 2   P                                                   A	 @     P 6i   P                                                   	 @     P :Q   P                                                   	 @     P >9   P                                                   Q	 @     P B!   P                                                   Q	 @     P F	   P                                                   !
- @     P I   P                                                   ի
- @     P M   P                                                   
- @     P Q   P                                                   =
- @     P U   P                                                   % @     P Y   P                                                   N @     P ]y   P                                                   Yw @     P aa   P                                                    @     P eI   P                                                    @     P i1   P                                                   u @     P m   P                                                   ) @     P q   P                                                   B @     P t   P                                                    @     P x   P                                                   9 @     P |   P                                                    @     P    P                                                   E @     P    P                                                   E @     P q   P                                                    @     P Y   P                                                   q @     P A   P                                                   % @     P )   P                                                   9 @     P    P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   . @     P    P                                                     @     P i   P                                                   9=  @     P Q   P                                                     @     P 9   P                                                     @     P !   P                                                   I @     P 	   P                                                   ? @     P    P                                                   h @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                    @     P ֑   P                                                    @     P y   P                                                   54 @     P a   P                                                   \ @     P I   P                                                    @     P 1   P                                                   Q @     P    P                                                    @     P    P                                                    @     P    P                                                   m( @     P    P                                                   !Q @     P    P                                                   y @     P    P                                                   } @     P    P                                                   1+ @     P q   P                                                   S @     P 	Y   P                                                   %       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    y @     P  6   P                                                    Em @     P  qI   P                                                     @     P  u1   P                                                     @     P  y   P                                                    a @     P  }   P                                                     @     P     P                                                     @     P  :   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                    I @     P     P                                                    #	 @     P  q   P                                                    L	 @     P  Y   P                                                    E
+ @     P  A   P                                                     @     P  )   P                                                    } @     P     P                                                    1 @     P     P                                                    1 @     P     P                                                    7 @     P     P                                                    ` @     P     P                                                    M @     P     P                                                    . @     P     P                                                    W @     P  i   P                                                    # @     P  Q   P                                                    	  @     P  9   P                                                    A2  @     P  !   P                                                    Z  @     P  	   P                                                    Z  @     P     P                                                      @     P     P                                                    ]  @     P     P                                                    =) @     P  ީ   P                                                    Q @     P     P                                                    u @     P  y   P                                                    )F @     P  a   P                                                    n @     P  I   P                                                     @     P  1   P                                                    E @     P     P                                                    E @     P     P                                                     @     P     P                                                     @     P    P                                                    e @     P    P                                                     @     P 	   P                                                    Z @     P    P                                                    ł @     P q   P                                                    y @     P Y   P                                                    - @     P A   P                                                     @     P )   P                                                    % @     P !   P                                                    IN @     P $   P                                                    IN @     P (   P                                                    v @     P ,   P                                                    u @     P 0   P                                                    ) @     P 4   P                                                    	 @     P 8   P                                                    a	 @     P <i   P                                                    	 @     P @Q   P                                                    
+ @     P D9   P                                                    }9
+ @     P H!   P                                                    1b
+ @     P L	   P                                                    
+ @     P O   P                                                    
+ @     P S   P                                                    
+ @     P W   P                                                    M
+ @     P [   P                                                     @     P _   P                                                     @     P cy   P                                                    I @     P ga   P                                                     @     P kI   P                                                    $ @     P o1   P                                                    eM @     P s   P                                                    v @     P w   P                                                    ͞ @     P z   P                                                     @     P ~   P                                                    5 @     P    P                                                     @     P    P                                                    A @     P    P                                                    A @     P q   P                                                     @     P Y   P                                                    !  @     P A   P                                                      @     P )   P                                                    Y  @     P    P                                                     @     P    P                                                    G @     P    P                                                    up @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P    P                                                    E @     P i   P                                                    ; @     P Q   P                                                    d @     P 9   P                                                    d @     P !   P                                                    	 @     P 	   P                                                    > @     P    P                                                    A
+ @     P    P                                                    2 @     P    P                                                    [ @     P ة   P                                                    ] @     P ܑ   P                                                     @     P y   P                                                     @     P a   P                                                    y @     P I   P                                                    -' @     P 1   P                                                    O @     P    P                                                    x @     P    P                                                    I @     P    P                                                     @     P    P                                                    R @     P    P                                                    R @     P    P                                                    Y{ @     P    P                                                    F @     P q   P                                                    o @     P Y   P                                                    E @     P A   P                                                     @     P )   P                                                     @     P    P                                                    a @     P    P                                                    ; @     P "   P                                                    c @     P &   P                                                    } @     P *   P                                                    1 @     P .   P                                                     @     P 2   P                                                    	 @     P 6i   P                                                    A	 @     P :Q   P                                                    	 @     P >9   P                                                    	 @     P B!   P                                                    	 @     P F	   P                                                    y
+ @     P I   P                                                    -
+ @     P M   P                                                    
+ @     P Q   P                                                    
+ @     P U   P                                                    I& @     P Y   P                                                    N @     P ]y   P                                                    w @     P aa   P                                                    e @     P eI   P                                                     @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    5C @     P t   P                                                     @     P x   P                                                     @     P |   P                                                    E @     P    P                                                    E @     P    P                                                    E @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    } @     P )   P                                                    1: @     P    P                                                    b @     P    P                                                     @     P    P                                                    M @     P    P                                                     @     P    P                                                     @     P    P                                                    i. @     P    P                                                      @     P i   P                                                    =  @     P Q   P                                                    9  @     P 9   P                                                      @     P !   P                                                     @     P 	   P                                                    U@ @     P    P                                                    	i @     P    P                                                    q @     P    P                                                    q @     P ҩ   P                                                    % @     P ֑   P                                                     @     P y   P                                                    4 @     P a   P                                                    A] @     P I   P                                                     @     P 1   P                                                     @     P    P                                                    ] @     P    P                                                      @     P    P                                                    ( @     P    P                                                    yQ @     P    P                                                    -z @     P    P                                                     @     P    P                                                    + @     P q   P                                                    =T @     P 	Y   P                                                    }       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,11 +1,11 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  qI   P                                                   U @     P  u1   P                                                   	 @     P  y   P                                                    @     P  }   P                                                    @     P  :   P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                    @     P  >   P                                                    @     P  q   P                                                   UC @     P  Y   P                                                    @     P  A   P                                                   7 @     P  )   P                                                   A` @     P     P                                                    @     P     P                                                   =W @     P     P                                                    @     P     P                                                    @     P     P                                                   5	  @     P     P                                                   5	  @     P     P                                                   1  @     P  i   P                                                   Z  @     P  Q   P                                                   Q  @     P  9   P                                                   Q @     P  !   P                                                   Mz @     P  	   P                                                    @     P     P                                                   E @     P     P                                                   n @     P     P                                                   9 @     P  ީ   P                                                   9 @     P     P                                                    @     P  y   P                                                    @     P  a   P                                                   5 @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                   m @     P     P                                                   ! @     P     P                                                    @     P    P                                                    @     P    P                                                    @     P 	   P                                                   =% @     P    P                                                   M @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   9	 @     P )   P                                                   		 @     P !   P                                                   	 @     P $   P                                                   q
- @     P (   P                                                   %9
- @     P ,   P                                                   a
- @     P 0   P                                                   
- @     P 4   P                                                   
- @     P 8   P                                                   A
- @     P <i   P                                                   m @     P @Q   P                                                   !0 @     P D9   P                                                   X @     P H!   P                                                    @     P L	   P                                                   Y$ @     P O   P                                                   M @     P S   P                                                   u @     P W   P                                                   u @     P [   P                                                   ) @     P _   P                                                    @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                     @     P o1   P                                                   }*  @     P s   P                                                   1S  @     P w   P                                                     @     P z   P                                                    @     P ~   P                                                   iG @     P    P                                                   p @     P    P                                                   ј @     P    P                                                    @     P q   P                                                   9 @     P Y   P                                                    @     P A   P                                                   ; @     P )   P                                                   ; @     P    P                                                   e> @     P    P                                                   g @     P    P                                                   ͏ @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P i   P                                                   m @     P Q   P                                                   ! @     P 9   P                                                   & @     P !   P                                                   O @     P 	   P                                                   =x @     P    P                                                    @     P    P                                                    @     P    P                                                   { @     P ة   P                                                    @     P ܑ   P                                                   i @     P y   P                                                   9o @     P a   P                                                    @     P I   P                                                    @     P 1   P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P    P                                                   qc @     P    P                                                   % @     P    P                                                   ٴ @     P    P                                                    @     P    P                                                   A	 @     P q   P                                                   	 @     P Y   P                                                   	 @     P A   P                                                   Q	 @     P )   P                                                   	
- @     P    P                                                   ի
- @     P    P                                                   
- @     P "   P                                                   =
- @     P &   P                                                   % @     P *   P                                                   N @     P .   P                                                   Yw @     P 2   P                                                    @     P 6i   P                                                    @     P :Q   P                                                   u @     P >9   P                                                   ) @     P B!   P                                                   B @     P F	   P                                                   9 @     P I   P                                                    @     P M   P                                                   E @     P Q   P                                                   E @     P U   P                                                   Un @     P Y   P                                                   q @     P ]y   P                                                   % @     P aa   P                                                   9 @     P eI   P                                                   b @     P i1   P                                                   A @     P m   P                                                    @     P q   P                                                    @     P t   P                                                   ] @     P x   P                                                   . @     P |   P                                                     @     P    P                                                   9=  @     P    P                                                     @     P q   P                                                   I @     P Y   P                                                   ? @     P A   P                                                   h @     P )   P                                                   h @     P    P                                                   e @     P    P                                                    @     P    P                                                    @     P    P                                                   54 @     P    P                                                   \ @     P    P                                                    @     P    P                                                   Q @     P i   P                                                    @     P Q   P                                                    @     P 9   P                                                   m( @     P !   P                                                   !Q @     P 	   P                                                   y @     P    P                                                   1+ @     P    P                                                   S @     P    P                                                   | @     P ҩ   P                                                   M @     P ֑   P                                                    @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   i @     P 1   P                                                   H @     P    P                                                   p @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   	e @     P q   P                                                    @     P 	Y   P                                                   	       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                     @     P  6   P                                                     @     P  qI   P                                                     @     P  u1   P                                                    a @     P  y   P                                                     @     P  }   P                                                    ] @     P  :   P                                                    ] @     P     P                                                     @     P     P                                                    I @     P     P                                                    #	 @     P     P                                                    L	 @     P     P                                                     @     P  >   P                                                     @     P  q   P                                                    C @     P  Y   P                                                    1 @     P  A   P                                                    7 @     P  )   P                                                    ` @     P     P                                                    M @     P     P                                                    W @     P     P                                                    I @     P     P                                                     @     P     P                                                    	  @     P     P                                                    	  @     P     P                                                    A2  @     P  i   P                                                    Z  @     P  Q   P                                                      @     P  9   P                                                    Q @     P  !   P                                                    z @     P  	   P                                                    Y @     P     P                                                    )F @     P     P                                                    n @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    E @     P  y   P                                                     @     P  a   P                                                     @     P  I   P                                                    A @     P  1   P                                                     @     P     P                                                    ł @     P     P                                                    y @     P     P                                                    - @     P    P                                                     @     P    P                                                     @     P 	   P                                                    % @     P    P                                                    IN @     P q   P                                                    ) @     P Y   P                                                     @     P A   P                                                    	 @     P )   P                                                    a	 @     P !   P                                                    	 @     P $   P                                                    
+ @     P (   P                                                    }9
+ @     P ,   P                                                    1b
+ @     P 0   P                                                    
+ @     P 4   P                                                    
+ @     P 8   P                                                    
+ @     P <i   P                                                     @     P @Q   P                                                    y0 @     P D9   P                                                    -Y @     P H!   P                                                     @     P L	   P                                                    $ @     P O   P                                                    eM @     P S   P                                                    v @     P W   P                                                    ͞ @     P [   P                                                     @     P _   P                                                    5 @     P cy   P                                                    5 @     P ga   P                                                     @     P kI   P                                                    !  @     P o1   P                                                    *  @     P s   P                                                    S  @     P w   P                                                    Y  @     P z   P                                                     @     P ~   P                                                    G @     P    P                                                    up @     P    P                                                    ) @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    E @     P A   P                                                    ; @     P )   P                                                    ; @     P    P                                                    > @     P    P                                                    qg @     P    P                                                    % @     P    P                                                    2 @     P    P                                                    [ @     P    P                                                    ] @     P    P                                                     @     P i   P                                                     @     P Q   P                                                    y @     P 9   P                                                    -' @     P !   P                                                    O @     P 	   P                                                    x @     P    P                                                    I @     P    P                                                    I @     P    P                                                    Y{ @     P ة   P                                                     @     P ܑ   P                                                     @     P y   P                                                    o @     P a   P                                                    E @     P I   P                                                     @     P 1   P                                                     @     P    P                                                    a @     P    P                                                    ; @     P    P                                                    c @     P    P                                                    } @     P    P                                                    1 @     P    P                                                     @     P    P                                                    	 @     P q   P                                                    	 @     P Y   P                                                    	 @     P A   P                                                    	 @     P )   P                                                    ]	
+ @     P    P                                                    -
+ @     P    P                                                    
+ @     P "   P                                                    
+ @     P &   P                                                    I& @     P *   P                                                    N @     P .   P                                                    w @     P 2   P                                                    e @     P 6i   P                                                     @     P :Q   P                                                     @     P >9   P                                                     @     P B!   P                                                    5C @     P F	   P                                                     @     P I   P                                                    E @     P M   P                                                    E @     P Q   P                                                    E @     P U   P                                                    n @     P Y   P                                                     @     P ]y   P                                                    } @     P aa   P                                                    1: @     P eI   P                                                    b @     P i1   P                                                     @     P m   P                                                    M @     P q   P                                                     @     P t   P                                                     @     P x   P                                                    i. @     P |   P                                                      @     P    P                                                    =  @     P    P                                                      @     P q   P                                                     @     P Y   P                                                    U@ @     P A   P                                                    	i @     P )   P                                                    	i @     P    P                                                     @     P    P                                                    % @     P    P                                                     @     P    P                                                    4 @     P    P                                                    A] @     P    P                                                     @     P    P                                                     @     P i   P                                                    ] @     P Q   P                                                      @     P 9   P                                                    ( @     P !   P                                                    yQ @     P 	   P                                                    -z @     P    P                                                    + @     P    P                                                    =T @     P    P                                                    | @     P ҩ   P                                                     @     P ֑   P                                                    Y @     P y   P                                                     @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    uH @     P    P                                                    )q @     P    P                                                    ݙ @     P    P                                                     @     P    P                                                    E @     P    P                                                     @     P    P                                                    < @     P    P                                                    ae @     P q   P                                                     @     P 	Y   P                                                    		       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-NewReno4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,12 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                   U @     P  qI   P                                                   	 @     P  u1   P                                                    @     P  y   P                                                    @     P  :   P                                                    @     P  }   P                                                    @     P     P                                                   #	 @     P     P                                                   YL	 @     P     P                                                   UC @     P  >   P                                                   UC @     P     P                                                   	l @     P     P                                                   7 @     P  q   P                                                   A` @     P  Y   P                                                    @     P  A   P                                                    @     P  Bi   P                                                    @     P  )   P                                                    @     P     P                                                   Y @     P     P                                                   1  @     P     P                                                   Z  @     P     P                                                   Q  @     P     P                                                   Mz @     P     P                                                    @     P     P                                                    @     P  i   P                                                   i @     P  Q   P                                                   i @     P  9   P                                                   n @     P  !   P                                                   9 @     P  	   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   Q @     P  ީ   P                                                   1 @     P     P                                                   Y @     P  y   P                                                   ! @     P  a   P                                                   ! @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                    @     P     P                                                   9	 @     P     P                                                   D	 @     P    P                                                   m	 @     P    P                                                   U	 @     P 	   P                                                   	 @     P    P                                                   q
- @     P q   P                                                   q
- @     P Y   P                                                   %9
- @     P A   P                                                   a
- @     P )   P                                                   !0 @     P !   P                                                   X @     P $   P                                                    @     P (   P                                                   = @     P ,   P                                                    @     P 0   P                                                   Y$ @     P 4   P                                                   M @     P 8   P                                                   u @     P <i   P                                                   u @     P @Q   P                                                   u @     P D9   P                                                   ) @     P H!   P                                                   }*  @     P L	   P                                                   1S  @     P O   P                                                   {  @     P S   P                                                     @     P W   P                                                   M  @     P [   P                                                    @     P _   P                                                   iG @     P cy   P                                                   p @     P ga   P                                                   ј @     P kI   P                                                    @     P o1   P                                                    @     P s   P                                                   9 @     P w   P                                                   g @     P z   P                                                   ͏ @     P ~   P                                                    @     P    P                                                   5 @     P    P                                                   	 @     P    P                                                   Q[ @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   m @     P )   P                                                   ! @     P    P                                                   & @     P    P                                                   O @     P    P                                                   O @     P    P                                                    @     P    P                                                   i @     P    P                                                    @     P    P                                                    @     P i   P                                                   F @     P Q   P                                                    @     P 9   P                                                    @     P !   P                                                   U @     P 	   P                                                   	 @     P    P                                                   : @     P    P                                                   qc @     P    P                                                   % @     P ة   P                                                   ٴ @     P ܑ   P                                                   ٴ @     P y   P                                                   Q	 @     P a   P                                                   	
- @     P I   P                                                   1
- @     P 1   P                                                   mZ
- @     P    P                                                   !
- @     P    P                                                   
- @     P    P                                                   =
- @     P    P                                                   % @     P    P                                                   N @     P    P                                                   Yw @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   u @     P A   P                                                   ) @     P )   P                                                    @     P    P                                                    @     P    P                                                   E @     P "   P                                                   Un @     P &   P                                                   	 @     P *   P                                                    @     P .   P                                                   % @     P 2   P                                                   9 @     P 6i   P                                                   b @     P :Q   P                                                   A @     P >9   P                                                    @     P B!   P                                                    @     P F	   P                                                   ] @     P I   P                                                   . @     P M   P                                                     @     P Q   P                                                   I @     P U   P                                                   ? @     P Y   P                                                   h @     P ]y   P                                                   h @     P aa   P                                                   e @     P eI   P                                                    @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   54 @     P t   P                                                   \ @     P x   P                                                    @     P |   P                                                   Q @     P    P                                                    @     P    P                                                    @     P q   P                                                   m( @     P Y   P                                                   !Q @     P A   P                                                   S @     P )   P                                                   | @     P    P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   i @     P    P                                                   H @     P    P                                                   p @     P i   P                                                    @     P Q   P                                                   9 @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   U< @     P    P                                                   	e @     P    P                                                    @     P    P                                                   q @     P ҩ   P                                                    @     P ֑   P                                                   5 @     P y   P                                                    @     P a   P                                                   
- @     P I   P                                                   Q3 @     P 1   P                                                   \ @     P    P                                                   \ @     P    P                                                    @     P    P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                   '	 @     P    P                                                   =P	 @     P q   P                                                   x	 @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    u @     P  6   P                                                     @     P  qI   P                                                    a @     P  u1   P                                                     @     P  y   P                                                     @     P  :   P                                                     @     P  }   P                                                    I @     P     P                                                    #	 @     P     P                                                    L	 @     P     P                                                    C @     P  >   P                                                    C @     P     P                                                    al @     P     P                                                    7 @     P  q   P                                                    ` @     P  Y   P                                                    M @     P  A   P                                                    I @     P  Bi   P                                                    I @     P  )   P                                                     @     P     P                                                     @     P     P                                                    A2  @     P     P                                                    Z  @     P     P                                                      @     P     P                                                    z @     P     P                                                    Y @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    n @     P  !   P                                                     @     P  	   P                                                    E @     P     P                                                    A @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                    ]1 @     P     P                                                    Z @     P  y   P                                                    y @     P  a   P                                                    y @     P  I   P                                                    - @     P  1   P                                                     @     P     P                                                     @     P     P                                                    	 @     P     P                                                    EE	 @     P    P                                                    m	 @     P    P                                                    	 @     P 	   P                                                    	 @     P    P                                                    
+ @     P q   P                                                    
+ @     P Y   P                                                    }9
+ @     P A   P                                                    1b
+ @     P )   P                                                    y0 @     P !   P                                                    -Y @     P $   P                                                     @     P (   P                                                     @     P ,   P                                                    I @     P 0   P                                                    $ @     P 4   P                                                    eM @     P 8   P                                                    v @     P <i   P                                                    ͞ @     P @Q   P                                                    ͞ @     P D9   P                                                     @     P H!   P                                                    *  @     P L	   P                                                    S  @     P O   P                                                    =|  @     P S   P                                                      @     P W   P                                                      @     P [   P                                                     @     P _   P                                                    G @     P cy   P                                                    up @     P ga   P                                                    ) @     P kI   P                                                     @     P o1   P                                                     @     P s   P                                                     @     P w   P                                                    qg @     P z   P                                                    % @     P ~   P                                                    ٸ @     P    P                                                     @     P    P                                                    A
+ @     P    P                                                    [ @     P q   P                                                    ] @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    y @     P    P                                                    -' @     P    P                                                    O @     P    P                                                    O @     P    P                                                     @     P    P                                                     @     P    P                                                    u @     P    P                                                    ) @     P i   P                                                    F @     P Q   P                                                    E @     P 9   P                                                     @     P !   P                                                     @     P 	   P                                                    a @     P    P                                                    ; @     P    P                                                    c @     P    P                                                    } @     P ة   P                                                    1 @     P ܑ   P                                                    1 @     P y   P                                                    	 @     P a   P                                                    ]	
+ @     P I   P                                                    2
+ @     P 1   P                                                    Z
+ @     P    P                                                    y
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    I& @     P    P                                                    N @     P    P                                                    w @     P    P                                                    e @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    E @     P    P                                                    E @     P    P                                                    E @     P "   P                                                    n @     P &   P                                                    a @     P *   P                                                     @     P .   P                                                    } @     P 2   P                                                    1: @     P 6i   P                                                    b @     P :Q   P                                                     @     P >9   P                                                    M @     P B!   P                                                     @     P F	   P                                                     @     P I   P                                                    i. @     P M   P                                                      @     P Q   P                                                     @     P U   P                                                    U@ @     P Y   P                                                    	i @     P ]y   P                                                    	i @     P aa   P                                                     @     P eI   P                                                    q @     P i1   P                                                    % @     P m   P                                                     @     P q   P                                                    4 @     P t   P                                                    A] @     P x   P                                                     @     P |   P                                                     @     P    P                                                    ] @     P    P                                                      @     P q   P                                                    ( @     P Y   P                                                    yQ @     P A   P                                                    =T @     P )   P                                                    | @     P    P                                                     @     P    P                                                    Y @     P    P                                                    Y @     P    P                                                     @     P    P                                                     @     P    P                                                    uH @     P    P                                                    )q @     P i   P                                                    ݙ @     P Q   P                                                     @     P 9   P                                                    E @     P !   P                                                     @     P 	   P                                                    < @     P    P                                                    ae @     P    P                                                     @     P    P                                                    ɶ @     P ҩ   P                                                    ِ @     P ֑   P                                                     @     P y   P                                                    A @     P a   P                                                    
+ @     P I   P                                                    3 @     P 1   P                                                    ]\ @     P    P                                                    ]\ @     P    P                                                     @     P    P                                                    ŭ @     P    P                                                    y @     P    P                                                    - @     P    P                                                    '	 @     P    P                                                    P	 @     P q   P                                                    Iy	 @     P 	Y   P                                                    =       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                   M' @     P     P                                                   M' @     P     P                                                   P @     P     P                                                   P @     P     P                                                   x @     P     P                                                   x @     P  q   P                                                   i @     P  Y   P                                                   i @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9D @     P     P                                                   9D @     P     P                                                   l @     P  i   P                                                   l @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   U @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   	 @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   q8 @     P  y   P                                                   q8 @     P  a   P                                                   %a @     P  I   P                                                   %a @     P  1   P                                                   5; @     P     P                                                   5; @     P     P                                                   c @     P     P                                                   c @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Q @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   m/ @     P $   P                                                   m/ @     P (   P                                                   !X @     P ,   P                                                   !X @     P 0   P                                                   Հ @     P 4   P                                                   Հ @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   = @     P D9   P                                                   = @     P H!   P                                                    @     P L	   P                                                    @     P O   P                                                   #	 @     P S   P                                                   #	 @     P W   P                                                   YL	 @     P [   P                                                   YL	 @     P _   P                                                   u	 @     P cy   P                                                   u	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   u	 @     P s   P                                                   u	 @     P w   P                                                   )	 @     P z   P                                                   )	 @     P ~   P                                                   
- @     P    P                                                   
- @     P    P                                                   @
- @     P    P                                                   @
- @     P q   P                                                   Ei
- @     P Y   P                                                   Ei
- @     P A   P                                                   
- @     P )   P                                                   
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   a
- @     P    P                                                   a
- @     P    P                                                    @     P    P                                                    @     P    P                                                   4 @     P i   P                                                   4 @     P Q   P                                                   }] @     P 9   P                                                   }] @     P !   P                                                   1 @     P 	   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   M  @     P y   P                                                   M  @     P a   P                                                   ) @     P I   P                                                   ) @     P 1   P                                                   Q @     P    P                                                   Q @     P    P                                                   iz @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                   E @     P q   P                                                   n @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                   q @     P    P                                                   %: @     P "   P                                                   b @     P &   P                                                    @     P *   P                                                   A @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   ]. @     P :Q   P                                                     @     P >9   P                                                   =  @     P B!   P                                                   9f  @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                   U  @     P Q   P                                                   		 @     P U   P                                                   1 @     P Y   P                                                   qZ @     P ]y   P                                                   % @     P aa   P                                                   ٫ @     P eI   P                                                    @     P i1   P                                                   A @     P m   P                                                   % @     P q   P                                                   N @     P t   P                                                   ]w @     P x   P                                                    @     P |   P                                                    @     P    P                                                   y @     P    P                                                   - @     P q   P                                                   B @     P Y   P                                                   k @     P A   P                                                   I @     P )   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                   7 @     P    P                                                   _ @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   Q+ @     P 9   P                                                   T @     P !   P                                                   | @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   =H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   Y @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   u< @     P    P                                                   )e @     P    P                                                   ݍ @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   0 @     P q   P                                                   aY @     P 	Y   P                                                   yn       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    A @     P  qI   P                                                    A @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    ' @     P     P                                                    ' @     P     P                                                    YP @     P     P                                                    YP @     P     P                                                    y @     P     P                                                    y @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    u @     P  )   P                                                    u @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                     @     P     P                                                     @     P     P                                                    D @     P     P                                                    D @     P     P                                                    Em @     P  i   P                                                    Em @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    a @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    8 @     P  y   P                                                    8 @     P  a   P                                                    }a @     P  I   P                                                    }a @     P  1   P                                                    ; @     P     P                                                    ; @     P     P                                                    Ad @     P     P                                                    Ad @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    / @     P $   P                                                    / @     P (   P                                                    yX @     P ,   P                                                    yX @     P 0   P                                                    - @     P 4   P                                                    - @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    I @     P L	   P                                                    I @     P O   P                                                    #	 @     P S   P                                                    #	 @     P W   P                                                    L	 @     P [   P                                                    L	 @     P _   P                                                    eu	 @     P cy   P                                                    eu	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    	 @     P w   P                                                    	 @     P z   P                                                    	 @     P ~   P                                                    5
+ @     P    P                                                    5
+ @     P    P                                                    @
+ @     P    P                                                    @
+ @     P q   P                                                    i
+ @     P Y   P                                                    i
+ @     P A   P                                                    Q
+ @     P )   P                                                    Q
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    m @     P    P                                                    m @     P    P                                                    !5 @     P i   P                                                    !5 @     P Q   P                                                    ] @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    = @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                      @     P y   P                                                      @     P a   P                                                    Y) @     P I   P                                                    Y) @     P 1   P                                                    R @     P    P                                                    R @     P    P                                                    z @     P    P                                                    z @     P    P                                                    u @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P q   P                                                    EF @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    a @     P    P                                                     @     P    P                                                     @     P "   P                                                    }: @     P &   P                                                    1c @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    M @     P 6i   P                                                     @     P :Q   P                                                    . @     P >9   P                                                    )  @     P B!   P                                                    =  @     P F	   P                                                    f  @     P I   P                                                    E  @     P M   P                                                      @     P Q   P                                                      @     P U   P                                                    a	 @     P Y   P                                                    2 @     P ]y   P                                                    Z @     P aa   P                                                    } @     P eI   P                                                    1 @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    M& @     P t   P                                                    O @     P x   P                                                    w @     P |   P                                                    i @     P    P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    9C @     P A   P                                                    k @     P )   P                                                     @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q7 @     P    P                                                    %` @     P    P                                                    و @     P    P                                                     @     P i   P                                                    A @     P Q   P                                                     @     P 9   P                                                    + @     P !   P                                                    ]T @     P 	   P                                                    } @     P    P                                                    ť @     P    P                                                    y @     P    P                                                    - @     P ҩ   P                                                     @     P ֑   P                                                    H @     P y   P                                                    Iq @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                    < @     P    P                                                    e @     P    P                                                    5 @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P q   P                                                    1 @     P 	Y   P                                                    n       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,14 +1,15 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   P @     P  6   P                                                   9D @     P  qI   P                                                   l @     P  u1   P                                                    @     P  y   P                                                   U @     P  }   P                                                   	 @     P     P                                                    @     P     P                                                    @     P     P                                                   Հ @     P     P                                                    @     P     P                                                   = @     P  q   P                                                   = @     P  Y   P                                                    @     P  A   P                                                   #	 @     P  )   P                                                   YL	 @     P     P                                                   9
- @     P     P                                                   q @     P     P                                                   % @     P     P                                                    @     P     P                                                   7 @     P     P                                                   A` @     P     P                                                   A` @     P  i   P                                                    @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                    @     P  	   P                                                   " @     P     P                                                   5	  @     P     P                                                   1  @     P     P                                                   Z  @     P  ީ   P                                                   Q  @     P     P                                                   Q  @     P  y   P                                                     @     P  a   P                                                     @     P  I   P                                                   1  @     P  1   P                                                   i @     P     P                                                    @     P     P                                                   E @     P     P                                                   n @     P    P                                                   9 @     P    P                                                    @     P 	   P                                                    @     P    P                                                   U @     P q   P                                                   U @     P Y   P                                                   	: @     P A   P                                                   < @     P )   P                                                   1 @     P !   P                                                   Y @     P $   P                                                   m @     P (   P                                                   ! @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   =% @     P 8   P                                                   M @     P <i   P                                                   v @     P @Q   P                                                   v @     P D9   P                                                   Y @     P H!   P                                                   iy @     P L	   P                                                   m	 @     P O   P                                                   U	 @     P S   P                                                   		 @     P W   P                                                   	 @     P [   P                                                   q
- @     P _   P                                                   %9
- @     P cy   P                                                   a
- @     P ga   P                                                   
- @     P kI   P                                                   A
- @     P o1   P                                                   
- @     P s   P                                                    @     P w   P                                                    @     P z   P                                                    @     P ~   P                                                   = @     P    P                                                    @     P    P                                                    @     P    P                                                   Y$ @     P q   P                                                   M @     P Y   P                                                   u @     P A   P                                                   u @     P )   P                                                   ) @     P    P                                                    @     P    P                                                    @     P    P                                                   EA @     P    P                                                   i @     P    P                                                   i @     P    P                                                    @     P    P                                                     @     P i   P                                                   M  @     P Q   P                                                     @     P 9   P                                                    @     P !   P                                                   iG @     P 	   P                                                   p @     P    P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P ة   P                                                    @     P ܑ   P                                                   ; @     P y   P                                                   Ud @     P a   P                                                   	 @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   5 @     P    P                                                   	 @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P    P                                                   m @     P q   P                                                   ! @     P Y   P                                                   & @     P A   P                                                   O @     P )   P                                                   =x @     P    P                                                    @     P    P                                                    @     P "   P                                                   ) @     P &   P                                                   MR @     P *   P                                                    @     P .   P                                                    @     P 2   P                                                   F @     P 6i   P                                                   9o @     P :Q   P                                                    @     P >9   P                                                    @     P B!   P                                                   U @     P F	   P                                                   	 @     P I   P                                                   : @     P M   P                                                   qc @     P Q   P                                                   % @     P U   P                                                   ٴ @     P Y   P                                                    @     P ]y   P                                                   A	 @     P aa   P                                                   5f	 @     P eI   P                                                   	 @     P i1   P                                                   mZ
- @     P m   P                                                   !
- @     P q   P                                                   !
- @     P t   P                                                   ի
- @     P x   P                                                   
- @     P |   P                                                   =
- @     P    P                                                   % @     P    P                                                   N @     P q   P                                                   Yw @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   u @     P    P                                                   ) @     P    P                                                   B @     P    P                                                   k @     P    P                                                   Ѣ @     P    P                                                    @     P    P                                                   	 @     P    P                                                    @     P i   P                                                   q @     P Q   P                                                   % @     P 9   P                                                   % @     P !   P                                                   9 @     P 	   P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   ] @     P ֑   P                                                   . @     P y   P                                                     @     P a   P                                                   9=  @     P I   P                                                   e  @     P 1   P                                                     @     P    P                                                   U  @     P    P                                                   	  @     P    P                                                   e @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   54 @     P q   P                                                   54 @     P 	Y   P                                                   )       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    YP @     P  6   P                                                    D @     P  qI   P                                                    Em @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    a @     P     P                                                     @     P     P                                                     @     P     P                                                    - @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                    I @     P  A   P                                                    #	 @     P  )   P                                                    L	 @     P     P                                                    
+ @     P     P                                                    ɽ @     P     P                                                    } @     P     P                                                    1 @     P     P                                                    7 @     P     P                                                    ` @     P     P                                                    ` @     P  i   P                                                    M @     P  Q   P                                                     @     P  9   P                                                    - @     P  !   P                                                    e @     P  	   P                                                    # @     P     P                                                    	  @     P     P                                                    A2  @     P     P                                                    Z  @     P  ީ   P                                                      @     P     P                                                      @     P  y   P                                                    ]  @     P  a   P                                                      @     P  I   P                                                      @     P  1   P                                                     @     P     P                                                    u @     P     P                                                    )F @     P     P                                                    n @     P    P                                                     @     P    P                                                    E @     P 	   P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    a: @     P A   P                                                    %= @     P )   P                                                    ]1 @     P !   P                                                    Z @     P $   P                                                    ł @     P (   P                                                    y @     P ,   P                                                    - @     P 0   P                                                     @     P 4   P                                                    % @     P 8   P                                                    IN @     P <i   P                                                    v @     P @Q   P                                                    v @     P D9   P                                                     @     P H!   P                                                    y @     P L	   P                                                    m	 @     P O   P                                                    	 @     P S   P                                                    a	 @     P W   P                                                    	 @     P [   P                                                    
+ @     P _   P                                                    }9
+ @     P cy   P                                                    1b
+ @     P ga   P                                                    
+ @     P kI   P                                                    
+ @     P o1   P                                                    M
+ @     P s   P                                                     @     P w   P                                                     @     P z   P                                                    ] @     P ~   P                                                     @     P    P                                                    I @     P    P                                                     @     P    P                                                    $ @     P q   P                                                    eM @     P Y   P                                                    v @     P A   P                                                    ͞ @     P )   P                                                     @     P    P                                                    5 @     P    P                                                     @     P    P                                                    A @     P    P                                                    Qj @     P    P                                                    Qj @     P    P                                                     @     P    P                                                      @     P i   P                                                      @     P Q   P                                                    Y  @     P 9   P                                                     @     P !   P                                                    G @     P 	   P                                                    up @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P ة   P                                                    E @     P ܑ   P                                                    ; @     P y   P                                                    d @     P a   P                                                    a @     P I   P                                                    U @     P 1   P                                                    U @     P    P                                                     @     P    P                                                    A
+ @     P    P                                                    2 @     P    P                                                    [ @     P    P                                                    ] @     P    P                                                     @     P    P                                                     @     P q   P                                                    y @     P Y   P                                                    -' @     P A   P                                                    O @     P )   P                                                    x @     P    P                                                    I @     P    P                                                     @     P "   P                                                    ) @     P &   P                                                    R @     P *   P                                                    ) @     P .   P                                                    ) @     P 2   P                                                    F @     P 6i   P                                                    o @     P :Q   P                                                    E @     P >9   P                                                     @     P B!   P                                                     @     P F	   P                                                    a @     P I   P                                                    ; @     P M   P                                                    c @     P Q   P                                                    } @     P U   P                                                    1 @     P Y   P                                                     @     P ]y   P                                                    	 @     P aa   P                                                    f	 @     P eI   P                                                    A	 @     P i1   P                                                    Z
+ @     P m   P                                                    y
+ @     P q   P                                                    y
+ @     P t   P                                                    -
+ @     P x   P                                                    
+ @     P |   P                                                    
+ @     P    P                                                    I& @     P    P                                                    N @     P q   P                                                    w @     P Y   P                                                    e @     P A   P                                                     @     P )   P                                                     @     P    P                                                     @     P    P                                                    5C @     P    P                                                    k @     P    P                                                    ) @     P    P                                                     @     P    P                                                    a @     P    P                                                     @     P i   P                                                     @     P Q   P                                                    } @     P 9   P                                                    } @     P !   P                                                    1: @     P 	   P                                                    b @     P    P                                                     @     P    P                                                    M @     P    P                                                     @     P ҩ   P                                                     @     P ֑   P                                                    i. @     P y   P                                                      @     P a   P                                                    =  @     P I   P                                                    Ef  @     P 1   P                                                      @     P    P                                                      @     P    P                                                    a  @     P    P                                                     @     P    P                                                    q @     P    P                                                    % @     P    P                                                     @     P    P                                                    4 @     P q   P                                                    4 @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,9 +1,9 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                   l @     P  qI   P                                                    @     P  u1   P                                                   U @     P  y   P                                                   	 @     P  }   P                                                    @     P     P                                                    @     P  :   P                                                   7 @     P     P                                                   7 @     P     P                                                   7 @     P     P                                                   7 @     P     P                                                   7 @     P  q   P                                                   7 @     P  Y   P                                                   7 @     P  A   P                                                   7 @     P  )   P                                                   7 @     P     P                                                   1  @     P     P                                                   Z  @     P     P                                                   Q  @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                   m  @     P  i   P                                                   !& @     P  Q   P                                                   N @     P  9   P                                                   w @     P  !   P                                                   n @     P  	   P                                                   9 @     P     P                                                    @     P     P                                                    @     P     P                                                   U @     P  ީ   P                                                   	: @     P     P                                                   	: @     P  y   P                                                   b @     P  a   P                                                   q @     P  I   P                                                   % @     P  1   P                                                    @     P     P                                                   ! @     P     P                                                    @     P     P                                                    @     P    P                                                   =% @     P    P                                                   M @     P 	   P                                                   v @     P    P                                                   Y @     P q   P                                                   Y @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   u @     P !   P                                                   )B @     P $   P                                                   	 @     P (   P                                                   q
- @     P ,   P                                                   %9
- @     P 0   P                                                   a
- @     P 4   P                                                   
- @     P 8   P                                                   A
- @     P <i   P                                                   
- @     P @Q   P                                                    @     P D9   P                                                   ]- @     P H!   P                                                   ]- @     P L	   P                                                   V @     P O   P                                                   ~ @     P S   P                                                   y @     P W   P                                                   Y$ @     P [   P                                                   M @     P _   P                                                   u @     P cy   P                                                   u @     P ga   P                                                   ) @     P kI   P                                                    @     P o1   P                                                    @     P s   P                                                   EA @     P w   P                                                   i @     P z   P                                                    @     P ~   P                                                    @     P    P                                                   a @     P    P                                                    @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   iG @     P A   P                                                   p @     P )   P                                                   ј @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                   ; @     P    P                                                   Ud @     P    P                                                   	 @     P    P                                                    @     P i   P                                                   q @     P Q   P                                                   q @     P 9   P                                                   % @     P !   P                                                   / @     P 	   P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P    P                                                   m @     P ة   P                                                   ! @     P ܑ   P                                                   & @     P y   P                                                   O @     P a   P                                                   =x @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   Y @     P    P                                                    @     P    P                                                   C @     P    P                                                   ul @     P    P                                                   ul @     P    P                                                   ) @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                   : @     P    P                                                   qc @     P    P                                                   % @     P "   P                                                   ٴ @     P &   P                                                    @     P *   P                                                   A	 @     P .   P                                                   .	 @     P 2   P                                                   W	 @     P 6i   P                                                   ]	 @     P :Q   P                                                   	 @     P >9   P                                                   	 @     P B!   P                                                   	 @     P F	   P                                                   y	 @     P I   P                                                   
- @     P M   P                                                   =
- @     P Q   P                                                   % @     P U   P                                                   N @     P Y   P                                                   Yw @     P ]y   P                                                    @     P aa   P                                                    @     P eI   P                                                   u @     P i1   P                                                   ) @     P m   P                                                   B @     P q   P                                                   k @     P t   P                                                   E @     P x   P                                                    @     P |   P                                                    @     P    P                                                   a @     P    P                                                   7 @     P q   P                                                   _ @     P Y   P                                                   _ @     P A   P                                                   % @     P )   P                                                   9 @     P    P                                                   b @     P    P                                                   A @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   . @     P    P                                                     @     P i   P                                                   9=  @     P Q   P                                                   e  @     P 9   P                                                     @     P !   P                                                   U  @     P 	   P                                                   	  @     P    P                                                    @     P    P                                                   q1 @     P    P                                                   %Z @     P ҩ   P                                                   ق @     P ֑   P                                                   ق @     P y   P                                                    @     P a   P                                                   54 @     P I   P                                                   \ @     P 1   P                                                    @     P    P                                                   Q @     P    P                                                    @     P    P                                                    @     P    P                                                   m( @     P    P                                                   !Q @     P    P                                                   y @     P    P                                                    @     P q   P                                                   = @     P 	Y   P                                                   }	       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    y @     P  6   P                                                    Em @     P  qI   P                                                     @     P  u1   P                                                     @     P  y   P                                                    a @     P  }   P                                                     @     P     P                                                    I @     P  :   P                                                    7 @     P     P                                                    7 @     P     P                                                    7 @     P     P                                                    7 @     P     P                                                    7 @     P  q   P                                                    7 @     P  Y   P                                                    7 @     P  A   P                                                    7 @     P  )   P                                                    7 @     P     P                                                    A2  @     P     P                                                    Z  @     P     P                                                      @     P     P                                                    ]  @     P     P                                                    ]  @     P     P                                                      @     P     P                                                      @     P  i   P                                                    y& @     P  Q   P                                                    -O @     P  9   P                                                    w @     P  !   P                                                    n @     P  	   P                                                     @     P     P                                                    E @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                    a: @     P     P                                                    a: @     P  y   P                                                    c @     P  a   P                                                    ɋ @     P  I   P                                                    } @     P  1   P                                                    1 @     P     P                                                    y @     P     P                                                    - @     P     P                                                     @     P    P                                                    % @     P    P                                                    IN @     P 	   P                                                    v @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    e @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    B @     P $   P                                                    	 @     P (   P                                                    
+ @     P ,   P                                                    }9
+ @     P 0   P                                                    1b
+ @     P 4   P                                                    
+ @     P 8   P                                                    
+ @     P <i   P                                                    M
+ @     P @Q   P                                                     @     P D9   P                                                    - @     P H!   P                                                    - @     P L	   P                                                    iV @     P O   P                                                     @     P S   P                                                    ѧ @     P W   P                                                    $ @     P [   P                                                    eM @     P _   P                                                    v @     P cy   P                                                    ͞ @     P ga   P                                                     @     P kI   P                                                    5 @     P o1   P                                                     @     P s   P                                                    A @     P w   P                                                    Qj @     P z   P                                                     @     P ~   P                                                     @     P    P                                                     @     P    P                                                    m @     P    P                                                    ! @     P q   P                                                     @     P Y   P                                                    G @     P A   P                                                    up @     P )   P                                                    ) @     P    P                                                     @     P    P                                                     @     P    P                                                    E @     P    P                                                    ; @     P    P                                                    d @     P    P                                                    a @     P    P                                                     @     P i   P                                                     @     P Q   P                                                     @     P 9   P                                                    } @     P !   P                                                    10 @     P 	   P                                                    [ @     P    P                                                    ] @     P    P                                                     @     P    P                                                     @     P ة   P                                                    y @     P ܑ   P                                                    -' @     P y   P                                                    O @     P a   P                                                    x @     P I   P                                                    I @     P 1   P                                                     @     P    P                                                     @     P    P                                                    e @     P    P                                                    D @     P    P                                                    l @     P    P                                                    l @     P    P                                                     @     P    P                                                    E @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    a @     P )   P                                                    ; @     P    P                                                    c @     P    P                                                    } @     P "   P                                                    1 @     P &   P                                                     @     P *   P                                                    	 @     P .   P                                                    M/	 @     P 2   P                                                    X	 @     P 6i   P                                                    	 @     P :Q   P                                                    i	 @     P >9   P                                                    	 @     P B!   P                                                    	 @     P F	   P                                                    	 @     P I   P                                                    
+ @     P M   P                                                    
+ @     P Q   P                                                    I& @     P U   P                                                    N @     P Y   P                                                    w @     P ]y   P                                                    e @     P aa   P                                                     @     P eI   P                                                     @     P i1   P                                                     @     P m   P                                                    5C @     P q   P                                                    k @     P t   P                                                     @     P x   P                                                    Q @     P |   P                                                     @     P    P                                                     @     P    P                                                    m7 @     P q   P                                                    !` @     P Y   P                                                    !` @     P A   P                                                    } @     P )   P                                                    1: @     P    P                                                    b @     P    P                                                     @     P    P                                                    M @     P    P                                                     @     P    P                                                     @     P    P                                                    i. @     P    P                                                      @     P i   P                                                    =  @     P Q   P                                                    Ef  @     P 9   P                                                      @     P !   P                                                      @     P 	   P                                                    a  @     P    P                                                    	 @     P    P                                                    1 @     P    P                                                    }Z @     P ҩ   P                                                    1 @     P ֑   P                                                    1 @     P y   P                                                     @     P a   P                                                    4 @     P I   P                                                    A] @     P 1   P                                                     @     P    P                                                     @     P    P                                                    ] @     P    P                                                      @     P    P                                                    ( @     P    P                                                    yQ @     P    P                                                    -z @     P    P                                                     @     P q   P                                                     @     P 	Y   P                                                    	       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,17 +1,9 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  qI   P                                                   U @     P  u1   P                                                   	 @     P  y   P                                                    @     P  }   P                                                   #	 @     P  :   P                                                   h @     P  >   P                                                   Z @     P     P                                                   Z @     P     P                                                   
- @     P     P                                                   
- @     P     P                                                   
- @     P     P                                                   
- @     P  q   P                                                    @     P  Y   P                                                    @     P  A   P                                                   FG @     P  )   P                                                   FG @     P     P                                                   o @     P     P                                                   o @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   A @     P  i   P                                                   Vj @     P  Q   P                                                   
- @     P  9   P                                                    @     P  !   P                                                   r @     P  	   P                                                   & @     P     P                                                   5 @     P     P                                                   U @     P     P                                                   >~ @     P  ީ   P                                                    @     P     P                                                    @     P  y   P                                                    @     P  a   P                                                   Z @     P  I   P                                                   ! @     P  1   P                                                   I @     P     P                                                   vr @     P     P                                                   * @     P     P                                                   & @     P    P                                                   ں @     P    P                                                    @     P 	   P                                                   B	 @     P    P                                                   4	 @     P q   P                                                   4	 @     P Y   P                                                   ]	 @     P A   P                                                   ^	 @     P )   P                                                   	 @     P !   P                                                   	 @     P $   P                                                   z 
- @     P (   P                                                    @     P ,   P                                                   v @     P 0   P                                                   *  @     P 4   P                                                   H @     P 8   P                                                   q @     P <i   P                                                   F @     P @Q   P                                                   F @     P D9   P                                                    @     P H!   P                                                    @     P L	   P                                                   b @     P O   P                                                   = @     P S   P                                                   e @     P W   P                                                   ^ @     P [   P                                                   4 @     P _   P                                                     @     P cy   P                                                   :C  @     P ga   P                                                   k  @     P kI   P                                                     @     P o1   P                                                   V  @     P s   P                                                   
-  @     P w   P                                                   
-  @     P z   P                                                    @     P ~   P                                                   r7 @     P    P                                                   &` @     P    P                                                   ڈ @     P    P                                                    @     P q   P                                                   n. @     P Y   P                                                   "W @     P A   P                                                    @     P )   P                                                    @     P    P                                                   > @     P    P                                                    @     P    P                                                   " @     P    P                                                   ZK @     P    P                                                   ZK @     P    P                                                   t @     P    P                                                    @     P i   P                                                   v @     P Q   P                                                   * @     P 9   P                                                   VB @     P !   P                                                   
-k @     P 	   P                                                    @     P    P                                                   r @     P    P                                                   & @     P    P                                                    @     P ة   P                                                   6 @     P ܑ   P                                                   B_ @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   ^ @     P 1   P                                                   ^ @     P    P                                                    @     P    P                                                   * @     P    P                                                   zS @     P    P                                                   ~	 @     P    P                                                   	 @     P    P                                                   Z	 @     P    P                                                   	 @     P q   P                                                   !
- @     P Y   P                                                   vJ
- @     P A   P                                                   *s
- @     P )   P                                                   ޛ
- @     P    P                                                   
- @     P    P                                                   F
- @     P "   P                                                    @     P &   P                                                   > @     P *   P                                                   > @     P .   P                                                   bg @     P 2   P                                                    @     P 6i   P                                                   ʸ @     P :Q   P                                                    @     P >9   P                                                   B @     P B!   P                                                    @     P F	   P                                                   5 @     P I   P                                                   ^^ @     P M   P                                                    @     P Q   P                                                   Ư @     P U   P                                                   z @     P Y   P                                                   . @     P ]y   P                                                   ) @     P aa   P                                                   R @     P eI   P                                                   J{ @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                    @     P t   P                                                   f @     P x   P                                                    @     P |   P                                                     @     P    P                                                     @     P    P                                                   R @     P q   P                                                   0 @     P Y   P                                                   X @     P A   P                                                   n @     P )   P                                                   " @     P    P                                                    @     P    P                                                    @     P    P                                                   >$ @     P    P                                                   L @     P    P                                                   u @     P    P                                                   Z @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   v @     P 9   P                                                   v @     P !   P                                                   *A @     P 	   P                                                    @     P    P                                                   : @     P    P                                                   C @     P    P                                                   l @     P ҩ   P                                                   V @     P ֑   P                                                   
- @     P y   P                                                    @     P a   P                                                   r @     P I   P                                                   &8 @     P 1   P                                                   ` @     P    P                                                    @     P    P                                                   B @     P    P                                                    @     P    P                                                    @     P    P                                                   ^, @     P    P                                                   U @     P    P                                                   } @     P q   P                                                   } @     P 	Y   P                                                   	       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                     @     P  6   P                                                     @     P  qI   P                                                     @     P  u1   P                                                    a @     P  y   P                                                     @     P  }   P                                                    #	 @     P  :   P                                                    a @     P  >   P                                                    U @     P     P                                                    U @     P     P                                                    
+ @     P     P                                                    
+ @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    A@ @     P  )   P                                                    A@ @     P     P                                                    h @     P     P                                                    h @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                    : @     P  i   P                                                    Qc @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                    m @     P  	   P                                                    ! @     P     P                                                    . @     P     P                                                    N @     P     P                                                    9w @     P  ީ   P                                                     @     P     P                                                     @     P  y   P                                                     @     P  a   P                                                    U @     P  I   P                                                    	 @     P  1   P                                                    B @     P     P                                                    qk @     P     P                                                    % @     P     P                                                    ! @     P    P                                                    ճ @     P    P                                                     @     P 	   P                                                    =	 @     P    P                                                    -	 @     P q   P                                                    -	 @     P Y   P                                                    V	 @     P A   P                                                    Y	 @     P )   P                                                    	 @     P !   P                                                    	 @     P $   P                                                    u	 @     P (   P                                                     @     P ,   P                                                    q @     P 0   P                                                    % @     P 4   P                                                    A @     P 8   P                                                    j @     P <i   P                                                    A @     P @Q   P                                                    A @     P D9   P                                                     @     P H!   P                                                     @     P L	   P                                                    ] @     P O   P                                                    6 @     P S   P                                                    ^ @     P W   P                                                    Y @     P [   P                                                    - @     P _   P                                                      @     P cy   P                                                    5<  @     P ga   P                                                    d  @     P kI   P                                                      @     P o1   P                                                    Q  @     P s   P                                                      @     P w   P                                                      @     P z   P                                                     @     P ~   P                                                    m0 @     P    P                                                    !Y @     P    P                                                    Ձ @     P    P                                                     @     P q   P                                                    i' @     P Y   P                                                    P @     P A   P                                                    x @     P )   P                                                     @     P    P                                                    9 @     P    P                                                     @     P    P                                                     @     P    P                                                    UD @     P    P                                                    UD @     P    P                                                    	m @     P    P                                                     @     P i   P                                                    q @     P Q   P                                                    % @     P 9   P                                                    Q; @     P !   P                                                    d @     P 	   P                                                     @     P    P                                                    m @     P    P                                                    ! @     P    P                                                     @     P ة   P                                                    / @     P ܑ   P                                                    =X @     P y   P                                                     @     P a   P                                                     @     P I   P                                                    Y @     P 1   P                                                    Y @     P    P                                                     @     P    P                                                    # @     P    P                                                    uL @     P    P                                                    w	 @     P    P                                                    	 @     P    P                                                    U	 @     P    P                                                    		 @     P q   P                                                    
+ @     P Y   P                                                    qC
+ @     P A   P                                                    %l
+ @     P )   P                                                    ٔ
+ @     P    P                                                    
+ @     P    P                                                    A
+ @     P "   P                                                     @     P &   P                                                    7 @     P *   P                                                    7 @     P .   P                                                    ]` @     P 2   P                                                     @     P 6i   P                                                    ű @     P :Q   P                                                     @     P >9   P                                                    = @     P B!   P                                                     @     P F	   P                                                    . @     P I   P                                                    YW @     P M   P                                                     @     P Q   P                                                     @     P U   P                                                    u @     P Y   P                                                    ) @     P ]y   P                                                    " @     P aa   P                                                    K @     P eI   P                                                    Et @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                     @     P t   P                                                    a @     P x   P                                                     @     P |   P                                                      @     P    P                                                      @     P    P                                                    M  @     P q   P                                                    ) @     P Y   P                                                    Q @     P A   P                                                    iz @     P )   P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    9 @     P    P                                                    E @     P    P                                                    n @     P    P                                                    U @     P    P                                                    	 @     P i   P                                                     @     P Q   P                                                    q @     P 9   P                                                    q @     P !   P                                                    %: @     P 	   P                                                     @     P    P                                                    5 @     P    P                                                    < @     P    P                                                    e @     P ҩ   P                                                    Q @     P ֑   P                                                     @     P y   P                                                     @     P a   P                                                    m @     P I   P                                                    !1 @     P 1   P                                                    Y @     P    P                                                     @     P    P                                                    = @     P    P                                                     @     P    P                                                     @     P    P                                                    Y% @     P    P                                                    N @     P    P                                                    v @     P q   P                                                    v @     P 	Y   P                                                    	       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Reno4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,16 +1,8 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                   U @     P  qI   P                                                   	 @     P  u1   P                                                    @     P  y   P                                                   YL	 @     P  :   P                                                   r @     P  >   P                                                    @     P  Bi   P                                                    @     P  FQ   P                                                   
- @     P  }   P                                                   
- @     P     P                                                   
- @     P     P                                                   FG @     P     P                                                   FG @     P     P                                                   o @     P     P                                                   o @     P  q   P                                                    @     P  Y   P                                                    @     P  A   P                                                   A @     P  )   P                                                   A @     P     P                                                   Vj @     P     P                                                   Vj @     P     P                                                   
- @     P     P                                                    @     P     P                                                   r @     P     P                                                   & @     P     P                                                   >~ @     P  i   P                                                    @     P  Q   P                                                    @     P  9   P                                                   Z @     P  !   P                                                   ! @     P  	   P                                                   ! @     P     P                                                   I @     P     P                                                   vr @     P     P                                                   * @     P  ީ   P                                                   ں @     P     P                                                    @     P  y   P                                                   B	 @     P  a   P                                                   4	 @     P  I   P                                                   ]	 @     P  1   P                                                   ^	 @     P     P                                                   ^	 @     P     P                                                   	 @     P     P                                                   	 @     P    P                                                   z 
- @     P    P                                                   v @     P 	   P                                                   *  @     P    P                                                   H @     P q   P                                                   q @     P Y   P                                                   F @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   b @     P $   P                                                   b @     P (   P                                                   = @     P ,   P                                                   e @     P 0   P                                                   4 @     P 4   P                                                     @     P 8   P                                                   :C  @     P <i   P                                                   k  @     P @Q   P                                                     @     P D9   P                                                   V  @     P H!   P                                                   
-  @     P L	   P                                                    @     P O   P                                                   r7 @     P S   P                                                   r7 @     P W   P                                                   &` @     P [   P                                                   ڈ @     P _   P                                                   n. @     P cy   P                                                   "W @     P ga   P                                                    @     P kI   P                                                    @     P o1   P                                                   > @     P s   P                                                    @     P w   P                                                   " @     P z   P                                                   ZK @     P ~   P                                                   t @     P    P                                                    @     P    P                                                   v @     P    P                                                   v @     P q   P                                                   * @     P Y   P                                                   
-k @     P A   P                                                    @     P )   P                                                   r @     P    P                                                   & @     P    P                                                    @     P    P                                                   6 @     P    P                                                   B_ @     P    P                                                    @     P    P                                                    @     P    P                                                   ^ @     P i   P                                                    @     P Q   P                                                   * @     P 9   P                                                   zS @     P !   P                                                   zS @     P 	   P                                                   	 @     P    P                                                   Z	 @     P    P                                                   	 @     P    P                                                   !
- @     P ة   P                                                   vJ
- @     P ܑ   P                                                   *s
- @     P y   P                                                   ޛ
- @     P a   P                                                   
- @     P I   P                                                   F
- @     P 1   P                                                    @     P    P                                                   > @     P    P                                                   bg @     P    P                                                    @     P    P                                                   ʸ @     P    P                                                   ʸ @     P    P                                                   B @     P    P                                                    @     P q   P                                                   5 @     P Y   P                                                   ^^ @     P A   P                                                    @     P )   P                                                   Ư @     P    P                                                   z @     P    P                                                   . @     P "   P                                                   ) @     P &   P                                                   R @     P *   P                                                   J{ @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   f @     P :Q   P                                                    @     P >9   P                                                     @     P B!   P                                                     @     P F	   P                                                   R @     P I   P                                                   0 @     P M   P                                                   X @     P Q   P                                                   n @     P U   P                                                   " @     P Y   P                                                    @     P ]y   P                                                    @     P aa   P                                                   >$ @     P eI   P                                                   L @     P i1   P                                                   u @     P m   P                                                   Z @     P q   P                                                    @     P t   P                                                    @     P x   P                                                   v @     P |   P                                                   : @     P    P                                                   C @     P    P                                                   C @     P q   P                                                   l @     P Y   P                                                   V @     P A   P                                                   
- @     P )   P                                                    @     P    P                                                   r @     P    P                                                   &8 @     P    P                                                   ` @     P    P                                                    @     P    P                                                   B @     P    P                                                    @     P    P                                                    @     P i   P                                                   ^, @     P Q   P                                                   U @     P 9   P                                                   } @     P !   P                                                   W @     P 	   P                                                    @     P    P                                                   > @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                    @     P ֑   P                                                   Z# @     P y   P                                                   L @     P a   P                                                   t @     P I   P                                                   v @     P 1   P                                                   * @     P    P                                                    @     P    P                                                   	 @     P    P                                                   F@	 @     P    P                                                   h	 @     P    P                                                   	 @     P    P                                                   b	 @     P    P                                                   	 @     P q   P                                                   r
- @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    u @     P  6   P                                                     @     P  qI   P                                                    a @     P  u1   P                                                     @     P  y   P                                                    L	 @     P  :   P                                                    m @     P  >   P                                                    	 @     P  Bi   P                                                    	 @     P  FQ   P                                                     @     P  }   P                                                     @     P     P                                                     @     P     P                                                    A@ @     P     P                                                    A@ @     P     P                                                    h @     P     P                                                    h @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    : @     P  )   P                                                    : @     P     P                                                    Qc @     P     P                                                    Qc @     P     P                                                     @     P     P                                                     @     P     P                                                    m @     P     P                                                    ! @     P     P                                                    9w @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    U @     P  !   P                                                    	 @     P  	   P                                                    	 @     P     P                                                    B @     P     P                                                    qk @     P     P                                                    % @     P  ީ   P                                                    ճ @     P     P                                                     @     P  y   P                                                    =	 @     P  a   P                                                    -	 @     P  I   P                                                    V	 @     P  1   P                                                    Y	 @     P     P                                                    Y	 @     P     P                                                    	 @     P     P                                                    	 @     P    P                                                    u	 @     P    P                                                    q @     P 	   P                                                    % @     P    P                                                    A @     P q   P                                                    j @     P Y   P                                                    A @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    ] @     P $   P                                                    ] @     P (   P                                                    6 @     P ,   P                                                    ^ @     P 0   P                                                    - @     P 4   P                                                      @     P 8   P                                                    5<  @     P <i   P                                                    d  @     P @Q   P                                                      @     P D9   P                                                    Q  @     P H!   P                                                      @     P L	   P                                                     @     P O   P                                                    m0 @     P S   P                                                    m0 @     P W   P                                                    !Y @     P [   P                                                    Ձ @     P _   P                                                    i' @     P cy   P                                                    P @     P ga   P                                                    x @     P kI   P                                                     @     P o1   P                                                    9 @     P s   P                                                     @     P w   P                                                     @     P z   P                                                    UD @     P ~   P                                                    	m @     P    P                                                     @     P    P                                                    q @     P    P                                                    q @     P q   P                                                    % @     P Y   P                                                    d @     P A   P                                                     @     P )   P                                                    m @     P    P                                                    ! @     P    P                                                     @     P    P                                                    / @     P    P                                                    =X @     P    P                                                     @     P    P                                                     @     P    P                                                    Y @     P i   P                                                     @     P Q   P                                                    # @     P 9   P                                                    uL @     P !   P                                                    uL @     P 	   P                                                    	 @     P    P                                                    U	 @     P    P                                                    		 @     P    P                                                    
+ @     P ة   P                                                    qC
+ @     P ܑ   P                                                    %l
+ @     P y   P                                                    ٔ
+ @     P a   P                                                    
+ @     P I   P                                                    A
+ @     P 1   P                                                     @     P    P                                                    7 @     P    P                                                    ]` @     P    P                                                     @     P    P                                                    ű @     P    P                                                    ű @     P    P                                                    = @     P    P                                                     @     P q   P                                                    . @     P Y   P                                                    YW @     P A   P                                                     @     P )   P                                                     @     P    P                                                    u @     P    P                                                    ) @     P "   P                                                    " @     P &   P                                                    K @     P *   P                                                    Et @     P .   P                                                     @     P 2   P                                                     @     P 6i   P                                                    a @     P :Q   P                                                     @     P >9   P                                                      @     P B!   P                                                      @     P F	   P                                                    M  @     P I   P                                                    ) @     P M   P                                                    Q @     P Q   P                                                    iz @     P U   P                                                     @     P Y   P                                                     @     P ]y   P                                                     @     P aa   P                                                    9 @     P eI   P                                                    E @     P i1   P                                                    n @     P m   P                                                    U @     P q   P                                                    	 @     P t   P                                                     @     P x   P                                                    q @     P |   P                                                    5 @     P    P                                                    < @     P    P                                                    < @     P q   P                                                    e @     P Y   P                                                    Q @     P A   P                                                     @     P )   P                                                     @     P    P                                                    m @     P    P                                                    !1 @     P    P                                                    Y @     P    P                                                     @     P    P                                                    = @     P    P                                                     @     P    P                                                     @     P i   P                                                    Y% @     P Q   P                                                    N @     P 9   P                                                    v @     P !   P                                                    P @     P 	   P                                                    y @     P    P                                                    9 @     P    P                                                     @     P    P                                                     @     P ҩ   P                                                     @     P ֑   P                                                    U @     P y   P                                                    	E @     P a   P                                                    m @     P I   P                                                    q @     P 1   P                                                    % @     P    P                                                     @     P    P                                                    	 @     P    P                                                    A9	 @     P    P                                                    a	 @     P    P                                                    	 @     P    P                                                    ]	 @     P    P                                                    	 @     P q   P                                                    m
+ @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                   M' @     P     P                                                   M' @     P     P                                                   P @     P     P                                                   P @     P     P                                                   x @     P     P                                                   x @     P  q   P                                                   i @     P  Y   P                                                   i @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9D @     P     P                                                   9D @     P     P                                                   l @     P  i   P                                                   l @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   U @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   	 @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   q8 @     P  y   P                                                   q8 @     P  a   P                                                   %a @     P  I   P                                                   %a @     P  1   P                                                   5; @     P     P                                                   5; @     P     P                                                   c @     P     P                                                   c @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Q @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   m/ @     P $   P                                                   m/ @     P (   P                                                   !X @     P ,   P                                                   !X @     P 0   P                                                   Հ @     P 4   P                                                   Հ @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   = @     P D9   P                                                   = @     P H!   P                                                    @     P L	   P                                                    @     P O   P                                                   #	 @     P S   P                                                   #	 @     P W   P                                                   YL	 @     P [   P                                                   YL	 @     P _   P                                                   u	 @     P cy   P                                                   u	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   u	 @     P s   P                                                   u	 @     P w   P                                                   )	 @     P z   P                                                   )	 @     P ~   P                                                   
- @     P    P                                                   
- @     P    P                                                   @
- @     P    P                                                   @
- @     P q   P                                                   Ei
- @     P Y   P                                                   Ei
- @     P A   P                                                   
- @     P )   P                                                   
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   a
- @     P    P                                                   a
- @     P    P                                                    @     P    P                                                    @     P    P                                                   4 @     P i   P                                                   4 @     P Q   P                                                   }] @     P 9   P                                                   }] @     P !   P                                                   1 @     P 	   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   M  @     P y   P                                                   M  @     P a   P                                                   ) @     P I   P                                                   ) @     P 1   P                                                   Q @     P    P                                                   Q @     P    P                                                   iz @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                   E @     P q   P                                                   n @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                   q @     P    P                                                   %: @     P "   P                                                   b @     P &   P                                                    @     P *   P                                                   A @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   ]. @     P :Q   P                                                     @     P >9   P                                                   =  @     P B!   P                                                   9f  @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                   U  @     P Q   P                                                   		 @     P U   P                                                   1 @     P Y   P                                                   qZ @     P ]y   P                                                   % @     P aa   P                                                   ٫ @     P eI   P                                                    @     P i1   P                                                   A @     P m   P                                                   % @     P q   P                                                   N @     P t   P                                                   ]w @     P x   P                                                    @     P |   P                                                    @     P    P                                                   y @     P    P                                                   - @     P q   P                                                   B @     P Y   P                                                   k @     P A   P                                                   I @     P )   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                   7 @     P    P                                                   _ @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   Q+ @     P 9   P                                                   T @     P !   P                                                   | @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   =H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   Y @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   u< @     P    P                                                   )e @     P    P                                                   ݍ @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   0 @     P q   P                                                   aY @     P 	Y   P                                                   yn       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    A @     P  qI   P                                                    A @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    ' @     P     P                                                    ' @     P     P                                                    YP @     P     P                                                    YP @     P     P                                                    y @     P     P                                                    y @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    u @     P  )   P                                                    u @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                     @     P     P                                                     @     P     P                                                    D @     P     P                                                    D @     P     P                                                    Em @     P  i   P                                                    Em @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    a @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    8 @     P  y   P                                                    8 @     P  a   P                                                    }a @     P  I   P                                                    }a @     P  1   P                                                    ; @     P     P                                                    ; @     P     P                                                    Ad @     P     P                                                    Ad @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    / @     P $   P                                                    / @     P (   P                                                    yX @     P ,   P                                                    yX @     P 0   P                                                    - @     P 4   P                                                    - @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    I @     P L	   P                                                    I @     P O   P                                                    #	 @     P S   P                                                    #	 @     P W   P                                                    L	 @     P [   P                                                    L	 @     P _   P                                                    eu	 @     P cy   P                                                    eu	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    	 @     P w   P                                                    	 @     P z   P                                                    	 @     P ~   P                                                    5
+ @     P    P                                                    5
+ @     P    P                                                    @
+ @     P    P                                                    @
+ @     P q   P                                                    i
+ @     P Y   P                                                    i
+ @     P A   P                                                    Q
+ @     P )   P                                                    Q
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    m @     P    P                                                    m @     P    P                                                    !5 @     P i   P                                                    !5 @     P Q   P                                                    ] @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    = @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                      @     P y   P                                                      @     P a   P                                                    Y) @     P I   P                                                    Y) @     P 1   P                                                    R @     P    P                                                    R @     P    P                                                    z @     P    P                                                    z @     P    P                                                    u @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P q   P                                                    EF @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    a @     P    P                                                     @     P    P                                                     @     P "   P                                                    }: @     P &   P                                                    1c @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    M @     P 6i   P                                                     @     P :Q   P                                                    . @     P >9   P                                                    )  @     P B!   P                                                    =  @     P F	   P                                                    f  @     P I   P                                                    E  @     P M   P                                                      @     P Q   P                                                      @     P U   P                                                    a	 @     P Y   P                                                    2 @     P ]y   P                                                    Z @     P aa   P                                                    } @     P eI   P                                                    1 @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    M& @     P t   P                                                    O @     P x   P                                                    w @     P |   P                                                    i @     P    P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    9C @     P A   P                                                    k @     P )   P                                                     @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q7 @     P    P                                                    %` @     P    P                                                    و @     P    P                                                     @     P i   P                                                    A @     P Q   P                                                     @     P 9   P                                                    + @     P !   P                                                    ]T @     P 	   P                                                    } @     P    P                                                    ť @     P    P                                                    y @     P    P                                                    - @     P ҩ   P                                                     @     P ֑   P                                                    H @     P y   P                                                    Iq @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                    < @     P    P                                                    e @     P    P                                                    5 @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P q   P                                                    1 @     P 	Y   P                                                    n       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,14 +1,15 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   P @     P  6   P                                                    @     P  qI   P                                                    @     P  u1   P                                                   9
- @     P  y   P                                                   9
- @     P  }   P                                                   
- @     P     P                                                   
- @     P     P                                                    @     P     P                                                    @     P     P                                                   . @     P     P                                                   . @     P  q   P                                                   =W @     P  Y   P                                                   =W @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                   1  @     P     P                                                   ( @     P     P                                                   Q @     P     P                                                   Mz @     P     P                                                    @     P     P                                                    @     P     P                                                   i @     P  i   P                                                    @     P  Q   P                                                   < @     P  9   P                                                   < @     P  !   P                                                   e @     P  	   P                                                   5 @     P     P                                                    @     P     P                                                    @     P     P                                                   Q @     P  ީ   P                                                   1 @     P     P                                                   Y @     P  y   P                                                   iy @     P  a   P                                                    @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                    @     P     P                                                   9	 @     P     P                                                   D	 @     P    P                                                   m	 @     P    P                                                   U	 @     P 	   P                                                   		 @     P    P                                                    @     P q   P                                                    @     P Y   P                                                   m @     P A   P                                                   !0 @     P )   P                                                   !0 @     P !   P                                                   X @     P $   P                                                    @     P (   P                                                   = @     P ,   P                                                    @     P 0   P                                                    @     P 4   P                                                   Y$ @     P 8   P                                                    @     P <i   P                                                   U @     P @Q   P                                                     @     P D9   P                                                   }*  @     P H!   P                                                   1S  @     P L	   P                                                   1S  @     P O   P                                                   {  @     P S   P                                                     @     P W   P                                                   M  @     P [   P                                                     @     P _   P                                                    @     P cy   P                                                   iG @     P ga   P                                                    @     P kI   P                                                    @     P o1   P                                                   e> @     P s   P                                                   g @     P w   P                                                   ͏ @     P z   P                                                    @     P ~   P                                                   5 @     P    P                                                   5 @     P    P                                                   	 @     P    P                                                   2 @     P q   P                                                   Q[ @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   ) @     P    P                                                   MR @     P    P                                                   { @     P    P                                                    @     P    P                                                   i @     P    P                                                    @     P    P                                                    @     P    P                                                   F @     P i   P                                                   9o @     P Q   P                                                   9o @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   U @     P    P                                                   	 @     P    P                                                   5f	 @     P    P                                                   	 @     P ة   P                                                   	 @     P ܑ   P                                                   Q	 @     P y   P                                                   	
- @     P a   P                                                   1
- @     P I   P                                                   mZ
- @     P 1   P                                                   !
- @     P    P                                                   ի
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   =
- @     P    P                                                   % @     P    P                                                   N @     P    P                                                   Yw @     P q   P                                                   Ѣ @     P Y   P                                                    @     P A   P                                                   9 @     P )   P                                                    @     P    P                                                   E @     P    P                                                   Un @     P "   P                                                   	 @     P &   P                                                    @     P *   P                                                   q @     P .   P                                                   % @     P 2   P                                                   9 @     P 6i   P                                                   b @     P :Q   P                                                   b @     P >9   P                                                   A @     P B!   P                                                    @     P F	   P                                                    @     P I   P                                                   -  @     P M   P                                                     @     P Q   P                                                     @     P U   P                                                   I @     P Y   P                                                   ? @     P ]y   P                                                   h @     P aa   P                                                   e @     P eI   P                                                    @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   54 @     P t   P                                                   \ @     P x   P                                                    @     P |   P                                                    @     P    P                                                   Q @     P    P                                                    @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   } @     P )   P                                                   1+ @     P    P                                                   S @     P    P                                                   | @     P    P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                   i @     P    P                                                   H @     P i   P                                                   p @     P Q   P                                                    @     P 9   P                                                   9 @     P !   P                                                    @     P 	   P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   	e @     P ҩ   P                                                   e @     P ֑   P                                                   ? @     P y   P                                                   g @     P a   P                                                    @     P I   P                                                   5 @     P 1   P                                                    @     P    P                                                   
- @     P    P                                                   Q3 @     P    P                                                   \ @     P    P                                                    @     P    P                                                   m @     P    P                                                   ! @     P    P                                                    @     P q   P                                                   '	 @     P 	Y   P                                                   e       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    YP @     P  6   P                                                     @     P  qI   P                                                     @     P  u1   P                                                    
+ @     P  y   P                                                    
+ @     P  }   P                                                    E
+ @     P     P                                                    E
+ @     P     P                                                    - @     P     P                                                    - @     P     P                                                    . @     P     P                                                    . @     P  q   P                                                    W @     P  Y   P                                                    W @     P  A   P                                                    I @     P  )   P                                                    I @     P     P                                                      @     P     P                                                    =) @     P     P                                                    Q @     P     P                                                    z @     P     P                                                    Y @     P     P                                                     @     P     P                                                     @     P  i   P                                                    u @     P  Q   P                                                    %= @     P  9   P                                                    %= @     P  !   P                                                    e @     P  	   P                                                     @     P     P                                                    A @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                    ]1 @     P     P                                                    Z @     P  y   P                                                    y @     P  a   P                                                    u @     P  I   P                                                    u @     P  1   P                                                    ) @     P     P                                                     @     P     P                                                    	 @     P     P                                                    EE	 @     P    P                                                    m	 @     P    P                                                    	 @     P 	   P                                                    a	 @     P    P                                                    ] @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    y0 @     P )   P                                                    y0 @     P !   P                                                    -Y @     P $   P                                                     @     P (   P                                                     @     P ,   P                                                    I @     P 0   P                                                     @     P 4   P                                                    $ @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                    !  @     P D9   P                                                    *  @     P H!   P                                                    S  @     P L	   P                                                    S  @     P O   P                                                    =|  @     P S   P                                                      @     P W   P                                                      @     P [   P                                                    Y  @     P _   P                                                     @     P cy   P                                                    G @     P ga   P                                                    U @     P kI   P                                                    	 @     P o1   P                                                    > @     P s   P                                                    qg @     P w   P                                                    % @     P z   P                                                    ٸ @     P ~   P                                                     @     P    P                                                     @     P    P                                                    A
+ @     P    P                                                    2 @     P q   P                                                    [ @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                    ) @     P    P                                                    R @     P    P                                                    Y{ @     P    P                                                     @     P    P                                                     @     P    P                                                    u @     P    P                                                    ) @     P    P                                                    F @     P i   P                                                    o @     P Q   P                                                    o @     P 9   P                                                    E @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    a @     P    P                                                    f	 @     P    P                                                    A	 @     P ة   P                                                    	 @     P ܑ   P                                                    	 @     P y   P                                                    ]	
+ @     P a   P                                                    2
+ @     P I   P                                                    Z
+ @     P 1   P                                                    y
+ @     P    P                                                    -
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    I& @     P    P                                                    N @     P    P                                                    w @     P q   P                                                    ) @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    E @     P    P                                                    E @     P    P                                                    n @     P "   P                                                    a @     P &   P                                                     @     P *   P                                                     @     P .   P                                                    } @     P 2   P                                                    1: @     P 6i   P                                                    b @     P :Q   P                                                    b @     P >9   P                                                     @     P B!   P                                                    M @     P F	   P                                                     @     P I   P                                                      @     P M   P                                                    9  @     P Q   P                                                      @     P U   P                                                     @     P Y   P                                                    U@ @     P ]y   P                                                    	i @     P aa   P                                                     @     P eI   P                                                    q @     P i1   P                                                    % @     P m   P                                                     @     P q   P                                                    4 @     P t   P                                                    A] @     P x   P                                                     @     P |   P                                                     @     P    P                                                     @     P    P                                                    ] @     P q   P                                                      @     P Y   P                                                    ! @     P A   P                                                     @     P )   P                                                    + @     P    P                                                    =T @     P    P                                                    | @     P    P                                                     @     P    P                                                    Y @     P    P                                                     @     P    P                                                     @     P    P                                                    uH @     P i   P                                                    )q @     P Q   P                                                    ݙ @     P 9   P                                                     @     P !   P                                                    E @     P 	   P                                                     @     P    P                                                     @     P    P                                                    < @     P    P                                                    ae @     P ҩ   P                                                     @     P ֑   P                                                    q? @     P y   P                                                    %h @     P a   P                                                    ِ @     P I   P                                                     @     P 1   P                                                    A @     P    P                                                    
+ @     P    P                                                    3 @     P    P                                                    ]\ @     P    P                                                     @     P    P                                                    ŭ @     P    P                                                    y @     P    P                                                    - @     P q   P                                                    '	 @     P 	Y   P                                                    !f       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,16 +1,17 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                   Q @     P  :   P                                                   Q @     P  >   P                                                   
- @     P  qI   P                                                   
- @     P  u1   P                                                   
- @     P  y   P                                                   . @     P  }   P                                                   . @     P     P                                                   =W @     P     P                                                   =W @     P     P                                                    @     P     P                                                    @     P     P                                                   ( @     P  q   P                                                   ( @     P  Y   P                                                   Q @     P  A   P                                                   Q @     P  )   P                                                   Mz @     P     P                                                    @     P     P                                                    @     P     P                                                   i @     P     P                                                   e @     P     P                                                   5 @     P     P                                                    @     P     P                                                    @     P  i   P                                                   Q @     P  Q   P                                                   Q @     P  9   P                                                   1 @     P  !   P                                                   Y @     P  	   P                                                   m @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                   9	 @     P     P                                                   D	 @     P  y   P                                                   m	 @     P  a   P                                                   m	 @     P  I   P                                                   U	 @     P  1   P                                                   		 @     P     P                                                   	 @     P     P                                                    @     P     P                                                   m @     P    P                                                   !0 @     P    P                                                   X @     P 	   P                                                    @     P    P                                                   = @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   Y$ @     P !   P                                                   M @     P $   P                                                   U @     P (   P                                                     @     P ,   P                                                   }*  @     P 0   P                                                   1S  @     P 4   P                                                   {  @     P 8   P                                                     @     P <i   P                                                   M  @     P @Q   P                                                     @     P D9   P                                                    @     P H!   P                                                    @     P L	   P                                                   iG @     P O   P                                                   p @     P S   P                                                    @     P W   P                                                   e> @     P [   P                                                   g @     P _   P                                                   ͏ @     P cy   P                                                    @     P ga   P                                                   5 @     P kI   P                                                   	 @     P o1   P                                                   2 @     P s   P                                                   Q[ @     P w   P                                                    @     P z   P                                                    @     P ~   P                                                    @     P    P                                                   m @     P    P                                                   MR @     P    P                                                   { @     P q   P                                                    @     P Y   P                                                   i @     P A   P                                                    @     P )   P                                                    @     P    P                                                   F @     P    P                                                   9o @     P    P                                                    @     P    P                                                    @     P    P                                                   U @     P    P                                                   	 @     P    P                                                   : @     P i   P                                                   : @     P Q   P                                                   	 @     P 9   P                                                   	 @     P !   P                                                   Q	 @     P 	   P                                                   	
- @     P    P                                                   1
- @     P    P                                                   mZ
- @     P    P                                                   !
- @     P ة   P                                                   ի
- @     P ܑ   P                                                   
- @     P y   P                                                   =
- @     P a   P                                                   % @     P I   P                                                   N @     P 1   P                                                   Yw @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                   E @     P    P                                                   Un @     P q   P                                                   	 @     P Y   P                                                    @     P A   P                                                   q @     P )   P                                                   % @     P    P                                                   9 @     P    P                                                   b @     P "   P                                                   A @     P &   P                                                    @     P *   P                                                    @     P .   P                                                   ] @     P 2   P                                                     @     P 6i   P                                                     @     P :Q   P                                                     @     P >9   P                                                   I @     P B!   P                                                   ? @     P F	   P                                                   h @     P I   P                                                   e @     P M   P                                                    @     P Q   P                                                    @     P U   P                                                    @     P Y   P                                                   54 @     P ]y   P                                                   \ @     P aa   P                                                    @     P eI   P                                                   Q @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   } @     P t   P                                                   1+ @     P x   P                                                   1+ @     P |   P                                                   S @     P    P                                                   | @     P    P                                                   M @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   i @     P )   P                                                   H @     P    P                                                   p @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                    @     P    P                                                   U< @     P    P                                                   	e @     P i   P                                                   ? @     P Q   P                                                   g @     P 9   P                                                    @     P !   P                                                   5 @     P 	   P                                                   5 @     P    P                                                    @     P    P                                                   
- @     P    P                                                   Q3 @     P ҩ   P                                                   \ @     P ֑   P                                                    @     P y   P                                                   m @     P a   P                                                   ! @     P I   P                                                    @     P 1   P                                                   '	 @     P    P                                                   =P	 @     P    P                                                   x	 @     P    P                                                   	 @     P    P                                                   Y	 @     P    P                                                   {
- @     P    P                                                   i
- @     P    P                                                   
- @     P q   P                                                   
- @     P 	Y   P                                                   4       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    y @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                    E
+ @     P  qI   P                                                    E
+ @     P  u1   P                                                    E
+ @     P  y   P                                                    . @     P  }   P                                                    . @     P     P                                                    W @     P     P                                                    W @     P     P                                                    I @     P     P                                                    I @     P     P                                                    =) @     P  q   P                                                    =) @     P  Y   P                                                    Q @     P  A   P                                                    Q @     P  )   P                                                    z @     P     P                                                    Y @     P     P                                                     @     P     P                                                     @     P     P                                                    e @     P     P                                                     @     P     P                                                    A @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    ]1 @     P  !   P                                                    Z @     P  	   P                                                    ł @     P     P                                                    u @     P     P                                                    ) @     P     P                                                     @     P  ީ   P                                                    	 @     P     P                                                    EE	 @     P  y   P                                                    m	 @     P  a   P                                                    m	 @     P  I   P                                                    	 @     P  1   P                                                    a	 @     P     P                                                    	 @     P     P                                                     @     P     P                                                     @     P    P                                                    y0 @     P    P                                                    -Y @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    I @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    $ @     P !   P                                                    eM @     P $   P                                                     @     P (   P                                                    !  @     P ,   P                                                    *  @     P 0   P                                                    S  @     P 4   P                                                    =|  @     P 8   P                                                      @     P <i   P                                                      @     P @Q   P                                                    Y  @     P D9   P                                                     @     P H!   P                                                     @     P L	   P                                                    G @     P O   P                                                    up @     P S   P                                                    	 @     P W   P                                                    > @     P [   P                                                    qg @     P _   P                                                    % @     P cy   P                                                    ٸ @     P ga   P                                                     @     P kI   P                                                    A
+ @     P o1   P                                                    2 @     P s   P                                                    [ @     P w   P                                                    ] @     P z   P                                                     @     P ~   P                                                     @     P    P                                                     @     P    P                                                    R @     P    P                                                    Y{ @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    u @     P )   P                                                    ) @     P    P                                                    F @     P    P                                                    o @     P    P                                                    E @     P    P                                                     @     P    P                                                     @     P    P                                                    a @     P    P                                                    ; @     P i   P                                                    ; @     P Q   P                                                    A	 @     P 9   P                                                    	 @     P !   P                                                    	 @     P 	   P                                                    ]	
+ @     P    P                                                    2
+ @     P    P                                                    Z
+ @     P    P                                                    y
+ @     P ة   P                                                    -
+ @     P ܑ   P                                                    
+ @     P y   P                                                    
+ @     P a   P                                                    I& @     P I   P                                                    N @     P 1   P                                                    w @     P    P                                                    e @     P    P                                                    e @     P    P                                                     @     P    P                                                     @     P    P                                                    E @     P    P                                                    E @     P    P                                                    n @     P q   P                                                    a @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    } @     P    P                                                    1: @     P    P                                                    b @     P "   P                                                     @     P &   P                                                    M @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    9  @     P 6i   P                                                    9  @     P :Q   P                                                      @     P >9   P                                                     @     P B!   P                                                    U@ @     P F	   P                                                    	i @     P I   P                                                     @     P M   P                                                    q @     P Q   P                                                    % @     P U   P                                                     @     P Y   P                                                    4 @     P ]y   P                                                    A] @     P aa   P                                                     @     P eI   P                                                     @     P i1   P                                                    ] @     P m   P                                                      @     P q   P                                                     @     P t   P                                                    + @     P x   P                                                    + @     P |   P                                                    =T @     P    P                                                    | @     P    P                                                     @     P q   P                                                    Y @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    uH @     P    P                                                    )q @     P    P                                                    ݙ @     P    P                                                     @     P    P                                                    E @     P    P                                                     @     P    P                                                    < @     P    P                                                    ae @     P i   P                                                    q? @     P Q   P                                                    %h @     P 9   P                                                    ِ @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    A @     P    P                                                    
+ @     P    P                                                    3 @     P ҩ   P                                                    ]\ @     P ֑   P                                                     @     P y   P                                                    ŭ @     P a   P                                                    y @     P I   P                                                    - @     P 1   P                                                    '	 @     P    P                                                    P	 @     P    P                                                    Iy	 @     P    P                                                    	 @     P    P                                                    	 @     P    P                                                    |
+ @     P    P                                                    
+ @     P    P                                                    u
+ @     P q   P                                                    )
+ @     P 	Y   P                                                    i4       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,14 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  :   P                                                    @     P  >   P                                                    @     P  Bi   P                                                    @     P  FQ   P                                                   UC @     P  qI   P                                                   UC @     P  u1   P                                                   UC @     P  y   P                                                   UC @     P  }   P                                                    @     P     P                                                    @     P     P                                                   Y @     P     P                                                   Y @     P     P                                                    @     P     P                                                    @     P  q   P                                                   " @     P  Y   P                                                   " @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                   i @     P     P                                                    @     P     P                                                   E @     P     P                                                   n @     P     P                                                   9 @     P     P                                                    @     P     P                                                    @     P  i   P                                                    @     P  Q   P                                                   Q @     P  9   P                                                   1 @     P  !   P                                                   Y @     P  	   P                                                   m @     P     P                                                   ! @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                   9	 @     P     P                                                   D	 @     P  y   P                                                   D	 @     P  a   P                                                   m	 @     P  I   P                                                   U	 @     P  1   P                                                   		 @     P     P                                                   	 @     P     P                                                   q
- @     P     P                                                   %9
- @     P    P                                                   a
- @     P    P                                                   X @     P 	   P                                                    @     P    P                                                   = @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   Y$ @     P !   P                                                   M @     P $   P                                                   u @     P (   P                                                   u @     P ,   P                                                   ) @     P 0   P                                                   1S  @     P 4   P                                                   {  @     P 8   P                                                     @     P <i   P                                                   M  @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    @     P L	   P                                                   iG @     P O   P                                                   p @     P S   P                                                   ј @     P W   P                                                    @     P [   P                                                   9 @     P _   P                                                   ͏ @     P cy   P                                                    @     P ga   P                                                   5 @     P kI   P                                                   	 @     P o1   P                                                   2 @     P s   P                                                   Q[ @     P w   P                                                    @     P z   P                                                    @     P ~   P                                                    @     P    P                                                   m @     P    P                                                   ! @     P    P                                                   & @     P q   P                                                   O @     P Y   P                                                   i @     P A   P                                                    @     P )   P                                                    @     P    P                                                   F @     P    P                                                   9o @     P    P                                                    @     P    P                                                    @     P    P                                                   U @     P    P                                                   	 @     P    P                                                   	 @     P i   P                                                   : @     P Q   P                                                   qc @     P 9   P                                                   % @     P !   P                                                   ٴ @     P 	   P                                                   	
- @     P    P                                                   1
- @     P    P                                                   mZ
- @     P    P                                                   !
- @     P ة   P                                                   ի
- @     P ܑ   P                                                   
- @     P y   P                                                   =
- @     P a   P                                                   % @     P I   P                                                   N @     P 1   P                                                   Yw @     P    P                                                   Yw @     P    P                                                    @     P    P                                                    @     P    P                                                   u @     P    P                                                   ) @     P    P                                                   E @     P    P                                                   Un @     P q   P                                                   	 @     P Y   P                                                    @     P A   P                                                   q @     P )   P                                                   % @     P    P                                                   9 @     P    P                                                   b @     P "   P                                                   A @     P &   P                                                    @     P *   P                                                    @     P .   P                                                   ] @     P 2   P                                                   ] @     P 6i   P                                                   . @     P :Q   P                                                     @     P >9   P                                                   9=  @     P B!   P                                                   ? @     P F	   P                                                   h @     P I   P                                                   e @     P M   P                                                    @     P Q   P                                                    @     P U   P                                                    @     P Y   P                                                   54 @     P ]y   P                                                   \ @     P aa   P                                                    @     P eI   P                                                   Q @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                   m( @     P t   P                                                   m( @     P x   P                                                   !Q @     P |   P                                                   y @     P    P                                                    @     P    P                                                   | @     P q   P                                                   M @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   i @     P    P                                                   H @     P    P                                                   p @     P    P                                                    @     P    P                                                   9 @     P    P                                                    @     P    P                                                    @     P    P                                                   U< @     P i   P                                                   	e @     P Q   P                                                    @     P 9   P                                                   q @     P !   P                                                   q @     P 	   P                                                   % @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P ҩ   P                                                   
- @     P ֑   P                                                   Q3 @     P y   P                                                   \ @     P a   P                                                    @     P I   P                                                   m @     P 1   P                                                   ! @     P    P                                                    @     P    P                                                   '	 @     P    P                                                   =P	 @     P    P                                                   x	 @     P    P                                                   	 @     P    P                                                   Y	 @     P    P                                                   	 @     P q   P                                                   
- @     P 	Y   P                                                   Z       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                     @     P  6   P                                                    ] @     P  :   P                                                    ] @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                    C @     P  qI   P                                                    C @     P  u1   P                                                    C @     P  y   P                                                    C @     P  }   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                    e @     P     P                                                    e @     P  q   P                                                    # @     P  Y   P                                                    # @     P  A   P                                                    Y @     P  )   P                                                     @     P     P                                                     @     P     P                                                    u @     P     P                                                    )F @     P     P                                                    n @     P     P                                                     @     P     P                                                    E @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    ]1 @     P  !   P                                                    Z @     P  	   P                                                    ł @     P     P                                                    y @     P     P                                                    - @     P     P                                                     @     P  ީ   P                                                    	 @     P     P                                                    EE	 @     P  y   P                                                    EE	 @     P  a   P                                                    m	 @     P  I   P                                                    	 @     P  1   P                                                    a	 @     P     P                                                    	 @     P     P                                                    
+ @     P     P                                                    }9
+ @     P    P                                                    1b
+ @     P    P                                                    -Y @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    I @     P Y   P                                                    I @     P A   P                                                     @     P )   P                                                    $ @     P !   P                                                    eM @     P $   P                                                    v @     P (   P                                                    ͞ @     P ,   P                                                     @     P 0   P                                                    S  @     P 4   P                                                    =|  @     P 8   P                                                      @     P <i   P                                                      @     P @Q   P                                                    Y  @     P D9   P                                                    Y  @     P H!   P                                                     @     P L	   P                                                    G @     P O   P                                                    up @     P S   P                                                    ) @     P W   P                                                     @     P [   P                                                     @     P _   P                                                    % @     P cy   P                                                    ٸ @     P ga   P                                                     @     P kI   P                                                    A
+ @     P o1   P                                                    2 @     P s   P                                                    [ @     P w   P                                                    ] @     P z   P                                                    ] @     P ~   P                                                     @     P    P                                                     @     P    P                                                    y @     P    P                                                    -' @     P q   P                                                    O @     P Y   P                                                     @     P A   P                                                    u @     P )   P                                                    ) @     P    P                                                    F @     P    P                                                    o @     P    P                                                    E @     P    P                                                     @     P    P                                                     @     P    P                                                    a @     P    P                                                    a @     P i   P                                                    ; @     P Q   P                                                    c @     P 9   P                                                    } @     P !   P                                                    1 @     P 	   P                                                    ]	
+ @     P    P                                                    2
+ @     P    P                                                    Z
+ @     P    P                                                    y
+ @     P ة   P                                                    -
+ @     P ܑ   P                                                    
+ @     P y   P                                                    
+ @     P a   P                                                    I& @     P I   P                                                    N @     P 1   P                                                    w @     P    P                                                    w @     P    P                                                    e @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    E @     P    P                                                    n @     P q   P                                                    a @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    } @     P    P                                                    1: @     P    P                                                    b @     P "   P                                                     @     P &   P                                                    M @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                     @     P 6i   P                                                    i. @     P :Q   P                                                      @     P >9   P                                                    =  @     P B!   P                                                    U@ @     P F	   P                                                    	i @     P I   P                                                     @     P M   P                                                    q @     P Q   P                                                    % @     P U   P                                                     @     P Y   P                                                    4 @     P ]y   P                                                    A] @     P aa   P                                                     @     P eI   P                                                     @     P i1   P                                                    ] @     P m   P                                                      @     P q   P                                                    ( @     P t   P                                                    ( @     P x   P                                                    yQ @     P |   P                                                    -z @     P    P                                                     @     P    P                                                    | @     P q   P                                                     @     P Y   P                                                    Y @     P A   P                                                     @     P )   P                                                     @     P    P                                                    uH @     P    P                                                    )q @     P    P                                                    ݙ @     P    P                                                     @     P    P                                                    E @     P    P                                                     @     P    P                                                    < @     P i   P                                                    ae @     P Q   P                                                     @     P 9   P                                                    ɶ @     P !   P                                                    ɶ @     P 	   P                                                    } @     P    P                                                    1 @     P    P                                                     @     P    P                                                    A @     P ҩ   P                                                    
+ @     P ֑   P                                                    3 @     P y   P                                                    ]\ @     P a   P                                                     @     P I   P                                                    ŭ @     P 1   P                                                    y @     P    P                                                    - @     P    P                                                    '	 @     P    P                                                    P	 @     P    P                                                    Iy	 @     P    P                                                    	 @     P    P                                                    	 @     P    P                                                    e	 @     P q   P                                                    
+ @     P 	Y   P                                                    YZ       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Tahoe4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,9 +1,9 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                    @     P  :   P                                                    @     P  >   P                                                   UC @     P  Bi   P                                                   UC @     P  FQ   P                                                   	l @     P  J9   P                                                   	l @     P  N!   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                    @     P     P                                                    @     P  qI   P                                                   Mz @     P  u1   P                                                   Mz @     P  y   P                                                    @     P  }   P                                                    @     P     P                                                    @     P     P                                                   i @     P     P                                                    @     P     P                                                    @     P     P                                                   Y @     P     P                                                   Y @     P     P                                                   m @     P     P                                                   ! @     P  q   P                                                   		 @     P     P                                                   	 @     P  q   P                                                   	 @     P  Y   P                                                   q
- @     P  A   P                                                   M @     P  )   P                                                   u @     P     P                                                   u @     P     P                                                   iG @     P     P                                                   p @     P     P                                                   ј @     P     P                                                   ј @     P     P                                                    @     P     P                                                    @     P  i   P                                                   m @     P  Q   P                                                   ! @     P  9   P                                                    @     P  !   P                                                    @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   : @     P     P                                                   =
- @     P  ީ   P                                                   % @     P     P                                                   % @     P  y   P                                                   N @     P  a   P                                                   Yw @     P  I   P                                                    @     P  1   P                                                   9 @     P     P                                                   b @     P     P                                                   A @     P     P                                                   A @     P    P                                                    @     P    P                                                    @     P 	   P                                                   ] @     P    P                                                   54 @     P q   P                                                   \ @     P Y   P                                                    @     P A   P                                                   Q @     P )   P                                                    @     P !   P                                                    @     P $   P                                                    @     P (   P                                                   m( @     P ,   P                                                   p @     P 0   P                                                    @     P 4   P                                                   9 @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   U< @     P D9   P                                                   U< @     P H!   P                                                   	e @     P L	   P                                                    @     P O   P                                                   m @     P S   P                                                   ! @     P W   P                                                    @     P [   P                                                   '	 @     P _   P                                                   =P	 @     P cy   P                                                   x	 @     P ga   P                                                   	 @     P kI   P                                                   Y	 @     P o1   P                                                   Y	 @     P s   P                                                   	 @     P w   P                                                   	 @     P z   P                                                    @     P ~   P                                                   q; @     P    P                                                   %d @     P    P                                                   ٌ @     P    P                                                    @     P q   P                                                   A @     P Y   P                                                    @     P A   P                                                   / @     P )   P                                                   / @     P    P                                                   ]X @     P    P                                                   & @     P    P                                                     @     P    P                                                   5  @     P    P                                                   ^  @     P    P                                                   5  @     P    P                                                     @     P i   P                                                     @     P Q   P                                                   Q @     P 9   P                                                   * @     P !   P                                                   R @     P 	   P                                                   m{ @     P    P                                                   m{ @     P    P                                                   ! @     P    P                                                   I @     P ة   P                                                   ir @     P ܑ   P                                                    @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   9 @     P 1   P                                                   = @     P    P                                                   f @     P    P                                                   U @     P    P                                                   	 @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   m  @     P )   P                                                   !) @     P    P                                                   Q @     P    P                                                   z @     P "   P                                                   = @     P &   P                                                    @     P *   P                                                    @     P .   P                                                   Y @     P 2   P                                                   F @     P 6i   P                                                   9	 @     P :Q   P                                                   9	 @     P >9   P                                                   	 @     P B!   P                                                   	 @     P F	   P                                                   U
- @     P I   P                                                   	=
- @     P M   P                                                   e
- @     P Q   P                                                   q
- @     P U   P                                                   %
- @     P Y   P                                                   
- @     P ]y   P                                                    @     P aa   P                                                   A1 @     P eI   P                                                   Y @     P i1   P                                                    @     P m   P                                                    @     P q   P                                                    @     P t   P                                                   =( @     P x   P                                                   =( @     P |   P                                                   P @     P    P                                                   y @     P    P                                                   Y @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   u @     P )   P                                                   )E @     P    P                                                   m @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   1  @     P    P                                                     @     P    P                                                   " @     P i   P                                                   MK @     P Q   P                                                   MK @     P 9   P                                                   t @     P !   P                                                    @     P 	   P                                                   i @     P    P                                                    @     P    P                                                    @     P    P                                                   ? @     P ҩ   P                                                   9h @     P ֑   P                                                    @     P y   P                                                    @     P a   P                                                   U @     P I   P                                                   	 @     P 1   P                                                    @     P    P                                                   6 @     P    P                                                   5_ @     P    P                                                    @     P    P                                                    @     P    P                                                   Q @     P    P                                                   Q @     P    P                                                    @     P q   P                                                   * @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    u @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                    C @     P  Bi   P                                                    C @     P  FQ   P                                                    al @     P  J9   P                                                    al @     P  N!   P                                                    I @     P  qI   P                                                    I @     P  u1   P                                                    I @     P  y   P                                                    I @     P  }   P                                                    I @     P     P                                                    e @     P  qI   P                                                    z @     P  u1   P                                                    z @     P  y   P                                                    Y @     P  }   P                                                    Y @     P     P                                                     @     P     P                                                     @     P     P                                                    u @     P     P                                                     @     P     P                                                    Z @     P     P                                                    Z @     P     P                                                    ł @     P     P                                                    y @     P  q   P                                                    a	 @     P     P                                                    	 @     P  q   P                                                    	 @     P  Y   P                                                    
+ @     P  A   P                                                    eM @     P  )   P                                                    v @     P     P                                                    v @     P     P                                                    G @     P     P                                                    up @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                    ] @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                    y @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    ; @     P     P                                                    
+ @     P  ީ   P                                                    I& @     P     P                                                    I& @     P  y   P                                                    N @     P  a   P                                                    w @     P  I   P                                                    e @     P  1   P                                                    1: @     P     P                                                    b @     P     P                                                     @     P     P                                                     @     P    P                                                    M @     P    P                                                     @     P 	   P                                                     @     P    P                                                    4 @     P q   P                                                    A] @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    ] @     P !   P                                                    ] @     P $   P                                                      @     P (   P                                                    ( @     P ,   P                                                    )q @     P 0   P                                                    ݙ @     P 4   P                                                     @     P 8   P                                                    E @     P <i   P                                                     @     P @Q   P                                                    < @     P D9   P                                                    < @     P H!   P                                                    ae @     P L	   P                                                     @     P O   P                                                    ŭ @     P S   P                                                    y @     P W   P                                                    - @     P [   P                                                    '	 @     P _   P                                                    P	 @     P cy   P                                                    Iy	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    e	 @     P w   P                                                    a @     P z   P                                                     @     P ~   P                                                    ; @     P    P                                                    }d @     P    P                                                    1 @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    M @     P A   P                                                    0 @     P )   P                                                    0 @     P    P                                                    X @     P    P                                                    & @     P    P                                                    q  @     P    P                                                    %6  @     P    P                                                    ^  @     P    P                                                      @     P    P                                                    A  @     P i   P                                                      @     P Q   P                                                     @     P 9   P                                                    ]* @     P !   P                                                    S @     P 	   P                                                    { @     P    P                                                    { @     P    P                                                    Y! @     P    P                                                    J @     P ة   P                                                    r @     P ܑ   P                                                    u @     P y   P                                                    ) @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    E> @     P    P                                                    f @     P    P                                                     @     P    P                                                    a @     P    P                                                     @     P    P                                                     @     P    P                                                    ] @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                     @     P A   P                                                      @     P )   P                                                    y) @     P    P                                                    -R @     P    P                                                    z @     P "   P                                                     @     P &   P                                                    I @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    eF @     P 6i   P                                                    	 @     P :Q   P                                                    	 @     P >9   P                                                    E	 @     P B!   P                                                    	 @     P F	   P                                                    
+ @     P I   P                                                    a=
+ @     P M   P                                                    f
+ @     P Q   P                                                    Ɏ
+ @     P U   P                                                    }
+ @     P Y   P                                                    1
+ @     P ]y   P                                                     @     P aa   P                                                    1 @     P eI   P                                                    MZ @     P i1   P                                                     @     P m   P                                                    - @     P q   P                                                     @     P t   P                                                    ( @     P x   P                                                    ( @     P |   P                                                    IQ @     P    P                                                    y @     P    P                                                     @     P q   P                                                    e @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    E @     P    P                                                    5n @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P    P                                                      @     P    P                                                    =  @     P    P                                                    " @     P i   P                                                    K @     P Q   P                                                    K @     P 9   P                                                    Yt @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    u @     P    P                                                    ) @     P    P                                                    ? @     P ҩ   P                                                    h @     P ֑   P                                                    E @     P y   P                                                     @     P a   P                                                     @     P I   P                                                    a @     P 1   P                                                    % @     P    P                                                    6 @     P    P                                                    _ @     P    P                                                    A @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    ] @     P q   P                                                    + @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                   M' @     P     P                                                   M' @     P     P                                                   P @     P     P                                                   P @     P     P                                                   x @     P     P                                                   x @     P  q   P                                                   i @     P  Y   P                                                   i @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9D @     P     P                                                   9D @     P     P                                                   l @     P  i   P                                                   l @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   U @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   	 @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   q8 @     P  y   P                                                   q8 @     P  a   P                                                   %a @     P  I   P                                                   %a @     P  1   P                                                   5; @     P     P                                                   5; @     P     P                                                   c @     P     P                                                   c @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Q @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   m/ @     P $   P                                                   m/ @     P (   P                                                   !X @     P ,   P                                                   !X @     P 0   P                                                   Հ @     P 4   P                                                   Հ @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   = @     P D9   P                                                   = @     P H!   P                                                    @     P L	   P                                                    @     P O   P                                                   #	 @     P S   P                                                   #	 @     P W   P                                                   YL	 @     P [   P                                                   YL	 @     P _   P                                                   u	 @     P cy   P                                                   u	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   u	 @     P s   P                                                   u	 @     P w   P                                                   )	 @     P z   P                                                   )	 @     P ~   P                                                   
- @     P    P                                                   
- @     P    P                                                   @
- @     P    P                                                   @
- @     P q   P                                                   Ei
- @     P Y   P                                                   Ei
- @     P A   P                                                   
- @     P )   P                                                   
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   a
- @     P    P                                                   a
- @     P    P                                                    @     P    P                                                    @     P    P                                                   4 @     P i   P                                                   4 @     P Q   P                                                   }] @     P 9   P                                                   }] @     P !   P                                                   1 @     P 	   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   M  @     P y   P                                                   M  @     P a   P                                                   ) @     P I   P                                                   ) @     P 1   P                                                   Q @     P    P                                                   Q @     P    P                                                   iz @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                   E @     P q   P                                                   n @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                   q @     P    P                                                   %: @     P "   P                                                   b @     P &   P                                                    @     P *   P                                                   A @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   ]. @     P :Q   P                                                     @     P >9   P                                                   =  @     P B!   P                                                   9f  @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                   U  @     P Q   P                                                   		 @     P U   P                                                   1 @     P Y   P                                                   qZ @     P ]y   P                                                   % @     P aa   P                                                   ٫ @     P eI   P                                                    @     P i1   P                                                   A @     P m   P                                                   % @     P q   P                                                   N @     P t   P                                                   ]w @     P x   P                                                    @     P |   P                                                    @     P    P                                                   y @     P    P                                                   - @     P q   P                                                   B @     P Y   P                                                   k @     P A   P                                                   I @     P )   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                   7 @     P    P                                                   _ @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   Q+ @     P 9   P                                                   T @     P !   P                                                   | @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   =H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   Y @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   u< @     P    P                                                   )e @     P    P                                                   ݍ @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   0 @     P q   P                                                   aY @     P 	Y   P                                                   yn       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    A @     P  qI   P                                                    A @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    ' @     P     P                                                    ' @     P     P                                                    YP @     P     P                                                    YP @     P     P                                                    y @     P     P                                                    y @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    u @     P  )   P                                                    u @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                     @     P     P                                                     @     P     P                                                    D @     P     P                                                    D @     P     P                                                    Em @     P  i   P                                                    Em @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    a @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    8 @     P  y   P                                                    8 @     P  a   P                                                    }a @     P  I   P                                                    }a @     P  1   P                                                    ; @     P     P                                                    ; @     P     P                                                    Ad @     P     P                                                    Ad @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    / @     P $   P                                                    / @     P (   P                                                    yX @     P ,   P                                                    yX @     P 0   P                                                    - @     P 4   P                                                    - @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    I @     P L	   P                                                    I @     P O   P                                                    #	 @     P S   P                                                    #	 @     P W   P                                                    L	 @     P [   P                                                    L	 @     P _   P                                                    eu	 @     P cy   P                                                    eu	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    	 @     P w   P                                                    	 @     P z   P                                                    	 @     P ~   P                                                    5
+ @     P    P                                                    5
+ @     P    P                                                    @
+ @     P    P                                                    @
+ @     P q   P                                                    i
+ @     P Y   P                                                    i
+ @     P A   P                                                    Q
+ @     P )   P                                                    Q
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    m @     P    P                                                    m @     P    P                                                    !5 @     P i   P                                                    !5 @     P Q   P                                                    ] @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    = @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                      @     P y   P                                                      @     P a   P                                                    Y) @     P I   P                                                    Y) @     P 1   P                                                    R @     P    P                                                    R @     P    P                                                    z @     P    P                                                    z @     P    P                                                    u @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P q   P                                                    EF @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    a @     P    P                                                     @     P    P                                                     @     P "   P                                                    }: @     P &   P                                                    1c @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    M @     P 6i   P                                                     @     P :Q   P                                                    . @     P >9   P                                                    )  @     P B!   P                                                    =  @     P F	   P                                                    f  @     P I   P                                                    E  @     P M   P                                                      @     P Q   P                                                      @     P U   P                                                    a	 @     P Y   P                                                    2 @     P ]y   P                                                    Z @     P aa   P                                                    } @     P eI   P                                                    1 @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    M& @     P t   P                                                    O @     P x   P                                                    w @     P |   P                                                    i @     P    P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    9C @     P A   P                                                    k @     P )   P                                                     @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q7 @     P    P                                                    %` @     P    P                                                    و @     P    P                                                     @     P i   P                                                    A @     P Q   P                                                     @     P 9   P                                                    + @     P !   P                                                    ]T @     P 	   P                                                    } @     P    P                                                    ť @     P    P                                                    y @     P    P                                                    - @     P ҩ   P                                                     @     P ֑   P                                                    H @     P y   P                                                    Iq @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                    < @     P    P                                                    e @     P    P                                                    5 @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P q   P                                                    1 @     P 	Y   P                                                    n       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,10 +1,11 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   P @     P  6   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                   9D @     P  }   P                                                   l @     P     P                                                    @     P     P                                                   U @     P     P                                                   	 @     P     P                                                    @     P     P                                                    @     P  q   P                                                    @     P  Y   P                                                    @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                   m/ @     P     P                                                   !X @     P     P                                                   Հ @     P     P                                                    @     P     P                                                   = @     P     P                                                    @     P     P                                                   #	 @     P  i   P                                                   YL	 @     P  Q   P                                                   9
- @     P  9   P                                                   
- @     P  !   P                                                    @     P  	   P                                                    @     P     P                                                   UC @     P     P                                                   	l @     P     P                                                    @     P  ީ   P                                                   q @     P     P                                                   % @     P  y   P                                                    @     P  a   P                                                   7 @     P  I   P                                                   A` @     P  1   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   . @     P    P                                                   =W @     P    P                                                    @     P 	   P                                                    @     P    P                                                    @     P q   P                                                   Y @     P Y   P                                                    @     P A   P                                                   " @     P )   P                                                   5	  @     P !   P                                                   1  @     P $   P                                                   Z  @     P (   P                                                   Q  @     P ,   P                                                     @     P 0   P                                                     @     P 4   P                                                   1  @     P 8   P                                                   ( @     P <i   P                                                   Q @     P @Q   P                                                   Mz @     P D9   P                                                    @     P H!   P                                                    @     P L	   P                                                   i @     P O   P                                                   i @     P S   P                                                    @     P W   P                                                   E @     P [   P                                                   n @     P _   P                                                   9 @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                   U @     P o1   P                                                   	: @     P s   P                                                   < @     P w   P                                                   e @     P z   P                                                   5 @     P ~   P                                                    @     P    P                                                    @     P    P                                                   Q @     P    P                                                   1 @     P q   P                                                   Y @     P Y   P                                                   Y @     P A   P                                                   m @     P )   P                                                   ! @     P    P                                                    @     P    P                                                    @     P    P                                                   =% @     P    P                                                   M @     P    P                                                   v @     P    P                                                   Y @     P    P                                                   iy @     P i   P                                                    @     P Q   P                                                    @     P 9   P                                                    @     P !   P                                                   9	 @     P 	   P                                                   D	 @     P    P                                                   m	 @     P    P                                                   U	 @     P    P                                                   		 @     P ة   P                                                   	 @     P ܑ   P                                                   	 @     P y   P                                                   q
- @     P a   P                                                   %9
- @     P I   P                                                   a
- @     P 1   P                                                   
- @     P    P                                                   A
- @     P    P                                                   
- @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   m @     P    P                                                   !0 @     P q   P                                                   X @     P Y   P                                                    @     P A   P                                                   = @     P )   P                                                    @     P    P                                                    @     P    P                                                   Y$ @     P "   P                                                   M @     P &   P                                                   u @     P *   P                                                   u @     P .   P                                                   u @     P 2   P                                                   ) @     P 6i   P                                                    @     P :Q   P                                                    @     P >9   P                                                   EA @     P B!   P                                                   i @     P F	   P                                                    @     P I   P                                                   U @     P M   P                                                     @     P Q   P                                                   }*  @     P U   P                                                   1S  @     P Y   P                                                   {  @     P ]y   P                                                     @     P aa   P                                                   M  @     P eI   P                                                     @     P i1   P                                                    @     P m   P                                                   iG @     P q   P                                                   p @     P t   P                                                   ј @     P x   P                                                   ј @     P |   P                                                    @     P    P                                                   9 @     P    P                                                    @     P q   P                                                   ; @     P Y   P                                                   Ud @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                    @     P    P                                                   e> @     P    P                                                   g @     P    P                                                   ͏ @     P    P                                                    @     P    P                                                   5 @     P    P                                                   	 @     P i   P                                                   2 @     P Q   P                                                   Q[ @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                   & @     P    P                                                   & @     P ҩ   P                                                   O @     P ֑   P                                                   =x @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   Y @     P 1   P                                                   ) @     P    P                                                   MR @     P    P                                                   { @     P    P                                                    @     P    P                                                   i @     P    P                                                    @     P    P                                                    @     P    P                                                   F @     P q   P                                                   9o @     P 	Y   P                                                   
-       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    YP @     P  6   P                                                    u @     P  qI   P                                                    ) @     P  u1   P                                                     @     P  y   P                                                    D @     P  }   P                                                    Em @     P     P                                                     @     P     P                                                     @     P     P                                                    a @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                     @     P  )   P                                                     @     P     P                                                    / @     P     P                                                    yX @     P     P                                                    - @     P     P                                                     @     P     P                                                     @     P     P                                                    I @     P     P                                                    #	 @     P  i   P                                                    L	 @     P  Q   P                                                    
+ @     P  9   P                                                    E
+ @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    C @     P     P                                                    al @     P     P                                                     @     P  ީ   P                                                    ɽ @     P     P                                                    } @     P  y   P                                                    1 @     P  a   P                                                    7 @     P  I   P                                                    ` @     P  1   P                                                    M @     P     P                                                     @     P     P                                                    - @     P     P                                                    . @     P    P                                                    W @     P    P                                                    I @     P 	   P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    e @     P A   P                                                    # @     P )   P                                                    	  @     P !   P                                                    A2  @     P $   P                                                    Z  @     P (   P                                                      @     P ,   P                                                    ]  @     P 0   P                                                      @     P 4   P                                                      @     P 8   P                                                    =) @     P <i   P                                                    Q @     P @Q   P                                                    z @     P D9   P                                                    Y @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                     @     P S   P                                                    u @     P W   P                                                    )F @     P [   P                                                    n @     P _   P                                                     @     P cy   P                                                    E @     P ga   P                                                     @     P kI   P                                                     @     P o1   P                                                    a: @     P s   P                                                    %= @     P w   P                                                    e @     P z   P                                                     @     P ~   P                                                    A @     P    P                                                     @     P    P                                                     @     P    P                                                    ]1 @     P q   P                                                    Z @     P Y   P                                                    Z @     P A   P                                                    ł @     P )   P                                                    y @     P    P                                                    - @     P    P                                                     @     P    P                                                    % @     P    P                                                    IN @     P    P                                                    v @     P    P                                                     @     P    P                                                    y @     P i   P                                                    u @     P Q   P                                                    ) @     P 9   P                                                     @     P !   P                                                    	 @     P 	   P                                                    EE	 @     P    P                                                    m	 @     P    P                                                    	 @     P    P                                                    a	 @     P ة   P                                                    	 @     P ܑ   P                                                    	 @     P y   P                                                    
+ @     P a   P                                                    }9
+ @     P I   P                                                    1b
+ @     P 1   P                                                    
+ @     P    P                                                    
+ @     P    P                                                    M
+ @     P    P                                                     @     P    P                                                    ] @     P    P                                                     @     P    P                                                     @     P    P                                                    y0 @     P q   P                                                    -Y @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    I @     P    P                                                     @     P    P                                                    $ @     P "   P                                                    eM @     P &   P                                                    v @     P *   P                                                    v @     P .   P                                                    ͞ @     P 2   P                                                     @     P 6i   P                                                    5 @     P :Q   P                                                     @     P >9   P                                                    A @     P B!   P                                                    Qj @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                    !  @     P Q   P                                                    *  @     P U   P                                                    S  @     P Y   P                                                    =|  @     P ]y   P                                                      @     P aa   P                                                      @     P eI   P                                                    Y  @     P i1   P                                                     @     P m   P                                                    G @     P q   P                                                    up @     P t   P                                                    ) @     P x   P                                                    ) @     P |   P                                                     @     P    P                                                     @     P    P                                                    E @     P q   P                                                    ; @     P Y   P                                                    d @     P A   P                                                    a @     P )   P                                                    U @     P    P                                                    	 @     P    P                                                    > @     P    P                                                    qg @     P    P                                                    % @     P    P                                                    ٸ @     P    P                                                     @     P    P                                                    A
+ @     P i   P                                                    2 @     P Q   P                                                    [ @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    y @     P    P                                                    -' @     P    P                                                    -' @     P ҩ   P                                                    O @     P ֑   P                                                    x @     P y   P                                                    I @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    ) @     P    P                                                    R @     P    P                                                    Y{ @     P    P                                                     @     P    P                                                     @     P    P                                                    u @     P    P                                                    ) @     P    P                                                    F @     P q   P                                                    o @     P 	Y   P                                                    
+       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,7 +1,8 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                    @     P  qI   P                                                    @     P  u1   P                                                   9D @     P  y   P                                                   l @     P  }   P                                                    @     P     P                                                   U @     P     P                                                   	 @     P     P                                                    @     P     P                                                   Հ @     P  :   P                                                   q @     P     P                                                   q @     P  q   P                                                   q @     P  Y   P                                                   q @     P  A   P                                                   q @     P  )   P                                                   q @     P     P                                                   q @     P     P                                                   q @     P     P                                                   q @     P     P                                                   q @     P     P                                                   q @     P     P                                                   q @     P     P                                                   q @     P  i   P                                                   q @     P  Q   P                                                   q @     P  9   P                                                   q @     P  !   P                                                    @     P  	   P                                                   " @     P     P                                                   5	  @     P     P                                                   1  @     P     P                                                   Z  @     P  ީ   P                                                   Q  @     P     P                                                     @     P  y   P                                                     @     P  a   P                                                   m  @     P  I   P                                                   !& @     P  1   P                                                   N @     P     P                                                   w @     P     P                                                   = @     P     P                                                    @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Y @     P    P                                                   i @     P q   P                                                    @     P Y   P                                                   E @     P A   P                                                   n @     P )   P                                                   9 @     P !   P                                                    @     P $   P                                                    @     P (   P                                                   U @     P ,   P                                                   	: @     P 0   P                                                   b @     P 4   P                                                   q @     P 8   P                                                   % @     P <i   P                                                    @     P @Q   P                                                    @     P D9   P                                                   A. @     P H!   P                                                   V @     P L	   P                                                   V @     P O   P                                                    @     P S   P                                                   1 @     P W   P                                                   Y @     P [   P                                                   m @     P _   P                                                   ! @     P cy   P                                                    @     P ga   P                                                    @     P kI   P                                                   =% @     P o1   P                                                   M @     P s   P                                                   v @     P w   P                                                   Y @     P z   P                                                    @     P ~   P                                                    @     P    P                                                   u @     P    P                                                   )B @     P    P                                                   j @     P q   P                                                    @     P Y   P                                                   E @     P A   P                                                    @     P )   P                                                    @     P    P                                                   m	 @     P    P                                                   U	 @     P    P                                                   		 @     P    P                                                   	 @     P    P                                                   q
- @     P    P                                                   %9
- @     P    P                                                   a
- @     P i   P                                                   
- @     P Q   P                                                   A
- @     P 9   P                                                   
- @     P !   P                                                    @     P 	   P                                                   ]- @     P    P                                                   V @     P    P                                                   ~ @     P    P                                                   y @     P ة   P                                                   - @     P ܑ   P                                                    @     P y   P                                                   ! @     P a   P                                                   IJ @     P I   P                                                   IJ @     P 1   P                                                   = @     P    P                                                    @     P    P                                                    @     P    P                                                   Y$ @     P    P                                                   M @     P    P                                                   u @     P    P                                                   u @     P    P                                                   ) @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   EA @     P )   P                                                   i @     P    P                                                    @     P    P                                                   a @     P "   P                                                    @     P &   P                                                    @     P *   P                                                   }5 @     P .   P                                                     @     P 2   P                                                   D  @     P 6i   P                                                   Ym  @     P :Q   P                                                     @     P >9   P                                                     @     P B!   P                                                   M  @     P F	   P                                                     @     P I   P                                                    @     P M   P                                                   iG @     P Q   P                                                   p @     P U   P                                                   ј @     P Y   P                                                    @     P ]y   P                                                   9 @     P aa   P                                                    @     P eI   P                                                   ; @     P i1   P                                                   Ud @     P m   P                                                   	 @     P q   P                                                    @     P t   P                                                   q @     P x   P                                                   % @     P |   P                                                   / @     P    P                                                   X @     P    P                                                   A @     P q   P                                                    @     P Y   P                                                   5 @     P A   P                                                   	 @     P )   P                                                   2 @     P    P                                                   2 @     P    P                                                   Q[ @     P    P                                                    @     P    P                                                    @     P    P                                                   m @     P    P                                                   ! @     P    P                                                   & @     P i   P                                                   O @     P Q   P                                                   =x @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   Y @     P    P                                                    @     P    P                                                   C @     P    P                                                   ul @     P ҩ   P                                                   ) @     P ֑   P                                                   ݽ @     P y   P                                                    @     P a   P                                                   E @     P I   P                                                   7 @     P 1   P                                                   ` @     P    P                                                   a @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   } @     P    P                                                   1, @     P    P                                                   T @     P q   P                                                   } @     P 	Y   P                                                   i'       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    y @     P  6   P                                                    ) @     P  qI   P                                                     @     P  u1   P                                                    D @     P  y   P                                                    Em @     P  }   P                                                     @     P     P                                                     @     P     P                                                    a @     P     P                                                     @     P     P                                                    - @     P  :   P                                                    ɽ @     P     P                                                    ɽ @     P  q   P                                                    ɽ @     P  Y   P                                                    ɽ @     P  A   P                                                    ɽ @     P  )   P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P     P                                                    ɽ @     P  i   P                                                    ɽ @     P  Q   P                                                    ɽ @     P  9   P                                                    ɽ @     P  !   P                                                    e @     P  	   P                                                    # @     P     P                                                    	  @     P     P                                                    A2  @     P     P                                                    Z  @     P  ީ   P                                                      @     P     P                                                    ]  @     P  y   P                                                      @     P  a   P                                                      @     P  I   P                                                    y& @     P  1   P                                                    -O @     P     P                                                    w @     P     P                                                     @     P     P                                                    I @     P    P                                                    I @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    u @     P Y   P                                                    )F @     P A   P                                                    n @     P )   P                                                     @     P !   P                                                    E @     P $   P                                                     @     P (   P                                                     @     P ,   P                                                    a: @     P 0   P                                                    c @     P 4   P                                                    ɋ @     P 8   P                                                    } @     P <i   P                                                    1 @     P @Q   P                                                     @     P D9   P                                                    . @     P H!   P                                                    MW @     P L	   P                                                    MW @     P O   P                                                     @     P S   P                                                    ]1 @     P W   P                                                    Z @     P [   P                                                    ł @     P _   P                                                    y @     P cy   P                                                    - @     P ga   P                                                     @     P kI   P                                                    % @     P o1   P                                                    IN @     P s   P                                                    v @     P w   P                                                     @     P z   P                                                    e @     P ~   P                                                     @     P    P                                                     @     P    P                                                    B @     P    P                                                    5k @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    Q @     P )   P                                                    Q @     P    P                                                    m	 @     P    P                                                    	 @     P    P                                                    a	 @     P    P                                                    	 @     P    P                                                    
+ @     P    P                                                    }9
+ @     P    P                                                    1b
+ @     P i   P                                                    
+ @     P Q   P                                                    
+ @     P 9   P                                                    M
+ @     P !   P                                                     @     P 	   P                                                    - @     P    P                                                    iV @     P    P                                                     @     P    P                                                    ѧ @     P ة   P                                                     @     P ܑ   P                                                    9 @     P y   P                                                    ! @     P a   P                                                    J @     P I   P                                                    J @     P 1   P                                                     @     P    P                                                    I @     P    P                                                     @     P    P                                                    $ @     P    P                                                    eM @     P    P                                                    v @     P    P                                                    ͞ @     P    P                                                     @     P q   P                                                    5 @     P Y   P                                                     @     P A   P                                                    A @     P )   P                                                    Qj @     P    P                                                     @     P    P                                                     @     P "   P                                                    m @     P &   P                                                    ! @     P *   P                                                    5 @     P .   P                                                    I  @     P 2   P                                                    D  @     P 6i   P                                                    m  @     P :Q   P                                                      @     P >9   P                                                      @     P B!   P                                                      @     P F	   P                                                    Y  @     P I   P                                                     @     P M   P                                                    G @     P Q   P                                                    up @     P U   P                                                    ) @     P Y   P                                                     @     P ]y   P                                                     @     P aa   P                                                    E @     P eI   P                                                    ; @     P i1   P                                                    d @     P m   P                                                    a @     P q   P                                                     @     P t   P                                                     @     P x   P                                                    } @     P |   P                                                    10 @     P    P                                                    X @     P    P                                                     @     P q   P                                                    M @     P Y   P                                                     @     P A   P                                                    A
+ @     P )   P                                                    2 @     P    P                                                    2 @     P    P                                                    [ @     P    P                                                    ] @     P    P                                                     @     P    P                                                     @     P    P                                                    y @     P    P                                                    -' @     P i   P                                                    O @     P Q   P                                                    x @     P 9   P                                                    I @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    e @     P    P                                                    D @     P    P                                                    l @     P ҩ   P                                                     @     P ֑   P                                                    5 @     P y   P                                                     @     P a   P                                                     @     P I   P                                                    Q8 @     P 1   P                                                    a @     P    P                                                     @     P    P                                                    m @     P    P                                                    m @     P    P                                                    ! @     P    P                                                     @     P    P                                                    , @     P    P                                                    =U @     P q   P                                                    } @     P 	Y   P                                                    '       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,16 +1,16 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                    @     P  qI   P                                                   9D @     P  u1   P                                                   l @     P  y   P                                                    @     P  }   P                                                   U @     P     P                                                   	 @     P     P                                                    @     P     P                                                    @     P  :   P                                                   E @     P  >   P                                                   # @     P     P                                                   # @     P     P                                                   }`
- @     P  q   P                                                   }`
- @     P  Y   P                                                   1
- @     P  A   P                                                   1
- @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   5 @     P     P                                                   5 @     P  i   P                                                   u @     P  Q   P                                                   u @     P  9   P                                                   ) @     P  !   P                                                   ) @     P  	   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                   E: @     P     P                                                   E: @     P  y   P                                                   b @     P  a   P                                                   b @     P  I   P                                                    @     P  1   P                                                    @     P     P                                                   a @     P     P                                                   a @     P     P                                                    @     P    P                                                    @     P    P                                                    @     P 	   P                                                   y% @     P    P                                                   -N @     P q   P                                                   v @     P Y   P                                                    @     P A   P                                                   I @     P )   P                                                    @     P !   P                                                    @     P $   P                                                   eB @     P (   P                                                   k @     P ,   P                                                   ͓ @     P 0   P                                                    @     P 4   P                                                   5 @     P 8   P                                                    @     P <i   P                                                   6 @     P @Q   P                                                    @     P D9   P                                                   a9 @     P H!   P                                                   b @     P L	   P                                                   b @     P O   P                                                   Ɋ @     P S   P                                                   } @     P W   P                                                   1 @     P [   P                                                   	 @     P _   P                                                   -	 @     P cy   P                                                   MV	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   i	 @     P s   P                                                   	 @     P w   P                                                   !
- @     P z   P                                                   J
- @     P ~   P                                                   9s
- @     P    P                                                   
- @     P    P                                                   IM @     P    P                                                   u @     P q   P                                                    @     P Y   P                                                   e @     P A   P                                                    @     P )   P                                                    @     P    P                                                    @     P    P                                                   A @     P    P                                                   5j @     P    P                                                    @     P    P                                                    @     P    P                                                   Q @     P    P                                                    @     P i   P                                                   5 @     P Q   P                                                   m^ @     P 9   P                                                   ! @     P !   P                                                   կ @     P 	   P                                                    @     P    P                                                   = @     P    P                                                    @     P    P                                                    @     P ة   P                                                   M @     P ܑ   P                                                    @     P y   P                                                   , @     P a   P                                                   )  @     P I   P                                                   )  @     P 1   P                                                   ;  @     P    P                                                   d  @     P    P                                                   E  @     P    P                                                     @     P    P                                                     @     P    P                                                   a @     P    P                                                   0 @     P    P                                                   X @     P q   P                                                   } @     P Y   P                                                   1 @     P A   P                                                    @     P )   P                                                    @     P    P                                                   M$ @     P    P                                                   A @     P "   P                                                    @     P &   P                                                    @     P *   P                                                   ] @     P .   P                                                   ' @     P 2   P                                                   O @     P 6i   P                                                   yx @     P :Q   P                                                   - @     P >9   P                                                   - @     P B!   P                                                    @     P F	   P                                                    @     P I   P                                                   I @     P M   P                                                   C @     P Q   P                                                   l @     P U   P                                                   e @     P Y   P                                                    @     P ]y   P                                                    @     P aa   P                                                    @     P eI   P                                                   58 @     P i1   P                                                   ` @     P m   P                                                    @     P q   P                                                    @     P t   P                                                    @     P x   P                                                   E @     P |   P                                                   : @     P    P                                                   c @     P    P                                                   a @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                   } @     P )   P                                                   1/ @     P    P                                                   1/ @     P    P                                                   W @     P    P                                                    @     P    P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                   i# @     P i   P                                                   L @     P Q   P                                                   t @     P 9   P                                                    @     P !   P                                                   9 @     P 	   P                                                    @     P    P                                                   	 @     P    P                                                   U@	 @     P    P                                                   	i	 @     P ҩ   P                                                   	 @     P ֑   P                                                   q	 @     P y   P                                                   %	 @     P a   P                                                   
- @     P I   P                                                   4
- @     P 1   P                                                   A]
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   ]
- @     P    P                                                   ]
- @     P    P                                                     @     P    P                                                   ( @     P    P                                                   yQ @     P q   P                                                   -z @     P 	Y   P                                                   #       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                     @     P  6   P                                                     @     P  qI   P                                                    D @     P  u1   P                                                    Em @     P  y   P                                                     @     P  }   P                                                     @     P     P                                                    a @     P     P                                                     @     P     P                                                     @     P  :   P                                                     @     P  >   P                                                    9$ @     P     P                                                    9$ @     P     P                                                    `
+ @     P  q   P                                                    `
+ @     P  Y   P                                                    
+ @     P  A   P                                                    
+ @     P  )   P                                                    q @     P     P                                                    q @     P     P                                                    % @     P     P                                                    % @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  i   P                                                    ͗ @     P  Q   P                                                    ͗ @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                    5 @     P     P                                                    5 @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                    : @     P     P                                                    : @     P  y   P                                                    Qc @     P  a   P                                                    Qc @     P  I   P                                                     @     P  1   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                    i @     P    P                                                    i @     P    P                                                     @     P 	   P                                                    % @     P    P                                                    N @     P q   P                                                    9w @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                    U @     P !   P                                                    	 @     P $   P                                                    B @     P (   P                                                    qk @     P ,   P                                                    % @     P 0   P                                                    ټ @     P 4   P                                                     @     P 8   P                                                    A @     P <i   P                                                    6 @     P @Q   P                                                     @     P D9   P                                                    9 @     P H!   P                                                    mb @     P L	   P                                                    mb @     P O   P                                                    ! @     P S   P                                                    ճ @     P W   P                                                     @     P [   P                                                    =	 @     P _   P                                                    -	 @     P cy   P                                                    V	 @     P ga   P                                                    Y	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    u	 @     P w   P                                                    )"
+ @     P z   P                                                    J
+ @     P ~   P                                                    s
+ @     P    P                                                    E
+ @     P    P                                                    M @     P    P                                                    Uv @     P q   P                                                    	 @     P Y   P                                                     @     P A   P                                                    q @     P )   P                                                    q @     P    P                                                    % @     P    P                                                    A @     P    P                                                    j @     P    P                                                    A @     P    P                                                     @     P    P                                                     @     P    P                                                    ] @     P i   P                                                    6 @     P Q   P                                                    ^ @     P 9   P                                                    y @     P !   P                                                    - @     P 	   P                                                     @     P    P                                                     @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                    Y @     P y   P                                                    - @     P a   P                                                      @     P I   P                                                      @     P 1   P                                                    5<  @     P    P                                                    d  @     P    P                                                      @     P    P                                                    Q  @     P    P                                                      @     P    P                                                     @     P    P                                                    m0 @     P    P                                                    !Y @     P q   P                                                    Ձ @     P Y   P                                                     @     P A   P                                                    = @     P )   P                                                     @     P    P                                                    $ @     P    P                                                     @     P "   P                                                    M @     P &   P                                                     @     P *   P                                                     @     P .   P                                                    i' @     P 2   P                                                    P @     P 6i   P                                                    x @     P :Q   P                                                     @     P >9   P                                                     @     P B!   P                                                    9 @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                    UD @     P Q   P                                                    	m @     P U   P                                                     @     P Y   P                                                    q @     P ]y   P                                                    % @     P aa   P                                                     @     P eI   P                                                    8 @     P i1   P                                                    Aa @     P m   P                                                     @     P q   P                                                    5 @     P t   P                                                     @     P x   P                                                     @     P |   P                                                    Q; @     P    P                                                    d @     P    P                                                     @     P q   P                                                    m @     P Y   P                                                    ! @     P A   P                                                     @     P )   P                                                    / @     P    P                                                    / @     P    P                                                    =X @     P    P                                                     @     P    P                                                     @     P    P                                                    Y @     P    P                                                     @     P    P                                                    # @     P i   P                                                    uL @     P Q   P                                                    )u @     P 9   P                                                    ݝ @     P !   P                                                     @     P 	   P                                                    E @     P    P                                                    	 @     P    P                                                    @	 @     P    P                                                    ai	 @     P ҩ   P                                                    	 @     P ֑   P                                                    ɺ	 @     P y   P                                                    }	 @     P a   P                                                    1
+ @     P I   P                                                    4
+ @     P 1   P                                                    ]
+ @     P    P                                                    M
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    i  @     P    P                                                    ) @     P    P                                                    Q @     P q   P                                                    z @     P 	Y   P                                                    U$       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-Westwood4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,15 +1,15 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                   9D @     P  qI   P                                                   l @     P  u1   P                                                    @     P  y   P                                                   U @     P  }   P                                                   	 @     P     P                                                    @     P     P                                                   = @     P  :   P                                                    @     P  >   P                                                   L @     P  Bi   P                                                   L @     P  FQ   P                                                   1
- @     P     P                                                   1
- @     P     P                                                   1
- @     P     P                                                    @     P  q   P                                                    @     P  Y   P                                                    @     P  A   P                                                    @     P  )   P                                                   5 @     P     P                                                   5 @     P     P                                                   ) @     P     P                                                   ) @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  i   P                                                   E: @     P  Q   P                                                   E: @     P  9   P                                                   b @     P  !   P                                                   b @     P  	   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                   y% @     P     P                                                   y% @     P  y   P                                                   -N @     P  a   P                                                   -N @     P  I   P                                                   v @     P  1   P                                                   v @     P     P                                                    @     P     P                                                    @     P     P                                                   I @     P    P                                                    @     P    P                                                    @     P 	   P                                                   eB @     P    P                                                   k @     P q   P                                                   ͓ @     P Y   P                                                    @     P A   P                                                   a9 @     P )   P                                                   b @     P !   P                                                   Ɋ @     P $   P                                                   } @     P (   P                                                   1 @     P ,   P                                                   	 @     P 0   P                                                   -	 @     P 4   P                                                   MV	 @     P 8   P                                                   	 @     P <i   P                                                   	 @     P @Q   P                                                   i	 @     P D9   P                                                   i	 @     P H!   P                                                   	 @     P L	   P                                                   !
- @     P O   P                                                   J
- @     P S   P                                                   9s
- @     P W   P                                                   
- @     P [   P                                                   
- @     P _   P                                                   u @     P cy   P                                                    @     P ga   P                                                   e @     P kI   P                                                    @     P o1   P                                                    @     P s   P                                                   A @     P w   P                                                   5j @     P z   P                                                    @     P ~   P                                                    @     P    P                                                   Q @     P    P                                                    @     P    P                                                   5 @     P q   P                                                   m^ @     P Y   P                                                   m^ @     P A   P                                                   ! @     P )   P                                                   կ @     P    P                                                    @     P    P                                                   = @     P    P                                                   ) @     P    P                                                    @     P    P                                                   M @     P    P                                                    @     P    P                                                   , @     P i   P                                                   )  @     P Q   P                                                   ;  @     P 9   P                                                   d  @     P !   P                                                   E  @     P 	   P                                                     @     P    P                                                     @     P    P                                                   a @     P    P                                                   0 @     P ة   P                                                   X @     P ܑ   P                                                   } @     P y   P                                                   } @     P a   P                                                   1 @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   M$ @     P    P                                                   M @     P    P                                                    @     P    P                                                    @     P    P                                                   ] @     P    P                                                   ' @     P    P                                                   O @     P q   P                                                   yx @     P Y   P                                                   - @     P A   P                                                    @     P )   P                                                    @     P    P                                                   I @     P    P                                                   C @     P "   P                                                   l @     P &   P                                                   e @     P *   P                                                    @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                    @     P :Q   P                                                   58 @     P >9   P                                                   ` @     P B!   P                                                    @     P F	   P                                                   Q @     P I   P                                                    @     P M   P                                                   E @     P Q   P                                                   : @     P U   P                                                   c @     P Y   P                                                   a @     P ]y   P                                                    @     P aa   P                                                    @     P eI   P                                                   } @     P i1   P                                                   1/ @     P m   P                                                   W @     P q   P                                                    @     P t   P                                                   M @     P x   P                                                    @     P |   P                                                    @     P    P                                                   i# @     P    P                                                   L @     P q   P                                                   t @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                   9 @     P    P                                                    @     P    P                                                   	 @     P    P                                                   U@	 @     P    P                                                   	i	 @     P    P                                                   	 @     P    P                                                   q	 @     P    P                                                   %	 @     P i   P                                                   
- @     P Q   P                                                   4
- @     P 9   P                                                   A]
- @     P !   P                                                   
- @     P 	   P                                                   
- @     P    P                                                   ]
- @     P    P                                                     @     P    P                                                   ( @     P ҩ   P                                                   yQ @     P ֑   P                                                   -z @     P y   P                                                    @     P a   P                                                    @     P I   P                                                   I @     P 1   P                                                    @     P    P                                                   E @     P    P                                                   E @     P    P                                                   en @     P    P                                                    @     P    P                                                   Ϳ @     P    P                                                    @     P    P                                                   5 @     P q   P                                                   9 @     P 	Y   P                                                   y       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    u @     P  6   P                                                    D @     P  qI   P                                                    Em @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    a @     P     P                                                     @     P     P                                                     @     P  :   P                                                    Q @     P  >   P                                                    L @     P  Bi   P                                                    L @     P  FQ   P                                                    
+ @     P     P                                                    
+ @     P     P                                                    
+ @     P     P                                                    % @     P  q   P                                                    % @     P  Y   P                                                     @     P  A   P                                                     @     P  )   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                    5 @     P     P                                                    5 @     P     P                                                     @     P     P                                                     @     P  i   P                                                    : @     P  Q   P                                                    : @     P  9   P                                                    Qc @     P  !   P                                                    Qc @     P  	   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                    % @     P     P                                                    % @     P  y   P                                                    N @     P  a   P                                                    N @     P  I   P                                                    9w @     P  1   P                                                    9w @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P    P                                                    U @     P    P                                                    	 @     P 	   P                                                    B @     P    P                                                    qk @     P q   P                                                    % @     P Y   P                                                    ټ @     P A   P                                                    9 @     P )   P                                                    mb @     P !   P                                                    ! @     P $   P                                                    ճ @     P (   P                                                     @     P ,   P                                                    =	 @     P 0   P                                                    -	 @     P 4   P                                                    V	 @     P 8   P                                                    Y	 @     P <i   P                                                    	 @     P @Q   P                                                    	 @     P D9   P                                                    	 @     P H!   P                                                    u	 @     P L	   P                                                    )"
+ @     P O   P                                                    J
+ @     P S   P                                                    s
+ @     P W   P                                                    E
+ @     P [   P                                                    
+ @     P _   P                                                    Uv @     P cy   P                                                    	 @     P ga   P                                                     @     P kI   P                                                    q @     P o1   P                                                    % @     P s   P                                                    A @     P w   P                                                    j @     P z   P                                                    A @     P ~   P                                                     @     P    P                                                     @     P    P                                                    ] @     P    P                                                    6 @     P q   P                                                    ^ @     P Y   P                                                    ^ @     P A   P                                                    y @     P )   P                                                    - @     P    P                                                     @     P    P                                                     @     P    P                                                    I* @     P    P                                                     @     P    P                                                     @     P    P                                                    Y @     P    P                                                    - @     P i   P                                                      @     P Q   P                                                    5<  @     P 9   P                                                    d  @     P !   P                                                      @     P 	   P                                                    Q  @     P    P                                                      @     P    P                                                     @     P    P                                                    m0 @     P ة   P                                                    !Y @     P ܑ   P                                                    Ձ @     P y   P                                                    Ձ @     P a   P                                                     @     P I   P                                                    = @     P 1   P                                                     @     P    P                                                    $ @     P    P                                                    YM @     P    P                                                    M @     P    P                                                     @     P    P                                                     @     P    P                                                    i' @     P    P                                                    P @     P q   P                                                    x @     P Y   P                                                     @     P A   P                                                    9 @     P )   P                                                     @     P    P                                                     @     P    P                                                    UD @     P "   P                                                    	m @     P &   P                                                     @     P *   P                                                    q @     P .   P                                                    % @     P 2   P                                                     @     P 6i   P                                                     @     P :Q   P                                                    8 @     P >9   P                                                    Aa @     P B!   P                                                     @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                     @     P Q   P                                                    Q; @     P U   P                                                    d @     P Y   P                                                     @     P ]y   P                                                    m @     P aa   P                                                    ! @     P eI   P                                                     @     P i1   P                                                    / @     P m   P                                                    =X @     P q   P                                                     @     P t   P                                                     @     P x   P                                                    Y @     P |   P                                                     @     P    P                                                    # @     P    P                                                    uL @     P q   P                                                    )u @     P Y   P                                                    ݝ @     P A   P                                                    ݝ @     P )   P                                                     @     P    P                                                    E @     P    P                                                    	 @     P    P                                                    @	 @     P    P                                                    ai	 @     P    P                                                    	 @     P    P                                                    ɺ	 @     P    P                                                    }	 @     P i   P                                                    1
+ @     P Q   P                                                    4
+ @     P 9   P                                                    ]
+ @     P !   P                                                    M
+ @     P 	   P                                                    
+ @     P    P                                                    
+ @     P    P                                                    i  @     P    P                                                    ) @     P ҩ   P                                                    Q @     P ֑   P                                                    z @     P y   P                                                    9 @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    U @     P    P                                                    	F @     P    P                                                    	F @     P    P                                                    n @     P    P                                                    q @     P    P                                                    % @     P    P                                                     @     P    P                                                     @     P q   P                                                    A: @     P 	Y   P                                                    ѡ       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,13 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  qI   P                                                    @     P  u1   P                                                    @     P  y   P                                                    @     P  }   P                                                   M' @     P     P                                                   M' @     P     P                                                   P @     P     P                                                   P @     P     P                                                   x @     P     P                                                   x @     P  q   P                                                   i @     P  Y   P                                                   i @     P  A   P                                                    @     P  )   P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9D @     P     P                                                   9D @     P     P                                                   l @     P  i   P                                                   l @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   U @     P  	   P                                                   U @     P     P                                                   	 @     P     P                                                   	 @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   q8 @     P  y   P                                                   q8 @     P  a   P                                                   %a @     P  I   P                                                   %a @     P  1   P                                                   5; @     P     P                                                   5; @     P     P                                                   c @     P     P                                                   c @     P    P                                                    @     P    P                                                    @     P 	   P                                                   Q @     P    P                                                   Q @     P q   P                                                    @     P Y   P                                                    @     P A   P                                                    @     P )   P                                                    @     P !   P                                                   m/ @     P $   P                                                   m/ @     P (   P                                                   !X @     P ,   P                                                   !X @     P 0   P                                                   Հ @     P 4   P                                                   Հ @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   = @     P D9   P                                                   = @     P H!   P                                                    @     P L	   P                                                    @     P O   P                                                   #	 @     P S   P                                                   #	 @     P W   P                                                   YL	 @     P [   P                                                   YL	 @     P _   P                                                   u	 @     P cy   P                                                   u	 @     P ga   P                                                   	 @     P kI   P                                                   	 @     P o1   P                                                   u	 @     P s   P                                                   u	 @     P w   P                                                   )	 @     P z   P                                                   )	 @     P ~   P                                                   
- @     P    P                                                   
- @     P    P                                                   @
- @     P    P                                                   @
- @     P q   P                                                   Ei
- @     P Y   P                                                   Ei
- @     P A   P                                                   
- @     P )   P                                                   
- @     P    P                                                   
- @     P    P                                                   
- @     P    P                                                   a
- @     P    P                                                   a
- @     P    P                                                    @     P    P                                                    @     P    P                                                   4 @     P i   P                                                   4 @     P Q   P                                                   }] @     P 9   P                                                   }] @     P !   P                                                   1 @     P 	   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                   M  @     P y   P                                                   M  @     P a   P                                                   ) @     P I   P                                                   ) @     P 1   P                                                   Q @     P    P                                                   Q @     P    P                                                   iz @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   9 @     P    P                                                   E @     P q   P                                                   n @     P Y   P                                                   U @     P A   P                                                   	 @     P )   P                                                    @     P    P                                                   q @     P    P                                                   %: @     P "   P                                                   b @     P &   P                                                    @     P *   P                                                   A @     P .   P                                                    @     P 2   P                                                    @     P 6i   P                                                   ]. @     P :Q   P                                                     @     P >9   P                                                   =  @     P B!   P                                                   9f  @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                   U  @     P Q   P                                                   		 @     P U   P                                                   1 @     P Y   P                                                   qZ @     P ]y   P                                                   % @     P aa   P                                                   ٫ @     P eI   P                                                    @     P i1   P                                                   A @     P m   P                                                   % @     P q   P                                                   N @     P t   P                                                   ]w @     P x   P                                                    @     P |   P                                                    @     P    P                                                   y @     P    P                                                   - @     P q   P                                                   B @     P Y   P                                                   k @     P A   P                                                   I @     P )   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                   7 @     P    P                                                   _ @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   Q+ @     P 9   P                                                   T @     P !   P                                                   | @     P 	   P                                                   m @     P    P                                                   ! @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                   =H @     P ֑   P                                                   p @     P y   P                                                    @     P a   P                                                   Y @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   u< @     P    P                                                   )e @     P    P                                                   ݍ @     P    P                                                    @     P    P                                                   E @     P    P                                                    @     P    P                                                   0 @     P q   P                                                   aY @     P 	Y   P                                                   yn       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    A @     P  qI   P                                                    A @     P  u1   P                                                     @     P  y   P                                                     @     P  }   P                                                    ' @     P     P                                                    ' @     P     P                                                    YP @     P     P                                                    YP @     P     P                                                    y @     P     P                                                    y @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    u @     P  )   P                                                    u @     P     P                                                    ) @     P     P                                                    ) @     P     P                                                     @     P     P                                                     @     P     P                                                    D @     P     P                                                    D @     P     P                                                    Em @     P  i   P                                                    Em @     P  Q   P                                                     @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                    a @     P     P                                                    a @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    8 @     P  y   P                                                    8 @     P  a   P                                                    }a @     P  I   P                                                    }a @     P  1   P                                                    ; @     P     P                                                    ; @     P     P                                                    Ad @     P     P                                                    Ad @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                    ] @     P Y   P                                                    ] @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    / @     P $   P                                                    / @     P (   P                                                    yX @     P ,   P                                                    yX @     P 0   P                                                    - @     P 4   P                                                    - @     P 8   P                                                     @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                    I @     P L	   P                                                    I @     P O   P                                                    #	 @     P S   P                                                    #	 @     P W   P                                                    L	 @     P [   P                                                    L	 @     P _   P                                                    eu	 @     P cy   P                                                    eu	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    	 @     P s   P                                                    	 @     P w   P                                                    	 @     P z   P                                                    	 @     P ~   P                                                    5
+ @     P    P                                                    5
+ @     P    P                                                    @
+ @     P    P                                                    @
+ @     P q   P                                                    i
+ @     P Y   P                                                    i
+ @     P A   P                                                    Q
+ @     P )   P                                                    Q
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    
+ @     P    P                                                    m @     P    P                                                    m @     P    P                                                    !5 @     P i   P                                                    !5 @     P Q   P                                                    ] @     P 9   P                                                    ] @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    = @     P    P                                                    = @     P    P                                                     @     P ة   P                                                     @     P ܑ   P                                                      @     P y   P                                                      @     P a   P                                                    Y) @     P I   P                                                    Y) @     P 1   P                                                    R @     P    P                                                    R @     P    P                                                    z @     P    P                                                    z @     P    P                                                    u @     P    P                                                    ) @     P    P                                                     @     P    P                                                     @     P q   P                                                    EF @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    a @     P    P                                                     @     P    P                                                     @     P "   P                                                    }: @     P &   P                                                    1c @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    M @     P 6i   P                                                     @     P :Q   P                                                    . @     P >9   P                                                    )  @     P B!   P                                                    =  @     P F	   P                                                    f  @     P I   P                                                    E  @     P M   P                                                      @     P Q   P                                                      @     P U   P                                                    a	 @     P Y   P                                                    2 @     P ]y   P                                                    Z @     P aa   P                                                    } @     P eI   P                                                    1 @     P i1   P                                                     @     P m   P                                                     @     P q   P                                                    M& @     P t   P                                                    O @     P x   P                                                    w @     P |   P                                                    i @     P    P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    9C @     P A   P                                                    k @     P )   P                                                     @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q7 @     P    P                                                    %` @     P    P                                                    و @     P    P                                                     @     P i   P                                                    A @     P Q   P                                                     @     P 9   P                                                    + @     P !   P                                                    ]T @     P 	   P                                                    } @     P    P                                                    ť @     P    P                                                    y @     P    P                                                    - @     P ҩ   P                                                     @     P ֑   P                                                    H @     P y   P                                                    Iq @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                    < @     P    P                                                    e @     P    P                                                    5 @     P    P                                                     @     P    P                                                     @     P    P                                                    Q @     P q   P                                                    1 @     P 	Y   P                                                    n       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,14 +1,15 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   P @     P  6   P                                                    @     P  qI   P                                                    @     P  u1   P                                                   9
- @     P  y   P                                                   
- @     P  }   P                                                    @     P     P                                                    @     P     P                                                   . @     P     P                                                   1  @     P     P                                                   ( @     P     P                                                   ( @     P  q   P                                                   Q @     P  Y   P                                                   < @     P  A   P                                                   e @     P  )   P                                                   5 @     P     P                                                   5 @     P     P                                                    @     P     P                                                   iy @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                   9	 @     P  i   P                                                   9	 @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   m @     P  	   P                                                   !0 @     P     P                                                   X @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                    @     P     P                                                   U @     P  y   P                                                     @     P  a   P                                                   }*  @     P  I   P                                                   1S  @     P  1   P                                                   {  @     P     P                                                     @     P     P                                                    @     P     P                                                    @     P    P                                                    @     P    P                                                   e> @     P 	   P                                                   g @     P    P                                                   ͏ @     P q   P                                                    @     P Y   P                                                   5 @     P A   P                                                   ) @     P )   P                                                   MR @     P !   P                                                   MR @     P $   P                                                   { @     P (   P                                                    @     P ,   P                                                   i @     P 0   P                                                    @     P 4   P                                                    @     P 8   P                                                   F @     P <i   P                                                   5f	 @     P @Q   P                                                   	 @     P D9   P                                                   	 @     P H!   P                                                   Q	 @     P L	   P                                                   Q	 @     P O   P                                                   	
- @     P S   P                                                   1
- @     P W   P                                                   mZ
- @     P [   P                                                   !
- @     P _   P                                                   ի
- @     P cy   P                                                   Ѣ @     P ga   P                                                    @     P kI   P                                                   9 @     P o1   P                                                    @     P s   P                                                   E @     P w   P                                                   E @     P z   P                                                   Un @     P ~   P                                                   	 @     P    P                                                    @     P    P                                                   q @     P    P                                                   % @     P q   P                                                   -  @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                   I @     P    P                                                   ? @     P    P                                                   h @     P    P                                                   e @     P    P                                                   e @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P i   P                                                   54 @     P Q   P                                                    @     P 9   P                                                   } @     P !   P                                                   1+ @     P 	   P                                                   S @     P    P                                                   | @     P    P                                                   M @     P    P                                                    @     P ة   P                                                    @     P ܑ   P                                                    @     P y   P                                                   i @     P a   P                                                   H @     P I   P                                                   p @     P 1   P                                                    @     P    P                                                   e @     P    P                                                   ? @     P    P                                                   g @     P    P                                                    @     P    P                                                   5 @     P    P                                                    @     P    P                                                   
- @     P q   P                                                   Q3 @     P Y   P                                                   \ @     P A   P                                                    @     P )   P                                                    @     P    P                                                   m @     P    P                                                   ! @     P "   P                                                    @     P &   P                                                   S
- @     P *   P                                                   {
- @     P .   P                                                   i
- @     P 2   P                                                   
- @     P 6i   P                                                   
- @     P :Q   P                                                    @     P >9   P                                                   9G @     P B!   P                                                   o @     P F	   P                                                    @     P I   P                                                   U @     P M   P                                                   	 @     P Q   P                                                   	 @     P U   P                                                    @     P Y   P                                                   q; @     P ]y   P                                                   %d @     P aa   P                                                    @     P eI   P                                                   Q @     P i1   P                                                    @     P m   P                                                   	 @     P q   P                                                   m2 @     P t   P                                                   ![ @     P x   P                                                   Ճ @     P |   P                                                    @     P    P                                                   = @     P    P                                                    @     P q   P                                                   & @     P Y   P                                                     @     P A   P                                                   5  @     P )   P                                                   5  @     P    P                                                   ^  @     P    P                                                   5  @     P    P                                                    @     P    P                                                    @     P    P                                                   a @     P    P                                                    @     P    P                                                   , @     P i   P                                                   }U @     P Q   P                                                   1~ @     P 9   P                                                    @     P !   P                                                    @     P 	   P                                                   M @     P    P                                                   ! @     P    P                                                   I @     P    P                                                   ir @     P ҩ   P                                                    @     P ֑   P                                                    @     P y   P                                                    @     P a   P                                                    @     P I   P                                                    @     P 1   P                                                   I @     P    P                                                    @     P    P                                                   @ @     P    P                                                   ei @     P    P                                                    @     P    P                                                   ͺ @     P    P                                                    @     P    P                                                   5 @     P q   P                                                   4 @     P 	Y   P                                                   )s	       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    YP @     P  6   P                                                     @     P  qI   P                                                     @     P  u1   P                                                    
+ @     P  y   P                                                    E
+ @     P  }   P                                                    - @     P     P                                                    - @     P     P                                                    . @     P     P                                                      @     P     P                                                    =) @     P     P                                                    =) @     P  q   P                                                    Q @     P  Y   P                                                    %= @     P  A   P                                                    e @     P  )   P                                                     @     P     P                                                     @     P     P                                                    A @     P     P                                                    y @     P     P                                                    u @     P     P                                                    ) @     P     P                                                     @     P     P                                                    	 @     P  i   P                                                    	 @     P  Q   P                                                    ] @     P  9   P                                                     @     P  !   P                                                     @     P  	   P                                                    y0 @     P     P                                                    -Y @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                     @     P  y   P                                                    !  @     P  a   P                                                    *  @     P  I   P                                                    S  @     P  1   P                                                    =|  @     P     P                                                      @     P     P                                                    U @     P     P                                                    U @     P    P                                                    	 @     P    P                                                    > @     P 	   P                                                    qg @     P    P                                                    % @     P q   P                                                    ٸ @     P Y   P                                                     @     P A   P                                                    ) @     P )   P                                                    R @     P !   P                                                    R @     P $   P                                                    Y{ @     P (   P                                                     @     P ,   P                                                     @     P 0   P                                                    u @     P 4   P                                                    ) @     P 8   P                                                    F @     P <i   P                                                    f	 @     P @Q   P                                                    A	 @     P D9   P                                                    	 @     P H!   P                                                    	 @     P L	   P                                                    	 @     P O   P                                                    ]	
+ @     P S   P                                                    2
+ @     P W   P                                                    Z
+ @     P [   P                                                    y
+ @     P _   P                                                    -
+ @     P cy   P                                                    ) @     P ga   P                                                     @     P kI   P                                                     @     P o1   P                                                    E @     P s   P                                                    E @     P w   P                                                    E @     P z   P                                                    n @     P ~   P                                                    a @     P    P                                                     @     P    P                                                     @     P    P                                                    } @     P q   P                                                      @     P Y   P                                                    9  @     P A   P                                                      @     P )   P                                                     @     P    P                                                    U@ @     P    P                                                    	i @     P    P                                                     @     P    P                                                     @     P    P                                                    q @     P    P                                                    % @     P    P                                                     @     P i   P                                                    4 @     P Q   P                                                    ! @     P 9   P                                                     @     P !   P                                                    + @     P 	   P                                                    =T @     P    P                                                    | @     P    P                                                     @     P    P                                                    Y @     P ة   P                                                     @     P ܑ   P                                                     @     P y   P                                                     @     P a   P                                                    uH @     P I   P                                                    )q @     P 1   P                                                    ݙ @     P    P                                                     @     P    P                                                    q? @     P    P                                                    %h @     P    P                                                    ِ @     P    P                                                     @     P    P                                                    A @     P    P                                                    
+ @     P q   P                                                    3 @     P Y   P                                                    ]\ @     P A   P                                                     @     P )   P                                                     @     P    P                                                    ŭ @     P    P                                                    y @     P "   P                                                    - @     P &   P                                                    YS
+ @     P *   P                                                    |
+ @     P .   P                                                    
+ @     P 2   P                                                    u
+ @     P 6i   P                                                    )
+ @     P :Q   P                                                     @     P >9   P                                                    G @     P B!   P                                                    Ep @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                    a @     P Q   P                                                    a @     P U   P                                                     @     P Y   P                                                    ; @     P ]y   P                                                    }d @     P aa   P                                                     @     P eI   P                                                     @     P i1   P                                                    ] @     P m   P                                                    
+ @     P q   P                                                    2 @     P t   P                                                    y[ @     P x   P                                                    - @     P |   P                                                     @     P    P                                                     @     P    P                                                    I @     P q   P                                                    & @     P Y   P                                                    q  @     P A   P                                                    %6  @     P )   P                                                    %6  @     P    P                                                    ^  @     P    P                                                      @     P    P                                                    Q @     P    P                                                     @     P    P                                                     @     P    P                                                    m @     P    P                                                    !- @     P i   P                                                    U @     P Q   P                                                    ~ @     P 9   P                                                    = @     P !   P                                                     @     P 	   P                                                     @     P    P                                                    Y! @     P    P                                                    J @     P    P                                                    r @     P ҩ   P                                                    u @     P ֑   P                                                    u @     P y   P                                                    ) @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                     @     P    P                                                    U @     P    P                                                    	A @     P    P                                                    i @     P    P                                                    q @     P    P                                                    % @     P    P                                                     @     P    P                                                     @     P q   P                                                    A5 @     P 	Y   P                                                    s	       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,15 +1,14 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   x @     P  6   P                                                    @     P  :   P                                                    @     P  qI   P                                                    @     P  u1   P                                                   / @     P  y   P                                                   ]X @     P  }   P                                                   El	 @     P     P                                                   El	 @     P     P                                                   	 @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  q   P                                                   I @     P  Y   P                                                   =  @     P  A   P                                                     @     P  )   P                                                     @     P     P                                                   Y @     P     P                                                   Y @     P     P                                                    @     P     P                                                    @     P     P                                                   A1 @     P     P                                                   Y @     P     P                                                    @     P  i   P                                                    @     P  Q   P                                                   u @     P  9   P                                                   )E @     P  !   P                                                   m @     P  	   P                                                    @     P     P                                                   E @     P     P                                                    @     P     P                                                    @     P  ީ   P                                                   Y
- @     P     P                                                   Ł
- @     P  y   P                                                   y
- @     P  a   P                                                   -
- @     P  I   P                                                   
- @     P  1   P                                                   $ @     P     P                                                   IM @     P     P                                                    @     P     P                                                    @     P    P                                                   a @     P    P                                                    @     P 	   P                                                    @     P    P                                                   }8 @     P q   P                                                   1a @     P Y   P                                                    @     P A   P                                                   	 @     P )   P                                                    @     P !   P                                                    @     P $   P                                                   q @     P (   P                                                   %
- @     P ,   P                                                   2 @     P 0   P                                                   [ @     P 4   P                                                   A @     P 8   P                                                    @     P <i   P                                                    @     P @Q   P                                                   Y @     P D9   P                                                    @     P H!   P                                                   F @     P L	   P                                                   F @     P O   P                                                   uo @     P S   P                                                   ) @     P W   P                                                    @     P [   P                                                    @     P _   P                                                   E @     P cy   P                                                   A	 @     P ga   P                                                   1 @     P kI   P                                                   Z @     P o1   P                                                   ] @     P s   P                                                    @     P w   P                                                    @     P z   P                                                    @     P ~   P                                                   y @     P    P                                                   -&	 @     P    P                                                   N	 @     P    P                                                   w	 @     P q   P                                                   E @     P Y   P                                                   n @     P A   P                                                   E @     P )   P                                                    @     P    P                                                    @     P    P                                                   a @     P    P                                                   : @     P    P                                                   : @     P    P                                                   b @     P    P                                                   } @     P    P                                                   1 @     P i   P                                                    @     P Q   P                                                   y @     P 9   P                                                   - @     P !   P                                                    @     P 	   P                                                    @     P    P                                                   I% @     P    P                                                     @     P    P                                                   q4  @     P ة   P                                                   %]  @     P ܑ   P                                                   %]  @     P y   P                                                   م  @     P a   P                                                     @     P I   P                                                   A  @     P 1   P                                                     @     P    P                                                   | @     P    P                                                    @     P    P                                                   = @     P    P                                                    @     P    P                                                    @     P    P                                                   YH @     P    P                                                   q @     P q   P                                                    @     P Y   P                                                   u @     P A   P                                                   ) @     P )   P                                                   ) @     P    P                                                    @     P    P                                                   < @     P "   P                                                   Ee @     P &   P                                                   q @     P *   P                                                   % @     P .   P                                                   
- @     P 2   P                                                   3 @     P 6i   P                                                   A\ @     P :Q   P                                                    @     P >9   P                                                    @     P B!   P                                                   ] @     P F	   P                                                    @     P I   P                                                   ' @     P M   P                                                   yP @     P Q   P                                                   -y @     P U   P                                                   -y @     P Y   P                                                    @     P ]y   P                                                    @     P aa   P                                                    @     P eI   P                                                   	 @     P i1   P                                                   uG	 @     P m   P                                                   )p	 @     P q   P                                                   ݘ	 @     P t   P                                                   	 @     P x   P                                                   E	 @     P |   P                                                   
- @     P    P                                                   ;
- @     P    P                                                   ad
- @     P q   P                                                   
- @     P Y   P                                                   ɵ
- @     P A   P                                                   }
- @     P )   P                                                   }
- @     P    P                                                   1 @     P    P                                                   / @     P    P                                                   2 @     P    P                                                   ][ @     P    P                                                    @     P    P                                                   Ŭ @     P    P                                                   y @     P i   P                                                   - @     P Q   P                                                   & @     P 9   P                                                   O @     P !   P                                                   Ix @     P 	   P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                    @     P ҩ   P                                                   C @     P ֑   P                                                   l @     P y   P                                                   l @     P a   P                                                   5 @     P I   P                                                   -  @     P 1   P                                                   U  @     P    P                                                   m~  @     P    P                                                   !  @     P    P                                                     @     P    P                                                     @     P    P                                                   =! @     P    P                                                   I @     P    P                                                   r @     P q   P                                                   Y @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    y @     P  6   P                                                    	 @     P  :   P                                                    e @     P  qI   P                                                    e @     P  u1   P                                                    0 @     P  y   P                                                    X @     P  }   P                                                    l	 @     P     P                                                    l	 @     P     P                                                    Q	 @     P     P                                                    9 @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                      @     P  A   P                                                    I  @     P  )   P                                                      @     P     P                                                     @     P     P                                                     @     P     P                                                    1 @     P     P                                                     @     P     P                                                    1 @     P     P                                                    MZ @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    E @     P  !   P                                                    5n @     P  	   P                                                     @     P     P                                                     @     P     P                                                    Q @     P     P                                                    Q @     P  ީ   P                                                    iY
+ @     P     P                                                    
+ @     P  y   P                                                    Ѫ
+ @     P  a   P                                                    
+ @     P  I   P                                                    9
+ @     P  1   P                                                    $ @     P     P                                                    M @     P     P                                                     @     P     P                                                     @     P    P                                                     @     P    P                                                    m @     P 	   P                                                    ! @     P    P                                                    8 @     P q   P                                                    a @     P Y   P                                                    = @     P A   P                                                    a @     P )   P                                                     @     P !   P                                                     @     P $   P                                                     @     P (   P                                                    }
+ @     P ,   P                                                    13 @     P 0   P                                                    [ @     P 4   P                                                     @     P 8   P                                                    M @     P <i   P                                                     @     P @Q   P                                                     @     P D9   P                                                    e @     P H!   P                                                    G @     P L	   P                                                    G @     P O   P                                                    o @     P S   P                                                     @     P W   P                                                    5 @     P [   P                                                     @     P _   P                                                     @     P cy   P                                                    	 @     P ga   P                                                    M2 @     P kI   P                                                    [ @     P o1   P                                                     @     P s   P                                                    i @     P w   P                                                    i @     P z   P                                                     @     P ~   P                                                     @     P    P                                                    &	 @     P    P                                                    9O	 @     P    P                                                    w	 @     P q   P                                                    5F @     P Y   P                                                    n @     P A   P                                                     @     P )   P                                                    Q @     P    P                                                     @     P    P                                                     @     P    P                                                    m: @     P    P                                                    m: @     P    P                                                    !c @     P    P                                                    Ջ @     P    P                                                     @     P i   P                                                    = @     P Q   P                                                    т @     P 9   P                                                     @     P !   P                                                    9 @     P 	   P                                                     @     P    P                                                    % @     P    P                                                      @     P    P                                                    4  @     P ة   P                                                    }]  @     P ܑ   P                                                    }]  @     P y   P                                                    1  @     P a   P                                                      @     P I   P                                                      @     P 1   P                                                    M  @     P    P                                                    -} @     P    P                                                     @     P    P                                                     @     P    P                                                    I @     P    P                                                     @     P    P                                                    H @     P    P                                                    eq @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                     @     P    P                                                    5 @     P    P                                                    < @     P "   P                                                    e @     P &   P                                                    ɹ @     P *   P                                                    } @     P .   P                                                    1 @     P 2   P                                                    3 @     P 6i   P                                                    \ @     P :Q   P                                                    M @     P >9   P                                                     @     P B!   P                                                     @     P F	   P                                                    i @     P I   P                                                    ( @     P M   P                                                    P @     P Q   P                                                    y @     P U   P                                                    y @     P Y   P                                                    9 @     P ]y   P                                                     @     P aa   P                                                    e @     P eI   P                                                    	 @     P i1   P                                                    G	 @     P m   P                                                    p	 @     P q   P                                                    5	 @     P t   P                                                    	 @     P x   P                                                    	 @     P |   P                                                    Q
+ @     P    P                                                    <
+ @     P    P                                                    d
+ @     P q   P                                                    m
+ @     P Y   P                                                    !
+ @     P A   P                                                    
+ @     P )   P                                                    
+ @     P    P                                                     @     P    P                                                    =0 @     P    P                                                    3 @     P    P                                                    [ @     P    P                                                    i @     P    P                                                     @     P    P                                                     @     P i   P                                                     @     P Q   P                                                    9' @     P 9   P                                                    O @     P !   P                                                    x @     P 	   P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q @     P ҩ   P                                                    %D @     P ֑   P                                                    l @     P y   P                                                    l @     P a   P                                                     @     P I   P                                                    ]-  @     P 1   P                                                    V  @     P    P                                                    ~  @     P    P                                                    y  @     P    P                                                    -  @     P    P                                                      @     P    P                                                    ! @     P    P                                                    IJ @     P    P                                                    r @     P q   P                                                     @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,14 +1,13 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                   i @     P  6   P                                                   e! @     P  :   P                                                    @     P  >   P                                                    @     P  Bi   P                                                   ]X @     P  qI   P                                                   ]X @     P  u1   P                                                   	 @     P  y   P                                                   	 @     P  }   P                                                   	 @     P     P                                                    @     P     P                                                   I @     P     P                                                   " @     P     P                                                   " @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                   Y @     P  A   P                                                   F @     P  )   P                                                    @     P     P                                                    @     P     P                                                   A1 @     P     P                                                   Y @     P     P                                                    @     P     P                                                   )E @     P     P                                                   m @     P     P                                                   m @     P  i   P                                                    @     P  Q   P                                                   E @     P  9   P                                                    @     P  !   P                                                   Ł
- @     P  	   P                                                   y
- @     P     P                                                   -
- @     P     P                                                   -
- @     P     P                                                   
- @     P  ީ   P                                                   $ @     P     P                                                   IM @     P  y   P                                                   a @     P  a   P                                                    @     P  I   P                                                    @     P  1   P                                                   }8 @     P     P                                                   1a @     P     P                                                   1a @     P     P                                                    @     P    P                                                    @     P    P                                                    @     P 	   P                                                   q @     P    P                                                   %
- @     P q   P                                                   2 @     P Y   P                                                   [ @     P A   P                                                   A @     P )   P                                                   A @     P !   P                                                    @     P $   P                                                    @     P (   P                                                   Y @     P ,   P                                                    @     P 0   P                                                   F @     P 4   P                                                   uo @     P 8   P                                                   ) @     P <i   P                                                    @     P @Q   P                                                    @     P D9   P                                                   E @     P H!   P                                                   E @     P L	   P                                                   : @     P O   P                                                   1 @     P S   P                                                   Z @     P W   P                                                   ] @     P [   P                                                    @     P _   P                                                    @     P cy   P                                                   y @     P ga   P                                                   -&	 @     P kI   P                                                   N	 @     P o1   P                                                   w	 @     P s   P                                                   w	 @     P w   P                                                   I	 @     P z   P                                                   n @     P ~   P                                                   E @     P    P                                                    @     P    P                                                    @     P    P                                                   a @     P q   P                                                   : @     P Y   P                                                   b @     P A   P                                                   } @     P )   P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                    @     P    P                                                   - @     P    P                                                    @     P    P                                                    @     P    P                                                   I% @     P i   P                                                     @     P Q   P                                                   q4  @     P 9   P                                                   %]  @     P !   P                                                   م  @     P 	   P                                                     @     P    P                                                   A  @     P    P                                                     @     P    P                                                   ( @     P ة   P                                                   ( @     P ܑ   P                                                    @     P y   P                                                   = @     P a   P                                                    @     P I   P                                                    @     P 1   P                                                   YH @     P    P                                                   q @     P    P                                                    @     P    P                                                   u @     P    P                                                   ) @     P    P                                                    @     P    P                                                   < @     P    P                                                   Ee @     P q   P                                                    @     P Y   P                                                   % @     P A   P                                                   % @     P )   P                                                   
- @     P    P                                                   3 @     P    P                                                   A\ @     P "   P                                                    @     P &   P                                                    @     P *   P                                                   ] @     P .   P                                                    @     P 2   P                                                   ' @     P 6i   P                                                   yP @     P :Q   P                                                   -y @     P >9   P                                                    @     P B!   P                                                    @     P F	   P                                                   	 @     P I   P                                                   uG	 @     P M   P                                                   )p	 @     P Q   P                                                   )p	 @     P U   P                                                   ݘ	 @     P Y   P                                                   	 @     P ]y   P                                                   E	 @     P aa   P                                                   
- @     P eI   P                                                   ;
- @     P i1   P                                                   ad
- @     P m   P                                                   
- @     P q   P                                                   ɵ
- @     P t   P                                                   }
- @     P x   P                                                   1 @     P |   P                                                   / @     P    P                                                   ][ @     P    P                                                    @     P q   P                                                   Ŭ @     P Y   P                                                   y @     P A   P                                                   y @     P )   P                                                   - @     P    P                                                   & @     P    P                                                   O @     P    P                                                   Ix @     P    P                                                    @     P    P                                                    @     P    P                                                   e @     P    P                                                    @     P i   P                                                   C @     P Q   P                                                   l @     P 9   P                                                   5 @     P !   P                                                   U  @     P 	   P                                                   m~  @     P    P                                                   !  @     P    P                                                     @     P    P                                                     @     P ҩ   P                                                   =! @     P ֑   P                                                   =! @     P y   P                                                   I @     P a   P                                                   r @     P I   P                                                   Y @     P 1   P                                                    @     P    P                                                    @     P    P                                                   u @     P    P                                                   )> @     P    P                                                   f @     P    P                                                    @     P    P                                                   E @     P    P                                                   U @     P q   P                                                   	 @     P 	Y   P                                                   I       P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                     @     P  6   P                                                    ! @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                    X @     P  qI   P                                                    X @     P  u1   P                                                    Q	 @     P  y   P                                                    	 @     P  }   P                                                    	 @     P     P                                                     @     P     P                                                     @     P     P                                                    U# @     P     P                                                    U# @     P     P                                                    I  @     P  q   P                                                      @     P  Y   P                                                     @     P  A   P                                                    eF @     P  )   P                                                     @     P     P                                                     @     P     P                                                    1 @     P     P                                                    MZ @     P     P                                                     @     P     P                                                    E @     P     P                                                    5n @     P     P                                                    5n @     P  i   P                                                     @     P  Q   P                                                     @     P  9   P                                                    Q @     P  !   P                                                    
+ @     P  	   P                                                    Ѫ
+ @     P     P                                                    
+ @     P     P                                                    
+ @     P     P                                                    9
+ @     P  ީ   P                                                    $ @     P     P                                                    M @     P  y   P                                                     @     P  a   P                                                    m @     P  I   P                                                    ! @     P  1   P                                                    8 @     P     P                                                    a @     P     P                                                    a @     P     P                                                    = @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                    }
+ @     P q   P                                                    13 @     P Y   P                                                    [ @     P A   P                                                     @     P )   P                                                     @     P !   P                                                    M @     P $   P                                                     @     P (   P                                                     @     P ,   P                                                    e @     P 0   P                                                    G @     P 4   P                                                    o @     P 8   P                                                     @     P <i   P                                                    5 @     P @Q   P                                                     @     P D9   P                                                     @     P H!   P                                                     @     P L	   P                                                    Q; @     P O   P                                                    M2 @     P S   P                                                    [ @     P W   P                                                     @     P [   P                                                    i @     P _   P                                                     @     P cy   P                                                     @     P ga   P                                                    &	 @     P kI   P                                                    9O	 @     P o1   P                                                    w	 @     P s   P                                                    w	 @     P w   P                                                    	 @     P z   P                                                    n @     P ~   P                                                     @     P    P                                                    Q @     P    P                                                     @     P    P                                                     @     P q   P                                                    m: @     P Y   P                                                    !c @     P A   P                                                    Ջ @     P )   P                                                     @     P    P                                                    = @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    9 @     P    P                                                     @     P    P                                                    % @     P i   P                                                      @     P Q   P                                                    4  @     P 9   P                                                    }]  @     P !   P                                                    1  @     P 	   P                                                      @     P    P                                                      @     P    P                                                    M  @     P    P                                                    ) @     P ة   P                                                    ) @     P ܑ   P                                                     @     P y   P                                                     @     P a   P                                                    I @     P I   P                                                     @     P 1   P                                                    H @     P    P                                                    eq @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    5 @     P    P                                                    < @     P    P                                                    e @     P q   P                                                    Q @     P Y   P                                                    } @     P A   P                                                    } @     P )   P                                                    1 @     P    P                                                    3 @     P    P                                                    \ @     P "   P                                                    M @     P &   P                                                     @     P *   P                                                     @     P .   P                                                    i @     P 2   P                                                    ( @     P 6i   P                                                    P @     P :Q   P                                                    y @     P >9   P                                                    9 @     P B!   P                                                     @     P F	   P                                                    	 @     P I   P                                                    G	 @     P M   P                                                    p	 @     P Q   P                                                    p	 @     P U   P                                                    5	 @     P Y   P                                                    	 @     P ]y   P                                                    	 @     P aa   P                                                    Q
+ @     P eI   P                                                    <
+ @     P i1   P                                                    d
+ @     P m   P                                                    m
+ @     P q   P                                                    !
+ @     P t   P                                                    
+ @     P x   P                                                     @     P |   P                                                    =0 @     P    P                                                    [ @     P    P                                                    i @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                     @     P )   P                                                     @     P    P                                                    9' @     P    P                                                    O @     P    P                                                    x @     P    P                                                    U @     P    P                                                    	 @     P    P                                                     @     P    P                                                    q @     P i   P                                                    %D @     P Q   P                                                    l @     P 9   P                                                     @     P !   P                                                    V  @     P 	   P                                                    ~  @     P    P                                                    y  @     P    P                                                    -  @     P    P                                                      @     P ҩ   P                                                    ! @     P ֑   P                                                    ! @     P y   P                                                    IJ @     P a   P                                                    r @     P I   P                                                     @     P 1   P                                                    e @     P    P                                                     @     P    P                                                     @     P    P                                                    > @     P    P                                                    5g @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P q   P                                                    a @     P 	Y   P                                                           P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-loss-WestwoodPlus4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,11 +1,11 @@
-ò          @   F              P        P               P      P         @     P      P                                                    iN @     P     P                                                    iN @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P     P                                                    	 @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                    U @     P  #)   P                                                    U @     P  '   P                                                    	 @     P  *   P                                                    	 @     P  .   P                                                    A @     P  2   P                                                    A @     P  6   P                                                     @     P  :   P                                                     @     P  >   P                                                     @     P  Bi   P                                                     @     P  FQ   P                                                   e @     P  J9   P                                                   e @     P  N!   P                                                   < @     P  R	   P                                                   < @     P  U   P                                                   d @     P  Y   P                                                   d @     P  ]   P                                                    @     P  a   P                                                    @     P  e   P                                                   5 @     P  iy   P                                                   5 @     P  ma   P                                                    @     P  6   P                                                     @     P  :   P                                                   uD @     P  >   P                                                   uD @     P  Bi   P                                                    @     P  FQ   P                                                   ũ @     P  qI   P                                                   ũ @     P  u1   P                                                   a	 @     P  y   P                                                   a	 @     P  }   P                                                   
- @     P     P                                                   " @     P     P                                                   K @     P     P                                                   K @     P     P                                                   et @     P     P                                                   Y @     P  q   P                                                   F @     P  Y   P                                                   n @     P  A   P                                                   u @     P  )   P                                                   u @     P     P                                                   Y @     P     P                                                    @     P     P                                                   ] @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P     P                                                    @     P  i   P                                                   E @     P  Q   P                                                    @     P  9   P                                                    @     P  !   P                                                   a9 @     P  	   P                                                   b @     P     P                                                   b @     P     P                                                   -
- @     P     P                                                   
- @     P  ީ   P                                                   $ @     P     P                                                   IM @     P  y   P                                                   u @     P  a   P                                                    @     P  I   P                                                   e @     P  1   P                                                    @     P     P                                                    @     P     P                                                   }8 @     P     P                                                   1a @     P    P                                                    @     P    P                                                    @     P 	   P                                                   M @     P    P                                                    @     P q   P                                                   %
- @     P Y   P                                                   2 @     P A   P                                                   2 @     P )   P                                                   [ @     P !   P                                                   A @     P $   P                                                    @     P (   P                                                    @     P ,   P                                                   ] @     P 0   P                                                   ' @     P 4   P                                                   F @     P 8   P                                                   uo @     P <i   P                                                   ) @     P @Q   P                                                    @     P D9   P                                                    @     P H!   P                                                    @     P L	   P                                                   E @     P O   P                                                   : @     P S   P                                                   c @     P W   P                                                   a @     P [   P                                                   ] @     P _   P                                                    @     P cy   P                                                    @     P ga   P                                                   y @     P kI   P                                                   -&	 @     P o1   P                                                   -&	 @     P s   P                                                   N	 @     P w   P                                                   w	 @     P z   P                                                   I	 @     P ~   P                                                   	 @     P    P                                                   	 @     P    P                                                    @     P    P                                                    @     P q   P                                                   a @     P Y   P                                                   : @     P A   P                                                   b @     P )   P                                                   } @     P    P                                                   1 @     P    P                                                   1 @     P    P                                                    @     P    P                                                    @     P    P                                                   M. @     P    P                                                   W @     P    P                                                    @     P i   P                                                   I% @     P Q   P                                                     @     P 9   P                                                   q4  @     P !   P                                                   %]  @     P 	   P                                                   م  @     P    P                                                     @     P    P                                                   A  @     P    P                                                   A  @     P ة   P                                                     @     P ܑ   P                                                   ( @     P y   P                                                   ]Q @     P a   P                                                   z @     P I   P                                                    @     P 1   P                                                    @     P    P                                                   YH @     P    P                                                   q @     P    P                                                    @     P    P                                                   u @     P    P                                                   ) @     P    P                                                    @     P    P                                                   < @     P q   P                                                   Ee @     P Y   P                                                   Ee @     P A   P                                                    @     P )   P                                                    @     P    P                                                   a @     P    P                                                   3 @     P "   P                                                   A\ @     P &   P                                                    @     P *   P                                                    @     P .   P                                                   ] @     P 2   P                                                    @     P 6i   P                                                   ' @     P :Q   P                                                   yP @     P >9   P                                                   -y @     P B!   P                                                    @     P F	   P                                                    @     P I   P                                                   I @     P M   P                                                   I @     P Q   P                                                    @     P U   P                                                   D @     P Y   P                                                   )p	 @     P ]y   P                                                   ݘ	 @     P aa   P                                                   	 @     P eI   P                                                   E	 @     P i1   P                                                   
- @     P m   P                                                   ;
- @     P q   P                                                   ad
- @     P t   P                                                   
- @     P x   P                                                   ɵ
- @     P |   P                                                   }
- @     P    P                                                   1 @     P    P                                                   / @     P q   P                                                   X @     P Y   P                                                   X @     P A   P                                                   M @     P )   P                                                    @     P    P                                                   Ŭ @     P    P                                                   y @     P    P                                                   - @     P    P                                                   & @     P    P                                                   O @     P    P                                                   Ix @     P    P                                                    @     P i   P                                                    @     P Q   P                                                   e @     P 9   P                                                    @     P !   P                                                   C @     P 	   P                                                   l @     P    P                                                   5 @     P    P                                                    @     P    P                                                    @     P ҩ   P                                                    @     P ֑   P                                                   Q @     P y   P                                                   !  @     P a   P                                                     @     P I   P                                                     @     P 1   P                                                   =! @     P    P                                                   I @     P    P                                                   r @     P    P                                                   Y @     P    P                                                    @     P    P                                                    @     P    P                                                   u @     P    P                                                   )> @     P q   P                                                   f @     P 	Y   P                                                          P B   P    
\ No newline at end of file
+ò          @   F              P        `                 P      P          @     P      P                                                     N @     P     P                                                     N @     P     P                                                     ]	 @     P     P                                                     ]	 @     P     P                                                     	 @     P     P                                                     	 @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                     a @     P  *   P                                                     a @     P  .   P                                                     B @     P  2   P                                                     B @     P  6   P                                                    U  @     P  :   P                                                    U  @     P  >   P                                                    	  @     P  Bi   P                                                    	  @     P  FQ   P                                                     @     P  J9   P                                                     @     P  N!   P                                                    q< @     P  R	   P                                                    q< @     P  U   P                                                    %e @     P  Y   P                                                    %e @     P  ]   P                                                    ٍ @     P  a   P                                                    ٍ @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    u @     P  6   P                                                    1  @     P  :   P                                                    D @     P  >   P                                                    D @     P  Bi   P                                                    i @     P  FQ   P                                                     @     P  qI   P                                                     @     P  u1   P                                                    	 @     P  y   P                                                    	 @     P  }   P                                                    m
+ @     P     P                                                    U# @     P     P                                                    	L @     P     P                                                    	L @     P     P                                                    t @     P     P                                                     @     P  q   P                                                    eF @     P  Y   P                                                    o @     P  A   P                                                    ͗ @     P  )   P                                                    ͗ @     P     P                                                    MZ @     P     P                                                     @     P     P                                                     @     P     P                                                    i @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  i   P                                                     @     P  Q   P                                                    Q @     P  9   P                                                     @     P  !   P                                                    9 @     P  	   P                                                    mb @     P     P                                                    mb @     P     P                                                    
+ @     P     P                                                    9
+ @     P  ީ   P                                                    $ @     P     P                                                    M @     P  y   P                                                    Uv @     P  a   P                                                    	 @     P  I   P                                                     @     P  1   P                                                    ! @     P     P                                                    ! @     P     P                                                    8 @     P     P                                                    a @     P    P                                                    = @     P    P                                                     @     P 	   P                                                     @     P    P                                                    Y @     P q   P                                                    }
+ @     P Y   P                                                    13 @     P A   P                                                    13 @     P )   P                                                    [ @     P !   P                                                     @     P $   P                                                    M @     P (   P                                                     @     P ,   P                                                     @     P 0   P                                                    i' @     P 4   P                                                    G @     P 8   P                                                    o @     P <i   P                                                     @     P @Q   P                                                    5 @     P D9   P                                                    5 @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                    Q; @     P S   P                                                    d @     P W   P                                                     @     P [   P                                                     @     P _   P                                                    i @     P cy   P                                                     @     P ga   P                                                     @     P kI   P                                                    &	 @     P o1   P                                                    &	 @     P s   P                                                    9O	 @     P w   P                                                    w	 @     P z   P                                                    	 @     P ~   P                                                    U	 @     P    P                                                    		 @     P    P                                                    Q @     P    P                                                     @     P q   P                                                     @     P Y   P                                                    m: @     P A   P                                                    !c @     P )   P                                                    Ջ @     P    P                                                     @     P    P                                                     @     P    P                                                    = @     P    P                                                     @     P    P                                                    . @     P    P                                                    YW @     P    P                                                     @     P i   P                                                    % @     P Q   P                                                      @     P 9   P                                                    4  @     P !   P                                                    }]  @     P 	   P                                                    1  @     P    P                                                      @     P    P                                                      @     P    P                                                      @     P ة   P                                                    M  @     P ܑ   P                                                    ) @     P y   P                                                    Q @     P a   P                                                    iz @     P I   P                                                    I @     P 1   P                                                     @     P    P                                                    H @     P    P                                                    eq @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    5 @     P    P                                                    < @     P q   P                                                    e @     P Y   P                                                    e @     P A   P                                                    Q @     P )   P                                                     @     P    P                                                     @     P    P                                                    3 @     P "   P                                                    \ @     P &   P                                                    M @     P *   P                                                     @     P .   P                                                     @     P 2   P                                                    i @     P 6i   P                                                    ( @     P :Q   P                                                    P @     P >9   P                                                    y @     P B!   P                                                    9 @     P F	   P                                                     @     P I   P                                                     @     P M   P                                                     @     P Q   P                                                    U @     P U   P                                                    	E @     P Y   P                                                    p	 @     P ]y   P                                                    5	 @     P aa   P                                                    	 @     P eI   P                                                    	 @     P i1   P                                                    Q
+ @     P m   P                                                    <
+ @     P q   P                                                    d
+ @     P t   P                                                    m
+ @     P x   P                                                    !
+ @     P |   P                                                    
+ @     P    P                                                     @     P    P                                                    =0 @     P q   P                                                    X @     P Y   P                                                    X @     P A   P                                                     @     P )   P                                                    Y @     P    P                                                     @     P    P                                                     @     P    P                                                     @     P    P                                                    9' @     P    P                                                    O @     P    P                                                    x @     P    P                                                    U @     P i   P                                                    	 @     P Q   P                                                     @     P 9   P                                                    q @     P !   P                                                    %D @     P 	   P                                                    l @     P    P                                                     @     P    P                                                    A @     P    P                                                     @     P ҩ   P                                                     @     P ֑   P                                                     @     P y   P                                                    y  @     P a   P                                                    -  @     P I   P                                                      @     P 1   P                                                    ! @     P    P                                                    IJ @     P    P                                                    r @     P    P                                                     @     P    P                                                    e @     P    P                                                     @     P    P                                                     @     P    P                                                    > @     P q   P                                                    5g @     P 	Y   P                                                    u       P B   P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state0-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state0-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state0-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state0-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    N        P     P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     ?O        P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state1-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1,10 +1,8 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                    O  @     P     P                                                    O  @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  #)   P                                                      @     P  '   P                                                    / @     P  *   P                                                    / @     P  .   P                                                    9 @     P  2   P                                                    9 @     P  6   P                                                    OZ @     P  :   P                                                    OZ @     P  >   P                                                    z @     P  Bi   P                                                    z @     P  FQ   P                                                    o @     P  J9   P                                                    o @     P  N!   P                                                     @     P  R	   P                                                     @     P  U   P                                                     @     P  Y   P                                                     @     P  ]   P                                                     @     P  a   P                                                     @     P  e   P                                                     @     P  iy   P                                                     @     P  ma   P                                                    ?> @     P  qI   P                                                    ?> @     P  u1   P                                                    ^ @     P  y   P                                                    ^ @     P  }   P                                                    _ @     P     P                                                    _ @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  q   P                                                     @     P  Y   P                                                     @     P  A   P                                                     @     P  )   P                                                     @     P     P                                                    /" @     P     P                                                    /" @     P     P                                                    B @     P     P                                                    B @     P     P                                                    Oc @     P     P                                                    Oc @     P     P                                                    ߃ @     P  i   P                                                    ߃ @     P  Q   P                                                    o @     P  9   P                                                    o @     P  !   P                                                     @     P  	   P                                                     @     P     P                                                     @     P     P                                                     @     P     P                                                     @     P  ީ   P                                                     @     P     P                                                    & @     P  y   P                                                    & @     P  a   P                                                    ?G @     P  I   P                                                    ?G @     P  1   P                                                    g @     P     P                                                    g @     P     P                                                    _ @     P     P                                                    _ @     P    P                                                     @     P    P                                                     @     P 	   P                                                     @     P    P                                                     @     P q   P                                                     @     P Y   P                                                     @     P A   P                                                    
- @     P )   P                                                    
- @     P !   P                                                    /+ @     P $   P                                                    /+ @     P (   P                                                    K @     P ,   P                                                    K @     P 0   P                                                    Ol @     P 4   P                                                    Ol @     P 8   P                                                    ߌ @     P <i   P                                                    ߌ @     P @Q   P                                                    o @     P D9   P                                                    o @     P H!   P                                                     @     P L	   P                                                     @     P O   P                                                     @     P S   P                                                     @     P W   P                                                    ?P @     P     P                                                     @     P     P                                                     	 @     P     P                                                     	 @     P [   P                                                    f	 @     P  Q   P                                                    f	 @     P _   P                                                    	 @     P cy   P                                                    o	 @     P  !   P                                                    o	 @     P ga   P                                                    	 @     P kI   P                                                    	 @     P o1   P                                                    
- @     P     P                                                    
- @     P s   P                                                    -
- @     P w   P                                                    ?N
- @     P z   P                                                    n
- @     P ~   P                                                    _
- @     P     P                                                    _
- @     P    P                                                    /2 @     P     P                                                    w @     P  a   P                                                    ϼ @     P  1   P                                                     @     P     P                                                    oG @     P    P                                                     @     P 	   P                                                     @     P q   P                                                    _ @     P A   P                                                    \ @     P !   P                                                     @     P (   P                                                    O @     P 0   P                                                    , @     P 8   P                                                    q @     P @Q   P                                                    ? @     P H!   P                                                     @     P O   P                                                    A @     P W   P                                                   ?F        P    P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     M  @     P     P                                                     M  @     P     P                                                     ?  @     P     P                                                     ?  @     P     P                                                     ϳ  @     P     P                                                     ϳ  @     P  q   P                                                       @     P  Y   P                                                       @     P  A   P                                                       @     P  #)   P                                                       @     P  '   P                                                      @     P  *   P                                                      @     P  .   P                                                     ?: @     P  2   P                                                     ?: @     P  6   P                                                     Z @     P  :   P                                                     Z @     P  >   P                                                     _{ @     P  Bi   P                                                     _{ @     P  FQ   P                                                      @     P  J9   P                                                      @     P  N!   P                                                      @     P  R	   P                                                      @     P  U   P                                                      @     P  Y   P                                                      @     P  ]   P                                                      @     P  a   P                                                      @     P  e   P                                                     / @     P  iy   P                                                     / @     P  ma   P                                                     > @     P  qI   P                                                     > @     P  u1   P                                                     O_ @     P  y   P                                                     O_ @     P  }   P                                                      @     P     P                                                      @     P     P                                                     o @     P     P                                                     o @     P     P                                                      @     P     P                                                      @     P  q   P                                                      @     P  Y   P                                                      @     P  A   P                                                      @     P  )   P                                                      @     P     P                                                     " @     P     P                                                     " @     P     P                                                     ?C @     P     P                                                     ?C @     P     P                                                     c @     P     P                                                     c @     P     P                                                     _ @     P  i   P                                                     _ @     P  Q   P                                                      @     P  9   P                                                      @     P  !   P                                                      @     P  	   P                                                      @     P     P                                                      @     P     P                                                      @     P     P                                                      @     P  ީ   P                                                      @     P     P                                                     /' @     P  y   P                                                     /' @     P  a   P                                                     G @     P  I   P                                                     G @     P  1   P                                                     Oh @     P     P                                                     Oh @     P     P                                                     ߈ @     P     P                                                     ߈ @     P    P                                                     o @     P    P                                                     o @     P 	   P                                                      @     P    P                                                      @     P q   P                                                      @     P Y   P                                                      @     P A   P                                                      @     P )   P                                                      @     P !   P                                                     + @     P $   P                                                     + @     P (   P                                                     ?L @     P ,   P                                                     ?L @     P 0   P                                                     l @     P 4   P                                                     l @     P 8   P                                                     _ @     P <i   P                                                     _ @     P @Q   P                                                      @     P D9   P                                                      @     P H!   P                                                      @     P L	   P                                                      @     P O   P                                                      @     P S   P                                                      @     P W   P                                                     P @     P     P                                                      @     P     P                                                     O!	 @     P     P                                                     O!	 @     P [   P                                                     f	 @     P  Q   P                                                     f	 @     P _   P                                                     /	 @     P cy   P                                                     	 @     P  !   P                                                     	 @     P ga   P                                                     	 @     P kI   P                                                     	 @     P o1   P                                                     
+ @     P     P                                                     
+ @     P s   P                                                     /.
+ @     P w   P                                                     N
+ @     P z   P                                                     Oo
+ @     P ~   P                                                     ߏ
+ @     P     P                                                     ߏ
+ @     P    P                                                     2 @     P     P                                                     w @     P  a   P                                                     O @     P  1   P                                                      @     P     P                                                     G @     P    P                                                     ? @     P 	   P                                                      @     P q   P                                                      @     P A   P                                                     /] @     P !   P                                                      @     P (   P                                                      @     P 0   P                                                     - @     P 8   P                                                     or @     P @Q   P                                                      @     P H!   P                                                      @     P O   P                                                       @     P W   P                                                    F        P    P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state2-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state2-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state2-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state2-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                 P        P               P      P         @     P      P                                                   N        P     P    
\ No newline at end of file
+ò          @   F              P        `                   P        `         O        P      P        O  @     P      P                                                    ?O        P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state3-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state3-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state3-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state3-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                 P        P               P      P         @     P      P                                                   oM  @     P     P                                                           P     P    
\ No newline at end of file
+ò          @   F              P        `                   P        `         O        P      P        O  @     P      P                                                    M  @     P     P                                                            P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state4-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state4-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state4-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state4-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                            P     P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     M  @     P     P                                                             P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state5-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state5-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state5-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state5-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P                P      P                P      P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P                 P      P         o        P      P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state6-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state6-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state6-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state6-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                            P     P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     M  @     P     P                                                     M  @     P     P                                                     ?  @     P     P                                                     ?  @     P     P                                                     o        P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state7-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state7-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state7-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state7-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                    @        P     P               P     P               P     P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     M  @     P     P                                                     M  @     P     P                                                     ?  @     P     P                                                     ?  @     P     P                                                     @        P     P         _       P     P         /       P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap
--- ns-3.20/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/ns3tcp/response-vectors/ns3tcp-state8-response-vectors.pcap	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-ò          @   F              P        P                P      P          @     P      P                                                    oM  @     P     P                                                    oM  @     P     P                                                      @     P     P                                                      @     P     P                                                           P     P    
\ No newline at end of file
+ò          @   F              P        `          O        P      P         O  @     P      P                                                     M  @     P     P                                                     M  @     P     P                                                     ?  @     P     P                                                     ?  @     P     P                                                            P     P     
\ No newline at end of file
diff -Naur ns-3.20/src/test/perf/perf-io.cc ns-3.21/src/test/perf/perf-io.cc
--- ns-3.20/src/test/perf/perf-io.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/perf/perf-io.cc	2014-09-17 20:03:14.000000000 -0700
@@ -24,7 +24,6 @@
 #include <fstream>
 
 #include "ns3/core-module.h"
-#include "ns3/network-module.h"
 #include "ns3/abort.h"
 
 using namespace ns3;
diff -Naur ns-3.20/src/test/perf/wscript ns-3.21/src/test/perf/wscript
--- ns-3.20/src/test/perf/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/perf/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -4,7 +4,7 @@
     pass
 
 def build(bld):
-    obj = bld.create_ns3_program('perf-io', ['network'])
+    obj = bld.create_ns3_program('perf-io')
     obj.source = 'perf-io.cc'
 
 
diff -Naur ns-3.20/src/test/static-routing-test-suite.cc ns-3.21/src/test/static-routing-test-suite.cc
--- ns-3.20/src/test/static-routing-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/static-routing-test-suite.cc	1969-12-31 16:00:00.000000000 -0800
@@ -1,170 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-// End-to-end tests for Ipv4 static routing
-
-#include "ns3/boolean.h"
-#include "ns3/config.h"
-#include "ns3/csma-helper.h"
-#include "ns3/csma-net-device.h"
-#include "ns3/inet-socket-address.h"
-#include "ns3/internet-stack-helper.h"
-#include "ns3/ipv4-address-helper.h"
-#include "ns3/ipv4-static-routing-helper.h"
-#include "ns3/node.h"
-#include "ns3/node-container.h"
-#include "ns3/on-off-helper.h"
-#include "ns3/packet.h"
-#include "ns3/packet-sink-helper.h"
-#include "ns3/packet-sink.h"
-#include "ns3/packet-socket-helper.h"
-#include "ns3/packet-socket-address.h"
-#include "ns3/point-to-point-helper.h"
-#include "ns3/pointer.h"
-#include "ns3/simulator.h"
-#include "ns3/string.h"
-#include "ns3/test.h"
-#include "ns3/uinteger.h"
-
-using namespace ns3;
-
-class StaticRoutingSlash32TestCase : public TestCase
-{
-public:
-  StaticRoutingSlash32TestCase ();
-  virtual ~StaticRoutingSlash32TestCase ();
-
-private:
-  virtual void DoRun (void);
-};
-
-// Add some help text to this case to describe what it is intended to test
-StaticRoutingSlash32TestCase::StaticRoutingSlash32TestCase ()
-  : TestCase ("Slash 32 static routing example")
-{
-}
-
-StaticRoutingSlash32TestCase::~StaticRoutingSlash32TestCase ()
-{
-}
-
-// Test program for this 3-router scenario, using static routing
-//
-// (a.a.a.a/32)A<--x.x.x.0/30-->B<--y.y.y.0/30-->C(c.c.c.c/32)
-//
-void
-StaticRoutingSlash32TestCase::DoRun (void)
-{
-  Ptr<Node> nA = CreateObject<Node> ();
-  Ptr<Node> nB = CreateObject<Node> ();
-  Ptr<Node> nC = CreateObject<Node> ();
-
-  NodeContainer c = NodeContainer (nA, nB, nC);
-
-  InternetStackHelper internet;
-  internet.Install (c);
-
-  // Point-to-point links
-  NodeContainer nAnB = NodeContainer (nA, nB);
-  NodeContainer nBnC = NodeContainer (nB, nC);
-
-  // We create the channels first without any IP addressing information
-  PointToPointHelper p2p;
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
-  NetDeviceContainer dAdB = p2p.Install (nAnB);
-
-  NetDeviceContainer dBdC = p2p.Install (nBnC);;
-
-  Ptr<CsmaNetDevice> deviceA = CreateObject<CsmaNetDevice> ();
-  deviceA->SetAddress (Mac48Address::Allocate ());
-  nA->AddDevice (deviceA);
-
-  Ptr<CsmaNetDevice> deviceC = CreateObject<CsmaNetDevice> ();
-  deviceC->SetAddress (Mac48Address::Allocate ());
-  nC->AddDevice (deviceC);
-
-  // Later, we add IP addresses.
-  Ipv4AddressHelper ipv4;
-  ipv4.SetBase ("10.1.1.0", "255.255.255.252");
-  Ipv4InterfaceContainer iAiB = ipv4.Assign (dAdB);
-
-  ipv4.SetBase ("10.1.1.4", "255.255.255.252");
-  Ipv4InterfaceContainer iBiC = ipv4.Assign (dBdC);
-
-  Ptr<Ipv4> ipv4A = nA->GetObject<Ipv4> ();
-  Ptr<Ipv4> ipv4B = nB->GetObject<Ipv4> ();
-  Ptr<Ipv4> ipv4C = nC->GetObject<Ipv4> ();
-
-  int32_t ifIndexA = ipv4A->AddInterface (deviceA);
-  int32_t ifIndexC = ipv4C->AddInterface (deviceC);
-
-  Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("/32"));
-  ipv4A->AddAddress (ifIndexA, ifInAddrA);
-  ipv4A->SetMetric (ifIndexA, 1);
-  ipv4A->SetUp (ifIndexA);
-
-  Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("/32"));
-  ipv4C->AddAddress (ifIndexC, ifInAddrC);
-  ipv4C->SetMetric (ifIndexC, 1);
-  ipv4C->SetUp (ifIndexC);
- 
-  Ipv4StaticRoutingHelper ipv4RoutingHelper;
-  // Create static routes from A to C
-  Ptr<Ipv4StaticRouting> staticRoutingA = ipv4RoutingHelper.GetStaticRouting (ipv4A);
-  // The ifIndex for this outbound route is 1; the first p2p link added
-  staticRoutingA->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.2"), 1);
-  Ptr<Ipv4StaticRouting> staticRoutingB = ipv4RoutingHelper.GetStaticRouting (ipv4B);
-  // The ifIndex we want on node B is 2; 0 corresponds to loopback, and 1 to the first point to point link
-  staticRoutingB->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.6"), 2);
-  // Create the OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s
-  uint16_t port = 9;   // Discard port (RFC 863)
-  OnOffHelper onoff ("ns3::UdpSocketFactory", 
-                     Address (InetSocketAddress (ifInAddrC.GetLocal (), port)));
-  onoff.SetConstantRate (DataRate (6000));
-  ApplicationContainer apps = onoff.Install (nA);
-  apps.Start (Seconds (1.0));
-  apps.Stop (Seconds (10.0));
-
-  // Create a packet sink to receive these packets
-  PacketSinkHelper sink ("ns3::UdpSocketFactory",
-                         Address (InetSocketAddress (Ipv4Address::GetAny (), port)));
-  apps = sink.Install (nC);
-  apps.Start (Seconds (1.0));
-  apps.Stop (Seconds (10.0));
-
-  Simulator::Run ();
-  // Check that we received 13 * 512 = 6656 bytes
-  Ptr<PacketSink> sinkPtr = DynamicCast <PacketSink> (apps.Get (0));
-  NS_TEST_ASSERT_MSG_EQ (sinkPtr->GetTotalRx (), 6656, "Static routing with /32 did not deliver all packets");
-  Simulator::Destroy ();
-}
-
-class StaticRoutingTestSuite : public TestSuite
-{
-public:
-  StaticRoutingTestSuite ();
-};
-
-StaticRoutingTestSuite::StaticRoutingTestSuite ()
-  : TestSuite ("static-routing", UNIT)
-{
-  AddTestCase (new StaticRoutingSlash32TestCase, TestCase::QUICK);
-}
-
-// Do not forget to allocate an instance of this TestSuite
-static StaticRoutingTestSuite staticRoutingTestSuite;
diff -Naur ns-3.20/src/test/wscript ns-3.21/src/test/wscript
--- ns-3.20/src/test/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/test/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -22,9 +22,6 @@
     test_test = bld.create_ns3_module_test_library('test')
     test_test.source = [
         'csma-system-test-suite.cc',
-        'global-routing-test-suite.cc',
-        'static-routing-test-suite.cc',
-        'mobility-test-suite.cc',
         'ns3wifi/wifi-interference-test-suite.cc',
         'ns3wifi/wifi-msdu-aggregator-test-suite.cc',
         'ns3tcp/ns3tcp-cwnd-test-suite.cc',
diff -Naur ns-3.20/src/topology-read/bindings/modulegen__gcc_ILP32.py ns-3.21/src/topology-read/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/topology-read/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/topology-read/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -1524,10 +1524,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1538,25 +1538,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1673,20 +1673,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/topology-read/bindings/modulegen__gcc_LP64.py ns-3.21/src/topology-read/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/topology-read/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/topology-read/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -1524,10 +1524,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -1538,25 +1538,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -1673,20 +1673,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/uan/bindings/modulegen__gcc_ILP32.py ns-3.21/src/uan/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/uan/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/uan/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -292,6 +292,8 @@
     module.add_class('EmpiricalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester [class]
+    module.add_class('EnergyHarvester', import_from_module='ns.energy', parent=root_module['ns3::Object'])
     ## energy-source.h (module 'energy'): ns3::EnergySource [class]
     module.add_class('EnergySource', import_from_module='ns.energy', parent=root_module['ns3::Object'])
     ## energy-source-container.h (module 'energy'): ns3::EnergySourceContainer [class]
@@ -583,6 +585,7 @@
     register_Ns3DoubleValue_methods(root_module, root_module['ns3::DoubleValue'])
     register_Ns3EmpiricalRandomVariable_methods(root_module, root_module['ns3::EmpiricalRandomVariable'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EnergyHarvester_methods(root_module, root_module['ns3::EnergyHarvester'])
     register_Ns3EnergySource_methods(root_module, root_module['ns3::EnergySource'])
     register_Ns3EnergySourceContainer_methods(root_module, root_module['ns3::EnergySourceContainer'])
     register_Ns3EnumChecker_methods(root_module, root_module['ns3::EnumChecker'])
@@ -3452,10 +3455,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3466,25 +3469,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3601,20 +3604,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6102,6 +6105,11 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -6203,6 +6211,51 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvester_methods(root_module, cls):
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester(ns3::EnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvester const &', 'arg0')])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::EnergySource> ns3::EnergyHarvester::GetEnergySource() const [member function]
+    cls.add_method('GetEnergySource', 
+                   'ns3::Ptr< ns3::EnergySource >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::Node> ns3::EnergyHarvester::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::GetPower() const [member function]
+    cls.add_method('GetPower', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
+    cls.add_method('SetEnergySource', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySource_methods(root_module, cls):
     ## energy-source.h (module 'energy'): ns3::EnergySource::EnergySource(ns3::EnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EnergySource const &', 'arg0')])
@@ -6212,6 +6265,10 @@
     cls.add_method('AppendDeviceEnergyModel', 
                    'void', 
                    [param('ns3::Ptr< ns3::DeviceEnergyModel >', 'deviceEnergyModelPtr')])
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::ConnectEnergyHarvester(ns3::Ptr<ns3::EnergyHarvester> energyHarvesterPtr) [member function]
+    cls.add_method('ConnectEnergyHarvester', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'energyHarvesterPtr')])
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DisposeDeviceModels() [member function]
     cls.add_method('DisposeDeviceModels', 
                    'void', 
@@ -6282,6 +6339,11 @@
                    'void', 
                    [], 
                    visibility='protected')
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::NotifyEnergyRecharged() [member function]
+    cls.add_method('NotifyEnergyRecharged', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7991,6 +8053,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## acoustic-modem-energy-model.h (module 'uan'): void ns3::AcousticModemEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## acoustic-modem-energy-model.h (module 'uan'): void ns3::AcousticModemEnergyModel::SetEnergyDepletionCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetEnergyDepletionCallback', 
                    'void', 
diff -Naur ns-3.20/src/uan/bindings/modulegen__gcc_LP64.py ns-3.21/src/uan/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/uan/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/uan/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -292,6 +292,8 @@
     module.add_class('EmpiricalRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
     ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
     module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester [class]
+    module.add_class('EnergyHarvester', import_from_module='ns.energy', parent=root_module['ns3::Object'])
     ## energy-source.h (module 'energy'): ns3::EnergySource [class]
     module.add_class('EnergySource', import_from_module='ns.energy', parent=root_module['ns3::Object'])
     ## energy-source-container.h (module 'energy'): ns3::EnergySourceContainer [class]
@@ -583,6 +585,7 @@
     register_Ns3DoubleValue_methods(root_module, root_module['ns3::DoubleValue'])
     register_Ns3EmpiricalRandomVariable_methods(root_module, root_module['ns3::EmpiricalRandomVariable'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
+    register_Ns3EnergyHarvester_methods(root_module, root_module['ns3::EnergyHarvester'])
     register_Ns3EnergySource_methods(root_module, root_module['ns3::EnergySource'])
     register_Ns3EnergySourceContainer_methods(root_module, root_module['ns3::EnergySourceContainer'])
     register_Ns3EnumChecker_methods(root_module, root_module['ns3::EnumChecker'])
@@ -3452,10 +3455,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -3466,25 +3469,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -3601,20 +3604,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6102,6 +6105,11 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## device-energy-model.h (module 'energy'): void ns3::DeviceEnergyModel::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
     cls.add_method('SetEnergySource', 
                    'void', 
@@ -6203,6 +6211,51 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3EnergyHarvester_methods(root_module, cls):
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester(ns3::EnergyHarvester const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EnergyHarvester const &', 'arg0')])
+    ## energy-harvester.h (module 'energy'): ns3::EnergyHarvester::EnergyHarvester() [constructor]
+    cls.add_constructor([])
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::EnergySource> ns3::EnergyHarvester::GetEnergySource() const [member function]
+    cls.add_method('GetEnergySource', 
+                   'ns3::Ptr< ns3::EnergySource >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): ns3::Ptr<ns3::Node> ns3::EnergyHarvester::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::GetPower() const [member function]
+    cls.add_method('GetPower', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## energy-harvester.h (module 'energy'): static ns3::TypeId ns3::EnergyHarvester::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetEnergySource(ns3::Ptr<ns3::EnergySource> source) [member function]
+    cls.add_method('SetEnergySource', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergySource >', 'source')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## energy-harvester.h (module 'energy'): void ns3::EnergyHarvester::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
+    ## energy-harvester.h (module 'energy'): double ns3::EnergyHarvester::DoGetPower() const [member function]
+    cls.add_method('DoGetPower', 
+                   'double', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3EnergySource_methods(root_module, cls):
     ## energy-source.h (module 'energy'): ns3::EnergySource::EnergySource(ns3::EnergySource const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::EnergySource const &', 'arg0')])
@@ -6212,6 +6265,10 @@
     cls.add_method('AppendDeviceEnergyModel', 
                    'void', 
                    [param('ns3::Ptr< ns3::DeviceEnergyModel >', 'deviceEnergyModelPtr')])
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::ConnectEnergyHarvester(ns3::Ptr<ns3::EnergyHarvester> energyHarvesterPtr) [member function]
+    cls.add_method('ConnectEnergyHarvester', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::EnergyHarvester >', 'energyHarvesterPtr')])
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DisposeDeviceModels() [member function]
     cls.add_method('DisposeDeviceModels', 
                    'void', 
@@ -6282,6 +6339,11 @@
                    'void', 
                    [], 
                    visibility='protected')
+    ## energy-source.h (module 'energy'): void ns3::EnergySource::NotifyEnergyRecharged() [member function]
+    cls.add_method('NotifyEnergyRecharged', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## energy-source.h (module 'energy'): void ns3::EnergySource::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
@@ -7991,6 +8053,11 @@
                    'void', 
                    [], 
                    is_virtual=True)
+    ## acoustic-modem-energy-model.h (module 'uan'): void ns3::AcousticModemEnergyModel::HandleEnergyRecharged() [member function]
+    cls.add_method('HandleEnergyRecharged', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## acoustic-modem-energy-model.h (module 'uan'): void ns3::AcousticModemEnergyModel::SetEnergyDepletionCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
     cls.add_method('SetEnergyDepletionCallback', 
                    'void', 
diff -Naur ns-3.20/src/uan/model/acoustic-modem-energy-model.h ns-3.21/src/uan/model/acoustic-modem-energy-model.h
--- ns-3.20/src/uan/model/acoustic-modem-energy-model.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/uan/model/acoustic-modem-energy-model.h	2014-09-17 20:03:14.000000000 -0700
@@ -169,6 +169,15 @@
    */
   virtual void HandleEnergyDepletion (void);
 
+  /**
+   * \brief Handles energy recharged.
+   *
+   * Not implemented
+   */
+  virtual void HandleEnergyRecharged (void)
+  {
+  }
+
 
 private:
   void DoDispose (void);
diff -Naur ns-3.20/src/virtual-net-device/wscript ns-3.21/src/virtual-net-device/wscript
--- ns-3.20/src/virtual-net-device/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/virtual-net-device/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -2,7 +2,7 @@
 
 
 def build(bld):
-    module = bld.create_ns3_module('virtual-net-device', ['network', 'internet'])
+    module = bld.create_ns3_module('virtual-net-device', ['network'])
     module.source = [
         'model/virtual-net-device.cc',
         ]
diff -Naur ns-3.20/src/visualizer/visualizer/core.py ns-3.21/src/visualizer/visualizer/core.py
--- ns-3.20/src/visualizer/visualizer/core.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/visualizer/visualizer/core.py	2014-09-17 20:03:14.000000000 -0700
@@ -1124,7 +1124,7 @@
         # acquire and release the simulation lock around each code
         # that is executed.
 
-        original_runcode = __IPYTHON__.runcode
+        original_runcode = self.ipython.runcode
         def runcode(ip, *args):
             #print "lock"
             self.simulation.lock.acquire()
@@ -1134,7 +1134,7 @@
                 #print "unlock"
                 self.simulation.lock.release()
         import types
-        __IPYTHON__.runcode = types.MethodType(runcode, __IPYTHON__)                
+        self.ipython.runcode = types.MethodType(runcode, self.ipython)                
 
     def autoscale_view(self):
         if not self.nodes:
@@ -1285,7 +1285,7 @@
                     ns3_node = ns.network.NodeList.GetNode(self.selected_node.node_index)
                 finally:
                     self.simulation.lock.release()
-            __IPYTHON__.user_ns['selected_node'] = ns3_node
+            self.ipython.updateNamespace({'selected_node': ns3_node})
 
 
     def select_node(self, node):
@@ -1439,18 +1439,18 @@
         self.shell_window.set_resizable(True)
         scrolled_window = gtk.ScrolledWindow()
         scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
-        ipython = ipython_view.IPythonView()
-        ipython.modify_font(pango.FontDescription(SHELL_FONT))
-        ipython.set_wrap_mode(gtk.WRAP_CHAR)
-        ipython.show()
-        scrolled_window.add(ipython)
+        self.ipython = ipython_view.IPythonView()
+        self.ipython.modify_font(pango.FontDescription(SHELL_FONT))
+        self.ipython.set_wrap_mode(gtk.WRAP_CHAR)
+        self.ipython.show()
+        scrolled_window.add(self.ipython)
         scrolled_window.show()
         self.shell_window.add(scrolled_window)
         self.shell_window.show()
         self.shell_window.connect('destroy', self._on_shell_window_destroy)
 
         self._update_ipython_selected_node()
-        __IPYTHON__.user_ns['viz'] = self
+        self.ipython.updateNamespace({'viz': self})
 
 
     def _on_shell_window_destroy(self, window):
diff -Naur ns-3.20/src/visualizer/visualizer/ipython_view.py ns-3.21/src/visualizer/visualizer/ipython_view.py
--- ns-3.20/src/visualizer/visualizer/ipython_view.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/visualizer/visualizer/ipython_view.py	2014-09-17 20:03:14.000000000 -0700
@@ -13,7 +13,7 @@
 # this file is a modified version of source code from the Accerciser project
 # http://live.gnome.org/accerciser
 
-import gtk
+import gtk, gobject
 import re
 import sys
 import os
@@ -21,125 +21,281 @@
 from StringIO import StringIO
 import IPython
 
-ansi_colors =  {'0;30': 'Black',
-                '0;31': 'Red',
-                '0;32': 'Green',
-                '0;33': 'Brown',
-                '0;34': 'Blue',
-                '0;35': 'Purple',
-                '0;36': 'Cyan',
-                '0;37': 'LightGray',
-                '1;30': 'DarkGray',
-                '1;31': 'DarkRed',
-                '1;32': 'SeaGreen',
-                '1;33': 'Yellow',
-                '1;34': 'LightBlue',
-                '1;35': 'MediumPurple',
-                '1;36': 'LightCyan',
-                '1;37': 'White'}
+from pkg_resources import parse_version
+
+try:
+  import IPython
+except ImportError:
+  IPython = None
 
 class IterableIPShell:
   def __init__(self,argv=None,user_ns=None,user_global_ns=None,
                cin=None, cout=None,cerr=None, input_func=None):
+    '''
+    
+    
+    @param argv: Command line options for IPython
+    @type argv: list
+    @param user_ns: User namespace.
+    @type user_ns: dictionary
+    @param user_global_ns: User global namespace.
+    @type user_global_ns: dictionary.
+    @param cin: Console standard input.
+    @type cin: IO stream
+    @param cout: Console standard output.
+    @type cout: IO stream 
+    @param cerr: Console standard error.
+    @type cerr: IO stream
+    @param input_func: Replacement for builtin raw_input()
+    @type input_func: function
+    '''
+    io = IPython.utils.io
     if input_func:
-      IPython.iplib.raw_input_original = input_func
+      if parse_version(IPython.release.version) >= parse_version("1.2.1"):
+        IPython.terminal.interactiveshell.raw_input_original = input_func
+      else:
+        IPython.frontend.terminal.interactiveshell.raw_input_original = input_func
     if cin:
-      IPython.Shell.Term.cin = cin
+      io.stdin = io.IOStream(cin)
     if cout:
-      IPython.Shell.Term.cout = cout
+      io.stdout = io.IOStream(cout)
     if cerr:
-      IPython.Shell.Term.cerr = cerr
-
-    if argv is None:
-      argv=[]
+      io.stderr = io.IOStream(cerr)
 
     # This is to get rid of the blockage that occurs during 
     # IPython.Shell.InteractiveShell.user_setup()
-    IPython.iplib.raw_input = lambda x: None
 
-    self.term = IPython.genutils.IOTerm(cin=cin, cout=cout, cerr=cerr)
+    io.raw_input = lambda x: None
+
     os.environ['TERM'] = 'dumb'
-    excepthook = sys.excepthook
-    self.IP = IPython.Shell.make_IPython(argv,user_ns=user_ns,
-                                         user_global_ns=user_global_ns,
-                                         embedded=True,
-                                         shell_class=IPython.Shell.InteractiveShell)
+    excepthook = sys.excepthook 
+
+    from IPython.config.loader import Config
+    cfg = Config()
+    cfg.InteractiveShell.colors = "Linux"
+
+    # InteractiveShell's __init__ overwrites io.stdout,io.stderr with
+    # sys.stdout, sys.stderr, this makes sure they are right
+    #
+    old_stdout, old_stderr = sys.stdout, sys.stderr
+    sys.stdout, sys.stderr = io.stdout.stream, io.stderr.stream
+
+    # InteractiveShell inherits from SingletonConfigurable, so use instance()
+    #
+    if parse_version(IPython.release.version) >= parse_version("1.2.1"):
+      self.IP = IPython.terminal.embed.InteractiveShellEmbed.instance(\
+              config=cfg, user_ns=user_ns)
+    else:
+      self.IP = IPython.frontend.terminal.embed.InteractiveShellEmbed.instance(\
+              config=cfg, user_ns=user_ns)
+
+    sys.stdout, sys.stderr = old_stdout, old_stderr
+
     self.IP.system = lambda cmd: self.shell(self.IP.var_expand(cmd),
-                                            header='IPython system call: ',
-                                            verbose=self.IP.rc.system_verbose)
+                                            header='IPython system call: ')
+#                                            local_ns=user_ns)
+                                            #global_ns=user_global_ns)
+                                            #verbose=self.IP.rc.system_verbose)
+
+    self.IP.raw_input = input_func
     sys.excepthook = excepthook
     self.iter_more = 0
     self.history_level = 0
     self.complete_sep =  re.compile('[\s\{\}\[\]\(\)]')
+    self.updateNamespace({'exit':lambda:None})
+    self.updateNamespace({'quit':lambda:None})
+    self.IP.readline_startup_hook(self.IP.pre_readline)
+    # Workaround for updating namespace with sys.modules
+    #
+    self.__update_namespace()
+
+  def __update_namespace(self):
+    '''
+    Update self.IP namespace for autocompletion with sys.modules
+    '''
+    for k, v in list(sys.modules.items()):
+        if not '.' in k:
+          self.IP.user_ns.update({k:v})
 
   def execute(self):
+    '''
+    Executes the current line provided by the shell object.
+    '''
     self.history_level = 0
     orig_stdout = sys.stdout
-    sys.stdout = IPython.Shell.Term.cout
+    sys.stdout = IPython.utils.io.stdout
+
+    orig_stdin = sys.stdin
+    sys.stdin = IPython.utils.io.stdin;
+    self.prompt = self.generatePrompt(self.iter_more)
+
+    self.IP.hooks.pre_prompt_hook()
+    if self.iter_more:
+        try:
+            self.prompt = self.generatePrompt(True)
+        except:
+            self.IP.showtraceback()
+        if self.IP.autoindent:
+            self.IP.rl_do_indent = True
+
     try:
-      line = self.IP.raw_input(None, self.iter_more)
-      if self.IP.autoindent:
-        self.IP.readline_startup_hook(None)
+      line = self.IP.raw_input(self.prompt)
     except KeyboardInterrupt:
       self.IP.write('\nKeyboardInterrupt\n')
-      self.IP.resetbuffer()
-      # keep cache in sync with the prompt counter:
-      self.IP.outputcache.prompt_count -= 1
-
-      if self.IP.autoindent:
-        self.IP.indent_current_nsp = 0
-      self.iter_more = 0
+      self.IP.input_splitter.reset()
     except:
       self.IP.showtraceback()
     else:
-      self.iter_more = self.IP.push(line)
+      self.IP.input_splitter.push(line)
+      self.iter_more = self.IP.input_splitter.push_accepts_more()
+      self.prompt = self.generatePrompt(self.iter_more)
       if (self.IP.SyntaxTB.last_syntax_error and
-          self.IP.rc.autoedit_syntax):
-        self.IP.edit_syntax_error()
-    if self.iter_more:
-      self.prompt = str(self.IP.outputcache.prompt2).strip()
-      if self.IP.autoindent:
-        self.IP.readline_startup_hook(self.IP.pre_readline)
-    else:
-      self.prompt = str(self.IP.outputcache.prompt1).strip()
+          self.IP.autoedit_syntax):
+          self.IP.edit_syntax_error()
+      if not self.iter_more:
+          if parse_version(IPython.release.version) >= parse_version("2.0.0-dev"):
+            source_raw = self.IP.input_splitter.raw_reset()
+          else:
+            source_raw = self.IP.input_splitter.source_raw_reset()[1]
+          self.IP.run_cell(source_raw, store_history=True)
+          self.IP.rl_do_indent = False
+      else:
+          # TODO: Auto-indent
+          #
+          self.IP.rl_do_indent = True
+          pass
+
     sys.stdout = orig_stdout
+    sys.stdin = orig_stdin
+
+  def generatePrompt(self, is_continuation):
+    '''
+    Generate prompt depending on is_continuation value
+
+    @param is_continuation
+    @type is_continuation: boolean 
+
+    @return: The prompt string representation
+    @rtype: string
+
+    '''
+
+    # Backwards compatibility with ipyton-0.11
+    #
+    ver = IPython.__version__
+    if '0.11' in ver:
+        prompt = self.IP.hooks.generate_prompt(is_continuation)
+    else:
+        if is_continuation:
+            prompt = self.IP.prompt_manager.render('in2')
+        else:
+            prompt = self.IP.prompt_manager.render('in')
+
+    return prompt
+
 
   def historyBack(self):
+    '''
+    Provides one history command back.
+    
+    @return: The command string.
+    @rtype: string
+    '''
     self.history_level -= 1
+    if not self._getHistory():
+      self.history_level +=1
     return self._getHistory()
 
   def historyForward(self):
-    self.history_level += 1
+    '''
+    Provides one history command forward.
+    
+    @return: The command string.
+    @rtype: string
+    '''
+    if self.history_level < 0:
+      self.history_level += 1
     return self._getHistory()
 
   def _getHistory(self):
+    '''
+    Get's the command string of the current history level.
+    
+    @return: Historic command string.
+    @rtype: string
+    '''
     try:
       rv = self.IP.user_ns['In'][self.history_level].strip('\n')
     except IndexError:
-      self.history_level = 0
       rv = ''
     return rv
 
   def updateNamespace(self, ns_dict):
+    '''
+    Add the current dictionary to the shell namespace.
+    
+    @param ns_dict: A dictionary of symbol-values.
+    @type ns_dict: dictionary
+    '''
     self.IP.user_ns.update(ns_dict)
 
   def complete(self, line):
+    '''
+    Returns an auto completed line and/or posibilities for completion.
+    
+    @param line: Given line so far.
+    @type line: string
+    
+    @return: Line completed as for as possible, 
+    and possible further completions.
+    @rtype: tuple
+    '''
     split_line = self.complete_sep.split(line)
-    possibilities = self.IP.complete(split_line[-1])
+    if split_line[-1]:
+      possibilities = self.IP.complete(split_line[-1])
+    else:
+      completed = line
+      possibilities = ['', []]
     if possibilities:
-      common_prefix = reduce(self._commonPrefix, possibilities)
-      completed = line[:-len(split_line[-1])]+common_prefix
+      def _commonPrefix(str1, str2):
+        '''
+        Reduction function. returns common prefix of two given strings.
+        
+        @param str1: First string.
+        @type str1: string
+        @param str2: Second string
+        @type str2: string
+        
+        @return: Common prefix to both strings.
+        @rtype: string
+        '''
+        for i in range(len(str1)):
+          if not str2.startswith(str1[:i+1]):
+            return str1[:i]
+        return str1
+      if possibilities[1]:
+        common_prefix = reduce(_commonPrefix, possibilities[1]) or line[-1]
+        completed = line[:-len(split_line[-1])]+common_prefix
+      else:
+        completed = line
     else:
       completed = line
-    return completed, possibilities
-
-  def _commonPrefix(self, str1, str2):
-    for i in range(len(str1)):
-      if not str2.startswith(str1[:i+1]):
-        return str1[:i]
-    return str1
+    return completed, possibilities[1]
+  
 
   def shell(self, cmd,verbose=0,debug=0,header=''):
+    '''
+    Replacement method to allow shell commands without them blocking.
+    
+    @param cmd: Shell command to execute.
+    @type cmd: string
+    @param verbose: Verbosity
+    @type verbose: integer
+    @param debug: Debug level
+    @type debug: integer
+    @param header: Header to be printed before output
+    @type header: string
+    '''
     stat = 0
     if verbose or debug: print header+cmd
     # flush stdout so we don't mangle python's buffering
@@ -150,7 +306,34 @@
       input.close()
 
 class ConsoleView(gtk.TextView):
+  '''
+  Specialized text view for console-like workflow.
+
+  @cvar ANSI_COLORS: Mapping of terminal colors to X11 names.
+  @type ANSI_COLORS: dictionary
+
+  @ivar text_buffer: Widget's text buffer.
+  @type text_buffer: gtk.TextBuffer
+  @ivar color_pat: Regex of terminal color pattern
+  @type color_pat: _sre.SRE_Pattern
+  @ivar mark: Scroll mark for automatic scrolling on input.
+  @type mark: gtk.TextMark
+  @ivar line_start: Start of command line mark.
+  @type line_start: gtk.TextMark
+  '''
+  ANSI_COLORS =  {'0;30': 'Black',     '0;31': 'Red',
+                  '0;32': 'Green',     '0;33': 'Brown',
+                  '0;34': 'Blue',      '0;35': 'Purple',
+                  '0;36': 'Cyan',      '0;37': 'LightGray',
+                  '1;30': 'DarkGray',  '1;31': 'DarkRed',
+                  '1;32': 'SeaGreen',  '1;33': 'Yellow',
+                  '1;34': 'LightBlue', '1;35': 'MediumPurple',
+                  '1;36': 'LightCyan', '1;37': 'White'}
+
   def __init__(self):
+    '''
+    Initialize console view.
+    '''
     gtk.TextView.__init__(self)
     self.modify_font(pango.FontDescription('Mono'))
     self.set_cursor_visible(True)
@@ -158,21 +341,30 @@
     self.mark = self.text_buffer.create_mark('scroll_mark',
                                              self.text_buffer.get_end_iter(),
                                              False)
-    for code in ansi_colors:
-      self.text_buffer.create_tag(code,
-                                  foreground=ansi_colors[code],
+    for code in self.ANSI_COLORS:
+      self.text_buffer.create_tag(code, 
+                                  foreground=self.ANSI_COLORS[code], 
                                   weight=700)
     self.text_buffer.create_tag('0')
     self.text_buffer.create_tag('notouch', editable=False)
     self.color_pat = re.compile('\x01?\x1b\[(.*?)m\x02?')
     self.line_start = \
-                self.text_buffer.create_mark('line_start',
-                        self.text_buffer.get_end_iter(), True
-                )
-    self.connect('key-press-event', self._onKeypress)
-    self.last_cursor_pos = 0
-
+        self.text_buffer.create_mark('line_start', 
+                                     self.text_buffer.get_end_iter(), True)
+    self.connect('key-press-event', self.onKeyPress)
+    
   def write(self, text, editable=False):
+    gobject.idle_add(self._write, text, editable)
+
+  def _write(self, text, editable=False):
+    '''
+    Write given text to buffer.
+    
+    @param text: Text to append.
+    @type text: string
+    @param editable: If true, added text is editable.
+    @type editable: boolean
+    '''
     segments = self.color_pat.split(text)
     segment = segments.pop(0)
     start_mark = self.text_buffer.create_mark(None,
@@ -185,7 +377,7 @@
       for tag in ansi_tags:
         i = segments.index(tag)
         self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(),
-                                             segments[i+1], tag)
+                                                  segments[i+1], str(tag))
         segments.pop(i)
     if not editable:
       self.text_buffer.apply_tag_by_name('notouch',
@@ -195,72 +387,174 @@
     self.scroll_mark_onscreen(self.mark)
 
   def showPrompt(self, prompt):
-    self.write(prompt)
-    self.text_buffer.move_mark(self.line_start,self.text_buffer.get_end_iter())
+    gobject.idle_add(self._showPrompt, prompt)
+
+  def _showPrompt(self, prompt):
+    '''
+    Prints prompt at start of line.
+    
+    @param prompt: Prompt to print.
+    @type prompt: string
+    '''
+    self._write(prompt)
+    self.text_buffer.move_mark(self.line_start,
+                               self.text_buffer.get_end_iter())
 
   def changeLine(self, text):
+    gobject.idle_add(self._changeLine, text)
+
+  def _changeLine(self, text):
+    '''
+    Replace currently entered command line with given text.
+    
+    @param text: Text to use as replacement.
+    @type text: string
+    '''
     iter = self.text_buffer.get_iter_at_mark(self.line_start)
     iter.forward_to_line_end()
     self.text_buffer.delete(self.text_buffer.get_iter_at_mark(self.line_start), iter)
-    self.write(text, True)
+    self._write(text, True)
 
   def getCurrentLine(self):
-    rv = self.text_buffer.get_slice(self.text_buffer.get_iter_at_mark(self.line_start),
-                                    self.text_buffer.get_end_iter(), False)
+    '''
+    Get text in current command line.
+    
+    @return: Text of current command line.
+    @rtype: string
+    '''
+    rv = self.text_buffer.get_slice(
+      self.text_buffer.get_iter_at_mark(self.line_start),
+      self.text_buffer.get_end_iter(), False)
     return rv
 
   def showReturned(self, text):
+    gobject.idle_add(self._showReturned, text)
+
+  def _showReturned(self, text):
+    '''
+    Show returned text from last command and print new prompt.
+    
+    @param text: Text to show.
+    @type text: string
+    '''
     iter = self.text_buffer.get_iter_at_mark(self.line_start)
     iter.forward_to_line_end()
-    self.text_buffer.apply_tag_by_name('notouch',
-                                       self.text_buffer.get_iter_at_mark(self.line_start),
-                                       iter)
-    self.write('\n'+text)
+    self.text_buffer.apply_tag_by_name(
+      'notouch', 
+      self.text_buffer.get_iter_at_mark(self.line_start),
+      iter)
+    self._write('\n'+text)
     if text:
-      self.write('\n')
-    self.showPrompt(self.prompt)
+      self._write('\n')
+    self._showPrompt(self.prompt)
     self.text_buffer.move_mark(self.line_start,self.text_buffer.get_end_iter())
     self.text_buffer.place_cursor(self.text_buffer.get_end_iter())
 
-  def _onKeypress(self, obj, event):
-    if not event.string:
-      return
+    if self.IP.rl_do_indent:
+      indentation = self.IP.input_splitter.indent_spaces * ' '
+      self.text_buffer.insert_at_cursor(indentation)
+
+  def onKeyPress(self, widget, event):
+    '''
+    Key press callback used for correcting behavior for console-like 
+    interfaces. For example 'home' should go to prompt, not to begining of
+    line.
+    
+    @param widget: Widget that key press accored in.
+    @type widget: gtk.Widget
+    @param event: Event object
+    @type event: gtk.gdk.Event
+    
+    @return: Return True if event should not trickle.
+    @rtype: boolean
+    '''
     insert_mark = self.text_buffer.get_insert()
     insert_iter = self.text_buffer.get_iter_at_mark(insert_mark)
     selection_mark = self.text_buffer.get_selection_bound()
     selection_iter = self.text_buffer.get_iter_at_mark(selection_mark)
     start_iter = self.text_buffer.get_iter_at_mark(self.line_start)
-    if start_iter.compare(insert_iter) <= 0 and \
+    if event.keyval == gtk.keysyms.Home:
+      if event.state & gtk.gdk.CONTROL_MASK or event.state & gtk.gdk.MOD1_MASK:
+        pass
+      elif event.state & gtk.gdk.SHIFT_MASK:
+        self.text_buffer.move_mark(insert_mark, start_iter)
+        return True
+      else:
+        self.text_buffer.place_cursor(start_iter)
+        return True
+    elif event.keyval == gtk.keysyms.Left:
+      insert_iter.backward_cursor_position()
+      if not insert_iter.editable(True):
+        return True
+    elif not event.string:
+      pass
+    elif start_iter.compare(insert_iter) <= 0 and \
           start_iter.compare(selection_iter) <= 0:
-      return
+      pass
     elif start_iter.compare(insert_iter) > 0 and \
           start_iter.compare(selection_iter) > 0:
       self.text_buffer.place_cursor(start_iter)
     elif insert_iter.compare(selection_iter) < 0:
       self.text_buffer.move_mark(insert_mark, start_iter)
     elif insert_iter.compare(selection_iter) > 0:
-      self.text_buffer.move_mark(selection_mark, start_iter)
+      self.text_buffer.move_mark(selection_mark, start_iter)             
+
+    return self.onKeyPressExtend(event)
 
+  def onKeyPressExtend(self, event):
+    '''
+    For some reason we can't extend onKeyPress directly (bug #500900).
+    '''
+    pass
 
 class IPythonView(ConsoleView, IterableIPShell):
+  '''
+  Sub-class of both modified IPython shell and L{ConsoleView} this makes
+  a GTK+ IPython console.
+  '''
   def __init__(self):
+    '''
+    Initialize. Redirect I/O to console.
+    '''
     ConsoleView.__init__(self)
     self.cout = StringIO()
     IterableIPShell.__init__(self, cout=self.cout,cerr=self.cout,
                              input_func=self.raw_input)
-    self.connect('key_press_event', self.keyPress)
+    self.interrupt = False
     self.execute()
+    self.prompt = self.generatePrompt(False)
     self.cout.truncate(0)
     self.showPrompt(self.prompt)
-    self.interrupt = False
 
   def raw_input(self, prompt=''):
+    '''
+    Custom raw_input() replacement. Get's current line from console buffer.
+    
+    @param prompt: Prompt to print. Here for compatability as replacement.
+    @type prompt: string
+    
+    @return: The current command line text.
+    @rtype: string
+    '''
     if self.interrupt:
       self.interrupt = False
       raise KeyboardInterrupt
     return self.getCurrentLine()
 
-  def keyPress(self, widget, event):
+  def onKeyPressExtend(self, event):
+    '''
+    Key press callback with plenty of shell goodness, like history, 
+    autocompletions, etc.
+    
+    @param widget: Widget that key press occured in.
+    @type widget: gtk.Widget
+    @param event: Event object.
+    @type event: gtk.gdk.Event
+    
+    @return: True if event should not trickle.
+    @rtype: boolean
+    '''
+
     if event.state & gtk.gdk.CONTROL_MASK and event.keyval == 99:
       self.interrupt = True
       self._processLine()
@@ -288,9 +582,22 @@
       return True
 
   def _processLine(self):
+    '''
+    Process current command line.
+    '''
     self.history_pos = 0
     self.execute()
     rv = self.cout.getvalue()
     if rv: rv = rv.strip('\n')
     self.showReturned(rv)
     self.cout.truncate(0)
+    self.cout.seek(0)
+ 
+if __name__ == "__main__":
+  window = gtk.Window()
+  window.set_default_size(640, 320)
+  window.connect('delete-event', lambda x, y: gtk.main_quit())
+  window.add(IPythonView())
+  window.show_all()
+  gtk.main()
+    
diff -Naur ns-3.20/src/wave/bindings/modulegen__gcc_ILP32.py ns-3.21/src/wave/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/wave/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wave/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -295,7 +295,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
@@ -3582,15 +3582,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4792,10 +4802,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4806,25 +4816,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4941,20 +4951,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6500,6 +6510,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6552,10 +6567,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6607,6 +6627,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -8269,6 +8294,10 @@
                    'bool', 
                    [], 
                    is_const=True)
+    ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
diff -Naur ns-3.20/src/wave/bindings/modulegen__gcc_LP64.py ns-3.21/src/wave/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/wave/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wave/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -295,7 +295,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'], import_from_module='ns.wifi')
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
     module.add_class('WifiRemoteStationManager', import_from_module='ns.wifi', parent=root_module['ns3::Object'])
     ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
@@ -3582,15 +3582,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -4792,10 +4802,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -4806,25 +4816,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -4941,20 +4951,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -6500,6 +6510,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -6552,10 +6567,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -6607,6 +6627,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -8269,6 +8294,10 @@
                    'bool', 
                    [], 
                    is_const=True)
+    ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
diff -Naur ns-3.20/src/wave/examples/wave-simple-80211p.cc ns-3.21/src/wave/examples/wave-simple-80211p.cc
--- ns-3.20/src/wave/examples/wave-simple-80211p.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wave/examples/wave-simple-80211p.cc	2014-09-17 20:03:14.000000000 -0700
@@ -75,7 +75,10 @@
 
 void ReceivePacket (Ptr<Socket> socket)
 {
-  NS_LOG_UNCOND ("Received one packet!");
+  while (socket->Recv ())
+    {
+      NS_LOG_UNCOND ("Received one packet!");
+    }
 }
 
 static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize,
diff -Naur ns-3.20/src/wave/test/ocb-test-suite.cc ns-3.21/src/wave/test/ocb-test-suite.cc
--- ns-3.20/src/wave/test/ocb-test-suite.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wave/test/ocb-test-suite.cc	2014-09-17 20:03:14.000000000 -0700
@@ -26,13 +26,14 @@
 #include "ns3/ssid.h"
 #include "ns3/packet-socket-address.h"
 #include "ns3/mobility-model.h"
-#include "ns3/on-off-helper.h"
 #include "ns3/yans-wifi-helper.h"
 #include "ns3/position-allocator.h"
 #include "ns3/packet-socket-helper.h"
 #include "ns3/mobility-helper.h"
 #include "ns3/nqos-wifi-mac-helper.h"
 #include "ns3/wifi-net-device.h"
+#include "ns3/packet-socket-server.h"
+#include "ns3/packet-socket-client.h"
 #include <iostream>
 
 #include "ns3/ocb-wifi-mac.h"
@@ -282,11 +283,17 @@
   packetSocket.Install (static_node);
   packetSocket.Install (mobile_node);
 
-  OnOffHelper onoff ("ns3::PacketSocketFactory", Address (socket));
-  onoff.SetConstantRate (DataRate ("500kb/s"));
-  ApplicationContainer apps = onoff.Install (mobile_node);
-  apps.Start (Seconds (0.5));
-  apps.Stop (Seconds (70.0));
+  Ptr<PacketSocketClient> client = CreateObject<PacketSocketClient> ();
+  client->SetRemote (socket);
+  mobile_node->AddApplication (client);
+  client->SetStartTime (Seconds (0.5));
+  client->SetStopTime (Seconds (70.0));
+
+  Ptr<PacketSocketServer> server = CreateObject<PacketSocketServer> ();
+  server->SetLocal (socket);
+  static_node->AddApplication (server);
+  server->SetStartTime (Seconds (0.0));
+  server->SetStopTime (Seconds (70.5));
 
   phytx_time = macassoc_time = phyrx_time = Time ();
   phytx_pos = macassoc_pos = phyrx_pos = Vector ();
diff -Naur ns-3.20/src/wave/wscript ns-3.21/src/wave/wscript
--- ns-3.20/src/wave/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wave/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -7,7 +7,7 @@
 #     conf.check_nonfatal(header_name='stdint.h', define_name='HAVE_STDINT_H')
 
 def build(bld):
-    module = bld.create_ns3_module('wave', ['core','wifi', 'propagation', 'applications'])
+    module = bld.create_ns3_module('wave', ['core', 'wifi'])
     module.source = [
 	'model/wave-mac-low.cc',
         'model/ocb-wifi-mac.cc',
diff -Naur ns-3.20/src/wifi/bindings/modulegen__gcc_ILP32.py ns-3.21/src/wifi/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/wifi/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -351,7 +351,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'])
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'])
     ## wifi-phy-state-helper.h (module 'wifi'): ns3::WifiPhyStateHelper [class]
     module.add_class('WifiPhyStateHelper', parent=root_module['ns3::Object'])
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
@@ -1865,6 +1865,10 @@
     cls.add_method('NotifyRxStartNow', 
                    'void', 
                    [param('ns3::Time', 'duration')])
+    ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
@@ -1873,6 +1877,10 @@
     cls.add_method('NotifyTxStartNow', 
                    'void', 
                    [param('ns3::Time', 'duration')])
+    ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifyWakeupNow() [member function]
+    cls.add_method('NotifyWakeupNow', 
+                   'void', 
+                   [])
     ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::RequestAccess(ns3::DcfState * state) [member function]
     cls.add_method('RequestAccess', 
                    'void', 
@@ -4130,15 +4138,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -5707,10 +5725,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5721,25 +5739,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5856,20 +5874,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -7618,6 +7636,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -7670,10 +7693,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -7725,6 +7753,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -7780,6 +7813,10 @@
     cls.add_method('IsStateRx', 
                    'bool', 
                    [])
+    ## wifi-phy-state-helper.h (module 'wifi'): bool ns3::WifiPhyStateHelper::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [])
     ## wifi-phy-state-helper.h (module 'wifi'): bool ns3::WifiPhyStateHelper::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -7808,6 +7845,10 @@
     cls.add_method('SwitchFromRxEndOk', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('double', 'snr'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')])
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchFromSleep(ns3::Time duration) [member function]
+    cls.add_method('SwitchFromSleep', 
+                   'void', 
+                   [param('ns3::Time', 'duration')])
     ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchMaybeToCcaBusy(ns3::Time duration) [member function]
     cls.add_method('SwitchMaybeToCcaBusy', 
                    'void', 
@@ -7820,10 +7861,14 @@
     cls.add_method('SwitchToRx', 
                    'void', 
                    [param('ns3::Time', 'rxDuration')])
-    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToTx(ns3::Time txDuration, ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode txMode, ns3::WifiPreamble preamble, uint8_t txPower) [member function]
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToSleep() [member function]
+    cls.add_method('SwitchToSleep', 
+                   'void', 
+                   [])
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToTx(ns3::Time txDuration, ns3::Ptr<ns3::Packet const> packet, double txPowerDbm, ns3::WifiTxVector txVector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SwitchToTx', 
                    'void', 
-                   [param('ns3::Time', 'txDuration'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'txMode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPower')])
+                   [param('ns3::Time', 'txDuration'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiTxVector', 'txVector'), param('ns3::WifiPreamble', 'preamble')])
     ## wifi-phy-state-helper.h (module 'wifi'): ns3::WifiPhyStateHelper::m_stateLogger [variable]
     cls.add_instance_attribute('m_stateLogger', 'ns3::TracedCallback< ns3::Time, ns3::Time, ns3::WifiPhy::State, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', is_const=False)
     return
@@ -8522,6 +8567,11 @@
                    'bool', 
                    [], 
                    is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -8542,10 +8592,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_virtual=True)
-    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetCcaMode1Threshold(double threshold) [member function]
     cls.add_method('SetCcaMode1Threshold', 
@@ -8633,6 +8688,11 @@
     cls.add_method('SetRxNoiseFigure', 
                    'void', 
                    [param('double', 'noiseFigureDb')])
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -11201,6 +11261,10 @@
                    'bool', 
                    [], 
                    is_const=True)
+    ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
diff -Naur ns-3.20/src/wifi/bindings/modulegen__gcc_LP64.py ns-3.21/src/wifi/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/wifi/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -351,7 +351,7 @@
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy [class]
     module.add_class('WifiPhy', parent=root_module['ns3::Object'])
     ## wifi-phy.h (module 'wifi'): ns3::WifiPhy::State [enumeration]
-    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING'], outer_class=root_module['ns3::WifiPhy'])
+    module.add_enum('State', ['IDLE', 'CCA_BUSY', 'TX', 'RX', 'SWITCHING', 'SLEEP'], outer_class=root_module['ns3::WifiPhy'])
     ## wifi-phy-state-helper.h (module 'wifi'): ns3::WifiPhyStateHelper [class]
     module.add_class('WifiPhyStateHelper', parent=root_module['ns3::Object'])
     ## wifi-remote-station-manager.h (module 'wifi'): ns3::WifiRemoteStationManager [class]
@@ -1865,6 +1865,10 @@
     cls.add_method('NotifyRxStartNow', 
                    'void', 
                    [param('ns3::Time', 'duration')])
+    ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
@@ -1873,6 +1877,10 @@
     cls.add_method('NotifyTxStartNow', 
                    'void', 
                    [param('ns3::Time', 'duration')])
+    ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::NotifyWakeupNow() [member function]
+    cls.add_method('NotifyWakeupNow', 
+                   'void', 
+                   [])
     ## dcf-manager.h (module 'wifi'): void ns3::DcfManager::RequestAccess(ns3::DcfState * state) [member function]
     cls.add_method('RequestAccess', 
                    'void', 
@@ -4130,15 +4138,25 @@
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySleep() [member function]
+    cls.add_method('NotifySleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifySwitchingStart(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStart', 
                    'void', 
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration, double txPowerDbm) [member function]
     cls.add_method('NotifyTxStart', 
                    'void', 
-                   [param('ns3::Time', 'duration')], 
+                   [param('ns3::Time', 'duration'), param('double', 'txPowerDbm')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhyListener::NotifyWakeup() [member function]
+    cls.add_method('NotifyWakeup', 
+                   'void', 
+                   [], 
                    is_pure_virtual=True, is_virtual=True)
     return
 
@@ -5707,10 +5725,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -5721,25 +5739,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -5856,20 +5874,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
@@ -7618,6 +7636,11 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): bool ns3::WifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -7670,10 +7693,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_pure_virtual=True, is_virtual=True)
-    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetChannelBonding(bool channelbonding) [member function]
     cls.add_method('SetChannelBonding', 
@@ -7725,6 +7753,11 @@
                    'void', 
                    [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
                    is_pure_virtual=True, is_virtual=True)
+    ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -7780,6 +7813,10 @@
     cls.add_method('IsStateRx', 
                    'bool', 
                    [])
+    ## wifi-phy-state-helper.h (module 'wifi'): bool ns3::WifiPhyStateHelper::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [])
     ## wifi-phy-state-helper.h (module 'wifi'): bool ns3::WifiPhyStateHelper::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -7808,6 +7845,10 @@
     cls.add_method('SwitchFromRxEndOk', 
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'packet'), param('double', 'snr'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')])
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchFromSleep(ns3::Time duration) [member function]
+    cls.add_method('SwitchFromSleep', 
+                   'void', 
+                   [param('ns3::Time', 'duration')])
     ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchMaybeToCcaBusy(ns3::Time duration) [member function]
     cls.add_method('SwitchMaybeToCcaBusy', 
                    'void', 
@@ -7820,10 +7861,14 @@
     cls.add_method('SwitchToRx', 
                    'void', 
                    [param('ns3::Time', 'rxDuration')])
-    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToTx(ns3::Time txDuration, ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode txMode, ns3::WifiPreamble preamble, uint8_t txPower) [member function]
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToSleep() [member function]
+    cls.add_method('SwitchToSleep', 
+                   'void', 
+                   [])
+    ## wifi-phy-state-helper.h (module 'wifi'): void ns3::WifiPhyStateHelper::SwitchToTx(ns3::Time txDuration, ns3::Ptr<ns3::Packet const> packet, double txPowerDbm, ns3::WifiTxVector txVector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SwitchToTx', 
                    'void', 
-                   [param('ns3::Time', 'txDuration'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'txMode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPower')])
+                   [param('ns3::Time', 'txDuration'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiTxVector', 'txVector'), param('ns3::WifiPreamble', 'preamble')])
     ## wifi-phy-state-helper.h (module 'wifi'): ns3::WifiPhyStateHelper::m_stateLogger [variable]
     cls.add_instance_attribute('m_stateLogger', 'ns3::TracedCallback< ns3::Time, ns3::Time, ns3::WifiPhy::State, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', is_const=False)
     return
@@ -8522,6 +8567,11 @@
                    'bool', 
                    [], 
                    is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateSleep() [member function]
+    cls.add_method('IsStateSleep', 
+                   'bool', 
+                   [], 
+                   is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): bool ns3::YansWifiPhy::IsStateSwitching() [member function]
     cls.add_method('IsStateSwitching', 
                    'bool', 
@@ -8542,10 +8592,15 @@
                    'void', 
                    [param('ns3::WifiPhyListener *', 'listener')], 
                    is_virtual=True)
-    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, ns3::WifiTxVector txvector) [member function]
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::ResumeFromSleep() [member function]
+    cls.add_method('ResumeFromSleep', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SendPacket(ns3::Ptr<ns3::Packet const> packet, ns3::WifiTxVector txvector, ns3::WifiPreamble preamble) [member function]
     cls.add_method('SendPacket', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('ns3::WifiTxVector', 'txvector')], 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet'), param('ns3::WifiTxVector', 'txvector'), param('ns3::WifiPreamble', 'preamble')], 
                    is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetCcaMode1Threshold(double threshold) [member function]
     cls.add_method('SetCcaMode1Threshold', 
@@ -8633,6 +8688,11 @@
     cls.add_method('SetRxNoiseFigure', 
                    'void', 
                    [param('double', 'noiseFigureDb')])
+    ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetSleepMode() [member function]
+    cls.add_method('SetSleepMode', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
     ## yans-wifi-phy.h (module 'wifi'): void ns3::YansWifiPhy::SetStbc(bool stbc) [member function]
     cls.add_method('SetStbc', 
                    'void', 
@@ -11201,6 +11261,10 @@
                    'bool', 
                    [], 
                    is_const=True)
+    ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySleepNow() [member function]
+    cls.add_method('NotifySleepNow', 
+                   'void', 
+                   [])
     ## mac-low.h (module 'wifi'): void ns3::MacLow::NotifySwitchingStartNow(ns3::Time duration) [member function]
     cls.add_method('NotifySwitchingStartNow', 
                    'void', 
diff -Naur ns-3.20/src/wifi/doc/wifi.rst ns-3.21/src/wifi/doc/wifi.rst
--- ns-3.20/src/wifi/doc/wifi.rst	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/doc/wifi.rst	2014-09-17 20:03:14.000000000 -0700
@@ -18,7 +18,8 @@
 |ns3| provides models for these aspects of 802.11:
 
 * basic 802.11 DCF with **infrastructure** and **adhoc** modes
-* **802.11a**, **802.11b** and **802.11g** physical layers
+* **802.11a**, **802.11b**, **802.11g** and **802.11n** (both 2.4 and 5 GHz bands) physical layers
+* **MSDU aggregation** extension of 802.11n
 * QoS-based EDCA and queueing extensions of **802.11e**
 * the ability to use different propagation loss models and propagation delay models,
   please see the chapter on :ref:`Propagation` for more detail
@@ -28,7 +29,7 @@
 
 The set of 802.11 models provided in |ns3| attempts to provide an accurate
 MAC-level implementation of the 802.11 specification and to provide a
-not-so-slow PHY-level model of the 802.11a specification.
+not-so-slow PHY-level model of the 802.11a specification and a not-so-slow PHY-level model of the 802.11a/b/g/n specifications.
 
 In |ns3|, nodes can have multiple WifiNetDevices on separate channels, and the
 WifiNetDevice can coexist with other device types; this removes an architectural
@@ -71,7 +72,7 @@
 These three MAC high models share a common parent in
 ``ns3::RegularWifiMac``, which exposes, among other MAC
 configuration, an attribute ``QosSupported`` that allows
-configuration of 802.11e/WMM-style QoS support and an attribute ``HtSupported`` that allows configuration og 802.11n High Throughput style support.
+configuration of 802.11e/WMM-style QoS support and an attribute ``HtSupported`` that allows configuration of 802.11n High Throughput style support.
 
 MAC low layer
 ==============
@@ -87,7 +88,7 @@
    and for transmission of frames (e.g., of type Management)
    that the standard says should access the medium using the DCF. 
    ``ns3::EdcaTxopN`` is is used by QoS-enabled high MACs and also
-   performs QoS operations like 802.11n-style MSDU aggregation.
+   performs 802.11n-style MSDU aggregation.
 
 Rate control algorithms
 =======================
@@ -148,10 +149,9 @@
   configuration of WifiPhy is the error rate model, which is the one that actually 
   calculates the probability of successfully decoding the frame based on the signal.
 * Configure WifiMac: this step is more on related to the architecture and device level.
-  The users configure the wifi architecture (i.e. ad-hoc or ap-sta) and whether QoS
-  is supported or not.
+  The users configure the wifi architecture (i.e. ad-hoc or ap-sta) and whether QoS (802.11e) and/or HT (802.11n) features are supported or not.
 * Create WifiDevice: at this step, users configure the desired wifi standard
-  (e.g. **802.11b**, **802.11g**, or **802.11a**) and rate control algorithm
+  (e.g. **802.11b**, **802.11g**, **802.11a** or **802.11n**) and rate control algorithm
 * Configure mobility: finally, mobility model is (usually) required before WifiNetDevice
   can be used.
 
@@ -171,11 +171,11 @@
 
 to get the defaults.  Specifically, the default is a channel model with a
 propagation delay equal to a constant, the speed of light (``ns3::ConstantSpeedPropagationDelayModel``),
-and a propagation loss based on a default log distance model (``ns3::LogDistancePropagationLossModel``).
+and a propagation loss based on a default log distance model (``ns3::LogDistancePropagationLossModel``)), using a default exponent of 3.
 Please note that the default log distance model is configured with a reference
 loss of 46.6777 dB at reference distance of 1m.  The reference loss of 46.6777 dB
 was calculated using Friis propagation loss model at 5.15 GHz.  The reference loss
-must be changed if **802.11b** or **802.11g** are used since they operate at 2.4 Ghz.
+must be changed if **802.11b**, **802.11g** or **802.11n** (at 2.4 GHz) are used since they operate at 2.4 Ghz.
 
 Note the distinction above in creating a helper object vs. an actual simulation
 object.  In |ns3|, helper objects (used at the helper API only) are created on
@@ -220,9 +220,13 @@
 prepared the YansWifiPhyHelper by telling it which channel it is connected to.
 The Phy objects are created in the next step.
 
-To enable 802.11n High Throughput style parameters the following line of code could be used::
+802.11n PHY layer can use either 20 or 40 MHz channel width, and either long (800 ns) or short (400 ns) OFDM guard intervals. To configure those parameters, the following lines of code could be used (in this example, it configures a 40 MHz channel width with a short guard interval)::
 
+ wifiPhyHelper.Set (« ChannelBonding,BooleanValue(true));
  wifiPhyHelper.Set ("ShortGuardEnabled",BooleanValue(true));
+
+Furthermore, 802.11n provides an optional mode (GreenField mode) to reduce preamble durations and which is only compatible with 802.11n devices. This mode is enabled as follows::
+
  wifiPhyHelper.Set ("GreenfieldEnabled",BooleanValue(true));
 
 WifiMacHelper
@@ -231,7 +235,7 @@
 The next step is to configure the MAC model.
 We use WifiMacHelper to accomplish this.
 WifiMacHelper takes care of both the MAC low model and MAC high model.
-A user must decide if 802.11/WMM-style QoS support is required.
+A user must decide if 802.11/WMM-style QoS and/or 802.11n-style High throughput (HT) support is required.
 
 NqosWifiMacHelper and QosWifiMacHelper
 ++++++++++++++++++++++++++++++++++++++
@@ -241,9 +245,9 @@
 configure MAC parameters like type of MAC.  
 
 The former, ``ns3::NqosWifiMacHelper``, supports creation of MAC
-instances that do not have 802.11e/WMM-style QoS support enabled. 
+instances that do not have 802.11e/WMM-style QoS nor 802.11n-style High throughput (HT) support enabled. 
 
-For example the following user code configures a non-QoS MAC that
+For example the following user code configures a non-QoS and non-HT MAC that
 will be a non-AP STA in an infrastructure network where the AP has
 SSID ``ns-3-ssid``::
 
@@ -255,25 +259,16 @@
 
 To create MAC instances with QoS support enabled,
 ``ns3::QosWifiMacHelper`` is used in place of
-``ns3::NqosWifiMacHelper``.  This object can be also used to set:
-
-* an MSDU aggregator for a particular Access Category (AC) in order to use 
-  802.11n MSDU aggregation feature;
-* block ack parameters like threshold (number of packets for which block ack
-  mechanism should be used) and inactivity timeout.
+``ns3::NqosWifiMacHelper``.
 
 The following code shows an example use of ``ns3::QosWifiMacHelper`` to 
-create an AP with QoS enabled, aggregation on AC_VO, and Block Ack on AC_BE::
+create an AP with QoS enabled::
 
   QosWifiMacHelper wifiMacHelper = QosWifiMacHelper::Default ();
   wifiMacHelper.SetType ("ns3::ApWifiMac",
                          "Ssid", SsidValue (ssid),
                          "BeaconGeneration", BooleanValue (true),
                          "BeaconInterval", TimeValue (Seconds (2.5)));
-  wifiMacHelper.SetMsduAggregatorForAc (AC_VO, "ns3::MsduStandardAggregator",
-                                        "MaxAmsduSize", UintegerValue (3839));
-  wifiMacHelper.SetBlockAckThresholdForAc (AC_BE, 10);
-  wifiMacHelper.SetBlockAckInactivityTimeoutForAc (AC_BE, 5);
 
 With QoS-enabled MAC models it is possible to work with traffic belonging to
 four different Access Categories (ACs): **AC_VO** for voice traffic,
@@ -291,10 +286,15 @@
 
 The ``ns3::HtWifiMacHelper`` configures an
 object factory to create instances of a ``ns3::WifiMac``. It is used to
-supports creation of MAC instances that have 802.11n-style High throughput (Ht) and QoS support enabled.  
+supports creation of MAC instances that have 802.11n-style High throughput (HT) and QoS support enabled. In particular, this object can be also used to set:
+
+* an MSDU aggregator for a particular Access Category (AC) in order to use 
+  802.11n MSDU aggregation feature;
+* block ack parameters like threshold (number of packets for which block ack
+  mechanism should be used) and inactivity timeout.
 
 For example the following user code configures a HT MAC that
-will be a non-AP STA in an infrastructure network where the AP has
+will be a non-AP STA with QoS enabled, aggregation on AC_VO, and Block Ack on AC_BE, in an infrastructure network where the AP has
 SSID ``ns-3-ssid``::
 
     HtWifiMacHelper wifiMacHelper = HtWifiMacHelper::Default ();
@@ -303,6 +303,11 @@
                           "Ssid", SsidValue (ssid),
                           "ActiveProbing", BooleanValue (false));
 
+    wifiMacHelper.SetMsduAggregatorForAc (AC_VO, "ns3::MsduStandardAggregator",
+                                          "MaxAmsduSize", UintegerValue (3839));
+    wifiMacHelper.SetBlockAckThresholdForAc (AC_BE, 10);
+    wifiMacHelper.SetBlockAckInactivityTimeoutForAc (AC_BE, 5);
+
 This object can be also used to set in the same way as ``ns3::QosWifiMacHelper``.
 
 WifiHelper
@@ -472,23 +477,25 @@
 be successfully received. See `"Yet Another Network Simulator"
 <http://cutebugs.net/files/wns2-yans.pdf>`_ for more details.
 
-The PHY layer can be in one of three states:
+The PHY layer can be in one of five states:
 
 #. TX: the PHY is currently transmitting a signal on behalf of its associated
    MAC
 #. RX: the PHY is synchronized on a signal and is waiting until it has received
    its last bit to forward it to the MAC.
-#. IDLE: the PHY is not in the TX or RX states.
+#. IDLE: the PHY is not in the TX, RX, or CCA BUSY states.
+#. CCA Busy: the PHY is not in TX or RX state but the measured energy is higher than the energy detection threshold.
+#. SLEEP: the PHY is in a power save mode and cannot send nor receive frames.
 
 When the first bit of a new packet is received while the PHY is not IDLE (that
 is, it is already synchronized on the reception of another earlier packet or it
 is sending data itself), the received packet is dropped. Otherwise, if the PHY
-is IDLE, we calculate the received energy of the first bit of this new signal
+is IDLE or CCA Busy, we calculate the received energy of the first bit of this new signal
 and compare it against our Energy Detection threshold (as defined by the Clear
 Channel Assessment function mode 1). If the energy of the packet k is higher,
 then the PHY moves to RX state and schedules an event when the last bit of the
-packet is expected to be received. Otherwise, the PHY stays in IDLE state and
-drops the packet.
+packet is expected to be received. Otherwise, the PHY stays in IDLE 
+or CCA Busy state and drops the packet.
 
 The energy of the received signal is assumed to be zero outside of the reception
 interval of packet k and is calculated from the transmission power with a
@@ -692,6 +699,10 @@
 
 * 802.11g does not support 9 microseconds slot
 * PHY_RXSTART is not supported
+* 802.11e TXOP is not supported
+* 802.11n MIMO is not supported
+* MPDU aggregation is not supported
+
 
 Wifi Tracing
 ************
diff -Naur ns-3.20/src/wifi/examples/wifi-phy-test.cc ns-3.21/src/wifi/examples/wifi-phy-test.cc
--- ns-3.20/src/wifi/examples/wifi-phy-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/examples/wifi-phy-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -73,7 +73,7 @@
   WifiTxVector txVector;
   txVector.SetTxPowerLevel (m_input.txPowerLevel);
   txVector.SetMode (mode);
-  m_tx->SendPacket (p, mode, WIFI_PREAMBLE_SHORT, txVector);
+  m_tx->SendPacket (p, txVector, WIFI_PREAMBLE_SHORT);
 }
 
 void
@@ -178,8 +178,7 @@
   WifiTxVector txVector;
   txVector.SetTxPowerLevel (m_input.txPowerLevelA);
   txVector.SetMode (WifiMode (m_input.txModeA));
-  m_txA->SendPacket (p, WifiMode (m_input.txModeA),
-                     WIFI_PREAMBLE_SHORT, txVector);
+  m_txA->SendPacket (p, txVector, WIFI_PREAMBLE_SHORT);
 }
 
 void
@@ -190,8 +189,7 @@
   WifiTxVector txVector;
   txVector.SetTxPowerLevel (m_input.txPowerLevelB);
   txVector.SetMode (WifiMode (m_input.txModeB));
-  m_txB->SendPacket (p, WifiMode (m_input.txModeB),
-                     WIFI_PREAMBLE_SHORT, txVector);
+  m_txB->SendPacket (p, txVector, WIFI_PREAMBLE_SHORT);
 }
 
 void
diff -Naur ns-3.20/src/wifi/model/dcf-manager.cc ns-3.21/src/wifi/model/dcf-manager.cc
--- ns-3.20/src/wifi/model/dcf-manager.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/dcf-manager.cc	2014-09-17 20:03:14.000000000 -0700
@@ -239,7 +239,7 @@
   {
     m_dcf->NotifyRxEndErrorNow ();
   }
-  virtual void NotifyTxStart (Time duration)
+  virtual void NotifyTxStart (Time duration, double txPowerDbm)
   {
     m_dcf->NotifyTxStartNow (duration);
   }
@@ -251,6 +251,14 @@
   {
     m_dcf->NotifySwitchingStartNow (duration);
   }
+  virtual void NotifySleep (void)
+  {
+    m_dcf->NotifySleepNow ();
+  }
+  virtual void NotifyWakeup (void)
+  {
+    m_dcf->NotifyWakeupNow ();
+  }
 private:
   ns3::DcfManager *m_dcf;  //!< DcfManager to forward events to
 };
@@ -275,6 +283,7 @@
     m_lastSwitchingStart (MicroSeconds (0)),
     m_lastSwitchingDuration (MicroSeconds (0)),
     m_rxing (false),
+    m_sleeping (false),
     m_slotTimeUs (0),
     m_sifs (Seconds (0.0)),
     m_phyListener (0),
@@ -423,6 +432,9 @@
 DcfManager::RequestAccess (DcfState *state)
 {
   NS_LOG_FUNCTION (this << state);
+  // Deny access if in sleep mode
+  if (m_sleeping)
+    return;
   UpdateBackoff ();
   NS_ASSERT (!state->IsAccessRequested ());
   state->NotifyAccessRequested ();
@@ -744,6 +756,38 @@
 }
 
 void
+DcfManager::NotifySleepNow (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_sleeping = true;
+  // Cancel timeout
+  if (m_accessTimeout.IsRunning ())
+    {
+      m_accessTimeout.Cancel ();
+    }
+}
+
+void
+DcfManager::NotifyWakeupNow (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_sleeping = false;
+  // Reset backoffs
+  for (States::iterator i = m_states.begin (); i != m_states.end (); i++)
+    {
+      DcfState *state = *i;
+      uint32_t remainingSlots = state->GetBackoffSlots ();
+      if (remainingSlots > 0)
+        {
+          state->UpdateBackoffSlotsNow (remainingSlots, Simulator::Now ());
+          NS_ASSERT (state->GetBackoffSlots () == 0);
+        }
+      state->ResetCw ();
+      state->m_accessRequested = false;
+    }
+}
+
+void
 DcfManager::NotifyNavResetNow (Time duration)
 {
   NS_LOG_FUNCTION (this << duration);
diff -Naur ns-3.20/src/wifi/model/dcf-manager.h ns-3.21/src/wifi/model/dcf-manager.h
--- ns-3.20/src/wifi/model/dcf-manager.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/dcf-manager.h	2014-09-17 20:03:14.000000000 -0700
@@ -335,6 +335,14 @@
    */
   void NotifySwitchingStartNow (Time duration);
   /**
+   * Notify the DCF that the device has been put in sleep mode.
+   */
+  void NotifySleepNow (void);
+  /**
+   * Notify the DCF that the device has been resumed from sleep mode.
+   */
+  void NotifyWakeupNow (void);
+  /**
    * \param duration the value of the received NAV.
    *
    * Called at end of rx
@@ -487,6 +495,7 @@
   Time m_lastSwitchingStart;
   Time m_lastSwitchingDuration;
   bool m_rxing;
+  bool m_sleeping;
   Time m_eifsNoDifs;
   EventId m_accessTimeout;
   uint32_t m_slotTimeUs;
diff -Naur ns-3.20/src/wifi/model/mac-low.cc ns-3.21/src/wifi/model/mac-low.cc
--- ns-3.20/src/wifi/model/mac-low.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/mac-low.cc	2014-09-17 20:03:14.000000000 -0700
@@ -270,7 +270,7 @@
   virtual void NotifyRxEndError (void)
   {
   }
-  virtual void NotifyTxStart (Time duration)
+  virtual void NotifyTxStart (Time duration, double txPowerDbm)
   {
   }
   virtual void NotifyMaybeCcaBusyStart (Time duration)
@@ -280,6 +280,13 @@
   {
     m_macLow->NotifySwitchingStartNow (duration);
   }
+  virtual void NotifySleep (void)
+  {
+    m_macLow->NotifySleepNow ();
+  }
+  virtual void NotifyWakeup (void)
+  {
+  }
 private:
   ns3::MacLow *m_macLow;
 };
@@ -653,6 +660,22 @@
 }
 
 void
+MacLow::NotifySleepNow (void)
+{
+  NS_LOG_DEBUG ("Device in sleep mode. Cancelling MAC pending events");
+  m_stationManager->Reset ();
+  CancelAllEvents ();
+  if (m_navCounterResetCtsMissed.IsRunning ())
+    {
+      m_navCounterResetCtsMissed.Cancel ();
+    }
+  m_lastNavStart = Simulator::Now ();
+  m_lastNavDuration = Seconds (0);
+  m_currentPacket = 0;
+  m_listener = 0;
+}
+
+void
 MacLow::ReceiveOk (Ptr<Packet> packet, double rxSnr, WifiMode txMode, WifiPreamble preamble)
 {
   NS_LOG_FUNCTION (this << packet << rxSnr << txMode << preamble);
@@ -1249,7 +1272,7 @@
                 ", mode=" << txVector.GetMode() <<
                 ", duration=" << hdr->GetDuration () <<
                 ", seq=0x" << std::hex << m_currentHdr.GetSequenceControl () << std::dec);
-  m_phy->SendPacket (packet, txVector.GetMode(), preamble, txVector);
+  m_phy->SendPacket (packet, txVector, preamble);
 }
 
 void
diff -Naur ns-3.20/src/wifi/model/mac-low.h ns-3.21/src/wifi/model/mac-low.h
--- ns-3.20/src/wifi/model/mac-low.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/mac-low.h	2014-09-17 20:03:14.000000000 -0700
@@ -643,6 +643,12 @@
    */
   void NotifySwitchingStartNow (Time duration);
   /**
+   * This method is typically invoked by the PhyMacLowListener to notify
+   * the MAC layer that the device has been put into sleep mode. When the device is put
+   * into sleep mode, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
+   */
+  void NotifySleepNow (void);
+  /**
    * \param respHdr Add block ack response from originator (action
    * frame).
    * \param originator Address of peer station involved in block ack
diff -Naur ns-3.20/src/wifi/model/wifi-phy.cc ns-3.21/src/wifi/model/wifi-phy.cc
--- ns-3.20/src/wifi/model/wifi-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/wifi-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -1408,6 +1408,8 @@
       return (os << "RX");
     case WifiPhy::SWITCHING:
       return (os << "SWITCHING");
+    case WifiPhy::SLEEP:
+      return (os << "SLEEP");
     default:
       NS_FATAL_ERROR ("Invalid WifiPhy state");
       return (os << "INVALID");
diff -Naur ns-3.20/src/wifi/model/wifi-phy.h ns-3.21/src/wifi/model/wifi-phy.h
--- ns-3.20/src/wifi/model/wifi-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/wifi-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -73,6 +73,7 @@
   virtual void NotifyRxEndError (void) = 0;
   /**
    * \param duration the expected transmission duration.
+   * \param txPowerDbm the nominal tx power in dBm
    *
    * We are about to send the first bit of the packet.
    * We do not send any event to notify the end of
@@ -80,7 +81,7 @@
    * channel implicitely reverts to the idle state
    * unless they have received a cca busy report.
    */
-  virtual void NotifyTxStart (Time duration) = 0;
+  virtual void NotifyTxStart (Time duration, double txPowerDbm) = 0;
 
   /**
    * \param duration the expected busy duration.
@@ -106,6 +107,14 @@
    * channel implicitely reverts to the idle or busy states.
    */
   virtual void NotifySwitchingStart (Time duration) = 0;
+  /**
+   * Notify listeners that we went to sleep
+   */
+  virtual void NotifySleep (void) = 0;
+  /**
+   * Notify listeners that we woke up
+   */
+  virtual void NotifyWakeup (void) = 0;
 };
 
 
@@ -141,7 +150,11 @@
     /**
      * The PHY layer is switching to other channel.
      */
-    SWITCHING
+    SWITCHING,
+    /**
+     * The PHY layer is sleeping.
+     */
+    SLEEP
   };
 
   /**
@@ -193,11 +206,12 @@
   /**
    * \param packet the packet to send
    * \param mode the transmission mode to use to send this packet
+   * \param txvector the txvector that has tx parameters such as mode, the transmission mode to use to send
+   *        this packet, and txPowerLevel, a power level to use to send this packet. The real transmission
+   *        power is calculated as txPowerMin + txPowerLevel * (txPowerMax - txPowerMin) / nTxLevels
    * \param preamble the type of preamble to use to send this packet.
-   * \param txvector the txvector that has tx parameters as txPowerLevel a power level to use to send this packet. The real
-   *        transmission power is calculated as txPowerMin + txPowerLevel * (txPowerMax - txPowerMin) / nTxLevels
    */
-  virtual void SendPacket (Ptr<const Packet> packet, WifiMode mode, enum WifiPreamble preamble, WifiTxVector txvector) = 0;
+  virtual void SendPacket (Ptr<const Packet> packet, WifiTxVector txvector, enum WifiPreamble preamble) = 0;
 
   /**
    * \param listener the new listener
@@ -208,6 +222,15 @@
   virtual void RegisterListener (WifiPhyListener *listener) = 0;
 
   /**
+   * Put in sleep mode.
+   */
+  virtual void SetSleepMode (void) = 0;
+  /**
+   * Resume from sleep mode.
+   */
+  virtual void ResumeFromSleep (void) = 0;
+
+  /**
    * \return true of the current state of the PHY layer is WifiPhy::IDLE, false otherwise.
    */
   virtual bool IsStateIdle (void) = 0;
@@ -232,6 +255,10 @@
    */
   virtual bool IsStateSwitching (void) = 0;
   /**
+   * \return true if the current state of the PHY layer is WifiPhy::SLEEP, false otherwise.
+   */
+  virtual bool IsStateSleep (void) = 0;
+  /**
    * \return the amount of time since the current state has started.
    */
   virtual Time GetStateDuration (void) = 0;
diff -Naur ns-3.20/src/wifi/model/wifi-phy-state-helper.cc ns-3.21/src/wifi/model/wifi-phy-state-helper.cc
--- ns-3.20/src/wifi/model/wifi-phy-state-helper.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/wifi-phy-state-helper.cc	2014-09-17 20:03:14.000000000 -0700
@@ -51,6 +51,7 @@
 
 WifiPhyStateHelper::WifiPhyStateHelper ()
   : m_rxing (false),
+    m_sleeping (false),
     m_endTx (Seconds (0)),
     m_endRx (Seconds (0)),
     m_endCcaBusy (Seconds (0)),
@@ -59,6 +60,7 @@
     m_startRx (Seconds (0)),
     m_startCcaBusy (Seconds (0)),
     m_startSwitching (Seconds (0)),
+    m_startSleep (Seconds (0)),
     m_previousStateChangeTime (Seconds (0))
 {
   NS_LOG_FUNCTION (this);
@@ -110,6 +112,11 @@
 {
   return (GetState () == WifiPhy::SWITCHING);
 }
+bool
+WifiPhyStateHelper::IsStateSleep (void)
+{
+  return (GetState () == WifiPhy::SLEEP);
+}
 
 
 
@@ -141,6 +148,10 @@
     case WifiPhy::IDLE:
       retval = Seconds (0);
       break;
+    case WifiPhy::SLEEP:
+      NS_FATAL_ERROR ("Cannot determine when the device will wake up.");
+      retval = Seconds (0);
+      break;
     default:
       NS_FATAL_ERROR ("Invalid WifiPhy state.");
       retval = Seconds (0);
@@ -159,7 +170,11 @@
 enum WifiPhy::State
 WifiPhyStateHelper::GetState (void)
 {
-  if (m_endTx > Simulator::Now ())
+  if (m_sleeping)
+    {
+      return WifiPhy::SLEEP;
+    }
+  else if (m_endTx > Simulator::Now ())
     {
       return WifiPhy::TX;
     }
@@ -183,11 +198,11 @@
 
 
 void
-WifiPhyStateHelper::NotifyTxStart (Time duration)
+WifiPhyStateHelper::NotifyTxStart (Time duration, double txPowerDbm)
 {
   for (Listeners::const_iterator i = m_listeners.begin (); i != m_listeners.end (); i++)
     {
-      (*i)->NotifyTxStart (duration);
+      (*i)->NotifyTxStart (duration, txPowerDbm);
     }
 }
 void
@@ -230,6 +245,23 @@
       (*i)->NotifySwitchingStart (duration);
     }
 }
+void
+WifiPhyStateHelper::NotifySleep (void)
+{
+  for (Listeners::const_iterator i = m_listeners.begin (); i != m_listeners.end (); i++)
+    {
+      (*i)->NotifySleep ();
+    }
+}
+void
+WifiPhyStateHelper::NotifyWakeup (void)
+{
+  for (Listeners::const_iterator i = m_listeners.begin (); i != m_listeners.end (); i++)
+    {
+      (*i)->NotifyWakeup ();
+    }
+}
+
 
 void
 WifiPhyStateHelper::LogPreviousIdleAndCcaBusyStates (void)
@@ -252,11 +284,10 @@
 }
 
 void
-WifiPhyStateHelper::SwitchToTx (Time txDuration, Ptr<const Packet> packet, WifiMode txMode,
-                                WifiPreamble preamble, uint8_t txPower)
+WifiPhyStateHelper::SwitchToTx (Time txDuration, Ptr<const Packet> packet, double txPowerDbm,
+                                WifiTxVector txVector, WifiPreamble preamble)
 {
-  m_txTrace (packet, txMode, preamble, txPower);
-  NotifyTxStart (txDuration);
+  m_txTrace (packet, txVector.GetMode(), preamble, txVector.GetTxPowerLevel());
   Time now = Simulator::Now ();
   switch (GetState ())
     {
@@ -279,6 +310,7 @@
       LogPreviousIdleAndCcaBusyStates ();
       break;
     case WifiPhy::SWITCHING:
+    case WifiPhy::SLEEP:
     default:
       NS_FATAL_ERROR ("Invalid WifiPhy state.");
       break;
@@ -287,13 +319,13 @@
   m_previousStateChangeTime = now;
   m_endTx = now + txDuration;
   m_startTx = now;
+  NotifyTxStart (txDuration, txPowerDbm);
 }
 void
 WifiPhyStateHelper::SwitchToRx (Time rxDuration)
 {
   NS_ASSERT (IsStateIdle () || IsStateCcaBusy ());
   NS_ASSERT (!m_rxing);
-  NotifyRxStart (rxDuration);
   Time now = Simulator::Now ();
   switch (GetState ())
     {
@@ -310,6 +342,7 @@
     case WifiPhy::SWITCHING:
     case WifiPhy::RX:
     case WifiPhy::TX:
+    case WifiPhy::SLEEP:
       NS_FATAL_ERROR ("Invalid WifiPhy state.");
       break;
     }
@@ -317,13 +350,13 @@
   m_rxing = true;
   m_startRx = now;
   m_endRx = now + rxDuration;
+  NotifyRxStart (rxDuration);
   NS_ASSERT (IsStateRx ());
 }
 
 void
 WifiPhyStateHelper::SwitchToChannelSwitching (Time switchingDuration)
 {
-  NotifySwitchingStart (switchingDuration);
   Time now = Simulator::Now ();
   switch (GetState ())
     {
@@ -347,6 +380,7 @@
       break;
     case WifiPhy::TX:
     case WifiPhy::SWITCHING:
+    case WifiPhy::SLEEP:
     default:
       NS_FATAL_ERROR ("Invalid WifiPhy state.");
       break;
@@ -361,6 +395,7 @@
   m_previousStateChangeTime = now;
   m_startSwitching = now;
   m_endSwitching = now + switchingDuration;
+  NotifySwitchingStart (switchingDuration);
   NS_ASSERT (IsStateSwitching ());
 }
 
@@ -410,6 +445,8 @@
     {
     case WifiPhy::SWITCHING:
       break;
+    case WifiPhy::SLEEP:
+      break;
     case WifiPhy::IDLE:
       LogPreviousIdleAndCcaBusyStates ();
       break;
@@ -426,5 +463,48 @@
     }
   m_endCcaBusy = std::max (m_endCcaBusy, now + duration);
 }
+void
+WifiPhyStateHelper::SwitchToSleep (void)
+{
+  Time now = Simulator::Now ();
+  switch (GetState ())
+    {
+    case WifiPhy::IDLE:
+      LogPreviousIdleAndCcaBusyStates ();
+      break;
+    case WifiPhy::CCA_BUSY:
+      {
+        Time ccaStart = Max (m_endRx, m_endTx);
+        ccaStart = Max (ccaStart, m_startCcaBusy);
+        ccaStart = Max (ccaStart, m_endSwitching);
+        m_stateLogger (ccaStart, now - ccaStart, WifiPhy::CCA_BUSY);
+      } break;
+    case WifiPhy::RX:
+    case WifiPhy::SWITCHING:
+    case WifiPhy::TX:
+    case WifiPhy::SLEEP:
+      NS_FATAL_ERROR ("Invalid WifiPhy state.");
+      break;
+    }
+  m_previousStateChangeTime = now;
+  m_sleeping = true;
+  m_startSleep = now;
+  NotifySleep ();
+  NS_ASSERT (IsStateSleep ());
+}
+void
+WifiPhyStateHelper::SwitchFromSleep (Time duration)
+{
+  NS_ASSERT (IsStateSleep ());
+  Time now = Simulator::Now ();
+  m_stateLogger (m_startSleep, now - m_startSleep, WifiPhy::SLEEP);
+  m_previousStateChangeTime = now;
+  m_sleeping = false;
+  NotifyWakeup ();
+  // update m_endCcaBusy after the sleep period
+  m_endCcaBusy = std::max (m_endCcaBusy, now + duration);
+  if (m_endCcaBusy > now)
+    NotifyMaybeCcaBusyStart (m_endCcaBusy - now);
+}
 
 } // namespace ns3
diff -Naur ns-3.20/src/wifi/model/wifi-phy-state-helper.h ns-3.21/src/wifi/model/wifi-phy-state-helper.h
--- ns-3.20/src/wifi/model/wifi-phy-state-helper.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/wifi-phy-state-helper.h	2014-09-17 20:03:14.000000000 -0700
@@ -100,6 +100,12 @@
    */
   bool IsStateSwitching (void);
   /**
+   * Check whether the current state is SLEEP.
+   *
+   * \return true if the current state is SLEEP, false otherwise
+   */
+  bool IsStateSleep (void);
+  /**
    * Return the elapsed time of the current state.
    *
    * \return the elapsed time of the current state
@@ -123,11 +129,11 @@
    *
    * \param txDuration the duration of the TX
    * \param packet the packet
-   * \param txMode the transmission mode of the packet
+   * \param txPowerDbm the nominal tx power in dBm
+   * \param txVector the tx vector of the packet
    * \param preamble the preamble of the packet
-   * \param txPower the transmission power
    */
-  void SwitchToTx (Time txDuration, Ptr<const Packet> packet, WifiMode txMode, WifiPreamble preamble, uint8_t txPower);
+  void SwitchToTx (Time txDuration, Ptr<const Packet> packet, double txPowerDbm, WifiTxVector txVector, WifiPreamble preamble);
   /**
    * Switch state to RX for the given duration.
    *
@@ -162,6 +168,16 @@
    * \param duration the duration of CCA busy state
    */
   void SwitchMaybeToCcaBusy (Time duration);
+  /**
+   * Switch to sleep mode.
+   */
+  void SwitchToSleep (void);
+  /**
+   * Switch from sleep mode.
+   *
+   * \param duration the duration of CCA busy state
+   */
+  void SwitchFromSleep (Time duration);
 
   TracedCallback<Time,Time,enum WifiPhy::State> m_stateLogger;
 private:
@@ -179,9 +195,9 @@
    * Notify all WifiPhyListener that the transmission has started for the given duration.
    *
    * \param duration the duration of the transmission
+   * \param txPowerDbm the nominal tx power in dBm
    */
-  void NotifyTxStart (Time duration);
-  //void NotifyWakeup (void);
+  void NotifyTxStart (Time duration, double txPowerDbm);
   /**
    * Notify all WifiPhyListener that the reception has started for the given duration.
    *
@@ -210,11 +226,20 @@
    */
   void NotifySwitchingStart (Time duration);
   /**
+   * Notify all WifiPhyListener that we are going to sleep
+   */
+  void NotifySleep (void);
+  /**
+   * Notify all WifiPhyListener that we woke up
+   */
+  void NotifyWakeup (void);
+  /**
    * Switch the state from RX.
    */
   void DoSwitchFromRx (void);
 
   bool m_rxing;
+  bool m_sleeping;
   Time m_endTx;
   Time m_endRx;
   Time m_endCcaBusy;
@@ -223,6 +248,7 @@
   Time m_startRx;
   Time m_startCcaBusy;
   Time m_startSwitching;
+  Time m_startSleep;
   Time m_previousStateChangeTime;
 
   Listeners m_listeners;
diff -Naur ns-3.20/src/wifi/model/yans-wifi-phy.cc ns-3.21/src/wifi/model/yans-wifi-phy.cc
--- ns-3.20/src/wifi/model/yans-wifi-phy.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/yans-wifi-phy.cc	2014-09-17 20:03:14.000000000 -0700
@@ -397,6 +397,9 @@
     case YansWifiPhy::IDLE:
       goto switchChannel;
       break;
+    case YansWifiPhy::SLEEP:
+      NS_LOG_DEBUG ("channel switching ignored in sleep mode");
+      break;
     default:
       NS_ASSERT (false);
       break;
@@ -432,6 +435,59 @@
 }
 
 void
+YansWifiPhy::SetSleepMode (void)
+{
+  NS_LOG_FUNCTION (this);
+  switch (m_state->GetState ())
+    {
+    case YansWifiPhy::TX:
+      NS_LOG_DEBUG ("setting sleep mode postponed until end of current transmission");
+      Simulator::Schedule (GetDelayUntilIdle (), &YansWifiPhy::SetSleepMode, this);
+      break;
+    case YansWifiPhy::RX:
+      NS_LOG_DEBUG ("setting sleep mode postponed until end of current reception");
+      Simulator::Schedule (GetDelayUntilIdle (), &YansWifiPhy::SetSleepMode, this);
+      break;
+    case YansWifiPhy::SWITCHING:
+      NS_LOG_DEBUG ("setting sleep mode postponed until end of channel switching");
+      Simulator::Schedule (GetDelayUntilIdle (), &YansWifiPhy::SetSleepMode, this);
+      break;
+    case YansWifiPhy::CCA_BUSY:
+    case YansWifiPhy::IDLE:
+      NS_LOG_DEBUG ("setting sleep mode");
+      m_state->SwitchToSleep ();
+      break;
+    case YansWifiPhy::SLEEP:
+      NS_LOG_DEBUG ("already in sleep mode");
+      break;
+    default:
+      NS_ASSERT (false);
+      break;
+    }
+}
+
+void
+YansWifiPhy::ResumeFromSleep (void)
+{
+  NS_LOG_FUNCTION (this);
+  switch (m_state->GetState ())
+    {
+    case YansWifiPhy::TX:
+    case YansWifiPhy::RX:
+    case YansWifiPhy::IDLE:
+    case YansWifiPhy::CCA_BUSY:
+    case YansWifiPhy::SWITCHING:
+      NS_LOG_DEBUG ("not in sleep mode, there is nothing to resume");
+      break;
+    case YansWifiPhy::SLEEP:
+      NS_LOG_DEBUG ("resuming from sleep mode");
+      Time delayUntilCcaEnd = m_interference.GetEnergyDuration (m_ccaMode1ThresholdW);
+      m_state->SwitchFromSleep (delayUntilCcaEnd);
+      break;
+    }
+}
+
+void
 YansWifiPhy::SetReceiveOkCallback (RxOkCallback callback)
 {
   m_state->SetReceiveOkCallback (callback);
@@ -535,6 +591,10 @@
           goto maybeCcaBusy;
         }
       break;
+    case YansWifiPhy::SLEEP:
+      NS_LOG_DEBUG ("drop packet because in sleep mode");
+      NotifyRxDrop (packet);
+      break;
     }
 
   return;
@@ -553,9 +613,9 @@
 }
 
 void
-YansWifiPhy::SendPacket (Ptr<const Packet> packet, WifiMode txMode, WifiPreamble preamble, WifiTxVector txVector)
+YansWifiPhy::SendPacket (Ptr<const Packet> packet, WifiTxVector txVector, WifiPreamble preamble)
 {
-  NS_LOG_FUNCTION (this << packet << txMode << preamble << (uint32_t)txVector.GetTxPowerLevel());
+  NS_LOG_FUNCTION (this << packet << txVector.GetMode() << preamble << (uint32_t)txVector.GetTxPowerLevel());
   /* Transmission can happen if:
    *  - we are syncing on a packet. It is the responsability of the
    *    MAC layer to avoid doing this but the PHY does nothing to
@@ -564,6 +624,13 @@
    */
   NS_ASSERT (!m_state->IsStateTx () && !m_state->IsStateSwitching ());
 
+  if (m_state->IsStateSleep ())
+    {
+      NS_LOG_DEBUG ("Dropping packet because in sleep mode");
+      NotifyTxDrop (packet);
+      return;
+    }
+
   Time txDuration = CalculateTxDuration (packet->GetSize (), txVector, preamble);
   if (m_state->IsStateRx ())
     {
@@ -574,7 +641,7 @@
   uint32_t dataRate500KbpsUnits = txVector.GetMode().GetDataRate () * txVector.GetNss() / 500000;
   bool isShortPreamble = (WIFI_PREAMBLE_SHORT == preamble);
   NotifyMonitorSniffTx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, txVector.GetTxPowerLevel());
-  m_state->SwitchToTx (txDuration, packet, txVector.GetMode(), preamble,  txVector.GetTxPowerLevel());
+  m_state->SwitchToTx (txDuration, packet, GetPowerDbm (txVector.GetTxPowerLevel()), txVector, preamble);
   m_channel->Send (this, packet, GetPowerDbm ( txVector.GetTxPowerLevel()) + m_txGainDb, txVector, preamble);
 }
 
@@ -748,6 +815,11 @@
 {
   return m_state->IsStateSwitching ();
 }
+bool
+YansWifiPhy::IsStateSleep (void)
+{
+  return m_state->IsStateSleep ();
+}
 
 Time
 YansWifiPhy::GetStateDuration (void)
diff -Naur ns-3.20/src/wifi/model/yans-wifi-phy.h ns-3.21/src/wifi/model/yans-wifi-phy.h
--- ns-3.20/src/wifi/model/yans-wifi-phy.h	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wifi/model/yans-wifi-phy.h	2014-09-17 20:03:14.000000000 -0700
@@ -247,14 +247,17 @@
   virtual uint32_t GetNTxPower (void) const;
   virtual void SetReceiveOkCallback (WifiPhy::RxOkCallback callback);
   virtual void SetReceiveErrorCallback (WifiPhy::RxErrorCallback callback);
-  virtual void SendPacket (Ptr<const Packet> packet, WifiMode mode, enum WifiPreamble preamble, WifiTxVector txvector);
+  virtual void SendPacket (Ptr<const Packet> packet, WifiTxVector txvector, enum WifiPreamble preamble);
   virtual void RegisterListener (WifiPhyListener *listener);
+  virtual void SetSleepMode (void);
+  virtual void ResumeFromSleep (void);
   virtual bool IsStateCcaBusy (void);
   virtual bool IsStateIdle (void);
   virtual bool IsStateBusy (void);
   virtual bool IsStateRx (void);
   virtual bool IsStateTx (void);
   virtual bool IsStateSwitching (void);
+  virtual bool IsStateSleep (void);
   virtual Time GetStateDuration (void);
   virtual Time GetDelayUntilIdle (void);
   virtual Time GetLastRxStartTime (void) const;
diff -Naur ns-3.20/src/wimax/bindings/modulegen__gcc_ILP32.py ns-3.21/src/wimax/bindings/modulegen__gcc_ILP32.py
--- ns-3.20/src/wimax/bindings/modulegen__gcc_ILP32.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wimax/bindings/modulegen__gcc_ILP32.py	2014-09-17 20:03:14.000000000 -0700
@@ -6444,10 +6444,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -6458,25 +6458,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -6593,20 +6593,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/wimax/bindings/modulegen__gcc_LP64.py ns-3.21/src/wimax/bindings/modulegen__gcc_LP64.py
--- ns-3.20/src/wimax/bindings/modulegen__gcc_LP64.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wimax/bindings/modulegen__gcc_LP64.py	2014-09-17 20:03:14.000000000 -0700
@@ -6444,10 +6444,10 @@
     cls.add_constructor([param('long unsigned int', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(long long unsigned int v) [constructor]
     cls.add_constructor([param('long long unsigned int', 'v')])
+    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & v) [constructor]
+    cls.add_constructor([param('ns3::int64x64_t const &', 'v')])
     ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
     cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
-    cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
     ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
     cls.add_method('As', 
                    'ns3::TimeWithUnit', 
@@ -6458,25 +6458,25 @@
                    'int', 
                    [param('ns3::Time const &', 'o')], 
                    is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & from, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'from'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::int64x64_t const &', 'value')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::From(ns3::int64x64_t const & value, ns3::Time::Unit unit) [member function]
     cls.add_method('From', 
                    'ns3::Time', 
-                   [param('ns3::int64x64_t const &', 'value')], 
+                   [param('ns3::int64x64_t const &', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromDouble', 
                    'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('double', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
+    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit unit) [member function]
     cls.add_method('FromInteger', 
                    'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'unit')], 
                    is_static=True)
     ## nstime.h (module 'core'): double ns3::Time::GetDays() const [member function]
     cls.add_method('GetDays', 
@@ -6593,20 +6593,20 @@
                    'bool', 
                    [], 
                    is_static=True)
-    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): ns3::int64x64_t ns3::Time::To(ns3::Time::Unit unit) const [member function]
     cls.add_method('To', 
                    'ns3::int64x64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): double ns3::Time::ToDouble(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToDouble', 
                    'double', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit timeUnit) const [member function]
+    ## nstime.h (module 'core'): int64_t ns3::Time::ToInteger(ns3::Time::Unit unit) const [member function]
     cls.add_method('ToInteger', 
                    'int64_t', 
-                   [param('ns3::Time::Unit', 'timeUnit')], 
+                   [param('ns3::Time::Unit', 'unit')], 
                    is_const=True)
     return
 
diff -Naur ns-3.20/src/wimax/examples/wscript ns-3.21/src/wimax/examples/wscript
--- ns-3.20/src/wimax/examples/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wimax/examples/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,11 +1,11 @@
 7## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program( 'wimax-ipv4', ['wimax', 'internet', 'mobility', 'csma'])
+    obj = bld.create_ns3_program( 'wimax-ipv4', ['wimax', 'internet', 'mobility', 'csma', 'applications'])
     obj.source = 'wimax-ipv4.cc'
 
-    obj = bld.create_ns3_program( 'wimax-multicast', ['wimax', 'internet', 'csma'])
+    obj = bld.create_ns3_program( 'wimax-multicast', ['wimax', 'internet', 'csma', 'applications'])
     obj.source = 'wimax-multicast.cc'
         
-    obj = bld.create_ns3_program( 'wimax-simple', ['wimax', 'internet', 'mobility'])
+    obj = bld.create_ns3_program( 'wimax-simple', ['wimax', 'internet', 'mobility', 'applications'])
     obj.source = 'wimax-simple.cc'
diff -Naur ns-3.20/src/wimax/test/qos-test.cc ns-3.21/src/wimax/test/qos-test.cc
--- ns-3.20/src/wimax/test/qos-test.cc	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wimax/test/qos-test.cc	2014-09-17 20:03:14.000000000 -0700
@@ -30,7 +30,6 @@
 #include "ns3/ipv4-address-helper.h"
 #include "ns3/ipv4-header.h"
 #include "ns3/packet-sink-helper.h"
-#include "ns3/udp-client-server-helper.h"
 #include "ns3/simulator.h"
 #include "ns3/wimax-helper.h"
 #include "ns3/mobility-helper.h"
@@ -88,23 +87,23 @@
   Ipv4InterfaceContainer BSinterface = address.Assign (bsDevs);
 
   /*------------------------------*/
-  UdpServerHelper udpServer;
-  ApplicationContainer serverApps;
-  UdpClientHelper udpClient;
-  ApplicationContainer clientApps;
-
-  udpServer = UdpServerHelper (100);
-  serverApps = udpServer.Install (ssNodes.Get (0));
-  serverApps.Start (Seconds (1));
-  serverApps.Stop (Seconds (2));
-
-  udpClient = UdpClientHelper (SSinterfaces.GetAddress (0), 100);
-  udpClient.SetAttribute ("MaxPackets", UintegerValue (1200));
-  udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.12)));
-  udpClient.SetAttribute ("PacketSize", UintegerValue (1024));
-  clientApps = udpClient.Install (ssNodes.Get (1));
-  clientApps.Start (Seconds (1));
-  clientApps.Stop (Seconds (2));
+  //  UdpServerHelper udpServer;
+  //  ApplicationContainer serverApps;
+  //  UdpClientHelper udpClient;
+  //  ApplicationContainer clientApps;
+  //
+  //  udpServer = UdpServerHelper (100);
+  //  serverApps = udpServer.Install (ssNodes.Get (0));
+  //  serverApps.Start (Seconds (1));
+  //  serverApps.Stop (Seconds (2));
+  //
+  //  udpClient = UdpClientHelper (SSinterfaces.GetAddress (0), 100);
+  //  udpClient.SetAttribute ("MaxPackets", UintegerValue (1200));
+  //  udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.12)));
+  //  udpClient.SetAttribute ("PacketSize", UintegerValue (1024));
+  //  clientApps = udpClient.Install (ssNodes.Get (1));
+  //  clientApps.Start (Seconds (1));
+  //  clientApps.Stop (Seconds (2));
 
   Simulator::Stop (Seconds (2 + 0.1));
 
@@ -210,23 +209,23 @@
   Ipv4InterfaceContainer BSinterface = address.Assign (bsDevs);
 
   /*------------------------------*/
-  UdpServerHelper udpServer;
-  ApplicationContainer serverApps;
-  UdpClientHelper udpClient;
-  ApplicationContainer clientApps;
-
-  udpServer = UdpServerHelper (100);
-  serverApps = udpServer.Install (ssNodes.Get (0));
-  serverApps.Start (Seconds (1));
-  serverApps.Stop (Seconds (2));
-
-  udpClient = UdpClientHelper (SSinterfaces.GetAddress (0), 100);
-  udpClient.SetAttribute ("MaxPackets", UintegerValue (1200));
-  udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.12)));
-  udpClient.SetAttribute ("PacketSize", UintegerValue (1024));
-  clientApps = udpClient.Install (ssNodes.Get (1));
-  clientApps.Start (Seconds (1));
-  clientApps.Stop (Seconds (2));
+  //  UdpServerHelper udpServer;
+  //  ApplicationContainer serverApps;
+  //  UdpClientHelper udpClient;
+  //  ApplicationContainer clientApps;
+  //
+  //  udpServer = UdpServerHelper (100);
+  //  serverApps = udpServer.Install (ssNodes.Get (0));
+  //  serverApps.Start (Seconds (1));
+  //  serverApps.Stop (Seconds (2));
+  //
+  //  udpClient = UdpClientHelper (SSinterfaces.GetAddress (0), 100);
+  //  udpClient.SetAttribute ("MaxPackets", UintegerValue (1200));
+  //  udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.12)));
+  //  udpClient.SetAttribute ("PacketSize", UintegerValue (1024));
+  //  clientApps = udpClient.Install (ssNodes.Get (1));
+  //  clientApps.Start (Seconds (1));
+  //  clientApps.Stop (Seconds (2));
 
   Simulator::Stop (Seconds (2 + 0.1));
 
diff -Naur ns-3.20/src/wimax/wscript ns-3.21/src/wimax/wscript
--- ns-3.20/src/wimax/wscript	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/src/wimax/wscript	2014-09-17 20:03:14.000000000 -0700
@@ -1,6 +1,6 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 def build(bld):
-    obj = bld.create_ns3_module('wimax', ['network', 'point-to-point', 'internet', 'applications', 'propagation', 'mobility'])
+    obj = bld.create_ns3_module('wimax', ['network', 'point-to-point', 'internet', 'propagation', 'mobility'])
     obj.source = [
             'model/cid.cc',
             'model/cid-factory.cc',
diff -Naur ns-3.20/test.py ns-3.21/test.py
--- ns-3.20/test.py	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/test.py	2014-09-17 20:03:14.000000000 -0700
@@ -1162,6 +1162,11 @@
         else:
             path_cmd = os.path.join("utils", test_runner_name + " --print-test-name-list --print-test-types")
         (rc, standard_out, standard_err, et) = run_job_synchronously(path_cmd, os.getcwd(), False, False)
+        if rc != 0:
+            # This is usually a sign that ns-3 crashed or exited uncleanly
+            print('test.py error:  test-runner return code returned {}'.format(rc))
+            print('To debug, try running {}\n'.format('\'./waf --run \"test-runner --print-test-name-list\"\''))
+            return
         list_items = standard_out.split('\n')
         list_items.sort()
         print "Test Type    Test Name"
diff -Naur ns-3.20/VERSION ns-3.21/VERSION
--- ns-3.20/VERSION	2014-06-16 22:00:29.000000000 -0700
+++ ns-3.21/VERSION	2014-09-17 20:03:14.000000000 -0700
@@ -1 +1 @@
-3.20
+3.21
